frr
frr copied to clipboard
Add support for SRv6 SID Manager
In the current FRR implementation, the SRv6 locator can only be used by one client at a time. This PR adds support for the SRv6 SID Manager, a zebra component responsible for SID allocation/management. The SRv6 SID Manager exposes a SID allocation/release APIs, allowing clients to request and release an SRv6 SID. The SID manager allows the SRv6 Locator to be shared among many clients such as IS-IS, BGP and others. The PR extends the BGP, IS-IS daemons to communicate with the SRv6 SID Manager to allocate/release SRv6 SIDs.
The SID Manager supports two SRv6 SID allocation schemes:
- usid-f3216: the SRv6 uSID allocation scheme. Ensures interoperability between FRR and other vendors including Cisco IOS XR and many others. The scheme has been used for the EANTC interoperability test (https://eantc.de/wp-content/uploads/2023/04/EANTC-InteropTest2023-TestReport.pdf).
- uncompressed: Ensures backward compatibility with the current implementation of FRR.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
How do we set a preference between compressed and uncompressed SRv6 SID selection? What is the default method?
How the unsetting the format is expected to work, do you verify unsetting of f3216 in topotest?
What are the requirements to successfully run the topotest that verifies the functionality of this PR?
Could you please create a new PR (1 and complete draft) that combines 4 PRs related to the SID manager as a draft to verify that there is no regression with uncompressed SID with existing topotest of CI?
@dmytroshytyi-6WIND
How do we set a preference between compressed and uncompressed SRv6 SID selection? What is the default method?
By default, we use the "uncompressed" format to maintain backward compatibility.
How the unsetting the format is expected to work, do you verify unsetting of f3216 in topotest?
Unsetting the format will restore the default format (i.e. "uncompressed").
Could you please create a new PR (1 and complete draft) that combines 4 PRs related to the SID manager as a draft to verify that there is no regression with uncompressed SID with existing topotest of CI?
Yes, I will create it as soon as this PR passes all the CI checks.
Documentation is missing yet. Another question: is this similar to the label allocation manager (synchronous)?
Hi @ton31337 many thanks for the review. I added the documentation.
Regarding the second question, initially it was similar to the label allocation manager (synchronous) I received some feedbacks from the community, it was suggested to me to make it asynchronous.
I updated the PR based on the feedback. Now it is asynchronous.
there are some address sanitizer error : https://ci1.netdef.org/browse/FRR-PULLREQ3-3112/artifact/ASAN7/AddressSanitizerError/AddressSanitzer.txt , and it seems related to your dev.
please use ./configure ... --enable-address-sanitizer and run the topotest to see asan files in /tmp/topotests/
@pguibert6WIND Thanks for the review. I fixed the errors reported by address sanitizer.
I think we'll need topo tests for this one (?) ... other than that, the code looks fine
@riw777 Many thanks for the review.
We have another PR with the topotest (https://github.com/FRRouting/frr/pull/15679). The topotest extensively tests the SID manager and the interaction with the client daemons (BGP, IS-IS).
Please note, originally the SID manager, client daemon extension (BGP, IS-IS) and the topotest were in a single PR. But the PR was very large, hence we split into SID Manager, BGP extension, IS-IS extension, and topotest.
ci:retry