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>
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
"origin": "IGP",
"peer_asn": 65501,
"peer_bgp_id": "192.168.0.1",
+ "peer_distinguisher": "444:1",
"peer_type": "loc-rib instance",
"policy": "loc-rib"
},
"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
"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"
},
"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
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