Patent ID: 12206581

DESCRIPTION OF EXAMPLE EMBODIMENTS

Overview

This disclosure describes various techniques for generating and utilizing in-situ path signatures for data flows traversing networks. A path signature can be generated by a network node for a particular data packet in a data flow that is traversing the network node. The path signature can represent a unique path that the data packet has traversed to arrive at the network node. When the network node identifies that different data packets in the same data flow have different path signatures, the network node can trigger an alert indicating that the packets in the data flow may be out-of-order and/or there may be a problem with the network resulting in the out-of-order packets. The network node may be a physical device, server, switch, or the like.

In various implementations, the techniques described herein may be performed by a system and/or device having non-transitory computer-readable media storing computer-executable instructions that, when executed by one or more processors, performs the methods described herein.

An example method includes receiving, at a node, a packet including a first value; generating a second value by inputting the first value and data associated with the node into a hash function; replacing the first value with the second value in the packet; and forwarding, by the node, the packet including the second value. According to some examples, replacing the first value with the second value includes replacing the first value in a data field having a fixed size with the second value, the data field including at least one of an In-situ OAM (IOAM) field, an In-Network Telemetry (INT) field, an Inband Flow Analyzer (IFA) field, or an In-situ Flow Information Telemetry (IFIT) field.

In some cases, a size of the first value is equivalent to a size of the second value. In particular examples, each of the size of the first value and the size of the second value is 32 bits or 64 bits. In some implementations, the first value is a first signature and the second value is a second signature.

In various cases, the example method further includes receiving, at the node, a second packet including a third value; identifying that the third value is different than the first value; and based on identifying that the third value is different than the first value, transmitting an alert to a network manager. In some implementations, the example method further includes receiving, at the node, a second packet including a third value; generating a fourth value by inputting the third value and the data associated with the node into the hash function; identifying that the fourth value is different than the second value; and based on identifying that the fourth value is different than the second value, transmitting an alert to a network manager. In some cases, the node is a first node, the packet is forwarded to a second node, and the second node identifies that the fourth value is different than the second value. According to some examples, wherein a size of the first value is equivalent to a size of the third value.

Example Embodiments

Various implementations of the present disclosure relate to identifying a path through which a data packet is transferred through a network. Particular implementations provide a path signature data field in the data packet, which can be modified by individual nodes through which the data packet is transferred.

In some implementations, a node may receive a data packet with an existing path signature. The node may input the existing path signature, as well as other information based on the node itself, into a hash function that may return a revised path signature. The node may replace the existing path signature with the revised path signature in the data packet before forwarding the data packet to another node in the network. The revised path signature may represent the unique path that the data packet has traversed up to the node itself.

In particular cases, a node or some other device may track path signatures corresponding to data packets in the same data flow. If the node identifies a change in path signatures in the data flow, the node may transmit an alert to a collector. The collector may diagnose a problem in the network based on the alert and/or other alerts corresponding to the data flow from other nodes in the network. In some cases, the path signature may be tracked as part of an existing NetFlow functionality.

Unlike IOAM metadata, the path signature data field can have a fixed size regardless of the number of nodes through which the data packet is transferred. For instance, the path signature data field can be limited to 32- or 64-bits. Because the path signature can have a relatively small size, the path signature can be readily implemented in existing network node hardware.

Various implementations described herein provide particular improvements to the field of computer networking. The path signature can enable in-situ network path tracking for individual data flows as the data flows are being transmitted through the network. Accordingly, problems within the network can be efficiently diagnosed in real-time.

Various implementations of the present disclosure will be described in detail with reference to the drawings, wherein like reference numerals present like parts and assemblies throughout the several views. Additionally, any samples set forth in this specification are not intended to be limiting and merely set forth some of the many possible implementations.

FIG.1illustrates an example environment100in which packets of a flow are transmitted through different paths. InFIG.1, data plane transmissions are depicted with solid arrows and control plane transmissions are depicted with dotted arrows.

As illustrated inFIG.1, a source102may transmit data to a destination104via a network106. The source102and the destination104may each be examples of nodes. As used herein, the terms “node,” “network node,” and their equivalents, can refer to any entity within a network that can transmit packets to and/or receive packets from at least one other node. A node may be a device, a software instance, a Virtual Machine (VM), or the like. In some examples, a node can be a client, a server, or a combination thereof. In some cases, a node can be an endpoint of a flow, such as the source102or the destination104. The source102may be, for example, a content server. The destination104, for example, may be a User Equipment (UE).

The source102may transmit the data in a flow that includes in-order packets108. As used herein, the terms “flow,” “data flow,” “traffic flow,” “packet flow,” and their equivalents, can refer to multiple packets transmitted from a source to a destination. In some examples, a flow may include packets that share at least one of the same ingress interface (e.g., SNMP ifIndex), source (e.g., from the same IP address), destination (e.g., directed to the same IP address), protocol (e.g., IP protocol), source port (e.g., for UDP or TCP), destination port (e.g., for UDP, TCP, or ICMP), or type of service (e.g., IP Type of Service (ToS)). As used herein, the terms “packet,” “data packet,” and their equivalents, can refer to a unit of data that is transmitted between two nodes. In various examples, a packet may have a header, which may include control data, and a payload, which may include user data. The header may include information such as an identifier of the source of the packet, an identifier of the destination of the packet, an indication of the type of user data in the payload, or the like. In some cases, a packet can be defined by a particular networking protocol, such as IP, TCP, UDP, or another networking protocol.

As used herein, the term “port,” and its equivalents, can refer to a component of a node configured to connect the rest of the node to an interface. A node may have a fixed set of ports that can be selectively connected to particular interfaces. Each port of a node may have a unique identity, which may be represented by a port number. As used herein, the terms “ingress port,” “entry port,” and their equivalents, can refer to a port at which a packet enters a node. As used herein, the terms “egress port,” “exit port,” and their equivalents, can refer to a port at which a packet exits a node.

As illustrated inFIG.1, the in-order packets108are labeled and transmitted from the source102in the order of “A,” “B,” and “C.” The in-order packets108may consecutively reach a first node110in the network106. The first node110may forward the packets along different paths through the network106, including a first path112, a second path114, and a third path116. The first node110may forward the packets along the different paths based on various factors. For instance, the first node110may include a load balancer than may identify that the first path112is the most uncongested path when packet “A” is received but may identify that the second path114is the most uncongested path when packet “B” is received. In some cases, the first node110may identify that the second path114is connected when packet “B” is received, but is disconnected when packet “C” is received, and may therefore select the third path116for packet “C” rather than the second path114. In particular implementations, a problem with the network (e.g., a problem causing the congestion or disconnection) may cause the first node110to forward the packets along the different paths.

As used herein, the terms “path,” “network path,” and their equivalents, can refer to a specific sequence of nodes and/or interfaces over which a packet can traverse. A path may be defined between two nodes. In some cases, a path of a packet transmitted from a first node to a second node may be defined according to an identity of the first node, an identity of the second node, as well as any sequence of intermediary nodes and/or interfaces over which the packet travels from the first node to the second node.

As used herein, the term “interface,” and its equivalents, can refer to a connection between two nodes in a network. In some cases, an interface may directly connect the two nodes and/or may omit any intermediary nodes. An interface may be connected to a first port of a first device and to a second port of a second device. In some cases, an interface between two nodes can be a wired interface, such that a packet can be transmitted as a signal conducted through a solid medium (e.g., an Ethernet cable, a fiber-optic cable, etc.) connecting the two nodes. In some examples, an interface between nodes can be a wireless interface, such that a packet can be transmitted as a signal through a fluid medium (e.g., air, water, etc.) connecting the two nodes. A wireless interface may be defined according to a type of wave used to carry the signal (e.g., a sound wave, an electromagnetic wave, etc.) and a frequency of the wave (e.g., an ultrasonic frequency, a radio frequency, an infrared frequency, etc.). An interface may be further defined according to a particular communication protocol, which may indicate how data transmitted over the interface is modulated. Some examples of communication protocols applicable to this application include TCP/IP, Wi-Fi, Bluetooth, or the like.

As illustrated inFIG.1, the first path112, the second path114, and the third path116may converge to a second node118, which may forward the packets to the destination104. However, due to the differences between the first path112, the second path114, and the third path116, the second node118may forward the packets as Out-of-Order (000) packets120to the destination104. Even though the in-order packets108were transmitted in the order of “A,” “B,” and “C,” the OoO packets120are received at the destination104in the order of “C,” “A,’ and “B.”

In various implementations, the first node110and the second node118may generate path signatures for the packets and amend the packets with the path signatures. As used herein, the terms “signature,” “path signature,” and their equivalents, can refer to a unique identifier of a path that a packet has traversed or is traversing. A path signature can be generated by a node, such as the first node110or the second node118, for a given packet based at least one of an identifier of the node110or118, an ingress port at which the packet is received by the node110or118, or an egress packet at which the packet is forwarded from the node110or118. The node110or118can further include the generated path signature in the given packet and forward the packet with the generated path signature toward the destination104.

In some cases, a revised path signature can be further generated based on a previous path signature. For example, the second node118may receive a given packet with a path signature generated from the first node110, and/or any intermediary nodes through which the packet has traveled between the first node110and the second node118and may use the previous path signature to generate a revised path signature for the given packet. Accordingly, in some implementations, the path signature of a packet can be revised recursively as the path travels through the network106.

According to various implementations of the present disclosure, the first node110and the second node118may identify that the packets are being transmitted over different paths through the network106. For instance, the first node110may forward the packets from different ports and may generate different path signatures for the different packets based on the different ports. The first node110may identify that the path signatures are different, and in response, may transmit an alert122to a collector124indicating that the flow is being transmitted along different paths through the network106. In some examples, the second node118may receive the packets in different ports and may generate different path signatures for the packets due to the different ports. In certain implementations, the second node118may receive the packets with different previous path signatures and may generate revised path signatures based on the different previous path signatures. The second node118may identify that the path signatures (e.g., generated, received, or revised) corresponding to the packets are different.

In response to identifying that the path signatures for the different packets in the flow are different, the first node110may generate and transmit an alert122to a collector124. Similarly, in response to identifying that the path signatures for the different packets in the flow are different, the second node118may generate and transmit an alert126to the collector124.

In some examples, the second node118may receive the packets with different path signatures due to the first path112, the second path114, and the third path116. The second node118may receive the packets at different ports and may generate different path signatures for the packets due to the different existing path signatures and/or the different ports at which the packets are received. The second node118may identify that the path signatures of the as-received packets are different, and/or that the path signatures of the as-transmitted packets are different, and in response, transmit an alert126to the collector124indicating that the flow is being transmitted along different paths through the network106.

In particular implementations, the collector124may identify that there is a problem with the network106based on the alerts122and126. In some cases, the collector124may identify that the alert122is received from an upstream node (i.e., the first node110) and that the alert126is received from a downstream node (i.e., the second node118). The collector124may therefore identify that the problem is associated with the first node110, rather than the second node118. Once the problem is identified, the problem can be resolved by an administrator of the network106.

FIG.2illustrates an example environment200in which a packet of a flow is transmitted through a first path in a network without the network generating an alert.

A source202may be transmitting the flow through a network including a node A204-A, node B204-B, node C204-C, and node D204-D. A destination206may receive the flow after it has been transmitted through the network. The network may have multiple layers of nodes. For instance, Node A204-A is in a first layer, Node B204-B and Node C204-C are in a second layer, and Node D204-D is in a third layer.

As illustrated inFIG.2, the flow includes a first packet208. As illustrated inFIG.2, the first packet208may be transmitted from the source202to Node A204-A. Node A204-A may generate a path signature for the first packet208and may forward the first packet208with the path signature to Node B204-B. In examples in which the first packet208includes a previous path signature when it is received by Node A204-A, Node A204-A may generate a new path signature based, at least in part, on the previous path signature. In instances in which the first packet208does not include a previous path signature, Node A204-A may rely on other factors to generate the path signature. In various implementations, Node A204-A may generate the path signature based on any of various factors associated with Node A204-A and/or how the first packet208is routed through Node A204-A. In various implementations, the first packet208can carry a path signature as metadata encapsulated in a header. For instance, the first packet208may carry the path signature encapsulated in an IP (e.g., IPv4 or IPv6) header of the first packet208, for example, in an IP option (e.g., IPv4), an extension header (e.g., IPv6), or the like. In some cases, the first packet208may include an Ethernet frame, and the path signature may be included in a payload of the Ethernet frame and may be identified by an EtherType field of the Ethernet frame. In some examples, the path signature can be included in the first packet208in at least one of a Network Service Header (NSH), a Geneve header, a Virtual Extensible Local Area Network (VXLAN)-Generic Protocol Extension (GPE) header, a Segment Routing over IPv6 (SRv6) header, a Multiprotocol Label Switching (MPLS) header, or the like. In some examples, the path signature can be encapsulated in at least one of IOAM, INT, IFA, or IFIT metadata.

In various implementations, Node A204-A may identify that the flow has not changed paths based on the path signature that Node A204-A has generated for the first packet208. In some cases, the first packet208may be the initial packet that Node A204-A has received in the flow. In some situations, the path signature that Node A204-A has generated for the first packet208may be the same as a path signature that Node A204-A has previously generated for a previous packet that Node A204-A has received and forwarded in the flow. Because Node A204-A has not identified a path change in the flow, Node A204-A may refrain from generating an alert associated with the flow.

The first packet208with the path signature generated by Node A204-A may be transmitted from Node A204-A to Node B204-B. In some cases, Node B204-B may forward the first packet208to Node D204-D without modifying or updating the path signature in the first packet208. However, in some implementations, Node B204-B may generate its own path signature for the first packet208and may forward the first packet208with the path signature to Node B204-B. Node B204-B may generate its new path signature iteratively based, at least in part, on the previous path signature generated by Node A204-A. In various implementations, Node B204-B may generate its new path signature based on any of various factors associated with Node B204-B and/or how the first packet208is routed through Node B204-B.

In various implementations, Node B204-B may identify that the flow has not changed paths based on the path signature that Node A204-A has generated for the first packet208and/or the path signature that Node B204-B has generated for the first packet208. In some cases, the first packet208may be the initial packet that Node B204-B has received in the flow. In some situations, the path signature that Node B204-B has generated for the first packet208may be the same as a path signature that Node B204-B has previously generated for a previous packet that Node B204-B has received (from Node A204-A) and forwarded in the flow. Because Node B204-B has not identified a path change in the flow, Node B204-B may refrain from generating an alert associated with the flow.

The first packet208with the path signature generated by Node A204-A or Node B204-B may be transmitted from Node B204-B to Node D204-D. In various implementations, Node D204-D may generate its own path signature for the first packet208and may forward the first packet208with the path signature to the destination206. Node D204-D may generate its new path signature iteratively based, at least in part, on the previous path signature in the first packet208as-received by Node D204-D, which may be the path signature generated by Node A204-A or Node B204-B. In various implementations, Node D204-D may generate its new path signature based on any of various factors associated with Node D204-D and/or how the first packet208is routed through Node D204-D.

In various implementations, Node D204-D may identify that the flow has not changed paths based on the path signature that Node D204-D has generated for the first packet208. In some cases, the first packet208may be the initial packet that Node D204-D has received in the flow. In some situations, the path signature that Node D204-D has generated for the first packet208may be the same as a path signature that Node D204-D has previously generated for a previous packet that Node D204-D has received (from Node A204-A and Node B204-B) and forwarded in the flow. Because Node D204-D has not identified a path change in the flow, Node D204-D may refrain from generating an alert associated with the flow.

FIG.3illustrates an example environment300in which a subsequent packet of the flow is transmitted through a second path in the network. The flow discussed with reference toFIG.3may be the same flow discussed above with respect toFIG.2.

As illustrated inFIG.3, the flow includes a second packet302. Like the first packet208, the second packet302may be transmitted from the source202to node A204-A. Node A204-A may generate a path signature for the second packet302. However, unlike the first packet208, Node A204-A may forward the second packet302with the path signature to Node C204-C. In examples in which the second packet302includes a previous path signature when it is received by Node A204-A, Node A204-A may generate a new path signature based, at least in part, on the previous path signature. In instances in which the second packet302does not include a previous path signature, Node A204-A may rely on other factors to generate the path signature. In various implementations, Node A204-A may generate the path signature based on any of various factors associated with Node A204-A and/or how the second packet302is routed through Node A204-A.

In various implementations in which Node A204-A generates the path signature of the second packet302based on how the second packet302is routed through Node A204-A, the path signature that Node A204-A generates for the second packet302may be different than the path signature that Node A204-A generates for the first packet209. Specifically, Node A204-A may generate the path signature for the first packet208based on routing the first packet208to Node B204-B and may generate the path signature for the second packet302based on routing the second packet302to Node C204-C. Based on the different path signatures generated for the first packet208and the second packet302, Node A204-A may identify that the flow has changed paths. In response to identifying the path change, Node A204-A may generate an alert304and transmit the alert304to a collector308. The alert304may identify the flow that has changed paths, a time at which the flow has changed paths, Node A204-A, or the like.

In various implementations, the second packet302can carry a path signature as metadata encapsulated in a header. For instance, the second packet302may carry the path signature encapsulated in an IP (e.g., IPv4 or IPv6) header of the first packet208, for example, in an IP option (e.g., IPv4), an extension header (e.g., IPv6), or the like. In some cases, the second packet302may include an Ethernet frame, and the path signature may be included in a payload of the Ethernet frame and may be identified by an EtherType field of the Ethernet frame. In some examples, the path signature can be included in the second packet302in at least one of a Network Service Header (NSH), a Geneve header, a Virtual Extensible Local Area Network (VXLAN)-Generic Protocol Extension (GPE) header, a Segment Routing over IPv6 (SRv6) header, a Multiprotocol Label Switching (MPLS) header, or the like. In some examples, the path signature can be encapsulated in at least one of IOAM, INT, IFA, or IFIT metadata.

The second packet302with the path signature generated by Node A204-A may be transmitted from Node A204-A to Node C204-C. In some cases, Node C204-C may forward the second packet302to Node D204-D without modifying or updating the path signature in the second packet302. However, in some implementations, Node C204-C may generate its own path signature for the second packet302and may forward the second packet302with the path signature to Node D204-D. Node C204-C may generate its new path signature iteratively based, at least in part, on the previous path signature generated by Node A204-A. In various implementations, Node C204-C may generate its new path signature based on any of various factors associated with Node C204-C and/or how the second packet302is routed through Node C204-C.

In various implementations, Node C204-C may not identify that the flow has changed paths. For instance, the second packet302may be the first packet that Node C204-C has received in the flow. Because Node C204-C has not identified a path change in the flow, Node C204-C may refrain from generating an alert associated with the flow.

The second packet302with the path signature generated by Node A204-A or Node C204-C may be transmitted from Node C204-C to Node D204-D. In various implementations, Node C204-C may generate its own path signature for the second packet302and may forward the second packet302with the path signature to the destination206. Node D204-D may generate its new path signature iteratively based, at least in part, on the previous path signature in the second packet302as-received by Node D204-D, which may be the path signature generated by Node A204-A or Node C204-C. In various implementations, Node D204-D may generate its new path signature based on any of various factors associated with Node D204-D and/or how the second packet302is routed through Node D204-D. In various examples, the path signature generated by Node D204-D for the second packet302may be different than the path signature generated by Node D204-D for the first packet208.

In various implementations, Node D204-D may identify that the flow has changed paths based on the path signature that Node D204-D has generated for the first packet208and the path signature that Node D204-D has generated for the second packet302. In response to identifying the path change, Node D204-D may transmit an alert306to the collector308. The alert306may identify the flow that has changed paths, a time at which the flow has changed paths, Node D204-D, or the like.

The collector308may identify a problem with the network based on the alert304from Node A204-A and the alert306from Node D204-D. In some cases, the collector308may assume that any problem with a network causing a change in path signatures will result in a change in path signatures along all nodes downstream of the problem. Accordingly, despite receiving the alerts304and306from both Node A204-A and Node D204-D, the collector308may identify that the problem with the network is associated with Node A204-A, rather than Node D204-D.

In response to identifying the problem with the network, the collector308may transmit a report310to a central administrator312. The report310may identify information about the problem, such as the node (e.g., Node A304-A) associated with the problem, a time at which the problem is identified, or the like. The central administrator312may initiate a process by which the problem can be resolved.

FIG.4Aillustrates an example environment400of a node forwarding the first packet of the flow with a path signature. In particular,FIG.4Aillustrates an example of Node A204-A forwarding the first packet208.

As shown inFIG.4A, Node A204-A receives the first packet208. InFIG.4A, Node A204-A may receive the first packet208without a path signature. Node A204-A receives the first packet208at a first ingress port402-1. In particular implementations, Node A204-A includes multiple ingress ports, such as the first ingress port402-1and the second ingress port402-2. Each one of the ingress ports in Node A204-A (i.e., each of the first ingress port402-1and the second ingress port402-2) may be associated with a unique identifier that distinguishes the ingress port from the other ingress ports in Node A204-A. A port number is one example of an identifier of an ingress port.

In the example illustrated inFIG.4A, a path signature updater404intercepts the first packet208. The path signature updater404, or some other component of Node A204-A, selects an appropriate egress port among a first egress port406-1and a second egress port406-2. Each one of the egress ports in Node A204-A (i.e., each of the first egress port406-1and the second egress port406-2) may be associated with a unique identifier that distinguishes the egress port from the other egress ports in Node A204-A. A port number is one example of an identifier of an egress port. In the example ofFIG.4, the first egress port406-1has been selected.

Based on various information, such as at least one of an identifier of the first ingress port402-1at which the first packet208is received, an identifier of the first egress port406-1at which the first packet208will be forwarded, an identifier of Node A204-A itself, or the like, the path signature updater404generates a first path signature408for the first packet208. An example of an identifier of Node A204-A can include a unique identification number associated with Node A204-A.

In particular implementations, the path signature updater404uses a hash function to generate the first path signature408. The hash function may return a unique value in response to a unique input. Accordingly, as long as the input to the hash function is indicative of the unique path of a particular packet through a network, the hash function will return a value unique to the path. In some examples, the hash function used by the path signature updater404is a cryptographic hash function, an XOR function, CRC32, or the like. For instance, in various device-centric implementations, the path signature updater404can use the following Formula 1 to generate the first path signature408:
S0=Hash(Pi,Pe,N1)  Formula 1
wherein S0is the path signature (e.g., the first path signature408generated by Node A204-A), Hash( ) is a hash function, Piis the identifier of an ingress port (e.g., the first ingress port402-1) at which the packet (e.g., the first packet208) is received, Peis the identifier of the egress port (e.g., the first egress port406-1) from which the packet is forwarded, and N1is the identifier of the node (e.g., Node A204-A). According to some examples, the path signature updater404may use the following Formula 2 to generate the first path signature408:
S0=Hash(Pe,N1)  Formula 2
wherein S0is the path signature (e.g., the first path signature408generated by Node A204-A), Hash( ) is a hash function, Peis the identifier of the egress port (e.g., the first egress port406-1) from which the packet (e.g., the first packet208) is forwarded, and N1is the identifier of the node (e.g., Node A204-A). In some lightweight implementations, the path signature updater406uses the following Formula 3 to generate the second path signature410:
S0=Hash(N1)  Formula 3
wherein S0is the path signature (e.g., the first path signature408generated by Node A204-A), Hash( ) is a hash function, and N1is the identifier of the node (e.g., Node A204-A).

In particular flow-centric implementations, the path signature updater404can use the following Formula 4 to generate a unique identifier of a flow:
f=Hash(IS,ID,PS,PD,Pro)  Formula 4
wherein f is the identifier of the flow, Hash( ) is a hash function, ISis an identifier of a source of the flow (e.g., an IP address of the source of data packets in the flow), IDis an identifier of a destination of the flow (e.g., an IP address of the destination of data packets in the flow), PSis an identifier of a port of the source (e.g., a port number), PDis an identifier of a port of the destination (e.g., a port number), and Pro is an identifier of the protocol associated with the flow (e.g., a protocol indicating the type of data transferred in the flow). In some cases, various elements of the hash function of Formula 4 can be omitted. For instance, a 3-tuple hash function utilizing IS, ID, and Pro as inputs could be used to uniquely identify the flow.

In various cases, the path signature updater404can use the identifier of the flow calculated in Formula 4 to generate the path signature using the following Formula 5:
S0=Hash(Pi,Pe,f,N1)  Formula 5
wherein S0is the path signature (e.g., the first path signature408generated by Node A204-A), Hash( ) is a hash function, Piis the identifier of an ingress port (e.g., the first ingress port402-1) at which the packet (e.g., the first packet208) is received, Peis the identifier of the egress port (e.g., the first egress port406-1) from which the packet is forwarded, f is the identifier of the flow (e.g., generated using Formula 4), and N1is the identifier of the node (e.g., Node A204-A). According to some examples, the path signature updater404may use the following Formula 6 to generate the first path signature408:
S0=Hash(Pe,f,N1)  Formula 6
wherein S0is the path signature (e.g., the first path signature408generated by Node A204-A), Hash( ) is a hash function, Peis the identifier of the egress port (e.g., the first egress port406-1) from which the packet (e.g., the first packet208) is forwarded, f is the identifier of the flow (e.g., generated using Formula 4), and N1is the identifier of the node (e.g., Node A204-A). In some lightweight implementations, the path signature updater406uses the following Formula 7 to generate the second path signature410:
S0=Hash(f,N1)  Formula 7
wherein S0is the path signature (e.g., the first path signature408generated by Node A204-A), Hash( ) is a hash function, f is the identifier of the flow (e.g., generated using Formula 4), and N1is the identifier of the node (e.g., Node A204-A).

Regardless of the formula used by the path signature updater404, the first path signature408may uniquely represent the path of the first packet208through Node A204-A. In examples in which the path signature updater404utilizes Formula 1, 2, 6, or 7, the first path signature408may further identify a path including Node B204-B, to which the first packet208is forwarded using the first egress port406-1.

The path signature updater404add the first path signature408to the first packet208. In some examples, the path signature updater404adds the first path signature408to a header of the first packet208. For instance, the path signature updater404may insert a Path Signature field into the first packet208and populate the Path Signature field with the first path signature408. In some cases, the Path Signature field is included in a header field (e.g., an IP header, an IPv4 option, an IPv6 extension header, an NSH header, a Geneve header, a VXLAN-GPE header, an SRv6 header, or an MPLS header) and/or included in a payload (e.g., as identified by an EtherType). In some examples, the Path Signature field is included in at least one of IOAM, INT, IFA, or IFIT metadata. According to particular implementations, the Path Signature field has a fixed size. For instance, the Path Signature field has a fixed size of 32 bits, 64 bits, or the like. Accordingly, in various implementations, every path signature generated by the path signature updater404(e.g., the first path signature408) will have the same fixed size as the Path Signature field.

The path signature updater404may further forward the first packet208, with the first path signature408, through the first egress port406-1. The first egress port406-1may be connected to an interface connected to another node in the same network as Node A204-A. For instance, as illustrated inFIG.2, the first packet208can be forwarded to Node B204-B from the first egress port406-1.

As illustrated inFIG.4A, the path signature updater404further stores the first path signature408in a flow table410. In some cases, the flow table410includes multiple entries corresponding to different packets received and forwarded by Node A204-A. For instance, the flow table410may include an entry corresponding to the first packet208that includes the first path signature408. In some cases, the entries also identify the flows of the different packets received and forwarded by Node A204-A. For example, the entry corresponding to the first packet208may also include information identifying the flow that includes the first packet208.

Node A204-A further includes a path change identifier412, in various implementations. The path change identifier412may be configured to access the flow table410in order to determine whether packets in a particular flow have different paths. In some examples, the path change identifier412may determine that the first path signature408corresponds to the initial path signature generated by the path signature updater404for the flow and may therefore assume that no path change has occurred for the flow. In some instances, the path change identifier412may determine that the first path signature408matches a previous path signature generated by the path signature updater404for the flow and may therefore assume that no path change has occurred for the flow. When the path change identifier412determines that no path change has occurred, the path change identifier412may refrain from generating an alert.

FIG.4Billustrates an example environment414of a node forwarding another packet of the flow with a path signature. In particular,FIG.4Billustrates an example of Node A204-A forwarding the second packet302.

As shown inFIG.4B, Node A204-A receives the second packet302without a path signature. Node A204-A receives the second packet302at the first ingress port402-1. The path signature updater404intercepts the second packet302.

The path signature updater404, or some other component of Node A204-A, can select an appropriate egress port among a first egress port406-1and a second egress port406-2for the second packet302. However, Node A204-A may select the second egress port406-2for the second packet302, in contrast to the first egress port406-1selected for the first packet208. Node A204-A may select the second egress port406-2for any of a variety of reasons. For instance, Node A204-A may identify that the interface connected to the first egress port406-1, or the node connected to the interface (i.e., Node B204-B) has been disconnected since the first packet208was forwarded. In some examples, Node A204-A may include a load balancer that identifies that a load associated with the first egress port406-1exceeds a load associated with the second egress port406-2. For instance, the node connected to the first egress port406-1(i.e., Node B204-B) may be more congested and/or associated with a higher latency than the node connected to the second egress port406-2(i.e., Node C204-C).

Based on various information, such as at least one of an identifier of the first ingress port402-1at which the second packet302is received, an identifier of the second egress port408-2at which the second packet302will be forwarded, an identifier of Node A204-A itself, or the like, the path signature updater404generates a second path signature416for the second packet302.

In particular implementations, the path signature updater404uses one of Formulas 1, 2, 5, or 6 to generate the first path signature408and the second path signature416. Accordingly, the first path signature408may be generated based on the identifier of the first egress port406-1and the second path signature416may be generated based on the identifier of the second egress port406-2. For at least this reason, the second path signature416may be different than the first path signature408.

The path signature updater404add the second path signature416to the second packet302. In some examples, the path signature updater404adds the second path signature416to a header of the second packet302. For instance, the path signature updater404may insert a Path Signature field into the second packet302and populate the Path Signature field with the second path signature416. In some cases, the second path signature416may have the same size as the first path signature408.

The path signature updater404may further forward the second packet302, with the second path signature416, through the second egress port406-2. The second egress port406-2may be connected to an interface connected to another node in the same network as Node A204-A. For instance, as illustrated inFIG.3, the second packet302can be forwarded to Node C204-C from the second egress port406-2.

As illustrated inFIG.4B, the path signature updater404further stores the second path signature416in the flow table410. In some cases, the flow table410may already have stored a first entry corresponding to the first packet208that includes the first path signature408. The flow table may further store a second entry corresponding to the second packet302that includes the second path signature416. In some cases, the first and second entries corresponding to the first packet208and the second packet302may also include information identifying the flow that includes the first packet208and the second packet302.

The path change identifier412may determine that the second path signature416stored in the second entry of the flow table410, is different than the first path signature408, which is stored in the first entry of the flow table410. Based on this difference, the path change identifier412may determine that there is a path change in the flow. In some cases, the path change identifier412may determine that greater than a threshold number of packets with the first path signature408and/or greater than the threshold number of packets with the second path signature416have been received, and in response, identify that there is a persistent path change in the flow. In response to determining that there is the path change, the path change identifier412may generate and transmit the alert304from Node A204-A. The alert304may indicate the path change in the flow. As illustrated in the example ofFIG.4B, the alert304includes a flow identifier418. The flow identifier418may indicate the flow including the first packet208and the second packet302. For instance, the flow identifier418may include at least one element of a 5-tuple associated with the flow, such as a source (e.g., from the same IP address), destination (e.g., directed to the same IP address), protocol (e.g., IP protocol), source port (e.g., for UDP or TCP), destination port (e.g., for UDP, TCP, or ICMP), or type of service (e.g., IP Type of Service (ToS)) of the first packet208and the second packet302. In examples in which the alert304is transmitted to a collector (e.g., the collector310), the flow identifier418may be used to identify a problem in the network that has led to the path change.

FIG.5Aillustrates an example environment500of a node forwarding the first packet of the flow with a path signature. In particular,FIG.5Aillustrates an example of Node D204-D forwarding the first packet208.

As shown inFIG.5A, Node D204-D receives the first packet208with a third path signature502. In some implementations, in which no node between Node A204-A and Node D204-D in the path of the first packet208has changed or updated the Path Signature field in the first packet208, the third path signature502may be the first path signature408generated by Node A204-A. In certain implementations in which the Path Signature field has been updated between Node A204-A and Node D204-D, the third path signature502may be based on the first path signature408generated by Node A204-A for the first packet208.

Node D204-D may receive the first packet208with the third path signature502at a first ingress port502-1, which may be connected to another node in the same network as Node D204-D (i.e., Node B204-B). In particular implementations, Node D204-D includes multiple ingress ports, such as the first ingress port502-1and the second ingress port502-2. Each one of the ingress ports in Node D204-D (i.e., each of the first ingress port502-1and the second ingress port502-2) may be associated with a unique identifier that distinguishes the ingress port from the other ingress ports in Node D204-D.

In the example illustrated inFIG.5A, a path signature updater504intercepts the first packet208. The path signature updater504, or some other component of Node D204-D, selects an appropriate egress port among a first egress port506-1and a second egress port506-2. Each one of the egress ports in Node D204-D (i.e., each of the first egress port506-1and the second egress port506-2) may be associated with a unique identifier that distinguishes the egress port from the other egress ports in Node A204-A. In the example ofFIG.5A, the first egress port506-1has been selected.

Based on various information, such as at least one of an identifier of the first ingress port502-1at which the first packet208is received, an identifier of the first egress port508-1at which the first packet508will be forwarded, an identifier of Node D204-D itself, or the like, the path signature updater504generates a fourth path signature508for the first packet208. Further, the path signature updater504may generate the fourth path signature508using a recursive function that is based, at least in part, on the third path signature502in the first packet208as-received by Node D204-D.

In particular implementations, the path signature updater504uses a hash function to generate the fourth path signature508based on the third path signature502. The hash function may return a unique value in response to a unique input. Accordingly, as long as the input to the hash function is indicative of the unique path of a particular packet through a network, the hash function will return a value unique to the path. In some examples, the hash function used by the path signature updater404is a cryptographic hash function, an XOR function, CRC32, or the like. In particular implementations, the hash function utilized by the path signature updater504in Node D204-D may be different than the hash function utilized by the path signature updater404in Node A204-A. In some instances, the path signature updater504can use the following Formula 8 to generate the fourth path signature508:
Sn=Hash(Sn-1,Pi,Pe,N1)  Formula 8
wherein Snis the new path signature (e.g., the fourth path signature508), Hash( ) is a hash function, Snis the previous path signature (e.g., the third path signature502), Piis the identifier of the ingress port at which the first packet (e.g., the identifier of the first ingress port502-1), Peis the identifier of the egress port at which the packet is forwarded (e.g., the identifier of the first egress port506-1), and N1is the identifier of the node (e.g., the identifier of Node D204-D). According to some examples, the path signature updater504may use the following Formula 9 to generate the fourth path signature508:
Sn=Hash(Sn-1,Pi,N1)  Formula 9
wherein Snis the new path signature (e.g., the fourth path signature508), Hash( ) is a hash function, Snis the previous path signature (e.g., the third path signature502), Piis the identifier of the ingress port at which the first packet (e.g., the identifier of the first ingress port502-1), and N1is the identifier of the node (e.g., the identifier of Node D204-D). According to some examples, the path signature updater504may use the following Formula 10 to generate the fourth path signature508:
Sn=Hash(Sn-1,N1)  Formula 10
wherein Snis the new path signature (e.g., the fourth path signature508), Hash( ) is a hash function, Snis the previous path signature (e.g., the third path signature502), and N1is the identifier of the node (e.g., the identifier of Node D204-D).

Regardless of the formula used by the path signature updater504, the fourth path signature508may uniquely represent the path of the first packet208from the source of the first packet208to Node D204-D.

The path signature updater504may replace the third path signature502with the fourth path signature508in the first packet208. In some examples, the path signature updater504deletes the third path signature502and adds the fourth path signature508to a header of the first packet208. For instance, the path signature updater504may delete the third path signature502from a Path Signature field into the first packet208and populate the Path Signature field with the fourth path signature508. In some cases, the Path Signature field is included in a header field (e.g., an IP header, an IPv4 option, an IPv6 extension header, an NSH header, a Geneve header, a VXLAN-GPE header, an SRv6 header, or an MPLS header) and/or included in a payload (e.g., as identified by an EtherType). In some examples, the Path Signature field is included in at least one of IOAM, INT, IFA, or IFIT metadata. According to particular implementations, the Path Signature field has a fixed size. For instance, the Path Signature field has a fixed size of 32 bits, 64 bits, or the like. Accordingly, the fourth path signature508may have the same size as the third path signature502. In various implementations, every path signature generated by the path signature updater504(e.g., the fourth path signature508) will have the same fixed size as the Path Signature field in the first packet208.

The path signature updater504may further forward the first packet208, with the fourth path signature508, through the first egress port506-1. The first egress port506-1may be connected to an interface connected to another node. For instance, as illustrated inFIG.2, the first packet208can be forwarded to the destination206from the first egress port506-1.

As illustrated inFIG.5A, the path signature updater504further stores the fourth path signature508in a flow table510. In some cases, the flow table510includes multiple entries corresponding to different packets received and forwarded by Node D204-D. For instance, the flow table510may include an entry corresponding to the first packet208that includes the fourth path signature508. In some cases, the entry may further include the third path signature502. In particular implementations, the entries also identify the flows of the different packets received and forwarded by Node D204-D. For example, the entry in the flow table510corresponding to the first packet208may also include information identifying the flow that includes the first packet208.

Node D204-D further includes a path change identifier512, in various implementations. The path change identifier512may be configured to access the flow table510in order to determine whether packets in a particular flow have different paths. In some examples, the path change identifier512may determine that the fourth path signature508corresponds to the initial path signature generated by the path signature updater504for the flow and may therefore assume that no path change has occurred for the flow. In some instances, the path change identifier512may determine that the fourth path signature508matches a previous path signature generated by the path signature updater504for the flow and may therefore assume that no path change has occurred for the flow. When the path change identifier512determines that no path change has occurred, the path change identifier512may refrain from generating an alert.

FIG.5Billustrates an example environment514of a node forwarding another packet of the flow with a path signature. In particular,FIG.5Billustrates an example of Node D204-D forwarding the second packet302.

As shown inFIG.5B, Node D204-D receives the second packet302with a fifth path signature516. In some implementations, in which no node between Node A204-A and Node D204-D in the path of the second packet302has changed or updated the Path Signature field in the second packet302, the fifth path signature516may be the second path signature416generated by Node A204-A. In certain implementations in which the Path Signature field has been updated between Node A204-A and Node D204-D, the fifth path signature516may be based on the second path signature416generated by Node A204-A for the first packet208.

Node D204-D receives the second packet302at the second ingress port502-2, rather than the first ingress port502-1at which the first packet208was received. This indicates that the second packet302has traveled a different path before arriving at Node D204-D than a path traveled by the first packet208. The path signature updater504intercepts the second packet302. Node D204-D may further select the first egress port506-1from which to forward the second packet302toward its destination.

Based on various information, such as at least one of an identifier of the second ingress port502-2at which the second packet302is received, an identifier of the first egress port508-1at which the second packet302will be forwarded, an identifier of Node D204-D itself, or the like, the path signature updater504generates a sixth path signature518for the second packet302.

In various implementations, the path signature updater504may generate the sixth path signature518based on the previous, fifth path signature516in the as-received second packet302. In some examples, the path signature updater404uses at least one of Formulas 8-10 to generate the fourth path signature508and the sixth path signature518. Based at least in part on a difference between the third path signature502and the fifth path signature516, and/or a difference between the first ingress port502-1at which the first packet208is received and the second ingress port502-2at which the second packet302is received, the sixth path signature516may be different than the third path signature502.

The path signature updater504may replace the fifth path signature516with the sixth path signature518in the second packet302. In some examples, the path signature updater504deletes the fifth path signature516and adds the sixth path signature518to a header of the second packet302. For instance, the path signature updater504may delete the fifth path signature516from a Path Signature field into the second packet302and populate the Path Signature field with the sixth path signature518. In some cases, the Path Signature field is included in a header field (e.g., an IP header, an IPv4 option, an IPv6 extension header, an NSH header, a Geneve header, a VXLAN-GPE header, an SRv6 header, or an MPLS header) and/or included in a payload (e.g., as identified by an EtherType). In some examples, the Path Signature field is included in at least one of IOAM, INT, IFA, or IFIT metadata. The Path Signature field may have a fixed size. Accordingly, the sixth path signature518may have the same size as the fifth path signature516. The path signature updater504may further forward the second packet302, with the sixth path signature518, through the first egress port506-1.

As illustrated inFIG.5B, the path signature updater504further stores the sixth path signature518in the flow table410. In some cases, the flow table510may already have stored a first entry corresponding to the first packet208that includes the fourth path signature508. In some cases, the first entry may also include the third path signature502. The flow table510may further store a second entry corresponding to the second packet302that includes the sixth path signature518. The second entry may also include the fifth path signature516, in some example. In some cases, the first and second entries corresponding to the first packet208and the second packet302may also include information identifying the flow that includes the first packet208and the second packet302.

The path change identifier512may determine that the sixth path signature518stored in the second entry of the flow table510, is different than the fourth path signature508, which is stored in the first entry of the flow table510. Based on this difference, the path change identifier512may determine that there is a path change in the flow. In response to determining that there is the path change, the path change identifier512may generate and transmit the alert306from Node D204-D. The alert306may indicate the path change in the flow. As illustrated in the example ofFIG.5B, the alert306includes the flow identifier418. In examples in which the alert306is transmitted to a collector (e.g., the collector308), the flow identifier518may be used to identify a problem in the network that has led to the path change.

FIG.6Aillustrates an example of a flow table600with various entries corresponding to different flows through a particular node. In some examples, the flow table600can be used as the flow table410described above with reference toFIGS.4A and4Bor the flow table510described above with reference toFIGS.5A and5B. In various implementations, the flow table600may be managed by a node receiving and forwarding multiple packets in multiple flows.

The flow table600includes multiple entries. Each one of the entries includes multiple fields. As illustrated inFIG.6A, the fields include an entry number, a flow identifier, a count, a last packet time, and a path signature. In various implementations, the entries can include fewer or additional fields.

In some cases, the flow table600includes a fixed number of entries associated with a fixed number of flow identifiers. The fixed number may be an integer that is greater than 1. As illustrated inFIG.6A, the flow table600includes ten entries (entry #1-#10). The entries stored in the flow table600can correspond to ten flows whose packets have been recently received and forwarded by the node. If more than ten flows include packets that are received and forwarded by the node, only the ten entries corresponding to the ten most recent flows may be stored in the flow table600. Accordingly, the size of the flow table600can be restricted to conserve memory resources at the node.

The flow identifier field of an entry corresponding to a packet may indicate the flow corresponding to the entry. In some cases, the flow identifier field can include at least one of an ingress interface (e.g., SNMP ifIndex), source (e.g., from the same IP address), destination (e.g., directed to the same IP address), protocol (e.g., IP protocol), source port (e.g., for UDP or TCP), destination port (e.g., for UDP, TCP, or ICMP), or type of service (e.g., IP Type of Service (ToS)) associated with the flow. In certain implementations, the flow identifier field can be a string that can be used to identify the flow.

The count field of an entry corresponding to a flow may correspond to the number of packets received and/or forwarded in the flow by the node. In some cases, the count field may correspond to the number of packets of the flow that have been received and/or forwarded with a particular signature without the flow having experienced a path change. For example, “Count 1” may correspond to the number of packets received by the node with “Flow Identifier 1.” In some cases, “Count 1” may correspond to the number of packets with “Signature 1” that have been received since either the beginning of the flow, or the last path change of the flow.

The time field of an entry corresponding to a flow may indicate a time at which the most recent packet of the flow is received by the node, a time at which the most recent packet of the flow is forwarded by the node, or a combination thereof.

The path signature field of an entry corresponding to a flow may include the path signature generated by the node for a packet of that flow. In some cases, the path signature field may further include a previous path signature that was received by the node for that flow.

In particular implementations, the path signature field can be used to identify whether the flow is associated with a path change. For instance, in the example illustrated inFIG.6A, “Signature 1,” corresponding to “Flow Identifier 1,” may be set as “Signature A.” When the node receives a packet corresponding to “Flow Identifier 1” that includes a signature different than “Signature A, the node may identify a path change in the flow with “Flow Identifier 1.” Accordingly, the node may generate and transmit an alert corresponding to “Flow Identifier 1.”

FIG.6Billustrates an example of a flow table602illustrating a path change in a particular data flow. For instance, the flow table602can correspond to “Entry #1” in the flow table600described above with reference toFIG.6A.

As illustrated, the flow table602can correspond to a single flow identifier, such as “Flow Identifier 1.” The flow table602can track individual packets received and/or forwarded by the node in the flow that correspond to “Flow Identifier 1.” In some cases, the flow table602may track a predetermined number of the most recent packets corresponding to “Flow Identifier 1,” such as the most recent ten packets received and/or forwarded in the flow corresponding to “Flow Identifier 1.”

Each of the individual packets may have its own timestamp (e.g., one of “Timestamp A” to “Timestamp J”). In some cases, a given timestamp may correspond to a time at which the individual packet was received by the node and/or a time at which the node forwarded the individual packet in the flow. With reference toFIG.6A, “Timestamp1” can be the most recent one of “Timestamp A” to “Timestamp J.”

The flow table602may also track the path signatures of the individual packets. A given path signature in the flow table602can correspond to the path signature in the packet as-received and/or the path signature in the packet as-forwarded by the node. For instance, five packets in the flow corresponding to “Flow Identifier 1” can have a path signature of “Signature A,” and five packets in the flow can have a path signature of “Signature B.” With reference toFIG.6A, “Signature 1” can be the most recent path signature observed in Flow Identifier 1 (e.g., either “Signature A” or “Signature B”).

The flow table602can be utilized to identify a path change in the flow corresponding to “Flow Identifier 1.” Assuming that flow table602is arranged in chronological order, wherein “Timestamp J” is the most recent timestamp, a path change can be observed between “Timestamp E” and “Timestamp F,” wherein, packets of the flow change from “Signature A” to “Signature B.” Accordingly, the path change in the flow can be efficiently identified.

FIGS.7A and7Billustrates example processes700and712for updating a path signature of a data packet. In some example implementations, the process700and/or the process712is performed by a network node, such as first node110or network node118described above with reference toFIG.1, or any of Nodes A to D204-A to204-D described above with reference toFIGS.2-5B.

Process700may be performed by a node receiving a data packet without an existing path signature. At702, a packet is received. The packet may be part of a flow through a network from a source to a destination. In some cases, the as-received packet may omit a path signature.

At704, a path signature based on one or more node details is generated. The one or more node details can include at least one of an identifier of the particular ingress port at which the packet is received, an identifier of an egress port at which the packet will be forwarded from, an identifier of the node at which the packet is received, or the like. In various implementations, the path signature can be generated using a hash function. For instance, any one of Formulas 1 to 3 or 5 to 7 described above can be used to generate the path signature. In some implementations, the path signature may have a limited size, such as 32 bits, 64 bits, or the like.

At706, the path signature is added to the packet. In some cases, the path signature is populated in a data field in a header (e.g., an IP header, an IPv4 option, an IPv6 extension header, an NSH header, a Geneve header, a VXLAN-GPE header, an SRv6 header, or an MPLS header) and/or a payload (e.g., as identified by an EtherType) of the packet. In some examples, the data field is included in at least one of IOAM, INT, IFA, or IFIT metadata within the packet. The data field may have a fixed size corresponding to the length of the path signature.

At708, the packet is forwarded with the path signature. In various implementations, the packet is forwarded from a selected egress port. The egress port can be selected based on at least one of the destination of the packet, a load associated with a node affiliated with the egress port, a load associated with a node attached to another egress port, or the like. For instance, the header of the packet may indicate the destination of the packet, and the egress port can be selected to forward the packet in the direction of the destination. In some cases, a load balancing functionality can be used to select an egress port attached to at least one node in the network that is relatively uncongested.

At710, a flow table is updated based on the path signature. In some cases, an entry of the flow table can be generated to include the path signature and at least one of an identifier of the flow, a timestamp at which the packet was received, a timestamp at which the packet was forwarded, or the like. In various examples, the path signature generated in the process700can be the same path signature utilized in a previous packet of the same flow. According to various implementations, an existing entry in the flow table corresponding to the path signature may be identified and updated at710. For instance, the entry may include at least one of a count corresponding to the number of packets of the flow with the path signature or a last packet time corresponding to a timestamp of the most recent packet with the path signature. The count and/or the last packet time may be updated based on the packet that is received, updated, and forwarded in process700.

Although not illustrated inFIG.7A, the entity performing process700may additionally identify a path change of the flow based on the flow table. For instance, by adding a new entry to the flow table corresponding to a new path signature that does not otherwise appear in the flow table, the path change may be identified. In some cases, the entity performing process700may identify that more than a threshold number of packets with one or more path signatures in the flow have been received and/or forwarded, and may therefore identify that a path change has occurred. In some cases, the entity may generate and transmit an alert that identifies the path change.

Process712may be performed by a node receiving a data path with an existing path signature. At714, a packet including a first path signature received. The packet may be part of a flow through a network from a source to a destination. In some cases, the first path signature may have been added to the packet and/or generated by a previous node in the network.

At716, a second path signature based on the first path signature and one or more node details is generated. The one or more node details can include at least one of an identifier of the particular ingress port at which the packet is received, an identifier of an egress port at which the packet will be forwarded from, an identifier of the node at which the packet is received, or the like. In various implementations, the path signature can be generated using a hash function. For instance, any one of Formulas 8 to 10 described above can be used to generate the path signature. In some implementations, the path signature may have a limited size, such as 32 bits, 64 bits, or the like. The second path signature may have the same size as the first path signature.

At718, the first path signature is replaced with the second path signature in the packet. In some cases, the first path signature is deleted from, and the second path signature is populated in, a data field in a header field (e.g., an IP header, an IPv4 option, an IPv6 extension header, an NSH header, a Geneve header, a VXLAN-GPE header, an SRv6 header, or an MPLS header) and/or in a payload (e.g., as identified by an EtherType) of the packet. In some examples, the data field is included in at least one of IOAM, INT, IFA, or IFIT metadata within the packet. The data field may have a fixed size corresponding to the length of the path signature.

At720, the packet is forwarded with the second path signature. In various implementations, the packet is forwarded from a selected egress port. The egress port can be selected based on at least one of the destination of the packet, a load associated with a node affiliated with the egress port, a load associated with a node attached to another egress port, or the like. For instance, the header of the packet may indicate the destination of the packet, and the egress port can be selected to forward the packet in the direction of the destination. In some cases, a load balancing functionality can be used to select an egress port attached to at least one node in the network that is relatively uncongested.

At722, a flow table is updated based on the first path signature and/or the second path signature. In some cases, an entry of the flow table can be generated to include the first path signature and/or the second path signature and at least one of an identifier of the flow, a timestamp at which the packet was received, a timestamp at which the packet was forwarded, or the like. In various examples, the first path signature and/or the second path signature can be the same path signature utilized in a previous packet of the same flow. According to various implementations, an existing entry in the flow table corresponding to first path signature and/or the second path signature may be identified and updated at722. For instance, the entry may include at least one of a count corresponding to the number of packets of the flow with first path signature and/or the second path signature or a last packet time corresponding to a timestamp of the most recent packet with the first path signature and/or the second path signature. The count and/or the last packet time may be updated based on the packet that is received, updated, and forwarded in process712.

Although not illustrated inFIG.7B, the entity performing process712may additionally identify a path change of the flow based on the flow table. For instance, by adding a new entry to the flow table corresponding to a new path signature (e.g., the first path signature and/or the second path signature) that does not otherwise appear in the flow table, the path change may be identified. In some cases, the entity performing process712may identify that more than a threshold number of packets with one or more path signatures in the flow have been received and/or forwarded, and may therefore identify that a path change has occurred. In some cases, the entity may generate and transmit an alert that identifies the path change.

FIG.8illustrates an example process800for transmitting an alert based on data packets with different path signatures. In some example implementations, the process800is performed by a network node, such as first node110or network node118described above with reference toFIG.1, or any of Nodes A to D204-A to204-D described above with reference toFIGS.2-5B.

At802, a first path signature of a first packet in a flow is identified. In some implementations, the first path signature is in the first packet as-received from a previous node in the network. In some cases, the first path signature is in the first packet as-forwarded to a next node in the network. According to particular implementations, the first path signature may be generated by the device performing the process800.

At804, a second path signature of a second packet in the flow is identified. In some cases, the second path signature may originate from the same source as the first path signature. For instance, if the first path signature is generated by the node performing the process800, the second path signature is also generated by the node performing the process800. In various implementations, the second path signature may have an equivalent size to the first path signature. For instance, the first and second path signatures may each have a size of 32 bits, 64 bits, or the like.

At806, the first path signature is determined to be different than the second path signature. In some cases, the first path signature and the second path signature are stored in local memory, such as in a flow table. Accordingly, the first path signature and the second path signature can be compared even after one or both of the first and second packets has been forwarded to another node in the network. In some cases, the entity performing the process800may additionally determine that a number of packets in the flow with the first path signature and/or a number of packets in the flow with the second path signature exceeds a predetermined threshold. In various implementations, the first path signature and the second path signature can be compared before, as, or immediately after the first and second packets have been forwarded.

At808, an alert indicating the flow is transmitted to a collector. The collector may be a separate device that can receive other alerts from other nodes in the network. In various implementations, the alert may be a data packet that includes a flow indicator in a payload. The flow indicator can include at least one of a least one element of a 5-tuple associated with the flow, such as a source (e.g., from the same IP address), destination (e.g., directed to the same IP address), protocol (e.g., IP protocol), source port (e.g., for UDP or TCP), destination port (e.g., for UDP, TCP, or ICMP), or type of service (e.g., IP Type of Service (ToS)) of the first packet and the second packet. In some cases, the alert may also indicate the device performing the process800. For instance, the alert may include a node identifier (e.g., an IP address) in a header or the payload.

FIG.9illustrates an example process900for reporting a problem to a central administrator based on a path change. In some example implementations, the process900is performed by a collector, such as the collector124described above with reference toFIG.1or the collector308described above with reference toFIG.3.

At902, an alert is received from a node. The alert may indicate a path change in a network to which the node belongs. In various implementations, the alert may be a data packet that includes a flow indicator in a payload. The flow indicator can include at least one of a least one element of a 5-tuple associated with the flow, such as a source (e.g., from the same IP address), destination (e.g., directed to the same IP address), protocol (e.g., IP protocol), source port (e.g., for UDP or TCP), destination port (e.g., for UDP, TCP, or ICMP), or type of service (e.g., IP Type of Service (ToS)) of the first packet and the second packet. In some cases, the alert may also indicate the node itself. For instance, the alert may include a node identifier (e.g., an IP address) in a header or the payload.

At904, a problem associated with the node is identified. In some cases, another alert may be received from another node that is downstream of the node from which the alert is received at902. The path change at the downstream node may be determined to have originated at the node from which the alert is received at902. In some cases, the problem may be a problem associated with an interface between the node and a downstream node. For instance, the node may determine to forward a first packet in the flow to the downstream node, then determine that the interface has been interrupted, and may then determine to forward a second packet in the flow to a different node in the network. In some cases, the problem may be a problem associated with congestion in the network. For instance, the node may determine to forward a first packet in the flow to a downstream node, may determine that the downstream node is congested, and may then decide to forward a second packet in the flow to a different downstream node.

At906, the problem is reported to a central administrator. In some cases, the central administrator may initiate a process by which the problem can be solved. In various implementations, the central administrator can be a device that can output an alert to an individual or system that can address the problem. For instance, the central administrator my dispatch an individual to correct the problem in the network.

FIG.10shows an example computer architecture for a server computer1000capable of executing program components for implementing the functionality described above. The computer architecture shown inFIG.10illustrates a conventional server computer, workstation, desktop computer, laptop, tablet, network appliance, e-reader, smartphone, or other computing device, and can be utilized to execute any of the software components presented herein. The server computer1000may, in some examples, correspond to a network node204described herein.

The computer1000includes a baseboard1002, or “motherboard,” which is a printed circuit board to which a multitude of components or devices can be connected by way of a system bus or other electrical communication paths. In one illustrative configuration, one or more central processing units (“CPUs”)1004operate in conjunction with a chipset1006. The CPUs1004can be standard programmable processors that perform arithmetic and logical operations necessary for the operation of the computer1000.

The CPUs1004perform operations by transitioning from one discrete, physical state to the next through the manipulation of switching elements that differentiate between and change these states. Switching elements generally include electronic circuits that maintain one of two binary states, such as flip-flops, and electronic circuits that provide an output state based on the logical combination of the states of one or more other switching elements, such as logic gates. These basic switching elements can be combined to create more complex logic circuits, including registers, adders-subtractors, arithmetic logic units, floating-point units, and the like.

The chipset1006provides an interface between the CPUs1004and the remainder of the components and devices on the baseboard1002. The chipset1006can provide an interface to a RAM1008, used as the main memory in the computer1000. The chipset1006can further provide an interface to a computer-readable storage medium such as a read-only memory (“ROM”)1010or non-volatile RAM (“NVRAM”) for storing basic routines that help to startup the computer1000and to transfer information between the various components and devices. The ROM1010or NVRAM can also store other software components necessary for the operation of the computer1000in accordance with the configurations described herein.

The computer1000can operate in a networked environment using logical connections to remote computing devices and computer systems through a network, such as the network1008. The chipset1006can include functionality for providing network connectivity through a Network Interface Controller (NIC)1012, such as a gigabit Ethernet adapter. The NIC1012is capable of connecting the computer1000to other computing devices over the network1008. It should be appreciated that multiple NICs1012can be present in the computer1000, connecting the computer to other types of networks and remote computer systems. In some instances, the NICs1012may include at least on ingress port and/or at least one egress port.

The computer1000can be connected to a storage device1018that provides non-volatile storage for the computer. The storage device1018can store an operating system1020, programs1022, and data, which have been described in greater detail herein. The storage device1018can be connected to the computer1000through a storage controller1014connected to the chipset1006. The storage device1018can consist of one or more physical storage units. The storage controller1014can interface with the physical storage units through a serial attached SCSI (“SAS”) interface, a serial advanced technology attachment (“SATA”) interface, a fiber channel (“FC”) interface, or other type of interface for physically connecting and transferring data between computers and physical storage units.

The computer1000can store data on the storage device1018by transforming the physical state of the physical storage units to reflect the information being stored. The specific transformation of physical state can depend on various factors, in different embodiments of this description. Examples of such factors can include, but are not limited to, the technology used to implement the physical storage units, whether the storage device1018is characterized as primary or secondary storage, and the like.

For example, the computer1000can store information to the storage device1018by issuing instructions through the storage controller1014to alter the magnetic characteristics of a particular location within a magnetic disk drive unit, the reflective or refractive characteristics of a particular location in an optical storage unit, or the electrical characteristics of a particular capacitor, transistor, or other discrete component in a solid-state storage unit. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this description. The computer1000can further read information from the storage device1018by detecting the physical states or characteristics of one or more particular locations within the physical storage units.

In addition to the mass storage device1018described above, the computer1000can have access to other computer-readable storage media to store and retrieve information, such as program modules, data structures, or other data. It should be appreciated by those skilled in the art that computer-readable storage media is any available media that provides for the non-transitory storage of data and that can be accessed by the computer1000. In some examples, the operations performed by a network node (e.g., network node204), source (e.g.,202), destination (e.g.,206), collector (e.g.,308), or central administrator (e.g.,312), may be supported by one or more devices similar to computer1000. Stated otherwise, some or all of the operations performed by a network node, collector, and/or central administrator, may be performed by one or more computer devices1000operating in a cloud-based arrangement.

By way of example, and not limitation, computer-readable storage media can include volatile and non-volatile, removable and non-removable media implemented in any method or technology. Computer-readable storage media includes, but is not limited to, RAM, ROM, erasable programmable ROM (“EPROM”), electrically-erasable programmable ROM (“EEPROM”), flash memory or other solid-state memory technology, compact disc ROM (“CD-ROM”), digital versatile disk (“DVD”), high definition DVD (“HD-DVD”), BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information in a non-transitory fashion.

As mentioned briefly above, the storage device1018can store an operating system1020utilized to control the operation of the computer1000. According to one embodiment, the operating system comprises the LINUX operating system. According to another embodiment, the operating system comprises the WINDOWS® SERVER operating system from MICROSOFT Corporation of Redmond, Washington. According to further embodiments, the operating system can comprise the UNIX operating system or one of its variants. It should be appreciated that other operating systems can also be utilized. The storage device1018can store other system or application programs and data utilized by the computer1000.

In one embodiment, the storage device1018or other computer-readable storage media is encoded with computer-executable instructions which, when loaded into the computer1000, transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the embodiments described herein. These computer-executable instructions transform the computer1000by specifying how the CPUs1004transition between states, as described above. According to one embodiment, the computer1000has access to computer-readable storage media storing computer-executable instructions which, when executed by the computer1000, perform the various processes described above with regard toFIGS.1-9. The computer1000can also include computer-readable storage media having instructions stored thereupon for performing any of the other computer-implemented operations described herein.

As illustrated inFIG.10, the storage device1018stores a path signature updater1024, a path change identifier1026, and a flow table1028. In some implementations, at least one of the path signature updater1024, the path change identifier1026, or the flow table1028can be omitted. Using instructions stored in the path signature updater1024, the CPU(s)1004may be configured to generate and update path signatures for individual data packets in a data flow that are traversing the computer1000. Using instructions stored in the path change identifier1026, the CPU(s)1004may be configured to identify whether a path change has occurred in a data flow by comparing path signatures of different data packets within the data flow. The flow table1026may store past one or more path signatures associated with one or more data flows whose data packets are traversing the computer1000.

The computer1000can also include one or more input/output controllers1016for receiving and processing input from a number of input devices, such as a keyboard, a mouse, a touchpad, a touch screen, an electronic stylus, or other type of input device. Similarly, an input/output controller1016can provide output to a display, such as a computer monitor, a flat-panel display, a digital projector, a printer, or other type of output device. It will be appreciated that the computer1000might not include all of the components shown inFIG.10, can include other components that are not explicitly shown inFIG.10, or might utilize an architecture completely different than that shown inFIG.10.

In some instances, one or more components may be referred to herein as “configured to,” “configurable to,” “operable/operative to,” “adapted/adaptable,” “able to,” “conformable/conformed to,” etc. Those skilled in the art will recognize that such terms (e.g., “configured to”) can generally encompass active-state components and/or inactive-state components and/or standby-state components, unless context requires otherwise.

As used herein, the term “based on” can be used synonymously with “based, at least in part, on” and “based at least partly on.”

As used herein, the terms “comprises/comprising/comprised” and “includes/including/included,” and their equivalents, can be used interchangeably. An apparatus, system, or method that “comprises A, B, and C” includes A, B, and C, but also can include other components (e.g., D) as well. That is, the apparatus, system, or method is not limited to components A, B, and C.

While the invention is described with respect to the specific examples, it is to be understood that the scope of the invention is not limited to these specific examples. Since other modifications and changes varied to fit particular operating requirements and environments will be apparent to those skilled in the art, the invention is not considered limited to the example chosen for purposes of disclosure, and covers all changes and modifications which do not constitute departures from the true spirit and scope of this invention.

Although the application describes embodiments having specific structural features and/or methodological acts, it is to be understood that the claims are not necessarily limited to the specific features or acts described. Rather, the specific features and acts are merely illustrative some embodiments that fall within the scope of the claims of the application.