Segment routing point-to-multipoint path

By using segment lists of segment routing protocols in IPv6 networks to describe P2MP paths, the problem of forwarding tables taking up too many resources is solved, and stateless P2MP path creation is realized, improving network scalability and communication efficiency.

CN115699697BActive Publication Date: 2025-07-11HUAWEI TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180042352.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-06-16
Filing Date
2021-03-19
Publication Date
2025-07-11
Estimated Expiration
2041-03-19

AI Technical Summary

Technical Problem

When an existing network creates point-to-multipoint paths, the memory and processing resources of forwarding tables are used up too much, resulting in the network being not scalable enough to effectively support stateless routing of a large number of paths.

Method used

Segment Routing Protocol (SR) is used to describe point-to-multipoint path (P2MP) by pushing segment lists in data packets, identify nodes and links using multicast SIDs, the ingress node encapsulates data packets and replicates along the path, and the intermediate node forwards according to the segment list, avoiding maintaining the state in the intermediate nodes.

Benefits of technology

It realizes stateless P2MP path creation in IPv6 network, reduces the memory and processor resource usage of the core network, supports the scalability of a large number of paths, and improves the functions and operability of network communication devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115699697B_ABST
    Figure CN115699697B_ABST
Patent Text Reader

Abstract

A mechanism implemented by an ingress node in a network is disclosed. The mechanism includes a receiver of the ingress node receiving a data packet. A segment list describing a segment routing point-to-multipoint (SR P2MP) path is pushed onto the data packet. The data packet is sent on a downstream interface along the SR P2MP path.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - Reference to Related Applications

[0002] This patent application claims the benefit of U.S. Provisional Patent Application No. 63 / 039,856, filed on Jun. 16, 2020, by Huaimo Chen et al., entitled "Segment Routing Point To Multipoint Path", which is incorporated herein by reference. Technical Field

[0003] The present invention generally relates to network communication and, in particular, to a mechanism for creating point - to - multipoint (P2MP) paths using segment routing (SR) in an Internet Protocol version 6 (IPv6) network. Background Art

[0004] Some networks use network state to route network packets. For example, a controller can create a path on a network by assigning forwarding state to nodes along the path. Each node can store one or more states for each path passing through the node, such as in a forwarding table in memory. As the network continues to create new paths, the forwarding tables of these nodes gradually become more crowded. Thus, the memory allocated to these tables limits the number of paths that can pass through the nodes. Further, as the size of the forwarding table increases, the processing resources used to search the forwarding table also increase. Thus, as the number of paths in the network increases, path state uses increasing amounts of memory and processing resources. Therefore, networks that use state to describe paths are not as scalable as stateless networks. Summary of the Invention

[0005] In one embodiment, the present invention includes a method implemented by an ingress node in a network, the method comprising: a processor of the ingress node pushing a segment list describing a segment routing point - to - multipoint (SR P2MP) path onto a data packet; and sending the data packet on a downstream interface along the SR P2MP path.

[0006] Segment Routing (SR) is a routing protocol that supports routing without maintaining state in the network. Specifically, SR uses segment lists to describe paths. In point-to-point (P2P) routing, the segment list is implemented as a stack of labels or SIDs that describe the path. Packets are encapsulated with the segment list. Each node in the path can pop the top label from the packet and forward the packet based on the next label in the stack. In this way, the only node that maintains state is the ingress node. The intermediate nodes and the egress node forward the packets based on the label stack, so the SR protocol is stateless in the core network. SR is suitable for P2P paths but does not support P2MP paths. For example, a routing protocol that supports P2MP paths is stateful and thus does not integrate with the stateless approach used in SR. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.

[0007] This aspect includes an SR-based mechanism for creating and maintaining P2MP paths in a stateless manner over an IPv6 network. The ingress node can create a segment list that describes the P2MP path through the network. The segment list includes the multicast SIDs of the nodes in the P2MP path. The multicast SID can identify a node and / or can identify the link / interface of a node, depending on the example. The multicast SID includes a number-of-branches field and a number-of-SIDs field. The number of branches indicates the number of segments of the P2MP path that extend downstream from the corresponding node. The number of SIDs indicates the number of multicast nodes included in the P2MP path downstream of the corresponding node. This information can be pushed by the ingress node onto the packet through encapsulation. Then, the packet can be sent downstream for replication and / or routing along the P2MP path as shown. For example, each current node (e.g., the ingress node and intermediate nodes) can replicate the packet the number of times equal to the number of branches indicated by the number-of-branches of the multicast SID indicated for the current node. Then, the current node can encapsulate each packet with a segment list that describes the subtree of the P2MP path along the corresponding branch downstream of the current node before forwarding the packet. The multicast SID and related parameters of the next-hop node can be included in the destination address of the packet, and the address of the current node can be included in the source address. This enables the creation of stateless P2MP communication over an IPv6 network through SR. Thus, the described example creates additional functionality for nodes in the IPv6 core network. Further, the described example does not require maintaining state in the core network, thus reducing the occupancy of memory and processor resources of the entire core network as the number of P2MP paths expands. Therefore, the described example solves various problems specific to network communication and increases the functionality and / or operability of network communication devices.

[0008] Optionally, according to any of the above aspects, in another implementation of this aspect, it further includes sending a copy of the data packet on a downstream interface different from the data packet, where the copy of the data packet includes a second segment list, and where the segment list and the second segment list describe different subtrees of the SR P2MP path.

[0009] Optionally, according to any of the above aspects, in another implementation of this aspect, the SR P2MP path is stateless on the network.

[0010] Optionally, according to any of the above aspects, in another implementation of this aspect, pushing the segment list onto the data packet further includes: setting the multicast segment identifier (SID) of the next hop of the subtree along the SR P2MP path to the destination address of the data packet.

[0011] Optionally, according to any of the above aspects, in another implementation of this aspect, the segment list includes the multicast SIDs of each node or each link in the subtree of the SR P2MP path.

[0012] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast SID includes a multicast block prefix, a node identifier, and an argument.

[0013] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast SID includes a multicast adjacency SID locator, a link number, and an argument.

[0014] Optionally, according to any of the above aspects, in another implementation of this aspect, the argument includes the number of branches of the subtree associated with the corresponding node.

[0015] Optionally, according to any of the above aspects, in another implementation of this aspect, the argument further includes the number of SIDs included in the subtree downstream of the corresponding node.

[0016] In one embodiment, the present invention includes a method implemented by an intermediate node along an SR P2MP path in a network, the method including: receiving a data packet including an upstream segment list describing one or more subtrees of the SR P2MP path; a processor of the intermediate node determining a downstream segment list of the subtree describing the downstream interface of the intermediate node included in the SR P2MP path according to the upstream segment list; the processor replacing the upstream segment list associated with the data packet with the downstream segment list; and sending the data packet on the downstream interface along the SR P2MP path.

[0017] SR is a routing protocol that supports routing without maintaining state in the network. Specifically, SR uses segment lists to describe paths. In P2P routing, the segment list is implemented as a stack of labels or SIDs that describe the path. Packets are encapsulated with the segment list. Each node in the path can pop the top label from the packet and forward the packet based on the next label in the stack. In this way, the only node that maintains state is the ingress node. Intermediate nodes and egress nodes forward packets based on the label stack, so the SR protocol is stateless in the core network. SR is applicable to P2P paths but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and thus do not integrate with the stateless approach used in SR. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.

[0018] This aspect includes an SR-based mechanism for creating and maintaining P2MP paths in a stateless manner over an IPv6 network. The ingress node can create a segment list that describes the P2MP path through the network. The segment list includes multicast SIDs of the nodes in the P2MP path. The multicast SID can identify a node and / or can identify a link / interface of the node, depending on the example. The multicast SID includes a number of branches field and a number of SIDs field. The number of branches indicates the number of segments of the P2MP path that extend downstream from the corresponding node. The number of SIDs indicates the number of multicast nodes included in the P2MP path downstream of the corresponding node. This information can be pushed by the ingress node onto the packet through encapsulation. Then, the packet can be sent downstream to be replicated and / or routed along the P2MP path as shown. For example, each current node (e.g., the ingress node and intermediate nodes) can replicate the packet the number of times equal to the number of branches indicated by the number of branches of the multicast SID indicated for the current node. Then, the current node can encapsulate each packet with a segment list that describes the subtree of the P2MP path along the corresponding branch downstream of the current node before forwarding the packet. The multicast SID and related parameters of the next-hop node can be included in the destination address of the packet, and the address of the current node can be included in the source address. This supports creating stateless P2MP communication over an IPv6 network through SR. Thus, the described example creates additional functionality for nodes in an IPv6 core network. Further, the described example does not require maintaining state in the core network, and thus reduces the occupancy of memory and processor resources of the entire core network as the number of P2MP paths expands. Thus, the described example solves various problems specific to network communication and increases the functionality and / or operability of network communication devices.

[0019] Optionally, according to any of the above aspects, in another implementation of this aspect, it further includes: the processor copies the data packet to generate a copy of the data packet for sending on the second downstream interface of the intermediate node; the processor determines a second downstream segment list of a second subtree describing the second downstream interface included in the SR P2MP path according to the upstream segment list; the processor replaces the upstream segment list associated with the copy of the data packet with the second downstream segment list; the transmitter sends the copy of the data packet on the second downstream interface along the SR P2MP path.

[0020] Optionally, according to any of the above aspects, in another implementation of this aspect, replacing the upstream segment list with the second downstream segment list includes: copying the data packet including the upstream segment list, and then replacing the upstream segment list with the second downstream segment list in the copy of the data packet.

[0021] Optionally, according to any of the above aspects, in another implementation of this aspect, replacing the upstream segment list with the second downstream segment list includes: deleting the upstream segment list from the data packet before copying, and pushing the second downstream segment list onto the copy of the data packet.

[0022] Optionally, according to any of the above aspects, in another implementation of this aspect, the received data packet includes a destination address identifying the intermediate node, where the destination address includes an argument, and the argument includes the number of branches associated with the intermediate node.

[0023] Optionally, according to any of the above aspects, in another implementation of this aspect, the upstream segment list includes the multicast SIDs of each node or each link in the subtree associated with the intermediate node.

[0024] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast SID includes the number of SIDs included in the subtree downstream of the corresponding node.

[0025] Optionally, according to any of the above aspects, in another implementation of this aspect, determining the downstream segment list includes: using the number of branches indicated in the destination address to determine the number of next-hop nodes; using the number of SIDs in the multicast SID of each next-hop node to determine the number of multicast SIDs in each subtree associated with each next-hop node; generating a downstream segment list that only includes the multicast SIDs associated with the subtree of the next-hop node, and the next-hop node is associated with the downstream interface.

[0026] Optionally, according to any of the above aspects, in another implementation of this aspect, determining the second downstream segment list includes: generating a second downstream list that only includes the multicast SIDs associated with the second subtree of the second downstream interface according to the number of branches indicated in the destination address and the number of SIDs in the multicast SID of each next-hop node.

[0027] Optionally, according to any of the above aspects, in another implementation of this aspect, the intermediate node does not store the state of the SRP2MP path.

[0028] Optionally, according to any of the above aspects, in another implementation of this aspect, replacing the upstream segment list with the downstream segment list further includes: setting the multicast SID of the next hop along the subtree of the downstream interface to the destination address of the data packet.

[0029] In one embodiment, the present invention includes a non-transitory computer-readable medium including a computer program product for use by a first node in a network, wherein the computer program product includes computer-executable instructions stored in the non-transitory computer-readable medium, and the computer-executable instructions, when executed by a processor, cause the first node to perform the method according to any of the above aspects.

[0030] In one embodiment, the present invention includes an ingress node in a network, the node including: a receiving component for receiving a data packet; a processing component for pushing a segment list describing an SR P2MP path onto the data packet; and a sending component for sending the data packet on a downstream interface along the SR P2MP path.

[0031] SR is a routing protocol that supports routing without maintaining state in the network. Specifically, SR uses segment lists to describe paths. In P2P routing, the segment list is implemented as a stack of labels or SIDs describing the path. The data packet is encapsulated with the segment list. Each node in the path can pop the top label from the data packet and forward the data packet according to the next label in the stack. In this way, the only node that maintains state is the ingress node. Intermediate nodes and egress nodes forward the data packet according to the label stack, so the SR protocol is stateless in the core network. SR is applicable to P2P paths but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and thus do not integrate with the stateless method used in SR. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.

[0032] This aspect includes an SR-based mechanism for creating and maintaining P2MP paths in a stateless manner over an IPv6 network. An ingress node can create a segment list that describes the P2MP path through the network. The segment list includes multicast SIDs of the nodes in the P2MP path. The multicast SIDs can identify nodes and / or can identify the links / interfaces of the nodes, depending on the example. The multicast SID includes a number-of-branches field and a number-of-SIDs field. The number of branches indicates the number of segments of the P2MP path extending downstream from the corresponding node. The number of SIDs indicates the number of multicast nodes included in the P2MP path downstream of the corresponding node. This information can be pushed by the ingress node onto the packet through encapsulation. Then, the packet can be sent downstream to be replicated and / or routed along the P2MP path as shown. For example, each current node (e.g., the ingress node and intermediate nodes) can replicate the packet the number of times equal to the number of branches indicated by the number-of-branches of the multicast SID indicated for the current node. Then, before forwarding the packet, the current node can encapsulate each packet with a segment list that describes the subtree of the P2MP path along the corresponding branch downstream of the current node. The multicast SID and related parameters of the next-hop node can be included in the destination address of the packet, and the address of the current node can be included in the source address. This enables the creation of stateless P2MP communication over an IPv6 network through SR. Thus, the described example creates additional functionality for nodes in the IPv6 core network. Further, the described example does not require maintaining state in the core network, and thus reduces the occupancy of memory and processor resources of the entire core network as the number of P2MP paths expands. Therefore, the described example solves various problems specific to network communication and increases the functionality and / or operability of network communication devices.

[0033] Optionally, according to any of the above aspects, in another implementation of this aspect, a receiving component, a processing component, and a sending component are used to execute the method of any of the above aspects.

[0034] In one embodiment, the present invention includes an intermediate node in a network, the node including: a receiving component for receiving a packet including an upstream segment list that describes one or more subtrees of an SR P2MP path; a processing component for: determining a downstream segment list that describes the subtree of the downstream interface of the intermediate node included in the SR P2MP path according to the upstream segment list; replacing the upstream segment list associated with the packet with the downstream segment list; a sending component for sending the packet on the downstream interface along the SR P2MP path.

[0035] SR is a routing protocol that supports routing without maintaining state in the network. Specifically, SR uses segment lists to describe paths. In P2P routing, the segment list is implemented as a stack of labels or SIDs that describe the path. Packets are encapsulated with the segment list. Each node in the path can pop the top label from the packet and forward the packet based on the next label in the stack. In this way, the only node that maintains state is the ingress node. Intermediate nodes and egress nodes forward packets based on the label stack, so the SR protocol is stateless in the core network. SR is suitable for P2P paths but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and thus do not integrate with the stateless methods used in SR. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.

[0036] This aspect includes an SR-based mechanism for creating and maintaining P2MP paths in a stateless manner over an IPv6 network. The ingress node can create a segment list that describes the P2MP path through the network. The segment list includes the multicast SIDs of the nodes in the P2MP path. The multicast SID can identify a node and / or can identify the link / interface of a node, depending on the example. The multicast SID includes a number of branches field and a number of SIDs field. The number of branches indicates the number of segments of the P2MP path that extend downstream from the corresponding node. The number of SIDs indicates the number of multicast nodes included in the P2MP path downstream of the corresponding node. This information can be pushed by the ingress node onto the packet through encapsulation. Then, the packet can be sent downstream for replication and / or routing along the P2MP path as shown. For example, each current node (e.g., the ingress node and intermediate nodes) can replicate the packet the number of times equal to the number of branches indicated by the number of branches of the multicast SID indicated for the current node. Then, the current node can encapsulate each packet with a segment list that describes the subtree of the P2MP path along the corresponding branch downstream of the current node before forwarding the packet. The multicast SID and related parameters of the next-hop node can be included in the destination address of the packet, and the address of the current node can be included in the source address. This supports creating stateless P2MP communication over an IPv6 network through SR. Thus, the described example creates additional functionality for nodes in the IPv6 core network. Further, the described example does not require maintaining state in the core network, so as the number of P2MP paths expands, it reduces the occupancy of memory and processor resources in the entire core network. Thus, the described example solves various problems specific to network communication and increases the functionality and / or operability of network communication devices.

[0037] Optionally, according to any of the above aspects, in another implementation of this aspect, a receiving component, a processing component, and a sending component are used to perform the method of any of the above aspects.

[0038] In one embodiment, the present invention includes an ingress node in a network, the node comprising: a receiver for receiving data packets; a processor for pushing a segment list describing an SR P2MP path onto the data packets; and a transmitter for transmitting the data packets on a downstream interface along the SR P2MP path.

[0039] SR is a routing protocol that supports routing without maintaining state in the network. Specifically, SR uses segment lists to describe paths. In P2P routing, the segment list is implemented as a stack of labels or SIDs that describe the path. The data packets are encapsulated with the segment list. Each node in the path can pop the top label from the data packet and forward the data packet according to the next label in the stack. In this way, the only node that maintains state is the ingress node. The intermediate nodes and the egress node forward the data packets based on the label stack, so the SR protocol is stateless in the core network. SR is applicable to P2P paths but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and thus do not integrate with the stateless approach used in SR. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.

[0040] This aspect includes an SR-based mechanism for creating and maintaining P2MP paths in a stateless manner over an IPv6 network. An ingress node can create a segment list that describes the P2MP path through the network. The segment list includes the multicast SIDs of the nodes in the P2MP path. The multicast SID can identify a node and / or can identify a link / interface of a node, depending on the example. The multicast SID includes a number-of-branches field and a number-of-SIDs field. The number of branches indicates the number of segments of the P2MP path extending downstream from the corresponding node. The number of SIDs indicates the number of multicast nodes included in the P2MP path downstream of the corresponding node. This information can be pushed by the ingress node onto the packet by encapsulation. Then, the packet can be sent downstream to be replicated and / or routed along the P2MP path as shown. For example, each current node (e.g., the ingress node and intermediate nodes) can replicate the packet a number of times equal to the number of branches indicated by the number of branches of the multicast SID indicated for the current node. Then, the current node can encapsulate each packet with a segment list that describes the subtree of the P2MP path along the corresponding branch downstream of the current node before forwarding the packet. The multicast SID and related parameters of the next-hop node can be included in the destination address of the packet, and the address of the current node can be included in the source address. This enables the creation of stateless P2MP communication over an IPv6 network via SR. Thus, the described example creates additional functionality for nodes in an IPv6 core network. Further, the described example does not require maintaining state in the core network, thus reducing the consumption of memory and processor resources of the entire core network as the number of P2MP paths expands. Thus, the described example solves various problems specific to network communication and increases the functionality and / or operability of network communication devices.

[0041] Optionally, according to any of the above aspects, in another implementation of this aspect, the transmitter is further configured to send a copy of the packet on a downstream interface different from the packet, where the copy of the packet includes a second segment list, and where the segment list and the second segment list describe different subtrees of the SR P2MP path.

[0042] Optionally, according to any of the above aspects, in another implementation of this aspect, the SR P2MP path is stateless over the network.

[0043] Optionally, according to any of the above aspects, in another implementation of this aspect, pushing the segment list onto the packet further includes: setting the multicast segment identifier (SID) of the next hop along the subtree of the SR P2MP path as the destination address of the packet.

[0044] Optionally, according to any of the above aspects, in another implementation of this aspect, the segment list includes the multicast SIDs of each node or each link in the subtree of the SR P2MP path.

[0045] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast SID includes a multicast block prefix, a node identifier, and an argument.

[0046] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast SID includes a multicast adjacency SID locator, a link number, and an argument.

[0047] Optionally, according to any of the above aspects, in another implementation of this aspect, the argument includes the number of branches of the subtree associated with the corresponding node.

[0048] Optionally, according to any of the above aspects, in another implementation of this aspect, the argument further includes the number of SIDs included in the subtree downstream of the corresponding node.

[0049] In one embodiment, the present invention includes an intermediate node, which includes: a receiver for receiving a data packet including an upstream segment list describing one or more subtrees of an SR P2MP path passing through the intermediate node; a processor for: determining a downstream segment list of the subtree describing the downstream interface of the intermediate node included in the SR P2MP path according to the upstream segment list; replacing the upstream segment list associated with the data packet with the downstream segment list; a transmitter for sending the data packet on the downstream interface along the SR P2MP path.

[0050] SR is a routing protocol that supports routing without maintaining state in the network. Specifically, SR uses segment lists to describe paths. In P2P routing, the segment list is implemented as a stack of labels or SIDs describing the segments of the path. The data packet is encapsulated with the segment list. Each node in the path can pop the top label from the data packet and forward the data packet according to the next label in the stack. In this way, the only node that maintains state is the ingress node. The intermediate nodes and the egress node forward the data packet according to the label stack, so the SR protocol is stateless in the core network. SR is applicable to P2P paths but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and thus do not integrate with the stateless methods used in SR. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.

[0051] This aspect includes an SR-based mechanism for creating and maintaining P2MP paths in a stateless manner over an IPv6 network. The ingress node can create a segment list that describes the P2MP path through the network. The segment list includes the multicast SIDs of the nodes in the P2MP path. The multicast SID can identify a node and / or can identify the link / interface of a node, depending on the example. The multicast SID includes a number-of-branches field and a number-of-SIDs field. The number of branches indicates the number of segments of the P2MP path extending downstream from the corresponding node. The number of SIDs indicates the number of multicast nodes included in the P2MP path downstream of the corresponding node. This information can be pushed by the ingress node onto the packet through encapsulation. Then, the packet can be sent downstream for replication and / or routing along the P2MP path as shown. For example, each current node (e.g., the ingress node and intermediate nodes) can replicate the packet a number of times equal to the number of branches indicated by the number-of-branches of the multicast SID indicated for the current node. Then, the current node can encapsulate each packet with a segment list that describes the subtree of the P2MP path along the corresponding branch downstream of the current node before forwarding the packet. The multicast SID and related parameters of the next-hop node can be included in the destination address of the packet, and the address of the current node can be included in the source address. This enables the creation of stateless P2MP communication over an IPv6 network through SR. Thus, the described example creates additional functionality for nodes in the IPv6 core network. Further, the described example does not require maintaining state in the core network, and thus reduces the occupancy of memory and processor resources of the entire core network as the number of P2MP paths expands. Therefore, the described example solves various problems specific to network communication and increases the functionality and / or operability of network communication devices.

[0052] Optionally, according to any of the above aspects, in another implementation of this aspect, the processor is further configured to: replicate the packet to generate a copy of the packet for sending on the second downstream interface of the intermediate node; determine a second downstream segment list that describes the second subtree of the second downstream interface included in the SR P2MP path according to the upstream segment list; replace the upstream segment list associated with the copy of the packet with the second downstream segment list; wherein, the transmitter is further configured to send the copy of the packet on the second downstream interface along the SR P2MP path.

[0053] Optionally, according to any of the above aspects, in another implementation of this aspect, replacing the upstream segment list with the second downstream segment list includes: replicating the packet including the upstream segment list, and then replacing the upstream segment list with the second downstream segment list in the copy of the packet.

[0054] Optionally, according to any of the above aspects, in another implementation of this aspect, replacing the upstream segment list with a second downstream segment list includes: deleting the upstream segment list from the data packet before copying, and pushing the second downstream segment list onto a copy of the data packet.

[0055] Optionally, according to any of the above aspects, in another implementation of this aspect, the received data packet includes a destination address identifying an intermediate node, where the destination address includes arguments, and the arguments include the number of branches associated with the intermediate node.

[0056] Optionally, according to any of the above aspects, in another implementation of this aspect, the upstream segment list includes the multicast SIDs of each node or each link in the subtree associated with the intermediate node.

[0057] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast SID includes the number of SIDs included in the subtree downstream of the corresponding node.

[0058] Optionally, according to any of the above aspects, in another implementation of this aspect, determining the downstream segment list includes: using the number of branches indicated in the destination address to determine the number of next-hop nodes; using the number of SIDs in the multicast SID of each next-hop node to determine the number of multicast SIDs in each subtree associated with each next-hop node; generating a downstream segment list that includes only the multicast SIDs associated with the subtrees of the next-hop nodes, where the next-hop nodes are associated with downstream interfaces.

[0059] Optionally, according to any of the above aspects, in another implementation of this aspect, determining the second downstream segment list includes: generating a second downstream list that includes only the multicast SIDs associated with the second subtree of the second downstream interface according to the number of branches indicated in the destination address and the number of SIDs in the multicast SID of each next-hop node.

[0060] Optionally, according to any of the above aspects, in another implementation of this aspect, the intermediate node does not store the state of the SRP2MP path.

[0061] Optionally, according to any of the above aspects, in another implementation of this aspect, replacing the upstream segment list with a downstream segment list further includes: setting the multicast SID of the next-hop along the subtree of the downstream interface to the destination address of the data packet.

[0062] For clarity, any of the above embodiments can be combined with any one or more of the other above embodiments to create new embodiments within the scope of the present invention.

[0063] These and other features will be more clearly understood from the following detailed description in conjunction with the accompanying drawings and the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0064] To more fully understand the present invention, reference is made to the following brief description taken in conjunction with the accompanying drawings and specific embodiments, in which like reference numerals represent like parts.

[0065] Figure 1 is a schematic diagram of an exemplary IPv6 network for implementing a P2MP path using the SR mechanism.

[0066] Figure 2 is a schematic diagram of an exemplary network node.

[0067] Figure 3 is a schematic diagram indicating an exemplary encoding of a multicast segment identifier (SID) of a node in a segment list describing an SR P2MP path in an IPv6 network.

[0068] Figure 4 is a schematic diagram indicating an exemplary encoding of a multicast SID of node and subtree information.

[0069] Figure 5 is a schematic diagram according to an exemplary encoding of a segment list describing an SR P2MP path based on a node in an IPv6 network.

[0070] Figure 6 is a schematic diagram of an exemplary encoding of a multicast SID indicating a link in a segment list describing an SR P2MP path in an IPv6 network.

[0071] Figure 7 is a schematic diagram indicating an exemplary encoding of a multicast adjacency SID of link and subtree information.

[0072] Figure 8 is a schematic diagram according to an exemplary encoding of a segment list describing an SR P2MP path based on a link in an IPv6 network.

[0073] Figure 9 is a flowchart of an exemplary method for an ingress node at the edge of an IPv6 network to send a data packet to an SR P2MP path.

[0074] Figure 10 is a flowchart of an exemplary method for an intermediate node in an IPv6 network to forward a data packet along an SR P2MP path.

[0075] Figure 11 is an embodiment of a device for maintaining an SR P2MP path in an IPv6 network. DETAILED DESCRIPTION OF THE INVENTION

[0076] First, it should be understood that although illustrative implementations of one or more embodiments are provided below, the disclosed systems and / or methods may be implemented using any number of techniques, whether currently known or existing. The present invention is in no way limited to the illustrative implementations, figures, and techniques described below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims and the full scope of their equivalents.

[0077] The following terms are defined as described below, unless used in the contrary context herein. Specifically, the following definitions are intended to more clearly describe the present invention. However, the terms may be described differently in different contexts. Therefore, the following definitions should be regarded as supplementary information and should not be regarded as limiting any other definitions provided herein for these terms.

[0078] A network is a group of connected nodes that communicate using a shared set of communication protocols. An IPv6 network is a network that uses the IPv6 protocol, which is a communication protocol that uses a 128-bit address mechanism to send data packets over the Internet. An ingress node is a node located at the edge of the network that provides a processing mechanism to support the entry of corresponding data packets into the network. An intermediate node is a node in the network that forwards data packets according to a predetermined protocol. A data packet is a data unit whose size is suitable for routing / switching by a node and is organized according to a predetermined format. SR is a routing protocol that encapsulates data packets with labels (e.g., label stacks) or segment identifiers (SID), and these SIDs describe the segment path through the network. A segment list is an ordered description of the segments corresponding to a path. An upstream segment list is the segment list included in the data packet received from an upstream node. A downstream segment list is the segment list included in the data packet prepared for downstream transmission. A P2MP path is a path that advances from a single source to multiple destinations. A downstream interface is the port through which a node communicates with a link in the downstream direction relative to the corresponding communication. An upstream interface is the port through which a node communicates with a link in the upstream direction relative to the corresponding communication. A copy of a data packet is a new data packet that is a reproduction of the original data packet, where the new data packet includes a payload that is substantially similar (e.g., identical) to the original data packet and potentially different routing data.

[0079] A tree is a network structure in which a single root and multiple leaves are connected by multiple branches. A subtree is a part of a tree that includes fewer elements than all the elements in the tree. A state is memory information used to process data. Stateless is a description of a system that processes data without using memory information. The next hop is the subsequent node in a path. The destination address is information that identifies the node and / or link to which a data packet is sent. A multicast SID is an identifier that uniquely identifies a link and / or node as a segment in multicast communication. A multicast block prefix is the beginning part of an address that indicates the address is associated with multicast communication. A node identifier is information that indicates the corresponding node. An argument is a parameter that provides supplementary data for use by a routing protocol. A multicast adjacency SID locator is an identifier used to indicate a link as a segment in multicast communication. A link number is data that identifies the interface of a node and / or the link connected to that interface. The number of branches is data that indicates how many branches of a tree / subtree extend downstream from the corresponding multicast node. The number of SIDs is data that indicates how many multicast nodes / interfaces are included in the subtree rooted at the corresponding node.

[0080] SR is a routing protocol that supports routing without maintaining state in the network. Specifically, SR uses a segment list to describe a path. In point-to-point (P2P) routing, the segment list is implemented as a stack of labels or SIDs that describe the segments of a path. A data packet is encapsulated with the segment list. Each node in the path can pop the top label from the data packet and forward the data packet according to the next label in the stack. In this way, the only node that maintains state is the ingress node. Intermediate nodes and egress nodes forward data packets based on the label stack, so the SR protocol is stateless in the core network. SR is applicable to P2P paths but does not support P2MP paths. For example, a routing protocol that supports P2MP paths is stateful and thus does not integrate with the stateless method used in SR. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.

[0081] This disclosure presents a Segment Routing (SR)-based mechanism for creating and maintaining point-to-multipoint (P2MP) paths in a stateless manner over an IPv6 network. An ingress node can create a segment list that describes the P2MP path through the network. The segment list includes multicast SIDs of the nodes in the P2MP path. The multicast SID can identify a node and / or can identify a link / interface of the node, depending on the example. The multicast SID includes a number-of-branches field and a number-of-SIDs field. The number of branches indicates the number of segments of the P2MP path extending downstream from the corresponding node. The number of SIDs indicates the number of multicast nodes included in the P2MP path downstream of the corresponding node. This information can be pushed by the ingress node onto the packet through encapsulation. Then, the packet can be sent downstream to be replicated and / or routed along the P2MP path as shown. For example, each current node (e.g., the ingress node and intermediate nodes) can replicate the packet the number of times equal to the number of branches indicated by the number-of-branches of the multicast SID indicated for the current node. Then, before forwarding the packet, the current node can encapsulate each packet with a segment list that describes the subtree of the P2MP path along the corresponding branch downstream of the current node. The multicast SID and related parameters of the next-hop node can be included in the destination address of the packet, and the address of the current node can be included in the source address. This enables the creation of stateless P2MP communication over an IPv6 network through SR. Thus, the described example creates additional functionality for nodes in an IPv6 core network. Further, the described example does not require maintaining state in the core network, and thus reduces the memory and processor resource occupancy of the entire core network as the number of P2MP paths scales. Therefore, the described example addresses various problems specific to network communication and increases the functionality and / or operability of network communication devices.

[0082] Figure 1 FIG. 4 is a schematic diagram of an exemplary IPv6 network 100 for implementing P2MP paths using the SR mechanism. For example, network 100 is used with the SR protocol. SR is a routing protocol that encapsulates packets with labels or SIDs that describe the segment path through network 100. The stack of SIDs that describes the path can be referred to as a segment list. The segment list can be defined as an ordered description of the segments corresponding to the path. Encapsulation can be used to append the segment list to the packet (e.g., in front of the packet) so that the packet is routed according to the segment list rather than according to the data in the packet. For example, the nodes of network 100 are used to encapsulate packets with SIDs using an encapsulation algorithm (e.g., push the SID onto the segment list of the packet), obtain the current SID from the segment list of the packet as the packet traverses network 100, and route the packet according to the SID (e.g., the current SID of the segment list). Network 100 is also used to implement P2MP paths using encapsulation and segment lists, which are described in more detail below.

[0083] Network 100 is an IPv6 network. The IPv6 network uses the IPv6 protocol for communication. The IPv6 protocol is a communication protocol used to send data packets on the Internet using a 128-bit address mechanism. Network 100 includes any number of nodes. Figure 1 Only the relevant nodes are described therein. Network 100 includes edge nodes and internal nodes. An edge node is any node that is simultaneously connected to Network 100 and an external network or node. An internal node is only connected to other nodes in Network 100.

[0084] Edge nodes are used to convert data packets from other networks into / out of Network 100, for example, by providing network security and / or conversion between the protocol used by Network 100 and an external protocol. In the context of path routing, an edge node can act as an ingress node 101 or an egress node 105. An ingress node 101 is an edge node that accepts data packets from an external source for transmission on the network. Thus, the ingress node 101 is a node located at the edge of Network 100, and the processing mechanism it provides supports the corresponding data packets entering Network 100. An egress node 105 is an edge node that accepts data packets from within Network 100 and forwards such data packets towards a destination outside Network 100. The egress node 105 can also convert data packets from the protocol used by Network 100 to an external protocol.

[0085] Network 100 also includes intermediate nodes 103. An intermediate node 103 is an internal node in Network 100 that is used to forward data packets according to a predetermined protocol. Intermediate nodes 103 are interconnected with each other, connected to ingress node 101, and / or connected to egress node 105 using links. Such links can include optical links, optoelectronic links, electrical links, and / or wireless links. Such links are connected to ingress node 101, intermediate node 103, and egress node 105 at interfaces. An interface is a port where a node connects to a link. According to an example, an address can be assigned to a node, an interface of a node, or both to support routing of data packets. An address is a locally or globally unique character set that identifies the corresponding component (e.g., a link, a node, a virtual link, a virtual node, etc.) for the purpose of exchange and / or routing.

[0086] In this example, network 100 includes a P2MP path 107, which is a path that progresses from a single origin to multiple destinations. Thus, the P2MP path 107 can be used to send a data packet flow from a single source (e.g., a point) to multiple destinations (e.g., multiple points). The P2MP path 107 progresses from the source towards the destinations. From any point along the P2MP path 107, the relative directions can be described as upstream or downstream. From the perspective of the current link and / or node, upstream is in the direction of the source. From the perspective of the current link and / or node, downstream is in the direction of the destination. Thus, each node includes an upstream interface and a downstream interface. The upstream interface is the port through which the node communicates with the link in the upstream direction with respect to the corresponding communication. The downstream interface is the port through which the node communicates with the link in the downstream direction with respect to the corresponding communication.

[0087] The P2MP path 107 enters the network 100 at the upstream interface at the ingress node 101 from the source. The ingress node 101 encapsulates the data packets in the flow with a segment list as described below and performs any other protocol conversions for transitioning the data packets into the network 100. The P2MP path 107 leaves the ingress node 101 at one or more downstream interfaces and progresses towards the upstream interfaces of the egress nodes 105 associated with the respective destinations. In some cases, the P2MP path 107 also progresses to the upstream interfaces of the intermediate nodes 103 and, through the downstream interfaces of these intermediate nodes 103, towards the egress nodes 105. The egress nodes 105 remove any remaining encapsulation and perform any other relevant protocol conversions to transfer the data packets out of the network 100 for sending towards the destinations.

[0088] According to graph theory, the P2MP path 107 can be described as a tree. A tree is a network structure in which a single root and multiple leaves are connected by multiple branches. A branch is a link that progresses downstream from a node, and the egress node 105 is a leaf. A tree includes subtrees. A subtree is a part of a tree, and a subtree includes fewer elements than all the elements in the tree. For example, a part of the P2MP path 107 that progresses downstream from a corresponding node (e.g., any node other than the ingress node 101) can be referred to as a subtree rooted at the corresponding node.

[0089] The P2MP path 107 enables the ingress node 101 and the intermediate node 103 to receive data packets on the upstream interface, duplicate the data packets as needed, and send each data packet / a copy of the data packet on the downstream interfaces branched from the node. As described above, some networks manage this functionality by storing state in the associated nodes. State is the memory information used to process data. For example, when receiving a data packet as part of the indicated flow, the intermediate node 103 may receive instructions to perform a specific duplication and forwarding process. The problem with this approach is that the addition of the P2MP path 107 results in the need to sort a large number of tables to obtain the correct duplication and forwarding instructions. As the number of P2MP paths 107 in the network 100 increases, this increases the processing resource requirements and slows down the forwarding. Further, the amount of memory in the intermediate node 103 limits the number of P2MP paths 107 that can be established at any given point in time. Therefore, the scalability of the stateful P2MP path is limited. Further, the SR protocol is designed to be stateless. Stateless is a description of a system that does not use memory information to process data.

[0090] The present invention uses a mechanism for creating a stateless P2MP path 107 through the network 100. This mechanism is consistent with the design principles of the SR protocol and supports the expansion of the number of P2MP paths 107. Therefore, the network 100 can support any large number of stateless P2MP paths 107 simultaneously. As used herein, these mechanisms are stateless because they do not require maintaining state in any intermediate node 103 or egress node 105. The ingress node 101 may still maintain the state data of any P2MP path 107 rooted at the ingress node 101.

[0091] Stateless forwarding is performed along the P2MP path 107 using a segment list formatted to describe a multicast tree. In some examples, the segment list uses multicast SIDs that indicate each node in the P2MP path 107. In other examples, the segment list uses multicast SIDs that indicate each link in the P2MP path 107. The segment list also includes additional arguments that help nodes interpret the information in the segment list. For each data packet in the flow, the ingress node 101 duplicates the data packet as needed and encapsulates the data packet with an attached segment list. The data packet is forwarded to the intermediate node 103, which duplicates each received data packet when indicated by the segment list, updates the segment list according to predefined rules, and forwards the data packets according to the updated segment list. For example, the intermediate node 103 may receive a data packet from the upstream direction that includes an upstream segment list. The intermediate node 103 may duplicate the data packet indicated by the upstream segment list and create one or more downstream segment lists based on the upstream segment list. The intermediate node 103 may then attach the appropriate downstream segment list to each data packet and forward the data packets downstream according to the downstream segment list. The upstream segment list is the segment list included in the data packet received from the upstream node. The downstream segment list is the segment list included in the data packet prepared for downstream transmission. The egress node 105 that receives the data packet may remove the segment list along with the encapsulation and forward the data packet towards the final destination.

[0092] The following example is used to illustrate the process of using a segment list to encode the P2MP path 107. In this example, the ingress node 101 has the address of provider edge (PE) 8. The egress node 105 has the addresses of PE1, PE2, PE3, PE4, and PE5. The intermediate nodes 103 have the addresses of provider nodes P1, P2, P3, and P4. The interfaces of such nodes can be specifically addressed by specifying the link number of the interface connected to that link. For example, the first interface can be denoted as -1 multicast (m), the second interface can be denoted as -2m, etc. Thus, the first interface on node P1 can be denoted as P1-1m, the first interface on node PE4 can be denoted as PE4-1m, etc. In an operating system, these addresses can be replaced with locally valid and / or globally valid numerical values.

[0093] In this example, the ingress node 101 (node PE8) receives a data packet associated with the P2MP path 107. The P2MP path 107 has two branches from PE8, so PE2 duplicates the data packet. A data packet is encapsulated with a segment list that describes the subtree rooted at PE8 that extends to PE5. In this example, the subtree extending from PE8 to PE5 is a single link. In some examples, such a segment list includes the multicast SID of PE5. However, since there is a single link / path without branches between the ingress node 101 (PE8) and the egress node (PE5), according to the general SR protocol, such a segment list can optionally be formatted as an SID that describes the path from PE8 to PE5. For example, the multicast SID indicating PE5 and / or PE5-1m can be set as the destination address of the data packet. The segment list can be empty or omitted. Then, the data packet can be sent to PE5 for decapsulation and forwarding towards the destination.

[0094] Another data packet is encapsulated with a segment list that describes the subtree rooted at PE8 that extends towards PE1-PE4. For example, the segment list can include the multicast SIDs of the links / nodes in the subtree and the arguments for each multicast SID. These arguments can include the number of branches of the P2MP path 107 extending from the node indicated by the multicast SID. These arguments can also include the number of multicast SIDs downstream of the node / link associated with the multicast SID. In one example, the multicast SID of the next-hop node along the corresponding branch (in this case P1 and / or P1-1m) is set as the destination address of the data packet expected to leave PE8 for P1. The multicast SIDs of the remaining nodes in the subtree are included in the segment list, in this case P2, P3, PE1, PE2, P4, PE3, and PE4 (or P2-1m, P3-1m, PE1-1m, PE2-1m, P4-1m, PE3-1m, and PE4-1m if interface addresses are used). Then, the data packet is forwarded from PE8 to P1.

[0095] The data packet is received at P1 and includes a list of segments received from an upstream node. For clarity of discussion, it is referred to herein as the upstream segment list. Thus, the upstream segment list is the list of segments included in the data packet received from the upstream node. The intermediate node 103, denoted as P1, creates one or more downstream segment lists for the data packet based on the upstream destination address and the upstream segment list, and forwards the data packet according to the downstream segment list. The downstream segment list is the list of segments included in the data packet prepared for downstream transmission. In this example, the upstream destination address includes an argument indicating that the P2MP path 107 includes two branches downstream of P1. Therefore, the data packet is replicated to create two copies of the data packet, thereby generating one data packet for each branch. Then, P1 obtains the first two multicast SIDs from the segment list according to the number of branches in the upstream destination address. Specifically, P1 obtains the first multicast SID (in this case P2 or P2-1m) from the segment list and uses this value as the downstream destination address of the data packet sent from P1 to P2. P1 obtains the second multicast SID (in this case P3 or P3-1m) from the segment list and uses this value as the downstream destination address of the data packet sent from P1 to P3. Since there are only two branches at P1 indicated by the upstream destination address, P1 determines that the remaining multicast SIDs in the segment list are part of other subtrees associated with P2 and P3. For example, P1 can determine that there are two multicast SIDs downstream of P2 and three multicast SIDs downstream of P3 according to the argument of the number of SIDs in the multicast SIDs of P2 and P3 respectively. Therefore, the first two multicast SIDs after the downstream destination address (e.g., PE1 / PE1-1m and PE2 / PE2-1m) are included in the downstream segment list attached to the data packet advancing from P1 to P2. P3 is associated with three downstream multicast SIDs, so the next three multicast SIDs in the upstream segment list (e.g., P4 / P4-1m, PE3 / PE3-1m, and PE4 / PE4-1m) are included in the downstream segment list attached to the data packet advancing from P1 to P3.

[0096] In this way, at each current hop, the segment list is rewritten to include only the multicast SIDs of the nodes / links downstream of the current hop through the corresponding downstream branch of the P2MP path 107. In some examples, the upstream segment list is deleted before the packet is replicated, and then the downstream segment list is generated based on the upstream list and pushed onto the corresponding packet. In other examples, the packet is replicated while including the upstream segment list. Then, the upstream segment list in each packet is replaced with the corresponding downstream segment list. A complete exemplary encoding of the segment list and the corresponding description are included in detail below. Once the packet is received at the egress node 105 of the P2MP path 107, these packets may include an empty segment list. Further, the destination address of these packets may indicate zero branches extending from the corresponding node and zero multicast SIDs extending downstream from the corresponding node. Using this information, the egress node 105 can determine that the packet should be translated out of the network 100. The egress node 105 may de-encapsulate the packet to remove the segment list and forward the packet towards the final destination based on the data included in the de-encapsulated packet.

[0097] Using the mechanism described above, packets can be forwarded along the P2MP path 107 without using state at the intermediate node 103 or the egress node 105. Thus, the disclosed mechanism supports creating the P2MP path 107 in a manner that is both scalable and consistent with the SR protocol.

[0098] Figure 2 is a schematic diagram of an example network node 200 (e.g., a node in network 100) for operating in an IPv6 network. For example, the network node 200 may be used to implement the ingress node 101, the intermediate node 103, and / or the egress node 105. Thus, the network node 200 is suitable for implementing the disclosed examples / embodiments described herein. The network device 200 includes a downstream port 220, an upstream port 250, and / or a transceiver unit (Tx / Rx) 210. The transceiver unit 210 includes a transmitter and / or a receiver for data communication upstream and / or downstream over the network. It should be noted that the Tx / Rx 210 may be implemented as a receiver, a receiver circuit, a transmitter, a transmitter circuit, or a combination thereof. The network device 200 further includes a processor 230 and a memory 232. The processor 230 includes a logic unit and / or a central processing unit (CPU) to process data. The memory 232 is used to store data. The network device 200 may further include an optical-to-electrical (OE) component, an electrical-to-optical (EO) component, and / or a wireless communication component coupled to the upstream port 250 and / or the downstream port 220 for data communication over an electrical communication network, an optical communication network, and / or a wireless communication network.

[0099] The processor 230 is implemented by hardware and software. The processor 230 can be implemented as one or more CPU chips, cores (e.g., multi-core processors), field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 230 communicates with the downstream port 220, Tx / Rx 210, upstream port 250, and the memory 232. The processor 230 includes a P2MP module 214. The P2MP module 214 implements the disclosed embodiments described herein. Specifically, the P2MP module 214 can maintain an SR P2MP path in an IPv6 network by using a corresponding segment list including a multicast SID, a multicast adjacency SID locator, and / or corresponding subtree information. For example, the P2MP module 214 can receive a data packet, read the segment list from the data packet, duplicate the data packet, push the segment list onto the data packet describing the downstream subtree, and / or forward these data packets for transmission through the IPv6 network. Thus, the P2MP module 214 can be used to execute the mechanism for solving one or more of the above problems. Therefore, the P2MP module 214 improves the function of the network node 200 and solves the problems specific to network communication technologies. Further, the P2MP module 214 implements the transition of the network node 200 to different states. Alternatively, the P2MP module 214 can be implemented as instructions stored in the memory 232 and executed by the processor 230 (e.g., a computer program product stored in a non-transitory medium).

[0100] The memory 232 includes one or more memory types, such as disks, tape drives, solid state drives, read only memory (ROM), random access memory (RAM), flash memory, ternary content-addressable memory (TCAM), static random-access memory (SRAM), etc. The memory 232 can be used as an overflow data storage device to store such programs when a program is selected for execution, and to store the instructions and data read during program execution.

[0101] Figure 3FIG. 0 is a schematic diagram of an exemplary encoding of a multicast SID 300 that indicates a node in a segment list that describes an SR P2MP path (e.g., P2MP path 107 in network 100) in an IPv6 network, such as network node 200. The multicast SID 300 can be globally unique within a network domain and thus can uniquely identify a node from any other node in the network domain. In one example, a network administrator can configure the multicast SID 300 for each node. In another example, a central controller can assign the multicast SID 300 to each node and send information indicating the multicast SID to each corresponding node. In either case, nodes can distribute their own multicast SID 300 across the network domain.

[0102] The multicast SID 300 includes a multicast SID block 310, a node ID 311, and an argument 313. The multicast SID 300 can be 128 bits long to support the IPv6 addressing system. The multicast SID block 310 includes a common prefix assigned for use with multicast node SIDs. For example, the multicast SID block 310 can be used to indicate that the addresses included in the multicast SID 300 are for representing P2MP paths. The multicast SID block 310 can be B bits long. The node ID 311 includes a node identifier (ID). The node ID can be globally unique within the network domain and can indicate a specific node. The node ID 311 can be N bits long, where N + B is less than 128 bits. In one example, an OSPF router ID that identifies an open shortest path first (OSPF) routing protocol node can be used as the node ID 311. In this case, the node ID 311 is 32 bits long. In another example, a unique number from 1 to n is assigned to each of the n nodes in the network domain, and this number can be used as the node ID 311. The argument 313 is a parameter for supporting additional functionality, as described in detail below. The argument 313 can be less than or equal to 128 bits minus N bits and minus B bits.

[0103] Figure 4It is a schematic diagram of an exemplary encoding of a multicast SID 400 indicating node and subtree information. The multicast SID 400 is an exemplary implementation of the multicast SID 300. Thus, the multicast SID 400 can be used to uniquely identify network nodes (such as network node 200) located along a P2MP path (e.g., P2MP path 107 in network 100) in an IPv6 network. The multicast SID 400 includes a multicast SID block 410, a node ID 411, and an argument 413, which are respectively substantially similar to the multicast SID block 310, the node ID 311, and the argument 313. For example, the multicast SID block 410 extends from bit 0 to bit B, the node ID 411 extends from bit B to bit N + B, and the argument extends from bit N + B to bit 127, resulting in a 128-bit address.

[0104] The argument 413 also includes the number of branches 414 and the number of SIDs 416. The number of branches 414 is data indicating the number of branches of the tree / subtree extending downstream from the corresponding multicast node having the address specified by the multicast SID block 410 and the node ID 411. Thus, the number of branches 414 includes the number of outgoing interfaces or branches of the multicast tree along the node associated with the multicast SID 400. Therefore, when a node receives the multicast SID 400 of the node in a packet transmitted on an SR P2MP path or tree, the multicast SID 400 includes the number of outgoing interfaces or branches of the P2MP path or tree along the node. The number of branches 414 can be considered a part of the argument 413 and can extend from bit N + B.

[0105] The number of SIDs 416 is data indicating the number of multicast nodes included in the subtree rooted at the corresponding multicast node having the address specified by the multicast SID block 410 and the node ID 411. The number of SIDs 416 can be considered a part of the argument 413 and can extend from the bit after the number of branches 414. Any bits after the number of SIDs 416 in the argument 413 can be reserved for other purposes.

[0106] Figure 5 It is a schematic diagram of an exemplary encoding of segment lists 500 and 501 describing an SR P2MP path according to nodes in an IPv6 network. Specifically, segment lists 500 and 501 describe the P2MP path 107 in network 100. Segment lists 500 and 501 use the multicast SID 300 and / or 400 to address nodes in the P2MP path 107, such as node 200.

[0107] Segment list 501 describes a subtree of the P2MP path 107 between node PE8 and node PE5, while segment list 500 describes a subtree of the P2MP path 107 between node PE8 and nodes PE1 to PE4. Each of segment lists 500 and 501 includes a multicast node SID column 510, a node ID column 511, a number of branches column 514, a number of SIDs column 516, and an argument column 513. Each entry of segment lists 500 and / or 501 includes a multicast SID, such as multicast SID 400. Thus, the multicast node SID column 510, the node ID column 511, the number of branches column 514, the number of SIDs column 516, and the argument column 513 respectively include entries in the multicast SID 400 included in segment lists 500 and / or 501, and these entries include a multicast SID block 410, a node ID 411, a number of branches 414, a number of SIDs 416, and an argument 413.

[0108] As Figure 1 shown, the P2MP path 107 includes a subtree of a single link from node PE8 to node PE5. Thus, as Figure 5 shown, the segment list 501 that describes the subtree between node PE8 and node PE5 includes a single multicast SID indicating PE5 as the destination. Specifically, the segment list 501 includes a single entry with a single multicast SID. The multicast SID includes a multicast node SID block indicating that this address is used to represent the P2MP path. The multicast SID also includes a node ID set to PE5, indicating that node PE5 is the next hop along the corresponding branch of the P2MP path 107. The multicast SID of node PE5 includes arguments that include a number of branches set to zero and a number of SIDs set to zero. This indicates that the branches of the P2MP path 107 do not extend beyond node PE5 and there are no further multicast SIDs downstream of node PE5. Either argument provides sufficient information to infer that node PE5 is the egress node 105 that terminates the corresponding branch of the P2MP path 107. Thus, there are no further multicast SIDs in the segment list 501. Therefore, the ingress node 101 can include the multicast SID of node PE5 in the destination address of the corresponding packet and remove the multicast SID of node PE5 from the segment list 501. In some examples, the corresponding packet can be sent to node PE5 with an empty segment list 501. In other examples, the ingress node 101 can omit the segment list 501 and use an SR protocol label stack instead of the segment list 501.

[0109] Segment list 500 describes a subtree of the P2MP path 107 between node PE8 and nodes PE1 to PE4. The incoming data packet is replicated using the ingress node 101 of two downstream branches (thus two segment lists 500 and 501), the segment list 500 is pushed onto one copy of the data packet, and the segment list 501 is pushed onto the other copy of the data packet. The next-hop node along the branches between node PE8 and nodes PE1 to PE4 is node P1. Thus, the first entry in segment list 500 includes the multicast SID of node P1. The multicast SID of node P1 includes the number of branches set to two, which indicates that P1 includes two downstream branches. The multicast SID of node P1 also includes the number of SIDs set to seven, which indicates that there are seven nodes downstream of node P1 (P2, P3, PE1, PE2, P4, PE3, and PE4). Thus, there are seven entries in the segment list following the multicast SID of node P1. These entries are included in a predetermined order to support downstream nodes in determining which nodes are associated with each subtree. The ingress node 101 includes these multicast SIDs in segment list 500 such that these addresses can be interpreted by downstream nodes, as discussed below. The first entry of segment list 500 can be included as the destination address of the corresponding data packet, removed from segment list 500, and the remaining segment list 500 can be pushed onto the data packet by encapsulation.

[0110] Since P1 is the destination address, the data packet is sent to node P1. The destination address includes an argument indicating that node P1 includes two downstream branches. Thus, at node P1, the data packet is replicated to create two data packets based on the destination address of the upstream data packet. The two branches of the upstream destination address indicate that the first two multicast SIDs remaining in segment list 500 are the next hops along these two branches. Thus, a first downstream segment list including the multicast SID of node P2 is created, and a second downstream segment list including the multicast SID of node P3 is created. The multicast SID of node P2 indicates that there are two multicast SIDs along the branch extending between node P1 and node P2 downstream of node P1. Thus, the first two multicast SIDs after node P3 (PE1 and PE2) are included in the segment list, and the multicast SID of node P2 is set as the destination address for the data packet sent from node P1 to node P2. Similarly, the multicast SID of node P3 indicates that there are three multicast SIDs downstream of node P3. A segment list is created for the data packet sent from node P1 to node P3. The multicast SID of node P3 is set as the destination address of such a data packet, and the three multicast SIDs following the data of the P2 branch are included in the segment list of the data packet to be sent towards node P3 (three values based on the number of SIDs in the multicast SID of node P3). Then, the data packets with two different segment lists are forwarded downstream from node P1 towards nodes P2 and P3.

[0111] When the corresponding data packet is received at node P2, according to the argument in the multicast SID of node P2, the number of branches in the destination address is determined to be two. Therefore, the data packet is replicated. The upstream segment list received by node P2 has only two entries (PE1 and PE2), and the upstream destination address indicates that there are only two branches. Therefore, node P2 can determine that the multicast SID of node PE1 and the multicast SID of node PE2 should be set as the destination addresses of the corresponding copies of the data packet. Since the multicast SID of node PE1 includes an argument indicating that the number of multicast SIDs downstream from node PE1 is zero, node P2 can include an empty segment list in the data packet allocated for sending from node P2 to node PE1. Similarly, since the multicast SID of node PE2 includes an argument indicating that the number of multicast SIDs downstream from node PE2 is zero, node P2 can include an empty segment list in the data packet allocated for sending from node P2 to node PE2. When these data packets are received at nodes PE1 and PE2, the empty segment list in the corresponding destination address and / or the number of SIDs set to zero support nodes PE1 and PE2 in determining that the corresponding data packets can be decapsulated and forwarded towards the corresponding destinations.

[0112] The data packet received by node P3 includes a destination address set to the multicast SID of node P3 and includes a segment list containing the last three entries (P4, PE3, and PE4) of segment list 500. The upstream destination address (the multicast SID of node P3) indicates that there is only one branch downstream from node P3, so the data packet is not replicated. Since there are no branches, the first multicast SID (indicating node P4) is popped from the upstream segment list and set as the downstream destination address of the data packet. This results in a downstream segment list containing the last two entries (PE3 and PE4) of segment list 500. Then, the data packet is forwarded from node P3 to node P4 according to the downstream destination address.

[0113] The data packet received by node P4 includes a destination address set to the multicast SID of node P4 and includes a segment list containing the last two entries (PE3 and PE4) of segment list 500. The multicast SID of node P4 indicates that there are two branches downstream of node P4, so the data packet is replicated. Since the number of branches is equal to the number of SIDs downstream of node P4 indicated in the upstream destination address (and since the number of remaining entries in the segment list is equal to the number of branches), node P4 can determine that nodes PE3 and PE4 are egress nodes. Therefore, node P4 can determine that nodes PE3 and PE4 should be set as the destination addresses for the respective copies of the data packet. Since the multicast SID of node PE3 includes an argument indicating that the number of multicast SIDs downstream of node PE3 is zero, node P4 can include an empty segment list (or no segment list) in the data packet allocated for sending from node P4 to node PE3. Similarly, since the multicast SID of node PE4 includes an argument indicating that the number of multicast SIDs downstream of node PE4 is zero, node P4 can include an empty segment list in the data packet allocated for sending from node P4 to node PE4. When these data packets are received at nodes PE3 and PE4, the empty segment list in the corresponding destination address and / or the number of SIDs set to zero support nodes PE3 and PE4 in determining that the corresponding data packets can be de-encapsulated and forwarded towards the respective destinations.

[0114] As discussed above, each node along the P2MP path can read segment lists 500 and / or 501 that include the multicast SID (or a portion thereof) and the multicast SID in the data packet destination address to correctly replicate the data packet from the flow and create a new segment list for use by downstream nodes to process these data packets. In this way, the data packet can be sent from a single point to multiple destinations in a stateless manner.

[0115] Figure 6 FIG. is a schematic diagram of an exemplary encoding of a multicast adjacency SID 600 that indicates a link in a segment list describing an SR P2MP path in an IPv6 network (e.g., P2MP path 107 in network 100), e.g., indicated by an interface of network node 200 connected to the link. The multicast adjacency SID 600 can be similar to the multicast SID 300, but can describe the P2MP path in terms of links rather than nodes. Therefore, the multicast adjacency SID 600 is a different implementation (e.g., different type) of the multicast SID.

[0116] A multicast link can be identified and / or addressed by the upstream and / or downstream interfaces of the nodes connected to the link. For each node in a network domain, each multicast link in the connected multicast links can be identified by an associated multicast SID, which can be implemented as a multicast adjacency SID 600. The multicast adjacency SID 600 can include address elements that are locally significant and are thus described relative to a particular node. For example, each node in a network domain can assign a multicast SID from a predetermined multicast SID block to each link in the links of the node as the multicast adjacency SID 600 of that link. Then, the node can advertise the multicast adjacency SID 600 that describes the link. In another example, a central controller and / or an administrator can assign a multicast SID from a predetermined multicast SID block to each link of each node as the multicast adjacency SID 600 of the corresponding link. Then, the controller and / or the administrator can send the multicast adjacency SID 600 that describes the link to the node and the neighbor nodes of that node. A neighbor node of the current node is any node that shares a direct link with the current node.

[0117] The multicast adjacency SID 600 includes a multicast SID adjacency locator 610, a link number 611, and an argument 613. The multicast adjacency SID 600 can be 128 bits long to conform to IPv6 addressing. The multicast SID adjacency locator 610 can be used to locate a designated node. The multicast SID adjacency locator 610 can include a common prefix assigned to all multicast adjacencies SIDs and a node-specific additional identifier. For example, the multicast SID adjacency locator 610 can be substantially similar to the combination of a multicast node SID block 310 and a node ID 311. The multicast SID adjacency locator 610 can be B bits long.

[0118] The link number 611 can be a link sequence number that identifies each link connected to a node. The link number 611 can be locally valid. For example, for all n links of a node, link sequence numbers / link numbers 1, 2,..., n can be assigned to the n links respectively. Since the link number 611 identifies the links connected to a node, the link number 611 can uniquely identify the interfaces of the node, such as being used as a specific interface (e.g., a specific downstream port 220 and / or an upstream port 250) of an upstream interface and / or a downstream interface along a P2MP path. The link number 611 can be L bits long, where B + L is less than 128 bits. The argument 613 can be substantially similar to the argument 313. The argument 613 can be less than or equal to 128 bits minus B bits and minus L bits.

[0119] Figure 7FIG. is a schematic diagram of an exemplary encoding of a multicast adjacency SID 700 indicating link and subtree information. The multicast adjacency SID 700 is an exemplary implementation of the multicast adjacency SID 600. Thus, the multicast adjacency SID 700 can be used to uniquely identify a link of a network node located along a P2MP path in an IPv6 network (e.g., P2MP path 107 in network 100), such as an interface of network node 200. The multicast adjacency SID 700 can be similar to the multicast SID 400, but can be used to identify a link rather than a node. The multicast adjacency SID 700 includes a multicast SID adjacency locator 710 and a link number 711, which can be substantially similar to the multicast SID adjacency locator 610 and the link number 611, respectively. Further, the multicast adjacency SID 700 includes an argument 713, which includes a number of branches 714 and a number of SIDs 716. The argument 713, the number of branches 714, and the number of SIDs 716 can be substantially similar to the argument 413, the number of branches 414, and the number of SIDs 416, respectively. Thus, the multicast SID adjacency locator 710 and the link number 711 can identify the multicast link as a node interface, and the number of branches 714 and the number of SIDs 716 can be used to create a downstream segment list based on the upstream segment list using the mechanism described above. An exemplary segment list using the multicast adjacency SID 700 is described below.

[0120] Figure 8 FIG. is a schematic diagram of an exemplary encoding of a segment list 800 describing an SR P2MP path according to a link in an IPv6 network. Specifically, the segment list 800 and the segment list 801 describe the P2MP path 107 in the network 100. The segment list 800 and the segment list 801 are substantially similar to the segment list 500 and the segment list 501, respectively, but the segment list 800 and 801 describe the P2MP path 107 in terms of a link (e.g., a node upstream interface) rather than a node. The segment list 800 and 801 use the multicast adjacency SID 600 and / or 700 to address link-connected nodes in the P2MP path 107, such as an upstream interface of the node 200.

[0121] Each of segment lists 800 and 801 includes a multicast SID adjacency locator column 810, a link number column 811, a number of branches column 814, a number of SIDs column 816, and an argument column 813. Each entry of segment list 800 and / or 801 includes a multicast SID, such as multicast adjacency SID 700. Thus, the multicast SID adjacency locator column 810, the link number column 811, the number of branches column 814, the number of SIDs column 816, and the argument column 813 respectively include entries in the multicast adjacency SID 700 included in segment list 800 and / or 801, and these entries include a multicast SID adjacency locator 710, a link number 711, a number of branches 714, a number of SIDs 716, and an argument 713.

[0122] Segment list 801 describes the subtree from node PE8 to node PE5, while segment list 800 describes the subtree from node PE8 to nodes PE1 - PE4. Thus, segment lists 800 and 801 include the same information as segment lists 500 and 501, but format the multicast SIDs according to the link / upstream interface rather than according to the nodes. The multicast SID adjacency locator column 810 includes information substantially the same as the combination of the multicast node SID column 510 and the node ID column 511. Further, the number of branches column 814, the number of SIDs column 816, and the argument column 813 respectively include information substantially the same as the number of branches column 514, the number of SIDs column 516, and the argument column 513. In addition, segment lists 800 and 801 also include a link number column 811. The link number column 811 indicates the upstream interface / link corresponding to the node described by the corresponding entry in the multicast SID adjacency locator column 810.

[0123] Thus, segment lists 800 and / or 801 describe an exemplary implementation of encoding a P2MP path (such as P2MP path 107) using link addresses in addition to using node addresses. Thus, each node along the P2MP path can read segment lists 800 and / or 801 that include a multicast SID (or a part thereof) indicating a link address and a multicast SID indicating the link address in the packet destination address, to correctly copy packets from the stream and create a new segment list for downstream nodes to process these packets. In this way, packets can be sent from a single point to multiple destinations in a stateless manner using link addresses.

[0124] The following describes exemplary implementations of embodiments. Segment Routing (SR) for unicast or point-to-point (P2P) paths uses a segment list to describe the segments in the path. SR multicast or P2MP paths / trees can be implemented using multiple SR P2P paths. The function of an SR P2MP path / tree from an ingress node to multiple (e.g., any number n) egress / leaf nodes is implemented by n SR P2P paths. These n P2P paths are from the ingress of the P2MP path / tree to these n egress / leaf nodes. This solution may waste some network resources such as link bandwidth.

[0125] An alternative uses multiple P2MP chain tunnels to implement a P2MP path / tree from an ingress to n egress / leaf nodes. Each P2MP chain tunnel is a tunnel from the ingress to a leaf node as the tunnel tail end. Some leaf nodes can be designated as sprout nodes along the tunnel. Compared with the above solution using pure P2P paths, this alternative improves the utilization rate of network resources. However, both of these solutions are based on SR P2P paths. An SR P2MP path / tree can also use a P2MP multicast tree. For an SR P2MP path / tree from an ingress / root to multiple egress / leaf nodes, a multicast P2MP tree can be created to deliver traffic from the ingress / root to the egress / leaf nodes. The state of the tree can be instantiated in the forwarding plane by controllers such as path computation elements (PCEs) on the root node, intermediate replication nodes, and leaf nodes of the tree. This method is inconsistent with the SR principle, in which the network core does not store state. This exemplary implementation provides a solution for an SR IPv6 (SRv6) P2MP path / tree to deliver traffic from the ingress of the path to multiple egress / leaf nodes of the path in the SR domain. This solution uses a P2MP multicast tree without storing the path state of the SR P2MP path / tree in the network core.

[0126] The following describes an overview of a P2MP multicast tree. For an SR P2P path from an ingress to an egress, the segment list of the path is provided to the ingress. The ingress pushes the list into the packet, and the packet is delivered to the egress according to the segment list without any state in the network core. For an SR P2MP path from an ingress to multiple egress / leaf nodes, the segment list of the P2MP path is provided to the ingress. The ingress pushes the list into the packet, and the packet is delivered to multiple egress / leaf nodes according to the segment list without any state in the network core. Figure 1An exemplary SR P2MP path from the ingress / root PE8 to four egress / leaf node PEs, PE1, PE2, PE3, and PE4 is shown. Nodes P1, P2, P3, and P4 are intermediate nodes of the P2MP path. Assume that X-m is the SID of node X. X-m can be an adjacency SID or a node SID. For simplicity, X-m is the node SID in the following discussion. PE8-m, P1-m, P2-m, P3-m, P4-m, PE1-m, PE2-m, PE3-m, and PE4-m are the SIDs of the nodes on the SR P2MP path. They are typically multicast SIDs or replication SIDs.

[0127] A multicast SID is the SID of a multicast SID block. In an SR domain that supports SR multicast, each node has a multicast node SID that has global significance. Each adjacency of a node has a multicast adjacency SID that has local significance. The multicast SID of a node on an SR P2MP path is associated with the SIDs of the next-hop / downstream nodes. When a node receives a packet with the multicast SID of that node, the node replicates the packet according to its SID and sends the packet to each next-hop node. If node P on an SR P2MP path has B (B > 1) next-hop nodes along the path, then the SID of node P (i.e., P-m) is a multicast SID when P-m is in the segment list of the P2MP path. The SIDs of the B next-hop nodes are only after P-m in the segment list. When node P receives a packet with P-m, node P replicates the packet and sends the packet to each of the B next-hop nodes along the P2MP path.

[0128] Figure 1 The segment list of the SR P2MP path is pushed onto the packet at the ingress / root node PE8. Such a segment list can be as follows: <P1-m, P2-m, P3-m, PE1-m, PE2-m, P4-m, PE3-m, PE4-m>. Node P1 has two next-hop nodes, P2 and P3, along the P2MP path. The SIDs of the next-hop nodes, P2-m and P3-m, are after P1-m, and P1-m is the multicast SID of P1. When P1 receives a packet transmitted through the P2MP path, P1 replicates the packet and sends the packet to the next-hop nodes P2 and P3 according to P1-m, P2-m, and P3-m. The number of branches or next-hops of node P1 is the value of an argument called N-Branches in P1-m. The N-Branches value of the multicast SID P1-m is 2. Using this information, node P1 replicates the packet and sends the packet to the two next-hop nodes P2 and P3, which are indicated by the two SIDs, P2-m and P3-m, after P1-m.

[0129] The number of SIDs of the nodes below node P1 is the value of another independent variable of the multicast SIDs called N-SIDs. The value of N-SIDs in P1-m is 7, indicating that there are 7 SIDs after P1-m in the segment list. There are two branches or next hops (PE1 and PE2) of node P2 and two SIDs (PE1-m and PE2-m) of the nodes below node P2. The values of N-Branches and N-SIDs in P2-m are 2 and 2. Using this information, before sending the data packet to node P2, node P1 pushes the SIDs below node P2 onto the data packet. The data packet has a new segment list that has the SIDs below node P2. The new segment list will replace the old segment list in the data packet. There is one branch or next hop (P4) of node P3 and three SIDs (i.e., P4-m, PE3-m, and PE4-m) of the nodes below node P3. The values of N-Branches and N-SIDs in P3-m are 1 and 3 respectively. Using this information, before sending the data packet to node P3, node P1 pushes the SIDs below node P3 onto the data packet. Each node on the SR P2MP path sends the data packet to the next-hop node according to the segment list, and no intermediate node stores the state, so the network core does not store the state either. The data packet is delivered from the ingress to the egress / leaf node.

[0130] The encoding of the P2MP multicast tree is described below. For each subtree STi of the SR P2MP path from the ingress node of the P2MP path, assume that the multicast SID of the next-hop node NHi is mSIDi. Further, along the subtree, there are Bi branches (outgoing interfaces) from node NHi to the next-hop nodes BNHj (j = 1... Bi), and the multicast SID of BNHj is mSIDij. In addition, the number of branches (outgoing interfaces) below node BNHj (j = 1... Bi) is BBj. In addition, the number of SIDs of the nodes below each of the Bi branches of node BNHj is NSj (j = 1... Bi). The subtree STi is encoded as a segment list as follows:

[0131] <mSIDi,mSIDi1,...,mSIDiBi,SegSeq1,...,SegSeqBi>,

[0132] Among them, mSIDi is the SID of NHi, mSIDi1 to mSIDiBi are the SIDs of the Bi branches / next hops BNHj of the node NHi, SegSeq1 is the sequence of SIDs of the subtree of BNH1, and SegSeqBi is the sequence of SIDs of the subtree of BNHBi. Specifically, mSIDi includes the number of branches Bi in the N-Branches field and the number of SIDs below mSIDi in the N-SIDs field. mSIDij (j = 1... Bi) includes the number of branches BBj in the N-Branches field and the number of SIDs NSj in the N-SIDs field. SegSeqj (j = 1... Bi) is the SID sequence in the segment list encoding the subtree of the node BNHj.

[0133] For Figure 1 the P2MP path from the ingress node PE8 to the egress nodes PE1, PE2, PE3, and PE4 in, there is a subtree from PE8. For this subtree, the next-hop node is P1, and the multicast SID of P1 is P1-m. There are two branches from node P1 along the subtree to the next-hop nodes P2 and P3. The number of SIDs of the nodes below P1 is 7. The multicast SIDs of P2 and P3 are P2-m and P3-m respectively. The number of SIDs of the nodes below these two branches is 2 and 3 respectively. The SIDs of the nodes below P2 are PE1-m and PE2-m. The SIDs of the nodes below P3 are P4-m, PE3-m, and PE4-m. The subtree is encoded as a segment list as shown below:

[0134] <P1-m, P2-m, P3-m, PE1-m, PE2-m, P4-m, PE3-m, PE4-m>,

[0135] Among them, P1-m is the SID of P1, P2-m and P3-m are the SIDs of the two branches / next hops P2 and P3 of the node P1 respectively, PE1-m and PE2-m are the SID sequences of the subtree of P2, and P4-m, PE3-m, PE4-m are the SID sequences of the subtree of P3. Specifically, the N-Branches field of P1-m is set to 2, and the N-SIDs field is set to 7. The N-Branches field of P2-m is set to 2, and the N-SIDs field is set to 2. The N-Branches field of P3-m is set to 1, and the N-SIDs field is set to 3. PE1-m and PE2-m are the SID sequences in the segment list encoding the subtree of P2. P4-m, PE3-m, and PE4-m are the SID sequences in the segment list encoding the subtree of P3. The N-Branches field of P4-m is set to 2, and the N-SIDs field is set to 2. Figure 5An example of a detailed segment list is shown, which is the encoding of the P2MP multicast tree of the SR P2MP path from PE8 to PE1, PE2, PE3, and PE4. SID P1-m indicates that there are two branches and seven SIDs under P1. SID P2-m indicates that there are two branches and two SIDs under P2. SID P3-m indicates that there is one branch and three SIDs under P3. SID PE1-m and PE2-m indicate that there are no branches under them. SID P4-m indicates that there are two branches and two SIDs under P4. PE3-m and PE4-m indicate that there are no branches under them.

[0136] The processes and / or behaviors on the ingress node, intermediate nodes, and egress / leaf nodes of the SR P2MP path are described as follows. Such processes / behaviors support delivering the packets received from the path to the destinations of the packets.

[0137] The process / behavior on the ingress node can be described as follows. For a packet to be transmitted through the SR P2MP path, the ingress of the P2MP path copies the packet for each subtree of the SR P2MP path from the ingress branch, pushes the segment list of the encoded subtree onto the packet by executing an encapsulation algorithm, and sends the packet along the subtree to the next-hop node. For example, from Figure 1 the ingress PE8 of the SR P2MP path in

[0138] has a subtree towards the egress / leaf nodes PE1, PE2, PE3, and PE4 passing through the next-hop node P1. Figure 5 For this subtree, the ingress PE8 copies the packet, sets the destination address (DA) to P1-m (the multicast SID of node P1), and by executing the encapsulation algorithm, pushes the segment list without P1-m of the encoded subtree (<P2-m, P3-m, PE1-m, PE2-m, P4-m, PE3-m, PE4-m>) into the segment routing header (SRH) of the packet, and sends the packet to DA (node P1). The contents of the multicast SIDs P1-m, P2-m, P3-m, PE1-m, PE2-m, P4-m, PE3-m, PE4-m are as

[0139] Pkt' = (SA = PE8, DA = P1-m)(PE4-m, PE3-m,..., P3-m, P2-m; SL = 7)Pkt0

[0140] Among them, DA = P1 - m indicates that the destination address is set to P1 - m, and SA = PE8 indicates that the source address (SA) is set to PE8; SL = 7 indicates that the number of segments left (SL) is 7, and the remaining data is the segment list of the P2MP path.

[0141] The process / behavior of the intermediate node can be described as follows. When the intermediate node of the SR P2MP path receives the data packet transmitted by this P2MP path, the DA of this data packet is the multicast SID of this node, and this data packet includes the segment list of the subtree below this intermediate node. DA and the segment list include information for encoding the subtree. For example, when node P1 receives Figure 1 the data packet transmitted by the SR P2MP path in the middle, the DA of this data packet is P1 - m (the multicast SID of node P1), and the segment list in the data packet is <P2 - m, P3 - m, PE1 - m, PE2 - m, P4 - m, PE3 - m, PE4 - m>. The N - Branches field (value is n) of DA indicates that there are n branches / subtrees below the intermediate node. The N - SIDs field of DA indicates the number of SIDs of these n subtrees below the intermediate node. The multicast SIDs of the next - hop nodes of these n subtrees are the first n multicast SIDs in the segment list of the data packet. For example, the N - Branches field (value is 2) of DA = P1 - m indicates that there are two branches / subtrees below node P1. The N - SIDs field (value is 7) of DA = P1 - m indicates that these two subtrees below node P1 have 7 SIDs. The first multicast SID (P2 - m) in the segment list is the SID of the next - hop node (P2) of the first subtree. The second multicast SID (P3 - m) in the segment list is the SID of the next - hop node (P3) of the second subtree.

[0142] After the multicast SIDs of the next - hop nodes, these n subtrees have n SID blocks. The N - SIDs field (value is B1) of the first multicast SID of the next - hop node indicates that there are B1 SIDs in the first block of the first subtree. The N - SIDs field (value is B2) of the second multicast SID of the next - hop node indicates that there are B2 SIDs in the second block of the second subtree after the first block, and so on. For example, after the multicast SIDs P2 - m and P3 - m of the next - hop nodes P2 and P3, the two subtrees below node P1 have two SID blocks. The value of the N - SIDs field of P2 - m (the first multicast SID of the next - hop node) is 2, indicating that there are two SIDs in the first block of the first subtree, that is, PE1 - m and PE2 - m. The value of the N - SIDs field of P3 - m (the second multicast SID of the next - hop node) is 3, indicating that there are three SIDs in the second block of the second subtree after the first block, that is, P4 - m, PE3 - m, and PE4 - m.

[0143] The intermediate node copies the packet without the top header for each subtree below the intermediate node, and adds a new header with a new segment list built from the SID blocks of the subtree to the copied packet by performing the encapsulation algorithm. The intermediate node sets the DA of the packet to the multicast SID of the next-hop node along the subtree, and sends the packet to the DA. For example, node P1 copies the packet for the first subtree towards PE1 and PE2, and adds a new header with the new segment list <PE1-m, PE2-m>. The intermediate node sets DA = P2-m (the multicast SID of the next-hop P2), and sends the packet to DA (P2).

[0144] Assume that the copied packet of the subtree is Pkt0. The execution of the encapsulation pushes a new IPv6 header (SRH) onto Pkt0 and sets some fields in the header to generate the encapsulated packet Pkt'. Pkt' is represented as follows:

[0145] Pkt' = (SA = P1, DA = P2-m)(PE2-m, PE1-m; SL = 2)Pkt0,

[0146] where DA = P2-m indicates that the destination address is set to P2-m, SA = P1 indicates that the source address is set to P1, SL = 2 indicates that the number of remaining segments is 2, and the rest of the data describes the segment list of the first subtree rooted at the intermediate node.

[0147] Node P1 also copies the packet for the second subtree towards PE3 and PE4 via P3, and adds a new header with the new segment list <P4-m, PE3-m, PE4-m>. Node P1 also sets DA = P3-m (the multicast SID of the next-hop P3), and sends the packet to DA (P3).

[0148] The process / behavior of the egress node is as follows. When the egress node of the SR P2MP path receives a packet transmitted through the P2MP path, the DA of the packet is the SID of the egress node. The egress node accordingly sends the packet to the destination. If the SID is the multicast SID of the egress, both the N-Branches field and the N-SIDs field are zero.

[0149] The protection is described as follows. The protection of the SR P2MP path is divided into two types: global protection and local protection. The description of global protection is as follows. For the primary SR P2MP path from the ingress node R1 to multiple egress nodes Li (i = 1... n), a backup SR P2MP path from the ingress node R1' to multiple egress nodes Li' (i = 1... n) can be established to provide global protection for the primary SR P2MP path. If R1' is the same as R1, the failure of the ingress node R1 of the primary SR P2MP path is not protected. Otherwise (R1' and R1 are different and connected to the same traffic source), the failure of the ingress node R1 is protected. If Li' is the same as Li (i = 1... n), the failure of the egress node Li (i = 1... n) of the primary SR P2MP path is not protected. Otherwise (Li' and Li are different and connected to the same destination), the failure of the egress node Li is protected. When the primary SR P2MP path fails and is detected by the traffic source or other entities, the traffic to be transmitted by the primary SR P2MP path is switched to the backup SR P2MP path, and the backup SR P2MP path sends the traffic from the ingress node R1' to the egress nodes Li' (i = 1... n).

[0150] The description of local protection is as follows. Local protection can be applied to the nodes and adjacent segments on the SR P2P path, such as fast reroute (FRR). For example, these mechanisms can be applied to the FRR of the nodes and adjacent segments on the SR P2MP path in a similar way. However, the FRR of the SR P2MP path is more complex.

[0151] Figure 9 It is a flowchart of an exemplary method 900 in which, at the edge of an IPv6 network (such as network 100), an ingress node (such as ingress node 101 and / or network node 200) sends data packets to an SR P2MP path (such as P2MP path 107). For example, the ingress node can generate a segment list to describe the P2MP path and encapsulate the data packets from the flow with the segment list to ensure that the data packets are forwarded along the P2MP path. In one example, the ingress node can use a multicast SID indicating a node. In this case, the ingress node can use a segment list including multicast SID 300 and / or 400, such as segment list 500 and / or 501. In another example, the ingress node can use a multicast SID indicating a link. In this case, the ingress node can use a segment list including multicast adjacent SID 600 and / or 700, such as segment list 800 and / or 801. It should be noted that the term multicast SID can apply to the multicast SID indicating a node, the multicast adjacent SID indicating a link, or a combination thereof.

[0152] Before method 900, a P2MP path from a source to multiple destinations is calculated through an ingress node and through the network. The P2MP path can be calculated by a controller (e.g., a path computation unit) and / or by the ingress node. Then, the ingress node generates and / or stores a list of one or more segments (e.g., in a forwarding table) that describe the P2MP path and associates these lists of segments with a data packet flow. In step 901, ingress node 901 receives a data packet associated with the flow. This association can be determined based on the data packet source address and / or other information in the data packet header.

[0153] The ingress node determines to send the data packet along the P2MP path. In step 903, when the P2MP path includes two or more branches downstream of the ingress node, the ingress node may duplicate the data packet to generate a copy of the data packet. For example, when the data packet is associated with multiple lists of segments and / or entries stored in the forwarding table, the ingress node may duplicate the data packet.

[0154] In step 905, the ingress node pushes the list of segments onto the data packet by using an encapsulation mechanism. For example, when the data packet is duplicated in step 903, the list of segments is the first list of segments and is pushed onto the received data packet, which for clarity of discussion may also be referred to as the first data packet. The list of segments describes the SR-based P2MP path or a portion thereof through the network. For example, when a single downstream branch of the P2MP path proceeds from the ingress node, the list of segments describes the entire P2MP path. When multiple downstream branches of the P2MP path proceed from the ingress node (e.g., in step 903, the data packet has been duplicated), the list of segments describes a subtree of the P2MP path that proceeds from the ingress node along the corresponding branches.

[0155] Specifically, the segment list includes multicast SIDs for each node or each link in the corresponding tree / subtree of the SR P2MP path, depending on the example. For example, each multicast SID can include a multicast block prefix, a node identifier, and an argument. When the multicast SID refers to a node, the multicast SID block prefix, node identifier, and argument can be implemented as a multicast node SID block, node ID, and argument according to multicast SID 300 and / or 400. In another example, each multicast SID can include a multicast adjacency SID locator, a link number, and an argument. When the multicast SID refers to a link, the multicast adjacency SID locator, node identifier, and argument can be implemented as a multicast adjacency SID locator, link number, and argument according to multicast adjacency SID 600 and / or 700. In either case, the argument of each multicast SID can include the number of branches of the subtree associated with the corresponding node. This indicates the number of downstream branches of the P2MP path that extend directly from the downstream interface of the node specified by the multicast SID. Further, the argument of each multicast SID can also include the number of SIDs included in the subtree downstream of the corresponding node. This indicates the number of multicast nodes in the P2MP path that are downstream of the node specified by the multicast SID. By using these arguments corresponding to the mechanisms described above, the segment list describes the SR P2MP path in a way that supports the stateless implementation of the SR P2MP path on the network.

[0156] In some examples, pushing the segment list onto the packet in step 905 can include removing the first multicast SID from the corresponding segment list. The first multicast SID in the segment list represents the next-hop link / node that is directly connected to the current node (e.g., the ingress node) through the downstream interface associated with the corresponding branch of the P2MP path. The first multicast SID indicating the next hop along the tree / subtree of the SR P2MP path in the segment list is set as the destination address of the packet.

[0157] In step 907, when the data packet is copied in step 903, the ingress node pushes the second segment list onto the copy of the data packet. When the data packet is copied in step 903, two or more branches of the P2MP path proceed directly from the ingress node. Thus, the second segment list describes the second subtree of the P2MP path that proceeds from the ingress node along the corresponding branch (e.g., the second branch). Therefore, the first segment list pushed onto the data packet and the second segment list pushed onto the copy of the data packet describe different subtrees of the SR P2MP path. The second segment list may include substantially the same information as the first segment list (e.g., multicast SID 300 / 400 and / or multicast adjacency SID 600 / 700), but describes a different subtree of the P2MP path. Further, pushing the second segment list into the copy of the data packet may include deleting the first multicast SID from the second segment list. This multicast SID represents the next-hop link / node that is directly connected to the current node (e.g., the ingress node) via a second downstream interface associated with the corresponding branch of the P2MP path. The first multicast SID indicating the next hop of the subtree along the SR P2MP path in the second segment list is set as the destination address of the copy of the data packet.

[0158] In step 909, the ingress node sends the data packet on the first downstream interface along the SR P2MP path, e.g., via the relevant branch associated with the first segment list. In step 911, the ingress node sends the copy of the data packet on the second downstream interface along the SR P2MP path, e.g., via the relevant branch associated with the second segment list. Since the first interface and the second interface are connected to different subtrees of the P2MP path, the copy of the data packet is sent via a downstream interface different from that of the data packet (e.g., the first interface and the second interface are different interfaces).

[0159] Figure 10It is a flowchart of an example method 1000 for an intermediate node (such as intermediate node 103) and / or network node 200 in an IPv6 network (such as network 100) to forward data packets along an SR P2MP path (such as P2MP path 107). For example, an intermediate node may receive a data packet including an upstream segment list and an upstream destination address indicating the intermediate node. Then, the intermediate node may optionally duplicate the data packet, create one or more downstream segment lists and / or downstream destination addresses, and include these downstream segment lists and / or downstream destination addresses in the corresponding data packets for transmission along the P2MP path. In one example, the intermediate node may use a multicast SID indicating the node, in which case the intermediate node may use a segment list including multicast SID 300 and / or 400, such as segment list 500 and / or 501. In another example, the intermediate node may use a multicast SID indicating the link, in which case the intermediate node may use a segment list including multicast adjacency SID 600 and / or 700, such as segment list 800 and / or 801. It should be noted that the term multicast SID may apply to a multicast SID indicating the node, a multicast adjacency SID indicating the link, or a combination thereof.

[0160] The intermediate node is located in a network (such as an IPv6 network) and is positioned along an SR-based P2MP path. However, the intermediate node does not store the state of the SR P2MP path. Therefore, the intermediate node may not know the SR P2MP path. Therefore, the intermediate node forwards data packets along the P2MP path according to the segment list and / or multicast SID included in the data packet. Therefore, in step 1001, the intermediate node receives a data packet including an upstream segment list describing one or more subtrees of the SR P2MP path. The data packet may also include an upstream destination address, which includes a multicast SID indicating the intermediate node. The term upstream is used for clear discussion and indicates that this information is received in a data packet from the upstream direction.

[0161] In step 1003, the intermediate node determines a downstream segment list according to the upstream segment list and / or upstream destination address. The downstream segment list describes the subtree of the downstream interface of the intermediate node included in the SR P2MP path. According to the data in the upstream segment list and / or upstream destination address, the intermediate node may also determine a second downstream segment list describing the second subtree of the second downstream interface included in the SR P2MP path. Additional downstream segment lists may also be created as indicated by the upstream segment list and / or upstream destination address. For example, determining the second downstream segment list may include: generating a second downstream list according to the number of branches indicated in the destination address and the number of SIDs of each next-hop node to include only the multicast SIDs associated with the second subtree of the second downstream interface.

[0162] For example, the received data packet includes an upstream destination address that identifies an intermediate node. The upstream destination address includes arguments, and the arguments include the number of branches of the P2MP path, where these branches extend directly from the intermediate node to downstream interfaces through the connection. The number of branches of the upstream destination address indicates the number of entries in the segment list that indicate the next-hop nodes of the intermediate node. Further, the upstream destination address includes the number of SIDs included in the subtree downstream of the intermediate node. The number of SIDs in the upstream destination address indicates the number of multicast SIDs included in the segment list. Additionally, the upstream segment list includes the multicast SIDs of each node or each link in the subtree associated with the intermediate node, depending on the example. As described above, the multicast SID can be formatted to address nodes or links by using multicast SID 300 and / or 400 and / or multicast adjacency SID 600 and / or 700, etc. Each of the multicast SIDs can also include the number of branches downstream of the corresponding node and the number of SIDs included in any subtree downstream of the corresponding node.

[0163] The above information can be used to determine the downstream segment list. Specifically, the intermediate node can use the number of branches indicated in the upstream destination address to determine the number of next-hop nodes. A segment list should be created for each next-hop node. For example, when the number of branches is 3, the intermediate node should create a downstream segment list for the first three multicast SIDs in the upstream segment list. Then, the intermediate node can use the number of SIDs of each next-hop node to determine the number of multicast SIDs in each subtree associated with each next-hop node. The corresponding multicast SIDs of each next-hop node can be included in each such segment list. For example, if the number of SIDs of the multicast SID of the first next-hop node includes a number of SIDs set to 5, the next five entries after the last entry associated with the next-hop node are included in the downstream segment list of the first next-hop node. Then, the number of SIDs in the multicast SID of the second next-hop node can be used to generate the downstream segment list of the second next-hop node, etc., until all the multicast SIDs indicated in the upstream destination address are identified as next-hop nodes or included in one of the segment lists in the segment list. Thus, the intermediate node can generate a downstream segment list that only includes the multicast SIDs associated with the subtree rooted at the intermediate node through the corresponding P2MP path branches and includes the next-hop nodes directly connected to the corresponding downstream interfaces.

[0164] In step 1005, the intermediate node can copy the data packet to generate a copy of the data packet for sending on the second downstream interface (and the third downstream interface, the fourth downstream interface, etc.) of the intermediate node. For example, the intermediate node can use the number of branches indicated in the upstream destination address to determine whether the data packet should be copied and the number of times the data packet should be copied. For example, the intermediate node should copy the data packet once for each branch indicated by more than one upstream destination address.

[0165] In step 1007, the intermediate node may replace the upstream segment list included in the received data packet with the corresponding (e.g., first) downstream segment list determined in step 1003. In the case of replicating the data packet in step 1005, in step 1009, the intermediate node may also replace the upstream segment list associated with the copy of the data packet with a second downstream segment list. As needed, additional segment lists may be included in additional copies of the data packet to ensure that each replicated data packet receives the corresponding segment list. It should be noted that when replicating the data packet in step 1005, the upstream segment list may or may not be replicated. For example, replacing the upstream segment list with a second downstream segment list may include: replicating the data packet including the upstream segment list, and then replacing the upstream segment list with the second downstream segment list in the copy of the data packet. In other examples, replacing the upstream segment list with a second downstream segment list includes: deleting the upstream segment list from the data packet before replication, and pushing the second downstream segment list onto the copy of the data packet using an encapsulation algorithm. In either case, replacing the upstream segment list with a downstream segment list (or a second downstream segment list) may include: setting the multicast SID of the next hop of the corresponding subtree along the downstream interface to the destination address of the data packet, and deleting the multicast SID of the next hop from the corresponding segment list.

[0166] In step 1011, the intermediate node sends the data packet downstream. For example, the data packet may be sent on the downstream interface along the SR P2MP path. Further, a copy of the data packet may be sent on a second downstream interface along the SR P2MP path. Additional data packets may also be sent on additional downstream interfaces indicated by the number of branches in the upstream destination address to ensure that the data packet is forwarded along all branches of the P2MP path passing through the intermediate node.

[0167] Figure 11 is an embodiment of the device 1100 for maintaining an SR P2MP path in an IPv6 network. For example, the device 1100 may be used to implement methods 900 and / or 1000. Further, the device 1100 may be used as a node, such as the network node 200 and / or the ingress node 101, the intermediate node 103, and / or the egress node 105 in the network 100. In a specific example, the device 1100 may use the segment lists 500 and / or 501 including multicast SIDs (e.g., multicast SID 300 and / or 400). Further, the device 1100 may use the segment lists 800 and / or 801 including multicast adjacency SIDs (e.g., multicast adjacency SID 600 and / or 700).

[0168] In one example, device 1100 includes a receiving module 1101 for receiving data packets. Device 1100 further includes a processing module 1103 for pushing a segment list describing an SR P2MP path onto the data packet. Device 1100 includes a storage module 1105 for storing the data packet and / or the segment list. Device 1100 further includes a transmitting module 1107 for transmitting the data packet on a downstream interface along the SR P2MP path.

[0169] In another example, device 1100 includes a receiving module 1101 for receiving a data packet including an upstream segment list describing one or more subtrees of an SR P2MP path. Device 1100 further includes a processing module 1103 for determining a downstream segment list of a subtree of a downstream interface of an intermediate node included in the SR P2MP path according to the upstream segment list. Processing module 1103 is further configured to replace the upstream segment list associated with the data packet with the downstream segment list. Device 1100 includes a storage module 1105 for storing the data packet and / or the segment list. Device 1100 further includes a transmitting module 1107 for transmitting the data packet on a downstream interface along the SR P2MP path.

[0170] When there is no intermediate component between a first component and a second component other than a wire, a trace, or other medium, the first component and the second component are directly coupled. When there is an intermediate component between the first component and the second component in addition to a wire, a trace, or other medium, the first component and the second component are indirectly coupled. The term "coupled" and its synonyms include direct coupling and indirect coupling. Unless otherwise specified, the term "about" means a range including ±10% of the quantity following it.

[0171] It should also be understood that the steps of the exemplary methods described herein do not necessarily need to be executed in the order described, and the order of these method steps should be understood as being merely exemplary. Similarly, in methods consistent with various embodiments of the present invention, these methods may include other steps, and certain steps may be omitted or combined.

[0172] Although the present invention provides several embodiments, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the present invention. The current examples are considered illustrative rather than restrictive and are not intended to be limited to the details given herein. For example, various elements or components may be combined or integrated into another system, or some features may be omitted or not implemented.

[0173] In addition, various technologies, systems, subsystems, and methods described and illustrated as discrete or separate in the various embodiments can be combined or integrated with other systems, components, technologies, or methods without departing from the scope of the present invention. Other variations, substitutions, and change examples can be determined by those skilled in the art and can be made without departing from the spirit and scope disclosed herein.

Claims

1. A method implemented by an ingress node in a network, characterized in that, The method includes: Receiving a data packet; The processor of the ingress node pushes a segment list describing a segment routing point-to-multipoint (SR P2MP) path onto the data packet, the segment list including multicast SIDs of nodes in the P2MP path, the multicast SID including a number-of-branches field and a number-of-SIDs field, the number-of-branches field indicating the number of segments that the P2MP path extends downstream from the corresponding node, and the number-of-SIDs field indicating the number of multicast nodes included in the P2MP path downstream of the corresponding node; Sending the data packet on a downstream interface along the SR P2MP path.

2. The method according to claim 1, characterized in that, It further includes sending a copy of the data packet on a downstream interface different from the data packet, wherein the copy of the data packet includes a second segment list, and wherein the segment list and the second segment list describe different subtrees of the SR P2MP path.

3. The method according to claim 1 or 2, characterized in that, The SR P2MP path is stateless on the network.

4. The method according to any one of claims 1 to 3, characterized in that, Pushing the segment list onto the data packet further includes: setting the multicast segment identifier (SID) of the next hop of the subtree along the SR P2MP path as the destination address of the data packet.

5. The method according to any one of claims 1 to 4, characterized in that The segment list includes multicast SIDs of each node or each link in the subtree of the SR P2MP path.

6. The method according to any one of claims 1 to 5, characterized in that Each multicast SID includes a multicast block prefix, a node identifier, and an argument.

7. The method according to any one of claims 1 to 5, characterized in that, Each multicast SID includes a multicast adjacency SID locator, a link number, and an argument.

8. The method according to any one of claims 1 to 7, characterized in that, The argument includes the number of branches of the subtree associated with the corresponding node.

9. The method according to any one of claims 1 to 8, characterized in that, The argument further includes the number of SIDs included in the subtree downstream of the corresponding node.

10. A method implemented by an intermediate node along a segment routing point-to-multipoint (SRP2MP) path in a network, characterized in that, The method includes: Receiving a data packet including an upstream segment list describing one or more subtrees of the SR P2MP path, the upstream segment list including multicast SIDs of nodes in the P2MP path, the multicast SID including a number-of-branches field and a number-of-SIDs field, the number-of-branches field indicating the number of segments that the P2MP path extends downstream from the intermediate node, and the number-of-SIDs field indicating the number of multicast nodes included in the P2MP path downstream of the intermediate node; Copying the data packet, the number of times of copying the data packet being equal to the number of branches indicated by the number-of-branches field; The processor of the intermediate node determines a downstream segment list describing the subtree of the downstream interface of the intermediate node included in the SR P2MP path according to the upstream segment list; The processor replaces the upstream segment list associated with the data packet with the downstream segment list; Sending the data packet on the downstream interface along the SR P2MP path.

11. The method according to claim 10, wherein It further includes: The processor copies the data packet to generate a copy of the data packet for sending on a second downstream interface of the intermediate node; The processor determines a second downstream segment list describing a second subtree of the second downstream interface included in the SR P2MP path according to the upstream segment list; The processor replaces the upstream segment list associated with the copy of the data packet with the second downstream segment list; The transmitter sends the copy of the data packet on the second downstream interface along the SR P2MP path.

12. The method according to claim 10 or 11, characterized in that, Replacing the upstream segment list with the second downstream segment list includes: copying the data packet including the upstream segment list, and then replacing the upstream segment list with the second downstream segment list in the copy of the data packet.

13. The method according to any one of claims 10 to 12, characterized in that Replacing the upstream segment list with the second downstream segment list includes: deleting the upstream segment list from the data packet before copying, and pushing the second downstream segment list onto the copy of the data packet.

14. The method according to any one of claims 10 to 13, characterized in that, The received data packet includes a destination address identifying the intermediate node, wherein the destination address includes an argument, and the argument includes the number of branches associated with the intermediate node.

15. The method according to any one of claims 10 to 14, characterized in that, The upstream segment list includes multicast segment identifiers (segment identifiers, SIDs) of each node or each link in the subtree associated with the intermediate node.

16. The method according to any one of claims 10 to 15, characterized in that, Each multicast SID includes the number of SIDs included in the subtree downstream of the corresponding node.

17. The method according to any one of claims 10 to 16, characterized in that, Determining the downstream segment list includes: Using the number of branches indicated in the destination address to determine the number of next-hop nodes; Using the number of SIDs in the multicast SID of each next-hop node to determine the number of multicast SIDs in each subtree associated with each next-hop node; Generating the downstream segment list including only the multicast SIDs associated with the subtree of the next-hop node, where the next-hop node is associated with the downstream interface.

18. The method according to any one of claims 10 to 17, characterized in that, Determining the second downstream segment list includes: generating the second downstream list including only the multicast SIDs associated with the second subtree of the second downstream interface according to the number of branches indicated in the destination address and the number of SIDs in the multicast SID of each next-hop node.

19. The method according to any one of claims 10 to 18, characterized in that, The intermediate node does not store the state of the SR P2MP path.

20. The method according to any one of claims 10 to 19, characterized in that, Replacing the upstream segment list with the downstream segment list further includes: setting the multicast SID of the next-hop along the subtree of the downstream interface to the destination address of the data packet.

21. A non-transitory computer-readable medium, characterized in that, A computer program product for use by a first node in a network, wherein the computer program product includes computer-executable instructions stored in the non-transitory computer-readable medium, and when the computer-executable instructions are executed by a processor, cause the first node to perform the method according to any one of claims 1 to 20.

22. An ingress node in a network, characterized in that, The node includes: A receiving component for receiving data packets; A processing component for pushing a segment list describing a segment routing point-to-multipoint (SRP2MP) path onto the data packet, the segment list including multicast SIDs of nodes in the P2MP path, the multicast SID including a number-of-branches field and a number-of-SIDs field, the number-of-branches field indicating the number of segments that the P2MP path extends downstream from the corresponding node, and the number-of-SIDs field indicating the number of multicast nodes included in the P2MP path downstream of the corresponding node; A sending component for sending the data packet on a downstream interface along the SR P2MP path.

23. The ingress node according to claim 22, wherein The receiving component, the processing component, and the sending component are used to execute the method according to any one of claims 1 to 9.

24. An intermediate node in a network, characterized in that, The node includes: A receiving component for receiving a data packet including an upstream segment list describing one or more subtrees of a segment routing point-to-multipoint (SR P2MP) path, the upstream segment list including multicast SIDs of nodes in the P2MP path, the multicast SID including a number-of-branches field and a number-of-SIDs field, the number-of-branches field indicating the number of segments that the P2MP path extends downstream from the intermediate node, and the number-of-SIDs field indicating the number of multicast nodes included in the P2MP path downstream of the intermediate node; A processing component for: Copying the data packet, the number of times of copying the data packet being equal to the number of branches indicated by the number-of-branches field; Determining a downstream segment list describing a subtree of a downstream interface of the intermediate node included in the SR P2MP path according to the upstream segment list; Replacing the upstream segment list associated with the data packet with the downstream segment list; A sending component for sending the data packet on the downstream interface along the SR P2MP path.

25. The intermediate node according to claim 24, wherein The receiving component, the processing component, and the sending component are used to execute the method according to any one of claims 10 to 20.

26. An ingress node in a network, characterized in that, Includes: A receiver for receiving a data packet; A processor for pushing a segment list describing a segment routing point-to-multipoint (SRP2MP) path onto the data packet, the upstream segment list including multicast SIDs of nodes in the P2MP path, the multicast SID including a number-of-branches field and a number-of-SIDs field, the number-of-branches field indicating the number of segments that the P2MP path extends downstream from the corresponding node, and the number-of-SIDs field indicating the number of multicast nodes included in the P2MP path downstream of the corresponding node; A transmitter for sending the data packet on a downstream interface along the SR P2MP path.

27. The ingress node according to claim 26, wherein The sender is also used to send a copy of the data packet on a downstream interface different from the data packet, wherein the copy of the data packet includes a second segment list, and wherein the segment list and the second segment list describe different subtrees of the SR P2MP path.

28. The ingress node according to claim 26 or 27, characterized in that, The SR P2MP path is stateless on the network.

29. The ingress node according to any one of claims 26 to 28, characterized in that, Pushing the segment list onto the data packet further includes: setting the multicast segment identifier (SID) of the next hop of the subtree along the SR P2MP path to the destination address of the data packet.

30. The ingress node according to any one of claims 26 to 29, characterized in that, The segment list includes the multicast SIDs of each node or each link in the subtree of the SR P2MP path.

31. The ingress node according to any one of claims 26 to 30, characterized in that, Each multicast SID includes a multicast block prefix, a node identifier, and an argument.

32. The ingress node according to any one of claims 26 to 31, characterized in that, Each multicast SID includes a multicast adjacency SID locator, a link number, and an argument.

33. The method according to any one of claims 26 to 32, characterized in that, The argument includes the number of branches of the subtree associated with the corresponding node.

34. The method according to any one of claims 26 to 33, characterized in that The argument further includes the number of SIDs included in the subtree downstream of the corresponding node.

35. An intermediate node, characterized in that, Includes: A receiver, configured to receive a data packet including an upstream segment list describing one or more subtrees of a segment routing point-to-multipoint (SR P2MP) path passing through an intermediate node, the upstream segment list including the multicast SIDs of the nodes in the P2MP path, the multicast SIDs including a number-of-branches field and a number-of-SIDs field, the number-of-branches field indicating the number of segments that the P2MP path extends downstream from the intermediate node, and the number-of-SIDs field indicating the number of multicast nodes included in the P2MP path downstream of the intermediate node; A processor, configured to: Copy the data packet, the number of times of copying the data packet being equal to the number of branches indicated by the number-of-branches field; Determine a downstream segment list describing the subtree of the downstream interface of the intermediate node included in the SR P2MP path according to the upstream segment list; Replace the upstream segment list associated with the data packet with the downstream segment list; A sender, configured to send the data packet on the downstream interface along the SR P2MP path.

36. The intermediate node according to claim 35, wherein The processor is further configured to: Copy the data packet to generate a copy of the data packet for sending on a second downstream interface of the intermediate node; Determine a second downstream segment list describing a second subtree of the second downstream interface included in the SR P2MP path according to the upstream segment list; Replace the upstream segment list associated with the copy of the data packet with the second downstream segment list; Wherein, the sender is also used to send the copy of the data packet on the second downstream interface along the SR P2MP path.

37. The intermediate node according to claim 35 or 36, characterized in that, Replacing the upstream segment list with the second downstream segment list includes: copying the data packet including the upstream segment list, and then replacing the upstream segment list with the second downstream segment list in the copy of the data packet.

38. The intermediate node according to any one of claims 35 to 37, characterized in that, Replacing the upstream segment list with the second downstream segment list includes: deleting the upstream segment list from the data packet before copying and pushing the second downstream segment list onto the copy of the data packet.

39. The intermediate node according to any one of claims 35 to 38, characterized in that The received data packet includes a destination address identifying the intermediate node, where the destination address includes an argument, and the argument includes the number of branches associated with the intermediate node.

40. The intermediate node according to any one of claims 35 to 39, characterized in that, The upstream segment list includes the multicast segment identifiers (SIDs) of each node or each link in the subtree associated with the intermediate node.

41. The intermediate node according to any one of claims 35 to 40, characterized in that, Each multicast SID includes the number of SIDs included in the subtree downstream of the corresponding node.

42. The intermediate node according to any one of claims 35 to 41, characterized in that, Determining the downstream segment list includes: Using the number of branches indicated in the destination address to determine the number of next-hop nodes; Using the number of SIDs in the multicast SID of each next-hop node to determine the number of multicast SIDs in each subtree associated with each next-hop node; Generating the downstream segment list that includes only the multicast SIDs associated with the subtree of the next-hop node associated with the downstream interface.

43. The intermediate node according to any one of claims 35 to 42, characterized in that, Determining the second downstream segment list includes: generating the second downstream list that includes only the multicast SIDs associated with the second subtree of the second downstream interface according to the number of branches indicated in the destination address and the number of SIDs in the multicast SID of each next-hop node.

44. The intermediate node according to any one of claims 35 to 43, characterized in that, The intermediate node does not store the state of the SR P2MP path.

45. The intermediate node according to any one of claims 35 to 44, characterized in that Replacing the upstream segment list with the downstream segment list further includes: setting the multicast SID of the next-hop along the subtree of the downstream interface to the destination address of the data packet.

Citation Information

Patent Citations

  • Path establishing method and controller

    CN105827529A

  • Enabling non-flexible-algorithm routers to participate in flexiblealgorithm routing protocols

    CN111147373A