Segment Routing MPLS Point-to-Multipoint Paths
By using segment routing mechanism and multicast segment identifier list to describe the P2MP path, the problem of network non-scaling caused by state maintenance in the prior art is solved, and the effect of stateless P2MP communication and resource utilization reduction is achieved.
Patent Information
- Application Number
- CN202180042612.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-07-02
- Filing Date
- 2021-03-30
- Publication Date
- 2025-03-07
- Estimated Expiration
- 2041-03-30
AI Technical Summary
The prior art requires maintaining a large amount of state when creating and maintaining point-to-multipoint (P2MP) paths in a multi-protocol label switching (MPLS) network, resulting in network failure and increased memory and processing resource usage.
Segment Routing (SR) mechanism is used to create and maintain P2MP paths in a stateless manner through the MPLS network. The specific method is to use a multicast segment identifier (SID) list to describe the P2MP path. Each multicast SID includes a multicast adjacency tag and additional information. The ingress node encapsulates this information into a tag stack and pushes it onto a data packet, and the intermediate node forwards the data packet according to the tag stack.
It realizes stateless P2MP communication in the SR-MPLS network, reduces the memory and processor resources of the core network, supports the expansion of the number of P2MP paths, and improves the scalability and operability of network communication.
Smart Images

Figure CN116057906B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This patent application claims the benefit of U.S. Provisional Patent Application No. 63 / 047,755, filed by Huaimo Chen et al. on July 2, 2020, entitled “Segment Routing MPLS Point To Multipoint Path,” which is incorporated herein by reference. Technical Field
[0003] The present invention relates generally to network communications, and more particularly to a mechanism for creating point to multipoint (P2MP) paths using segment routing (SR) in a multiprotocol label switching (MPLS) network. Background Art
[0004] Some networks use network state to route network packets. For example, a controller can create paths on a network by assigning forwarding states to nodes along the paths. Each node can store one or more states for each path that passes through the node, such as in a forwarding table in memory. As the network continues to create new paths, the forwarding tables for these nodes gradually become more crowded. Therefore, the memory allocated to these tables limits the number of paths that can pass through the node. Further, as the size of the forwarding tables increases, the processing resources used to search the forwarding tables also increase. Therefore, as the number of paths in the network increases, the 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 multiprotocol label switching (MPLS) network, the method comprising: a receiver at the ingress node receiving a data packet; a processor at the ingress node pushing a segment list onto the data packet, the segment list describing a segment routing (SR) point to multipoint (P2MP) path as a list of multicast segment identifiers (SIDs), each multicast SID including a multicast adjacency label; and a transmitter at the ingress node sending the data packet on a downstream interface along the SR P2MP path.
[0006] SR is a routing protocol that supports routing without maintaining state in the network. SR-MPLS is a type of SR that uses a label stack to describe the path. In point to point (P2P) routing, packets are encapsulated with a label stack. 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 egress nodes forward based on the top label in the label stack, so the SR protocol is stateless on the core network. SR works for P2P paths, but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and therefore do not integrate with the stateless approach used in SR-MPLS. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.
[0007] This example includes an SR-based mechanism for creating and maintaining a P2MP path in a stateless manner through an MPLS network. In some examples, the MPLS network adopts an Internet Protocol version four (IPv4) addressing scheme with a 32-bit address. An ingress node may create a segment list describing a P2MP path through the network. The segment list includes a multicast SID of a node in the P2MP path. The multicast SID may be implemented as a multicast adjacency label for identifying a link / interface of a node along the P2MP path. 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. In one example, the number of branches field and the number of SIDs field may be included in a 32-bit SID including a multicast adjacency label. In another example, the number of branches field and the number of SIDs field may be included in an associated information (AI) field associated with the multicast adjacency label. In either case, the number of branches field and the number of SIDs field may be included in the multicast SID. This information may be pushed onto the data packet by the ingress node as a label stack through encapsulation. The data packet may then be sent downstream to be replicated and / or routed along the P2MP path as shown. For example, each current node (e.g., an ingress node and an intermediate node) may replicate the data packet a number of times equal to the number of branches represented by the multicast SID in the top label of the stack. The current node may then pop the label from the data packet as needed and push the label back onto the data packet to create a segment list of a subtree of the P2MP path downstream of the corresponding branch of the current node. The current node may then forward each data packet based on the top label of the segment list. This supports the creation of stateless P2MP communications on the SR-MPLS network. Thus, the described example creates additional functionality for nodes in the SR-MPLS core network. Further, the described example does not require the maintenance of states in the core network, thereby reducing the memory and processor resource footprint of the entire core network as the number of P2MP paths expands. Thus, the described example solves various problems specific to network communications 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 also includes: the processor copies the data packet to generate a copy of the data packet; the processor pushes the second segment list to the copy of the data packet; the transmitter sends the copy of the data packet on the second downstream interface, wherein 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 manner 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, the segment list includes one or more labels, and the top label of the segment list is a multicast adjacency label of the next hop of the subtree along the SR P2MP path.
[0011] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast adjacency label is a 20-bit field that uniquely identifies an interface of a corresponding node.
[0012] Optionally, according to any of the above aspects, in another implementation manner of this aspect, each multicast SID further includes: the number of branches of the subtree downstream of the corresponding node, and the number of SIDs included in the subtree downstream of the corresponding node.
[0013] Optionally, according to any of the above aspects, in another implementation of this aspect, the number of branches is a 4-bit field, and the number of SIDs is an 8-bit field.
[0014] Optionally, according to any of the above aspects, in another implementation of this aspect, one or more of the multicast SIDs are associated with one or more associated information blocks, each associated information block including: the position of the SID block of the subtree downstream of the corresponding node, the number of branches of the subtree downstream of the corresponding node, and the number of SIDs included in the subtree downstream of the corresponding node.
[0015] Optionally, according to any of the above aspects, in another implementation of this aspect, the position of the SID block is an 8-bit field, the number of branches is an 8-bit field, and the number of SIDs is an 8-bit field.
[0016] Optionally, according to any of the above aspects, in another implementation of this aspect, the associated information block of the egress node is omitted in the segment list.
[0017] In one embodiment, the present invention includes a method implemented by an intermediate node on an SR P2MP path in a network, the method including: a receiver at the intermediate node receives a data packet in MPLS format, the data packet including an upstream segment list describing one or more subtrees of the SR P2MP path; a processor determines a downstream segment list of a subtree describing a downstream interface of the intermediate node included in the SR P2MP path based on the upstream segment list, the downstream segment list including a list of multicast SIDs, each multicast SID including a multicast adjacency label; the processor replaces the upstream segment list associated with the data packet with the downstream segment list; and a transmitter at the ingress node sends the data packet on a downstream interface along the SR P2MP path.
[0018] SR is a routing protocol that supports routing without maintaining state in the network. SR-MPLS is a type of SR that uses a label stack to describe the path. In P2P routing, packets are encapsulated with a label stack. 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 egress nodes forward based on the top label in the label stack, so the SR protocol is stateless on the core network. SR works for P2P paths, but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and therefore do not integrate with the stateless approach used in SR-MPLS. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.
[0019] This example includes an SR-based mechanism for creating and maintaining a P2MP path in a stateless manner through an MPLS network. In some examples, the MPLS network adopts an IPv4 addressing scheme with a 32-bit address. An ingress node may create a segment list describing a P2MP path through the network. The segment list includes a multicast SID of a node in the P2MP path. The multicast SID may be implemented as a multicast adjacency label for identifying a link / interface of a node along the P2MP path. 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. In one example, the number of branches field and the number of SIDs field may be included in a 32-bit SID including a multicast adjacency label. In another example, the number of branches field and the number of SIDs field may be included in an AI field associated with the multicast adjacency label. In either case, the number of branches field and the number of SIDs field may be included in the multicast SID. This information can be pushed onto the data packet by the ingress node as a label stack through encapsulation. The data packet can then be sent downstream for replication and / or routing along the P2MP path as shown. For example, each current node (e.g., an ingress node and an intermediate node) can replicate the data packet a number of times equal to the number of branches represented by the multicast SID in the top label of the stack. The current node can then pop the label from the data packet as needed and push the label back onto the data packet to create a segment list of a subtree of the P2MP path downstream of the corresponding branch of the current node. The current node can then forward each data packet based on the top label of the segment list. This supports the creation of stateless P2MP communications on the SR-MPLS network. Therefore, the described example creates additional functionality for nodes in the SR-MPLS core network. Further, the described example does not require the maintenance of states in the core network, thereby reducing the memory and processor resource usage of the entire core network as the number of P2MP paths expands. Therefore, the described example solves various problems specific to network communications and increases the functionality and / or operability of network communication devices.
[0020] Optionally, according to any of the above aspects, in another implementation of this aspect, it also 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, based on the upstream segment list, a second downstream segment list describing the second subtree of the second downstream interface included in the SR P2MP path; the processor replaces the upstream segment list associated with the copy of the data packet with the second downstream segment list; and the transmitter sends the copy of the data packet on the second downstream interface along the SR P2MP path.
[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: copying a 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.
[0022] 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 in the top SID in the data packet to determine the number of next hop nodes; using 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; using the position of the SID block of the subtree, locating the multicast SID for at least one next hop node in the subtree from the upstream segment list; 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.
[0023] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast adjacency label is a 20-bit field that uniquely identifies the interface of the corresponding node, wherein each multicast SID also includes: a 4-bit field indicating the number of branches of the subtree downstream of the corresponding node, and an 8-bit field indicating the number of SIDs included in the subtree downstream of the corresponding node.
[0024] Optionally, according to any of the above aspects, in another implementation of this aspect, each multicast adjacency label is a 20-bit field that uniquely identifies the interface of the corresponding node, and one or more of the multicast SIDs are associated with one or more association information blocks, each association information block including: an 8-bit field indicating the position of the SID block of the subtree downstream of the corresponding node, an 8-bit field indicating the number of branches of the subtree downstream of the corresponding node, and an 8-bit field indicating 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, the associated information block of the egress node is omitted in the segment list.
[0026] 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.
[0027] 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 when the computer-executable instructions are executed by a processor, the first node performs any of the methods described above.
[0028] In one embodiment, the present invention includes an ingress node in an MPLS network, the node including: a receiving component for receiving a data packet; a processing component for pushing a segment list onto the data packet, the segment list describing the SR P2MP path as a list of multicast SIDs, each multicast SID including a multicast adjacency label; and a sending component for sending the data packet on a downstream interface along the SR P2MP path.
[0029] SR is a routing protocol that supports routing without maintaining state in the network. SR-MPLS is a type of SR that uses a label stack to describe the path. In P2P routing, packets are encapsulated with a label stack. 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 egress nodes forward based on the top label in the label stack, so the SR protocol is stateless on the core network. SR works for P2P paths, but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and therefore do not integrate with the stateless approach used in SR-MPLS. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.
[0030] This example includes an SR-based mechanism for creating and maintaining a P2MP path in a stateless manner through an MPLS network. In some examples, the MPLS network adopts an IPv4 addressing scheme with a 32-bit address. An ingress node may create a segment list describing a P2MP path through the network. The segment list includes a multicast SID of a node in the P2MP path. The multicast SID may be implemented as a multicast adjacency label for identifying a link / interface of a node along the P2MP path. 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. In one example, the number of branches field and the number of SIDs field may be included in a 32-bit SID including a multicast adjacency label. In another example, the number of branches field and the number of SIDs field may be included in an AI field associated with the multicast adjacency label. In either case, the number of branches field and the number of SIDs field may be included in the multicast SID. This information can be pushed onto the data packet by the ingress node as a label stack through encapsulation. The data packet can then be sent downstream for replication and / or routing along the P2MP path as shown. For example, each current node (e.g., an ingress node and an intermediate node) can replicate the data packet a number of times equal to the number of branches represented by the multicast SID in the top label of the stack. The current node can then pop the label from the data packet as needed and push the label back onto the data packet to create a segment list of a subtree of the P2MP path downstream of the corresponding branch of the current node. The current node can then forward each data packet based on the top label of the segment list. This supports the creation of stateless P2MP communications on the SR-MPLS network. Therefore, the described example creates additional functionality for nodes in the SR-MPLS core network. Further, the described example does not require the maintenance of states in the core network, thereby reducing the memory and processor resource usage of the entire core network as the number of P2MP paths expands. Therefore, the described example solves various problems specific to network communications and increases the functionality and / or operability of network communication devices.
[0031] Optionally, according to any of the above aspects, in another implementation of this aspect, the receiving component, the processing component and the sending component are used to execute the method of any of the above aspects.
[0032] In one embodiment, the present invention includes an intermediate node in a network, the node including: a receiving component for receiving a data packet in MPLS format, the data packet including an upstream segment list of one or more subtrees describing an SR P2MP path; a processing component for: determining a downstream segment list of a subtree describing a downstream interface of an intermediate node included in the SR P2MP path based on the upstream segment list, the downstream segment list including a list of multicast SIDs, each multicast SID including a multicast adjacency label; replacing the upstream segment list associated with the data packet with the downstream segment list; and a sending component for sending the data packet on a downstream interface along the SR P2MP path.
[0033] SR is a routing protocol that supports routing without maintaining state in the network. SR-MPLS is a type of SR that uses a label stack to describe the path. In P2P routing, packets are encapsulated with a label stack. 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 egress nodes forward based on the top label in the label stack, so the SR protocol is stateless on the core network. SR works for P2P paths, but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and therefore do not integrate with the stateless approach used in SR-MPLS. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.
[0034] This example includes an SR-based mechanism for creating and maintaining a P2MP path in a stateless manner through an MPLS network. In some examples, the MPLS network adopts an IPv4 addressing scheme with a 32-bit address. An ingress node may create a segment list describing a P2MP path through the network. The segment list includes a multicast SID of a node in the P2MP path. The multicast SID may be implemented as a multicast adjacency label for identifying a link / interface of a node along the P2MP path. 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. In one example, the number of branches field and the number of SIDs field may be included in a 32-bit SID including a multicast adjacency label. In another example, the number of branches field and the number of SIDs field may be included in an AI field associated with the multicast adjacency label. In either case, the number of branches field and the number of SIDs field may be included in the multicast SID. This information can be pushed onto the data packet by the ingress node as a label stack through encapsulation. The data packet can then be sent downstream for replication and / or routing along the P2MP path as shown. For example, each current node (e.g., an ingress node and an intermediate node) can replicate the data packet a number of times equal to the number of branches represented by the multicast SID in the top label of the stack. The current node can then pop the label from the data packet as needed and push the label back onto the data packet to create a segment list of a subtree of the P2MP path downstream of the corresponding branch of the current node. The current node can then forward each data packet based on the top label of the segment list. This supports the creation of stateless P2MP communications on the SR-MPLS network. Therefore, the described example creates additional functionality for nodes in the SR-MPLS core network. Further, the described example does not require the maintenance of states in the core network, thereby reducing the memory and processor resource usage of the entire core network as the number of P2MP paths expands. Therefore, the described example solves various problems specific to network communications and increases the functionality and / or operability of network communication devices.
[0035] Optionally, according to any of the above aspects, in another implementation of this aspect, the receiving component, the processing component and the sending component are used to execute the method of any of the above aspects.
[0036] For clarity, any of the embodiments described above may be combined with any one or more of the other embodiments described above to create new embodiments within the scope of the present invention.
[0037] These and other features will become more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0038] For a more complete understanding of the present invention, reference is made to the following brief description taken in conjunction with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
[0039] Figure 1 is a schematic diagram of an exemplary MPLS network for implementing a P2MP path.
[0040] Figure 2 is a schematic diagram of an exemplary network node.
[0041] Figure 3 is a diagram showing an exemplary encoding of a multicast segment identifier (SID) representing a link address and using associated information (AI).
[0042] Figure 4 is a diagram of an exemplary encoding of a segment list describing a P2MP path in an MPLS network by using a multicast SID with an AI field.
[0043] Figure 5 FIG. 4 is a diagram of another exemplary encoding of a segment list for describing a P2MP path in an MPLS network by using a multicast SID having an AI field.
[0044] Figure 6 is a diagram of an exemplary encoding of a segment list for describing a P2MP path in an MPLS network by using a multicast SID while reducing AI field usage.
[0045] Figure 7 is a schematic diagram showing an exemplary encoding of a multicast SID of a link address, without using the AI field.
[0046] Figure 8 FIG. 1 is a diagram showing an exemplary encoding of a segment list describing a P2MP path in an MPLS network by using a multicast SID without an AI field.
[0047] Fig. 9 is a flow chart of an exemplary method in which an ingress node at an edge of an MPLS network sends a data packet to a P2MP path.
[0048] Fig.10 is a flow chart of an exemplary method for an intermediate node in an MPLS network to forward a data packet along a P2MP path.
[0049] Fig.11 An embodiment of an apparatus for maintaining a P2MP path in an MPLS network. DETAILED DESCRIPTION
[0050] 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 in existence. The present invention is in no way limited to the illustrative implementations, drawings, 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.
[0051] Unless used in a contrary context herein, the following terms are defined as follows. 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 considered as supplementary information and should not be considered to limit any other definitions provided herein for the descriptions of these terms.
[0052] A network is a set of connected nodes that communicate using a set of shared communication protocols. An MPLS network is a network configured to use MPLS, a routing protocol that routes packets based on labels rather than addresses. An ingress node is a node located at the edge of a network that provides processing mechanisms to support the entry of corresponding packets into the network. An intermediate node is a node in a network that is used to forward packets according to a predetermined protocol. A packet is a unit of data that is sized to be routed / switched by a node and is organized according to a predetermined format. SR is a routing protocol that encapsulates packets with labels (e.g., a label stack) or segment identifiers (SIDs) that describe the path of a segment through the network. A segment list is an ordered description of the segments corresponding to a path. An upstream segment list is a segment list received as part of a packet received from an upstream node. A downstream segment list is a segment list included in a packet prepared for downstream transmission. A P2MP path is a path that proceeds from a single source to multiple destinations. A downstream interface is a port at which a node communicates with a link in a downstream direction relative to a corresponding communication. An upstream interface is a port at which a node communicates with a link in an upstream direction relative to a corresponding communication.
[0053] 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. 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 a subsequent link or node in a path. A multicast SID is an identifier that uniquely identifies a link and / or node as a segment in a multicast communication. A label is a value that identifies a link / virtual link between nodes in an MPLS network. A multicast adjacency label is a label that identifies a link / node interface to be exchanged as part of a multicast communication. An association information block is a data block attached to a 32-bit SID that includes a multicast adjacency label. The number of branches is data indicating the number of branches of a tree / subtree extending downstream from a corresponding multicast node. The number of SIDs is data indicating the number of multicast link / node interfaces included in a subtree rooted at the corresponding node. The block location is part of the current multicast SID and includes a pointer to a specified multicast SID in the segment list, wherein the specified multicast SID is included in a subtree rooted at the current multicast SID.
[0054] SR is a routing protocol that supports routing without maintaining state in the network. SR-MPLS is a type of SR that uses a label stack to describe the path. In point to point (P2P) routing, packets are encapsulated with a label stack. 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 egress nodes forward based on the top label in the label stack, so the SR protocol is stateless on the core network. SR works for P2P paths, but does not support P2MP paths. For example, routing protocols that support P2MP paths are stateful and therefore do not integrate with the stateless approach used in SR-MPLS. For example, some routing protocols calculate P2MP paths and create state at each node to support forwarding along the P2MP path.
[0055] Disclosed herein is an SR-based mechanism for creating and maintaining a P2MP path in a stateless manner through an MPLS network between a specified source and a specific (e.g., less than all) specified destination. In some examples, the MPLS network adopts an Internet Protocol version four (IPv4) addressing scheme with a 32-bit address. An ingress node may create a segment list describing a P2MP path through the network. The segment list includes a multicast SID of a node in the P2MP path. The multicast SID may be implemented as a multicast adjacency label for identifying a link / interface of a node along the P2MP path. 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. In one example, the number of branches field and the number of SIDs field may be included in a 32-bit SID including a multicast adjacency label. In another example, the number of branches field and the number of SIDs field may be included in an associated information (AI) field associated with the multicast adjacency label. In either case, the number of branches field and the number of SIDs field may be included in the multicast SID. This information may be pushed onto the data packet by the ingress node as a label stack through encapsulation. The data packet may then be sent downstream to be replicated and / or routed along the P2MP path as shown. For example, each current node (e.g., an ingress node and an intermediate node) may replicate the data packet a number of times equal to the number of branches represented by the multicast SID in the top label of the stack. The current node may then pop the label from the data packet as needed and push the label back onto the data packet to create a segment list of a subtree of the P2MP path downstream of the corresponding branch of the current node. The current node may then forward each data packet based on the top label of the segment list. This supports the creation of stateless P2MP communications on the SR-MPLS network. Thus, the described example creates additional functionality for nodes in the SR-MPLS core network. Further, the described examples do not require maintaining state in the core network, thereby reducing the memory and processor resource usage of the entire core network as the number of P2MP paths expands. Thus, the described examples solve various problems specific to network communications and increase the functionality and / or operability of network communications devices.
[0056] Figure 11 is a schematic diagram of an exemplary MPLS network 100 for implementing a P2MP path using an SR mechanism. For example, the network 100 is used to use the SR protocol. SR is a routing protocol that encapsulates data packets with labels that describe a list of segments that pass through the network 100. A label is a value that identifies a link / virtual link between nodes in an MPLS network. The label stack that describes a path can be called a segment list. A segment list can be defined as an ordered description of the segments corresponding to a path. Encapsulation can be used to attach a segment list to a data packet (e.g., in front of a data packet) so that the data packet is routed according to the segment list. For example, the nodes of the network 100 are configured to encapsulate a data packet with a label using an encapsulation algorithm (e.g., push a label onto a data packet), pop a label from the data packet as the data packet traverses the network 100, and route the data packet according to a label (e.g., a current stack top label of the segment list). The network 100 is also used to implement a P2MP path using encapsulation and a segment list, which is described in more detail below.
[0057] Network 100 is an MPLS network. MPLS is a label protocol that provides address labels for use by the SR protocol. When used together, the resulting protocol may be referred to as SR-MPLS. SR-MPLS may use IPv4 or Internet protocol version six (IPv6) addresses and associated protocols. The IPv4 protocol is a communication protocol for sending packets over the Internet using a 32-bit address mechanism. The IPv6 protocol is a communication protocol for sending packets over the Internet using a 128-bit address mechanism. The present invention focuses on the SR-MPLS mechanism using IPv4, but this mechanism may be extended to SR-MPLS IPv6 networks. Network 100 includes any number of nodes. Figure 1 Only relevant nodes are described in the figure. The network 100 includes edge nodes and internal nodes. An edge node is any node that is connected to both the network 100 and an external network or node. An internal node is only connected to other nodes in the network 100.
[0058] Edge nodes are used to convert packets from other networks into / out of the network 100, for example, by providing network security and / or communication between external protocols and the protocol used by the network 100. In the context of path routing, edge nodes can act as ingress nodes 101 or egress nodes 105. Ingress nodes 101 are edge nodes that accept packets from external sources for transmission on the network 100. Thus, ingress nodes 101 are nodes located at the edge of the network 100 that provide processing / conversion mechanisms that support the entry of corresponding packets into the network 100. Egress nodes 105 are edge nodes that accept packets from within the network 100 and forward such packets toward a destination outside the network 100. Egress nodes 105 can also convert packets from the protocol used by the network 100 to an external protocol.
[0059] The network 100 also includes an intermediate node 103. The intermediate node 103 is an internal node in the network 100 for forwarding data packets according to a predetermined protocol. The intermediate node 103 is connected to each other, to the entry node 101 and / or to the exit node 105 using links. Such links may include optical links, optoelectronic links, electrical links and / or wireless links. Such links are connected to the entry node 101, the intermediate node 103 and the exit node 105 at the interface. The interface is the port of the node connection link. According to the example, addresses can be assigned to nodes, interfaces of nodes or both to support routing data packets. An address is a local or global unique character set that identifies a corresponding component (e.g., link, node, virtual link, virtual node, etc.) for switching and / or routing purposes.
[0060] In this example, network 100 includes a P2MP path 107, which is a path that proceeds from a single starting point to multiple destinations to exit the network through multiple exit nodes or points. P2MP path 107 extends from a single predetermined source to a set of predetermined destinations, which may be less than all exit nodes. Therefore, P2MP path 107 is not an implementation of broadcast transmission. Further, P2MP path 107 is implemented in a stateless manner by using various labels, as described in more detail below. Therefore, P2MP path 107 can be used to send a packet stream from a single source (e.g., a point) to multiple predetermined destinations (e.g., multiple points) without using constant memory allocation in nodes along P2MP path 107. P2MP path 107 includes multiple path segments 107a to 107i. In this example, path segment 107a extends between node PE8 and node PE5; path segment 107b extends between node PE8 and node P1; path segment 107c extends between node P1 and node P3; path segment 107d extends between node P1 and node P2; path segment 107e extends between node P3 and node P4; path segment 107f extends between node P2 and node PE1; path segment 107g extends between node P2 and node PE2; path segment 107h extends between node P4 and node PE4; path segment 107i extends between node P4 and node PE3. P2MP path 107 proceeds from a source toward a destination. From any point along P2MP path 107, the relative direction 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. Therefore, each node includes an upstream interface and a downstream interface. An upstream interface is a port of a node that communicates with a link in an upstream direction relative to a corresponding communication. A downstream interface is a port of a node that communicates with a link in a downstream direction relative to a corresponding communication. It should be noted that the egress node 106, denoted as node PE9, is not on the P2MP path 107. Therefore, communications along the P2MP path 107 are not sent to the egress node 106. Therefore, the P2MP path 107 does not carry broadcast transmissions.
[0061] P2MP paths 107 enter network 100 from a source at an upstream interface at ingress node 101. Ingress node 101 encapsulates the packets in the flow with the segment lists described below and performs any other protocol conversions for converting the packets to network 100. P2MP paths 107 leave ingress node 101 at one or more downstream interfaces and proceed toward upstream interfaces of egress nodes 105 associated with various destinations. In some cases, P2MP paths 107 also proceed to upstream interfaces of intermediate nodes 103 and through the downstream interfaces of these intermediate nodes 103 toward egress node 105. Egress node 105 removes any remaining encapsulation and performs any other relevant protocol conversions to transfer the packets out of network 100 for transmission toward the destination.
[0062] 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 proceeds downstream from a node, and the exit node 105 is a leaf. A tree includes subtrees. A subtree is a part of a tree that includes fewer elements than all the elements in the tree. For example, a part of the P2MP path 107 that proceeds downstream from a corresponding node (e.g., any node other than the entry node 101) can be called a subtree with the corresponding node as the root.
[0063] The P2MP path 107 path enables the ingress node 101 and the intermediate node 103 to receive packets on the upstream interface, replicate the packets as needed, and send a copy of each packet / packet on the downstream interface branching from the node. As described above, some networks manage this functionality by storing state in the associated nodes. State is memory information used to process data. For example, when a packet is received as part of the represented flow, the intermediate node 103 can receive instructions to perform a specific replication and forwarding process. The problem with this approach is that the increase in P2MP paths 107 results in a large number of tables that must be sorted to obtain the correct replication and forwarding instructions. As the number of P2MP paths 107 in the network 100 increases, this increases processing resource requirements and slows down forwarding. Further, the amount of memory in the intermediate node 103 limits the number of P2MP paths 107 that can be established at any particular point in time. Therefore, the scalability of stateful P2MP paths 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.
[0064] The present invention uses a mechanism to create stateless P2MP paths 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 simultaneously support an arbitrarily large number of stateless P2MP paths 107. As used herein, these mechanisms are stateless because they do not require state to be maintained in any intermediate node 103 or egress node 105. The ingress node 101 can still maintain state data for any P2MP path 107 rooted at the ingress node 101.
[0065] Stateless forwarding along the P2MP path 107 is performed using a segment list formatted to describe a multicast tree. The segment list uses a multicast SID representing each link / hop in the P2MP path 107. The segment list also includes additional arguments that help nodes interpret the information in the segment list. For each packet in the flow, the ingress node 101 replicates the packet as needed and encapsulates the packet by attaching a segment list, for example, through a push / pop mechanism. The packet is forwarded to the intermediate node 103, which replicates each received packet as represented by the segment list, updates the segment list according to predefined rules, and forwards the packets according to the updated segment list. For example, the intermediate node 103 can receive a packet from the upstream direction including an upstream segment list. The intermediate node 103 can replicate the packet represented by the upstream segment list and create one or more downstream segment lists based on the upstream segment list, for example, by using a push and pop mechanism. Then, the intermediate node 103 can attach the correct downstream segment list to each packet and forward the packets downstream according to the downstream segment list. The upstream segment list is a segment list included in the packet received from the upstream node. The downstream segment list is a list of segments included in a data packet prepared for downstream transmission.
[0066] The egress node 105 receiving the packet may remove the segment list along with the encapsulation and forward the packet toward the final destination. Once received by the egress node 105, the segment list includes only the multicast SID corresponding to the egress node 105. Thus, the egress node 105 may pop the last label from the segment list and decapsulate the packet before forwarding the packet downstream from the network 100. In some examples, the last intermediate node 103 before the egress node 105 may swap the segment list including the multicast SID of the egress node 105 with the MPLS P2P label of the egress node 105. In this case, the egress node 105 is unaware of the multicast nature of the communication and processes the packet according to normal MPLS principles.
[0067] The following example is used to illustrate the process of encoding a P2MP path 107 using a segment list. In this example, the ingress node 101 is represented as a provider edge (PE) 8. The egress nodes 105 are represented as PE1, PE2, PE3, PE4, and PE5. The intermediate nodes 103 are represented as provider nodes (P) 1, P2, P3, and P4. In MPLS, each link / interface connected to a node is assigned a multicast adjacency label. Each multicast adjacency label is relative to a specific node and is valid locally. The multicast adjacency label of each node is known to other nodes for routing purposes. For example, the multicast adjacency label can be broadcast on the network and stored in the forwarding table. Therefore, each link and corresponding interface of each node can be specifically addressed by a multicast adjacency label. For clarity of discussion, in Figure 1 In , the interface Y of node X is addressed for multicast communication by the multicast adjacency label of X-Ym (m). For example, the first interface of node P1 is denoted as P1-1m. In the operating system, these addresses are replaced by locally valid values.
[0068] In this example, ingress node 101 (node PE8) receives a packet associated with P2MP path 107. P2MP path 107 has two branches from PE8, so PE8 duplicates the packet. A packet is encapsulated with a segment list that describes a 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 with no branches between ingress node 101 (PE8) and egress node (PE5), such a segment list may optionally be formatted as an MPLS P2P label describing the link from PE8 to PE5 in accordance with the general MPLS protocol. For example, a packet may be encapsulated with a segment list that includes a single multicast adjacency label set to PE5-1m. Alternatively, the packet may also be encapsulated with a normal MPLS label representing the egress node. For clarity of discussion, interface Y of node X is addressed by an MPLS label of X-Yn for normal point-to-point communication (n). The packet may then be sent to PE5 for decapsulation and forwarding towards the destination.
[0069] Another packet is encapsulated with a segment list that describes a subtree rooted at PE8 that extends toward PE1-PE4. For example, the segment list may include a multicast SID for each of the links / nodes in the subtree and an argument for each multicast SID. These arguments may include the number of P2MP path 107 branches extending from the node represented by the multicast SID. These arguments may also include the number of multicast SIDs downstream of the node / link associated with the multicast SID. These arguments may also include a block position argument. The block position argument for the current multicast SID may include a value pointing to a location in the segment list that includes the first multicast SID, which is part of the subtree rooted at the current multicast SID.
[0070] The multicast SIDs of the interfaces of the nodes along the corresponding branch are included in the segment list. For the subtree denoted PE1-PE4 of the P2MP path 107 from PE8 to the egress node 105, the segment list may include the following multicast adjacency labels: P1-1m, P2-1m, P3-1m, PE1-1m, PE2-1m, P4-1m, PE3-1m, and PE4-1m. In another example, a normal MPLS label is used to address the egress node 105. This is because the final link to each egress node 105 is a P2P link. In this case, the segment list may include the following multicast adjacency / MPLS labels: P1-1m, P2-1m, P3-1m, PE1-1n, PE2-1n, P4-1m, PE3-1n, and PE4-1n. In either case, once the segment list is pushed onto the packet, the packet is forwarded from PE8 to P1 based on the top-of-stack label on the segment list.
[0071] The data packet is received at P1 and includes a segment list received from an upstream node. For clarity of discussion, this document refers to it as an upstream segment list. Therefore, the upstream segment list is a segment list included in the data packet received from the upstream node. The intermediate node 103, represented as P1, creates one or more downstream segment lists for the data packet based on the upstream segment list and forwards the data packet based on the downstream segment list. The downstream segment list is a segment list included in the data packet prepared for downstream transmission. In this example, the first entry of the upstream segment list includes an independent variable indicating that the P2MP path 107 includes two branches downstream of P1. Therefore, the data packet is copied to create two copies of the data packet, thereby generating a data packet for each branch. P1 also builds a different segment list for each data packet, for example, by popping and pushing labels as needed. As used herein, push is an operation that adds an item (such as a label) to the top / front of an ordered list of objects. Pop is an operation that deletes the top / front item (such as a label) from the top / front of an ordered list of objects. Therefore, push adds a label to the beginning of the data packet, and pop removes the label from the beginning of the data packet. This can be done before or after copying.
[0072] For example, P1 can read and pop the first entry (e.g., the multicast adjacency label of P1-1m) from the segment list. Then, P1 obtains the next two multicast SIDs from the upstream segment list, which are P2-1m and P3-1m in this case, based on the number of branches in P1-1m or the AI associated with P1-1m. The addresses of P2-1m and P3-1m are determined as the next hops, and the multicast adjacency SIDs P2-1m and P3-1m should be the top SIDs of their corresponding segment lists. Since P1 represented by the upstream destination address has only two branches, P1 determines that the remaining multicast SIDs in the segment list are part of other subtrees associated with P2 and P3, respectively. For example, P1 can determine that there are two multicast SIDs downstream of P2 and three multicast SIDs downstream of P3 based on the independent variable of the number of SIDs in the multicast SIDs of P2 and P3, respectively. Thus, the first two multicast SIDs after P3-1m (e.g., PE1-1m and PE2-1m) are included in the downstream segment list attached to packets going from P1 to P2. P3 is associated with three downstream multicast SIDs. Thus, the next three multicast SIDs after the multicast SID associated with P2 in the upstream segment list (e.g., P4-1m, PE3-1m, and PE4-1m) are included in the downstream segment list attached to packets going from P1 to P3. When used, the block location field can help a node locate the correct multicast adjacency SID / label to include in each downstream segment list.
[0073] In this way, the segment list is rewritten at each current hop 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 data packet is copied, and then the downstream segment list is generated based on the upstream list and pushed onto the corresponding data packet. In other examples, the data packet is copied while including the upstream segment list. Then, the upstream segment list in each data packet is replaced by the corresponding downstream segment list, for example by pushing and popping the multicast SID as needed. The complete exemplary encoding and corresponding description of the segment list are included in detail below. Once the data packets are received at the egress node 105 of the P2MP path 107, the data packets may include a single label. According to the example, the label is a multicast adjacency label or a general MPLS label. In either case, the egress node 105 can determine from the presence of the single label that the node is the destination of the data packet within the network 100. Therefore, the egress node 105 can decapsulate the data packet to delete the segment list / remaining label and forward the data packet towards the final destination based on the data included in the decapsulated data packet.
[0074] Using the above-described mechanisms, packets may be forwarded along P2MP paths 107 without using state at intermediate nodes 103 or egress nodes 105. Thus, the disclosed mechanisms support the creation of P2MP paths 107 in a manner that is both scalable and consistent with the SR protocol.
[0075] Figure 2 2 is a schematic diagram of an example network node 200 (e.g., a node in network 100) for operating in an MPLS network. For example, network node 200 can be used to implement ingress node 101, intermediate node 103, and / or egress node 105. Therefore, network node 200 is suitable for implementing the disclosed examples / embodiments described herein. Network device 200 includes communication circuitry, namely downstream port 220, upstream port 250, and / or transceiver unit (Tx / Rx) 210. Transceiver unit 210 includes a transmitter and / or a receiver for communicating data upstream and / or downstream through a network. Network device 200 also includes a processor 230 and a memory 232. Processor 230 includes a logic unit and / or a central processing unit (CPU) to process data. Memory 232 is used to store data. The network device 200 may also include optical-to-electrical (OE) components, electrical-to-optical (EO) components and / or wireless communication components coupled to the upstream port 250 and / or the downstream port 220 for data communication via an electrical communication network, an optical communication network and / or a wireless communication network.
[0076] 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), or a combination of these elements. The processor 230 communicates with the downstream port 220, Tx / Rx 210, the 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 the SR P2MP path in the MPLS network by using a corresponding segment list including a multicast SID implemented as an MPLS label. The multicast SID in the segment list includes data describing the P2MP path or its subtree, thereby supporting intermediate nodes to forward data packets on the MPLS network without pre-configuring state data. For example, the P2MP module 214 may receive packets, read an MPLS label from a segment list in the packet, replicate the packet, push / pop an MPLS label onto a segment list in the packet to describe a downstream subtree, and / or forward the packets for transmission over the MPLS network. Thus, the P2MP module 214 may be used to implement mechanisms that address one or more of the above-described issues. Thus, the P2MP module 214 improves the functionality of the network node 200 and addresses issues specific to network communication technologies. Further, the P2MP module 214 implements transitions of the network node 200 to different states. Alternatively, the P2MP module 214 may 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).
[0077] The memory 232 includes one or more memory types, such as a disk, a tape drive, a solid-state hard disk, a read only memory (ROM), a random access memory (RAM), a flash memory, a ternary content-addressable memory (TCAM), a static random-access memory (SRAM), etc. The memory 232 can be used as an overflow data storage device to store programs when they are selected for execution and to store instructions and data read during the execution of the program.
[0078] Figure 3is a schematic diagram of an exemplary encoding of a multicast SID 300 and AI 301 data blocks representing a link address. A-I 301 is a 32-bit data block that provides additional details related to the address. AI 301 is used to include arguments that define the structure of a P2MP path and / or its subtrees. Multicast SID 300 can be used to address a link connected to a node, and therefore can be used to address a specified interface of a node, such as an upstream and / or downstream interface of network node 200 and / or any node in network 100. The multicast SID 300 shown uses a 32-bit word and is sized to carry an AI 301 data block that has the same length as an IPv4 address. IPv4 is a routing protocol that uses 32-bit addresses. Therefore, the multicast SID 300 plus the AI 301 data block is 64 bits. The multicast SID 300 includes a multicast adjacency label 310, an experimental use (Exp) field 312, a stack bottom (S) bit 314, and a time to live (TTL) field 316, which together are 32 bits. The multicast SID 300 is modeled after the generic MPLS label to be compatible with SR-MPLS routers. The multicast SID 300 also includes an AI 301.
[0079] The multicast adjacency label 310 is a label that identifies a link / node interface to be exchanged as part of a multicast communication. The multicast adjacency label 310 can be 20 bits long. In an exemplary implementation, each link / interface of each node in the network domain has an associated multicast adjacency label 310. The multicast adjacency label 310 is relative to a specific node and is locally valid. For example, each node in the network domain assigns a multicast label from a predefined multicast label block to each link in the node's links as the multicast adjacency label 310 of the link. The node then publishes information representing the label and the corresponding link. In another example, the central controller assigns a multicast label in the multicast label block to each link of the node. This creates a multicast adjacency label 310 for each link connected to the node. The central controller can then send information describing each label and each corresponding link to the node and each neighbor node of the node. The multicast label block is a range of labels that can be used as a multicast adjacency label 310. In one example, the multicast label block is a continuous range of labels. In one example, each node uses the same multicast label block. In another example, the multicast label block used by one node may be different from the multicast label block used by another node. In one example, for all n links of the node, i.e., link 1, link 2, ... link n, a unique label (or MPLS label) in the multicast label block of the node is assigned to each of the n links. In one example, the first label in the block is assigned to link 1, the second label in the block is assigned to link 2, ... the nth label in the block is assigned to link n.
[0080] The Exp field 312 is a 3-bit field reserved for experimental use. The S bit 314 is a bit field that can be set to indicate whether the current multicast SID 300 is the bottom SID in the stack, and therefore the last multicast SID in the segment list. The TTL field 316 includes data indicating how long a packet including the multicast SID 300 is still valid and should still be forwarded. For example, the TTL field 316 may include a decrementing counter value, and when the counter reaches zero, the corresponding packet may be discarded because the packet is considered stale at this point.
[0081] AI 301 includes 32 bits of data that describe the structure of the P2MP path or its subtree associated with the link / node represented by multicast SID 300. AI 301 includes a reserved field 318, a block position 311, the number of branches 313, and the number of SIDs 315, each of which can be 8 bits long. Reserved field 318 can be reserved for other purposes and can be set to all zeros. Block position 311 includes a pointer to a specified multicast SID in the segment list. Specifically, block position 311 points to a specified multicast SID included in the subtree rooted with the current multicast SID 300. In one implementation, block position 311 includes a relative position, such as a distance represented by the number of SIDs from AI 301, as a virtual SID of a SID block in a subtree rooted with a node corresponding to multicast SID 300. This block position 311 is optional and can be used to accelerate the parallel delivery of incoming data packets to multiple outgoing interfaces.
[0082] The number of branches 313 is data indicating the number of branches of a tree / subtree extending downstream from the node identified by multicast SID 300. For example, when a node receives multicast SID 300 identifying an interface of the node, the number of branches 313 describes the number of outgoing interfaces extending from the node along the multicast tree. In another example, when a node receives multicast SID 300 identifying an upstream interface of the node, the number of branches 313 describes the number of outgoing interfaces extending from the node along the multicast tree. The number of SIDs 315 is data indicating the number of multicast link / node interfaces included in a subtree rooted at the node identified by multicast SID 300. For example, the number of SIDs 315 can be used to indicate the number of hop / node interfaces retained in a multicast subtree downstream of multicast SID 300.
[0083] In one example, the multicast SID 300 including the multicast adjacency label 310 assigned to the interface of the node may be referred to as the multicast adjacency SID of the interface of the node, the multicast adjacency SID of the node, or the multicast adjacency SID (M-Adj-SID) assigned to the interface. The values of the block position 311, the number of branches 313, and the number of SIDs 315 depend on the SR-MPLS P2MP path / tree corresponding to the multicast SID 300.
[0084] Figure 4 It is a segment list that describes a P2MP path in an MPLS network by using a multicast SID with an AI field.
[0085] 400 and 401 are schematic diagrams of exemplary encoding. Specifically, segment list 400 and segment list 401 describe the network 100.
[0086] P2MP path 107. Segment lists 400 and 401 use multicast SID 300 to address interfaces of nodes in P2MP path 107 (eg, node 200).
[0087] Segment list 401 describes a subtree of P2MP path 107 between node PE8 and node PE5, while segment list 400 describes a subtree of P2MP path 107 between node PE8 and nodes PE1 to PE4. Each entry of segment list 400 and / or 401 includes a multicast SID, such as multicast SID 300. Therefore, each entry of segment list 400 and / or 401 includes a multicast SID, which includes a multicast adjacency label, an Exp field, an S bit, and a TTL field, which are substantially similar to multicast SID 300, multicast adjacency label 310, Exp field 312, S bit 314, and TTL field 316, respectively. Further, each entry of segment list 400 and / or 401 includes an AI, which includes a reserved field, a block position, a number of branches, and a number of SIDs, which are substantially similar to AI 301, reserved field 318, block position 311, number of branches 313, and number of SIDs 315, respectively. It should also be noted that each multicast adjacency label X-YmL addresses the node interface as X-Ym, where X represents the node, Y represents the interface of the node, m represents the multicast interface, and L represents the label. The multicast node interface X-Ym in the multicast SID corresponding to its multicast adjacency label X-YmL can be used as an identifier or name of the multicast SID or an entry including X-YmL and its corresponding AI. For example, P1-1m is used as the name of the first multicast SID in the segment list 400. PE4-1m is used as the name of the last multicast SID in the segment list 400. X-Ym can be used to represent the 32 bits including X-YmL (for example, an entry including X-YmL but not including its corresponding AI). For example, P1-1m represents the first 32 bits in the segment list 400 (the first row of P1-1mL). Similarly, each normal adjacency label X-YnL addresses the node interface as X-Yn, where X represents the node, Y represents the interface of the node, n represents the normal interface, and L represents the label. The normal node interface X-Yn may be used as an identifier or name for a normal SID including X-YnL.
[0088] like Figure 1 As shown, P2MP path 107 includes a single link between node PE8 and node PE5. Figure 4As shown, the segment list 401 describing the subtree between node PE8 and node PE5 includes a single multicast SID indicating PE5 as a destination. Specifically, the segment list 401 includes a single entry with a single multicast SID. The multicast SID includes a multicast adjacency label (PE5-1mL) addressed to the upstream interface connected to node PE5 (PE5-1m), and the multicast adjacency label indicates that the link to node PE5 is the next hop along the corresponding branch of the P2MP path 107. The AI of the multicast SID of node PE5 includes independent variables, including the block position set to zero, the number of branches set to zero, and the number of SIDs set to zero. This indicates that there is a lack of pointers to the subtree downstream of node PE5, the branches of the P2MP path 107 do not extend beyond node PE5, and there are no further multicast SIDs downstream of node PE5. Each of these parameters provides sufficient information to infer that node PE5 is the egress node 105 that terminates the corresponding branch of the P2MP path 107. Therefore, no further multicast SIDs exist in segment list 401. Therefore, ingress node 101 can encapsulate the data packet with the multicast SID of node PE5 and send the data packet to node PE5. Node PE5 can then use this data to determine to decapsulate the data packet and forward the data packet to the final destination outside the MPLS network. In some examples, ingress node 101 can omit segment list 401 and use the MPLS protocol label stack instead of segment list 401.
[0089] Segment list 400 describes a subtree of the P2MP path 107 between node PE8 and nodes PE1 to PE4. The ingress node 101 (and therefore two segment lists 400 and 401) uses two downstream branches to replicate incoming packets, push segment list 400 onto one copy of the packet, and push segment list 401 onto the other copy of the packet. The next hop node along the branch between node PE8 and nodes PE1 to PE4 is node P1. Therefore, the first entry in segment list 400 includes a multicast SID (e.g., P1-1mL) with a multicast adjacency label for node P1. The AI of the multicast SID of node P1 includes a block position set to zero. This can indicate that the next multicast SID in segment list 400 (e.g., P2-1m) is the next hop downstream of node P1. The AI of the multicast SID of node P1 also includes the number of branches set to two, indicating that P1 includes two downstream branches. The AI of the multicast SID of node P1 also includes the number of SIDs set to 7, which indicates that there are 7 hops downstream of node P1 (7 hops identified by the 7 multicast adjacency labels in P2-1m, P3-1m, PE1-1m, PE2-1m, P4-1m, PE3-1m and PE4-m). Therefore, there are 7 entries in the segment list after 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 the segment list 400 so that these SIDs can be interpreted by downstream nodes, as discussed below. The ingress node can encapsulate data packets / data packet copies with the segment list 400, for example by pushing each multicast SID and corresponding AI in the segment list onto the data packet to create a label stack.
[0090] The data packet is sent to node P1 according to the first / top label in the segment list, which is set to P1-1mL. The top multicast SID includes a block position set to zero, which indicates that the next hop (if any) is the next multicast SID in the segment list. The top multicast SID includes an independent variable indicating that node P1 includes two downstream branches. Therefore, the top multicast SID and AI are read and popped from the data packet, and the data packet is copied at node P1 to create two data packets based on the top SID of the upstream data packet. The two branches of the top SID indicate that the first two remaining multicast SIDs in the segment list 400 are the next hops along these two branches. Therefore, a first downstream segment list including the multicast SID of node P2 (P2-1m) is created, and a second downstream segment list including the multicast SID of node P3 (P3-1m) is created. The AI of the multicast SID of node P2 indicates that there are two multicast SIDs downstream of node P2 along the branch extending between node P1 and node P2. Therefore, the first two multicast SIDs after P3-1m (PE1-1m and PE2-1m) are included in the segment list of P2-1m, and the corresponding segment list is applied to the data packet to be sent from node P1 to node P2. These multicast SIDs can be quickly found by using the block position of P2-1m, which means that the first of these two multicast SIDs is one entry away and therefore immediately after P3-1m. Similarly, the AI of the multicast SID of P3-1m indicates that there are three multicast SIDs downstream of node P3. A segment list is created for the data packet allocated for sending from node P1 to node P3. The multicast SID of node P3 is set to the top SID in the segment list of such data packet, and the three multicast SIDs located after the P2 branch data 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 P3-1m). These multicast SIDs can be quickly found by using the block position of P3-1m, which means that the first of the three multicast SIDs is two entries away and therefore immediately after PE2-1m. The packet with two different segment lists is then forwarded downstream from node P1 toward node P2 and node P3 according to the top SID / label of each segment list. It should be noted that the creation of the various segment lists at node P1 can be completed by the following steps: popping the upstream segment list from the data packet and / or data packet replica, determining the corresponding downstream segment list, and pushing the downstream segment list to the corresponding data packet and / or data packet replica.
[0091] When the corresponding data packet is received at node P2, the number of branches in the top SID is determined to be two according to the independent variable of AI in the multicast SID of node P2. Therefore, the top SID is read and popped, and the data packet is copied. After deleting the top SID, the upstream segment list received at node P2 includes only two entries (PE1-1m and PE2-1m), and the popped top SID represents two branches. Therefore, node P2 can determine that PE1-1m and PE2-1m should be set as the top (and unique) SID in the downstream segment list of the corresponding copy of the data packet. This segment list is included in the corresponding data packet. The data packet is then forwarded downstream according to the top SID / label of the downstream segment list. When such a data packet is received at nodes PE1 and PE2, the single-entry segment list indicates that nodes PE1 and PE2 are respectively egress nodes. Therefore, nodes PE1 and PE2 determine that the corresponding data packet can be decapsulated and forwarded to its corresponding destination.
[0092] The packet received at node P3 includes the top SID of the segment list (indicating the multicast SID of node P3) and also includes the last three entries of segment list 400 (P3-1m, P4-1m, PE3-1m, and PE4-1m). The top SID of node P3 (P3-1m) indicates that there is only one branch downstream of node P3, so the packet is not duplicated. Since there is a single branch, the top SID is popped from the upstream segment list to create a downstream segment list at P3 (P4-1m, PE3-1m, and PE4-1m). The packet is then forwarded from node P3 to node P4 based on the top SID / label of the downstream segment list (P4-1m).
[0093] The data packet received at node P4 includes an upstream segment list, whose top SID is set to the multicast SID of node P4, and also includes the last two entries (P4-1m, PE3-1m and PE4-1m) of segment list 400. The AI of the multicast SID of node P4 indicates that there are two branches downstream of node P4. Therefore, the top SID is read and popped up, and the data packet is copied. Since the segment list includes two remaining multicast SIDs, and the popped top SID represents two branches, node P4 can determine that nodes PE3 and PE4 are egress nodes. Therefore, node P4 can determine that PE3-1m and PE4-1m should be set to the top (and unique) SID in the downstream segment list of the corresponding copy of the data packet. This segment list is included in the corresponding data packet. When such a data packet is received at nodes PE3 and PE4, the single-entry segment list indicates that nodes PE3 and PE4 are respectively egress nodes. Therefore, nodes PE3 and PE4 determine that the corresponding data packet can be decapsulated and forwarded to its corresponding destination.
[0094] As described above, each node along the P2MP path can read the segment list 400 and / or 401 including the multicast SID and AI (or part thereof) to correctly copy packets from the flow and create a new segment list for processing these packets by downstream nodes. In this way, packets can be sent from a single point to multiple destinations in a stateless manner.
[0095] Figure 5 1 is a schematic diagram of additional exemplary encodings of segment lists 500 and 501 that describe a P2MP path in an MPLS network by using a multicast SID with an AI field. Segment lists 500 and 501 are alternative encodings of segment lists 400 and 401, respectively. Thus, segment lists 500 and 501 describe a P2MP path 107 in network 100. Segment lists 500 and 501 use multicast SID 300 to address interfaces of nodes (e.g., node 200) in P2MP path 107.
[0096] Segment lists 500 and 501 include substantially the same information as segment lists 400 and 401, respectively. However, the encoding of segment lists 500 and 501 takes into account the fact that some routers may count each 32-bit multicast SID and each 32-bit AI as a distinct entry in the label stack for counting purposes. For example, the AI may be considered a pseudo-SID when performing operations on the segment lists. To simplify implementation, all values counting the number of multicast SIDs are multiplied by 2. Thus, for counting purposes, each multicast SID and AI is considered a separate entry in segment lists 500 / 501. For example, the number of SIDs for P1-1m is listed as 14 because segment list 500 includes 7 multicast SIDs for P1-1m and 7 AIs following the multicast SIDs and associated AIs. In another example, the block position of P2-1m is listed as 2 because the first multicast SID in the subtree rooted at P2 is PE1-1m, which is two entries away when the multicast SID and AI of P3-1m are considered as separate entries. Therefore, all non-zero block positions and all non-zero number of SID arguments are multiplied by 2 compared to segment lists 400 and 401. The number of branches does not count the segment list entries, so the number of branches is not multiplied by 2.
[0097] Figure 61 is a diagram of an exemplary encoding of segment lists 600 and 601 for describing a P2MP path in an MPLS network by using multicast SIDs while reducing AI field usage. Segment lists 600 and 601 are alternative encodings of segment lists 400 and 401, respectively. Segment lists 600 and 601 are also alternative encodings of segment lists 500 and 501, respectively. Thus, segment lists 600 and segment list 601 describe a P2MP path 107 in network 100. Segment lists 600 and 601 use multicast SID 300 to address interfaces of nodes (e.g., node 200) in P2MP path 107.
[0098] Segment lists 600 and 601 are substantially similar to segment lists 500 and 501, respectively. However, segment lists 600 and 601 omit all AIs that include only zero values for block locations, number of branches, and number of SIDs. This reduces the size of the code without omitting any useful information. Segment lists 600 and 601 use the same counting mechanism as segment lists 500 and 501. Thus, multicast SIDs with AIs are counted as two SIDs, while multicast SIDs without AIs are counted as one SID and replaced with their corresponding normal SIDs. For example, the number of SIDs for P1-1m is listed as 10 (instead of 10). Figure 5 In another example, the block position of P3-1m is listed as 2 (instead of 14), because the segment list 600 includes four normal SIDs, three multicast SIDs, and three AIs after the multicast SIDs. Figure 5 4 in the segment lists 600 and 601), because the first multicast SID in the subtree rooted at P3 is P4-1m, which is two entries away when the SIDs of PE1-1n and PE2-1n do not include an AI. Therefore, for counting purposes, each multicast SID and each AI are treated as separate entries in segment lists 600 and 601, and the information in the segment lists is compressed to reduce the usage of processor, memory, and / or network communication resources. It should also be noted that counting each multicast SID and each AI as separate entries supports the removal of additional AIs while still supporting each router to easily determine (by counting) which value is the multicast SID and which value is the AI by examining the actual values.
[0099] Figure 7 is a schematic diagram of an exemplary encoding of a multicast SID 700 representing a link address, without using the AI field. Multicast SID 700 is an alternative implementation of multicast SID 300. Multicast SID 700 can be used to address a link connected to a node, and thus can be used to address a specified interface of a node, such as an upstream and / or downstream interface of network node 200 and / or any node in network 100.
[0100] The multicast SID 700 uses 32-bit words. Therefore, the length of the multicast SID 700 is 32 bits. In an exemplary implementation, the multicast SID 700 includes or consists essentially of a 20-bit long multicast adjacency label 710, a 4-bit long number of branches 713, and an 8-bit long number of SIDs 715. The multicast adjacency label 710, the number of branches 713, and the number of SIDs 715 are substantially similar to the multicast adjacency label 310, the number of branches 313, and the number of SIDs 315, respectively. Unlike the multicast SID 300, the multicast SID 700 is used to encode a P2MP path without an AI field. Therefore, the multicast SID 700 includes the minimum amount of data that can be used to describe a P2MP path. The benefit of the multicast SID 700 is that the multicast SID 700 encodes a single hop on the P2MP path and is encoded using a single 32-bit field. However, the multicast SID 700 does not include the block position, Exp field, S bit, TTL field, and reserved field of the multicast SID 300. Therefore, the multicast SID 700 is not used for a mechanism that uses these fields to support functions.
[0101] Figure 8 is a schematic diagram of an exemplary encoding of segment lists 800 and 801 that describe a P2MP path in an MPLS network by using a multicast SID without an AI field. Specifically, segment lists 800 and segment lists 801 describe P2MP path 107 in network 100. Segment lists 800 and 801 use multicast SID 700 to address interfaces of nodes (e.g., node 200) in P2MP path 107. Segment lists 800 and 801 are substantially similar to segment lists 400 and 401, respectively. However, segment lists 800 and 801 omit the Exp field, S bit, TTL field, reserved field, and block position. This will make the encoding smaller. For example, segment list 800 uses 8 32-bit blocks instead of 16 32-bit blocks as in segment list 400 to encode a P2MP path subtree with 8 hops. However, the block position and TTL functions are omitted.
[0102] The following describes an exemplary implementation of the embodiment. Specifically, this document describes a solution in which an SR-MPLS P2MP path / tree delivers traffic from an ingress of a path to multiple egresses / leaves of a path in an SR domain. The SR P2MP path does not store state in the network core, so the implementation is similar to the SR P2P path in this solution.
[0103] In some systems, SR multicast or P2MP path / tree can be implemented by using multiple SR P2P paths. The function of SR P2MP path / tree from the entry node to multiple (referred to as n) exit / leaf nodes can be implemented by n SR P2P paths. These n P2P paths are from the entry of the P2MP path / tree to these n exit / leaf nodes. This solution may waste some network resources such as link bandwidth. An alternative solution can use multiple P2MP chain tunnels to implement the P2MP path / tree from the entry to n exit / leaf nodes. Each P2MP chain tunnel is a tunnel from the entry to the leaf node as the tail end of the tunnel, and there may be some leaf nodes along the tunnel as bud nodes of the tunnel. Compared with the above-mentioned solution using pure P2P paths, this alternative solution can improve the utilization of network resources. Both solutions are based on SR P2P paths. Another solution for SR P2MP path / tree is to use P2MP multicast. 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 is instantiated in the forwarding plane by controllers such as the path computation element (PCE) on the root node, intermediate replication nodes, and leaf nodes of the tree. This approach is inconsistent with the SR principle, where the network core does not store state. This document describes a scheme for an SR-MPLS P2MP path / tree to deliver traffic from the ingress of a path to multiple egress / leaves of a path in an SR domain. The scheme uses a P2MP multicast tree without storing the state of the tree in the network core of the SR P2MP path / tree, in a manner similar to an SR P2P path.
[0104] An overview of the P2MP multicast tree is described below. For an SR P2P path from ingress to egress, the segment list for the path is provided to the ingress. The ingress pushes the list to the packet, which is delivered to the egress based on the segment list, without any state in the network core. For an SR-MPLS P2MP path from ingress to multiple egress / leaf nodes, the segment list for the P2MP path is provided to the ingress. The ingress pushes the list to the packet, which is delivered to multiple egress / leaf nodes based on the segment list, without any state in the network core. Figure 1An exemplary SR-MPLS P2MP path from the ingress / root PE8 to the four egress / leaf nodes PE1, PE2, PE3, and PE4 is shown. Nodes P1, P2, P3, and P4 are intermediate nodes of the P2MP path. Assume that X-1mL and X-1nL are the multicast adjacency label (mL) and the normal adjacency label (nL) of node X for the link from X to the first neighboring node, respectively. P1-1mL is the multicast adjacency label of P1 for the link from P1 to PE8; P2-1mL is the multicast adjacency label of P2 for the link from P2 to P1; P3-1mL is the multicast adjacency label of P3 for the link from P3 to P1; P4-1mL is the multicast adjacency label of P4 for the link from P4 to P3; PE1-1mL is the multicast adjacency label of PE1 for the link from PE1 to P2; and so on. PE1-1nL is the normal adjacency label of PE1 for the link from PE1 to P2; PE2-1nL is the normal adjacency label of PE2 for the link from PE2 to P2; and so on.
[0105] The multicast adjacency segment identifier (M-Adj-SID) is a 32-bit SID, including a 20-bit multicast adjacency label. Assume that X-1m is the multicast adjacency SID of node X, with X-1mL. P1-1m, P2-1m, P3-1m, P4-1m, PE1-1m, PE2-1m, PE3-1m, and PE4-1m are the SIDs of the nodes on the SR-MPLS P2MP path. They are multicast SIDs or replicated SIDs. The normal adjacency segment identifier (Adj-SID) is a 32-bit SID, including a 20-bit normal adjacency label. Assume that X-1n is the normal adjacency SID of node X, with X-1nL. PE1-1n, PE2-1n, PE3-1n, and PE4-1n are the SIDs of the nodes on the SR-MPLS P2MP path. These are normal SIDs.
[0106] If a node P on an SR-MPLS P2MP path has B (B>1) next-hop nodes along the path, the SID of node P (i.e., P-1m) should be a multicast SID when the SID is in the segment list of the P2MP path. The SIDs of the B next-hop nodes follow P-1m in the segment list. When node P receives a packet with P-1m, node P replicates the packet and sends the packet to each of the B next-hop nodes along the P2MP path. Information such as the number of next-hop nodes or branches associated with the multicast SID X-1m of node X on the P2MP path is stored in a virtual SID named X-1mA. If necessary, X-1mA follows X-1m in the segment list. For any egress / leaf node PE of the SR-MPLS P2MP path, the normal SID PE-1n of that node can be used in the segment list of the path. For an intermediate node P of a path, if P has only one branch to a node downstream of node P, and the immediate upstream node of node P has only one branch to node P, then the normal SID P-1n of node P can be used in the segment list of the path.
[0107] {P1-1m,P1-1mA,P2-1m,P2-1mA,P3-1m,P3-1mA,PE1-1n,PE2-1n,P4-1m,P4-1mA,PE3-1n,PE4-1n}Yes Figure 1 Figure 2. Example of a segment list pushed into a packet at the ingress / root PE8 for an SR-MPLS P2MP path. Node P1 has two next-hop nodes P2 and P3 along the P2MP path. The SIDs of the next-hop nodes P2-1m and P3-1m follow P1-1m, which is the multicast SID of P1. When P1 receives a packet transmitted over the P2MP path, P1 replicates the packet and sends it to the next-hop nodes P2 and P3 based on P1-1mA, P2-1m, and P3-1m. The number of branches or the number of next hops for node P1 is the value of a field in P1-1mA called the number of branches (No-Branches). The value of No-Branches in P1-1mA is 2. Using this information, node P1 replicates the packet and sends it to the two next-hop nodes P2 and P3, which are represented by the two SIDs P2-1m and P3-1m following P1-1m.
[0108] The number of SIDs of the nodes below node P1 is the value of another field in P1-1mA, called the number of SIDs (No-SIDs). The value of No-SIDs in P1-1mA is 10, indicating that there are 10 SIDs following P1-1m in the segment list. There are two branches or next hops of node P2 (e.g., PE1 and PE2) and two SIDs of the nodes below node P2 (e.g., PE1-1n and PE2-1n). The value of No-Branches and the value of No-SIDs in P2-1mA are 2 and 2. With this information, node P1 pushes the SIDs below node P2 onto the packet before sending the packet to node P2. The packet has a new segment list with the SIDs below node P2. The new segment list replaces the old segment list in the packet. There is one branch or next hop of node P3 (e.g., P4) and four SIDs of the nodes below node P3 (e.g., P4-1m, P4-1mA, PE3-1n, and PE4-1n). The values of No-Branches and No-SIDs in P3-1mA are 1 and 4 respectively. Using this information, node P1 pushes the SID below node P3 onto the packet before sending it to node P3. Each node on the SR P2MP path sends the packet to the next hop node of the node according to the segment list, and any intermediate node (e.g., the network core) does not store state. The packet is delivered from the ingress node to the egress / leaf node.
[0109] An exemplary encoding of a P2MP multicast tree is described below. For each subtree STi of the SR-MPLS P2MP path from the P2MP path ingress node, it is assumed that the multicast SID of the next hop node NHi is mSIDi. Further, along the subtree, there are Bi branches (e.g., outgoing links) from node NHi to the next hop node BNHj (j=1...Bi). The multicast SID of BNHj is mSIDij. The number of branches (e.g., outgoing links) under node BNHj (j=1...Bi) is BBj. In addition, the number of SIDs of the nodes under each of the Bi branches of node BNHj is NSj (j=1...Bi). The subtree STi is encoded as a segment list {mSIDi, mSIDiA, mSIDi1, mSIDi1A,..., mSIDiBi, mSIDiBiA, SegSeq1,..., SegSeqBi}. mSIDiA includes the number of branches Bi in the No-Branches field. mSIDiA also includes the number of SIDs below mSIDi in the No-SIDs field. mSIDijA (j=1...Bi) includes the number of branches BBj in the No-Branches field and the number of SIDs NSj in the No-SIDs field. SegSeqj (j=1...Bi) is the SID sequence in the segment list of the subtree of the coding node BNHj.
[0110] for Figure 1 In the P2MP path from the ingress node PE8 to the egress nodes PE1, PE2, PE3, and PE4, there is a subtree from PE8. For this subtree, the next hop node is P1, and the multicast SID of P1 is P1-1m. Along the subtree, there are two branches from node P1 to the next hop nodes P2 and P3. The number of SIDs of the nodes under P1 is 7 plus 3 virtual SIDs. The multicast SIDs of P2 and P3 are P2-1m and P3-1m, respectively. The number of SIDs of the nodes under these two branches is 2 and 4, respectively. The SIDs of the nodes under P2 are PE1-1n and PE2-1n. The SIDs of the nodes under P3 are P4-1m, P4-1mA, PE3-1n, and PE4-1n.
[0111] The subtree is encoded as a segment list {P1-1m, P1-1mA, P2-1m, P2-1mA, P3-1m, P3-1mA, PE1-1n, PE2-1n, P4-1m, P4-1mA, PE3-1n, PE4-1n}. The No-Branches field of P1-1mA is set to 2 and the No-SIDs field is set to 10. The No-Branches field of P2-1mA is set to 2 and the No-Branches field of P3-1mA is set to 1. The No-SIDs field of P2-1mA is set to 2 and the No-SIDs field of P3-1mA is set to 4. PE1-1n and PE2-1n are the SID sequences in the segment list encoding the subtree of P2. P4-1m, P4-1mA, PE3-1n and PE4-1n are the SID sequences in the segment list encoding the subtree of P3. The No-Branches field of P4-1mA is set to 2, and the No-SIDs field is set to 2. Figure 6 An example of a segment list is shown, which is an encoding of a P2MP multicast tree for an SR-MPLS P2MP path from PE8 to PE1, PE2, PE3, and PE4. SID P1-1mA indicates that there are two branches and 10 SIDs under P1. SID P2-1mA indicates that there are two branches and two SIDs under P2, and the beginnings of these two SIDs are two SIDs away from SID P2-1mA. SID P3-1mA indicates that there is one branch and four SIDs under P3, and the beginnings of these four SIDs are two SIDs away from SID P3-1mA. SIDs PE1-1n and PE2-1n are normal SIDs for leaf nodes PE1 and PE2. SID P4-1mA indicates that there are two branches and two SIDs under P4. PE3-1n and PE4-1n are normal SIDs for leaf nodes PE3 and PE4.
[0112] The following describes exemplary processes or behaviors at the ingress, intermediate, and egress / leaf nodes of an SR-MPLS P2MP path for delivering a packet received from the path to its destination. The following describes processes or behaviors at an ingress node. For a packet transmitted by an SR-MPLS P2MP path, the ingress of the P2MP path replicates the packet for each subtree of the P2MP path that branches from the ingress. The ingress pushes the segment list encoding of the subtree onto the packet. The ingress then sends the packet along the subtree to the next hop node. For example, from Figure 1The ingress PE8 of the SR-MPLS P2MP path in has a subtree passing through the next hop node P1 towards the egress / leaf nodes PE1, PE2, PE3, and PE4. For this subtree, the ingress PE8 replicates the packet, pushes the segment list of the coding subtree into the packet, and sends the packet to the node P1 according to the multicast adjacency label P1-1mL assigned to the link of P1 in P1-1m (between PE8 and P1). The segment list of the coding subtree includes a virtual SID for each multicast SID and is {P1-1m, P1-1mA, P2-1m, P2-1mA, P3-1m, P3-1mA, PE1-1n, PE2-1n, P4-1m, P4-1mA, PE3-1n, PE4-1n}. Figure 6 The contents of a multicast SID and its virtual SID are shown.
[0113] The following describes the process or behavior on the intermediate node. When an intermediate node of an SR-MPLS P2MP path receives a packet transmitted by the P2MP path, the top SID of the packet is the multicast SID of the node, and the packet includes a segment list of the subtree starting from the intermediate node. The segment list includes information for encoding the subtree below the intermediate node. If the top SID is the normal SID of the intermediate node, the node behavior is the same as that of the SR P2P path. For example, when node P1 receives Figure 1 When a packet is transmitted along the SR-MPLS P2MP path, the segment list in the packet is {P1-1m, P1-1mA, P2-1m, P2-1mA, P3-1m, P3-1mA, PE1-1n, PE2-1n, P4-1m, P4-1mA, PE3-1n, PE4-1n}. The top SID in the packet is the multicast SID of node P1, including the multicast adjacency label P1-1mL assigned to the link of P1 between P1 and PE8. The No-Branches field (whose value is n) in the virtual SID of the top SID indicates that there are n branches (or subtrees) under the intermediate node. The N-SIDs field of the SID indicates the number of SIDs of the n subtrees under the intermediate node. After the top SID and the corresponding virtual SID are popped, the multicast SID of the root node of the n subtrees is the first n multicast SIDs in the segment list in the packet.
[0114] For example, the No-Branches field (value 2) in the virtual P1-1mA of the top SID P1-1m indicates that there are two branches (or subtrees) under the node P1. The No-SIDs field (value 10) in P1-1mA indicates that there are 10 SIDs in the two subtrees under the node P1. After the top SID and the virtual SID are popped, the first multicast SID (P2-1m) in the segment list is the SID of the root node (P2) of the first subtree. The second multicast SID (P3-1m) in the segment list is the SID of the root node (P3) of the second subtree. After the multicast SID of the root (or next hop) node, these n subtrees have n SID blocks. The No-SIDs field (value NS1) and the Block-Loc field (DS1) in the virtual SID of the first multicast SID of the root (or next hop) node indicate that there are NS1 SIDs in the first block of the first subtree, and the start of the first block is DS1 SIDs away. Further, the No-SIDs field (value is NS2) and the Block-Loc field (DS2) in the virtual SID of the second multicast SID of the root node indicate that there are NS2 SIDs in the second block of the second subtree after the first block, and the starting distance of the second block is DS2 SIDs, and so on.
[0115] For example, after the multicast SIDs P2-1m and P3-1m of the root (or next hop) nodes P2 and P3, the two subtrees under node P1 have two SID blocks. The values of the No-SIDs and Block-Loc fields in P2-1mA of P2-1m (the first multicast SID of the root node) are 2 and 2. This means that there are two SIDs in the first block of the first subtree, namely PE1-1n and PE2-1n, and the first block is two SIDs away. The values of the No-SIDs and Block-Loc fields in P3-1mA of P3-1m (the second multicast SID of the root node) are 4 and 2, respectively. This means that the second subtree after the first block has four SIDs in the second block, namely P4-1m, P4-1mA, PE3-1n, and PE4-1n, and the second block is two SIDs away.
[0116] The intermediate node replicates the packet without the segment list for each subtree below the intermediate node and pushes the new segment list built from the SID block of the subtree into the replicated packet. The intermediate node sends the packet to the next hop node along the subtree according to the label in the top SID in the packet. For example, node P1 replicates the packet without the segment list for the first subtree to PE1 and PE2 from P2 as the root. Node P1 pushes the new segment list {P2-1m, P2-1mA, PE1-1n, PE2-1n} into the replicated packet. Node P1 sends the packet to node P2 according to the multicast adjacency label P2-1mL in the top SID P2-1m in the packet. Node P1 replicates the packet without the segment list for the second subtree to PE3 and PE4 from P3 as the root. Node P1 pushes the new segment list {P3-1m, P3-1mA, P4-1m, P4-1mA, PE3-1n, PE4-1n} into the replicated packet. Node P1 sends the data packet to node P3 according to the multicast adjacency label P3-1mL in the top SID P3-1m in the data packet.
[0117] The following describes the process or behavior on the egress node. When the egress node of the SR-MPLS P2MP path receives a data packet transmitted through the P2MP path, the top SID of the data packet is the SID of the egress node. The egress node pops the top SID and sends the data packet to the destination of the data packet according to the IP destination address. For example, when Figure 1 When the egress node PE1 of the SR-MPLS P2MP path receives a data packet transmitted by the P2MP path, the top SID of the data packet is PE1-1n, which is the normal SID of the egress node PE1. Node PE1 pops PE1-1n and sends the data packet to the destination of the data packet according to the IP destination address.
[0118] Fig. 9 Flowchart of an exemplary method 900 for sending a data packet to a P2MP path (e.g., P2MP path 107) by an ingress node (e.g., ingress node 101 and / or network node 200) at the edge of an MPLS network (e.g., network 100). For example, the ingress node may generate segment lists 400, 401, 500, 501, 600, 601, 800, and / or 801 including multicast SIDs (e.g., multicast SIDs 300 and / or 700). These segment lists describe the P2MP path. The ingress node may encapsulate data packets from the flow with the segment lists to ensure that the data packets are forwarded along the P2MP path. It should be noted that the term multicast SID may apply to a multicast SID and a corresponding AI, a multicast SID that does not include an AI, and / or a combination thereof. It should also be noted that a multicast SID may also be referred to as a multicast adjacency SID in some contexts.
[0119] Prior to method 900, a P2MP path from a source to a plurality of destinations is computed through an ingress node and through a network. The P2MP path may be computed by a controller (e.g., a path computation unit) and / or by an ingress node. The ingress node then generates and / or stores one or more segment lists (e.g., in a forwarding table) describing the P2MP path and associates the segment lists with a packet flow. In step 901, an ingress node receives a packet. According to an example, the packet may be received in an IPv4 format or an IPv6 format. The ingress node identifies that the packet is part of a packet flow associated with a P2MP path, for example, based on a source and / or destination address of the packet.
[0120] In step 903, the ingress node optionally replicates the data packet to generate a copy of the data packet. For example, the ingress node may search a memory (e.g., a forwarding table) for a segment list associated with the data packet describing the P2MP path. When the P2MP path is associated with multiple segment lists, the ingress node replicates the data packet until there is one data packet for each segment list.
[0121] In step 905, the ingress node pushes the segment list onto the data packet. The segment list describes the SR P2MP path as a list of multicast SIDs. Each multicast SID includes a multicast adjacency label for a link or interface addressing the corresponding node. Specifically, each multicast SID can be recognized by the network as an MPLS label. Therefore, the segment list includes multiple labels. The segment list can be implemented as a label stack. Therefore, the top label of the segment list includes a multicast adjacency label of the next hop along a subtree of the SR P2MP path, where the subtree is rooted at the ingress node and proceeds along a single downstream branch starting from the ingress node at the downstream interface. The segment list can be pushed onto the data packet by using an encapsulation protocol, which results in a data packet in SR-MPLS format that describes the P2MP path or its subtree.
[0122] In step 907, the ingress node optionally pushes a second segment list onto the copy of the packet generated in step 903. Thus, step 907 is used only when the P2MP path includes two or more downstream branches from the ingress node. The second segment list is substantially similar to the segment list of step 905, but describes a different subtree of the P2MP path rooted at the ingress node on the second downstream branch and the second downstream interface. The second segment list can be pushed onto the copy of the packet using an encapsulation protocol, which results in a replicated packet in SR-MPLS format that describes the subtree of the P2MP path. When there are two or more segment lists, as is the case when step 907 is used, each segment list can describe a different subtree of the SR-P2MP path.
[0123] The segment lists collectively describe the SR-MPLS P2MP path. Thus, the segment lists support the creation of SR P2MP paths that are stateless on the network. The segment list may use a multicast SID in one of several formats. For example, each of the multicast SIDs in the segment list may be 32 bits long and include a multicast adjacency label that includes a 20-bit field that uniquely identifies the interface of the corresponding node. In some examples, the multicast SID may include an AI field and / or be associated with an AI field. The AI field / block may be 32 bits long. The AI field / block may include an 8-bit position of a SID block that indicates the position in the segment list of the multicast SID of the subtree downstream of the corresponding node. The AI field / block may also include an 8-bit branch number field indicating the number of branches of the subtree downstream of the corresponding node. The branch number field may be located after the block position field in the AI block / field. The AI field / block may also include an 8-bit SID number field indicating the number of multicast SIDs (e.g., hops) included in the subtree downstream of the corresponding node. The number field of the SID may be located after the number field of branches and the block position field in the AI block / field. In some examples, the AI block / field of the multicast SID of the egress node is omitted from the segment list because the independent variables in the AI block / field of the egress node are all zero and do not include useful information. In some examples, the block position field and the number field of the SID count each multicast SID and AI block pair as a single SID / segment list entry. In some examples, the block position field and the number field of the SID count each multicast SID and each AI block as a separate SID / segment list entry. In other examples, the multicast SID does not include the AI block / field. In this case, the multicast SID is 32 bits long and includes a 20-bit multicast adjacency label, a 4-bit number field of branches after the multicast adjacency label, and an 8-bit number field of SIDs after the number field of branches. In this case, the block position field is omitted in the multicast SID.
[0124] In step 909, the ingress node sends the data packet on the downstream interface of the SR P2MP path according to the top-of-stack label in the segment list. Similarly, in step 911, the ingress node optionally sends a copy of the data packet on a second or different downstream interface than the data packet. Step 911 is optional because it is only used when steps 903 and 907 are used.
[0125] Fig.101 is a flow chart of an example method 1000 for an intermediate node (e.g., intermediate node 103) and / or network node 200 in an MPLS network (e.g., network 100) to forward a data packet along a P2MP path (e.g., P2MP path 107). For example, an intermediate node may receive a data packet including an upstream segment list having a top-of-stack SID / label representing the intermediate node. The intermediate node may then optionally replicate the data packet, create one or more downstream segment lists, and include these downstream segment lists in corresponding data packets for transmission along the P2MP path. The upstream segment list and the downstream segment list (e.g., segment lists 400, 401, 500, 501, 600, 601, 800, and / or 801) include a multicast SID (e.g., multicast SID 300 and / or 700), which represents a link / node interface as a hop along the P2MP path and describes the structure of the P2MP path and / or its subtree. It should be noted that the term multicast SID can be applied to a multicast SID and a corresponding AI, a multicast SID without an AI, and / or a combination thereof. It should also be noted that a multicast SID can also be referred to as a multicast adjacency SID in some contexts.
[0126] The intermediate node is located in a network (e.g., an MPLS network) and is positioned along an SR P2MP-based path. However, the intermediate node does not store the state of the SR P2MP path, which may also be referred to as an SR-MPLS P2MP path. Therefore, the intermediate node may not be aware of the SR P2MP path. Therefore, the intermediate node forwards the data packet along the P2MP path based on the segment list and / or multicast SID included in the data packet. Therefore, in step 1001, the intermediate node receives a data packet in MPLS format. The data packet may be received directly from the ingress node or through one or more other intermediate nodes. The data packet includes an upstream segment list describing one or more subtrees of the SR P2MP path. The upstream segment list can be implemented in an MPLS label stack.
[0127] In step 1003, the intermediate node determines a downstream segment list of a subtree describing a downstream interface of the intermediate node included in the SR P2MP path. The downstream segment list is determined based on the upstream segment list. The downstream segment list includes a list of SIDs, each SID including a multicast adjacency label. If the top SID of the received upstream segment list includes a number of branches field set to a value of 1, the downstream segment list can be determined by popping the top SID from the upstream segment list. However, when the number of branches field in the top label is greater than 1, the multicast SIDs in the upstream segment list should be distributed in two or more downstream segment lists. In this case, the first one in the downstream segment list can be determined as follows. The number of branches included in the top SID in the data packet can be used to determine the number of next hop nodes. The number of SIDs field in the multicast SID of each next hop node can be used to determine the number of multicast SIDs in each subtree associated with each next hop node. When present, the position of the SID field of each subtree can be used to locate additional multicast SIDs, which, when present, are part of each subtree including each next hop node in the upstream segment list. Then, the downstream segment list may be generated to include only the multicast SIDs associated with the subtree of the next hop node associated with the downstream interface. Further, subsequent downstream segment lists may also be determined through a similar process.
[0128] In step 1005, the intermediate node replicates the data packet to generate a copy of the data packet for sending on the second downstream interface of the intermediate node. Step 1005 is optional and is performed when the received top SID of the upstream segment list includes a number of branches field set to a value greater than 1. For example, the intermediate node generates copies of the data packet until the total number of data packets equals the value of the number of branches field in the top SID of the upstream segment list. It should be noted that the top SID / label of the upstream segment list includes a label identifying the upstream interface of the intermediate node.
[0129] In step 1007, the intermediate node optionally determines a second downstream segment list based on the upstream segment list, for example, by using the process described in step 1003. Step 1007 is used when the number of branch fields in the top SID of the upstream segment list is greater than 1, and thus step 1007 is used when the packet is replicated in step 1005. The second downstream segment list describes a second subtree of a second downstream interface included in the SR P2MP path, wherein the second downstream interface is different from the downstream interface of step 1003. Therefore, the segment list and the second segment list include different multicast SIDs and describe different subtrees of the SR P2MP path rooted at different downstream interfaces of the intermediate node.
[0130] In step 1009, the intermediate node replaces the upstream segment list associated with the data packet with the downstream segment list. Similarly, in step 1011, the intermediate node replaces the upstream segment list associated with the copy of the data packet with the second downstream segment list. Replacing the segment list may be accomplished by popping, reading the multicast SID from the data packet / data packet copy, and / or pushing the multicast SID onto the data packet / data packet copy until the desired segment list is generated. For example, replacing the upstream segment list with the second downstream segment list may include duplicating the data packet including the upstream segment list (step 1005), and then replacing the upstream segment list with the second downstream segment list in the copy of the data packet.
[0131] The upstream segment list and the downstream segment list describe the subtree of the SR-MPLS P2MP path. The segment list may use a multicast SID in one of several formats. For example, each of the multicast SIDs in the segment list may be 32 bits long and include a multicast adjacency label that includes a 20-bit field that uniquely identifies the interface of the corresponding node. In some examples, the multicast SID may include an AI field and / or be associated with an AI field. The AI field / block may be 32 bits long. The AI field / block may include an 8-bit position of a SID block that indicates the position in the segment list of the multicast SID of the subtree downstream of the corresponding node. The AI field / block may also include an 8-bit branch number field indicating the number of branches of the subtree downstream of the corresponding node. The branch number field may be located after the block position field in the AI block / field. The AI field / block may also include an 8-bit SID number field indicating the number of multicast SIDs (e.g., hops) included in the subtree downstream of the corresponding node. The SID number field may be located after the branch number field and the block position field in the AI block / field. In some examples, the AI block / field of the multicast SID of the egress node is omitted from the segment list because the arguments in the AI block / field of the egress node are all zero and do not include useful information. In some examples, the block position field and the number of SIDs field count each multicast SID and AI block pair as a single SID / segment list entry. In some examples, the block position field and the number of SIDs field count each multicast SID and each AI block as a separate SID / segment list entry. In other examples, the multicast SID does not include the AI block / field. In this case, the multicast SID is 32 bits long and includes a 20-bit multicast adjacency label, a 4-bit number of branches field after the multicast adjacency label, and an 8-bit number of SIDs field after the number of branches field. In this case, the block position field is omitted from the multicast SID.
[0132] In step 1013, the intermediate node sends the data packet on a downstream interface along the SR P2MP path. Further, the intermediate node sends a copy of the data packet on a second downstream interface along the SR P2MP path.
[0133] Fig.11 The present invention is an embodiment of a device 1100 for maintaining a P2MP path in an MPLS network. For example, the device 1100 may be used to implement the method 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 400, 401, 500, 501, 600, 601, 800, and / or 801 including the multicast SID (e.g., the multicast SID 300 and / or 700).
[0134] In one example, the device 1100 includes a receiving module 1101 for receiving a data packet. The device 1100 also includes a processing module 1103 for pushing a segment list onto the data packet, the segment list describing the SR P2MP path as a list of multicast SIDs, each multicast SID including a multicast adjacency label. The device 1100 includes a storage module 1105 for storing the data packet and / or the segment list. The device 1100 also includes a sending module 1107 for sending the data packet on a downstream interface along the SR P2MP path.
[0135] In another example, the device 1100 includes a receiving module 1101 for receiving an MPLS formatted data packet including an upstream segment list of one or more subtrees describing an SR P2MP path. The device 1100 also includes a processing module 1103 for determining a downstream segment list of a subtree describing a downstream interface of an intermediate node included in the SR P2MP path based on the upstream segment list, the downstream segment list including a list of SIDs, each SID including a multicast adjacency label. The processing module 1103 is also used to replace the upstream segment list associated with the data packet with the downstream segment list. The device 1100 includes a storage module 1105 for storing data packets and / or segment lists. The device 1100 also includes a sending module 1107 for sending a data packet on a downstream interface along the SR P2MP path.
[0136] A first component is directly coupled to a second component when there is no intermediate component between the first component and the second component other than a line, trace, or other medium. A first component is indirectly coupled to a second component when there is an intermediate component between the first component and the second component other than a line, trace, or other medium. The term "coupled" and its synonyms include direct coupling and indirect coupling. Unless otherwise specified, the term "approximately" means a range of ±10% of the number that follows it.
[0137] It should also be understood that the steps of the exemplary methods described herein do not necessarily need to be performed in the order described, and the order of the steps of these methods should be understood to be merely exemplary. Similarly, in methods consistent with various embodiments of the present invention, these methods may include other steps, and some steps may be omitted or combined.
[0138] Although the present invention provides several embodiments, it should be understood that the disclosed systems and methods may be embodied in other various specific forms without departing from the spirit or scope of the present invention. The present examples are considered to be 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 in another system, or some features may be omitted or not implemented.
[0139] In addition, without departing from the scope of the present invention, the techniques, systems, subsystems and methods described and illustrated as discrete or separate in various embodiments may be combined or integrated with other systems, components, techniques or methods. Other changes, substitutions, and modified 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 multiprotocol label switching (MPLS) network, characterized in that: The method comprises: The receiver of the ingress node receives the data packet; The processor of the ingress node pushes a segment list onto the data packet, the segment list describing a segment routing point to multipoint (SR P2MP) path as a list of multicast segment identifiers (SIDs); Each multicast SID includes a multicast adjacency label for identifying a link or interface of a node along the SR P2MP path, the number of branches of a subtree downstream of any node other than the entry node, the number of SIDs included in a subtree downstream of any node other than the entry node, and a pointer to a multicast SID specified in the segment list; wherein the specified multicast SID is included in a subtree with the current multicast SID as a root node, and by providing the pointer, a pointer of a multicast SID in the multicast SID sequence points to the next multicast SID in the multicast SID sequence, the segment list of each multicast SID is part of the multicast SID sequence, and the stack top label of the segment list is the multicast adjacency label of the next hop of the subtree along the SR P2MP path; The transmitter of the ingress node sends the data packet on a downstream interface along the SR P2MP path.
2. The method according to claim 1, characterized in that Also includes: The processor replicates the data packet to generate a copy of the data packet; the processor pushing a second segment list onto the copy of the data packet; The transmitter transmits the copy of the data packet on a second downstream interface along the SR P2MP path, 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 claim 1 or 2, characterized in that: Each multicast adjacency label includes a 20-bit field that uniquely identifies the interface of any node other than the ingress node.
5. The method according to claim 1, characterized in that The number of branches field is a 4-bit field, and the number of SIDs field is an 8-bit field.
6. The method according to claim 1 or 2, characterized in that: One or more of the multicast SIDs are associated with one or more association information blocks, each association information block including: the location of the SID block of the subtree downstream of any node other than the entry node, the number of branches of the subtree downstream of any node other than the entry node, and the number of SIDs included in the subtree downstream of any node other than the entry node.
7. The method according to claim 6, characterized in that The position field of the SID block is an 8-bit field, the number field of the branches is an 8-bit field, and the number field of the SID is an 8-bit field.
8. The method according to claim 1 or 2, characterized in that: The associated information blocks of the egress node are omitted from the segment list.
9. A method implemented by an intermediate node on a segment routing point-to-multipoint (SR P2MP) path in a network, characterized in that: The method comprises: The receiver of the intermediate node receives a data packet in a multiprotocol label switching (MPLS) format, the data packet including an upstream segment list describing one or more subtrees of the SR P2MP path; The processor determines, based on the upstream segment list, a downstream segment list describing a subtree of a downstream interface of the intermediate node included in the SR P2MP path, the downstream segment list comprising a list of multicast segment identifiers (SIDs); Each multicast SID includes a multicast adjacency label for identifying a link or interface of a node along the SR P2MP path, the number of branches of a subtree downstream of any node other than an ingress node, the number of SIDs included in a subtree downstream of any node other than the ingress node, and a pointer to a multicast SID specified in the segment list; wherein the specified multicast SID is included in a subtree with the current multicast SID as a root node, and by providing the pointer, a pointer of a multicast SID in the multicast SID sequence points to the next multicast SID in the multicast SID sequence, the segment list of each multicast SID is part of the multicast SID sequence, and the top-level multicast SID of the segment list is the multicast SID of the intermediate node; the processor replacing the upstream segment list associated with the data packet with the downstream segment list; The transmitter of the ingress node transmits the data packet on the downstream interface along the SR P2MP path.
10. The method according to claim 9, characterized in that Also includes: The processor replicates the data packet to generate a copy of the data packet for sending on a second downstream interface of the intermediate node; determining, by the processor, based on the upstream segment list, a second downstream segment list describing a second subtree of the second downstream interface included in the SR P2MP path; the processor replacing the upstream segment list associated with the copy of the data packet with the second downstream segment list; The transmitter transmits the copy of the data packet on the second downstream interface along the SR P2MP path.
11. The method according to claim 10, 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.
12. The method according to claim 9 or 10, characterized in that Determining the downstream segment list includes: Determine the number of next-hop nodes using the number of branches in the top SID in the data packet; Using 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; locating a multicast SID for at least one next hop node in the subtree from the upstream segment list using the position of the SID block of the subtree; The downstream segment list is generated to include only multicast SIDs associated with the subtree of the next hop node, the next hop node being associated with the downstream interface.
13. The method according to claim 9 or 10, characterized in that: Each multicast adjacency label includes a 20-bit field that uniquely identifies the interface of any node other than the ingress node, wherein each multicast SID also includes: a 4-bit field representing the number of branches of a subtree downstream of any node other than the ingress node, and an 8-bit field representing the number of SIDs included in the subtree downstream of any node other than the ingress node.
14. The method according to claim 9 or 10, characterized in that Each multicast adjacency label includes a 20-bit field that uniquely identifies an interface of any node other than the ingress node, one or more of the multicast SIDs are associated with one or more association information blocks, each association information block includes: an 8-bit field representing a position field of a SID block of a subtree downstream of any node other than the ingress node, an 8-bit field representing a number field of branches of the subtree downstream of any node other than the ingress node, and an 8-bit field representing a number field of SIDs included in the subtree downstream of any node other than the ingress node.
15. The method according to claim 9 or 10, characterized in that The associated information blocks of the egress node are omitted from the segment list.
16. The method according to claim 9 or 10, characterized in that The intermediate node does not store the state of the SR P2MP path.
17. 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 comprises computer executable instructions stored in the non-transitory computer readable medium, which, when executed by a processor, cause the first node to perform the method according to any one of claims 1 to 16.
18. An ingress node in a multiprotocol label switching (MPLS) network, characterized in that: The nodes include: A receiving component, used for receiving a data packet; A processing component for pushing a segment list onto the data packet, the segment list describing a segment routing point to multipoint (SR P2MP) path as a list of multicast segment identifiers (SIDs) Each multicast SID includes a multicast adjacency label for identifying a link or interface of a node along the SR P2MP path; the number of branches of a subtree downstream of any node other than the entry node, the number of SIDs included in a subtree downstream of any node other than the entry node, and a pointer to a multicast SID specified in the segment list; wherein the specified multicast SID is included in a subtree with the current multicast SID as a root node, and by providing the pointer, a pointer of a multicast SID in the multicast SID sequence points to the next multicast SID in the multicast SID sequence, the segment list of each multicast SID is part of the multicast SID sequence, and the stack top label of the segment list is a multicast adjacency label of the next hop of the subtree along the SR P2MP path; The sending component is used to send the data packet on a downstream interface along the SR P2MP path.
19. The entry node according to claim 18, characterized in that The receiving component, the processing component and the sending component are configured to execute the method according to any one of claims 1 to 8.
20. An intermediate node in a network, characterized in that: The nodes include: a receiving component configured to receive a data packet in a multiprotocol label switching (MPLS) format, the data packet including an upstream segment list describing one or more subtrees of a segment routing point-to-multipoint (SR P2MP) path; Processing components for: Determine, according to the upstream segment list, a downstream segment list describing a subtree of a downstream interface of the intermediate node included in the SR P2MP path, the downstream segment list comprising a list of multicast segment identifiers (SIDs); Each multicast SID includes a multicast adjacency label for identifying a link or interface of a node along the SR P2MP path, the number of branches of a subtree downstream of any node other than an ingress node, the number of SIDs included in a subtree downstream of any node other than the ingress node, and a pointer to a multicast SID specified in the segment list; wherein the specified multicast SID is included in a subtree with the current multicast SID as a root node, and by providing the pointer, a pointer of a multicast SID in the multicast SID sequence points to the next multicast SID in the multicast SID sequence, and the segment list of each multicast SID is a part of the multicast SID sequence, wherein the top-level multicast SID of the segment list is the multicast SID of the intermediate node; replacing the upstream segment list associated with the data packet with the downstream segment list; A sending component is used to send the data packet on the downstream interface along the SR P2MP path.
21. The intermediate node according to claim 20, characterized in that: The receiving component, the processing component and the sending component are configured to perform the method according to any one of claims 9 to 16.