I was writing my own BGP speaker, and I am a bit confused by the IPv4 AFI of MP-BGP.
I understand that to exchange IPv6 routing information peers need to agree on it by sending the MP-BGP capability with IPv6 AFI to each other. That makes sense since IPv6 NLRI needs to be carried in the MP_REACH_NLRI
path attribute.
But what does the MP-BGP capability with IPv4 Unicast as AFI/SAFI do? From my observation, BGP speakers (I'm using bird) include the MP-BGP capability with IPv4 AFI in OPEN messages, but I don't see any change in behavior when they are sending updates (i.e., the NLRI is not put inside of MP_REACH_NLRI
).
In what case should a BGP speaker specify IPv4 AFI in the MP-BGP capability? And is putting IPv4 NLRI in MP_REACH_NLRI
even valid?