Age | Commit message (Collapse) | Author |
|
This patch supports EVPN Router's MAC Extended Community which described
on "draft-ietf-bess-evpn-inter-subnet-forwarding".
According to "draft-ietf-bess-evpn-prefix-advertisement" This extended
community might be carried with EVPN IP Prefix Route NLRI.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
According to "draft-ietf-bess-evpn-prefix-advertisement-08", the GW IP
field SHOULD be zero if it is not used, but currently, GoBGP skips
encoding the GW IP field (not composed).
This patch fixes to fill zeros to solve this problem.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch enables to check the value range of Label included in EVPN
routes or PMSI Tunnel attribute when decoding and serialising it.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch enables to specify ESI value when adding EVPN "macadv" and
"prefix" routes.
Example: "macadv" route
$ gobgp global rib -a evpn add macadv aa:bb:cc:dd:ee:ff 10.0.0.1 esi 0 etag 10 label 20,30 rd 65000:100
$ gobgp global rib -a evpn
Network Labels Next Hop AS_PATH Age Attrs
*> [type:macadv][rd:65000:100][etag:10][mac:aa:bb:cc:dd:ee:ff][ip:10.0.0.1] [20,30] 0.0.0.0 hh:mm:ss [{Origin: ?} [ESI: single-homed]]
Example: "prefix" route
$ gobgp global rib -a evpn add prefix 10.0.0.0/24 esi LACP aa:bb:cc:dd:ee:ff 100 etag 10 rd 65000:100
$ gobgp global rib -a evpn
Network Labels Next Hop AS_PATH Age Attrs
*> [type:Prefix][rd:65000:100][etag:10][prefix:10.0.0.0/24] [0] 0.0.0.0 00:00:14 [{Origin: ?} [ESI: ESI_LACP | system mac aa:bb:cc:dd:ee:ff, port key 100] [GW: 0.0.0.0]]
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch enables to add route for EVPN Ethernet Segment Route via
"gobgp" command.
Example:
$ gobgp global rib -a evpn add esi 10.0.0.1 esi 0 rd 65000:100
$ gobgp global rib -a evpn
Network Labels Next Hop AS_PATH Age Attrs
*> [type:esi][rd:65000:100][esi:single-homed][ip:10.0.0.1] 0.0.0.0 hh:mm:ss [{Origin: ?}]
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch fixes to use the string representation of ESI in the string
representation of EVPN Ethernet Segment Route.
Currently, displayed in the default representation of ESI structure.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, the value field of EVPN ESI might be corrupted when ESI type
is ARBITRARY (not "single-homed") or unknown type because the value
field will be formatted as the raw byte slice in this case.
This patch fixes to convert the byte slice into the colon separated hex
values which is corresponding to the format of the CLI input.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, the representation of AS number in EVPN ESI Type AS (Type 5)
uses the colon separated 2 octet values format, but in other places,
the AS4_PATH attribute for example, the single decimal format is used.
This patch fixes to use the decimal AS number for the consistency with
the AS_PATH/AS4_PATH attributes and also the CLI input format.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch enables to add route for EVPN Ethernet Auto-discovery Route
via "gobgp" command.
Example:
$ gobgp global rib -a evpn add a-d esi 0 etag 10 label 20 rd 65000:100
$ gobgp global rib -a evpn
Network Labels Next Hop AS_PATH Age Attrs
*> [type:A-D][rd:65000:100][esi:single-homed][etag:10] [20] 0.0.0.0 hh:mm:ss [{Origin: ?}]
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch introduces a new function to parse EVPN ESI from string slice
which passed via CLI for example.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, "gobgp" command use the host IP when adding a new EVPN Prefix
route, but it should be the network IP address, otherwise the two routes
to "192.168.0.1/24" and "192.168.0.2/24" will be determined as different
routes.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, the keywords "rt" and "encap" for EVPN Prefix Route are
unexpectedly ignored when parsing the inputs from "gobgp" command.
Also, "label" is not described in the usage.
This patch fixes to pass these keywords to be advertised and updates the
usage format.
Note: This patch makes "rt" as optional field in the usage because "rt"
can be omitted when deleting.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
For improving readability of arguments, this patch supports keyword
arguments "etag" and "label" when adding EVPN "macadv" and "multicast"
routes.
Also, this change makes it more easy to introduce new arguments.
With this patch, both of the following formats are supported for the
backward compatibility.
New Format:
<MACADV> : <mac address> <ip address> etag <etag> label <label> rd <rd> [rt <rt>...] [encap <encap type>]
<MULTICAST> : <ip address> etag <etag> rd <rd> [rt <rt>...] [encap <encap type>]
Old Format:
<MACADV> : <mac address> <ip address> <etag> <label> rd <rd> [rt <rt>...] [encap <encap type>]
<MULTICAST> : <ip address> <etag> rd <rd> [rt <rt>...] [encap <encap type>]
Note: This patch makes "rt" as optional field in the usage because "rt"
can be omitted when deleting.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
The variable "net" in ParsePath() collides the name of the standard
library name "net".
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch renames some variable names in snake case (e.g.,
"last_byte_value") to that in the camel case (e.g., "lastByte")
because Go prefers the camel case for variable names.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
|
|
Currently, to configure per AFI-SAFI settings when adding neighbor
via gRPC API, it is require to specify the both Peer.Families and
Peer.AfiSafis fields. If Peer.Families is omitted, settings in
Peer.AfiSafis are ignored and the given address families are not
activated.
This patch enables to configure per AFI-SAFI settings and activate
the address family with only Peer.AfiSafis (without Peer.Families).
Note: For the backward compatibility, if only Peer.Families is
specified, this patch creates per AFI-SAFI settings with the default
settings.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
To call some gRPC APIs, it is required to specify the address family
value which is combined value of AFI and SAFI values, so users of gRPC
APIs need to calculate this value.
This patch introduces the constants for the address families for the
convenience.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
gRPC server should try to start serving only once because it send
stopped signal to the waiter if server could not start.
This patch removes redundant "for" loop to improve code inspection
result.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
To improve code inspection result, this patch renames "server"
variables in NewServer() to "s" because "server" collides the
imported package name "github.com/osrg/gobgp/server".
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
To improve code inspection result, this patch uses make() for an empty
slice declaration instead of using empty literal initializer.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, with a invalid "set-med" value in a policy action, GoBGP will
raise panic of "index out of range" because the unmatched regular
expression is not handled.
This patch fixes to handle errors during parsing the given med value.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, "gobgp" command does not support to configure address families
capability when adding a new neighbor.
This patch introduces a new option field to "gobgp neighbor add" command
and enables to configure address families capability.
Example: Specify address family names in comma separated format
$ gobgp neighbor add 10.0.0.3 as 65003 family ipv4-unicast,l2vpn-evpn
$ gobgp neighbor 10.0.0.3
...(snip)...
Neighbor capabilities:
multiprotocol:
ipv4-unicast: advertised
l2vpn-evpn: advertised
route-refresh: advertised
4-octet-as: advertised
...(snip)...
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, the config of PeerGroup members are not set properly.
For example, if LocalAs of the neighbor is not set in the config file,
LocalAs will be set to Global.As as a default value.
After this, however, if the neighbor is a member of a peer group,
LocalAs will be unexpectedly overwritten by the peer group config.
This commit fixes this by setting default values after
applying the peer group config.
Adding to this, this commit avoids unnecessary applying
the peer group config.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
This commit introduces 'bgp_config' attribute for
GoBGP/Quagga containers to configure complex settings.
Adding to this, this commit enables to configure
BGP confederation settings to GoBGP/Quagga conrainers.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
For Quagga containers, currently, when we use get_global_rib()
without specifying prefix, we cannot get AS_PATH and other attributes.
And when we use get_global_rib() with prefix,
we can get only one path even if there is multiple paths for a destination.
This commit fixes these problems by refining test/lib/quagga.py.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
RFC 5065 says that:
"It is a error for a BGP speaker to receive an update message from a
confederation peer that is not in the same Member-AS that does not
have AS_CONFED_SEQUENCE as the first segment."
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
In neighbor config, there are some parameters whose
default value can be changed depending on the global config.
This commit modifies the argument of config.SetDefaultNeighborConfigValues()
to pass the global config. It enables to change the default
settings of neighbor depending on the global config.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
This patch updates output examples of GoBGP and YABGP along with
changing the format of "gobgp global rib -a evpn" command.
Also, this patch provides the curl command examples for sending POST
requests.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
To interchange routes over iBGP session, this patch add the config of
Route Reflector to GoBGP and updates output examples of GoBGP and
BaGPipe.
Note: The BaGPipe Docker image described on this document does not seem
to be maintained for 2 years and contains the old version of BaGPipe. So
this patch drops the description of this image.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
For scenario_test, Python build environment is more suitable rather than
Go build environment, because scenario_test is written in Python and the
building source codes will be done on Docker containers.
This patch fixes scenario_test to use Python build environment and
reduces "sudo" executions in order to use interpreter of virtualenv.
Note: On Travis-Ci, the Python interpreter of sudoer is older version,
and when install packages with "sudo pip", InsecurePlatformWarning will
be displayed. So it is better to use the newer interpreter of virtualenv.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, with iBGP peering, the CLI injected path will not be withdrawn
when the deletion if any other path exists on RIB, then the CLI injected
path will be left on iBGP peers even if the route is deleted on the
originator router.
This problem can cause routing loops in some case.
This patch fixes to withdraw the old best path when it was the CLI (or
gRPC) injected path.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
In the near feature (likely in Go1.10),
'go test' will never work if 'go vet' fails.
(See: https://github.com/golang/go/issues/18084)
This commit is for dealing with such a situation
(and also for improving the quality of our code).
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Currently, the parsing results of flags in flowsspec filter
will be varied every time they are parsed.
For example, the tcp-flag '=UFP' may be represented to '=UPF' or '=PUF'
and so on.
This is due to the use of interation to map. Iterations over maps
does not happen in a consistent order.
This fixes it by iterating sorted slices instead of maps.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
This patch enables "gobgp" command to accept the stacked labels field in
EVPN MAC/IP Advertisement Route.
Example: Specify stacked labels in comma separated format
$ gobgp global rib -a evpn add macadv aa:bb:cc:dd:ee:ff 10.0.0.1 10 10,20 rd 65001:100 rt 65001:100
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
According to the removal of the non route key fields in EVPN NLRI string
representation, this patch enables "gobgp" command to display these
fields as path attributes.
Example:
$ gobgp global rib -a evpn add macadv aa:bb:cc:dd:ee:ff 10.0.0.1 10 10,20 rd 65001:100 rt 65001:100 encap vxlan
$ gobgp global rib -a evpn
Network Labels Next Hop AS_PATH Age Attrs
*> [type:macadv][rd:65001:100][etag:10][mac:aa:bb:cc:dd:ee:ff][ip:10.0.0.1] [10,20] 0.0.0.0 00:00:03 [{Origin: ?} {Extcomms: [65001:100], [VXLAN]} [ESI: single-homed]]
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
RFC7432 and draft-ietf-bess-evpn-prefix-advertisement says some fields
in EVPN NLRIs (e.g., MPLS Label(s)) should no be treated as the route
key, but currently, GoBGP's string representations of EVPN NLRIs include
all fields.
So the paths should be treated as the same (e.g., only different in MPLS
Label and other field is the same) can be treated as the different.
This patch removes non route key fields from NLRI string representation
and fixes this problem.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
EoR should be sent at the end of the UPDATE messages,
but currently, EoR may be sent before RIB.
This commit fixes this problem.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Currently, zclient registers only nexthops which bound for the best
path, this patch enables to register all nexthops which contained in
RIBs in order to detect nexthops down faster.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch enables to unregister nexthop when received NEXTHOP_UPDATE
message and there is no path bound for the updated nexthop.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
The function for notifying WATCH_EVENT_TYPE_PRE_UPDATE event hasn't been
defined yet, this patch defines a function for it.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
The supposed FRRouting version for this patch is 3.0 (tag name is
"frr-3.0").
Note: This patch does not support all messages defined in FRRouting,
and some of message are left on TODO.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|