isisd: Extend IS-IS to communicate with the SRv6 SID Manager to allocate/release SRv6 SIDs#15677
Conversation
isisd/isis_zebra.c
Outdated
| int isis_zebra_srv6_manager_connect(void) | ||
| { | ||
| /* Connect to label manager. */ | ||
| if (zclient_sync->sock <= 0) { |
There was a problem hiding this comment.
you mean sid manager ? comment is wrong.
There was a problem hiding this comment.
Thanks for the review.
Based on the feedback of the community, I have updated the SID Manager to make the API asynchronous. So, this function no longer exists.
isisd/isis_zebra.c
Outdated
| } | ||
|
|
||
| sr_debug("ISIS-SRv6: Successfully connected to the SRv6 Manager"); | ||
|
|
There was a problem hiding this comment.
the internal code is not sending an SRV6 message kind.
This kind of API can be used for whatever manager, be it SRv6 or MPLS.
Can we rename isis_zebra_srv6_manager_xxx to isis_zebra_sid_manager_ready (as the sync socket is dedicated to mpls labels already)
There was a problem hiding this comment.
Based on the feedback of the community, I have updated the SID Manager to make the API asynchronous. So, this function no longer exists.
fd8f752 to
b8d6e76
Compare
b8d6e76 to
0b6ee2e
Compare
5e3c023 to
888816b
Compare
98a2d1e to
558c93a
Compare
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
Add an API to request information from the SRv6 SID Manager (zebra) regarding a specific SRv6 locator. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Add an API to get/release SRv6 SIDs through the SRv6 SID Manager. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Currently, when SRv6 is enabled in IS-IS, IS-IS requests a locator chunk from Zebra. Zebra assigns a locator chunk to IS-IS, and then IS-IS can allocate SIDs from the locator chunk. Recently, the implementation of SRv6 in Zebra has been improved, and a new API has been introduced for obtaining/releasing the SIDs. Now, the daemons no longer need to request a chunk. Instead, the daemons interact with Zebra to obtain information about the locator and subsequently to allocate/release the SIDs. This commit extends IS-IS to use the new SRv6 API. In particular, it removes the chunk throughout the IS-IS code and modifies IS-IS to request/save/advertise the locator instead of the chunk. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
This commit extends IS-IS to process locator information received from SRv6 Manager (zebra) and save the locator info in the SRv6 database. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Currently, IS-IS allocates SIDs without interacting with Zebra. Recently, the SRv6 implementation has been improved. Now, the daemons need to interact with Zebra through ZAPI to obtain and release SIDs. This commit extends IS-IS to request SIDs from Zebra instead of allocating the SIDs on its own. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Currently, IS-IS allocates SIDs without interacting with Zebra. Recently, the SRv6 implementation has been improved. Now, the daemons need to interact with Zebra through ZAPI to obtain and release SIDs. This commit extends IS-IS to release SIDs to Zebra when they are no longer needed. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Zebra sends a SRV6_SID_NOTIFY notification to inform clients about the result of a SID alloc/release operation. This commit adds a handler to process a SRV6_SID_NOTIFY notification received from zebra. If the notification indicates that a SID allocation operation was successful, then it stores the allocated SID in the SRv6 database, installs the SID into the RIB, and advertises the SID to the other IS-IS routers. If the notification indicates that an operation has failed, it logs the error. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Remove unused SRv6 code. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
The locator is no longer split in multiple chunks. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
In the near future, some daemons may only register SIDs. This may be the case for the pathd daemon when creating SRv6 binding SIDs. When a locator is getting deleted at ZEBRA level, the daemon may have an easy way to find out the SIds to unregister to. This commit proposes to add the locator name to the SID_SRV6_NOTIFY message whenever possible. Only case when an allocation failure happens, the locator will not be present. In all other places, the notify API at procol levels has the locator name extra-parameter. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com> Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
395e4c9 to
fe5b03a
Compare
|
@riw777 I rebased the PR based on the merged SID manager. Can you please take a look? |
PR #15604 introduces 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.
This PR extends the IS-IS daemon to communicate with the SRv6 SID Manager to allocate/release SRv6 SIDs.