EP3619896B1 - Mechanism and apparatus for path protection when using compressed segment routing label stacks - Google Patents
Mechanism and apparatus for path protection when using compressed segment routing label stacks Download PDFInfo
- Publication number
- EP3619896B1 EP3619896B1 EP18737082.0A EP18737082A EP3619896B1 EP 3619896 B1 EP3619896 B1 EP 3619896B1 EP 18737082 A EP18737082 A EP 18737082A EP 3619896 B1 EP3619896 B1 EP 3619896B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- identifier set
- segment identifier
- controller
- monitoring
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000007246 mechanism Effects 0.000 title description 3
- 238000012544 monitoring process Methods 0.000 claims description 125
- 238000000034 method Methods 0.000 claims description 50
- 230000008859 change Effects 0.000 claims description 16
- 239000000523 sample Substances 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012407 engineering method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/34—Source routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0811—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/70—Routing based on monitoring results
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/72—Admission control; Resource allocation using reservation actions during connection setup
Definitions
- Multiprotocol label switching allows computer networks to encapsulate and route packets of various protocols using short path labels in place of long network addresses.
- the labels identify paths between nodes (both adjacent and distant) rather than endpoints.
- Some MPLS networks employ segment routing, which allows for traffic routing across an MPLS dataplane using segments that indicate particular forwarding instructions.
- a segment can be indicated by an adjacency segment identifier or a prefix segment identifier.
- An adjacency segment identifier can indicate that traffic should traverse a particular link within the topology.
- a prefix segment identifier can indicate that traffic should take the shortest path to a particular resource; i.e., a device or set of devices.
- Segments defined by a prefix segment identifier can be said to be loosely routed, since the particular links to be traversed by the traffic are not strictly defined; rather, the traffic will take the shortest path towards the device or region indicated by the prefix.
- Document US 2017/111268 A1 refers to a device in a network that determines that traffic sent via a first label switched path should be sent via a new label switched path. The device sends the traffic along the new label switched path using a label stack that indicates one or more adjacency segments or interface binding labels. A particular node along the new label switched path is configured to forward the traffic via a particular interface of the node based on a corresponding interface binding label or adjacency segment indicated by the traffic. The device completes a switchover from the first path to the new path.
- Document US 2014/269266 A1 refers to a method and system for use of segment routing in monitoring of a network path.
- the method includes selecting a plurality of segment identifiers and assembling the segment identifiers into a segment identifier stack, where the segment identifier stack encodes a test path within the network for attempted routing of a test message.
- the method may further include inserting the segment identifier stack into a header associated with the test message, and forwarding the test message according to an entry in a forwarding table corresponding to the segment identifier at the top of the segment identifier stack.
- Interior gateway protocol advertisements may be used to communicate segment identifiers for creating or updating of the data structure or the forwarding table.
- the system includes one or more network interfaces and a processor configured to perform the steps of the method.
- At least one aspect is directed to a network traffic engineering system.
- the traffic engineering system includes a switch and a controller.
- the controller is configured to maintain a monitoring segment identifier set including a sequence of adjacency segment identifiers defining a path for traffic intended for a destination device. Each adjacency segment identifier identifies a specific link of a network.
- the controller is configured to maintain a forwarding segment identifier set corresponding to the monitoring segment identifier set.
- the forwarding segment identifier set includes a compressed sequence of segment identifiers, together representing a compressed version of the monitoring segment identifier set. The compressed sequence of segment identifiers, when pushed onto a label stack, will cause traffic having the label stack to follow the path defined by the monitoring segment identifier set.
- the controller is configured to monitor a status of the path defined by the monitoring segment identifier set.
- the controller is configured to, subject to determining that the path defined by the monitoring segment identifier set is valid, cause the switch to push the compressed sequence of segment identifiers onto a first label stack of a first data packet received by the switch prior to transmitting the first data packet.
- the controller is configured to, subject to determining that the path defined by the monitoring segment identifier set is invalid, cause the switch to not push the compressed sequence of segment identifiers onto a second label stack of a second data packet received by the switch prior to transmitting the second data packet.
- determining that the path defined by the monitoring segment identifier set is invalid can include detecting a change in the network that would result in a data packet having the first data packet label stack to deviate from the path defined by the monitoring segment identifier set.
- the controller can be configured to cause the switch to send active probe traffic to determine the liveliness of the path defined by the monitoring segment identifier set.
- the switch can be an ingress switch at the edge of an autonomous network.
- the controller can be configured to maintain a second monitoring segment identifier set including a second sequence of adjacency segment identifiers defining a second path for traffic intended for the destination device.
- the controller can be configured to maintain a second forwarding segment identifier set corresponding to the second monitoring segment identifier set.
- the second forwarding segment identifier set can include a second compressed sequence of segment identifiers, together representing a compressed version of the second monitoring segment identifier set.
- the second compressed sequence of segment identifiers when pushed onto a label stack, can cause traffic having the label stack to follow the second path defined by the second monitoring segment identifier set.
- the controller can be configured to, subject to determining that the path defined by the monitoring segment identifier set is invalid, cause the switch to push the second compressed sequence of segment identifiers onto the second data packet prior to transmitting the second data packet.
- the controller can be a separate device external to the switch and controlling multiple additional switches.
- the controller can determine that the path defined by the monitoring segment identifier set is invalid due to detecting a failure of a link or node in the path.
- the controller can be configured to instruct the switch via an API to replace the monitoring segment identifier set with the second monitoring segment identifier set and the forwarding segment identifier set with the second forwarding segment identifier set.
- the controller can detect the failure through observation of the installed forwarding entries of devices within the network.
- the controller can detect the failure through observation of an interior gateway protocol link state database.
- At least one aspect is directed to a method of network traffic engineering.
- the method includes maintaining, by a controller of a network traffic engineering system, a monitoring segment identifier set including a sequence of adjacency segment identifiers defining a path for traffic intended for a destination device.
- the method includes maintaining, by the controller, a forwarding segment identifier set corresponding to the monitoring segment identifier set.
- the forwarding segment identifier set includes a compressed sequence of segment identifiers representing a compressed version of the monitoring segment identifier set. The compressed sequence of segment identifiers, when pushed onto a label stack, will cause traffic having the label stack to follow the path defined by the monitoring segment identifier set.
- the method includes monitoring, by the controller, a status of the path defined by the monitoring segment identifier set.
- the method includes receiving a first data packet at a switch.
- the method includes, subject to determining that the path defined by the monitoring segment identifier set is valid, causing, by the controller, the switch to push the compressed sequence of segment identifiers onto a first label stack of a first data packet received by the switch prior to transmitting the first data packet.
- the method includes receiving a second data packet at the switch.
- the method includes, subject to determining that the path defined by the monitoring segment identifier set is invalid, causing, by the controller, the switch to not push the compressed sequence of segment identifiers onto a second label stack of a second data packet received by the switch prior to transmitting the second data packet.
- determining that the path defined by the monitoring segment identifier set is invalid can include detecting a change in the network that would result in a data packet having the first data packet label stack to deviate from the path defined by the monitoring segment identifier set.
- the controller can be configured to cause the switch to send active probe traffic to determine the liveliness of the path defined by the monitoring segment identifier set.
- the switch can be an ingress switch at the edge of an autonomous network.
- the controller can be integrated within the switch.
- the method can include maintaining, by the controller, a second monitoring segment identifier set including a second sequence of adjacency segment identifiers defining a second path for traffic intended for the destination device.
- the method can include maintaining, by the controller, a second forwarding segment identifier set corresponding to the second monitoring segment identifier set.
- the second forwarding segment identifier set can include a second compressed sequence of segment identifiers, together representing a compressed version of the second monitoring segment identifier set.
- the second compressed sequence of segment identifiers when pushed onto a label stack, can cause traffic having the label stack to follow the second path defined by the second monitoring segment identifier set.
- the method can include, subject to determining that the path defined by the monitoring segment identifier set is invalid, causing, by the controller, the switch to push the second compressed sequence of segment identifiers onto the second data packet prior to transmitting the second data packet.
- the controller can be a separate device external to the switch and controlling multiple additional switches.
- the controller can determine that the path defined by the monitoring segment identifier set is invalid due to detecting a failure of a link or node in the path.
- the method can include instructing, by the controller, the switch to replace the monitoring segment identifier set with the second monitoring segment identifier set and the forwarding segment identifier set with the second forwarding segment identifier set.
- the method can include detecting, by the controller, the failure through observation of the installed forwarding entries of devices within the network.
- the controller can detect the failure through observation of an interior gateway protocol link state database.
- Segment routing allows a traffic engineering system to route traffic across a multiprotocol label switching (MPLS) data plane using segments that indicate particular forwarding instructions to the network.
- the segments can be of two types: (1) a prefix segment identifier, which can instruct a network node to forward the traffic along the shortest path to a particular resource, such as a device or set of devices; or (2) an adjacency segment identifier, which instructs the network node to forward the traffic via a particular link within a topology.
- the head-end device of a particular path can route packets along the path by imposing MPLS labels corresponding to one or more segments of the path.
- the traffic engineering system can use segment routing to dictate a strict, traffic engineered path for data packets traveling through a network.
- the traffic engineering system can cause the ingress device to impose a label stack on the packet, where each label includes an adjacency segment identifier for a link in the dictated path.
- the path for the data packet will thus have strict affinity to the particular links selected by the traffic engineering system.
- adjacency segment identifiers to specify each link in the desired path has several challenges:
- the traffic engineering system can avoid these challenges by compressing the MPLS label stack.
- the compressed stack can include a compressed sequence of segment identifiers containing a smaller number of segment identifiers than the sequence of adjacency segment identifiers that strictly defines the path.
- the compressed sequence of segment identifiers can include a prefix segment identifier in place of multiple adjacency segment identifiers. In some cases, however, the compressed sequence of segment identifiers may still include a smaller number of adjacency segment identifiers than the uncompressed sequence. Because the compressed sequence segment identifiers need not specify every link the traffic is to traverse, the label stack can require fewer labels to route traffic to the same destination.
- the compressed sequence of segment identifiers can correspond to a device or set of devices, which themselves may be reached through more than one link hop within the path by following a predictable path, chosen according to an algorithm that is known by all devices in the system, towards the entity represented by the prefix segment identifier.
- the predictable path may conform to the interior gateway protocol (IGP) shortest path.
- IGP interior gateway protocol
- Use of prefix segment identifiers results in the inability of the traffic engineering system to guarantee that traffic is always routed over the intended set of links. For example, following a change in the network, the traffic engineered path may no longer follow the controller's calculated path to the resource indicated by a prefix segment identifier. The traffic may therefore deviate from the intended traffic engineered path.
- the deviation may occur without the knowledge of the ingress device, limiting the ability of the ingress device to respond to the change.
- the change in routing may violate a constraint of the traffic placement on the network and possibly cause congestion along one or more other paths. Therefore, what is needed is a manner of implementing path protection to reroute traffic without violating traffic constraints when using compressed label stacks.
- this disclosure provides a method and apparatus for maintaining two different label stacks for each traffic engineered path.
- the first label stack is referred to as the "monitoring label stack” and is using for monitoring the intended path for the forwarding label stack.
- the second label stack is referred to as the "forwarding label stack” and includes the MPLS labels pushed onto a data packet.
- the monitoring label stack includes each adjacency segment identifier of the intended path, while the corresponding forwarding label stack represents a compressed label stack that, when pushed onto the data packet, will cause the data packet to traverse the intended path for as long as network conditions along the path remain unchanged.
- the traffic engineering system can implement a path protection system. For example, the traffic engineering system can monitor for failures in the links and nodes of the path defined by the monitoring label stack. If the traffic engineering system discovers that a failure renders the path invalid, it can cause the forwarding label stack to become ineligible for traffic forwarding. In this manner, the traffic engineering system can prevent data from being automatically rerouted by the interior gateway protocol (IGP) in possible violation of a traffic constraint.
- IGP interior gateway protocol
- the traffic engineering system can maintain an ordered set of inactive or standby paths.
- Each standby path can be defined by another forwarding label stack and monitoring label stack path.
- the traffic engineering system can reroute traffic according one of the standby paths.
- FIG. 1 illustrates an environment 100 including a network traffic engineering system, according to an illustrative implementation.
- the environment 100 includes a source 110 and a destination 120 exchanging traffic over a communication network 101 and an autonomous network 105.
- the communication network 101 can include, for example and without limitation, a local area network (LAN), a wide area network (WAN), an inter-network (e.g., the Internet), and/or a peer-to-peer network (e.g., an ad hoc peer-to-peer network).
- the autonomous network 105 can include, for example and without limitation, a LAN, a WAN, an inter-network (e.g., the Internet), or a peer-to-peer network.
- the autonomous network 105 includes multiple network switches, or "nodes," including nodes A, B, C, D, X, and Y.
- Node A can be an ingress switch at the edge of the autonomous network 105.
- Node A can operate under the control of a network controller, such as the controller 130.
- the controller 130 can be integrated with node A.
- the controller 130 can be external to node A, and in some implementations external to the autonomous network 105.
- the controller 130 can additionally control one or more of the routing nodes B, C, D, X, and Y.
- the autonomous network 105 can be a software-defined network (SDN) where the nodes A, B, C, D, X, and Y are under the control of one or more controllers 130.
- the controller 130 can implement the network traffic engineering system, including a system of path protection when using compressed segment routing label stacks.
- the source 110 can transmit data packets to the destination 120, and receive data packets back from the destination 120. Packets transmitted by the source 110 can traverse the communication network 101 and enter the autonomous network 105 at, for example, node A.
- Node A can be an ingress switch at the edge of the autonomous network 105.
- node A can impose a label or label stack on the packets.
- the label can include a multipath label switching (MPLS) routing identifier for node D, the node adjacent to the destination 120.
- MPLS multipath label switching
- the label can be read by the other nodes of the autonomous network 105, and used to direct the packet to the destination 120.
- MPLS multipath label switching
- the path that the packet will take through the autonomous network can be determined by the interior gateway protocol (IGP) shortest path. If a link in the primary path fails, the nodes may route the packet along a different, secondary path. In some cases, however, routing the packets along the secondary path may violate a constraint of traffic placement on the network. For example, relatively low-priority traffic between the source 110 and the destination 120 may cause congestion at a link reserved for a path designated for carrying higher-priority traffic. Such a situation is illustrated below with reference to the example shown in Figures 2A and 2B .
- Figures 2A and 2B illustrate an example of an autonomous network 105 under control of a network traffic engineering system, according to an illustrative implementation.
- the source 110 is transmitting packets to the destination 120, which lies within the autonomous network 105.
- the packets transmitted from the source 110 traverse the communication network 101 before entering the autonomous network 105 via an ingress node A.
- Node A can be an edge switch or router of the autonomous network 105.
- Node A can operate under the control of the controller 130.
- the controller 130 may additionally control one or more other ingress nodes such as node A' and node A".
- the autonomous network 105 includes additional routing nodes B, C, D, X, and Y.
- the destination 120 is adjacent to node D.
- the nodes A, B, C, D, X, and Y are joined by various links.
- Each link includes the four-digit segment identifier and the two-digit link cost shown for each link in Figures 2A and 2B . In practice, however, the segment identifiers and the link costs may have more or fewer digits.
- the link cost is used in determining the interior gateway protocol (IGP) shortest path through the autonomous network 105. Nodes A and B are connected by link 1001 with an IGP cost of 10.
- IGP interior gateway protocol
- Nodes B and C are connected by link 1002 with an IGP cost of 10.
- Nodes C and D are connected by link 1003 with an IGP cost of 10.
- Nodes A and X are connected by link 2001 with an IGP cost of 20.
- Nodes X and Y are connected by link 2002 with an IGP cost of 20.
- the controller 130 includes a collector 140 for receiving link state information from the network, and a memory 150 for maintaining pairs of monitoring segment identifier sets and forwarding segment identifier sets.
- the memory 150 can also store network status information, and one or more programs of instructions for execution by the controller 130.
- the controller 130 can be integrated with node A.
- the controller 130 can be external to node A, and, in some implementations, external to the autonomous network 105.
- the controller 130 can additionally control one or more of the routing nodes B, C, D, X, and Y.
- the controller 130 can cause the nodes to send active probe traffic to determine the liveliness of one or more monitoring segment identifier sets.
- the controller 130 can interface with the routing nodes A, B, C, D, X, and Y using an API. Using the API, the controller 130 can change forwarding entries or device configurations through, for example a management interface such as gNMI or NETCONF, or a control plane interface such as BGP.
- the controller 130 can, via the collector 140, receive link state information from entities in the network and determine a network status.
- the collector 140 can interface with the routing nodes A, B, C, D, X, and Y, and monitor the installed forwarding entries at each node.
- the collector 140 can interface with the routing nodes through a streaming interface.
- the collector 140 can receive link-state information from the IGP link state database.
- the controller 130 can compute a mapping between a forwarding resource-e.g., a node interface-and each element of the monitoring segment identifier set.
- a forwarding resource e.g., a node interface-and each element of the monitoring segment identifier set.
- the controller 130 can trigger a change to the compressed sequence of segment identifiers that are imposed onto the label stack at the head-end node of the path that uses the forwarding resource.
- the destination 120 is adjacent to Node D.
- Node D advertises its primary next hop address, 1.1.1.1/32, with an multiprotocol label switching (MPLS) segment routing identifier of 210.
- MPLS multiprotocol label switching
- node A receives data packets from the source 110 intended for the destination 120, node A can impose the label 210 onto the packets, and the shortest path to node D will be selected by the autonomous network 105.
- Node D can forward the packets to the destination 120.
- the actual path that the label 210 takes through the network is determined by the IGP shortest path. In the case of the autonomous network 105 shown in Figure 2A , the IGP shortest path is A ⁇ B, ⁇ C, C ⁇ D, with an IGP cost of 30.
- packets traveling from node A having an MPLS label 210 will traverse this route to node D and destination 120 until a change in network conditions renders this path invalid.
- the path can be rendered invalid due to, for example, a failure of a node or link along the path, a change in network topology, or a change in IGP link cost of one or more links.
- a data packet having an MPLS label 210 may deviate from the desired path.
- An example of the path becoming invalid due to a link failure is shown in Figure 2B .
- Figure 2B shows the same autonomous network 105 as Figure 2A , but with a failed link 1002. Packets traveling from node A with an MPLS label 210 will follow a new lowest-cost path for traversing the autonomous network 105. In this case, the next lowest-cost path will be A ⁇ B, ⁇ Y, Y ⁇ D; that is, substituting links 3000 and 2003 for links 1002 and 1003, and routing through node Y instead of node C.
- the automatic re-routing of traffic between the source 110 and the destination 120 may violate a constraint of traffic placement on the autonomous network 105; for example, if relatively low-priority traffic between the source 110 and the destination 120 causes congestion along the link 3000, which may be reserved for higher-priority traffic.
- the controller 130 and node A have defined the desired path only in terms of the forwarding label, nether the controller 130 nor node A may have enough information to monitor the status of the desired path, since the desired path is no longer strictly defined.
- node A may route traffic strictly via a desired path using segment routing with adjacency segment identifiers, for example A ⁇ B, B ⁇ C, C ⁇ D. Node A could do so by pushing labels corresponding each link of the desired path onto the packets. Doing so, however, can present several challenges. First, node A must be able to impose a label stack three labels deep. Second, nodes B and C must be able to hash based on this label stack depth. Third, the two additional labels on each packet create additional overhead. And finally, a failed link or node along the path could result in blackholing of the traffic. In autonomous networks having an even greater number of hops between the ingress node and internal destinations, these challenges can become prohibitive.
- This disclosure therefore describes a scheme where traffic can be routed strictly from node A to the destination 120 without requiring node A to impose a label stack having adjacency segment identifiers for each link along the desired path.
- This scheme can maintain a predetermined alternate path for the traffic in the event of the desired path becoming invalid due to a link failure, network topology change, or other change in network conditions.
- the path between node A and the destination 120 can be calculated by some entity (for example, the controller 130) in terms of the total set of links that are to be traversed.
- the resulting label stack can be referred to as a monitoring segment identifier set.
- the monitoring segment identifier set can include a sequence of adjacency segment identifiers that strictly define each link along the desired path.
- the calculating entity can then compress this label stack to the minimum depth required in order to route traffic from node A to the destination 120 along the desired path.
- the compressed label stack corresponds to the monitoring segment identifier set and can be referred to as a forwarding segment identifier set.
- the forwarding segment identifier set includes a compressed sequence of segment identifiers that together represent a compressed version of the monitoring segment identifier set.
- the compressed stack can include a compressed sequence of segment identifiers containing a smaller number of segment identifiers than the sequence of adjacency segment identifiers that strictly defines the path.
- the compressed sequence of segment identifiers can include a prefix segment identifier in place of multiple adjacency segment identifiers.
- the compressed sequence of segment identifiers may still include a smaller number of adjacency segment identifiers than the uncompressed sequence.
- the compressed sequence of segment identifiers When pushed onto a label stack, the compressed sequence of segment identifiers will cause packets having the label stack to follow the path defined by the monitoring segment identifier set, as long as network conditions along the path remain unchanged.
- Node A can push the compressed sequence of segment identifiers onto packets received from the source 110 and intended for the destination 120. Meanwhile, the controller 130 can monitor a status of the path defined by the adjacency segment identifiers in the monitoring segment identifier set.
- the controller 130 can cause Node A to halt or pause the use of the forwarding segment identifier set. In some implementations, the controller 130 can instruct node A to fall back to an alternative monitoring segment identifier set and alternative forwarding segment identifier set pair defining a secondary or backup path.
- the controller 130 can continually monitor the status of the autonomous network 105. In some implementations, the controller 130 can monitor the network status by observing the installed forwarding entries of devices in the network including the nodes A, B, C, D, X, and Y. In some implementations, the controller 130 can receive changes in the forwarding entries through a streaming interface from the devices. In some implementations, the controller 130 can monitor the network status by observing the IGP link state database. In some implementations, the controller 130 can monitor the network by instructing the network nodes to transmit probe packets across the autonomous network 105. The controller 130 can receive the link state data via the collector 140. The controller 130 can store the network status information in the memory 150.
- the controller 130 can provide a system of path protection by providing for an alternative path for the traffic in the event the primary path becomes invalid. If the controller 130 receives an indication that the path defined by the monitoring segment identifier set is no longer valid, either due to a link failure or change network topology, the controller 130 can instruct node A to cease using the compressed sequence of segment identifiers. Halting or pausing the traffic in this manner can prevent the traffic from rerouting automatically based on IGP and possibly violating a network traffic constraint. Node A can fall back to routing the traffic via an alternative path defined by a second monitoring segment identifier set and second forwarding identifier set. The controller 130 can store monitoring segment identifier set and forwarding segment identifier set pairs in the memory 150.
- each node can store a monitoring segment identifier set and forwarding segment identifier set pair for each path in a local memory. In some implementations, each node can store a primary monitoring segment identifier set and forwarding segment identifier set pair, and a secondary (alternate) monitoring segment identifier set and forwarding segment identifier set pair, for each path.
- Figure 3 described below, illustrates different MPLS segment routing schemes.
- FIG. 3 shows example label stacks and path for both conventional MPLS routing 301 and segment routing with path protection 302, according to an illustrative implementation.
- node A can determine the desired destination 310 for data packets from the source 110 intended for the destination 120.
- the destination 120 is outside of the area of the network governed by interior gateway protocol (IGP); therefor, traffic intended for the destination 120 is routed via the next-hop node for the destination 120, node D.
- IGP interior gateway protocol
- node A can impose an MPLS forwarding label 320 on packets from the source 110 to node D.
- Packets having the MPLS label 210 traversing the autonomous network 105 under the conditions illustrated in Figure 2A will follow the IGP shortest path 330; namely A ⁇ B, ⁇ C, C ⁇ D. If the link 1002 fails as shown in Figure 2B , however, the IGP shortest path after failure 340 will reroute to A ⁇ B, B ⁇ Y, Y ⁇ D.
- the controller 130 can specify a strict path for the data packets from the source 110 intended for the destination 120 along the desired path 350.
- the desired path 350 under the network conditions shown in Figure 2A is A ⁇ B, ⁇ C, C ⁇ D.
- the monitoring stack 360 corresponding to the desired path 350 includes adjacency segment identifier for each link along the desired route; that is, 1001, 1002, and 1003.
- the controller 130 can compress the monitoring stack 360 down to only the MPLS segment routing labels necessary to cause data packets to traverse the autonomous network 105 along the desired path 350.
- packets will follow the path A ⁇ B, ⁇ C, C ⁇ D if imposed with a forwarding label of 210. Accordingly, the controller 130 can compress the monitoring stack 360 down to a corresponding forwarding stack 365 consisting of only the forwarding label 210. Packets having this forwarding stack 365 will continue traversing the autonomous network 105 via the path A ⁇ B, ⁇ C, C ⁇ D as long as the network remains unchanged.
- packets having the forwarding stack 365 with the forwarding label 210 may not continue to follow the desired path.
- the controller 130 can monitor the desired path using the information in the monitoring stack 360. If the path becomes invalid for some reason, the controller 130 can impose an alternate path. For example, in Figure 2B , the link 1002 has failed. Assuming that, due to traffic constraints, packets should not be re-routed across the link B ⁇ Y, node A can fall back to using an alternate path 370. In this case, the alternate path 370 will follow A ⁇ X, X ⁇ Y, Y ⁇ D.
- the alternate monitoring stack 380 corresponding to this path will be 2001, 2002, 2003.
- the controller 130 can compress alternate monitoring stack 380 of adjacency segment identifiers down to the alternate forwarding stack 385.
- the system need only impose the adjacency segment identifier corresponding to node Y (i.e., 2001) and the MPLS label for node D (i.e., 210).
- the alternate monitoring stack 380 will include the links 2001, 2002, and 2003.
- the alternate forwarding stack 385 will include segment identifiers 2001 and 210.
- the path after failure of the B-C link 390 will be A ⁇ X, X ⁇ Y, Y ⁇ D. Therefore, the verboten link B ⁇ Y is avoided and no traffic constraints are violated.
- An example method for performing segment routing with path protection is described below with reference to Figure 4 .
- FIG. 4 is flowchart of an example method 400 of network traffic engineering, according to an illustrative implementation.
- the method 400 includes maintaining a monitoring segment identifier set including a sequence of adjacency segment identifiers (stage 410).
- the method 400 includes maintaining a forwarding segment identifier set including a compressed sequence of segment identifiers (stage 420).
- the method 400 includes monitoring the status of the path defined by the monitoring segment identifier set (stage 430).
- the method 400 includes receiving a data packet (stage 440).
- the method 400 includes determining whether the path defined by the monitoring segment identifier set is valid (decision 450). If the path is valid, the method 400 includes pushing the compressed sequence of segment identifiers onto the data packet (stage 460). If the path is invalid, the method 400 includes not pushing the sequence of prefix identifiers onto the data packet (stage 470).
- the method 400 includes transmitting the data packet (stage 480).
- the method 400 includes maintaining a monitoring segment identifier set including a sequence of adjacency segment identifiers (stage 410).
- the segment identifier set can be maintained by a network controller, such as the controller 130 previously described.
- the sequence of adjacency segment identifiers can define a path for traffic from a source, such as the source 110 previously described, intended for a destination device, such as the destination device 120 previously described.
- the monitoring segment identifier set can be, for example, a monitoring stack such as the monitoring stack 460 described above with reference to Figure 3 .
- the method 400 includes maintaining a forwarding segment identifier set including a compressed sequence of segment identifiers (stage 420).
- the forwarding segment identifier set can correspond to the monitoring segment identifier set.
- the forwarding segment identifier set can be maintained by the network controller.
- the compressed sequence of segment identifiers can represent a compressed version of the monitoring segment identifier set.
- the compressed stack can include a compressed sequence of segment identifiers containing a smaller number of segment identifiers than the sequence of adjacency segment identifiers that strictly defines the path.
- the compressed sequence of segment identifiers can include a prefix segment identifier in place of multiple adjacency segment identifiers.
- the compressed sequence of segment identifiers may still include a smaller number of adjacency segment identifiers than the uncompressed sequence.
- the compressed sequence of segment identifiers will, when pushed onto a label stack, cause data packets having the label stack to follow the path defined by the monitoring segment identifier set.
- the controller can maintain ordered pairs of monitoring segment identifier sets and their corresponding forwarding segment identifier sets in a memory, such as the memory 150.
- the method 400 includes monitoring the status of the path defined by the monitoring segment identifier set (stage 430).
- the controller can use the information in the monitoring segment identifier set to monitor the status of each link and/or node along the path that it defines.
- the controller can monitor the path status by observing the installed forwarding entries of the nodes of the autonomous network.
- the controller can receive changes in the forwarding entries through a streaming interface from the nodes.
- the controller can monitor the network status by observing a IGP link state database associated with the autonomous network.
- the controller can monitor the network by instructing the nodes to transmit probe packets across the autonomous network. The controller can monitor for network changes that would result in a data packet having the compressed sequence of segment identifiers in its label stack to deviate from the path defined by the monitoring segment identifier set.
- the method 400 includes receiving a data packet (stage 440).
- the data packet can be received from the source by a node or switch.
- the node can be an ingress switch or router at the end of an autonomous network, such as the autonomous network 105 previously described.
- the node can determine that the data packet is indented for the destination device, and thus that it should follow the path described by the monitoring segment identifier set, if that path is valid.
- the method 400 includes determining whether the path defined by the monitoring segment identifier set is valid (decision 450). If the path is valid, the method 400 includes pushing the compressed sequence of segment identifiers onto a label stack of the data packet (stage 460) and transmitting the data packet (stage 480). If the path is valid, the node can push the compressed sequence of segment identifiers onto the data packet and transmit it along a path indicated by the compressed sequence of segment identifiers. In some implementations, the method 400 can repeat beginning at stage 430.
- the method 400 includes not pushing the sequence of prefix identifiers onto the data packet (stage 470).
- the controller will maintain an alternate monitoring segment identifier set / forwarding segment identifier set pair describing an alternate path for traffic intended for the destination device.
- the alternate monitoring segment identifier set can include an alternate sequence of adjacency segment identifiers defining the alternate path.
- the alternate forwarding segment identifier set corresponds to the alternate monitoring segment identifier set.
- the alternate forwarding segment identifier set includes an alternate compressed sequence of segment identifiers.
- the controller determines that the path is invalid, the controller can cause the switch to push the alternate compressed sequence of segment identifiers onto the packet.
- the method 400 includes transmitting the data packet (stage 480).
- the node can transmit the data packet along a path indicated by the alternate compressed sequence of segment identifiers.
- the method 400 can repeat beginning at stage 430.
- FIG. 5 is a block diagram illustrating a general architecture for a computer system 800 that may be employed to implement elements of the systems and methods described and illustrated herein, according to an illustrative implementation.
- the computing system 800 can be used to implement one or more of the devices described above, including the source 110, the destination 120, the controller 130, or one or more of the nodes A, B, C, D, X, and Y.
- the computing system 800 may be utilized in implementing the traffic engineering method 400 shown in Figure 4 .
- the computing system 810 includes at least one processor 850 for performing actions in accordance with instructions and one or more memory devices 870 or 875 for storing instructions and data.
- the illustrated example computing system 810 includes one or more processors 850 in communication, via a bus 815, with at least one network interface controller 820 with one or more network interface ports 822 connecting to one or more network devices 824, memory 870, and any other devices 880, e.g., an I/O interface.
- a processor 850 will execute instructions received from memory.
- the processor 850 illustrated incorporates, or is directly connected to, cache memory 875.
- the processor 850 may be any logic circuitry that processes instructions, e.g., instructions fetched from the memory 870 or cache 875.
- the processor 850 is a microprocessor unit or special purpose processor.
- the computing device 800 may be based on any processor, or set of processors, capable of operating as described herein.
- the processor 850 can be capable of executing the traffic engineering method 400 shown in Figure 4 .
- the processor 850 may be a single core or multi-core processor.
- the processor 850 may be multiple processors.
- the processor 850 can be configured to run multi-threaded operations.
- the processor 850 may host one or more virtual machines or containers, along with a hypervisor or container manager for managing the operation of the virtual machines or containers.
- the traffic engineering method 400 shown in Figure 4 can be implemented within the virtualized or containerized environments provided on the processor 850.
- the memory 870 may be any device suitable for storing computer readable data.
- the memory 870 may be a device with fixed storage or a device for reading removable storage media. Examples include all forms of non-volatile memory, media and memory devices, semiconductor memory devices (e.g., EPROM, EEPROM, SDRAM, and flash memory devices), magnetic disks, magneto optical disks, and optical discs (e.g., CD ROM, DVD-ROM, and Blu-ray® discs).
- a computing system 800 may have any number of memory devices 870.
- the memory 870 can include instructions corresponding to the traffic engineering method 400 shown in Figure 4 .
- the memory 870 supports virtualized or containerized memory accessible by virtual machine or container execution environments provided by the computing system 810.
- the cache memory 875 is generally a form of computer memory placed in close proximity to the processor 850 for fast read times. In some implementations, the cache memory 875 is part of, or on the same chip as, the processor 850. In some implementations, there are multiple levels of cache 875, e.g., L2 and L3 cache layers.
- the network interface controller 820 manages data exchanges via the network interfaces 822 (also referred to as network interface ports).
- the network interface controller 820 handles the physical and data link layers of the OSI model for network communication. In some implementations, some of the network interface controller's tasks are handled by the processor 850. In some implementations, the network interface controller 820 is part of the processor 850.
- a computing system 810 has multiple network interface controllers 820.
- the network interfaces 822 are connection points for physical network links.
- the network interface controller 820 supports wireless network connections and an interface port 822 is a wireless receiver/transmitter.
- a computing device 810 exchanges data with other network devices 824 via physical or wireless links to a network interfaces 822.
- the network interface controller 820 implements a network protocol such as Ethernet.
- the other network devices 824 are connected to the computing device 810 via a network interface port 822.
- the other network devices 824 may be peer computing devices, network devices, or any other computing device with network functionality.
- a first network device 824 may be a network device such as a hub, a bridge, a switch, or a router, connecting the computing device 810 to a data network such as the Internet.
- the other devices 880 may include an I/O interface, external serial device ports, and any additional co-processors.
- a computing system 810 may include an interface (e.g., a universal serial bus (USB) interface) for connecting input devices (e.g., a keyboard, microphone, mouse, or other pointing device), output devices (e.g., video display, speaker, or printer), or additional memory devices (e.g., portable flash drive or external media drive).
- a computing device 800 includes an additional device 880 such as a coprocessor, e.g., a math co-processor can assist the processor 850 with high precision or complex calculations.
- Implementations of the subject matter and the operations described in this specification can be implemented in digital electronic circuitry, or in computer software embodied on a tangible medium, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer programs embodied on a tangible medium, i.e., one or more modules of computer program instructions, encoded on one or more computer storage media for execution by, or to control the operation of, a data processing apparatus.
- a computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them.
- the computer storage medium can also be, or be included in, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices).
- the computer storage medium may be tangible and non-transitory.
- the operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
- the operations may be executed within the native environment of the data processing apparatus or within one or more virtual machines or containers hosted by the data processing apparatus.
- a computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment.
- a computer program may, but need not, correspond to a file in a file system.
- a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code).
- a computer program can be deployed to be executed on one computer or on multiple computers or one or more virtual machines or containers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- Examples of communication networks include a local area network ("LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
- the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output.
- the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- references to "or” may be construed as inclusive so that any terms described using “or” may indicate any of a single, more than one, and all of the described terms.
- the labels “first,” “second,” “third,” and so forth are not necessarily meant to indicate an ordering and are generally used merely to distinguish between like or similar items or elements.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
- The present application claims priority to, and the benefit of,
U.S. Patent Application No. 15/702,467 - Multiprotocol label switching (MPLS) allows computer networks to encapsulate and route packets of various protocols using short path labels in place of long network addresses. The labels identify paths between nodes (both adjacent and distant) rather than endpoints. Some MPLS networks employ segment routing, which allows for traffic routing across an MPLS dataplane using segments that indicate particular forwarding instructions. A segment can be indicated by an adjacency segment identifier or a prefix segment identifier. An adjacency segment identifier can indicate that traffic should traverse a particular link within the topology. A prefix segment identifier can indicate that traffic should take the shortest path to a particular resource; i.e., a device or set of devices. Segments defined by a prefix segment identifier can be said to be loosely routed, since the particular links to be traversed by the traffic are not strictly defined; rather, the traffic will take the shortest path towards the device or region indicated by the prefix.
DocumentUS 2017/111268 A1 refers to a device in a network that determines that traffic sent via a first label switched path should be sent via a new label switched path. The device sends the traffic along the new label switched path using a label stack that indicates one or more adjacency segments or interface binding labels. A particular node along the new label switched path is configured to forward the traffic via a particular interface of the node based on a corresponding interface binding label or adjacency segment indicated by the traffic. The device completes a switchover from the first path to the new path. - Document Filsfils C et al: "Interconnecting Millions of Endpoints with Segment Routing; draft-filsfils-spring-large-scale-interconnect-04.txt" refers to an application ofSegment Routing to scale the network to support hundreds of thousands of network nodes, and tens of millions of physical underlay endpoints.
- Document R Bonica: "A Segment Routing (SR) Tutorial" refers to the binding of sequence identifiers which are sequence identifiers that are bound to (i.e., identify) other segment routing paths or tunnels.
- Document
US 2014/269266 A1 refers to a method and system for use of segment routing in monitoring of a network path. The method includes selecting a plurality of segment identifiers and assembling the segment identifiers into a segment identifier stack, where the segment identifier stack encodes a test path within the network for attempted routing of a test message. The method may further include inserting the segment identifier stack into a header associated with the test message, and forwarding the test message according to an entry in a forwarding table corresponding to the segment identifier at the top of the segment identifier stack. Interior gateway protocol advertisements may be used to communicate segment identifiers for creating or updating of the data structure or the forwarding table. In an embodiment, the system includes one or more network interfaces and a processor configured to perform the steps of the method. - The present invention is defined in the independent claims. Preferred embodiments are defined in the dependent claims.
- At least one aspect is directed to a network traffic engineering system. The traffic engineering system includes a switch and a controller. The controller is configured to maintain a monitoring segment identifier set including a sequence of adjacency segment identifiers defining a path for traffic intended for a destination device. Each adjacency segment identifier identifies a specific link of a network. The controller is configured to maintain a forwarding segment identifier set corresponding to the monitoring segment identifier set. The forwarding segment identifier set includes a compressed sequence of segment identifiers, together representing a compressed version of the monitoring segment identifier set. The compressed sequence of segment identifiers, when pushed onto a label stack, will cause traffic having the label stack to follow the path defined by the monitoring segment identifier set. The controller is configured to monitor a status of the path defined by the monitoring segment identifier set. The controller is configured to, subject to determining that the path defined by the monitoring segment identifier set is valid, cause the switch to push the compressed sequence of segment identifiers onto a first label stack of a first data packet received by the switch prior to transmitting the first data packet. The controller is configured to, subject to determining that the path defined by the monitoring segment identifier set is invalid, cause the switch to not push the compressed sequence of segment identifiers onto a second label stack of a second data packet received by the switch prior to transmitting the second data packet.
- In some implementations, determining that the path defined by the monitoring segment identifier set is invalid can include detecting a change in the network that would result in a data packet having the first data packet label stack to deviate from the path defined by the monitoring segment identifier set.
- In some implementations, the controller can be configured to cause the switch to send active probe traffic to determine the liveliness of the path defined by the monitoring segment identifier set.
- In some implementations, the switch can be an ingress switch at the edge of an autonomous network.
- In some implementations, the controller can be configured to maintain a second monitoring segment identifier set including a second sequence of adjacency segment identifiers defining a second path for traffic intended for the destination device. The controller can be configured to maintain a second forwarding segment identifier set corresponding to the second monitoring segment identifier set. The second forwarding segment identifier set can include a second compressed sequence of segment identifiers, together representing a compressed version of the second monitoring segment identifier set. The second compressed sequence of segment identifiers, when pushed onto a label stack, can cause traffic having the label stack to follow the second path defined by the second monitoring segment identifier set. The controller can be configured to, subject to determining that the path defined by the monitoring segment identifier set is invalid, cause the switch to push the second compressed sequence of segment identifiers onto the second data packet prior to transmitting the second data packet.
- In some implementations, the controller can be a separate device external to the switch and controlling multiple additional switches.
- In some implementations, the controller can determine that the path defined by the monitoring segment identifier set is invalid due to detecting a failure of a link or node in the path. The controller can be configured to instruct the switch via an API to replace the monitoring segment identifier set with the second monitoring segment identifier set and the forwarding segment identifier set with the second forwarding segment identifier set.
- In some implementations, the controller can detect the failure through observation of the installed forwarding entries of devices within the network.
- In some implementations, the controller can detect the failure through observation of an interior gateway protocol link state database.
- At least one aspect is directed to a method of network traffic engineering. The method includes maintaining, by a controller of a network traffic engineering system, a monitoring segment identifier set including a sequence of adjacency segment identifiers defining a path for traffic intended for a destination device. The method includes maintaining, by the controller, a forwarding segment identifier set corresponding to the monitoring segment identifier set. The forwarding segment identifier set includes a compressed sequence of segment identifiers representing a compressed version of the monitoring segment identifier set. The compressed sequence of segment identifiers, when pushed onto a label stack, will cause traffic having the label stack to follow the path defined by the monitoring segment identifier set. The method includes monitoring, by the controller, a status of the path defined by the monitoring segment identifier set. The method includes receiving a first data packet at a switch. The method includes, subject to determining that the path defined by the monitoring segment identifier set is valid, causing, by the controller, the switch to push the compressed sequence of segment identifiers onto a first label stack of a first data packet received by the switch prior to transmitting the first data packet. The method includes receiving a second data packet at the switch. The method includes, subject to determining that the path defined by the monitoring segment identifier set is invalid, causing, by the controller, the switch to not push the compressed sequence of segment identifiers onto a second label stack of a second data packet received by the switch prior to transmitting the second data packet.
- In some implementations, determining that the path defined by the monitoring segment identifier set is invalid can include detecting a change in the network that would result in a data packet having the first data packet label stack to deviate from the path defined by the monitoring segment identifier set.
- In some implementations, the controller can be configured to cause the switch to send active probe traffic to determine the liveliness of the path defined by the monitoring segment identifier set.
- In some implementations, the switch can be an ingress switch at the edge of an autonomous network.
- In some implementations, the controller can be integrated within the switch.
- In some implementations, the method can include maintaining, by the controller, a second monitoring segment identifier set including a second sequence of adjacency segment identifiers defining a second path for traffic intended for the destination device. The method can include maintaining, by the controller, a second forwarding segment identifier set corresponding to the second monitoring segment identifier set. The second forwarding segment identifier set can include a second compressed sequence of segment identifiers, together representing a compressed version of the second monitoring segment identifier set. The second compressed sequence of segment identifiers, when pushed onto a label stack, can cause traffic having the label stack to follow the second path defined by the second monitoring segment identifier set. The method can include, subject to determining that the path defined by the monitoring segment identifier set is invalid, causing, by the controller, the switch to push the second compressed sequence of segment identifiers onto the second data packet prior to transmitting the second data packet.
- In some implementations, the controller can be a separate device external to the switch and controlling multiple additional switches.
- In some implementations, the controller can determine that the path defined by the monitoring segment identifier set is invalid due to detecting a failure of a link or node in the path. The method can include instructing, by the controller, the switch to replace the monitoring segment identifier set with the second monitoring segment identifier set and the forwarding segment identifier set with the second forwarding segment identifier set.
- In some implementations, the method can include detecting, by the controller, the failure through observation of the installed forwarding entries of devices within the network.
- In some implementations, the controller can detect the failure through observation of an interior gateway protocol link state database.
- These and other aspects and implementations are discussed in detail below. The foregoing information and the following detailed description include illustrative examples of various aspects and implementations, and provide an overview or framework for understanding the nature and character of the claimed aspects and implementations. The drawings provide illustration and a further understanding of the various aspects and implementations, and are incorporated in and constitute a part of this specification.
- The accompanying drawings are not intended to be drawn to scale. Like reference numbers and designations in the various drawings indicate like elements. For purposes of clarity, not every component may be labeled in every drawing. In the drawings:
-
Figure 1 illustrates an environment including a network traffic engineering system, according to an illustrative implementation; -
Figures 2A and2B illustrate an example of an autonomous network under control of a network traffic engineering system, according to an illustrative implementation; -
Figure 3 shows example label stacks and path for both MPLS routing and segment routing with path protection, according to an illustrative implementation; -
Figure 4 is flowchart of an example method of network traffic engineering, according to an illustrative implementation; and -
Figure 5 is a block diagram illustrating a general architecture for a computer system that may be employed to implement elements of the systems and methods described and illustrated herein, according to an illustrative implementation. - This disclosure generally relates to a mechanism and apparatus for path protection when using compressed segment routing label stacks. Segment routing allows a traffic engineering system to route traffic across a multiprotocol label switching (MPLS) data plane using segments that indicate particular forwarding instructions to the network. The segments can be of two types: (1) a prefix segment identifier, which can instruct a network node to forward the traffic along the shortest path to a particular resource, such as a device or set of devices; or (2) an adjacency segment identifier, which instructs the network node to forward the traffic via a particular link within a topology. The head-end device of a particular path can route packets along the path by imposing MPLS labels corresponding to one or more segments of the path.
- The traffic engineering system can use segment routing to dictate a strict, traffic engineered path for data packets traveling through a network. When a packet enters the network, the traffic engineering system can cause the ingress device to impose a label stack on the packet, where each label includes an adjacency segment identifier for a link in the dictated path. The path for the data packet will thus have strict affinity to the particular links selected by the traffic engineering system. In practice, however, the use of adjacency segment identifiers to specify each link in the desired path has several challenges:
- The ingress devices may have hardware limitations that limit the number of labels that the devices can push onto a packet.
- The transit devices may have hardware limitations that limit the depth into the packet that the devices can inspect. Such limitations result in the inability to hash traffic across links in the topology having many underlying links, such as Ethernet link aggregation groups.
- The additional labels imposed on the stack may introduce additional processing overhead by carrying more data in pathing information, which uses higher bandwidth and reduces the efficiency of the network.
- Failure of a link specified by an adjacency segment identifier can cause blackholing, or may require complex protection schemes.
- The traffic engineering system can avoid these challenges by compressing the MPLS label stack. The compressed stack can include a compressed sequence of segment identifiers containing a smaller number of segment identifiers than the sequence of adjacency segment identifiers that strictly defines the path. The compressed sequence of segment identifiers can include a prefix segment identifier in place of multiple adjacency segment identifiers. In some cases, however, the compressed sequence of segment identifiers may still include a smaller number of adjacency segment identifiers than the uncompressed sequence. Because the compressed sequence segment identifiers need not specify every link the traffic is to traverse, the label stack can require fewer labels to route traffic to the same destination. The compressed sequence of segment identifiers can correspond to a device or set of devices, which themselves may be reached through more than one link hop within the path by following a predictable path, chosen according to an algorithm that is known by all devices in the system, towards the entity represented by the prefix segment identifier. For example, the predictable path may conform to the interior gateway protocol (IGP) shortest path. Use of prefix segment identifiers, however, results in the inability of the traffic engineering system to guarantee that traffic is always routed over the intended set of links. For example, following a change in the network, the traffic engineered path may no longer follow the controller's calculated path to the resource indicated by a prefix segment identifier. The traffic may therefore deviate from the intended traffic engineered path. The deviation may occur without the knowledge of the ingress device, limiting the ability of the ingress device to respond to the change. In some situations, the change in routing may violate a constraint of the traffic placement on the network and possibly cause congestion along one or more other paths. Therefore, what is needed is a manner of implementing path protection to reroute traffic without violating traffic constraints when using compressed label stacks.
- In order to achieve strict route assignment using a compressed label stack, this disclosure provides a method and apparatus for maintaining two different label stacks for each traffic engineered path. The first label stack is referred to as the "monitoring label stack" and is using for monitoring the intended path for the forwarding label stack. The second label stack is referred to as the "forwarding label stack" and includes the MPLS labels pushed onto a data packet. In other words, the monitoring label stack includes each adjacency segment identifier of the intended path, while the corresponding forwarding label stack represents a compressed label stack that, when pushed onto the data packet, will cause the data packet to traverse the intended path for as long as network conditions along the path remain unchanged.
- In some implementations, the traffic engineering system can implement a path protection system. For example, the traffic engineering system can monitor for failures in the links and nodes of the path defined by the monitoring label stack. If the traffic engineering system discovers that a failure renders the path invalid, it can cause the forwarding label stack to become ineligible for traffic forwarding. In this manner, the traffic engineering system can prevent data from being automatically rerouted by the interior gateway protocol (IGP) in possible violation of a traffic constraint.
- In some implementations, the traffic engineering system can maintain an ordered set of inactive or standby paths. Each standby path can be defined by another forwarding label stack and monitoring label stack path. When an active path becomes ineligible, the traffic engineering system can reroute traffic according one of the standby paths.
-
Figure 1 illustrates anenvironment 100 including a network traffic engineering system, according to an illustrative implementation. Theenvironment 100 includes asource 110 and adestination 120 exchanging traffic over acommunication network 101 and anautonomous network 105. Thecommunication network 101 can include, for example and without limitation, a local area network (LAN), a wide area network (WAN), an inter-network (e.g., the Internet), and/or a peer-to-peer network (e.g., an ad hoc peer-to-peer network). Theautonomous network 105 can include, for example and without limitation, a LAN, a WAN, an inter-network (e.g., the Internet), or a peer-to-peer network. Theautonomous network 105 includes multiple network switches, or "nodes," including nodes A, B, C, D, X, and Y. Node A can be an ingress switch at the edge of theautonomous network 105. Node A can operate under the control of a network controller, such as thecontroller 130. In some implementations, thecontroller 130 can be integrated with node A. In some implementations, thecontroller 130 can be external to node A, and in some implementations external to theautonomous network 105. In some implementations, thecontroller 130 can additionally control one or more of the routing nodes B, C, D, X, and Y. In some implementations, theautonomous network 105 can be a software-defined network (SDN) where the nodes A, B, C, D, X, and Y are under the control of one ormore controllers 130. Thecontroller 130 can implement the network traffic engineering system, including a system of path protection when using compressed segment routing label stacks. - In the
environment 100, thesource 110 can transmit data packets to thedestination 120, and receive data packets back from thedestination 120. Packets transmitted by thesource 110 can traverse thecommunication network 101 and enter theautonomous network 105 at, for example, node A. Node A can be an ingress switch at the edge of theautonomous network 105. In order to route the packets to thedestination 120, node A can impose a label or label stack on the packets. The label can include a multipath label switching (MPLS) routing identifier for node D, the node adjacent to thedestination 120. The label can be read by the other nodes of theautonomous network 105, and used to direct the packet to thedestination 120. The path that the packet will take through the autonomous network can be determined by the interior gateway protocol (IGP) shortest path. If a link in the primary path fails, the nodes may route the packet along a different, secondary path. In some cases, however, routing the packets along the secondary path may violate a constraint of traffic placement on the network. For example, relatively low-priority traffic between thesource 110 and thedestination 120 may cause congestion at a link reserved for a path designated for carrying higher-priority traffic. Such a situation is illustrated below with reference to the example shown inFigures 2A and2B . -
Figures 2A and2B illustrate an example of anautonomous network 105 under control of a network traffic engineering system, according to an illustrative implementation. InFigure 2A , all links between the nodes A, B, C, D, X, and Y are functional. InFigure 2B , thelink 1002 between the nodes B and C has failed. As inFigure 1 , thesource 110 is transmitting packets to thedestination 120, which lies within theautonomous network 105. The packets transmitted from thesource 110 traverse thecommunication network 101 before entering theautonomous network 105 via an ingress node A. Node A can be an edge switch or router of theautonomous network 105. Node A can operate under the control of thecontroller 130. Thecontroller 130 may additionally control one or more other ingress nodes such as node A' and node A". Theautonomous network 105 includes additional routing nodes B, C, D, X, and Y. Thedestination 120 is adjacent to node D. The nodes A, B, C, D, X, and Y are joined by various links. Each link includes the four-digit segment identifier and the two-digit link cost shown for each link inFigures 2A and2B . In practice, however, the segment identifiers and the link costs may have more or fewer digits. The link cost is used in determining the interior gateway protocol (IGP) shortest path through theautonomous network 105. Nodes A and B are connected bylink 1001 with an IGP cost of 10. Nodes B and C are connected bylink 1002 with an IGP cost of 10. Nodes C and D are connected bylink 1003 with an IGP cost of 10. Nodes A and X are connected bylink 2001 with an IGP cost of 20. Nodes X and Y are connected bylink 2002 with an IGP cost of 20. - The
controller 130 includes acollector 140 for receiving link state information from the network, and amemory 150 for maintaining pairs of monitoring segment identifier sets and forwarding segment identifier sets. Thememory 150 can also store network status information, and one or more programs of instructions for execution by thecontroller 130. In some implementations, thecontroller 130 can be integrated with node A. In some implementations, thecontroller 130 can be external to node A, and, in some implementations, external to theautonomous network 105. In some implementations, thecontroller 130 can additionally control one or more of the routing nodes B, C, D, X, and Y. In some implementations, thecontroller 130 can cause the nodes to send active probe traffic to determine the liveliness of one or more monitoring segment identifier sets. In some implementations, thecontroller 130 can interface with the routing nodes A, B, C, D, X, and Y using an API. Using the API, thecontroller 130 can change forwarding entries or device configurations through, for example a management interface such as gNMI or NETCONF, or a control plane interface such as BGP. Thecontroller 130 can, via thecollector 140, receive link state information from entities in the network and determine a network status. For example, in some implementations, thecollector 140 can interface with the routing nodes A, B, C, D, X, and Y, and monitor the installed forwarding entries at each node. Thecollector 140 can interface with the routing nodes through a streaming interface. In some implementations, thecollector 140 can receive link-state information from the IGP link state database. In some implementations, thecontroller 130 can compute a mapping between a forwarding resource-e.g., a node interface-and each element of the monitoring segment identifier set. When thecontroller 130 detects a failure of a mapped forwarding resource, thecontroller 130 can trigger a change to the compressed sequence of segment identifiers that are imposed onto the label stack at the head-end node of the path that uses the forwarding resource. - The
destination 120 is adjacent to Node D. Node D advertises its primary next hop address, 1.1.1.1/32, with an multiprotocol label switching (MPLS) segment routing identifier of 210. When node A receives data packets from thesource 110 intended for thedestination 120, node A can impose thelabel 210 onto the packets, and the shortest path to node D will be selected by theautonomous network 105. Node D can forward the packets to thedestination 120. The actual path that thelabel 210 takes through the network is determined by the IGP shortest path. In the case of theautonomous network 105 shown inFigure 2A , the IGP shortest path is A→B, β→C, C→D, with an IGP cost of 30. Thus, packets traveling from node A having anMPLS label 210 will traverse this route to node D anddestination 120 until a change in network conditions renders this path invalid. The path can be rendered invalid due to, for example, a failure of a node or link along the path, a change in network topology, or a change in IGP link cost of one or more links. When the path becomes invalid, a data packet having anMPLS label 210 may deviate from the desired path. An example of the path becoming invalid due to a link failure is shown inFigure 2B . -
Figure 2B shows the sameautonomous network 105 asFigure 2A , but with a failedlink 1002. Packets traveling from node A with anMPLS label 210 will follow a new lowest-cost path for traversing theautonomous network 105. In this case, the next lowest-cost path will be A→B, β→Y, Y→D; that is, substitutinglinks links source 110 and thedestination 120 may violate a constraint of traffic placement on theautonomous network 105; for example, if relatively low-priority traffic between thesource 110 and thedestination 120 causes congestion along thelink 3000, which may be reserved for higher-priority traffic. Furthermore, if thecontroller 130 and node A have defined the desired path only in terms of the forwarding label, nether thecontroller 130 nor node A may have enough information to monitor the status of the desired path, since the desired path is no longer strictly defined. - It may be possible for node A to route traffic strictly via a desired path using segment routing with adjacency segment identifiers, for example A→B, B→C, C→D. Node A could do so by pushing labels corresponding each link of the desired path onto the packets. Doing so, however, can present several challenges. First, node A must be able to impose a label stack three labels deep. Second, nodes B and C must be able to hash based on this label stack depth. Third, the two additional labels on each packet create additional overhead. And finally, a failed link or node along the path could result in blackholing of the traffic. In autonomous networks having an even greater number of hops between the ingress node and internal destinations, these challenges can become prohibitive.
- This disclosure therefore describes a scheme where traffic can be routed strictly from node A to the
destination 120 without requiring node A to impose a label stack having adjacency segment identifiers for each link along the desired path. This scheme can maintain a predetermined alternate path for the traffic in the event of the desired path becoming invalid due to a link failure, network topology change, or other change in network conditions. To achieve this, the path between node A and thedestination 120 can be calculated by some entity (for example, the controller 130) in terms of the total set of links that are to be traversed. The resulting label stack can be referred to as a monitoring segment identifier set. The monitoring segment identifier set can include a sequence of adjacency segment identifiers that strictly define each link along the desired path. The calculating entity can then compress this label stack to the minimum depth required in order to route traffic from node A to thedestination 120 along the desired path. The compressed label stack corresponds to the monitoring segment identifier set and can be referred to as a forwarding segment identifier set. The forwarding segment identifier set includes a compressed sequence of segment identifiers that together represent a compressed version of the monitoring segment identifier set. The compressed stack can include a compressed sequence of segment identifiers containing a smaller number of segment identifiers than the sequence of adjacency segment identifiers that strictly defines the path. The compressed sequence of segment identifiers can include a prefix segment identifier in place of multiple adjacency segment identifiers. In some cases, however, the compressed sequence of segment identifiers may still include a smaller number of adjacency segment identifiers than the uncompressed sequence. When pushed onto a label stack, the compressed sequence of segment identifiers will cause packets having the label stack to follow the path defined by the monitoring segment identifier set, as long as network conditions along the path remain unchanged. Node A can push the compressed sequence of segment identifiers onto packets received from thesource 110 and intended for thedestination 120. Meanwhile, thecontroller 130 can monitor a status of the path defined by the adjacency segment identifiers in the monitoring segment identifier set. If thecontroller 130 detects a network change in the path defined by the adjacency segment identifiers in the monitoring segment identifier set that renders the path invalid, thecontroller 130 can cause Node A to halt or pause the use of the forwarding segment identifier set. In some implementations, thecontroller 130 can instruct node A to fall back to an alternative monitoring segment identifier set and alternative forwarding segment identifier set pair defining a secondary or backup path. - The
controller 130 can continually monitor the status of theautonomous network 105. In some implementations, thecontroller 130 can monitor the network status by observing the installed forwarding entries of devices in the network including the nodes A, B, C, D, X, and Y. In some implementations, thecontroller 130 can receive changes in the forwarding entries through a streaming interface from the devices. In some implementations, thecontroller 130 can monitor the network status by observing the IGP link state database. In some implementations, thecontroller 130 can monitor the network by instructing the network nodes to transmit probe packets across theautonomous network 105. Thecontroller 130 can receive the link state data via thecollector 140. Thecontroller 130 can store the network status information in thememory 150. - The
controller 130 can provide a system of path protection by providing for an alternative path for the traffic in the event the primary path becomes invalid. If thecontroller 130 receives an indication that the path defined by the monitoring segment identifier set is no longer valid, either due to a link failure or change network topology, thecontroller 130 can instruct node A to cease using the compressed sequence of segment identifiers. Halting or pausing the traffic in this manner can prevent the traffic from rerouting automatically based on IGP and possibly violating a network traffic constraint. Node A can fall back to routing the traffic via an alternative path defined by a second monitoring segment identifier set and second forwarding identifier set. Thecontroller 130 can store monitoring segment identifier set and forwarding segment identifier set pairs in thememory 150. In some implementations, each node can store a monitoring segment identifier set and forwarding segment identifier set pair for each path in a local memory. In some implementations, each node can store a primary monitoring segment identifier set and forwarding segment identifier set pair, and a secondary (alternate) monitoring segment identifier set and forwarding segment identifier set pair, for each path.Figure 3 , described below, illustrates different MPLS segment routing schemes. -
Figure 3 shows example label stacks and path for bothconventional MPLS routing 301 and segment routing withpath protection 302, according to an illustrative implementation. Using conventionalMPLS segment routing 301, node A can determine the desireddestination 310 for data packets from thesource 110 intended for thedestination 120. In this case, thedestination 120 is outside of the area of the network governed by interior gateway protocol (IGP); therefor, traffic intended for thedestination 120 is routed via the next-hop node for thedestination 120, node D. Accordingly, node A can impose anMPLS forwarding label 320 on packets from thesource 110 to node D. Packets having theMPLS label 210 traversing theautonomous network 105 under the conditions illustrated inFigure 2A will follow the IGPshortest path 330; namely A→B, β→C, C→D. If thelink 1002 fails as shown inFigure 2B , however, the IGP shortest path afterfailure 340 will reroute to A→B, B→Y, Y→D. - Using segment routing with
path protection 302, thecontroller 130 can specify a strict path for the data packets from thesource 110 intended for thedestination 120 along the desiredpath 350. The desiredpath 350 under the network conditions shown inFigure 2A is A→B, β→C, C→D. Themonitoring stack 360 corresponding to the desiredpath 350 includes adjacency segment identifier for each link along the desired route; that is, 1001, 1002, and 1003. To avoid having to impose a label stack three deep onto the data packets, thecontroller 130 can compress themonitoring stack 360 down to only the MPLS segment routing labels necessary to cause data packets to traverse theautonomous network 105 along the desiredpath 350. As previously described, under the network conditions shown inFigure 2A , packets will follow the path A→B, β→C, C→D if imposed with a forwarding label of 210. Accordingly, thecontroller 130 can compress themonitoring stack 360 down to acorresponding forwarding stack 365 consisting of only theforwarding label 210. Packets having this forwardingstack 365 will continue traversing theautonomous network 105 via the path A→B, β→C, C→D as long as the network remains unchanged. - If one of the links in the desired path fails or is altered, packets having the forwarding
stack 365 with theforwarding label 210 may not continue to follow the desired path. Thecontroller 130 can monitor the desired path using the information in themonitoring stack 360. If the path becomes invalid for some reason, thecontroller 130 can impose an alternate path. For example, inFigure 2B , thelink 1002 has failed. Assuming that, due to traffic constraints, packets should not be re-routed across the link B→Y, node A can fall back to using analternate path 370. In this case, thealternate path 370 will follow A→X, X→Y, Y→D. Thealternate monitoring stack 380 corresponding to this path will be 2001, 2002, 2003. Thecontroller 130 can compressalternate monitoring stack 380 of adjacency segment identifiers down to thealternate forwarding stack 385. In the example shown inFigure 2B , the system need only impose the adjacency segment identifier corresponding to node Y (i.e., 2001) and the MPLS label for node D (i.e., 210). Under the network conditions inFigure 2B , packets arriving at node Y and labeled for node D will follow thealternate path 370 without any additional information. Accordingly, thealternate monitoring stack 380 will include thelinks alternate forwarding stack 385 will includesegment identifiers B-C link 390 will be A→X, X→Y, Y→D. Therefore, the verboten link B→Y is avoided and no traffic constraints are violated. An example method for performing segment routing with path protection is described below with reference toFigure 4 . -
Figure 4 is flowchart of anexample method 400 of network traffic engineering, according to an illustrative implementation. Themethod 400 includes maintaining a monitoring segment identifier set including a sequence of adjacency segment identifiers (stage 410). Themethod 400 includes maintaining a forwarding segment identifier set including a compressed sequence of segment identifiers (stage 420). Themethod 400 includes monitoring the status of the path defined by the monitoring segment identifier set (stage 430). Themethod 400 includes receiving a data packet (stage 440). Themethod 400 includes determining whether the path defined by the monitoring segment identifier set is valid (decision 450). If the path is valid, themethod 400 includes pushing the compressed sequence of segment identifiers onto the data packet (stage 460). If the path is invalid, themethod 400 includes not pushing the sequence of prefix identifiers onto the data packet (stage 470). Themethod 400 includes transmitting the data packet (stage 480). - The
method 400 includes maintaining a monitoring segment identifier set including a sequence of adjacency segment identifiers (stage 410). The segment identifier set can be maintained by a network controller, such as thecontroller 130 previously described. The sequence of adjacency segment identifiers can define a path for traffic from a source, such as thesource 110 previously described, intended for a destination device, such as thedestination device 120 previously described. The monitoring segment identifier set can be, for example, a monitoring stack such as the monitoring stack 460 described above with reference toFigure 3 . - The
method 400 includes maintaining a forwarding segment identifier set including a compressed sequence of segment identifiers (stage 420). The forwarding segment identifier set can correspond to the monitoring segment identifier set. The forwarding segment identifier set can be maintained by the network controller. The compressed sequence of segment identifiers can represent a compressed version of the monitoring segment identifier set. The compressed stack can include a compressed sequence of segment identifiers containing a smaller number of segment identifiers than the sequence of adjacency segment identifiers that strictly defines the path. The compressed sequence of segment identifiers can include a prefix segment identifier in place of multiple adjacency segment identifiers. In some cases, however, the compressed sequence of segment identifiers may still include a smaller number of adjacency segment identifiers than the uncompressed sequence. The compressed sequence of segment identifiers will, when pushed onto a label stack, cause data packets having the label stack to follow the path defined by the monitoring segment identifier set. The controller can maintain ordered pairs of monitoring segment identifier sets and their corresponding forwarding segment identifier sets in a memory, such as thememory 150. - The
method 400 includes monitoring the status of the path defined by the monitoring segment identifier set (stage 430). The controller can use the information in the monitoring segment identifier set to monitor the status of each link and/or node along the path that it defines. In some implementations, the controller can monitor the path status by observing the installed forwarding entries of the nodes of the autonomous network. In some implementations, the controller can receive changes in the forwarding entries through a streaming interface from the nodes. In some implementations, the controller can monitor the network status by observing a IGP link state database associated with the autonomous network. In some implementations, the controller can monitor the network by instructing the nodes to transmit probe packets across the autonomous network. The controller can monitor for network changes that would result in a data packet having the compressed sequence of segment identifiers in its label stack to deviate from the path defined by the monitoring segment identifier set. - The
method 400 includes receiving a data packet (stage 440). The data packet can be received from the source by a node or switch. The node can be an ingress switch or router at the end of an autonomous network, such as theautonomous network 105 previously described. The node can determine that the data packet is indented for the destination device, and thus that it should follow the path described by the monitoring segment identifier set, if that path is valid. - The
method 400 includes determining whether the path defined by the monitoring segment identifier set is valid (decision 450). If the path is valid, themethod 400 includes pushing the compressed sequence of segment identifiers onto a label stack of the data packet (stage 460) and transmitting the data packet (stage 480). If the path is valid, the node can push the compressed sequence of segment identifiers onto the data packet and transmit it along a path indicated by the compressed sequence of segment identifiers. In some implementations, themethod 400 can repeat beginning atstage 430. - If the path is invalid (decision 450), the
method 400 includes not pushing the sequence of prefix identifiers onto the data packet (stage 470). In some implementations, the controller will maintain an alternate monitoring segment identifier set / forwarding segment identifier set pair describing an alternate path for traffic intended for the destination device. The alternate monitoring segment identifier set can include an alternate sequence of adjacency segment identifiers defining the alternate path. The alternate forwarding segment identifier set corresponds to the alternate monitoring segment identifier set. The alternate forwarding segment identifier set includes an alternate compressed sequence of segment identifiers. In the event the controller determines that the path is invalid, the controller can cause the switch to push the alternate compressed sequence of segment identifiers onto the packet. Themethod 400 includes transmitting the data packet (stage 480). The node can transmit the data packet along a path indicated by the alternate compressed sequence of segment identifiers. In some implementations, themethod 400 can repeat beginning atstage 430. -
Figure 5 is a block diagram illustrating a general architecture for a computer system 800 that may be employed to implement elements of the systems and methods described and illustrated herein, according to an illustrative implementation. The computing system 800 can be used to implement one or more of the devices described above, including thesource 110, thedestination 120, thecontroller 130, or one or more of the nodes A, B, C, D, X, and Y. The computing system 800 may be utilized in implementing thetraffic engineering method 400 shown inFigure 4 . - In broad overview, the
computing system 810 includes at least oneprocessor 850 for performing actions in accordance with instructions and one ormore memory devices example computing system 810 includes one ormore processors 850 in communication, via abus 815, with at least onenetwork interface controller 820 with one or morenetwork interface ports 822 connecting to one ormore network devices 824,memory 870, and anyother devices 880, e.g., an I/O interface. Generally, aprocessor 850 will execute instructions received from memory. Theprocessor 850 illustrated incorporates, or is directly connected to,cache memory 875. - In more detail, the
processor 850 may be any logic circuitry that processes instructions, e.g., instructions fetched from thememory 870 orcache 875. In many embodiments, theprocessor 850 is a microprocessor unit or special purpose processor. The computing device 800 may be based on any processor, or set of processors, capable of operating as described herein. In some implementations, theprocessor 850 can be capable of executing thetraffic engineering method 400 shown inFigure 4 . Theprocessor 850 may be a single core or multi-core processor. Theprocessor 850 may be multiple processors. In some implementations, theprocessor 850 can be configured to run multi-threaded operations. In some implementations, theprocessor 850 may host one or more virtual machines or containers, along with a hypervisor or container manager for managing the operation of the virtual machines or containers. In such implementations, thetraffic engineering method 400 shown inFigure 4 can be implemented within the virtualized or containerized environments provided on theprocessor 850. - The
memory 870 may be any device suitable for storing computer readable data. Thememory 870 may be a device with fixed storage or a device for reading removable storage media. Examples include all forms of non-volatile memory, media and memory devices, semiconductor memory devices (e.g., EPROM, EEPROM, SDRAM, and flash memory devices), magnetic disks, magneto optical disks, and optical discs (e.g., CD ROM, DVD-ROM, and Blu-ray® discs). A computing system 800 may have any number ofmemory devices 870. In some implementations, thememory 870 can include instructions corresponding to thetraffic engineering method 400 shown inFigure 4 . In some implementations, thememory 870 supports virtualized or containerized memory accessible by virtual machine or container execution environments provided by thecomputing system 810. - The
cache memory 875 is generally a form of computer memory placed in close proximity to theprocessor 850 for fast read times. In some implementations, thecache memory 875 is part of, or on the same chip as, theprocessor 850. In some implementations, there are multiple levels ofcache 875, e.g., L2 and L3 cache layers. - The
network interface controller 820 manages data exchanges via the network interfaces 822 (also referred to as network interface ports). Thenetwork interface controller 820 handles the physical and data link layers of the OSI model for network communication. In some implementations, some of the network interface controller's tasks are handled by theprocessor 850. In some implementations, thenetwork interface controller 820 is part of theprocessor 850. In some implementations, acomputing system 810 has multiplenetwork interface controllers 820. The network interfaces 822 are connection points for physical network links. In some implementations, thenetwork interface controller 820 supports wireless network connections and aninterface port 822 is a wireless receiver/transmitter. Generally, acomputing device 810 exchanges data withother network devices 824 via physical or wireless links to a network interfaces 822. In some implementations, thenetwork interface controller 820 implements a network protocol such as Ethernet. - The
other network devices 824 are connected to thecomputing device 810 via anetwork interface port 822. Theother network devices 824 may be peer computing devices, network devices, or any other computing device with network functionality. For example, afirst network device 824 may be a network device such as a hub, a bridge, a switch, or a router, connecting thecomputing device 810 to a data network such as the Internet. - The
other devices 880 may include an I/O interface, external serial device ports, and any additional co-processors. For example, acomputing system 810 may include an interface (e.g., a universal serial bus (USB) interface) for connecting input devices (e.g., a keyboard, microphone, mouse, or other pointing device), output devices (e.g., video display, speaker, or printer), or additional memory devices (e.g., portable flash drive or external media drive). In some implementations, a computing device 800 includes anadditional device 880 such as a coprocessor, e.g., a math co-processor can assist theprocessor 850 with high precision or complex calculations. - Implementations of the subject matter and the operations described in this specification can be implemented in digital electronic circuitry, or in computer software embodied on a tangible medium, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer programs embodied on a tangible medium, i.e., one or more modules of computer program instructions, encoded on one or more computer storage media for execution by, or to control the operation of, a data processing apparatus. A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. The computer storage medium can also be, or be included in, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices). The computer storage medium may be tangible and non-transitory.
- The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources. The operations may be executed within the native environment of the data processing apparatus or within one or more virtual machines or containers hosted by the data processing apparatus.
- A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers or one or more virtual machines or containers that are located at one site or distributed across multiple sites and interconnected by a communication network. Examples of communication networks include a local area network ("LAN") and a wide area network ("WAN"), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
- The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular implementations of particular inventions. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.
- Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
- References to "or" may be construed as inclusive so that any terms described using "or" may indicate any of a single, more than one, and all of the described terms. The labels "first," "second," "third," and so forth are not necessarily meant to indicate an ordering and are generally used merely to distinguish between like or similar items or elements.
- Various modifications to the implementations described in this disclosure may be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other implementations without departing from the scope of the appended claims. Thus, the claims are not intended to be limited to the implementations shown herein, but are to be accorded the widest scope consistent with this disclosure, the principles and the novel features disclosed herein.
Claims (15)
- A network traffic engineering system comprising:a switch; anda controller (130) configured to:maintain a monitoring segment identifier set including a sequence of adjacency segment identifiers defining a path for traffic intended for a destination device, wherein each adjacency segment identifier identifies a specific link of a network;maintain a forwarding segment identifier set corresponding to the monitoring segment identifier set, the forwarding segment identifier set including a compressed sequence of segment identifiers, together representing a compressed version of the monitoring segment identifier set such that the compressed sequence of segment identifiers, when pushed onto a label stack, will cause traffic having the label stack to follow the path defined by the monitoring segment identifier set;monitor a status of each link and/or node along the path defined by the monitoring segment identifier set;subject to determining that the path defined by the monitoring segment identifier set is valid, cause the switch to push the compressed sequence of segment identifiers onto a first label stack of a first data packet received by the switch prior to transmitting the first data packet; andsubject to determining that the path defined by the monitoring segment identifier set is invalid, cause the switch to not push the compressed sequence of segment identifiers onto a second label stack of a second data packet received by the switch prior to transmitting the second data packet.
- The network traffic engineering system of claim 1, wherein determining that the path defined by the monitoring segment identifier set is invalid includes detecting a change in the network that would result in a data packet having the first data packet label stack to deviate from the path defined by the monitoring segment identifier set.
- The network traffic engineering system of claim 1, wherein the controller (130) is configured to cause the switch to send active probe traffic to determine the liveliness of the path defined by the monitoring segment identifier set.
- The network traffic engineering system of claim 1, wherein the switch is an ingress switch at the edge of an autonomous network (105).
- The network traffic engineering system of claim 4, wherein the controller (130) is integrated within the switch.
- The network traffic engineering system of claim 5, wherein the controller (130) is configured to:maintain a second monitoring segment identifier set including a second sequence of adjacency segment identifiers defining a second path for traffic intended for the destination device;maintain a second forwarding segment identifier set corresponding to the second monitoring segment identifier set, the second forwarding segment identifier set including a second compressed sequence of segment identifiers, together representing a compressed version of the second monitoring segment identifier set such that the second compressed sequence of segment identifiers, when pushed onto a label stack, will cause traffic having the label stack to follow the second path defined by the second monitoring segment identifier set;subject to determining that the path defined by the monitoring segment identifier set is invalid, cause the switch to push the second compressed sequence of segment identifiers onto the second data packet prior to transmitting the second data packet.
- The network traffic engineering system of claim 4, wherein the controller (130) is a separate device external to the switch and controlling multiple additional switches.
- The network traffic engineering system of claim 7, wherein:the controller (130) determines that the path defined by the monitoring segment identifier set is invalid due to detecting a failure of a link or node in the path; andthe controller (130) is configured to instruct the switch via an API to replace the monitoring segment identifier set with the second monitoring segment identifier set and the forwarding segment identifier set with the second forwarding segment identifier set.
- The network traffic engineering system of claim 8, wherein the controller (130) detects the failure through observation of the installed forwarding entries of devices within the network.
- The network traffic engineering system of claim 8, wherein the controller (130) detects the failure through observation of an interior gateway protocol link state database.
- A method (400) of network traffic engineering comprising:maintaining (410), by a controller of a network traffic engineering system, a monitoring segment identifier set including a sequence of adjacency segment identifiers defining a path for traffic intended for a destination device;maintaining (420), by the controller, a forwarding segment identifier set corresponding to the monitoring segment identifier set, the forwarding segment identifier set including a compressed sequence of segment identifiers representing a compressed version of the monitoring segment identifier set such that the compressed sequence of segment identifiers, when pushed onto a label stack, will cause traffic having the label stack to follow the path defined by the monitoring segment identifier set;monitoring (430), by the controller, a status of each link and/or node along the path defined by the monitoring segment identifier set;receiving (440) a first data packet at a switch;subject to determining (450) that the path defined by the monitoring segment identifier set is valid, causing, by the controller, the switch to push the compressed sequence of segment identifiers onto a first label stack of a first data packet received by the switch prior to transmitting the first data packet;receiving a second data packet at the switch; andsubject to determining (450) that the path defined by the monitoring segment identifier set is invalid, causing, by the controller, the switch to not push the compressed sequence of segment identifiers onto a second label stack of a second data packet received by the switch prior to transmitting the second data packet.
- The method (400) of claim 11, wherein determining that the path defined by the monitoring segment identifier set is invalid includes detecting a change in the network that would result in a data packet having the first data packet label stack to deviate from the path defined by the monitoring segment identifier set, and/or wherein the controller is configured to cause the switch to send active probe traffic to determine the liveliness of the path defined by the monitoring segment identifier set.
- The method (400) of claim 11, wherein the switch is an ingress switch at the edge of an autonomous network, and wherein the controller is preferably integrated within the switch.
- The method (400) of claim 13, comprising:maintaining, by the controller, a second monitoring segment identifier set including a second sequence of adjacency segment identifiers defining a second path for traffic intended for the destination device;maintaining, by the controller, a second forwarding segment identifier set corresponding to the second monitoring segment identifier set, the second forwarding segment identifier set including a second compressed sequence of segment identifiers, together representing a compressed version of the second monitoring segment identifier set such that the second compressed sequence of segment identifiers, when pushed onto a label stack, will cause traffic having the label stack to follow the second path defined by the second monitoring segment identifier set;subject to determining that the path defined by the monitoring segment identifier set is invalid, causing, by the controller, the switch to push the second compressed sequence of segment identifiers onto the second data packet prior to transmitting the second data packet.
- The method (400) of claim 14, wherein the controller is a separate device external to the switch and controlling multiple additional switches; and wherein the controller preferably determines that the path defined by the monitoring segment identifier set is invalid due to detecting a failure of a link or node in the path, the method comprising:instructing, by the controller, the switch to replace the monitoring segment identifier set with the second monitoring segment identifier set and the forwarding segment identifier set with the second forwarding segment identifier set; and preferablydetecting, by the controller, the failure through observation of the installed forwarding entries of devices within the network; and/or wherein the controller detects the failure through observation of an interior gateway protocol link state database.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/702,467 US10404600B2 (en) | 2017-09-12 | 2017-09-12 | Mechanism and apparatus for path protection when using compressed segment routing label stacks |
PCT/US2018/036833 WO2019055079A1 (en) | 2017-09-12 | 2018-06-11 | Mechanism and apparatus for path protection when using compressed segment routing label stacks |
Publications (2)
Publication Number | Publication Date |
---|---|
EP3619896A1 EP3619896A1 (en) | 2020-03-11 |
EP3619896B1 true EP3619896B1 (en) | 2021-08-04 |
Family
ID=62815150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP18737082.0A Active EP3619896B1 (en) | 2017-09-12 | 2018-06-11 | Mechanism and apparatus for path protection when using compressed segment routing label stacks |
Country Status (3)
Country | Link |
---|---|
US (1) | US10404600B2 (en) |
EP (1) | EP3619896B1 (en) |
WO (1) | WO2019055079A1 (en) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10574561B2 (en) * | 2017-10-04 | 2020-02-25 | Cisco Technology, Inc. | Centralized error telemetry using segment routing header tunneling |
CN112995029B (en) * | 2018-06-30 | 2024-03-19 | 华为技术有限公司 | Transmission path fault processing method, device and system |
CN111917640B (en) * | 2019-05-09 | 2023-06-06 | 华为技术有限公司 | SRv6 network segment list generation method, message forwarding method, device and system |
CN116319617A (en) * | 2019-08-31 | 2023-06-23 | 华为技术有限公司 | Method, equipment and system for forwarding message in SR network |
CN112583745A (en) * | 2019-09-27 | 2021-03-30 | 华为技术有限公司 | Method, equipment and system for forwarding message in SR network |
CN112822104A (en) * | 2019-11-15 | 2021-05-18 | 华为技术有限公司 | Data message processing method, device, storage medium and system |
CN115314563A (en) * | 2020-01-20 | 2022-11-08 | 华为技术有限公司 | Message generation method, message processing method and message processing device |
CN113438160B (en) * | 2020-03-23 | 2024-05-31 | 中兴通讯股份有限公司 | Routing method, routing device and computer readable storage medium |
CN113497760B (en) * | 2020-04-07 | 2024-05-07 | 中兴通讯股份有限公司 | Segmented route header compression method, service processing method and device |
CN113542118B (en) * | 2020-04-13 | 2024-01-23 | 中兴通讯股份有限公司 | Segmented route header compression method, service processing method and device |
CN115398869B (en) * | 2020-04-15 | 2024-07-16 | 华为技术有限公司 | Minimizing differences in segment identifiers for segment routing |
CN113556284B (en) * | 2020-04-24 | 2023-01-10 | 中国移动通信有限公司研究院 | Data packet processing method and device |
CN113691446B (en) * | 2020-05-19 | 2023-02-10 | 华为技术有限公司 | Method and device for sending message |
CN112118179B (en) * | 2020-08-10 | 2022-01-14 | 中盈优创资讯科技有限公司 | Method and device for creating end-to-end Segmented Routing (SR) path |
US11405320B2 (en) | 2020-12-04 | 2022-08-02 | Cisco Technology, Inc. | Systems and methods for scalable validation of multiple paths in a network using segment routing |
CN113542126B (en) * | 2021-05-24 | 2022-11-18 | 新华三信息安全技术有限公司 | Generalized SRv6 full-path compression method and device |
CN113472657B (en) * | 2021-06-29 | 2022-07-29 | 新华三大数据技术有限公司 | Path optimization method and device |
US11777841B2 (en) * | 2021-08-31 | 2023-10-03 | Ciena Corporation | Handling diversity constraints with Segment Routing and centralized PCE |
CN113824632B (en) * | 2021-09-03 | 2023-04-18 | 比威网络技术有限公司 | Method and device for compressing path points in safe hierarchical multipath routing |
WO2023119576A1 (en) * | 2021-12-23 | 2023-06-29 | 楽天モバイル株式会社 | Communication path control system and communication path control method |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110242988A1 (en) * | 2010-04-05 | 2011-10-06 | Cisco Technology, Inc. | System and method for providing pseudowire group labels in a network environment |
WO2011144495A1 (en) * | 2010-05-19 | 2011-11-24 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and apparatus for use in an openflow network |
US9369371B2 (en) | 2012-10-05 | 2016-06-14 | Cisco Technologies, Inc. | Method and system for path monitoring using segment routing |
US8971190B2 (en) * | 2013-01-21 | 2015-03-03 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and devices for implementing shortest path bridging MAC mode support over a virtual private LAN service network |
US9450864B2 (en) * | 2013-10-11 | 2016-09-20 | Futurewei Technologies, Inc. | Using PCE as SDN controller |
US10637775B2 (en) * | 2015-10-17 | 2020-04-28 | Cisco Technology, Inc. | Make-before-break mechanism for label switched paths |
US11032197B2 (en) * | 2016-09-15 | 2021-06-08 | Cisco Technology, Inc. | Reroute detection in segment routing data plane |
-
2017
- 2017-09-12 US US15/702,467 patent/US10404600B2/en active Active
-
2018
- 2018-06-11 WO PCT/US2018/036833 patent/WO2019055079A1/en unknown
- 2018-06-11 EP EP18737082.0A patent/EP3619896B1/en active Active
Non-Patent Citations (1)
Title |
---|
None * |
Also Published As
Publication number | Publication date |
---|---|
US10404600B2 (en) | 2019-09-03 |
EP3619896A1 (en) | 2020-03-11 |
WO2019055079A1 (en) | 2019-03-21 |
US20190081897A1 (en) | 2019-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3619896B1 (en) | Mechanism and apparatus for path protection when using compressed segment routing label stacks | |
US11032197B2 (en) | Reroute detection in segment routing data plane | |
JP6053003B2 (en) | Transmission system, transmission apparatus, and transmission method | |
US10868757B2 (en) | Efficient routing in software defined networks | |
US8456982B2 (en) | System and method for fast network restoration | |
US9369371B2 (en) | Method and system for path monitoring using segment routing | |
US9794167B2 (en) | Bicasting using non-congruent paths in a loop-free routing topology having routing arcs | |
US9246794B2 (en) | Label distribution and route installation in a loop-free routing topology using routing arcs | |
EP3232611B1 (en) | Method, device and system for performing bidirectional forwarding detection on an aggregated link | |
JP6008801B2 (en) | Transmission system, transmission method, and transmission apparatus | |
EP3253012B1 (en) | Method and apparatus for obtaining port path | |
JP6443864B2 (en) | Method, apparatus and system for implementing packet loss detection | |
Thorat et al. | Enhanced local detouring mechanisms for rapid and lightweight failure recovery in OpenFlow networks | |
JP5965335B2 (en) | COMMUNICATION SYSTEM AND ROUTE CONTROL METHOD | |
Papán et al. | The survey of current IPFRR mechanisms | |
EP3399424B1 (en) | Using unified api to program both servers and fabric for forwarding for fine-grained network optimizations | |
US10270680B2 (en) | Avoiding routing interruption during transition to a virtual entity | |
JP6042838B2 (en) | Management system, management server, and management method | |
Huang et al. | Congestion aware fast link failure recovery of SDN network based on source routing | |
CN108390780B (en) | Method and apparatus for processing information | |
JP2017085442A (en) | Controller, communication system, control method, and program | |
JP2015525984A (en) | COMMUNICATION SYSTEM, CONTROL DEVICE, COMMUNICATION METHOD, AND PROGRAM | |
US20240146643A1 (en) | Virtual testing of network resiliency | |
JP6264469B2 (en) | Control device, communication system, and control method of relay device | |
WO2024183885A1 (en) | Fault restoration in fat-tree based networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: UNKNOWN |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
17P | Request for examination filed |
Effective date: 20191203 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
DAV | Request for validation of the european patent (deleted) | ||
DAX | Request for extension of the european patent (deleted) | ||
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: GRANT OF PATENT IS INTENDED |
|
INTG | Intention to grant announced |
Effective date: 20210120 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE PATENT HAS BEEN GRANTED |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: REF Ref document number: 1418137 Country of ref document: AT Kind code of ref document: T Effective date: 20210815 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602018021255 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG9D |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R079 Ref document number: 602018021255 Country of ref document: DE Free format text: PREVIOUS MAIN CLASS: H04L0012721000 Ipc: H04L0045000000 |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: FP |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 1418137 Country of ref document: AT Kind code of ref document: T Effective date: 20210804 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: RS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211104 Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211104 Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211206 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211105 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602018021255 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SM Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: AL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
26N | No opposition filed |
Effective date: 20220506 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
REG | Reference to a national code |
Ref country code: BE Ref legal event code: MM Effective date: 20220630 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220611 Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220630 Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220611 Ref country code: FR Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220630 Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220630 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: BE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220630 |
|
P01 | Opt-out of the competence of the unified patent court (upc) registered |
Effective date: 20230506 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO Effective date: 20180611 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20240627 Year of fee payment: 7 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: DE Payment date: 20240627 Year of fee payment: 7 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: NL Payment date: 20240626 Year of fee payment: 7 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210804 |