System and method for SID allocation
Through the architecture of SID manager and SID library, the SID block allocation and context mapping mechanism is adopted to solve the problems of SID allocation delay and low management efficiency in the IPv6 segment routing data plane, and realize low-latency and efficient SID management and fault recovery.
Patent Information
- Application Number
- CN202180013201.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-02-06
- Filing Date
- 2021-01-28
- Publication Date
- 2025-09-16
- Estimated Expiration
- 2041-01-28
AI Technical Summary
In the prior art, the IPv6 segment routing data plane has problems of delay and low management efficiency in the SID allocation process, especially when allocating SIDs among multiple clients, which leads to increased load and delay on network devices.
The architecture of SID manager and SID library is adopted. By allocating SID blocks and maintaining globally unique SIDs, combined with context mapping mechanism, client latency is reduced and the load of SID manager is optimized. Thread management and persistent storage are used to restore client status.
This achieves low-latency SID allocation, reduces the load on network devices, improves SID management efficiency, and reduces system downtime during fault recovery.
Smart Images

Figure CN115039387B_ABST
Abstract
Description
Background Art
[0001] IPv6 Segment Routing Data Plane (SRv6) defines Internet Protocol version 6 (IPv6) segment routing for routing segments through a data plane, such as a router or a network device with multiple connected routers, a switch or other networking component, a server computer or other computing device. According to SRv6, the route of a packet is encoded in the packet through the data plane using a segment identifier (SID) that defines the route of the packet.
[0002] The present application relates to an improved method for allocating SIDs in a system including an IPv6 data plane. BRIEF DESCRIPTION OF THE DRAWINGS
[0003] In order to readily understand the advantages of the present invention, a more particular description of the invention briefly described above will be presented in conjunction with specific embodiments illustrated in the accompanying drawings. Understanding that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting of its scope, the invention will be described and explained with additional particularity and detail through the use of the accompanying drawings, in which:
[0004] Figure 1 is a schematic block diagram of components for implementing low-latency SID allocation according to an embodiment of the present invention;
[0005] Figure 2 is a flowchart of a method for managing SID allocation according to an embodiment of the present invention;
[0006] Figure 3 is a flowchart of a process for performing multi-thread allocation according to an embodiment of the present invention;
[0007] Figure 4 is a flowchart of a method for restoring context mapping according to an embodiment of the present invention; and
[0008] Figure 5 is a schematic block diagram of a computer system suitable for implementing a method according to an embodiment of the present invention. DETAILED DESCRIPTION
[0009] It will be readily understood that the components of the present invention, as generally described and illustrated in the figures herein, may be arranged and designed in a variety of different configurations. Accordingly, the following more detailed description of the embodiments of the present invention, as illustrated in the figures, is not intended to limit the scope of the invention as claimed, but merely represents certain examples of presently contemplated embodiments according to the invention. The presently described embodiments may be best understood by reference to the drawings, wherein like components are designated by like reference numerals throughout.
[0010] Embodiments according to the present invention may be implemented as an apparatus, method, or computer program product. Thus, the present invention may take the form of a pure hardware embodiment, a pure software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining both software and hardware, all of which are generally referred to herein as a "module" or "system." Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression containing computer-usable program code.
[0011] Any combination of one or more computer-usable media or computer-readable media may be used. For example, computer-readable media may include portable computer floppy disks, hard disks, random access memory (RAM) devices, read-only memory (ROM) devices, erasable programmable read-only memory (EPROM or flash memory) devices, portable compact disc read-only memory (CDROM), optical storage devices, and magnetic storage devices. In selected embodiments, computer-readable media may include any non-transitory medium that can contain, store, communicate, propagate, or transport a program for use by or in conjunction with an instruction execution system, apparatus, or device.
[0012] The computer program code for performing the operations of the present invention may be written in any combination of one or more programming languages, including object-oriented programming languages such as Java, Smalltalk, C++, and traditional procedural programming languages such as the "C" programming language or similar programming languages, and descriptive or markup languages such as HTML, XML, JSON, and the like. The program code may be run on a computer system as a stand-alone software package, on a separate hardware unit, partially on a remote computer at a distance from the computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., by using the Internet provided by an Internet service provider).
[0013] The present invention is described below with reference to flowcharts and / or block diagrams of methods, devices (systems) and computer program products according to embodiments of the present invention. It should be understood that each block of the flowcharts and / or block diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer program instructions or codes. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to generate a machine, so that the instructions executed by the processor of the computer or other programmable data processing device create a device for implementing the functions / actions specified in one or more blocks of the flowcharts and / or block diagrams.
[0014] These computer program instructions may also be stored in a non-transitory computer-readable medium, which may direct a computer or other programmable data processing device to perform functions in a specific manner, so that the instructions stored in the computer-readable medium produce an article of manufacture including an instruction device that implements the functions / actions specified in the flowchart and / or block diagram blocks.
[0015] The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process, such that the instructions executed on the computer or other programmable apparatus provide a process for implementing the functions / actions specified by one or more blocks of the flowchart and / or block diagram.
[0016] Figure 1 An example architecture for assigning segment identifiers (SIDs) is shown in Figure 100. The components shown may represent executable components on a single computer system. The computing system may be implemented as a single computing device, a server rack with multiple servers mounted to a common backplane, or other types of computing devices.
[0017] The architecture 100 may include a SID manager 102. The SID manager 102 assigns SIDs to clients 104 running on a computer system. The SID manager 102 assigns SIDs such that each SID is globally unique among all clients 104. As discussed in more detail below, SIDs may be assigned in blocks, such as 1000 to 2000 SIDs at a time, thereby reducing latency at the clients 104 and also reducing the load on the SID manager 102.
[0018] Each client 104 may implement a network protocol or portion of a network protocol such as the Intermediate System to Intermediate System (IS-IS) protocol; the Open Shortest Path First (OSPF) protocol; the Border Gateway Protocol (BGP); or static routing. Clients 104 may implement IPv6 Segment Routing (SRv6) and may use the SIDs received from SID manager 102 in accordance with the protocol. In particular, each SID assigned to a client 104 may be associated with a forwarding behavior by the client 104, i.e., packets tagged with the SID will be routed by the client 104 to another client 104, an external address, or some other component or computing device according to the forwarding behavior associated with the SID. This association of a forwarding behavior with a SID is referred to herein as a context mapping.
[0019] The client 104 can interface with the SID manager 102 via a SID library 106. The client 104 can link to the library 106 in any manner known in the art. For example, the library can be a dynamic link library (DLL) such as used in the MICROSOFT WINDOWS operating system, and the client 104 can load the library upon instantiation to provide the client 104 with access to the SID manager 102 functionality according to the methods disclosed herein. The SID library 106 can be a library of functions as defined in UNIX, LINUX, or other operating systems. For example, the SID library 106 can be a shared object library (.so) that is dynamically linked to the client 104 at runtime.
[0020] SID manager 102 may interact with clients 104 to allocate SID blocks and maintain SID data 108 describing these allocations. For example, for a particular client 104, which may have a client identifier 110 associated therewith, SID data 108 may include allocations 112 that list those SIDs allocated to that client 104.
[0021] In some embodiments, as described below, each client 104 can periodically send its context map to the SID manager 102, for example, via functionality provided in the SID repository 106. These context maps can be stored as context maps 114 in the SID data 108 of the client 104. These context maps 114 can be displayed to an administrator to enable monitoring of the status of the client 104. The context maps 114 can also be used to restore the state of the client 104 in the event of a failure of the client 104 or the computer system running the client 104. To this end, the context maps 114 can be checkpointed and stored in persistent storage so that the client 104 can be restored to the checkpointed state in the event of a failure or when instructed to roll back to a previous state. The client 104 can provide its context map to the SID manager 102 and use functionality in the SID repository 106 to restore it from the context maps 114.
[0022] Each client 104 may also store its SID assignment 116 and a context map 118 for each SID that has been associated with a context map. Management of SIDs assigned to clients 104 may be performed by the functionality of the SID repository 106, i.e., recording the assignment of SID blocks and the assignment of individual SID to context mappings.
[0023] Clients 104 may be coupled to each other via a data plane 120. SIDs may be used to route packets tagged with the SIDs between clients 104 via data plane 120. This may be done in accordance with any method known in the art, particularly IPv6. Data plane 120 may further be coupled to a network 122 such that the SIDs are used to route packets to and from other computer systems via network 122.
[0024] The method disclosed herein describes the allocation of SID blocks specifically for IPv6. However, the method disclosed herein may also be applied to other situations where values need to be allocated from a source to multiple clients such that each value is allocated to only one client and is unique to the client.
[0025] Figure 2 2. A method 200 is shown that is performed using the architecture 100. In particular, the method 200 can be performed for each client 104. The method 200 can include calling 202 the SID library 106. In particular, the client 104, upon startup, can connect to the SID manager library 106 and call a function, such as an initialization function. As a result of the function, the SID library 106 can instruct the SID manager 102 to allocate 204 a SID block to the client 104. As described above, the SID manager 102 ensures that all SIDs in the SID block are globally unique relative to SIDs assigned to other clients 104. The allocation 204 of the SID block can be performed automatically upon instantiation of the client 104, or can be performed in response to an explicit function call by the client 104 after startup, the function call being defined in the SID library 106.
[0026] The method 200 may also include initializing 206 a thread within the process of the client 104, whose execution is defined in the SID library 106, that performs periodic transfers of the context map 118 of the client 104 to the SID manager 102. The thread is preferably assigned a low priority so as not to interfere with other operations of the client 104. The thread may be awakened and executed according to either: (a) a fixed minimum period or (b) in response to the load of the computer system hosting the client 104 dropping to a specified level.
[0027] The method 200 may also include assigning 208, by the client 104, a SID to the context map. As described above, this may include the client 104 associating the SID with a forwarding behavior to be applied to packets tagged with the SID. This may be performed using library calls defined in the SID library. In particular, in some embodiments, the client 104 may not need to know or manage SID blocks, but may instead request SIDs similar to other methods in the art. However, the SID provided to the client 104 is previously assigned to the client 104 as a block and is returned to the client 104 for use without waiting for a request from the SID manager 102.
[0028] The method 200 may also include evaluating the usage of the SID block allocated to the client 104. If the usage is found to be above a threshold, for example, more than 50% of the SIDs have been allocated to the context mapping, the method 200 may include requesting 212 an additional SID block from the SID manager 102. In this way, because the supply of allocated SIDs will always be greater than zero, there will be no delay in allocating independent SIDs. It is noted that steps 210 and 212 can be performed by the functionality of the SID library 106 and can be transparent to the client. In particular, in response to the allocation according to step 208, the functionality of the SID library 106 can perform the evaluation of step 210 and request 212 the additional block independently of any explicit request from the client 104.
[0029] Method 200 may include evaluating 214 whether the transfer thread from step 206 has already been selected for execution, for example, by a thread manager of an operating system on the computer system or by a thread manager implemented by SID library 106. If so, method 200 may include transferring 216 the client's context map to SID manager 102. This may be performed automatically by the transfer thread directly reading the context map from a predefined location within the client's 104 data and transferring the context map to SID manager 102. Step 216 may include transferring only new context maps since the last execution of method 200. For example, SIDs may be associated with context maps in numerical order, such that only context maps for SIDs higher than the highest SID reported in the last iteration of step 216 need be sent in the current iteration of step 216.
[0030] Method 200 may include evaluating 218 whether a failure has occurred. This may include detecting a reboot of client 104 due to either a failure of client 104 alone or a reboot of the computer system hosting client 104 following a failure. In response, method 200 may include retrieving 220 a context map for client 104 from the SID manager. This may be performed by SID repository 106. For example, when client 104 is instantiated due to a reboot and client 104 is linked to SID repository 106 again, the initialization function may evaluate whether the context map 118 for client 104 matches the context map 114 persistently stored by SID manager 102. If not, the initialization function may retrieve the client's context map 114 from SID manager 102 and set them to context map 118.
[0031] refer to Figure 3 , the illustrated method 300 can be performed by the SID manager 102 when interfacing with the SID library 106 to allocate SID blocks to clients 104. The method 300 can include initializing 302 a plurality of allocation threads, for example, 2 to 10 allocation threads. SID ranges are assigned 304 to each thread, with the SID range assigned to the thread being distinct from and non-overlapping with the SID ranges assigned to each other thread. Each SID range can include a plurality of SIDs equal to hundreds or thousands of blocks. Each allocation thread interfaces with the client 104 via functionality of the library 106 to perform all functions related to the SID range assigned to that client 104 as described above. In particular, the allocation thread will allocate SID blocks in its assigned range, receive reports of context mappings, maintain persistent storage of the reported context mappings, and restore the context mappings from the persistent storage in the event of a failure, as described herein.
[0032] When the SID manager 102 detects 306 that a request to allocate a SID block has been received from a client 104, i.e., from a function of the library 106 running in the context of the client 104, the SID manager 102 selects 308 one of the allocation threads, such as an allocation thread that is idle (not currently performing another allocation or other function), or selects according to a round robin or other load balancing method. The selected allocation thread then allocates 310 a SID block to the client 104 from which the request was received, the SID block being from the SID range allocated to the allocation thread and being unique relative to other blocks allocated by the thread. The allocation to the client can be performed according to the method described above in conjunction with the function of the library 106.
[0033] Next, the context mapping of the SID in the allocated block referenced by the client will be processed by the allocation thread. For example, a report received from the client 104 that references the context mapping of the SID in the allocated block will be routed to the allocation thread, which will then update the context mapping 114 of the SID referenced in the report.
[0034] refer to Figure 4 The illustrated method 400 may be performed by the storage manager 102 in conjunction with the client 104 executing functionality of the library 106 to restore context mappings to the client 104 based on the context mappings 114 in the SID data 108. The method 400 may be performed in response to detecting a failure, such as a failure of a node executing the SID manager 102, a failure of the SID manager 102, a failure of one or more clients 104, or some other failure. The method 400 may be performed when recovering operations to a failed node or component (SID manager 102 or client 104).
[0035] Method 400 may include SID manager 102 reading 402 context map 104 from persistent storage, such as a hard drive, flash drive, or other persistent storage device. Context map 114 associated with a particular client identifier 110 may be sent 404 to client 104 assigned that client identifier 110.
[0036] The SID manager 102 can further instruct 406 the client 104 to retrieve the context map from such a context map source. Specifically, this can be a configuration file on the node running the storage manager 102, a remote node to which the node is connected via a network, a configuration manager, or other network configuration data source. The manner in which the client 104 obtains configuration data to generate the context map can be based on any method known in the art. Configuration data may change over time, such that the context map 114 persistently stored by the storage manager 102 may be out of date or incorrect. The method 400 can therefore generate instructions at step 406 to ensure that the client 104 is current and that the context map 114 has been updated.
[0037] The instructions from step 406 may further instruct the client 104 to provide updates to the storage manager 102 for (a) any context mappings obtained from the configuration data source that are not in the context mapping sent in step 404, and (b) any context mappings sent in step 404 that are not defined in the context mapping obtained from the configuration data.
[0038] The client 104 then executes these functions as instructed in step 406. Note that executing these instructions takes time, e.g., 10 seconds to several minutes. Therefore, before obtaining the latest context map from the configuration data source, the context map sent in step 404 can be received and used by the client 104 to reduce downtime.
[0039] Each client 104 sends changes relative to the context map sent in step 404, and these updates are received 408 by the SID manager 102, which then updates 410 the context map 114 for that client 104 accordingly, i.e., adding new context maps and / or deleting context maps that are no longer part of the context map for that client 104.
[0040] In some embodiments, updating 410 the context mapping may be performed by the SID manager 102 using a countdown timer and a flag associated with the context mapping 114, as described below. Specifically, after step 402, and possibly after step 404, a countdown timer is started. The initial value of the countdown timer may be set to a value corresponding to, e.g., greater than or equal to, the amount of time required for the clients 104 to reacquire their context mappings from the configuration data source. After step 402, all context mappings 114 read 402 from persistent storage are marked as stale. In step 410, a stale flag is cleared for each context mapping 114 that matches the context mapping reported by one of the clients 104 in step 408. Steps 408 and 410 may be performed in an interleaved manner, such that the stale flag is cleared each time a report is received within a period of time. Step 410 may also include detecting expiration of the countdown timer and, in response, identifying all context mappings 114 that are still marked stale and deleting them from the SID data 108.
[0041] In the event of a failure of a single client 104, the client 104 may, upon restart, request that the context map 114 mapped to the client identifier 110 of the client be sent. The method may then continue at step 404 for the client 104. In the event of multiple clients 104, the multiple clients 104 may restore their context maps in the same manner as a single client.
[0042] Figure 5 is a block diagram illustrating an example computing device 500 that can be used to implement the systems and methods disclosed herein. In particular, a node in the data plane that implements a SID manager or any independent client can have some or all of the attributes of computing device 500.
[0043] Computing device 500 can be used to perform various processes, such as those discussed herein. Computing device 500 can function as a server, a client, or any other computing entity. The computing device can perform various monitoring functions as discussed herein and can execute one or more applications, such as those described herein. Computing device 500 can be any of a variety of computing devices, such as a desktop computer, a laptop computer, a server computer, a handheld computer, a tablet computer, and the like.
[0044] The computing device 500 includes one or more processors 502, one or more memory devices 504, one or more interfaces 506, one or more mass storage devices 508, one or more input / output (I / O) devices 510, and a display device 530, all of which are coupled to a bus 512. The processor 502 includes one or more processors or controllers that execute instructions stored in the memory device 504 and / or the mass storage device 508. The processor 502 may also include various types of computer-readable media, such as cache memory.
[0045] Memory device 504 includes various computer-readable media, such as volatile memory (e.g., random access memory (RAM) 14) and / or nonvolatile memory (e.g., read-only memory (ROM) 516). Memory device 504 may also include rewritable ROM, such as flash memory.
[0046] The mass storage device 508 includes various computer-readable media, such as magnetic tapes, magnetic disks, optical disks, solid-state memories (e.g., flash memory), etc. Figure 5 As shown, the specific mass storage device is a hard drive 524. Various drives may also be included in the mass storage device 508 to enable reading from and / or writing to various computer-readable media. The mass storage device 508 includes removable media 526 and / or non-removable media.
[0047] I / O devices 510 include various devices that allow data and / or other information to be input to or retrieved from computing device 500. Example I / O devices 510 include a cursor control device, a keyboard, a keypad, a microphone, a monitor or other display device, speakers, a printer, a network interface card, a modem, a camera, a CCD or other image acquisition device, and the like.
[0048] Display device 530 includes any type of device capable of displaying information to one or more users of computing device 500. Examples of display device 530 include a monitor, a display terminal, a video projection device, and the like.
[0049] Interfaces 506 include various interfaces that allow computing device 500 to interact with other systems, devices, or computing environments. Example interfaces 506 include any number of different network interfaces 520, such as interfaces to a local area network (LAN), a wide area network (WAN), a wireless network, and the Internet. Other interfaces include a user interface 518 and a peripheral device interface 522. Interfaces 506 may also include one or more user interface elements 518. Interfaces 506 may also include one or more peripheral interfaces, such as interfaces for a printer, a pointing device (mouse, trackpad, etc.), a keyboard, etc.
[0050] The bus 512 allows the processor 502, memory device 504, interface 506, mass storage device 508, and I / O device 510 to communicate with each other and with other devices or components coupled to the bus 512. The bus 512 represents one or more of several types of bus structures, such as a system bus, a PCI bus, an IEEE 1394 bus, a USB bus, and the like.
[0051] For purposes of illustration, programs and other executable program components are shown herein as discrete blocks, but it is understood that such programs and components may reside in different storage components of the computing device 500 at different times and be executed by the processor 502. Alternatively, the systems and processes described herein may be implemented in hardware or a combination of hardware, software, and / or firmware. For example, one or more application specific integrated circuits (ASICs) may be programmed to perform one or more of the systems and processes described herein.
Claims
1. A system for allocating a segment identifier (SID), comprising: A computing device comprising one or more processing devices and one or more memory devices operatively coupled to the one or more processing devices, the one or more memory devices storing executable code that, when executed by the one or more processing devices, causes the one or more processing devices to: executing a plurality of client nodes implementing a network protocol; implementing a data plane that provides data routing between the plurality of client nodes and an external network coupled to the computing device; Implementing a segment identifier manager programmed to: assigning, for each client node of the plurality of client nodes, a block of a plurality of segment identifiers to the each client node, the plurality of segment identifiers being globally unique among all segment identifiers assigned to the plurality of client nodes; for each individual segment identifier in the block of segment identifiers, causing each client node of the plurality of client nodes to map a context of each client node to each individual segment identifier, the assignment of each individual segment identifier being performed by each client node independently of the segment identifier manager; as well as Instructing the plurality of client nodes to perform the following operations in response to the allocation of the plurality of segment identifiers and independent of requests for segment identifiers by the plurality of client nodes: determining, by each of the plurality of client nodes, when a threshold number of individual segment identifiers in the block of segment identifiers assigned to each client node have been assigned to the plurality of contexts of each client node; as well as In response to determining that a threshold number of individual segment identifiers in the block of segment identifiers assigned to each client node have been assigned to the plurality of contexts of each client node, requesting, by each client node, an additional block of segment identifiers from the segment identifier manager.
2. The system of claim 1 , wherein the executable code, when executed by the one or more processing devices, further causes the one or more processing devices to: A mapping of individual segment identifiers in the block of segment identifiers to the context of each client node is periodically sent by each client node to the segment identifier manager.
3. The system of claim 1 , wherein each of the plurality of client nodes is further programmed to: detecting a failure of each of said client nodes; and In response to detecting a failure of the each client node, a mapping of the independent segment identifiers to the context of the each client node is requested from the segment identifier manager.
4. The system of claim 1, wherein the context of each client node is a forwarding behavior associated with each independent segment identifier.
5. The system of claim 1 , wherein the executable code, when executed by the one or more processing devices, further causes the one or more processing devices to: for each individual segment identifier in the segment identifier block, cause each client node of the plurality of client nodes to map a context of the each client node to the each individual segment identifier by: A first library function is called from a segment identifier management library common to the plurality of client nodes.
6. The system of claim 5, wherein the executable code, when executed by the one or more processing devices, further causes the one or more processing devices to: Each client node of the plurality of client nodes is caused to request, using a second library function from the library, a block of segment identifiers assigned to the each client node.
7. The system of claim 1 , wherein the plurality of client nodes implement one or more of the following: Intermediate System to Intermediate System Protocol; Open Shortest Path First protocol; Border Gateway Protocol (BGP); and Static routing.
8. The system of claim 1, wherein the plurality of client nodes implement Internet Protocol Version 6 Segment Routing (SRv6) and use the segment identifiers in the block of segment identifiers in accordance with SRv6.
9. A method for allocating a segment identifier (SID), comprising: providing a plurality of client nodes connected to the computer system via a network, the plurality of client nodes implementing a plurality of network protocols; implementing on the computer system a data plane that provides data routing between the plurality of client nodes and an external network coupled to the computer system; receiving, by a segment identifier manager operating on the computer system, requests for segment identifiers from the plurality of client nodes; allocating, by the segment identifier manager, for each of the plurality of client nodes, in response to a request in the request received from the each client node, a block of a plurality of segment identifiers, the plurality of segment identifiers being globally unique among all segment identifiers allocated to the plurality of client nodes, mapping, by each of the plurality of client nodes, a context of the plurality of contexts of each client node to each individual segment identifier of the block of segment identifiers, each individual segment identifier of the block of segment identifiers being assigned to each client node, the assignment of each individual segment identifier being performed by each client node independently of the segment identifier manager; In response to the assignment of the plurality of segment identifiers and independent of requests for segment identifiers by the plurality of client nodes, performing the following operations: determining, by each of the plurality of client nodes, when a threshold number of individual segment identifiers from the block of segment identifiers assigned to each client node have been assigned to the plurality of contexts of each client node; as well as In response to determining that a threshold number of individual segment identifiers in the block of segment identifiers allocated to each client node have been allocated to the plurality of contexts of each client node, requesting, by each client node, an additional block of segment identifiers from the segment identifier manager.
10. The method according to claim 9, further comprising: A mapping of individual segment identifiers in the block of segment identifiers to a context of each client node is periodically sent to the segment identifier manager by each client node of the plurality of client nodes.
11. The method according to claim 9, further comprising: detecting, by a first client node among the plurality of client nodes, a failure of the first client node; as well as In response to detecting a failure of the first client node, a mapping of the independent segment identifiers to the plurality of contexts of the first client node is requested from the segment identifier manager.
12. The method of claim 9, wherein the context of each client node is a forwarding behavior associated with each independent segment identifier.
13. The method of claim 9 , further comprising, for each individual segment identifier in the block of segment identifiers, mapping the context of each client node to the each individual segment identifier by: A first library function is called from a segment identifier management library common to the plurality of client nodes to map each of the independent segment identifiers to a context of each of the client nodes.
14. The method according to claim 13, further comprising: A second library function from the segment identifier management library is used, by each client node of the plurality of client nodes, to request the block of segment identifiers allocated to the each client node.
15. The method of claim 9, wherein the plurality of client nodes implement one or more of the following: Intermediate System to Intermediate System IS-IS protocol; Open Shortest Path First OSPF protocol; Border Gateway Protocol (BGP); and Static routing.
16. The method of claim 9, wherein the plurality of client nodes implement Internet Protocol version 6 Segment Routing (SRv6) and use the segment identifiers in the block of segment identifiers in accordance with SRv6.
Citation Information
Patent Citations
Enforcing strict shortest path forwarding using strict segment identifiers
US20170346718A1