From: Philippe Guibert Date: Wed, 30 Oct 2024 20:30:44 +0000 (+0100) Subject: topotests: bgp_bmp, expose peer_distinguisher in loc-rib X-Git-Tag: base_10.3~163^2~7 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=d55a5864ddeeab8cc439c6a56b19be8459d7c82e;p=matthieu%2Ffrr.git 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 --- 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:. - # 0: 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