Age | Commit message (Collapse) | Author |
|
This reduces the table.Path size from 88 to 72 which adds up considerably
since it is the most allocated persistent object.
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Example of protoc command:
$ export PROTOBUF=${HOME}/protobuf/src
$ export GOBGP=${GOPATH}/src/github.com/osrg/gobgp
$ protoc \
-I ${PROTOBUF} \
-I ${GOBGP}/api \
--go_out=plugins=grpc:${GOBGP}/api \
${GOBGP}/api/gobgp.proto \
${GOBGP}/api/attribute.proto
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
"gobgp/lib" can be independent from "gobgpapi" package, this patch
removes the usage of utility function "ToPathApi()" in this package.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
CreateUpdateMsgFromPaths() assumes that a path has a proper hash
value. If a path doesn't, the function takes too long.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Otherwise, we get something like this:
BGP neighbor is 2001:db8:4::2, remote AS 65000
BGP version 4, remote router ID unknown
BGP state = active, up for 17692d 16:53:12
|
|
Since the RFC is only a draft, IANA didn't attribute a code yet.
However, Juniper is supporting this feature since a long time and is
using 71. I don't know if Cisco is using the same value. BIRD will
ship soon with this capability too and will use 71 too. Wireshark also
understands capability code 71 as LLGR.
Tested with Juniper vRR 16.1 and this configuration:
```yaml
peer-groups:
- config:
peer-group-name: others
peer-as: 65000
ttl-security:
config:
enabled: true
ttl-min: 255
graceful-restart:
config:
enabled: true
long-lived-enabled: true
notification-enabled: true
restart-time: 1
afi-safis:
- config:
afi-safi-name: ipv6-unicast
mp-graceful-restart:
config:
enabled: true
long-lived-graceful-restart:
config:
enabled: true
restart-time: 120
```
Enabling regular graceful restart for the appropriate AFI/SAFI is
needed to make LLGR work on the Juniper side. Unfortunately, GoBGP
doesn't allow to set restart-time to 0 (this is the same as using the
default value of 90s), therefore we have a small delay before LLGR
kicks in (during which routes are preserved). A way to set restart
time to 0 would be welcome.
|
|
fix a bug that doesn't return validation results at all.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
It is possible for a call from other Table methods for an interface that does
not match the tables route family to reach the type assertion and panic. This
change better reflects the intention of the code by checking the concrete type
using a type switch instead.
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, only IPv4 address is acceptable for the CLUSTER_ID setting,
this patch enables to specify the CLUSTER_ID as a 32-bit unsigned
integer.
With this expansion, "Config.RouteReflectorClusterId" stores the raw
configured value for the CLUSTER_ID and "State.RouteReflectorClusterId"
stores the value used for construct the CLUSTER_LIST attribute.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Adds an unit test for ed3f7b711c92c69bf231bc9e6a06312b23270db0
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
|
|
uppercase letter as is required for Ruby constants"
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
We should do stricter validation. Probably, we should use
packet/bgp/validate.go.
close #1660
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Adds a user-friendly error message on gRPC connection error.
Resolves: #1701
Signed-off-by: Paul Greenberg <greenpau@outlook.com>
|
|
the commit 8c453bc9369e4cd96d19b9598bebb0ea2e23e991 fixes
NewROAListFromApiStructList() to check an error strictly. However,
this breaks the rpki table command:
$ gobgp rpki table
invalid CIDR address: 1.0.16.0
NewROAListFromApiStructList() has a bug about getting the address
family from an IP address. The address family was not used (other
information are used though) so before the commit, the command worked.
This fixes the bug in NewROAListFromApiStructList().
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
This patch adds checks to confirm the stale paths are also removed from
the adj-RIB-in table.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch fixes to assert the Graceful Restart time is not expired
while waiting for re-establishing peer connection.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
The current Graceful Restart time is 20 sec, but this value is not
enough long and can be exceeded unexpectedly while waiting for
re-establishing peer connections. Then the stale paths on a receiving
router are dropped before the paths successfully synced, and some test
cases on "graceful_restart_test.py" will be passed unexpectedly.
This patch extends the Graceful Restart time to 30 sec and introduces
the constants for Graceful Restart time and Long-Lived Graceful Restart
time.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch adds a test case to test if the path, which came after the
NEXTHOP_UPDATE message was received from Zebra, is updated by reflecting
the nexthop cache.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
The dampening feature was implemented to delay the update of nexthop
states in order to avoid the states are "extremely" frequent updated.
But with this implementation, if a path is withdrawn by peer or via API
which the dampening feature delaying the update of that path, the
withdrawn path can be restored unexpectedly again.
And currently Quagga and FRRouting does not support the dampening, this
path drops the dampening feature to avoid this problem.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
update accepted number in adj-in rib after AllowOwnAs has changed.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
fix accepted number in adj-in rib when it has an as-looped path.
adding another member to Path struct is pain. Should be fixed later.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
make sure that an adj-rib return the accepted and received numbers
when it has an as-looped path.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch adds test cases for the Route Target Constraint of the
inter-AS route distribution and combination of the inter-AS and intra-AS
route distribution.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
The outgoing Route Target Constraint filter should be applied to eBGP
session, but currently applied to only iBGP session.
This patch fixes to apply rtfilter on eBGP session.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch adds assertion points for the counts of advertised and
received routes. Also adds comments for the states of VRFs and routes.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
In case that a Route Reflector(RR) and a non RR client peering, peering
of different RR clusters for example, the RR should send the RTC route
from its client even if the RTC route from non RR client is better path
based on the best path algorithm in order to notify that some RR clients
are interested in the given Route Target.
Currently, only source peer address is concerned, the RTC route from RR
client can have lower priority than non RR client and it can not be
advertised.
This patch fixes to prefer the route from RR client when selecting the
candidate to be advertised.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
To include the PeerDownReason and data in BMP messages,
this commit adds some field to WatchEventPeerState.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
RFC 7854 says that Peer Down Notification messages have
"data" field only if its peer down reason is "The local
system closed the session. No notification message was sent".
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
If capabilities are added or removed by updating peer configs,
it is needed to resend Open Message contains the new capabilities.
But currently, GoBGP does not resend Open Message for
Add-Path and Graceful Restart capabilities.
This commit fixes it to resend Open Message for them.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Because the RTM is removed from adj-RIB-in before collecting the
candidate routes to be withdrawn, the candidates are unexpectedly
filtered before sending withdraw messages. Then on the peers, the VPN
routes are left on.
This patch fixes to selects candidates from the filtered paths and send
withdraw messages as expected. Also resolves the TODO in
"test/scenario_test/rtc_test.py".
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Add test for the issue reported on #1682
(https://github.com/osrg/gobgp/issues/1682).
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Needs withdrawn paths that includes attributes. The attributes are
necessary because they are used with rtc table to check if the paths
were sent.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Also removes a debug print.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, GoBGP sends the ROUTE_DELETE messages to Zebra for the paths
whose nexthop was determined as unreachable by IGP, but when Zebra
received the ROUTE_DELETE messages for the unreachable nexthop, Zebra
will send the NEXTHOP_UPDATE message with the given nexthop is
reachable via the default interface. This message unexpectedly causes
updates of the unreachable path to be reachable (not true though). Then
GoBGP will send ROUTE_ADD messages to Zebra, but those paths soon will
be invalidated via the NEXTHOP_UPDATE message, GoBGP will send the
ROUTE_DELETE messages and ... (infinite loop).
This patch fixes to avoid sending the ROUTE_DELETE messages for the
unreachable paths because those paths are inactivated on Zebra and not
installed to FIB.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, the received messages from Zebra are printed as byte slice
and it is difficult to determine which message was received.
This patch fixes to output the received message as the decoded
structure for the readability.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
|