diff options
| author | Philippe Guibert <philippe.guibert@6wind.com> | 2024-10-30 21:30:44 +0100 |
|---|---|---|
| committer | Philippe Guibert <philippe.guibert@6wind.com> | 2024-12-11 11:29:37 +0100 |
| commit | d55a5864ddeeab8cc439c6a56b19be8459d7c82e (patch) | |
| tree | 4878cc0cba835c305c9bce3572651747cf7acb86 | |
| parent | 8198dec807ca8cbd00421fd88d607ff6b00fd484 (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>
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 |
