frr
frr copied to clipboard
SRv6 BGP SID reachability
For BGP SRv6 updates, This PR considers "SRv6 SID reachability" and replaces the NH reachability with the SRv6 SID reachability.
Today, only the NH reachability is checked, and when route is installed, if the SRv6 SID is not reachable then the SRv6 segs route will fail to be installed. This is what happens on kernel.
This PR:
- avoids this use case, and does not install the BGP route.
- ensures the SID is reachable, before installing the BGP route to zebra
Possible cases like the one below are not considered, and do not work anyway:
Router A and D are running BGP protocol. The route map, to set nexthop == C, is configured on router D. Such that router C IPv6 address is verified to be reachable to flag the SRv6 reachable, but if route on the router C that points to D router's SRv6 SID dissapears(broken link), on node A SID is expected to be still reachable, because nexthop C is reachable.
BGP update with explicit nexthop(C) set via route-map and SRV6 SID
__________________________
| |
▽ ^
(A-B-C--------------------D)
^ ^
nexthop C SRv6 SID
of BGP update
Just a quick question: is this behavior something that other vendors have (SID reachability tracking)? I'm worried that we can't break anything if this is turned ON by default and can't be controlled. Maybe a knob would be handy?
Would this raise any scale concerns?
VPN SID is similar to vpn label for MPLS VPN, which provides local information once packets reach to this PE. In the example you provide,
| | ▽ ^ (A-B-C--------------------D)
If we don't sue route-map to set nexthop, the nexthop is D. Do we really want to let A, B, C all aware the reachablity of your VPN SID, or just keep it as local context to D if some chip has scale concerns with v6 prefixes.
https://datatracker.ietf.org/doc/rfc8986/ section 3.3. "Routed and non-routed SRv6 SIDs are the SRv6 instantiation of global and local segments, "
how do you plan to handle these local segment use cases?
ci:rerun
ci:rerun
ci:rerun
2 minor issues. also, the commit "bgpd: srv6 sid reachability information". I would add this in the commit log: Fixes 7f8c7d9 ("bgpd: ignore nexthop validation for srv6-vpn")
If this were in, I think we could merge this.
2 minor issues. also, the commit "bgpd: srv6 sid reachability information". I would add this in the commit log: Fixes 7f8c7d9 ("bgpd: ignore nexthop validation for srv6-vpn")
If this were in, I think we could merge this.
This commit log includes the "Fixes" tag: https://github.com/FRRouting/frr/pull/14810/commits/b3ac50287df89684794affadd95c494a635fb7c2
And these two comments were addressed: https://github.com/FRRouting/frr/pull/14810#discussion_r1471428195 https://github.com/FRRouting/frr/pull/14810#discussion_r1471427821