WO2021066793A1 - Statelet reroute protection - Google Patents

Statelet reroute protection Download PDF

Info

Publication number
WO2021066793A1
WO2021066793A1 PCT/US2019/053775 US2019053775W WO2021066793A1 WO 2021066793 A1 WO2021066793 A1 WO 2021066793A1 US 2019053775 W US2019053775 W US 2019053775W WO 2021066793 A1 WO2021066793 A1 WO 2021066793A1
Authority
WO
WIPO (PCT)
Prior art keywords
statelet
network node
packet
programmable
programmable packet
Prior art date
Application number
PCT/US2019/053775
Other languages
French (fr)
Inventor
Alexander Clemm
Uma S. Chunduri
Alvaro Retana
Yingzhen Qu
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Priority to PCT/US2019/053775 priority Critical patent/WO2021066793A1/en
Publication of WO2021066793A1 publication Critical patent/WO2021066793A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/65Re-configuration of fast packet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery

Definitions

  • the present disclosure is generally related to network communications, and in particular, to various systems and methods for providing statelet reroute protection.
  • a statelet is a piece of programmable cache memory stored at network nodes that can be used to retain “state”, i.e. data/metadata for the flow.
  • the statelet can be programmed to cause certain actions to be performed by the network node.
  • the statelet can be packet- programmable, meaning that instructions or commands carried in a packet can instruct a network node to perform certain actions using its stored statelet by reading from or writing to the statelet.
  • BPP Big Packet Protocol
  • BPP introduced the concept of a packet-programmable statelet.
  • the concept entails that BPP packets can include commands that instruct intermediate hops to read from, write to, and initialize statelets.
  • metadata can also be carried in BPP packets to guide processing of packets by intermediate hops.
  • a first aspect relates to a method performed by a network node for providing statelet reroute protection.
  • the method includes storing, in memory on the network node, previous forwarding decision for a statelet-programmable packet of a flow.
  • the method receives and processes the statelet-programmable packet of the flow.
  • the method copies at least a portion of a statelet of the network node into the statelet-programmable packet in response to a determination that there is a path change associated with the statelet-programmable packet using the previous forwarding decision for the flow of the statelet-programmable packet.
  • the method forwards the statelet-programmable packet containing the portion of the statelet of the network node to the next hop node.
  • a command is added into the statelet-programmable packet that instructs the next hop node to create a new statelet on the next hop node using the portion of the statelet of the network node stored in the statelet-programmable packet.
  • the determination as to whether there is a path change associated with the statelet with the statelet-programmable packet comprises comparing an outgoing interface corresponding to a next hop node of the statelet-programmable packet with the outgoing interface of previous statelet-programmable packets of the flow using the stored previous forwarding decision of the statelet-programmable packets of the flow.
  • the determination as to whether there is a path change associated with the statelet with the statelet-programmable packet comprises determining whether it is a first time a forwarding decision for the flow of the self-driving packets is made.
  • processing of the statelet-programmable packet comprises executing commands associated with the statelet-programmable packet.
  • the previous forwarding decision for the statelet-programmable packets of the flow are maintained in the statelet of the network node.
  • the portion of the statelet of the network node is copied into a metadata block of the statelet-programmable packet.
  • the portion of the statelet of the network node that is copied into the statelet-programmable packet is a specially marked section of the statelet.
  • the statelet-programmable packet is a Big Packet Protocol (BPP) packet.
  • the method includes determining whether copying the portion of the statelet of the network node into the statelet-programmable packet would exceed a maximum transmission unit (MTU) of the statelet-programmable packet.
  • the method only copies at least a portion of the statelet of the network node into the statelet-programmable packet in response to a determination that copying the portion of the statelet of the network node into the statelet-programmable packet would not exceed the MTU of the statelet-programmable packet.
  • MTU maximum transmission unit
  • the method copies the portion of the statelet of the network node into a new statelet-programmable packet in response to a determination that copying the portion of the statelet of the network node into the statelet- programmable packet would exceed the MTU of the statelet-programmable packet.
  • a second aspect relates to a method performed by a second network node for initializing a statelet on the second network node.
  • the method includes receiving, at the second network node, a statelet-programmable packet that includes at least a portion of a statelet of a first network node.
  • the method executes a command to initialize the statelet on the second network node using the portion of a statelet of the first network node contained in the statelet- programmable packet.
  • the method includes determining whether the statelet is already present on the second network node. The method only initializes the statelet on the second network node in response to a determination that the statelet is not already present on the second network node.
  • the method processes the statelet-programmable packet using the statelet on the second network node.
  • a third aspect relates to a network node comprising network communication means, a data storage means, and a processing means.
  • the network node is specially configured to perform any of the preceding aspects or any preceding implementation thereof.
  • FIG. 1 is a schematic diagram illustrating a statelet-programmable packet traversing a network in accordance with an embodiment of the present disclosure.
  • FIG. 2 is a schematic diagram illustrating a statelet stored at a network node in accordance with an embodiment of the present disclosure.
  • FIG. 3 is a schematic diagram illustrating a BPP packet in accordance with an embodiment of the present disclosure.
  • FIG. 4 is a flowchart illustrating a method performed by a network node for providing statelet reroute protection in accordance with an embodiment of the present disclosure.
  • FIG. 5 is a flowchart illustrating a method performed by a network node for initializing a statelet in accordance with an embodiment of the present disclosure.
  • FIG. 6 is a schematic diagram illustrating a network node in accordance with another embodiment of the present disclosure.
  • BPP introduced the concept of a packet-programmable statelet.
  • BPP can be used for implementing statelet-programmable packets.
  • a statelet- programmable packet is a packet that contains a block or set of fields that define a set of (conditional) instructions that guide processing of the packet by a forwarding device using a statelet on the forwarding device.
  • a conditional instruction or command is a command whose execution hinges on a condition being met (this can include unconditional commands whose condition always evaluates to true).
  • a statelet is a piece of memory on a packet forwarding device that contains data associated with and able to interact with statelet- programmable packets in a flow.
  • statelets can be used as a cache for information that applies to a flow as a whole.
  • a statelet-programmable packet can be programmed in such a way that the same information is deployed (and subsequently used) at every forwarding device along the flow. Examples of such information include Service Level Objectives (SLOs) for the flow, metadata about the flow, commands for processing packets of the flow, network intent, and/or routing and path identifier information.
  • SLOs Service Level Objectives
  • Some data contained in a statelet can be specific to a particular node.
  • programmable switches (often programmed through a controller, not through a protocol such as BPP) may contain commands used to program packets of flows.
  • the path of a flow may change.
  • a node will reroute packets along a different path when it detects that the outgoing link or neighboring node has failed.
  • packets may be forwarded to a node that was not previously on the same path, and that node hence does not have the statelet.
  • the new nodes may not have all the information needed to process packets properly and consistent with other packets of the same flow. Accordingly, the present disclosure describes various systems and methods to protect against such unforeseen rerouting scenarios and to dynamically initialize statelets on the new nodes when a path change occurs.
  • the disclosed embodiments include a method performed by a network node for providing statelet reroute protection.
  • the method includes storing, in memory on the network node, previous forwarding decision for a statelet-programmable packet of a flow.
  • the method receives a statelet-programmable packet of the flow.
  • the method processes the statelet- programmable packet.
  • the method Prior to forwarding the statelet-programmable packet, the method compares an outgoing interface corresponding to a next hop node with that of previous statelet- programmable packets of the flow based on the previous forwarding decision of the statelet- programmable packets of the flow.
  • the method copies at least a portion of a statelet of the network node into the statelet-programmable packet.
  • the method adds a command into the statelet-programmable packet that instructs the next hop node to create a new statelet on the next hop node using the portion of the statelet of the network node stored in the statelet-programmable packet.
  • the method forwards the statelet-programmable packet to the next hop node.
  • FIG. 1 is a schematic diagram illustrating a statelet-programmable packet (SPP) 100 traversing a network from a source device 102 to a destination device 114 in accordance with an embodiment of the present disclosure.
  • the statelet-programmable packet 100 is part of a particular flow of statelet-programmable packets 100 being transmitted from the source device 102 to the destination device 114.
  • the statelet-programmable packets 100 contain a block or set of fields that define a set of instructions or commands that guide processing of the packet by a forwarding device along a path.
  • the statelet-programmable packets 100 rely on a cache or statelet 116 at each of the forwarding/network devices along the forwarding path that contains data that is associated with and can interact with the statelet-programmable packets 100.
  • the statelet-programmable packet 100 is part of a flow that is being transmitted along the following path: source device 102 - network node 104 - network node 106-> network node 108-> network node 112- destination device 114.
  • a statelet 116 has previously been created at each of the network nodes 104, 106, 108, and 112 that enable the network nodes 104, 106, 108, and 112 to interact with the commands/instructions in the statelet-programmable packets 100.
  • the network nodes 104, 106, 108, and 112 can be a switch, router, or any other type of network device that a packet may traverse along a network path.
  • a failure occurs that prevents the direct transmission of the statelet-programmable packets 100 between the network node 106 and the network node 108.
  • the network node 106 reroutes the statelet-programmable packets 100 to a network node 110, which in turn, routes the statelet-programmable packet 100 to the network node 108.
  • the statelet 116 was not previously created on the network node 110 because the network node 110 was not previously part of the forwarding path of the statelet-programmable packets 100.
  • the network node 106 can maintain in memory previous forwarding decision related to the flow of the statelet-programmable packet 100 made by the network node 106 to determine if the network node 110 has ever been part of the forwarding path of the statelet-programmable packets 100.
  • This memory of the previous forwarding decision for a packet of a flow e.g., next hop, outgoing interface
  • the next hop or outgoing interface of the packet is compared with that of the previous packet.
  • at least a portion of the statelet 116 on the network node 106 is copied into the statelet-programmable packets 100 (statelet portion 118 in FIG. 1).
  • the portion of the statelet 116 on the network node 106 can be encoded as part of a metadata block of the statelet-programmable packet 100.
  • a command can be added to the statelet- programmable packet 100 that instructs the network node 110 to create the statelet 116 using the statelet portion 118 contained in the statelet-programmable packet 100.
  • the portion of the statelet 116 to be replicated can be a specially marked section of the statelet 116, or it can be indicated in the replication command itself.
  • the network node 110 Upon receiving the statelet-programmable packet 100 containing the statelet portion 118, the network node 110 executes the command to initialize the statelet 116 using the statelet portion 118. In an embodiment, the network node 110 only executes the command to initialize the statelet 116 using the statelet portion 118 after verifying that the statelet 116 (e.g., by checking the key associated with the statelet on the network node 110) does not exist on the network node 110 (e.g., deals with conditions in which a path that was “split” is “re-merged”). If the statelet 116 already exists on the network node 110, the statelet portion 118 and command can simply be removed from the statelet-programmable packet 100.
  • verifying that the statelet 116 e.g., by checking the key associated with the statelet on the network node 110
  • the statelet portion 118 and command can simply be removed from the statelet-programmable packet 100.
  • the statelet- programmable packet 100 may be configured to override (i.e., write over) any existing statelet 116 on the network node 110 using the statelet portion 118 in the statelet-programmable packet 100.
  • the command may also create corresponding states or cause other actions to be performed on the network node 110 as needed (e.g., create queues, bandwidth reservation).
  • any remaining packet processing related to the statelet-programmable packet 100 can occur. This includes the execution of other commands in the statelet-programmable packet 100, which may interact with the statelet 116 that was just deployed on the network node 110. If necessary, the statelet 116 can subsequently be deployed at subsequent nodes along the forwarding path using the same mechanism.
  • the network node 110 can also be configured to remove the statelet portion 118 and any commands related to it from the statelet-programmable packet 100 prior to forwarding the statelet-programmable packet 100 to the network node 108 because the statelet 116 already exists on the network node 108.
  • FIG. 2 is a schematic diagram illustrating a statelet 200 stored at a network node in accordance with an embodiment of the present disclosure.
  • the statelet 200 is an example of the statelet 116 in FIG. 1.
  • the statelet 200 consists of three parts, a set of housekeeping fields 201, a set of freely programmable data items 203, and a set of additional extension fields 205 that can be reserved for future use.
  • the set of housekeeping fields 201 include a flow key field 204, a last packet metadata (MD) field 206, a last packet interface field 208, and an expiration (EXPIR) field 210.
  • the flow key field 204 contains information (e.g., a statelet key) that identifies the flow that a packet belongs to.
  • the last packet metadata field 206 can include information such as when the last packet in the flow was received, which can be used to compute into inter-packet delay, inter-packet delay variations, and could also include information on ordering or sequencing numbers of previous packets of the flow (e.g., to allow for detection of packet reordering or drops in a flow).
  • the last packet interface field 208 contains the forwarding decisions of previous packets of the flow (e.g., outgoing (egress) interface/next hop node of previous packets of the flow).
  • the expiration field 210 contains the time when the statelet 200 expires. For example, if a flow has been inactive for a certain period of time, the statelet 200 can be flushed (i.e., deleted) and the memory space can be released/reclaimed for other uses.
  • the set of freely programmable data items 203 includes an MD1 field 212, an MD2 field 214, an MD3 field 216, and an MDm field 222. These fields can be used to store data regarding a flow such as, but not limited to, flow context, service level objectives (SLOs), command cache, and other metadata.
  • the set of housekeeping fields 201 and the set of freely programmable data items 203 are reroute -protected fields meaning that the data in these fields are copied/replicated to other network nodes (i.e., included in the statelet portion 118 in the statelet-programmable packet 100 in FIG. 1).
  • the set of additional extension fields 205 comprises MDn field 224 through MDz field 230.
  • the set of additional extension fields 205 can be used to store node dependent state information such as flow statistics and operations telemetry.
  • reroute protection does not apply to the set of additional extension fields 205, meaning the set of additional extension fields 205 are not copied/replicated to other network nodes.
  • FIG. 3 is a schematic diagram illustrating a BPP packet 300 in accordance with an embodiment of the present disclosure.
  • the BPP packet 300 is an example of the statelet- programmable packet 100 in FIG. 1.
  • BPP is based on the idea of injecting meta-information into packets in order to provide guidance to intermediate nodes for how to process those packets.
  • the BPP packet 300 includes a BPP header 308, a command block 310, and a metadata block 312, collectively referred to herein as BPP Blocks
  • the BPP Blocks contain directives that provide guidance for how the packet should be processed or what resources must be allocated for a flow, as well as metadata about the packet and the flow that the packet is a part of.
  • a BPP networking device Rather than relying on in-built logic of networking devices that may result in best-effort treatment of the packet, a BPP networking device will act on those commands and metadata in the BPP Blocks to handle the packet, overriding any “regular” packet processing logic that is deployed on the device.
  • Commands can be used, for example, to determine conditions when to drop a packet, which queue to use, when to swap a label, to allocate a resource, or to measure a service level and compare it against a SLO.
  • This concept allows network services and behavior of packets and flows to be programmed by injecting BPP Blocks into packets at the edge of the network. There is no need to program networking devices or network controllers directly. At the same time, the programmed behavior is isolated from other flows and restricted to the packet and its flow.
  • the BPP packet 300 includes an Ethernet frame header 302, an Internet Protocol version 4 (IPv4) or Internet Protocol version 6 (IPv6) header 306, the BPP header 308, the command block 310, the metadata block 312, and a payload field 314.
  • the payload field 314 contains the data being carried by the BPP packet 300 (i.e., the data received by the destination system).
  • the Ethernet frame header 302 specifies the destination and source media access control (MAC) addresses.
  • the Ethernet frame header 302 also includes an Ethernet Type field 304 that can be used to indicate which protocol is encapsulated in the payload of the frame (in this case the protocol is BPP).
  • the IPv4/IPv6 header 306 is a pseudo-header of the host protocol.
  • the IPv4/IPv6 header 306 points to the BPP Block(s) that identify the next protocol to use in processing the BPP packet 300).
  • the BPP header 308 describes the overall structure of the BPP Block.
  • the BPP header 308 includes several fields (not depicted) such as a BPP version field and a block length field that indicates the length of the BPP Block.
  • the BPP header 308 can include flags related to error handling such as, but not limited to, a flag to indicate whether prior errors in processing the BPP Block were encountered by other nodes along the path, a flag to indicate whether verbose error reporting is requested to record additional error information in the metadata, and a flag to indicate an exception handling behavior (e.g., carry on or drop packet) to utilize.
  • the command block 310 contains commands and their conditions and parameters.
  • each BPP command consists of three parts: a command header, a set of conditions, and a set of actions to be applied when the set of conditions is true.
  • the metadata block 312 can be used to carry additional metadata as part of the BPP Block. This includes context that can be useful in processing the packet. Examples of such metadata include information about the packet or the flow (e.g., application tags or classifiers), security material, identity metadata, SLOs, and information used for accounting purposes. Metadata can be referenced by conditions and commands themselves, or they can be acted on in other ways by nodes along the path. In addition, the Metadata Block 312 can carry data referred to by parameters in the BPP Command Block 310.
  • FIG. 4 is a flowchart illustrating a method 400 performed by a network node for providing statelet reroute protection in accordance with an embodiment of the present disclosure.
  • the method 400 may be performed by a forwarding network device such as the network node 106 in FIG. 1.
  • the method 400 begins at step 402 by storing, in memory on the network node, previous forwarding decision for a flow of a statelet-programmable packet.
  • the forwarding decisions can include the egress or outgoing interface of previous packets in the flow that correspond to a next hop node that the prior packets were routed to.
  • the forwarding decisions can be stored in a forwarding table. In an embodiment, the memory of the previous forwarding decision can itself be maintained in the statelet.
  • the method 400 receives the statelet-programmable packet of the flow.
  • the method 400 at step 406 processes the statelet-programmable packet. Processing of the packet may include, but is not limited to, reading, writing, creating one or more statelets, and/or modifying a packet metadata.
  • the method 400 Prior to forwarding the statelet-programmable packet to the next hop node, but after all other processing of the packet has occurred, including executing other commands, the method 400, at step 408, determines whether there is a path change for the flow of the statelet-programmable packet.
  • a path change means the forwarding decision for the statelet-programmable packet is different than the previous forwarding decision for the flow of the statelet-programmable packets, or that it is the first time a forwarding decision for the flow of the statelet-programmable packets is made.
  • the method 400 compares an outgoing interface corresponding to a next hop node of the statelet-programmable packet with the outgoing interface of previous statelet-programmable packets of the flow using the stored previous forwarding decision of the statelet-programmable packets of the flow. If the outgoing interface corresponding to the next hop node of the statelet-programmable packet is the same as the outgoing interface of previous statelet-programmable packets of the flow, then there is no path change, and the method 400 proceeds to step 414 and forwards the statelet-programmable packet to the next hop node.
  • the method 400 copies at least a portion of a statelet of the network node into the statelet-programmable packet.
  • the portion of the statelet to be replicated is encoded as part of a metadata block of the statelet-programmable packet.
  • the portion of the statelet to be replicated can be a specially marked section of the statelet, or it can be specified in a replication command.
  • the code may specify the lower and upper bounds of the statelet data to copy.
  • the method 400 at step 412, adds a command into the statelet- programmable packet that instructs the next hop node to create a new statelet on the next hop node using the portion of the statelet of the network node stored in the statelet-programmable packet.
  • the following code can be used to add a command into the statelet-programmable packet:
  • commands or instructions for creating the statelet on the next hop node can themselves be cached as part of the statelet.
  • the method 400 proceeds to forward the statelet-programmable packet containing the command and copied portion of the statelet of the network node to the next hop node.
  • the method 400 can apply a fragmentation/reassembly strategy between nodes. For example, an additional statelet-programmable packet with a “deploy-statelet” command could be issued, and dropped at a rejoining or egress node.
  • FIG. 5 is a flowchart illustrating a method 500 performed by a network node for initializing a statelet in accordance with an embodiment of the present disclosure.
  • the method 500 may be performed by a forwarding network device such as the network node 110 in FIG. 1.
  • the method 500 begins at step 502 by receiving a statelet-programmable packet.
  • the statelet-programmable packet includes a command to initialize a statelet on the network node.
  • the method 500 determines whether the statelet is already present on the network node.
  • the method 500 disregards the command to initialize the statelet on the network node, and proceeds to step 508 to process the statelet-programmable packet using the existing statelet.
  • the method 500 executes the command to initialize the statelet on the network node using a copy of a portion of a statelet contained in the statelet-programmable packet. The method 500 proceeds to step 508 to process the statelet-programmable packet using the newly created statelet.
  • the method 500 can be configured to handle the error using a variety of error handling procedures. For example, in the case of BPP, when errors occur that prevent proper initialization of a statelet, that error can be flagged in the BPP Block per normal BPP error procedures. Subsequent packets that expect the network node to have a statelet can likewise flag the fact that a statelet is missing.
  • an error condition e.g., insufficient memory for initializing statelet on the network node, loss of packets, etc.
  • the method 500 can be configured to handle the error using a variety of error handling procedures. For example, in the case of BPP, when errors occur that prevent proper initialization of a statelet, that error can be flagged in the BPP Block per normal BPP error procedures. Subsequent packets that expect the network node to have a statelet can likewise flag the fact that a statelet is missing.
  • the method 500 would check not only whether the statelet is already present, but also whether its last packet metadata is that of the previous packet of the flow (i.e., whether the statelet is “fresh” or “stale”.) This can be gleaned from the last packet metadata (item 206 depicted in Fig 2). In an embodiment, the method 500 would compare if the last packet MD in the statelet that is already present on the node is the same as the last packet MD of the statelet that is being replicated. In another embodiment, there could be also a switch that would allow to distinguish between whether a “fresh statelet check” or just “any statelet check” (fresh or stale) would be requested.
  • the commands or instructions for implementing the method 400 in FIG. 4 and/or the method 500 in FIG. 5 can themselves be cached as part of the statelet (with a command engine acting on commands stored as part of the statelet), or be deployed on the forwarding device.
  • the commands do not necessarily need to be carried as part of each statelet-programmable packet.
  • FIG. 6 is a schematic diagram illustrating a network node 600 in accordance with another embodiment of the present disclosure.
  • the network node 600 is suitable for implementing the disclosed embodiments as described herein.
  • the network nodes 104, 106, 108, 110, and 112 in FIG. 1 can be implemented using the network node 600.
  • the network node 600 includes receiver units (RX) 620 or receiving means for receiving data via ingress ports 610.
  • the network node 600 also includes transmitter units (TX) 640 or transmitting means for transmitting via data egress ports 650.
  • the network node 600 includes a memory 660 or data storing means for storing the instmctions and various data.
  • the memory 660 can be any type of memory or component capable of storing data and/or instructions.
  • the memory 660 may be volatile and/or non volatile memory such as read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and/or static random-access memory (SRAM).
  • ROM read-only memory
  • RAM random access memory
  • TCAM ternary content-addressable memory
  • SRAM static random-access memory
  • the memory 660 can also include one or more disks, tape drives, and solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution.
  • the network node 600 has a processor 630 or other processing means (e.g., central processing unit (CPU)) to process instructions.
  • the processor 630 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs).
  • the processor 630 is communicatively coupled via a system bus with the ingress ports 610, RX 620, TX 640, egress ports 650, and memory 660.
  • the processor 630 can be configured to execute instmctions stored in the memory 660.
  • the processor 630 provides a means for performing any computational, comparison, determination, initiation, or configuration (e.g., setting the F-bit or I-bit) steps, or any other action, corresponding to the claims when the appropriate instruction is executed by the processor.
  • the memory 660 can be memory that is integrated with the processor 630.
  • the memory 660 stores a statelet-programmable packet module 670.
  • the statelet-programmable packet module 670 includes data and executable instructions for implementing the disclosed embodiments.
  • the statelet-programmable packet module 670 can include instructions for implementing the methods as described in FIGS. 4 and 5.
  • the inclusion of the statelet-programmable packet module 670 substantially improves the functionality of the network node 600 by providing statelet reroute protection.
  • the various disclosed embodiments include a method to automatically initialize a statelet on new nodes on a path by replicating contents from preceding nodes on the path.
  • the method can be automatically triggered by a node when a path change for a flow occurs.
  • the method is able to operate in real-time (at line rate) without incurring periods of degradation, without need for a controller, and without need for a separate control protocol and separate handshakes.
  • the method is able to detect path changes for a flow at a node where the divergence in downstream path originates; initiate commands needed to replicate portions of a statelet, copy it into metadata, and deploy it on a new node.
  • the disclosed embodiments can be encoded in a very compact manner to be transported as part of data packets themselves.
  • the disclosed embodiments can include optimizations that stop propagation of replication when paths are rejoined.
  • the disclosed embodiments provide a solution that does not exist today. Attempts to accomplish something similar (e.g., caching of commands for how to handle flows) requires the use of a controller to manage the deployment of statelets. For example, a path computation element (PCE) (or similar) controller would deploy and update statelets along with updated forwarding tables.
  • PCE path computation element
  • the disclosed embodiments provide several advantages over this. For instance, the disclosed embodiments are “network-embedded” and do not require a separate controller, nor a connection between each node and the controller. This makes it easier to deploy and reduces complexity and cost of networking infrastructure. More importantly, the disclosed embodiments are adaptive in real-time to meet real-time requirements. Any path changes can be detected and reacted to instantly, at line rate.
  • controller-based solutions would need a considerable amount of time to detect a path change, and then make corresponding changes, compromising the flow and service level quality in the meantime.
  • IP Internet Protocol
  • BPP BPP technology

Abstract

A method performed by a network node for providing statelet reroute protection that includes storing, in memory on the network node, previous forwarding decision for a statelet-programmable packet of a flow. The method receives and processes the statelet-programmable packet of the flow. The method copies at least a portion of a statelet of the network node into the statelet-programmable packet in response to a determination that there is a path change associated with the statelet-programmable packet using the previous forwarding decision for the flow of the statelet-programmable packet. The method forwards the statelet-programmable packet containing the portion of the statelet of the network node to the next hop node.

Description

Statelet Reroute Protection
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] None.
TECHNICAL FIELD
[0002] The present disclosure is generally related to network communications, and in particular, to various systems and methods for providing statelet reroute protection.
BACKGROUND
[0003] Future networking applications place demands on networking services (e.g., guaranteed service level) that have become increasingly difficult to achieve using existing internetworking technology. To address some of these demands, a concept known as a statelet is introduced. A statelet is a piece of programmable cache memory stored at network nodes that can be used to retain “state”, i.e. data/metadata for the flow. The statelet can be programmed to cause certain actions to be performed by the network node. In particular, the statelet can be packet- programmable, meaning that instructions or commands carried in a packet can instruct a network node to perform certain actions using its stored statelet by reading from or writing to the statelet. One type of packet that has been introduced that has the capability of carrying instructions that can read from or write to a statelet of network node is known as Big Packet Protocol (BPP). BPP introduced the concept of a packet-programmable statelet. The concept entails that BPP packets can include commands that instruct intermediate hops to read from, write to, and initialize statelets. In addition, metadata can also be carried in BPP packets to guide processing of packets by intermediate hops.
SUMMARY
[0004] A first aspect relates to a method performed by a network node for providing statelet reroute protection. The method includes storing, in memory on the network node, previous forwarding decision for a statelet-programmable packet of a flow. The method receives and processes the statelet-programmable packet of the flow. The method copies at least a portion of a statelet of the network node into the statelet-programmable packet in response to a determination that there is a path change associated with the statelet-programmable packet using the previous forwarding decision for the flow of the statelet-programmable packet. The method forwards the statelet-programmable packet containing the portion of the statelet of the network node to the next hop node.
[0005] In a first implementation according to the first aspect, a command is added into the statelet-programmable packet that instructs the next hop node to create a new statelet on the next hop node using the portion of the statelet of the network node stored in the statelet-programmable packet.
[0006] In a second implementation according to the first aspect or any preceding implementation of the first aspect, the determination as to whether there is a path change associated with the statelet with the statelet-programmable packet comprises comparing an outgoing interface corresponding to a next hop node of the statelet-programmable packet with the outgoing interface of previous statelet-programmable packets of the flow using the stored previous forwarding decision of the statelet-programmable packets of the flow.
[0007] In a third implementation according to the first aspect or any preceding implementation of the first aspect, the determination as to whether there is a path change associated with the statelet with the statelet-programmable packet comprises determining whether it is a first time a forwarding decision for the flow of the self-driving packets is made.
[0008] In a fourth implementation according to the first aspect or any preceding implementation of the first aspect, processing of the statelet-programmable packet comprises executing commands associated with the statelet-programmable packet.
[0009] In a fifth implementation according to the first aspect or any preceding implementation of the first aspect, the previous forwarding decision for the statelet-programmable packets of the flow are maintained in the statelet of the network node.
[0010] In a sixth implementation according to the first aspect or any preceding implementation of the first aspect, the portion of the statelet of the network node is copied into a metadata block of the statelet-programmable packet.
[0011] In a seventh implementation according to the first aspect or any preceding implementation of the first aspect, the portion of the statelet of the network node that is copied into the statelet-programmable packet is a specially marked section of the statelet. [0012] In an eighth implementation according to the first aspect or any preceding implementation of the first aspect, the statelet-programmable packet is a Big Packet Protocol (BPP) packet.
[0013] In a ninth implementation according to the first aspect or any preceding implementation of the first aspect, the method includes determining whether copying the portion of the statelet of the network node into the statelet-programmable packet would exceed a maximum transmission unit (MTU) of the statelet-programmable packet. The method only copies at least a portion of the statelet of the network node into the statelet-programmable packet in response to a determination that copying the portion of the statelet of the network node into the statelet-programmable packet would not exceed the MTU of the statelet-programmable packet. Otherwise, the method copies the portion of the statelet of the network node into a new statelet-programmable packet in response to a determination that copying the portion of the statelet of the network node into the statelet- programmable packet would exceed the MTU of the statelet-programmable packet.
[0014] A second aspect relates to a method performed by a second network node for initializing a statelet on the second network node. The method includes receiving, at the second network node, a statelet-programmable packet that includes at least a portion of a statelet of a first network node. The method executes a command to initialize the statelet on the second network node using the portion of a statelet of the first network node contained in the statelet- programmable packet.
[0015] In a first implementation according to the second aspect, the method includes determining whether the statelet is already present on the second network node. The method only initializes the statelet on the second network node in response to a determination that the statelet is not already present on the second network node.
[0016] In a second implementation according to the second aspect or any preceding implementation of the second aspect, the method processes the statelet-programmable packet using the statelet on the second network node.
[0017] In a third implementation according to the second aspect or any preceding implementation of the second aspect, the method removes the command and the portion of the statelet contained in the statelet-programmable packet prior to forwarding the statelet- programmable packet. [0018] A third aspect relates to a network node comprising network communication means, a data storage means, and a processing means. The network node is specially configured to perform any of the preceding aspects or any preceding implementation thereof.
BRIEF DESCRIPTION OF THE DRAWINGS
[0019] For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
[0020] FIG. 1 is a schematic diagram illustrating a statelet-programmable packet traversing a network in accordance with an embodiment of the present disclosure.
[0021] FIG. 2 is a schematic diagram illustrating a statelet stored at a network node in accordance with an embodiment of the present disclosure.
[0022] FIG. 3 is a schematic diagram illustrating a BPP packet in accordance with an embodiment of the present disclosure.
[0023] FIG. 4 is a flowchart illustrating a method performed by a network node for providing statelet reroute protection in accordance with an embodiment of the present disclosure.
[0024] FIG. 5 is a flowchart illustrating a method performed by a network node for initializing a statelet in accordance with an embodiment of the present disclosure.
[0025] FIG. 6 is a schematic diagram illustrating a network node in accordance with another embodiment of the present disclosure.
DETAILED DESCRIPTION
[0026] It should be understood at the outset that although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
[0027] As stated above, BPP introduced the concept of a packet-programmable statelet. BPP can be used for implementing statelet-programmable packets. As referenced herein, a statelet- programmable packet is a packet that contains a block or set of fields that define a set of (conditional) instructions that guide processing of the packet by a forwarding device using a statelet on the forwarding device. A conditional instruction or command is a command whose execution hinges on a condition being met (this can include unconditional commands whose condition always evaluates to true). As referenced herein, a statelet is a piece of memory on a packet forwarding device that contains data associated with and able to interact with statelet- programmable packets in a flow. One of the ways in which statelets can be used is as a cache for information that applies to a flow as a whole. For example, a statelet-programmable packet can be programmed in such a way that the same information is deployed (and subsequently used) at every forwarding device along the flow. Examples of such information include Service Level Objectives (SLOs) for the flow, metadata about the flow, commands for processing packets of the flow, network intent, and/or routing and path identifier information. Some data contained in a statelet can be specific to a particular node. Similarly, programmable switches (often programmed through a controller, not through a protocol such as BPP) may contain commands used to program packets of flows.
[0028] However, under certain circumstances, the path of a flow may change. For example, in a fast reroute scenario, a node will reroute packets along a different path when it detects that the outgoing link or neighboring node has failed. In such a scenario, packets may be forwarded to a node that was not previously on the same path, and that node hence does not have the statelet. As a result, the new nodes may not have all the information needed to process packets properly and consistent with other packets of the same flow. Accordingly, the present disclosure describes various systems and methods to protect against such unforeseen rerouting scenarios and to dynamically initialize statelets on the new nodes when a path change occurs.
[0029] As an example, the disclosed embodiments include a method performed by a network node for providing statelet reroute protection. The method includes storing, in memory on the network node, previous forwarding decision for a statelet-programmable packet of a flow. The method receives a statelet-programmable packet of the flow. The method processes the statelet- programmable packet. Prior to forwarding the statelet-programmable packet, the method compares an outgoing interface corresponding to a next hop node with that of previous statelet- programmable packets of the flow based on the previous forwarding decision of the statelet- programmable packets of the flow. If the outgoing interface corresponding to the next hop node of the statelet-programmable packet differs from the outgoing interface of the previous statelet- programmable packets of the flow, or if it’s the first packet of the flow, the method copies at least a portion of a statelet of the network node into the statelet-programmable packet. The method adds a command into the statelet-programmable packet that instructs the next hop node to create a new statelet on the next hop node using the portion of the statelet of the network node stored in the statelet-programmable packet. The method forwards the statelet-programmable packet to the next hop node.
[0030] FIG. 1 is a schematic diagram illustrating a statelet-programmable packet (SPP) 100 traversing a network from a source device 102 to a destination device 114 in accordance with an embodiment of the present disclosure. The statelet-programmable packet 100 is part of a particular flow of statelet-programmable packets 100 being transmitted from the source device 102 to the destination device 114. The statelet-programmable packets 100 contain a block or set of fields that define a set of instructions or commands that guide processing of the packet by a forwarding device along a path. The statelet-programmable packets 100 rely on a cache or statelet 116 at each of the forwarding/network devices along the forwarding path that contains data that is associated with and can interact with the statelet-programmable packets 100. In the depicted embodiment, the statelet-programmable packet 100 is part of a flow that is being transmitted along the following path: source device 102 - network node 104 - network node 106-> network node 108-> network node 112- destination device 114. A statelet 116 has previously been created at each of the network nodes 104, 106, 108, and 112 that enable the network nodes 104, 106, 108, and 112 to interact with the commands/instructions in the statelet-programmable packets 100. The network nodes 104, 106, 108, and 112 can be a switch, router, or any other type of network device that a packet may traverse along a network path.
[0031] In the depicted embodiment, during the flow of the statelet-programmable packets 100, a failure occurs that prevents the direct transmission of the statelet-programmable packets 100 between the network node 106 and the network node 108. In an embodiment, the network node 106 reroutes the statelet-programmable packets 100 to a network node 110, which in turn, routes the statelet-programmable packet 100 to the network node 108. However, the statelet 116 was not previously created on the network node 110 because the network node 110 was not previously part of the forwarding path of the statelet-programmable packets 100. For instance, in an embodiment, the network node 106 can maintain in memory previous forwarding decision related to the flow of the statelet-programmable packet 100 made by the network node 106 to determine if the network node 110 has ever been part of the forwarding path of the statelet-programmable packets 100. This memory of the previous forwarding decision for a packet of a flow (e.g., next hop, outgoing interface) can itself be maintained in the statelet 116. Before forwarding a packet (but after all other processing of the packet has occurred, including executing other commands in the statelet- programmable packets 100), the next hop or outgoing interface of the packet is compared with that of the previous packet. In case a change is detected, or if this is the first time a forwarding decision for a flow packet is made, this means that the network node 110 has never been part of the forwarding path of the statelet-programmable packets 100, and that the statelet 116 has not been created on the network node 110. In accordance with an embodiment, to initialize replication of the statelet 116 on the network node 110, at least a portion of the statelet 116 on the network node 106 is copied into the statelet-programmable packets 100 (statelet portion 118 in FIG. 1). In an embodiment, the portion of the statelet 116 on the network node 106 can be encoded as part of a metadata block of the statelet-programmable packet 100. A command can be added to the statelet- programmable packet 100 that instructs the network node 110 to create the statelet 116 using the statelet portion 118 contained in the statelet-programmable packet 100. In an embodiment, the portion of the statelet 116 to be replicated can be a specially marked section of the statelet 116, or it can be indicated in the replication command itself.
[0032] Upon receiving the statelet-programmable packet 100 containing the statelet portion 118, the network node 110 executes the command to initialize the statelet 116 using the statelet portion 118. In an embodiment, the network node 110 only executes the command to initialize the statelet 116 using the statelet portion 118 after verifying that the statelet 116 (e.g., by checking the key associated with the statelet on the network node 110) does not exist on the network node 110 (e.g., deals with conditions in which a path that was “split” is “re-merged”). If the statelet 116 already exists on the network node 110, the statelet portion 118 and command can simply be removed from the statelet-programmable packet 100. In another embodiment, the statelet- programmable packet 100 may be configured to override (i.e., write over) any existing statelet 116 on the network node 110 using the statelet portion 118 in the statelet-programmable packet 100. The command may also create corresponding states or cause other actions to be performed on the network node 110 as needed (e.g., create queues, bandwidth reservation).
[0033] After the statelet 116 is deployed, any remaining packet processing related to the statelet-programmable packet 100 can occur. This includes the execution of other commands in the statelet-programmable packet 100, which may interact with the statelet 116 that was just deployed on the network node 110. If necessary, the statelet 116 can subsequently be deployed at subsequent nodes along the forwarding path using the same mechanism. The network node 110 can also be configured to remove the statelet portion 118 and any commands related to it from the statelet-programmable packet 100 prior to forwarding the statelet-programmable packet 100 to the network node 108 because the statelet 116 already exists on the network node 108.
[0034] FIG. 2 is a schematic diagram illustrating a statelet 200 stored at a network node in accordance with an embodiment of the present disclosure. The statelet 200 is an example of the statelet 116 in FIG. 1. In the depicted embodiment, the statelet 200 consists of three parts, a set of housekeeping fields 201, a set of freely programmable data items 203, and a set of additional extension fields 205 that can be reserved for future use.
[0035] The set of housekeeping fields 201 include a flow key field 204, a last packet metadata (MD) field 206, a last packet interface field 208, and an expiration (EXPIR) field 210. The flow key field 204 contains information (e.g., a statelet key) that identifies the flow that a packet belongs to. The last packet metadata field 206 can include information such as when the last packet in the flow was received, which can be used to compute into inter-packet delay, inter-packet delay variations, and could also include information on ordering or sequencing numbers of previous packets of the flow (e.g., to allow for detection of packet reordering or drops in a flow). The last packet interface field 208 contains the forwarding decisions of previous packets of the flow (e.g., outgoing (egress) interface/next hop node of previous packets of the flow). The expiration field 210 contains the time when the statelet 200 expires. For example, if a flow has been inactive for a certain period of time, the statelet 200 can be flushed (i.e., deleted) and the memory space can be released/reclaimed for other uses.
[0036] The set of freely programmable data items 203 includes an MD1 field 212, an MD2 field 214, an MD3 field 216, and an MDm field 222. These fields can be used to store data regarding a flow such as, but not limited to, flow context, service level objectives (SLOs), command cache, and other metadata. In an embodiment, the set of housekeeping fields 201 and the set of freely programmable data items 203 are reroute -protected fields meaning that the data in these fields are copied/replicated to other network nodes (i.e., included in the statelet portion 118 in the statelet-programmable packet 100 in FIG. 1).
[0037] The set of additional extension fields 205 comprises MDn field 224 through MDz field 230. In an embodiment, the set of additional extension fields 205 can be used to store node dependent state information such as flow statistics and operations telemetry. In an embodiment, reroute protection does not apply to the set of additional extension fields 205, meaning the set of additional extension fields 205 are not copied/replicated to other network nodes.
[0038] FIG. 3 is a schematic diagram illustrating a BPP packet 300 in accordance with an embodiment of the present disclosure. The BPP packet 300 is an example of the statelet- programmable packet 100 in FIG. 1. BPP is based on the idea of injecting meta-information into packets in order to provide guidance to intermediate nodes for how to process those packets. For instance, the BPP packet 300 includes a BPP header 308, a command block 310, and a metadata block 312, collectively referred to herein as BPP Blocks The BPP Blocks contain directives that provide guidance for how the packet should be processed or what resources must be allocated for a flow, as well as metadata about the packet and the flow that the packet is a part of. Rather than relying on in-built logic of networking devices that may result in best-effort treatment of the packet, a BPP networking device will act on those commands and metadata in the BPP Blocks to handle the packet, overriding any “regular” packet processing logic that is deployed on the device. Commands can be used, for example, to determine conditions when to drop a packet, which queue to use, when to swap a label, to allocate a resource, or to measure a service level and compare it against a SLO. This concept allows network services and behavior of packets and flows to be programmed by injecting BPP Blocks into packets at the edge of the network. There is no need to program networking devices or network controllers directly. At the same time, the programmed behavior is isolated from other flows and restricted to the packet and its flow.
[0039] In the depicted embodiment, the BPP packet 300 includes an Ethernet frame header 302, an Internet Protocol version 4 (IPv4) or Internet Protocol version 6 (IPv6) header 306, the BPP header 308, the command block 310, the metadata block 312, and a payload field 314. The payload field 314 contains the data being carried by the BPP packet 300 (i.e., the data received by the destination system). The Ethernet frame header 302 specifies the destination and source media access control (MAC) addresses. The Ethernet frame header 302 also includes an Ethernet Type field 304 that can be used to indicate which protocol is encapsulated in the payload of the frame (in this case the protocol is BPP). The IPv4/IPv6 header 306 is a pseudo-header of the host protocol. The IPv4/IPv6 header 306 points to the BPP Block(s) that identify the next protocol to use in processing the BPP packet 300).
[0040] The BPP header 308 describes the overall structure of the BPP Block. The BPP header 308 includes several fields (not depicted) such as a BPP version field and a block length field that indicates the length of the BPP Block. In addition, the BPP header 308 can include flags related to error handling such as, but not limited to, a flag to indicate whether prior errors in processing the BPP Block were encountered by other nodes along the path, a flag to indicate whether verbose error reporting is requested to record additional error information in the metadata, and a flag to indicate an exception handling behavior (e.g., carry on or drop packet) to utilize. The command block 310 contains commands and their conditions and parameters. In an embodiment, each BPP command consists of three parts: a command header, a set of conditions, and a set of actions to be applied when the set of conditions is true. The metadata block 312 can be used to carry additional metadata as part of the BPP Block. This includes context that can be useful in processing the packet. Examples of such metadata include information about the packet or the flow (e.g., application tags or classifiers), security material, identity metadata, SLOs, and information used for accounting purposes. Metadata can be referenced by conditions and commands themselves, or they can be acted on in other ways by nodes along the path. In addition, the Metadata Block 312 can carry data referred to by parameters in the BPP Command Block 310.
[0041] FIG. 4 is a flowchart illustrating a method 400 performed by a network node for providing statelet reroute protection in accordance with an embodiment of the present disclosure. The method 400 may be performed by a forwarding network device such as the network node 106 in FIG. 1. The method 400 begins at step 402 by storing, in memory on the network node, previous forwarding decision for a flow of a statelet-programmable packet. The forwarding decisions can include the egress or outgoing interface of previous packets in the flow that correspond to a next hop node that the prior packets were routed to. The forwarding decisions can be stored in a forwarding table. In an embodiment, the memory of the previous forwarding decision can itself be maintained in the statelet.
[0042] At step 404, the method 400 receives the statelet-programmable packet of the flow. The method 400 at step 406 processes the statelet-programmable packet. Processing of the packet may include, but is not limited to, reading, writing, creating one or more statelets, and/or modifying a packet metadata.
[0043] Prior to forwarding the statelet-programmable packet to the next hop node, but after all other processing of the packet has occurred, including executing other commands, the method 400, at step 408, determines whether there is a path change for the flow of the statelet-programmable packet. A path change means the forwarding decision for the statelet-programmable packet is different than the previous forwarding decision for the flow of the statelet-programmable packets, or that it is the first time a forwarding decision for the flow of the statelet-programmable packets is made. In one embodiment, to determine if there is a path change, the method 400 compares an outgoing interface corresponding to a next hop node of the statelet-programmable packet with the outgoing interface of previous statelet-programmable packets of the flow using the stored previous forwarding decision of the statelet-programmable packets of the flow. If the outgoing interface corresponding to the next hop node of the statelet-programmable packet is the same as the outgoing interface of previous statelet-programmable packets of the flow, then there is no path change, and the method 400 proceeds to step 414 and forwards the statelet-programmable packet to the next hop node.
[0044] However, if there is a path change (e.g., the outgoing interface corresponding to the next hop node of the statelet-programmable packet differs from the previous statelet-programmable packets of the flow), the method 400, at step 410, copies at least a portion of a statelet of the network node into the statelet-programmable packet. In an embodiment, the portion of the statelet to be replicated is encoded as part of a metadata block of the statelet-programmable packet. The portion of the statelet to be replicated can be a specially marked section of the statelet, or it can be specified in a replication command. For example, the code may specify the lower and upper bounds of the statelet data to copy.
[0045] In an embodiment, the method 400, at step 412, adds a command into the statelet- programmable packet that instructs the next hop node to create a new statelet on the next hop node using the portion of the statelet of the network node stored in the statelet-programmable packet. For example, the following code can be used to add a command into the statelet-programmable packet:
[0046] if (current packet egress interface != previous packet interface) {
[0047] add command “deploy-statelet init = RPSmetadata”; // execute first
[0048] copy reroute -protected-state from statelet into metadata block “RPSmetadata”;
[0049] }
[0050] Alternatively, the commands or instructions for creating the statelet on the next hop node can themselves be cached as part of the statelet.
[0051] The method 400, at step 414, proceeds to forward the statelet-programmable packet containing the command and copied portion of the statelet of the network node to the next hop node.
[0052] In an alternative embodiment to the method 400 in FIG. 4, if copying at least a portion of a statelet of the network node into the statelet-programmable packet causes the packet to exceed a MTU of the packet, the method 400 can apply a fragmentation/reassembly strategy between nodes. For example, an additional statelet-programmable packet with a “deploy-statelet” command could be issued, and dropped at a rejoining or egress node.
[0053] FIG. 5 is a flowchart illustrating a method 500 performed by a network node for initializing a statelet in accordance with an embodiment of the present disclosure. The method 500 may be performed by a forwarding network device such as the network node 110 in FIG. 1. The method 500 begins at step 502 by receiving a statelet-programmable packet. In an embodiment, the statelet-programmable packet includes a command to initialize a statelet on the network node. At step 504, the method 500 determines whether the statelet is already present on the network node. In an embodiment, if the statelet is already present on the network node (e.g., this may occur in cases of rejoining paths), the method 500 disregards the command to initialize the statelet on the network node, and proceeds to step 508 to process the statelet-programmable packet using the existing statelet. [0054] If the statelet is not present on the network node, the method 500, at step 506, executes the command to initialize the statelet on the network node using a copy of a portion of a statelet contained in the statelet-programmable packet. The method 500 proceeds to step 508 to process the statelet-programmable packet using the newly created statelet.
[0055] In an alternative embodiment to the method 500 in FIG. 5, if an error condition occurs (e.g., insufficient memory for initializing statelet on the network node, loss of packets, etc.), the method 500 can be configured to handle the error using a variety of error handling procedures. For example, in the case of BPP, when errors occur that prevent proper initialization of a statelet, that error can be flagged in the BPP Block per normal BPP error procedures. Subsequent packets that expect the network node to have a statelet can likewise flag the fact that a statelet is missing.
[0056] In another alternative embodiment to the method 500 in FIG. 5, the method 500 would check not only whether the statelet is already present, but also whether its last packet metadata is that of the previous packet of the flow (i.e., whether the statelet is “fresh” or “stale”.) This can be gleaned from the last packet metadata (item 206 depicted in Fig 2). In an embodiment, the method 500 would compare if the last packet MD in the statelet that is already present on the node is the same as the last packet MD of the statelet that is being replicated. In another embodiment, there could be also a switch that would allow to distinguish between whether a “fresh statelet check” or just “any statelet check” (fresh or stale) would be requested.
[0057] As stated above, in an embodiment, the commands or instructions for implementing the method 400 in FIG. 4 and/or the method 500 in FIG. 5 can themselves be cached as part of the statelet (with a command engine acting on commands stored as part of the statelet), or be deployed on the forwarding device. The commands do not necessarily need to be carried as part of each statelet-programmable packet.
[0058] FIG. 6 is a schematic diagram illustrating a network node 600 in accordance with another embodiment of the present disclosure. The network node 600 is suitable for implementing the disclosed embodiments as described herein. For example, the network nodes 104, 106, 108, 110, and 112 in FIG. 1 can be implemented using the network node 600. The network node 600 includes receiver units (RX) 620 or receiving means for receiving data via ingress ports 610. The network node 600 also includes transmitter units (TX) 640 or transmitting means for transmitting via data egress ports 650. [0059] The network node 600 includes a memory 660 or data storing means for storing the instmctions and various data. The memory 660 can be any type of memory or component capable of storing data and/or instructions. For example, the memory 660 may be volatile and/or non volatile memory such as read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and/or static random-access memory (SRAM). The memory 660 can also include one or more disks, tape drives, and solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution.
[0060] The network node 600 has a processor 630 or other processing means (e.g., central processing unit (CPU)) to process instructions. The processor 630 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 630 is communicatively coupled via a system bus with the ingress ports 610, RX 620, TX 640, egress ports 650, and memory 660. The processor 630 can be configured to execute instmctions stored in the memory 660. Thus, the processor 630 provides a means for performing any computational, comparison, determination, initiation, or configuration (e.g., setting the F-bit or I-bit) steps, or any other action, corresponding to the claims when the appropriate instruction is executed by the processor. In some embodiments, the memory 660 can be memory that is integrated with the processor 630.
[0061] In one embodiment, the memory 660 stores a statelet-programmable packet module 670. The statelet-programmable packet module 670 includes data and executable instructions for implementing the disclosed embodiments. For instance, the statelet-programmable packet module 670 can include instructions for implementing the methods as described in FIGS. 4 and 5. The inclusion of the statelet-programmable packet module 670 substantially improves the functionality of the network node 600 by providing statelet reroute protection.
[0062] Accordingly, the various disclosed embodiments include a method to automatically initialize a statelet on new nodes on a path by replicating contents from preceding nodes on the path. The method can be automatically triggered by a node when a path change for a flow occurs. The method is able to operate in real-time (at line rate) without incurring periods of degradation, without need for a controller, and without need for a separate control protocol and separate handshakes. The method is able to detect path changes for a flow at a node where the divergence in downstream path originates; initiate commands needed to replicate portions of a statelet, copy it into metadata, and deploy it on a new node. The disclosed embodiments can be encoded in a very compact manner to be transported as part of data packets themselves. The disclosed embodiments can include optimizations that stop propagation of replication when paths are rejoined.
[0063] The disclosed embodiments provide a solution that does not exist today. Attempts to accomplish something similar (e.g., caching of commands for how to handle flows) requires the use of a controller to manage the deployment of statelets. For example, a path computation element (PCE) (or similar) controller would deploy and update statelets along with updated forwarding tables. The disclosed embodiments provide several advantages over this. For instance, the disclosed embodiments are “network-embedded” and do not require a separate controller, nor a connection between each node and the controller. This makes it easier to deploy and reduces complexity and cost of networking infrastructure. More importantly, the disclosed embodiments are adaptive in real-time to meet real-time requirements. Any path changes can be detected and reacted to instantly, at line rate. To the contrary, controller-based solutions would need a considerable amount of time to detect a path change, and then make corresponding changes, compromising the flow and service level quality in the meantime. The disclosed embodiments can be used anywhere New Internet Protocol (IP) and BPP technology would be targeted, such as high- precision networking applications. Markets include service providers and enterprise networking customers.
[0064] While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
[0065] In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.

Claims

CLAIMS What is claimed is:
1. A method performed by a network node for providing statelet reroute protection, the method comprising: storing, in memory on the network node, a previous forwarding decision for a flow of a statelet-programmable packet; receiving the statelet-programmable packet of the flow; processing the statelet-programmable packet; copying at least a portion of a statelet of the network node into the statelet-programmable packet in response to a determination that there is a path change associated with the statelet- programmable packet using the previous forwarding decision for the flow of the statelet- programmable packet; and forwarding the statelet-programmable packet containing the portion of the statelet of the network node to a next hop node.
2. The method according to claim 1, further comprising adding a command into the statelet- programmable packet that instructs the next hop node to create a new statelet on the next hop node using the portion of the statelet of the network node stored in the statelet-programmable packet.
3. The method according to any of claims 1-2, wherein determining whether there is a path change associated with the statelet with the statelet-programmable packet comprises comparing an outgoing interface corresponding to a next hop node of the statelet-programmable packet with the outgoing interface of previous statelet-programmable packets of the flow using the previous forwarding decision of the statelet-programmable packets of the flow.
4. The method according to any of claims 1-3, wherein determining whether there is a path change associated with the statelet with the statelet-programmable packet comprises determining whether a forwarding decision for the flow of self-driving packets is made for a first time.
5. The method according to any of claims 1-4, wherein the processing of the statelet- programmable packet comprises executing commands associated with the statelet-programmable packet.
6. The method according to any of claims 1-5, wherein the previous forwarding decision for the statelet-programmable packets of the flow are maintained in the statelet of the network node.
7. The method according to any of claims 1-6, wherein the portion of the statelet of the network node is copied into a metadata block of the statelet-programmable packet.
8. The method according to any of claims 1-7, wherein the portion of the statelet of the network node that is copied into the statelet-programmable packet is a specially marked section of the statelet.
9. The method according to any of claims 1-8, wherein the statelet-programmable packet is a Big Packet Protocol (BPP) packet.
10. The method according to any of claims 1-9, further comprising: determining whether copying a portion of the statelet of the network node into the statelet-programmable packet would exceed a maximum transmission unit (MTU) of the statelet- programmable packet; only copying at least a portion of the statelet of the network node into the statelet- programmable packet in response to a determination that copying the portion of the statelet of the network node into the statelet-programmable packet would not exceed the MTU of the statelet-programmable packet; and copying the portion of the statelet of the network node into a new statelet-programmable packet in response to a determination that copying the portion of the statelet of the network node into the statelet-programmable packet would exceed the MTU of the statelet-programmable packet.
11. A method performed by a second network node for initializing a statelet on the second network node, the method comprising: receiving, at the second network node, a statelet-programmable packet that includes at least a portion of a statelet of a first network node; executing a command to initialize the statelet on the second network node using the portion of a statelet of the first network node contained in the statelet-programmable packet.
12. The method according to claim 11, further comprising determining whether the statelet is already present on the second network node; and only initializing the statelet on the second network node in response to a determination that the statelet is not already present on the second network node.
13. The method according to any of claims 11-12, further comprising processing the statelet- programmable packet using the statelet on the second network node.
14. The method according to any of claims 11-13, further comprising removing the command and the portion of the statelet contained in the statelet-programmable packet prior to forwarding the statelet-programmable packet in response to a determination that the statelet is already present on the second network node.
15. A network node comprising network communication means, a data storage means, and a processing means, the network node specially configured to perform any of the preceding method claims.
PCT/US2019/053775 2019-09-30 2019-09-30 Statelet reroute protection WO2021066793A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2019/053775 WO2021066793A1 (en) 2019-09-30 2019-09-30 Statelet reroute protection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/053775 WO2021066793A1 (en) 2019-09-30 2019-09-30 Statelet reroute protection

Publications (1)

Publication Number Publication Date
WO2021066793A1 true WO2021066793A1 (en) 2021-04-08

Family

ID=68296690

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2019/053775 WO2021066793A1 (en) 2019-09-30 2019-09-30 Statelet reroute protection

Country Status (1)

Country Link
WO (1) WO2021066793A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080159288A1 (en) * 2006-12-29 2008-07-03 Lucent Technologies Inc. TRAFFIC ENGINEERING AND FAST PROTECTION USING IPv6 CAPABILITIES
WO2019168965A1 (en) * 2018-03-01 2019-09-06 Huawei Technologies Co., Ltd. Packet-programmable statelets

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080159288A1 (en) * 2006-12-29 2008-07-03 Lucent Technologies Inc. TRAFFIC ENGINEERING AND FAST PROTECTION USING IPv6 CAPABILITIES
WO2019168965A1 (en) * 2018-03-01 2019-09-06 Huawei Technologies Co., Ltd. Packet-programmable statelets

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CLEMM ALEXANDER ET AL: "Network-Programmable Operational Flow Profiling", IEEE COMMUNICATIONS MAGAZINE, vol. 57, no. 7, 1 July 2019 (2019-07-01), pages 72 - 77, XP011735676, ISSN: 0163-6804, DOI: 10.1109/MCOM.2019.1800498 *

Similar Documents

Publication Publication Date Title
US10985942B2 (en) Multicast traffic steering using tree identity in bit indexed explicit replication (BIER)
US11012353B2 (en) Using in-band operations data to signal packet processing departures in a network
US10547538B2 (en) Packet forwarding method and apparatus
EP3155757B1 (en) Active/static path redundancy
US8451717B2 (en) Method and apparatus for rapid switchover from primary to standby multicast trees
US9559970B2 (en) Shortening of service paths in service chains in a communications network
CN107211048B (en) Traffic chaining using source routing
EP1665652B1 (en) Virtual switch for providing a single point of management
US8958285B2 (en) Network disruption prevention when virtual chassis system undergoes splits and merges
CN102291455B (en) Distributed cluster processing system and message processing method thereof
US11212219B1 (en) In-band telemetry packet size optimization
US7751318B2 (en) Method and system for computing AS-disjoint inter-AS traffic engineering-label switched paths (TE-LSPS)
US20130114593A1 (en) Reliable Transportation a Stream of Packets Using Packet Replication
EP3534571B1 (en) Service packet transmission method, and node apparatus
CN113364680A (en) Method and device for issuing and receiving SR (scheduling request) strategy
Papan et al. The new multicast repair (M‐REP) IP fast reroute mechanism
JP4040045B2 (en) Data transfer device
US8675669B2 (en) Policy homomorphic network extension
WO2021066793A1 (en) Statelet reroute protection
US11265320B2 (en) Extended redirect mirror
US11831605B2 (en) Router firewall

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19790957

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19790957

Country of ref document: EP

Kind code of ref document: A1