The present disclosure is generally related to the field of network communication and, in particular, to multicast routing header with a point-to-multipoint (P2MP) path.
In computer networking, multicast is group communication where data transmission is addressed to a group of destination computers simultaneously. Multicast can be one-to-many or many-to-many distribution. The one-to-many configuration is known as P2MP.
Bit Index Explicit Replication (BIER) mechanisms provide optimized forwarding of multicast data packets through a BIER domain. Traffic Engineering (TE) is the process of steering traffic across to a telecommunications network to facilitate efficient use of available bandwidth between a pair of routers. BIER Traffic/Tree Engineering (BIER-TE) is described in IETF document “Tree Engineering for Bit Index Explicit Replication (BIER-TE)” by T. Eckert, et al., published Jul. 9, 2021. Existing techniques for BIER-TE are not suitable for a BIER-TE path with multiple sets of bitstrings (a.k.a., BitStrings, bit strings, bit positions, etc.). For example, the existing BIER-TE header is only able to accommodate one set of bitstrings.
The disclosed aspects/embodiments describe a stateless multicast traffic engineering (TE) along a point-to-multipoint (P2MP) path/tree using a TE multicast routing header (MRH) (e.g., an Internet Protocol version six (IPv6) extension header). The MRH with the P2MP path may be encoded using at least one of link numbers or link bits, and added into a routing packet to improve the overhead and efficiency of multicast TE.
A first aspect relates to a method implemented by an ingress network node in a TE multicast domain along a P2MP) path, comprising: receiving a packet from a traffic source; encapsulating the packet with a MRH for a sub-tree of the P2MP path through the TE multicast domain, wherein the MRH indicates the sub-tree by encoding link information of one or more links on the sub-tree, with the link information of the one or more links comprising a link number of a link from the ingress node to a next hop node or a link bit indicating whether the link corresponding the link number is on the sub-tree; and sending the packet with the MRH toward the next hop node along the sub-tree.
Optionally, in any of the preceding aspects, another implementation of the aspect further comprises determining address of the next hop node from a neighbor address table using the link number of the link, wherein the neighbor address table comprises the address of the next hop node that is a media access control (MAC) address or an IPV6 address.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the MRH comprises at least one of a link number (Link-No) field for indicating the link number of the link or a link bits field having link bits corresponding to respective link numbers of links, and wherein the link bits indicate whether the links corresponding to the respective link numbers are on the sub-tree.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the MRH further comprises at least one of a number of branches (N-Branches) field for indicating the number of branches from the next hop node of the link along the sub-tree, a size of branches (S-Branches) field, or a field for indicating a pointer pointing to the sub-tree.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the MRH further comprises an L flag indicating whether the next hop node of the link is a leaf node.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the MRH further comprises a B flag with a value indicating that the link bits are used to represent the link information.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the MRH comprises a flag with a value indicating the link directly from a root of the sub-tree is encoded by the link bits.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the link bits field comprises a Bits field having multiple bits corresponding to respective link numbers, a Plus (P) field with a value indicating that a bit with a first value in the Bits field means a corresponding link is on a branch and the next hop node is a leaf node, and a size of the bits (S-Bits) field indicating a size of the Bits field in a unit.
A second aspect relates to a method implemented by a transit node in a TE multicast domain along a P2MP path, comprising: receiving a packet with a MRH and a destination address (DA), wherein the MRH indicates a sub-tree from the transit node by encoding first link information of one or more first links on the sub-tree, with the first link information of the one or more first links comprising a first link number of a first link from the transit node or a link bit indicating whether the first link corresponding the first link number is on the sub-tree; duplicating a copy of the packet for the sub-tree and determining a next hop node in accordance with the MRH; and sending the copy of the packet toward the next hop node along the sub-tree.
Optionally, in any of the preceding aspects, another implementation of the aspect provides sending the copy of the packet toward the next hop node along the sub-tree comprises sending the copy of the packet with an updated MRH toward the next hop node along the sub-tree, with the updated MRH comprising second link information of one or more second links determined in accordance with the MRH.
Optionally, in any of the preceding aspects, another implementation of the aspect further comprising setting a DA of the copy of the packet to address of the next hop node from a neighbor address table using the first link number of the first link from the transit node to the next hop node, wherein the neighbor address table comprises the address of the next hop node that is a MAC address or an IPv6 address.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the MRH comprises at least one of a link number (Link No) field for indicating a link number of a link or a link bits field having multiple bits corresponding to respective link numbers of links, and wherein the multiple bits indicate whether the links corresponding to the respective link numbers are on the sub-tree.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the MRH further comprises at least one of a number of branches (N-Branches) field for indicating the number of branches, a size of branches (S-Branches) field, or a field for indicating a pointer pointing to the sub-tree.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the MRH comprises an L flag with a value indicating that the next hop node is a leaf node and has no corresponding N-Branches field and corresponding S-Branches field.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the first link information further includes a B flag with a value indicates that link bits of the link bits field are used to represent the link information.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the link bits field comprises a Bits field having multiple bits corresponding to respective link numbers, a Plus (P) field with a value indicating that a bit with a first value in the Bits field means a corresponding link is on a branch and the next hop node is a leaf node, and a size of the bits (S-Bits) field with a value indicating a size of the Bits field in a unit.
A third aspect relates to an ingress node in a TE multicast domain along a P2MP path, comprising: a memory storing instructions; and a processor coupled to the memory, the processor configured to execute the instructions to cause the ingress node to execute one or more of the disclosed embodiments.
A fourth aspect relates to a transit node in a TE multicast domain along a P2MP path, comprising: a memory storing instructions; and a processor coupled to the memory, the processor configured to execute the instructions to cause the transit node to execute one or more of the disclosed embodiments.
A fifth aspect relates to a non-transitory computer readable medium comprising a computer program product for use by an ingress network node, the computer program product comprising computer executable instructions stored on the non-transitory computer readable medium that, when executed by one or more processors, cause the ingress network node to execute one or more of the disclosed embodiments.
A sixth aspect relates to a non-transitory computer readable medium comprising a computer program product for use by a transit node, the computer program product comprising computer executable instructions stored on the non-transitory computer readable medium that, when executed by one or more processors, cause the transit node to execute one or more of the disclosed embodiments.
A seventh aspect relates to an ingress network node in a TE multicast domain along a P2MP path, comprising means for executing one or more of the disclosed embodiments.
An eighth aspect relates to a transit node in a TE multicast domain along a P2MP path, comprising means for executing one or more of the disclosed embodiments.
For the purpose of clarity, any one of the foregoing embodiments may be combined with any one or more of the other foregoing embodiments to create a new embodiment within the scope of the present disclosure.
These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
It should be understood at the outset that although an illustrative implementation 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 disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
For BIER-TE, a BIER-TE “packets BitString” indicates the edges of the (loop-free) tree across which the packets are forwarded by BIER-TE. Existing techniques for BIER-TE are not suitable for a BIER-TE path with multiple sets of bitstrings (a.k.a., BitStrings, bit strings, bit positions, etc.). For example, the existing BIER-TE header is only able to accommodate one set of bitstrings. Thus, the existing BIER-TE header will not work for a BIER-TE path with more than one set of bitstrings. This causes inefficiency and leads to difficulties in computing and setting up paths (e.g., P2MP paths) through the BIER-TE domain.
Furthermore, a segment routing header (SRH) with multicast SIDs encoding an SR P2MP path is relatively large. This is due to the size of the multicast SIDs, which are 128 bits each. The size of the multicast SIDs in the SRH increases the overhead of SR multicast, which decreases the efficiency of SR multicast.
Disclosed herein are techniques that describe a stateless multicast TE along an explicit P2MP path/tree using an IPV6 extension header called TE MRH. The MRH with the path encoded in link numbers and/or link bits is added into a packet to be multicast at the ingress to decrease the overhead and to increase the efficiency of multicast TE relative to existing techniques.
Each of the network nodes 106-132 may comprise a router, switch, or other telecommunications device configured to receive, route, store, and transmit packets 130. Some of the network nodes, namely the network nodes 106, 116, 118, 120, 122, 124, 126, 128, 130, and 132 are disposed at an edge of the TE multicast domain 102. The network nodes 106, 112, 114, 120, 122, 124, 126, 128, 130, and 132 receiving multicast packets from outside the TE multicast domain 102 may be referred to as an ingress node (or an ingress network node). The nodes 106, 116, 118, 120, 122, 124, 126, 128, 130, and 132 transmitting multicast packets out of the TE multicast domain 102 may be referred to as an egress node (or an egress network node). Depending on the direction of multicast packet traffic, each of the network nodes 106, 116, 118, 120, 122, 124, 126, 128, 130, and 132 may function as an ingress node or an egress node. The network nodes 108, 110, 112, and 114 forwarding multicast packets in the TE multicast domain 102 may be referred to as a transit node.
For case of reference, the various network nodes have been given a letter and number designation. For example, the content source 104 is designated CE1, the network node 106 is designated PE1, the network node 108 is designated P1, and so on.
The content source 104 and network nodes 106-132 in
Using the various links 150, an P2MP path 160 may be established through the TE multicast domain 102. The P2MP path 160 is used to distribute the packets 130 within the TE multicast domain 102 to the entity or device (not shown) that requested the content included in the packets 130.
The network nodes 106-132 in
In another embodiment, each link connected to a network node 106-132 in the TE multicast domain 102 may be represented by the link numbers and/or link bits along the P2MP path 160. For example, PE1's link number is 2, P1's link bits represent link numbers 2, 3, 4 and 5, P2's link numbers are 1 and 2, P3's link number is 2, and P4's link bits represent link numbers 6, 7, 8 and 9. As such, link bits are used when encoding a part of the branches (a.k.a, sub-trees/links) from a node is more efficient; otherwise, the link numbers are used.
When a node (e.g., network node 106) receives a packet (e.g., one of the packets 130), the node duplicates the packet received from an incoming interface and delivers the duplicated packet to each of the multiple outgoing interfaces along the TE P2MP path 160. The TE P2MP path 160 may be referred to as the TE P2MP tree, each segment of the TE P2MP tree from a node via a link towards the egress nodes of the TE P2MP tree may be referred to as a branch or a sub-tree, and each egress node may be referred to as a leaf (or one of the leaves).
For a packet 130 received by the ingress node 106, the ingress node 106 encapsulates the packet 130 with an MRH including a P2MP path 160 represented by the link numbers and/or links bits along the P2MP path 160. When a network node 106-132 receives the packet 130 with the MRH, the node may get/pops each of the node's own link numbers and finds the address of a next hop node from a neighbor table using the link number. For example, when P1 receives the packet with link number 3, P1 sends the packet to the next hop node such as P3.
The packet 130 received from the multicast source (e.g., network node 104 designated CE1) is imported into the TE P2MP path 160 at the ingress node 106 and sent to the egress nodes 116-132 of the TE P2MP path 160 along the TE P2MP path 160. For example, in
In an embodiment, the egress node is PE1 in
For case of discussion, all of the network nodes 304-318 have been given a letter designation. For example, the network node 304 has the designation A, the network node 306 has the designation B, the network node 308 has the designation C, the network node 310 has the designation D, the network node 312 has the designation E, the network node 314 has the designation F, the network node 316 has the designation G, and the network node 318 has the designation H.
Some of the network nodes, namely the network nodes A, D, E, F and H, are disposed at an edge of the TE multicast domain 302. The network nodes A, D, E, F and H receiving multicast packets from outside the TE multicast domain 302 may be referred to as an ingress node. The network nodes A, D, E, F and H transmitting multicast packets out of the TE multicast domain 302 may be referred to as an egress node. Depending on the direction of multicast packet traffic, each of the network nodes A-H may function as an ingress node or an egress node. The network nodes A-H in
For a multicast packet containing the P2MP path with a LAN link from a node such as node G to the pseudo node Px 326 for the LAN, the node sends the packet towards Px's next hop nodes on the P2MP path encoded in the packet. The node sends the packet to Px 326 according to the neighbor address table of the node and the LAN link from the node to Px. The node then acts as Px to send the packet to each of the Px's next hop nodes that are on the P2MP path using the secondary neighbor table for Px.
In an embodiment, the sub-tree from P3 via P4 towards PE4 to PE7 in
For the link from P4 to PE4 (a leaf node/an egress node), a Link-No field 402 with the value of 9 indicates the link number of the link. The N-Branches field 404 and the S-Branches field 406 each have a value of 0 indicating there is no branch/link/sub-tree from node PE4.
For the link from P4 to PE5 (a leaf node/an egress node), a Link-No field 402 with the value of 8 indicates the link number of the link. The N-Branches field 404 and the S-Branches field 406 each have a value of 0 indicating there is no branch/link/sub-tree from node PE5.
For the link from P4 to PE6 (a leaf node/an egress node), a Link-No field 402 with the value of 7 indicates the link number of the link. The N-Branches field 404 and the S-Branches field 406 each have a value of 0 indicating there is no branch/link/sub-tree from node PE6.
For the link from P4 to PE7 (a leaf node/an egress node), a Link-No field 402 with the value of 6 indicates the link number of the link. The N-Branches field 404 and the S-Branches field 406 each have a value of 0 indicating there is no branch/link/sub-tree from node PE7.
In an embodiment, the sub-tree from P3 via P4 towards PE4 to PE7 in
Relative to the encoding sub-tree 400 of
For example, assume that the L flag field 414 and the link number field 402 occupy 1 byte, and that the N-Branches field 408 and S-Branches field 412 occupy another 1 byte. Keeping this in mind, the value of the L flag in the L flag field 414 for the link from P3 to P4 has a value of 0 (i.e., is set to zero). This indicates that P4 is not a leaf node. The link number field 402 has a value of 2 to indicate the link number of the link. The N-Branches field 408 has a value of 4 to indicate there are four branches/links/sub-trees from node P4. The S-Branches field 412 has a value of 4 to indicate a size of branches of node P4 along the sub-tree is 4 bytes. Thus, 6 bytes are used to encode the sub-tree from P3.
In contrast to the above, the value of the flag in the L flag field 414 for the link from P4 to PE4 has a value of 1 (i.e., is set to one). This indicates that PE4 is a leaf node (a.k.a., egress node). The link number field 402 has a value of 9 to indicate the link number of the link. However, because of the value of the L flag in the L flag field 414 is 1, the N-Branches field 408 and S-Branches field 412 have been removed. Thus, only 1 byte is used to encode this sub-tree from P4. Other sub-trees in
In an embodiment, the sub-tree from P3 via P4 towards PE4 to PE7 in
Relative to the encoding sub-tree 410 of
For example, assume that the value of P field 434 for the link from P3 to P4 has a value of 1 (i.e., is set to one). This indicates that a bit with value of 1 in the Bits field is associated with a corresponding link on the branch and the next hop node is a leaf node. As shown in
The S-Bits field 436 includes a value indicating the size of the Bits field in a unit (e.g. in a byte), and the Bits field 438 includes a value indicating a corresponding link on the sub-tree. For example, assume that the fields (i.e., L flag field 428, B flag field 432, Link-No field 422, N-Branches field 424 and S-Branches field 426) for the link from P3 to P4 occupy 2 bytes, P field 434 and S-Bits field 436 occupies 1 byte, and the Bits field 438 for the links from P4 occupy 2 bytes. Thus, encoding the branch from P3 uses 5 bytes in total. Therefore, the encoding sub-tree 420 of
In an embodiment, the number of branches from P4 is the number of bits with value of one in the Bits field. The N-Branches field for the link from P3 to P4 is used for other purposes. In an embodiment, N-Branches field 424 and S-Branches field 426 may be combined to represent the size of the branches plus the fields following.
In an embodiment, the sub-tree from PE1 via P1 towards to P2, P3, PE8, and PE9 in FIG. 1 is represented in
Relative to the encoding sub-tree 410 of
For example, B flag in the B flag field 450 for the link from PE1 to P1 is set to one to indicate that the link bits are used to represent the link information from node P1. Assume that the value of P field 452 has a value of 0 (i.e., is set to zero). This indicates that a bit with value of 1 in the Bits field is associated with a corresponding link on the branch and the next hop node is a transit node or leaf node on the tree. As shown in
The reduced fields for the link from P1 to P2 (where the L flag field 458 and the B flag field have a value of 0, the N-Branches field 462 has a value of 2, and the S-branches field 464 has a value of 7) indicate that the link's next hop is not a leaf, the link bits are not used for the branches from P2, the number of branches from P2 is two, and a size of branches from P2 along the sub-tree is 7 bytes.
The reduced fields for the link from P1 to P3 (where the L flag field 458 and the B flag field have a value of 0, the N-Branches field 462 has a value of 1, and the S-branches field 464 has a value of 5) indicate that the link's next hop is not leaf, the link bits are not used for the branches from P3, the number of branches from P3 is one, and a size of branches from P3 along the sub-tree is 5 bytes.
The reduced fields for the link from P1 to PE8 (where the L flag field 458 has a value of 1) indicate that the link's next hop node PE8 is a leaf. Because of the value of the L flag in the L flag field 458 is 1, the N-Branches field 462 and S-Branches field 464 have been removed.
The reduced fields for the link from P1 to PE9 (where the Link No field 458 has a value of 1) indicate that the link's next hop node PE9 is a leaf. Because of the value of the L flag in the L flag field 458 is 1, the N-Branches field 462 and S-Branches field 464 have been removed.
For example, assume that the fields (i.e., L flag field 458, B flag field 460, Link-No field 442, N-Branches field 462, and S-Branches field 464) for a link to a transit node occupy 2 bytes, a P field 452 and S-Bits field 454 occupy 1 byte, the reduced fields (i.e., L flag field 458, B flag field 460, N-Branches field 462, and S-Branches field 464) for a link to a transit node occupy 11 bits, the reduced fields (i.e., L flag field 458) for a link to a leaf occupy 1 bit. In this case, the reduced fields for the four links from P1 to P2, P3, PE8, and PE9 use 3 bytes (i.e., 24 bits). Thus, 7 bytes are used to encode the branch part from PE1 via P1 to P2, P3, PE8, and PE9.
In an embodiment, the sub-tree from P3 via P4 towards PE4 to PE7 in
Relative to the encoding sub-tree 410 of
For example, assume that the value of P field 532 for the link from P3 to P4 has a value of 11 (in binary). This indicates that a bit with value of 1 in the Bits field 536 is associated with a corresponding link on the branch and the next hop node is a leaf node. As shown in
The S-Bits field 534 includes a value 2 indicating the size of the Bits field in a unit (e.g. in a byte) and the Bits field 536 includes a value indicating a corresponding link on the sub-tree. For example, assume that the fields (i.e., L flag field 528, B flag field 530, Link-No field 522, N-Branches field 524 and S-Branches field 526) for the link from P3 to P4 occupy 2 bytes, P field 532 and S-Bits field 534 occupies 1 byte. Thus, encoding the branch from P3 uses 5 bytes in total. Therefore, the encoding sub-tree 520 of
In an embodiment, the number of branches from P4 is the number of bits with value of one in the Bits field 536. The N-Branches field 524 for the link from P3 to P4 is used for other purpose. In an embodiment, N-Branches field 524 and S-Branches field 526 may be combined to represent the size of the branches plus the fields following.
For the link from P2 to PE2, an L flag field 602 has a value 1 and a Link-No field 604 has a value 1. For the link from P2 to PE3, an L flag field 602 has a value 1 and a Link-No field 604 has a value 2. Thus, the encoding of these two links (P2 to PE2 and P2 to PE3) occupy 2 bytes. In an optional embodiment, when L flag field 602 has a value 1, the Link-No field 604 and a padding field 606 are combined to represent link number.
The encoding sub-tree from P3 via P4 towards PE4-PE7 is similar to the encoding sub-tree 420 of
In a similar way, encoding sub-tree from P3 via P4 towards PE4-PE7 in
As shown, the link number field 700 includes an E flag field 702 and a basic field 704 corresponding to a link. In an embodiment, the E flag field 702 comprises one bit and the basic field 704 comprises four bits. The E flag field 702 comprises one bit and includes an E flag. The basic field 704 includes a value that represents a particular link.
When the E flag in the E flag field 702 is set to 0, the basic field 704 includes a limited number of bits (e.g., 4 bits) that may be used to represent the link number. For example, assume the link number is 3. This link number can be represented in binary as 0011 using the four available bits. However, when the link number is larger (e.g., 4088), this number cannot be represented in four bits. Indeed, the number 4088 represented in binary is 111111111000, which will not fit within the basic field 704 comprising four bits.
As shown, the S-Branches field 720 includes an E flag field 702 and a basic field 714 corresponding to a size. In an embodiment, the E flag field 702 comprises one bit and the basic field 714 comprises four bits. The E flag field 702 comprises one bit and includes an E flag. The basic field 714 includes a value that represents a size of branches.
When the E flag in the E flag field 702 is set to 0, the basic field 714 includes a limited number of bits (e.g., 5 bits) that may be used to represent the size of branches. However, when the size is larger (e.g., 8091), this number cannot be represented in five bits. Indeed, the number 8091 will not fit within the basic field 714 comprising five bits.
In some embodiments, similar to adding E flag to a Link-No field as discussed above, E flag of E-flag field can also be added into the N-Branches field for a node to represent a larger number of branches.
When the E flag in the E flag field 804 is set to 0, the basic field 806 includes a limited number of bits (e.g., 4 bits) that may be used to represent the link number. For example, assume the link number is 2. This link number can be represented in binary as 0010 using the four available bits. However, when the link number is larger (e.g., 1023), this number cannot be represented in four bits. Indeed, the number 4088, which will not fit within the basic field 806 comprising four bits.
The routing packet 900 comprises a first field 902 including a destination address (DA) and source address (SA) such as destination MAC address and source MAC address, an MRH header 904, and a third field 906 including an IP multicast packet. The MRH header 904 includes a Type field, a header length (HL) field, and a sub-tree field. The Type field is set to a value to indicate that the routing packet is a multicast packet encapsulated in the MRH. The HL field is set to a value to indicate the length of the MRH excluding the Type field and the HL field. The sub-tree field indicates encoding of a sub-tree using link numbers and/or link bits.
For the link from PE1 to P1, B flag in the B flag field 450 for the link from PE1 to P1 is set to one to indicate that the link bits are used to represent the link information from node P1. The value of P field 452 has a value of 0 (i.e., is set to zero) that indicates that a bit with value of 1 in the Bits field means that a corresponding link from downstream node P1 is on the tree/branch. As shown in
The encoding sub-tree is similar to the encoding sub-tree of
For the link from P1 to P2, the 2-th bit with value 1 indicates local link number 2 for the link, and the reduced fields (i.e., L=0, B=0, N-Branches=2, and S-Branches=7) for the link indicate that the link's next hop is not leaf, link bits are not used for the branches from P2, the number of branches from P2 has a value 2 to indicate two branches/links/sub-trees from node P2, and the size of the branches from P2 has a value of 7 to indicate a size of branches from P2 along the sub-tree is 7 bytes.
For the link from P1 to P3, the 3-th bit with value 1 indicates local link number 3 for the link, and the reduced fields (i.e., L=0, B=0, N-Branches=1, and S-Branches=5) for the link indicate that the link's next hop is not leaf, link bits are not used for the branches from P3, the number of branches from P3 has a value 1 to indicate one branch/link/sub-tree from node P3, and the size of the branches from P3 has a value of 5 to indicate a size of branches from P3 along the sub-tree is 5 bytes.
For the link from P1 to PE8, the 4-th bit with value 1 indicates local link number 4 for the link, and the L-field 1008 set to 1 to indicate that the link's next hop is leaf.
For the link from P1 to PE9, the 5-th bit with value 1 indicates local link number 5 for the link, and the L-field 1010 set to 1 to indicate that the link's next hop is leaf.
For the link from P2 to PE2, a Link-No field 604 with the value of 1 indicates the link number of the link.
For the link from P2 to PE3, a Link-No field 604 with the value of 2 indicates the link number of the link.
For the link from P3 to P4, a Link-No field 604 with the value of 2 indicates the link number of the link.
For the link from P4 to PE4-PE7, there are four links from P4, namely a link from P4 to PE4, a link from P4 to PE5, a link from P4 to PE6, and a link from P4 to PE7. These four links have local link numbers 6, 7, 8, and 9, respectively on P1 and are represented by the 6-th bit, 7-th bit, 8-th bit and 9-th bit in the Bits field 438 (from left to right), respectively.
After receiving the packet from a node (e.g., ingress node PE1), transit node (e.g., P1) determines whether the packet contains the MRH by checking the Type field, the SA, and/or a range of the DA and SA in the packet. When the packet contains the MRH, the transit node duplicates the packet for each branch/sub-tree of the P2MP path 160 branching from the transit node. The transit node then sends a copy of the packet with an updated MRH to the next hop node along the branch/sub-tree.
For example, as shown in
For the first sub-tree from P1 to P2, P1 duplicates the packet. The duplicated IP multicast packet comprises: a first field 1012 setting a DA of the packet to include MAC address of P2 and setting SA of the packet to include MAC address of P1, a second field 1014 (i.e. an MRH header) including a type field, a header length (HL) field, and a sub-tree field for encoding sub-tree from P2 to PE2, PE9 using link numbers and link bits, and a third field 1016 including an IP multicast packet. In the second field 1014, the type field includes a value indicating the type of the routing packet or the type of routing header, to indicate that the packet is a multicast packet with MRH or the routing header is an MRH. The value can be any value that is different from the ones used for other headers and is to be determined (TBD). The header length field includes a value set to 3 (i.e., No. of branches from P2 occupy 1 byte and size of branches from P2 occupy 2 bytes) to indicate the length of the MRH. P1 then updates the MRH based on the encoding of the sub-tree as shown in
For example, as shown in
After receiving the packet from P1, P2 determines whether the packet contains the MRH. When the packet contains the MRH, P2 duplicates the IP multicast packet for each leaf/egress from P2 to leaves and sends the packet copy to the leaf/egress. P2 sends a copy of IP multicast packet to a first sub-tree PE2 and another copy to a second sub-tree PE3. In one embodiment, P2 sends the copy with MRH containing HL=0 to PE2 and PE3. In another embodiment, P2 sends the copy without MRH to PE2 and PE3.
For the sub-tree from P3, P1 duplicates the packet. The duplicated packet comprises a first field 1022 setting a DA of the packet to include MAC address of P3 and setting SA of the packet to include MAC address of P1. The MAC address of P3 is obtained from the neighbor MAC address table of P1 using the link number 3 from P1 to P3, a second field 1024 (i.e. MRH) including a type field, a header length (HL) field, and a sub-tree field, and a third field 1026 including an IP multicast packet. The type field of the MRH includes a value indicating the type of the routing packet or the type of routing header, to indicate that the packet is a multicast packet with MRH or the routing header is an MRH. The value can be any value that is different from the ones used for other headers and is to be determined (TBD). The header length field includes a value set to 6 (i.e., No. of branches from P3 occupy 1 byte and size of branches from P3 occupy 5 bytes) to indicate the length of the MRH. The sub-tree field is for encoding sub-tree from P3 to PE4-PE7 using link numbers and link bits. P1 then updates the MRH based on the encoding of the sub-tree as shown in
For example, as shown in
For example, as shown in
For example, assume that the value of P field 434 has a value of 1 (i.e., set to one). This indicates that a bit with value of 1 in the Bits field 438 is associated with a corresponding link on the branch and the next hop node is a leaf node. The S-Bits field 436 has a value 2 to indicate the size of the Bits field occupy 2 bytes.
For the link from P4 to PE7, the 6-th bit has value 1 in Bits field indicates link number 6 on P4. For the link from P4 to PE6, the 7-th bit has value 1 in Bits field indicates link number 7 on P4. For the link from P4 to PE5, the 8-th bit has value 1 in Bits field indicates link number 8 on P4. For the link from P4 to PE4, the 9-th bit has value 1 in Bits field indicates link number 9 on P4.
The duplicated packet comprises a first field 1032 setting a DA of the packet to MAC address of P4 and setting SA of the packet to MAC address of P3. The MAC address of P4 is obtained from the neighbor MAC address table of P3 using the link number 2 from P3 to P4, a second field 1034 (i.e. MRH) including a type field, a header length (HL) field, and a sub-tree field, and a third field 1036 including an IP multicast packet. The type field of the MRH includes a value indicating the type of the routing packet or the type of routing header, to indicate that the packet is a multicast packet with MRH or the routing header is an MRH. The value can be any value that is different from the ones used for other headers and is to be determined (TBD). The header length field includes a value set to 4 (i.e., L flag field and B flag field occupy 1 byte and size of branches from P4 occupy 3 bytes) to indicate the length of the MRH. The sub-tree field is for encoding sub-tree from P4 to PE4-PE7 using link numbers and link bits. P3 updates the MRH based on the encoding of the sub-tree as shown in
For example, after P1 duplicates the packet for the branch/sub-tree from P1 to P2 towards PE2 and PE3, P1 updates the MRH in the packet based on the sub-tree as in
P1 then sets the HL to the size of space, and sends the packet with the updated MRH to P2. The HL has set to a value of 8 (i.e., 1 byte plus the value 7 bytes in S-Branches field for the link from P1 to P2 as shown in
The MRH 1210 comprising a Next Header field 1208 with a value indicating the IP multicast datagram header in the packet, a Hdr Ext Len field 1212 with a value indicating the length of the MRH in a unit of 64 bits (i.e., 8 bytes) excluding the first 8 bytes, a Routing type field 1214 with a value (i.e., can be any value that is different from the ones used for other headers and is to be determined (TBD)) indicating that the routing header is an MRH for TE multicast, a Sub-tree Left (SL) field 1216 with a value that acts as a pointer pointing to the sub-tree, and a sub-tree field 1218 indicating encoding the TE multicast sub-tree using link numbers and link bits.
In a first case, when the links directly from the root of the sub-tree are encoded by the link numbers of the links, the top is the encoding of the first link of the sub-tree (i.e., the first link from the root of the sub-tree). In a second case, when the links directly from the root of the sub-tree are encoded by link bits, the top is the encoding of the link bits. The b flag field 1226 has set to a first value (i.e., 0) to indicate the first case and N-Branches field 1228 has a value indicating the number of branches/links from the root of the sub-tree in the first case. The b flag field 1226 has set to a second value (i.e., 1) to indicate the second case and N-Branches field 1228 is not used in the second case.
For the link from PE1 to P1, as shown in
The encoding sub-tree is similar to the encoding sub-tree of
For the link from P1 to P2, the 2-th bit with value 1 in the Bits field 446 indicates local link number 2 for the link, and the reduced fields (i.e., L=0, B=0, N-Branches=2, and S-Branches=7) for the link indicates that the link's next hop P2 is not leaf, link bits are not used for the branches from P2, the number of branches from P2 has a value 2 to indicate that there are two branches/links/sub-trees from node P2, and the size of the branches from P2 has a value of 7 to indicate that a size of branches from P2 along the sub-tree is 7 bytes.
For the link from P1 to P3, the 3-th bit with value 1 in the Bits field 446 indicating local link number 3 for the link, and the reduced fields (i.e., L=0, B=0, N-Branches=1, and S-Branches=5) for the link indicates that the link's next hop is not leaf, link bits are not used for the branches from P3, the number of branches from P3 has a value 1 to indicate there is one branch/link/sub-tree from node P3, and the size of the branches from P3 has a value of 5 to indicate a size of branches from P3 along the sub-tree is 5 bytes.
For the link from P1 to PE8, the 4-th bit with value 1 in the Bits field 446 indicates local link number 4 for the link, and the L-field set to 1 to indicate for that the link's next hop is leaf.
For the link from P1 to PE9, the 5-th bit with value 1 in the Bits field 446 indicates local link number 5 for the link, and the L-field set to 1 to indicate for that the link's next hop is leaf.
For the link from P2 to PE2, a Link-No field 604 with the value of 1 indicating the link number of the link.
For the link from P2 to PE3, a Link-No field 604 with the value of 2 indicating the link number of the link.
For the link from P3 to P4, a Link-No field 604 with the value of 2 indicating the link number of the link.
For the link from P4 to PE4-PE7, there are four links from P4, namely a link from P4 to PE4, a link from P4 to PE5, a link from P4 to PE6, and a link from P4 to PE7. These four links have local link numbers 6, 7, 8, and 9, respectively on P4 and are represented by the 6-th bit, 7-th bit, 8-th bit and 9-th bit in the Bits field (from left to right), respectively.
The encoding sub-tree of
As shown in
In one embodiment, as shown in
For example, as shown in
In one embodiment, the fields for encoding the branch from P3 follows the branches from P2.
The 3-th bit with value 1 indicates the link with link number 3, which is the link from P1 to P3. The second reduced fields are for link from P1 to P2 and indicates the number of branches from P3 is 1 and the size of branches from P3 plus the ones following them is 5.
For the link from P1 to P3, P1 duplicates the packet for the link with link number 3 and sends a copy of the packet with an updated MRH to P3.
For the link from P1 to PE8, the 4-th bit with value 1 indicates local link number 4 for the link, and the L field 1008 set to 1 to indicate for that the link's next hop is leaf
P1 duplicates the packet for the link with link number 4 and sends a copy of the packet with an updated MRH to PE8.
For the link from P1 to PE9, the 5-th bit with value 1 indicates local link number 5 for the link, and the L field 1010 set to 1 to indicate for that the link's next hop is leaf.
P1 duplicates the packet for the link with link number 5 and sends a copy of the packet with an updated MRH to PE9.
P1 duplicates the packet for the link with link number 3 (which is link from P1 to P3), finds P3's IPV6 address from P1's neighbor IPV6 address table using the link number 3 of the link from P1 to P3. The IP multicast packet comprises an IPV6 header field 1322 setting a DA of the IPV6 packet to IPv6 address of P3, an MRH field 1324 comprising a Type field, a b flag field, a sub-tree left (SL) field, a Number of Branches (N-Br) field, and a sub-tree field, and an IP multicast datagram field 1326. The Type field includes a value indicating the type of the routing packet. The value can be any value that is different from the ones used for other headers and is to be determined (TBD). The b flag field includes a value (i.e., 0) indicating the links from P3 are not encoded by link bits. The sub-tree left (SL) includes a value set to 5 indicates value of S-Branches for the link from P1 to P3, a Number of Branches (N-Br) field indicating the number of branches set to value 1, and a sub-tree field for encoding sub-tree from P3 via P4 to PE4-PE7 using link bits. As such, P1 updates the MRH by setting SL, b, and N-Br to S-Branches=5, B=0, and N-Branches=1 for the link from P1 to P3. respectively and sends the packet to next hop along the branch/sub-tree, i.e., P3 as shown in
The number of branches from P3 is 1. The link number of the link from P3 to P4 is 2 on P3. The size of branches from P4 is 3. B=1 for the link from P3 to P4 indicates that the links from P4 are encoded by link bits. The number of branches from P4 is the number of bits with value 1 in the Bits field for the links from P4 to PE4-PE7.
P3 duplicates the packet for the branch/sub-tree, finds P4's IPV6 address from P3's neighbor IPv6 address table using the link number 2 of the link from P3 to P4. The IP multicast packet comprises an IPV6 header field 1332 setting a DA of the IPV6 packet to IPv6 address of P4, an MRH field 1334 comprising a Type field, a b flag field, a sub-tree left (SL) field, a Number of Branches (N-Br) field, and a sub-tree field, and an IP multicast datagram field 1336. The Type field includes a value indicating the type of the routing packet. The value can be any value that is different from the ones used for other headers and is to be determined (TBD). The b flag field includes a value (i.e., 1) indicating the links from P4 are encoded by link bits. The sub-tree left (SL) includes a value set to 3 indicates a value of S-Branches for the link from P3 to P4, a Number of Branches (N-Br) field indicating the number of branches set to value 1, and a sub-tree field for encoding sub-tree from P4 to PE4-PE7 using link bits. As such, P3 updates the MRH by setting SL, b, and SL to S-Branches=3, B=1, and N-Branches is not set or used since b=1, respectively and sends the packet to next hop node along the branch/sub-tree, i.e., P4 as shown in
After receiving the layer 3 packet from P3, P4 determines whether the packet's next header is an MRH. When the packet's next header is the MRH, P4 duplicates the packet for each branch/link from P4 and sends the packet copy with an updated MRH to the next hop node along the branch. There are 4 branches/links from P4 according to the sub-tree remaining in the MRH in the packet received by P4.
The 6-th bit with value 1 in the Bits field indicates the link with link number 6, which is the link from P4 to leaf PE7.
The 7-th bit with value 1 in the Bits field indicates the link with link number 7, which is the link from P4 to leaf PE6.
The 8-th bit with value 1 in the Bits field indicates the link with link number 8, which is the link from P4 to leaf PE5.
The 9-th bit with value 1 in the Bits field indicates the link with link number 9, which is the link from P4 to leaf PE4.
In an embodiment, P4 duplicates the packet for the first link and finds PE7's IPV6 address from P4's neighbor IPV6 address table using the link number 6 of the link from P4 to PE7. The IP multicast packet 1340 comprises an IPV6 header field 1342 setting a DA of the IPV6 packet to IPv6 address of PE7, an MRH field 1344 comprising a Type field, a b flag field, a sub-tree left (SL) field, a Number of Branches (N-Br) field, and a sub-tree field, and an IP multicast datagram field 1346. The Type field includes a value indicating the type of the routing packet. The value is can be any value that is different from the ones used for other headers and to be determined (TBD). The sub-tree left (SL) includes a value set to zero. As such, P4 updates the MRH, and sends the packet to each of PE6, PE5 and PE4 as shown in
After receiving the packet from P4, PE7 determines whether the packet's next header is an MRH. When the packet's next header is the MRH, PE7 checks whether PE7 itself is a leaf (i.e., egress) through checking whether SL is 0. When PE7 is a leaf, PE7 decapsulates the packet and sends the IP multicast datagram to the IP multicast forwarding module.
Alternatively, after receiving the packet from P3 and determining that the packet's next header is an MRH, P4 checks whether each of its next hops is a leaf. When the next hop node is a leaf, P4 decapsulates the packet and sends the IP multicast datagram to the next hop node. Since next hops PE4-PE7 are leaves, P4 sends the IP multicast datagram to PE4-PE7.
In another embodiment, P4 decapsulates the packet and sends the IP multicast datagram to the next hop node (i.e., the leaf) of each link. P4 duplicates the packet for the first link without MRH, finds PE7's IPV6 address from P4's neighbor IPv6 address table using the link number 6 of the link from P4 to PE7, sets DA of the packet to PE7's IPV6 address and SA of the packet to P4's IPv6 address, and sends the packet copy without MRH to PE7.
The IP multicast packet 1400 comprises an IPV6 header field 1406 setting a DA of the IPv6 packet to IPv6 address of P1 and setting SA of the IPV6 packet to IPv6 address of PE1, an MRH field 1408 comprising a Type field, a sub-tree left (SL) field, and a sub-tree field, and an IP multicast datagram field 1410. The Type field includes a value indicating the type of the routing packet. The value can be any value that is different from the ones used for other headers and is to be determined (TBD). The sub-tree left (SL) includes a value set to 13. As such, PE1 updates the MRH, and sends the packet to P1 as shown in
In another embodiment, the b flag field and the N-Branches field are in a fixed location, which follows the SL field. The value in SL field acts as a pointer pointing to the top of the sub-tree remaining (i.e., the fields encoding the links/branches from the root of the sub-tree). In fact, the whole sub-tree from PE1 is not changed, only SL, b field, and N-Branches field are changed when a copy of the IPV6 packet has sent along the sub-tree.
In another embodiment, the b field and the N-Branches field are not in a fixed location. The location is pointed by SL. The value in SL field acts as a pointer pointing the location of b field and N-Branches field, which is followed by the sub-tree remaining (i.e., the fields encoding the links/branches from the root of the sub-tree). Thus, the parts of the sub-tree from PE1 are changed with updates to the b field and the N-Branches field when a copy of the IPV6 packet has sent along the sub-tree.
In one embodiment, at the destination node, normal demultiplexing on the Next Header field of the IPV6 header invokes the module to process the first extension header, or the upper-layer header if no extension header is present. The contents and semantics of each extension header determine whether or not to proceed to the next header.
The procedure or behavior on an ingress node (PE1) of a P2MP path is discussed.
For a packet to be transported by a P2MP path 160 as shown in
The procedure or behavior on a transit node of a P2MP path is discussed.
When a transit node of a P2MP path/tree receives a packet transported by the P2MP path, the transit node determines whether the current routing header is an MRH. After determining that the routing header is an MRH, the node executes the procedure to duplicate the packet for each of the downstream links of the node on the P2MP path/tree and send a copy of the packet to next hop (i.e., downstream node) of the link.
Suppose that the transit node receives the packet from an upstream link from an upstream node to the transit node and there are n downstream links from the transit node on the P2MP path/tree (i.e., there are n branches/sub-trees from the transit node on the P2MP path/tree, where n is greater than zero).
The information about the upstream link is in a b flag field and a N-Br field of the MRH. When b=0, the N-Br field contains the number of branches from the transit node. The information about n downstream links is pointed by SL. When b=1, the number of branches from the transit node is the number of bits with value 1 in the Bits field of the Bits fields pointed by SL. The information about n downstream links is encoded by the Bits field and the fields following the Bits field.
For example, when node P1 receives the packet transported by the P2MP path/tree in
The top of the MRH (i.e., the root (information) of the sub-trees) is indicated by SL. For example, when P1 receives the packet transported by the P2MP path/tree in
For each of the downstream links of the transit node, the transit node duplicates the packet for the link, sets SL, b flag field, and N-Br field in the copy of the packet accordingly. When the next hop is a leaf (i.e., egress), the transit node sets SL to 0; otherwise, the transit node sets SL, b flag field, and N-Br field to the value of S-Branches, B, and N-Branches for the link, respectively when B is 0. When B=1, the transit node sets SL and b to the value of S-Branches and B for the link, respectively. The transit node finds the IPV6 address of the next hop (i.e., the downstream node) of the link from the neighbor IPV6 address table of the transit node using the link number of the link, sets the DA of the packet copy to the IPV6 address of the next hop, and sends the packet copy to the next hop of the link.
For example, for the first downstream link from P1 (i.e., link from P1 to P2), P1 duplicates the packet for the link, sets SL to 7 (which is the value of the S-Branches field for the link), b to 0 (which is the value of B for the link) and N-Br field to 2 (which is the value of the N-Branches field for the link). P1 finds the IPV6 address of the next hop node P2 of the link from the neighbor IPv6 address table of P1 using the link number 2 of the link, sets the DA of the packet copy to the P2's IPV6 address, and sends the packet copy to P2. The packet copy received by P2 is shown in
For the second downstream link from P1 (i.e., link from P1 to P3), P1 duplicates the packet for the link, sets SL, b flag field, and N-Br field to 5, 0, and 1, respectively, which are the values of S-Branches, B, and N-Branches for the link from P1 to P3, respectively. P1 finds the IPV6 address of the next hop node P3 of the link from the neighbor IPv6 address table of P1 using the link number 3 of the link, sets the DA of the packet copy to the P3's IPV6 address, and sends the packet copy to P3. The packet copy received by P3 is illustrated in
For the 3-th downstream link from P1 (i.e., link from P1 to PE8), P1 duplicates the packet for the link, sets SL to 0 since PE8 is a leaf (i.e., egress). P1 finds the IPV6 address of the next hop node PE8 of the link from the neighbor IPV6 address table of P1 using the link number 4 of the link, sets the DA of the packet copy to the PE8's IPV6 address, and sends the packet copy to PE8.
In another embodiment, when a transit node of a P2MP path/tree receives a packet transported by the P2MP path/tree, the packet is encapsulated with an MRH. The node determines whether the MRH is a L2.5 MRH. After determining that the MRH is a L2.5 MRH, the node executes the procedure to duplicate the packet for each of the downstream links of the node on the P2MP path/tree and send the packet copy to the next hop node (i.e., downstream node) of the link.
Suppose that the transit node receives the packet from an upstream link from an upstream node to the transit node and there are n downstream links from the transit node on the P2MP path/tree (i.e., there are n branches/sub-trees from the transit node on the P2MP path/tree, wherein n is greater than zero).
The number of branches/sub-trees from the transit node is on the top of the L2.5 MRH. When B=0, N-Branches field for the upstream link contains the number of branches from the transit node. The information about n downstream links follows the information about the number of branches/sub-trees.
When B=1, the number of branches from the transit node is the number of bits with value 1 in the Bits field of the Bits fields pointed by the value of S-Branches field for the upstream link, which is the value of HL minus 1. The information about n downstream links is encoded by the Bits field and the reduced fields for these n downstream links following the Bits field.
For example, when node P1 receives the packet transported by the P2MP path/tree in
The top of the L2.5 MRH is indicated by HL. For example, when P1 receives the packet transported by the P2MP path/tree in
For each of the downstream links of the transit node, the transit node duplicates the packet for the link, sets HL in the packet copy to the size of the space/memory for storing the sub-trees from the next hop node of the link, makes the L2.5 MRH contain the information about the sub-trees from the next hop node (i.e., the number of branches/sub-trees from the next hop node and the information about the links on the sub-trees), finds the MAC address of the next hop node (i.e., the downstream node) of the link from the neighbor MAC address table of the transit node using the link number of the link, sets the DA of the packet copy to the MAC address of the next hop node, sets the SA of the packet copy to the MAC address of the transit node, and sends the packet copy to the next hop node of the link.
For the first downstream link with S-Branches field, HL is set to the value of the S-Branches field for the first downstream link minus the value of the S-Branches field for the second downstream link with S-Branches field plus the size of the space/memory for storing the number of branches from the next hop node (i.e., the downstream node) of the first downstream link. The information about the links on the sub-trees from the next hop node is in the area indicated by the value of the S-Branches field for the first downstream link as a starting point and the value of the S-Branches field for the second downstream link plus 1 as an ending point.
For the i-th downstream link (i<n) with S-Branches field, HL is set to the value of the S-Branches field for the i-th downstream link minus the value of the S-Branches field for the (i+1)-th downstream link with S-Branches field plus the size of the space/memory for storing the number of branches from the next hop node (i.e., the downstream node) of the i-th downstream link. The information about the links on the sub-trees from the next hop node is in the area indicated by the value of the S-Branches field for the i-th downstream link as a starting point and the value of the S-Branches field for the (i+1)-th downstream link plus 1 as an ending point.
For the i-th downstream link (i=n) with S-Branches field, HL is set to the value of the S-Branches field for the i-th downstream link plus the size of the space/memory for storing the number of branches from the next hop node (i.e., the downstream node) of the i-th downstream link. The information about the links on the sub-trees from the next hop node is in the area indicated by the value of the S-Branches field for the i-th downstream link as a starting point and 1 as an ending point.
For example, for the first downstream link from P1 (i.e., link from P1 to P2), P1 duplicates the packet for the link, sets HL to 3 (which is the value 7 of the S-Branches field for the link from P1 to P2 minus the value 5 of the S-Branches field for the link from P1 to P3, plus 1, where 1 (byte) is the size of the space/memory for storing the number of branches from P2). The information about the links on the sub-trees/branches from next hop node P2 is in the area from 7 to 5 (i.e., from byte 7 to byte 6=5+1, where byte is counted from bottom to top). P1 makes the L2.5 MRH to contain the number of branches from P2 in 1 byte and the information about the links on the sub-trees/branches from P2 in 2 bytes. P1 sets the DA of the packet copy to the P2's MAC address, sets the SA of the packet copy to the P1's MAC address, and sends the packet copy to P2. The packet copy received by P2 is shown in
For the second downstream link from P1 (i.e., link from P1 to P3), P1 duplicates the packet for the link, sets HL to 6 (which is the value 5 of the S-Branches field for the link from P1 to P3 plus 1, where 1 (byte) is the size of the space/memory for storing the number of branches from P3). The information about the links on the sub-trees/branches from next hop node P3 is in the area from 5 (to 1). P1 makes the L2.5 MRH to contain the number of branches from P3 in 1 byte and the information about the links on the sub-trees/branches from P3 in 5 bytes. P1 sets the DA of the packet copy to the P3's MAC address, sets the SA of the packet copy to the P1's MAC address, and sends the packet copy to P3. The packet copy received by P3 is illustrated in
The procedure or behavior on an egress node of a P2MP path is discussed.
When an egress node of a P2MP path receives a packet transported by the P2MP path, the DA is the address of the egress node and there is an indication in the MRH for the leaf/egress.
In a first embodiment, the DA of the packet is the MAC address of the egress node and the MRH is a L2.5 MRH. The L2.5 MRH has HL=0. In this case, the egress node decapsulates the packet and sends the IP multicast datagram to the IP multicast forwarding module.
For example, after receiving the packet from P2, PE3 determines whether there is a L2.5 MRH with HL=0. If so, PE3 decapsulates the packet and sends the IP multicast datagram to the IP multicast forwarding module.
In a second embodiment, the DA of the packet is the IPV6 address of the egress node and the MRH is a L3 MRH. In one embodiment, the L3 MRH has SL=0.
For example, after receiving the packet from P2, PE3 determines whether the packet's next header is an MRH. When the packet's next header is the MRH, PE3 checks whether PE3 itself is a leaf (i.e., egress) through checking whether SL is 0. When PE3 is a leaf, PE3 decapsulates the packet and sends the IP multicast datagram to the IP multicast forwarding module.
The techniques disclosed herein can be deployed in any router and switch, which are used by the service providers around the world, to improve network scalability and/or efficiency.
In block 1602, the ingress node receives a packet from a traffic source. In block 1604, the ingress node encapsulates the packet with an MRH for a sub-tree of the P2MP path through the TE multicast domain. In an embodiment, the sub-tree is encoded using link information of a link from the ingress node to a next hop node along the sub-tree. The MRH indicates the sub-tree by encoding link information of one or more links on the sub-tree, wherein the link information may include link number(s) of the one or more links or one or more link bits corresponding to respective link numbers and indicating whether links corresponding to the respective link numbers are on the sub-tree. The MRH may include link number (Link-No) field for indicating the link number(s) and a link bits field.
In block 1606, the ingress node sends the packet toward the next hop node along the sub-tree.
In an embodiment, the method 1600 further comprises determining address of the next hop node from a neighbor address table using the link number of the link, wherein the neighbor address table comprises the address of the next hop node that is a media access control (MAC) address or an Internet Protocol (IP) version 6 (IPv6) address.
In an embodiment, the MRH comprises at least one of a link number (Link-No) field for indicating the link number of the link or a link bits field having link bits corresponding to respective link numbers of links, and wherein the link bits indicate whether the links corresponding to the respective link numbers are on the sub-tree.
In an embodiment, the MRH further comprises at least one of a number of branches (N-Branches) field for indicating the number of branches from the next hop node of the link along the sub-tree, a size of branches (S-Branches) field, or a field for indicating a pointer pointing to the sub-tree.
In an embodiment, the MRH further comprises an L flag indicating whether the next hop node of the link is a leaf node.
In an embodiment, the MRH further comprises a B flag with a value indicating that the link bits are used to represent the link information
In an embodiment, the MRH comprises a flag with a value indicating the link directly from a root of the sub-tree is encoded by the link bits.
In an embodiment, the link bits field comprises a Bits field having multiple bits corresponding to respective link numbers, a Plus (P) field with a value indicating that a bit with a first value in the Bits field means a corresponding link is on a branch and the next hop node is a leaf node, and a size of the bits (S-Bits) field indicating a size of the Bits field in a unit.
The method 1700 may be performed to route a packet through a TE multicast domain along a P2MP path.
In block 1702, the transit node receives a packet with an MRH and a destination address (DA). In an embodiment, the MRH indicates a sub-tree from the transit node and may include link information of one or more links on the sub-tree. The MRH may include multiple fields for storing or indicating the link information. For example, the MRH may include a link number (Link-No) field for storing or indicating a link number, a number of branches (N-Branches) field for storing or indicating the number of branches of the sub-trees from the transit node, and a size of branches (S-Branches) field for storing or indicating a size of the branches the size of branches of the sub-tree/tree from the next hop node and/plus the fields following. In another embodiment, the S-Branches field may indicate a start of the branches of the sub-trees.
In block 1704, the transit node duplicates a copy of the packet for the sub-tree and determining a next hop node in accordance with the MRH. In an embodiment, the method 1704 further comprises determining a next node in accordance with the MRH. For example, the transit node may determine an address of the next hop node from a neighbor address table by using a link number of a link from the transit node to the next hop node. Then, the transmit node may set a DA of the copy of the packet to the address of the next hop node. The address of the next hop node may be a MAC address or IPv6 address. The neighbor address table includes a MAC address table or a neighbor IPv6 address table. In another embodiment, the transit node may update the MRH and sends the copy of packet with the updated MRH. The details of updating the MRH are as described above.
In block 1706, sending the copy of the packet toward the next hop node along the sub-tree.
In an embodiment, the MRH comprises at least one of a link number (Link No) field for indicating a link number of a link or a link bits field having multiple bits corresponding to respective link numbers of links, and wherein the multiple bits indicate whether the links corresponding to the respective link numbers are on the sub-tree.
In an embodiment, the MRH further comprises at least one of a number of branches (N-Branches) field for indicating the number of branches, a size of branches (S-Branches) field, or a field for indicating a pointer pointing to the sub-tree.
In an embodiment, the MRH comprises an L flag with a value indicating that the next hop node is a leaf node and has no corresponding N-Branches field and corresponding S-Branches field.
In an embodiment, the first link information further includes a B flag, and wherein the B flag with a value indicates that link bits of the link bits field are used to represent the link information.
In an embodiment, the link bits field comprises a Bits field having multiple bits corresponding to respective link numbers, a Plus (P) field with a value indicating that a bit with a first value in the Bits field means a corresponding link is on a branch and the next hop node is a leaf node, and a size of the bits (S-Bits) field with a value indicating a size of the Bits field in a unit.
The processor/processing means 1830 is implemented by hardware and software. The processor/processing means 1830 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor/processing means 1830 is in communication with the ingress ports/ingress means 1810, receiver units/receiving means 1820, transmitter units/transmitting means 1840, egress ports/egress means 1850, and memory/memory means 1860. The processor/processing means 1830 comprises a routing module 1870. The routing module 1870 is able to implement the methods disclosed herein. The inclusion of the routing module 1870 therefore provides a substantial improvement to the functionality of the network apparatus 1800 and effects a transformation of the network apparatus 1800 to a different state. Alternatively, the routing module 1870 is implemented as instructions stored in the memory/memory means 1860 and executed by the processor/processing means 1830.
The network apparatus 1800 may also include input and/or output (I/O) devices or I/O means 1880 for communicating data to and from a user. The I/O devices or I/O means 1880 may include output devices such as a display for displaying video data, speakers for outputting audio data, etc. The I/O devices or I/O means 1880 may also include input devices, such as a keyboard, mouse, trackball, etc., and/or corresponding interfaces for interacting with such output devices.
The memory/memory means 1860 comprises one or more disks, tape drives, and solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. The memory/memory means 1860 may be volatile and/or non-volatile and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and/or static random-access memory (SRAM).
While several embodiments have been provided in the present disclosure, it may be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, components, techniques, or methods without departing from the scope of the present disclosure. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and may be made without departing from the spirit and scope disclosed herein.
This patent application is a continuation of International Application No. PCT/US2023/060158 filed on Jan. 5, 2023, by Futurewei Technologies, Inc., and titled “Optimal Encoding Multicast Tree using Link Number and Bit,” which claims the benefit of U.S. Provisional Patent Application No. 63/314,582 filed Feb. 28, 2022 by Futurewei Technologies, Inc., and titled “Optimal Encoding Multicast Tree using Link Number and Bit,” which are hereby incorporated by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
63314582 | Feb 2022 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US2023/060158 | Jan 2023 | WO |
Child | 18818356 | US |