Patent Description:
The present disclosure relates generally to the interworking of networks.

Multi-Protocol Label Switching (MPLS) is a type of data-carrying technique for high-performance telecommunications networks that directs data from one network node to the next based on short path labels rather than long network addresses, avoiding complex lookups in a routing table. The labels identify virtual links (paths) between distant nodes rather than endpoints. MPLS can encapsulate packets of various network protocols, hence its name "multiprotocol". MPLS supports a range of access technologies, including T1/E1, Asynchronous Transfer Mode (ATM), Frame Relay, and Digital Subscriber Line (DSL).

Internet Protocol (IP) may comprise a communications protocol that provides an identification and location system for computers on networks and routes traffic across the Internet. Internet Protocol version <NUM> (IPv6) is a version of the Internet Protocol (IP). IPv6 was developed to deal with the problem of Internet Protocol version <NUM> (IPv4) address exhaustion. IPv6 provides other technical benefits in addition to a larger addressing space. In particular, IPv6 permits hierarchical address allocation processes that facilitate route aggregation across the Internet, and thus limit the expansion of routing tables. The use of multicast addressing is expanded and simplified, and provides additional optimization for the delivery of services.

Document by<NPL> by <NPL>, discloses SRv6 and MPLS interworking.

Document by <NPL>, discloses SRv6 Network Programming.

Document by <NPL>, discloses VPN with Underlay SLA.

Aspects of the invention are recited in the independent claims and the preferred features are recited in the dependent claims.

The following detailed description refers to the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the following description to refer to the same or similar elements. While embodiments of the disclosure may be described, modifications, adaptations, and other implementations are possible. For example, substitutions, additions, or modifications may be made to the elements illustrated in the drawings, and the methods described herein may be modified by substituting, reordering, or adding stages to the disclosed methods. Accordingly, the following detailed description does not limit the disclosure. Instead, the proper scope of the disclosure is defined by the appended claims.

Segment Routing (SR) may be used in computer networking. In a segment routed network, an ingress node may prepend a header to packets that contain a list of segments, which are instructions that are executed on subsequent nodes in the network. These instructions may be forwarding instructions, such as an instruction to forward a packet to a specific destination or interface. SR may work on top of either an MPLS network or on an IPv6 network. In an MPLS network, segments may be encoded as MPLS labels. In IPv6, a header referred to as a Segment Routing Header (SRH) may be used. Segments in the SRH are encoded in a list of IPv6 addresses. SRv6 may be used to refer to a network domain in which SR and IPv6 are used together. SR-MPLS may be used to refer to a network domain in which SR and MPLS are used together.

SRv6 interworking with SR-MPLS may comprise a use case for SRv6 insertion in Service Provider (SP) networks. Embodiments of the disclosure may provide a Software Defined Networking (SDN) process that may allow SPs to deploy SRv6 in an existing network. For example, embodiments of the disclosure may apply to both SRv6-to-SR-MPLS as well as SR-MPLS-to-SRv6 deployment scenarios.

Service providers may wish to grow their existing networks by incrementally deploying SRv6 at an edge of an existing SR-MPLS based network. This may require the network to perform the following interworking functions: i) SRv6-to-SR-MPLS translation; and ii) SR-MPLS-to-SRv6 translation. One way to translate SRv6 to SR-MPLS SIDs and vice-versa may be to stitch SRv6 and SR-MPLS policies using cross-data plane binding Service Identifiers (SIDs). For example, to have an SR policy that crosses SRv6(<NUM>), SR-MPLS(<NUM>), and SRv6(<NUM>) domains, the following may be defined:.

With the aforementioned process, the traffic may traverse domain <NUM> with SRv6 information attached to it, enter domain <NUM> with an SR-MPLS label stack, and traverse domain <NUM> with SRv6 again. However, each one of these binding SIDs may have state. This may mean that, for every possible combination of SR policies, there may be a need to have intermediate policies on each domain border. However, having state may be a disadvantage and embodiments of the disclosure, as described below, may translate SRv6 segments to SR-MPLS segments and vice-versa without the need of having state.

<FIG> shows an operating environment <NUM> consistent with embodiments of the disclosure for providing network interworking with no cross-domain state. As shown in <FIG>, operating environment <NUM> may comprise a first domain <NUM>, a second domain <NUM>, and Path Computation Engine (PCE) <NUM>. PCE <NUM> may provide SID lists for routing packets between nodes in operating environment <NUM> when queried.

First domain <NUM> may comprise a first domain start node <NUM> and a first domain intermediate node <NUM>. Second domain <NUM> may comprise a second domain intermediate node <NUM> and a second domain end node <NUM>. Operating environment <NUM> may further comprise an edge node <NUM> disposed between first domain <NUM> and second domain <NUM>. First domain start node <NUM>, first domain intermediate node <NUM>, second domain intermediate node <NUM>, second domain end node <NUM>, and edge node <NUM> may comprise, but are not limited to, routers or switches.

First domain start node <NUM> and first domain intermediate node <NUM> may be configured to run a protocol corresponding to the first domain. The protocol corresponding to the first domain may comprise, but is not limited to, SRv6. Second domain intermediate node <NUM> and second domain end node <NUM> may be configured to run a protocol corresponding to the second domain. The protocol corresponding to the second domain may comprise, but is not limited to, SR-MPLS. Edge node <NUM> may be configured to run the protocol corresponding the first domain and the protocol corresponding to the second domain (i.e., edge node <NUM> may be configured to run both SRv6 and SR-MPLS).

Consistent with embodiments of the disclosure, a packet may be routed in operating environment <NUM> from first domain start node <NUM> to second domain end node <NUM> through first domain intermediate node <NUM>, edge node <NUM>, and second domain intermediate node <NUM>. The packet may comprise a plurality of different states as it passes on links between the aforementioned nodes. For example, the packet may comprise a packet first state <NUM> between first domain start node <NUM> and first domain intermediate node <NUM>. The packet may comprise a packet second state <NUM> between first domain intermediate node <NUM> and edge node <NUM>. The packet may comprise a packet third state <NUM> between edge node <NUM> and second domain intermediate node <NUM>. Furthermore, the packet may comprise a packet fourth state <NUM> between second domain intermediate node <NUM> and second domain end node <NUM>.

Packet first state <NUM> may comprise a first domain header <NUM>, an SR header <NUM>, an alternate domain header <NUM>, and a payload <NUM>. When first domain <NUM> comprises SRv6, first domain header <NUM> may comprise an IPv6 header as illustrated in <FIG>. Alternate domain header <NUM> may comprise an IPv4 header.

Packet second state <NUM> may comprise a first domain header <NUM>, an SR header <NUM>, an alternate domain header <NUM>, and a payload <NUM>. When first domain <NUM> comprises SRv6, first domain header <NUM> may comprise an IPv6 header as illustrated in <FIG>. Alternate domain header <NUM> may comprise an IPv4 header.

Packet third state <NUM> may comprise a label stack comprising a first second domain label <NUM> and a second second domain label <NUM>, an alternate domain header <NUM>, and a payload <NUM>. When second domain <NUM> comprises SR-MPLS, first second domain label <NUM> and second second domain label <NUM> may comprise MPLS labels as illustrated in <FIG>. Alternate domain header <NUM> may comprise an IPv4 header.

Packet fourth state <NUM> may comprise a label stack comprising second second domain label <NUM>, an alternate domain header <NUM>, and a payload <NUM>. When second domain <NUM> comprises SR-MPLS, second second domain label <NUM> may comprise MPLS labels as illustrated in <FIG>. Alternate domain header <NUM> may comprise an IPv4 header. The payload corresponding to the plurality of different packet states may be the same.

The elements described above of operating environment <NUM> (e.g., first domain start node <NUM>, first domain intermediate node <NUM>, second domain intermediate node <NUM>, second domain end node <NUM>, edge node <NUM>, and PCE <NUM>) may be practiced in hardware and/or in software (including firmware, resident software, micro-code, etc.) or in any other circuits or systems. The elements of operating environment <NUM> may be practiced in electrical circuits comprising discrete electronic elements, packaged or integrated electronic chips containing logic gates, a circuit utilizing a microprocessor, or on a single chip containing electronic elements or microprocessors. Furthermore, the elements of operating environment <NUM> may also be practiced using other technologies capable of performing logical operations such as, for example, AND, OR, and NOT, including but not limited to, mechanical, optical, fluidic, and quantum technologies. As described in greater detail below with respect to <FIG>, the elements of operating environment <NUM> may be practiced in a computing device <NUM>.

<FIG> is a flow chart setting forth the general stages involved in a method <NUM> consistent with an embodiment of the disclosure for providing network interworking with no cross-domain state. Method <NUM> may be implemented using operating environment <NUM> as described in more detail above with respect to <FIG>. Ways to implement the stages of method <NUM> will be described in greater detail below.

Method <NUM> may begin at starting block <NUM> and proceed to stage <NUM> where start node <NUM> in first domain <NUM> may query PCE <NUM> for a Segment Routing (SR) policy toward end node <NUM> in second domain <NUM>. For example, start node <NUM> may need to route a packet to end node <NUM> and may ask PCE <NUM> for a route to end node <NUM>.

From stage <NUM>, where start node <NUM> in first domain <NUM> may query PCE <NUM> for the SR policy toward end node <NUM> in second domain <NUM>, method <NUM> may advance to stage <NUM> where start node <NUM> may receive, in response to start node <NUM> querying PCE <NUM>, a Service Identifier (SID) list corresponding to the SR policy. For example, PCE <NUM> may reply with the SID list comprising: <C2::<NUM>, C3::<NUM>:<NUM>:<NUM>>. Within the SID list, C3::<NUM>:<NUM>:<NUM> may comprise a first SID and C2::<NUM> may comprise a second SID.

Once start node <NUM> receives, in response to querying PCE <NUM>, the SID list corresponding to the SR policy in stage <NUM>, method <NUM> may continue to stage <NUM> where start node <NUM> in first domain <NUM> may route the packet to intermediate node <NUM> in first domain <NUM> according to the second SID from the SID list. The SID list may be included in the packet. For example, the packet may be routed over the shortest path in operating environment <NUM> towards the second SID, C2::<NUM> where C2 may correspond to intermediate node <NUM>. The packet being routed to intermediate node <NUM> may comprise packet first state <NUM> that may comprise first domain header <NUM> and SR header <NUM>. As shown in <FIG>, the SID list may be included in SR header <NUM> in packet first state <NUM>. First domain header <NUM> may indicate the source address (SA) as C1 (i.e., start node <NUM>) and the destination address (DA) as C2::<NUM> (i.e., intermediate node <NUM>). SL = <NUM> in first domain header <NUM> may indicate that there may be one more Segment Left (SL) to traverse once the packet in packet first state <NUM> arrives at its intended destination (i.e., intermediate node <NUM>).

After start node <NUM> in first domain <NUM> routes the packet to intermediate node <NUM> in first domain <NUM> according to the second SID from the SID list in stage <NUM>, method <NUM> may proceed to stage <NUM> where intermediate node <NUM> in first domain <NUM> may update the packet with the first SID from the SID list. For example, once the packet arrives at intermediate node <NUM>, the function C2:: <NUM> may be executed to update the packet. This function may be associated with the end behavior. The packet updated by this function may comprise packet second state <NUM> that may comprise first domain header <NUM> and SR header <NUM>. As shown in <FIG>, the SID list may be included in SR header <NUM> in packet second state <NUM>. First domain header <NUM> may indicate the source address (SA) as C1 (i.e., start node <NUM>) and the destination address (DA) as C3::<NUM>:<NUM>:<NUM> (i.e., edge node <NUM>). SL = <NUM> may indicate that there will be no more Segments Left (SL) to traverse once the packet in packet second state <NUM> arrives at its intended destination (i.e., edge node <NUM>).

From stage <NUM>, where intermediate node <NUM> in first domain <NUM> updates the packet with the first SID from the SID list, method <NUM> may advance to stage <NUM> where intermediate node <NUM> in first domain <NUM> may route the packet to edge node <NUM> between first domain <NUM> and second domain <NUM> according to the first SID. For example, the packet in packet second state <NUM> may be routed over the shortest path in first domain <NUM> up to a node advertising locator C3 (i.e., edge node <NUM>).

Once intermediate node <NUM> in first domain <NUM> routes the packet to edge node <NUM> between first domain <NUM> and second domain <NUM> according to the first SID in stage <NUM>, method <NUM> may continue to stage <NUM> where edge node <NUM> may receive the packet. For example, edge node <NUM> may receive the packet from intermediate node <NUM> in first domain <NUM>. The received packet may be in packet second state <NUM>.

After edge node <NUM> receives the packet in stage <NUM>, method <NUM> may proceed to stage <NUM> where edge node <NUM> may pop, in response to the first SID, headers (i.e., first domain header <NUM> and SR header <NUM>) corresponding to first domain <NUM> from the packet in packet second state <NUM>. For example, when the packet arrives at edge node <NUM>, the first SID as indicated in the DA of first domain header <NUM> may be executed. A pop operation may comprise removing an item for example.

As shown in <FIG>, the first SID may comprise C3::<NUM>:<NUM>:<NUM> for example. An SRv6 SID may have the form LOC:FUN:ARGs, where the Locator (LOC) may comprise a prefix routable up to a given router in the network; the Function (FUN) may comprise the local function that may be executed at such router; and the Arguments (ARGs) may comprise an optional value used to convey arguments specific to that flow to the specific function. In the case of the first SID, the Locator may comprise C3, the Function may comprise <NUM>, and the Arguments may comprise <NUM>:<NUM>.

Consistent with embodiments of the disclosure, function <NUM> may comprise an SRv6 function that may be referred to as Endpoint with Programmable Dataplane Interworking (End. A segment instantiating the End. PDI function may be the last segment in the SRH. This function may take as arguments, an MPLS label stack (i.e., <NUM>, <NUM> for the first SID). Upon function execution, the IPv6 header and all its extension headers (i.e., first domain header <NUM> and SR header <NUM>) may be removed (i.e. popped), and the MPLS labels carried as SID arguments (i.e., <NUM>, <NUM>) may be pushed (i.e., added) into the packet. An example definition of the End. PDI function is as follows:
When N receives a packet destined to S and S is a local End. PDI SID, N does:.

From stage <NUM>, where edge node <NUM> pops, in response to the first SID, headers (i.e., first domain header <NUM> and SR header <NUM>) corresponding to first domain <NUM> from the packet in packet second state <NUM>, method <NUM> may advance to stage <NUM> where edge node <NUM> may push, in response to the first SID, a label stack corresponding to second domain <NUM> onto the packet. A push operation may comprise adding an item for example. The first SID may include data corresponding to the label stack. For example, according to function <NUM> (e.g., End. PDI), it may be determined if the packet is at an edge node by confirming SL = <NUM>, which may indicate that there will be no more Segments Left (SL) to traverse once the packet in packet second state <NUM> arrives at edge node <NUM>. Then edge node <NUM> may store the SR-MPLS label stack <<NUM>, <NUM>> (i.e., line <NUM> of End. PDI described above). The IPv6 header and its extension headers (i.e., first domain header <NUM> and SR header <NUM>) may be popped (i.e. line <NUM> of End. PDI described above). Then the MPLS label stack <<NUM>, <NUM>> may be pushed into the packet (i.e. line <NUM> of End. PDI described above). This now places the packet into packet third state <NUM> with the MPLS label stack comprising first second domain label <NUM> (i.e., <NUM>) and second second domain label <NUM> (i.e., <NUM>) as shown in <FIG>.

After edge node <NUM> pushes, in response to the first SID, the label stack corresponding to second domain <NUM> onto the packet in stage <NUM>, method <NUM> may proceed to stage <NUM> where edge node <NUM> may route the packet to second domain <NUM> destine to end node <NUM> in second domain <NUM>. For example, the packet may be routed over second domain <NUM> (e.g., SR-MPLS) through the set of segments listed in the label stack until the packet in packet fourth state <NUM> arrives at end node <NUM> in second domain <NUM>. Once edge node <NUM> routes the packet to second domain <NUM> destine to end node <NUM> in second domain <NUM> in stage <NUM>, method <NUM> may then end at stage <NUM>.

First domain start node <NUM> and first domain intermediate node <NUM> may be configured to run a protocol corresponding to the first domain. The protocol corresponding to the first domain may comprise, but is not limited to, SR-MPLS. Second domain intermediate node <NUM> and second domain end node <NUM> may be configured to run a protocol corresponding to the second domain. The protocol corresponding to the second domain may comprise, but is not limited to, SRv6. Edge node <NUM> may be configured to run the protocol corresponding the first domain and the protocol corresponding to the second domain (i.e., edge node <NUM> may be configured to run both SRv6 and SR-MPLS).

Packet first state <NUM> may comprise a label stack comprising a first first domain label <NUM>, a second first domain label <NUM>, a third first domain label <NUM>, a fourth first domain label <NUM>, and a fifth first domain label <NUM>. Packet first state <NUM> may further comprise an alternate domain header <NUM> and a payload <NUM>. When first <NUM> domain comprises SR-MPLS, first first domain label <NUM>, second first domain label <NUM>, third first domain label <NUM>, fourth first domain label <NUM>, and fifth first domain label <NUM> may comprise MPLS labels as illustrated in <FIG>. Alternate domain header <NUM> may comprise an IPv4 header.

Packet second state <NUM> may comprise a label stack comprising a first first domain label <NUM>, a second first domain label <NUM>, a third first domain label <NUM>, and a fourth first domain label <NUM>. Packet second state <NUM> may further comprise an alternate domain header <NUM> and a payload <NUM>. When first domain <NUM> comprises SR-MPLS, first first domain label <NUM>, second first domain label <NUM>, third first domain label <NUM>, and fourth first domain label <NUM> may comprise MPLS labels as illustrated in <FIG>. Alternate domain header <NUM> may comprise an IPv4 header.

Packet third state <NUM> may comprise a second domain header <NUM>, an SR header <NUM>, an alternate domain header <NUM>, and a payload <NUM>. When second domain <NUM> comprises SRv6, second domain header <NUM> may comprise an IPv6 header as illustrated in <FIG>. Alternate domain header <NUM> may comprise an IPv4 header.

Packet fourth state <NUM> may comprise a second domain header <NUM>, an SR header <NUM>, an alternate domain header <NUM>, and a payload <NUM>. When second domain <NUM> comprises SRv6, second domain header <NUM> may comprise an IPv6 header as illustrated in <FIG>. Alternate domain header <NUM> may comprise an IPv4 header.

From stage <NUM>, where start node <NUM> in first domain <NUM> may query PCE <NUM> for the SR policy toward end node <NUM> in second domain <NUM>, method <NUM> may advance to stage <NUM> where start node <NUM> may receive, in response to start node <NUM> querying PCE <NUM>, a Service Identifier (SID) list corresponding to the SR policy. For example, PCE <NUM> may reply with the SID list comprising <<NUM>, <NUM>, <NUM>, <NUM>, <NUM>>.

Once start node <NUM> receives, in response to start node <NUM> querying PCE <NUM>, the SID list corresponding to the SR policy in stage <NUM>, method <NUM> may continue to stage <NUM> where start node <NUM> in first domain <NUM> may route the packet to intermediate node <NUM> in first domain <NUM> according to a first domain label stack on the packet. The first domain label stack may correspond to the SID list. For example, the packet routed from start node <NUM> to intermediate node <NUM> may comprise packet first state <NUM>. The first domain label stack of packet first state <NUM> may comprise first first domain label <NUM> (e.g., <NUM>), second first domain label <NUM> (e.g., <NUM>), third first domain label <NUM> (e.g., <NUM>), fourth first domain label <NUM> (e.g., <NUM>), and fifth first domain label <NUM> (e.g., <NUM>). First first domain label <NUM> and second first domain label <NUM> may respectively correspond to first domain intermediate node <NUM> and edged node <NUM>. Fourth first domain label <NUM> and fifth first domain label <NUM> may respectively correspond to second domain intermediate node <NUM> and second domain end node <NUM>. As will be described in greater detail below, third first domain label <NUM> may correspond to an interworking function consistent with embodiments of the disclosure.

After start node <NUM> in first domain <NUM> routes the packet to intermediate node <NUM> in first domain <NUM> according to the first domain label stack on the packet in stage <NUM>, method <NUM> may proceed to stage <NUM> where intermediate node <NUM> in first domain <NUM> may update the packet by removing a label (i.e., first first domain label <NUM>) corresponding to intermediate node <NUM> from the first domain label stack. For example, the updated packet may comprise packet second state <NUM>. As shown in <FIG>, packet second state <NUM> may comprise a label stack comprising a first first domain label <NUM> (e.g., <NUM> corresponding to edge node <NUM>), a second first domain label <NUM> (e.g., <NUM> corresponding to the interworking function), a third first domain label <NUM> (e.g., <NUM> corresponding to second domain intermediate node <NUM>), and a fourth first domain label <NUM> (e.g., <NUM> corresponding to second domain end node <NUM>).

From stage <NUM>, where intermediate node <NUM> in first domain <NUM> updates the packet by removing the label corresponding to intermediate node <NUM> from the first domain label stack, method <NUM> may advance to stage <NUM> where intermediate node <NUM> in first domain <NUM> may route the packet to edge node <NUM> between first domain <NUM> and second domain <NUM> according to the first domain label stack on the packet. For example, the packet in packet second state <NUM> may be routed over the shortest path in first domain <NUM> up to a node corresponding to first first domain label <NUM> (e.g., <NUM> corresponding to edge node <NUM>).

Once intermediate node <NUM> in first domain <NUM> routes the packet to edge node <NUM> between first domain <NUM> and second domain <NUM> according to the first domain label stack on the packet in stage <NUM>, method <NUM> may continue to stage <NUM> where edge node <NUM> may receive, from intermediate node <NUM> in first domain <NUM>, the packet. For example, edge node <NUM> may receive the packet from intermediate node <NUM> in first domain <NUM>. The received packet may be in packet second state <NUM>.

After edge node <NUM> receives, from intermediate node <NUM> in first domain <NUM>, the packet in stage <NUM>, method <NUM> may proceed to stage <NUM> where edge node <NUM> may pop, in response to determining that a next label (i.e., second first domain label <NUM>) in the first domain label stack after a label (i.e., first first domain label <NUM>) corresponding to edge node <NUM> corresponds to an interworking function, all remaining labels in the first domain label stack from the packet. For example, once the packet reaches edge node <NUM>, the local segment <NUM> may be associated with the interworking function that may translate the first domain <NUM> (e.g., SR-MPLS) traffic into second domain <NUM> (e.g., SRv6) SIDs. The executed interworking function may remove (i.e., pops) the first domain label stack from the packet second state <NUM>.

The interworking function (e.g., the SR-MPLS interworking function) may work to an SRv6 domain in a similar fashion as the End. PDI function described above. SR-MPLS local segments may be bounded with the interworking function. The subsequent labels in the label stack until End-of-Stack (EoS) may comprise SRv6 segments.

An SRv6 SID may comprise <NUM>-bits while an MPLS label may comprise <NUM>-bits. However, it may already be known that all the SRv6 SIDs from the same domain may share the initial part of the Locator because all of them may come from the SP prefix block. A Locator may be divided in between SP_prefix and NodeID. Accordingly, the necessary amount of NodelDs and functions necessary in that limited domain may be encode in <NUM>-bits. However, two MPLS labels per SRv6 SID may be used to provide <NUM>-bits for the NodeID+Function information.

From stage <NUM>, where edge node <NUM> pops, in response to determining that the next label in the first domain label stack after the label corresponding to the edge node corresponds to the interworking function, all remaining labels in the first domain label stack from the packet, method <NUM> may advance to stage <NUM> where edge node <NUM> may push, in response to determining that the next label in the first domain label stack after the label corresponding to edge node <NUM> corresponds to the interworking function, a second domain header and a Segment Routing Header (SRH) onto the packet. The second domain header and the SRH may be based on labels in the first domain label stack after the next label corresponding to the interworking function. For example, the function <NUM> may be pre-configured with an SP Prefix of C::/<NUM>. Hence, the following segments in the label stack <<NUM>, <NUM>> may be translated into <C4::<NUM>, C5::<NUM>>. Edge node <NUM> may pop the first domain label stack and insert second domain header <NUM> (e.g., an IPv6 header) and SR header <NUM> with the corresponding SIDs <C4::<NUM>, C5::<NUM>> to create packet third state <NUM> for example.

After edge node <NUM> pushes second domain header <NUM> and SR header <NUM> onto the packet in stage <NUM>, method <NUM> may proceed to stage <NUM> where edge node <NUM> may route the packet to second domain <NUM> destine to end node <NUM> in second domain <NUM>. For example, the packet may be routed over second domain <NUM> (e.g., SRv6) via SR until the packet in packet fourth state <NUM> arrives at end node <NUM> in second domain <NUM>. Once edge node <NUM> routes the packet to second domain <NUM> destine to end node <NUM> in second domain <NUM> in stage <NUM>, method <NUM> may then end at stage <NUM>.

<FIG> shows a computing device <NUM>. As shown in <FIG>, computing device <NUM> may include a processing unit <NUM> and a memory unit <NUM>. Memory unit <NUM> may include a software module <NUM> and a database <NUM>. While executing on processing unit <NUM>, software module <NUM> may perform processes for providing network interworking with no cross-domain state, including for example, any one or more of the stages from method <NUM> described above with respect to <FIG> and any one or more of the stages from method <NUM> described above with respect to <FIG>. Computing device <NUM>, for example, may provide an operating environment for first domain start node <NUM>, first domain intermediate node <NUM>, second domain intermediate node <NUM>, second domain end node <NUM>, edge node <NUM>, PCE <NUM>, first domain start node <NUM>, first domain intermediate node <NUM>, second domain intermediate node <NUM>, second domain end node <NUM>, edge node <NUM>, and PCE <NUM>. First domain start node <NUM>, first domain intermediate node <NUM>, second domain intermediate node <NUM>, second domain end node <NUM>, edge node <NUM>, PCE <NUM>, first domain start node <NUM>, first domain intermediate node <NUM>, second domain intermediate node <NUM>, second domain end node <NUM>, edge node <NUM>, and PCE <NUM> may operate in other environments and are not limited to computing device <NUM>.

Computing device <NUM> may be implemented using a Wireless Fidelity (Wi-Fi) access point, a cellular base station, a tablet device, a mobile device, a smart phone, a telephone, a remote control device, a set-top box, a digital video recorder, a cable modem, a personal computer, a network computer, a mainframe, a router, a switch, a server cluster, a smart TV-like device, a network storage device, a network relay device, or other similar microcomputer-based device. Computing device <NUM> may comprise any computer operating environment, such as hand-held devices, multiprocessor systems, microprocessor-based or programmable sender electronic devices, minicomputers, mainframe computers, and the like. Computing device <NUM> may also be practiced in distributed computing environments where tasks are performed by remote processing devices. The aforementioned systems and devices are examples and computing device <NUM> may comprise other systems or devices.

Embodiments of the disclosure, for example, may be implemented as a computer process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process. Accordingly, the present disclosure may be embodied in hardware and/or in software (including firmware, resident software, micro-code, etc.). In other words, embodiments of the present disclosure may take the form of a computer program product on a computer-usable or computer-readable storage medium having computer-usable or computer-readable program code embodied in the medium for use by or in connection with an instruction execution system. A computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.

Embodiments of the disclosure may be practiced via a system-on-a-chip (SOC) where each or many of the elements illustrated in <FIG> may be integrated onto a single integrated circuit. Such a SOC device may include one or more processing units, graphics units, communications units, system virtualization units and various application functionality all of which may be integrated (or "burned") onto the chip substrate as a single integrated circuit. When operating via a SOC, the functionality described herein with respect to embodiments of the disclosure, may be performed via application-specific logic integrated with other components of computing device <NUM> on the single integrated circuit (chip).

Claim 1:
A method (<NUM>) comprising:
receiving (<NUM>), by an edge node from an intermediate node in a first domain, a packet, the edge node being between the first domain and a second domain;
popping (<NUM>), by the edge node in response to a first Service Identifier, SID, in the packet, headers corresponding to the first domain from the packet, wherein popping the headers corresponding to the first domain from the packet comprises popping the headers corresponding to a first protocol associated with the first domain from the packet;
pushing (<NUM>), by the edge node in response to the first SID, a label stack corresponding to the second domain onto the packet, the first SID including data corresponding to the label stack, wherein pushing the label stack corresponding to the second domain onto the packet comprises pushing the label stack corresponding to a second protocol associated with the second domain onto the packet, the second protocol being different from the first protocol, the edge node being operative to run both the first protocol associated with the first domain and the second protocol associated with the second domain; and
routing (<NUM>), by the edge node, the packet to the second domain destined to an end node in the second domain.