Adding network services to MPLS network
Described herein are methods and devices (e.g., routers) that add network services to a multiprotocol label switching (MPLS) network. A method can include a network device of the MPLS network receiving a packet, the network device of the MPLS network modifying the packet by adding multiple MPLS extension headers, wherein each of the multiple MPLS extension headers added to the packet is used to support a different one of multiple network services for the MPLS network, and the network device of the MPLS network forwarding the packet as modified to another network device of the MPLS network.
1 . A method for modifying a packet to enable multiple network services to be implemented by a multiprotocol label switching (MPLS) network, the method comprising:
a network device of the MPLS network receiving a packet;
the network device of the MPLS network modifying the packet by adding multiple MPLS extension headers, wherein each of the multiple MPLS extension headers added to the packet is used to implement a different one of the multiple network services for the MPLS network including at least one of Network Service Header (NSH), In-situ Operations, Administration, and Maintenance (IOAM), and network programming service; and
the network device of the MPLS network forwarding the packet as modified to another network device of the MPLS network.
2 . The method of claim 1 , wherein the multiple network services include one or more of the following:
a segment routing (SR) service; or
an extension header label (EHL) which comprises one of sixteen special-purpose reserved label values.
3 . The method of claim 1 , wherein the multiple network services include two or more of the following:
the NSH service;
the IOAM service;
an SR service; or
a network programming service.
4 . The method of claim 1 , further comprising:
the network device adding an indication within an MPLS label stack of the packet that one or more MPLS extension headers have been added to the packet.
5 . The method of claim 4 , wherein:
the MPLS label stack includes a plurality of MPLS label stack entries; and
the indication within the MPLS label stack that one or more MPLS extension headers have been added to the packet comprises an extension header label (EHL) within a label value field within one of the plurality of MPLS label stack entries included in the MPLS label stack.
6 . The method of claim 5 , wherein the EHL comprises one of sixteen special-purpose label values that are reserved by the MPLS working group of the Internet Engineering Task Force (IETF).
7 . The method of claim 5 , wherein another one of the plurality of MPLS label stack entries included within the MPLS label stack includes a special-purpose label value of 15, which is reserved by the MPLS working group of the Internet Engineering Task Force (IETF) to indicate that an Extension Label is included in the MPLS label stack and enables the network device to identify the EHL.
8 . The method of claim 1 , further comprising:
the network device adding a header of the extension headers;
wherein the header of the extension headers added by the network device includes an extension header count (EH Count) field that specifies a total number of the multiple MPLS extension headers included in the packet as modified.
9 . The method of claim 8 , wherein the header of the extension headers added by the network device also includes a total length field that specifies a total length of the multiple MPLS extension headers included in the packet as modified.
10 . The method of claim 1 , wherein each MPLS extension header of the multiple MPLS extension headers added by the network device includes a field that specifies a type of the next header included in the packet as modified, and a field that specifies a length of the MPLS extension header.
11 . A network device comprising:
a network interface configured to receive and forward packets over a multiprotocol label switching (MPLS) network;
a memory comprising instructions; and
one or more processors in communication with the memory and with the network interface, wherein the one or more processors execute the instructions to:
modify a packet received via the network interface by adding multiple MPLS extension headers, wherein each of the multiple MPLS extension headers added to the packet implements a different one of multiple network services for the MPLS network including at least one of Network Service Header (NSH), In-situ Operations, Administration, and Maintenance (IOAM), and network programming service; and
forward the packet as modified to another network device of the MPLS network.
12 . The network device of claim 11 , wherein the multiple network services include one or more of the following:
a segment routing (SR) service; or
an extension header label (EHL) which comprises one of sixteen special-purpose reserved label values.
13 . The network device of claim 11 , wherein the multiple network services include two or more of the following:
the NSH service;
the IOAM service;
an SR service; or
a network programming service.
14 . The network device of claim 11 , wherein the one or more processors execute the instructions to also add an indication within an MPLS label stack of the packet that one or more MPLS extension headers have been added to the packet.
15 . The network device of claim 14 , wherein:
the MPLS label stack includes a plurality of MPLS label stack entries; and
the indication within the MPLS label stack that one or more MPLS extension headers have been added to the packet comprises an extension header label (EHL) within a label value field within one of the plurality of MPLS label stack entries included in the MPLS label stack.
16 . The network device of claim 15 , wherein the EHL comprises one of sixteen special-purpose label values that are reserved by the MPLS working group of the Internet Engineering Task Force (IETF).
17 . The network device of claim 15 , wherein another one of the plurality of MPLS label stack entries included within the MPLS label stack includes a special-purpose label value of 15, which is reserved by the MPLS working group of the Internet Engineering Task Force (IETF) to indicate that an Extension Label is included in the MPLS label stack and enables the network device to identify the EHL.
18 . The network device of claim 11 , wherein:
the one or more processors execute the instructions to also add a header of the extension headers; and
wherein the header of the extension headers includes an extension header count (EH Count) field that specifies a total number of the multiple MPLS extension included in the packet as modified.
19 . The network device of claim 18 , wherein the header of the extension headers also includes a total length field that specifies a total length of the multiple MPLS extension headers included in the packet as modified.
20 . The network device of claim 11 , wherein each MPLS extension header of the multiple MPLS extension headers includes a field that specifies a type of the next header included in the packet as modified, and a field that specifies a length of the MPLS extension header.
21 . A non-transitory computer-readable medium storing computer instructions that when executed by one or more processors of a network device of a multiprotocol label switching (MPLS) network cause the network device to perform the steps of:
modifying a packet received by the network device by adding multiple MPLS extension headers, wherein each of the multiple MPLS extension headers added to the packet is used to implement a different one of multiple network services for the MPLS network including at least one of Network Service Header (NSH), In-situ Operations, Administration, and Maintenance (IOAM), and network programming service; and
forwarding the packet as modified to another network device of the MPLS network.
22 . The non-transitory computer-readable medium of claim 21 , wherein the multiple network services include one or more of the following:
a segment routing (SR) service; or
an extension header label (EHL) which comprises one of sixteen special-purpose reserved label values.
23 . The non-transitory computer-readable medium of claim 21 , wherein the instructions also cause the network device to perform the step of:
adding an indication within an MPLS label stack of the packet that one or more MPLS extension headers have been added to the packet.
24 . The non-transitory computer-readable medium of claim 23 , wherein:
the MPLS label stack includes a plurality of MPLS label stack entries; and
the indication within the MPLS label stack that one or more MPLS extension headers have been added to the packet comprises an extension header label (EHL) within a label value field within one of the plurality of MPLS label stack entries included in the MPLS label stack.
25 . The non-transitory computer-readable medium of claim 24 , wherein the EHL comprises one of sixteen special-purpose label values that are reserved by the MPLS working group of the Internet Engineering Task Force (IETF).
26 . The non-transitory computer-readable medium of claim 24 , wherein another one of the plurality of MPLS label stack entries included within the MPLS label stack includes a special-purpose label value of 15, which is reserved by the MPLS working group of the Internet Engineering Task Force (IETF) to indicate that an Extension Label is included in the MPLS label stack and enables the network device to identify the EHL.