summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2024-10-30 21:30:44 +0100
committerPhilippe Guibert <philippe.guibert@6wind.com>2024-12-11 11:29:37 +0100
commitd55a5864ddeeab8cc439c6a56b19be8459d7c82e (patch)
tree4878cc0cba835c305c9bce3572651747cf7acb86
parent8198dec807ca8cbd00421fd88d607ff6b00fd484 (diff)
topotests: bgp_bmp, expose peer_distinguisher in loc-rib
The BMP implementation currently only supports global and loc-rib instance types. When loc-rib is selected, the peer_distinguisher is set to the route distinguisher of the L3VRF where the BGP instance is. This functionality has not been tested until now, because the peer distinguisher value had been explicitly omitted in the bmp messages. Expose the peer distinguisher value in all BMP messages received. This change requires to modify the expected output for loc-rib when the BGP instance is in a L3VRF. The handling of peer distinguisher value for RD instances will follow in the next commits. Link: https://www.rfc-editor.org/rfc/rfc7854.html#section-4.2 Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
-rw-r--r--tests/topotests/bgp_bmp/bgpbmp.py12
-rw-r--r--tests/topotests/bgp_bmp/bmp1vrf/bmp-update-loc-rib-step1.json2
-rw-r--r--tests/topotests/bgp_bmp/bmp1vrf/bmp-withdraw-loc-rib-step1.json2
-rw-r--r--tests/topotests/bgp_bmp/r1vrf/frr.conf2
4 files changed, 6 insertions, 12 deletions
diff --git a/tests/topotests/bgp_bmp/bgpbmp.py b/tests/topotests/bgp_bmp/bgpbmp.py
index 5e8b0d9be7..0a0a845b3a 100644
--- a/tests/topotests/bgp_bmp/bgpbmp.py
+++ b/tests/topotests/bgp_bmp/bgpbmp.py
@@ -164,18 +164,6 @@ def bmp_check_for_prefixes(
for k, v in sorted(m.items())
# filter out variable keys
if k not in ["timestamp", "seq", "nxhp_link-local"]
- and (
- # When policy is loc-rib, the peer-distinguisher is 0:0
- # for the default VRF or the RD if any or the 0:<vrf_id>.
- # 0:<vrf_id> is used to distinguished. RFC7854 says: "If the
- # peer is a "Local Instance Peer", it is set to a unique,
- # locally defined value." The value is not tested because it
- # is variable.
- k != "peer_distinguisher"
- or policy != loc_rib
- or v == "0:0"
- or not v.startswith("0:")
- )
}
# build expected JSON files
diff --git a/tests/topotests/bgp_bmp/bmp1vrf/bmp-update-loc-rib-step1.json b/tests/topotests/bgp_bmp/bmp1vrf/bmp-update-loc-rib-step1.json
index ba31bf1d5d..d6c87dd4fd 100644
--- a/tests/topotests/bgp_bmp/bmp1vrf/bmp-update-loc-rib-step1.json
+++ b/tests/topotests/bgp_bmp/bmp1vrf/bmp-update-loc-rib-step1.json
@@ -10,6 +10,7 @@
"origin": "IGP",
"peer_asn": 65501,
"peer_bgp_id": "192.168.0.1",
+ "peer_distinguisher": "444:1",
"peer_type": "loc-rib instance",
"policy": "loc-rib"
},
@@ -23,6 +24,7 @@
"origin": "IGP",
"peer_asn": 65501,
"peer_bgp_id": "192.168.0.1",
+ "peer_distinguisher": "555:1",
"peer_type": "loc-rib instance",
"policy": "loc-rib",
"safi": 1
diff --git a/tests/topotests/bgp_bmp/bmp1vrf/bmp-withdraw-loc-rib-step1.json b/tests/topotests/bgp_bmp/bmp1vrf/bmp-withdraw-loc-rib-step1.json
index 37ddc09ff8..6a82f7af1a 100644
--- a/tests/topotests/bgp_bmp/bmp1vrf/bmp-withdraw-loc-rib-step1.json
+++ b/tests/topotests/bgp_bmp/bmp1vrf/bmp-withdraw-loc-rib-step1.json
@@ -7,6 +7,7 @@
"is_filtered": false,
"peer_asn": 65501,
"peer_bgp_id": "192.168.0.1",
+ "peer_distinguisher": "444:1",
"peer_type": "loc-rib instance",
"policy": "loc-rib"
},
@@ -17,6 +18,7 @@
"is_filtered": false,
"peer_asn": 65501,
"peer_bgp_id": "192.168.0.1",
+ "peer_distinguisher": "555:1",
"peer_type": "loc-rib instance",
"policy": "loc-rib",
"safi": 1
diff --git a/tests/topotests/bgp_bmp/r1vrf/frr.conf b/tests/topotests/bgp_bmp/r1vrf/frr.conf
index cb8a7d2b14..8706693458 100644
--- a/tests/topotests/bgp_bmp/r1vrf/frr.conf
+++ b/tests/topotests/bgp_bmp/r1vrf/frr.conf
@@ -23,12 +23,14 @@ router bgp 65501 vrf vrf1
exit
!
address-family ipv4 unicast
+ rd vpn export 444:1
neighbor 192.168.0.2 activate
neighbor 192.168.0.2 soft-reconfiguration inbound
no neighbor 192:168::2 activate
exit-address-family
!
address-family ipv6 unicast
+ rd vpn export 555:1
neighbor 192:168::2 activate
neighbor 192:168::2 soft-reconfiguration inbound
exit-address-family