Before this PR, when graceful restart was configured for a neighbor
and when the restart flag was set by the restarting speaker, if
the neighbor was not advertising the GR capability, the initial
paths list was never sent by the restarting speaker to its neighbor
This is a problem when the server is configured with graceful
restart for all its peers without knowing if the peer supports it.
If some of the peers don't support it, they may never receive the
routes from the restarting speaker, leading to an inconsistent
routing state.
Adds usage of the "prefix-based" TCP MD5 for dynamic
neighbors. Non-dynamic neighbors will continue to use
non-prefix based, which makes it more compatible with
running on older kernels, as only 4.14+ includes the
necessary support.
This change also includes tests of dynamic peers in general.
Fix TEID processing in Type 2 ST Route:
- TEID can be 0-32 bits value as described in I-D.
Accept hex and IPv4 format for TEID in CLI and show TEID as IPv4 format in CLI.
- TEID is generally represented in hexadecimal format.
- IPv4 format is useful because Type 2 ST Route can be used in the longest match algorithm as described in I-D.
Build GoBGP binaries of a pull request locally and copy them to the
container to be tested instead of copying the code into the container
and building the binaries inside.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
This PR removes dependencies on old Fabric version, as it's not
supported by Python3.
The current Fabric versions don't support the colors and indent
used previously, so we found substitute methods from other
libraries and defined these in the library files.
The local function from fabric is now just a wrapper to invoke's
run function. All the files were processed through 2to3 command.
All the tests were executed and we don't see any difference on
the outputs when running Python2 or Python3.
The creation of gobgp container is removed from base.py into
fabfile.py, in order to comply with Fabric2 changes and simplify
dependencies.
In trying to run the local tests, I found that changing these
assertTrue calls to assertEqual helped me out. With this, a failure
shows the actual and expected values rather than just saying "True is
not False" which is less helpful.
This patch enable us to give test containers a static IP address
by passing 'ip_addr' argument to addif method.
In addition, 'v6=True' argument is needed when we specify static IPv6 address.
Usage:
br01 = Bridge(name='br01', subnet='192.168.0.0/24', self_ip=False)
g1 = GoBGPContainer(name='g1', asn=64512 router_id='10.0.0.1')
br01.addif(g1, ip_addr='192.168.0.11')
This patch fix the logic of addif methos of Bridge class.
IP address information will be registerd according to the
IP version of bridge.
This change lead the fixing of one of scenario test, "bgp_zebra_test.py".
- remove ReplaceDefinedSet and ReplaceStatement APIs; not intutive and
should create a new one instead of modifying the existing.
- Rename ReplacePolicyAssignment to SetPolicyAssignment API; we use
internally SetPolicy() name from the beginning.
- Rename UpdatePolicy() to SetPolicies() API; It doesn't update
anything so the name is confusing. It discards the all policies and
create policies from the argument.
- Changes some member names in structures for policy.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Fix syntax of pkill in order to make use of it for BusyBox Linux based container available.
This change is compatible with use of pkill for usual Linux.
- clean up RPC function names
- rewrite gobgp command to use the api instead of config package
- delete unused client package
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
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>
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>