US20180191640A1 - Action references - Google Patents
Action references Download PDFInfo
- Publication number
- US20180191640A1 US20180191640A1 US15/736,193 US201515736193A US2018191640A1 US 20180191640 A1 US20180191640 A1 US 20180191640A1 US 201515736193 A US201515736193 A US 201515736193A US 2018191640 A1 US2018191640 A1 US 2018191640A1
- Authority
- US
- United States
- Prior art keywords
- action
- data element
- actions
- pointer
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims description 19
- 238000012986 modification Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3063—Pipelined operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
Definitions
- data elements such as network packets may be processed through a pipeline that performs a series of actions on the data element. These actions may modify the contents of the element, create copies of the element, and/or route the data element to various processing nodes prior to delivery and/or output of the data element at a final destination.
- FIG. 1 is a block diagram of an example action reference device
- FIG. 2 is a flowchart of an example of a method for providing action references
- FIG. 3 is a block diagram of an example system for providing action references using flow tables.
- FIG. 4 is a block diagram of an example system for providing action references.
- data elements may be subjected to a series of actions prior to final delivery and/or output.
- packets may be transmitted into a network where the packets may be subjected to various processing, copying, storage, and/or routing actions prior to delivery to a destination (e.g., another computer) connected to the network.
- a destination e.g., another computer
- the number and complexity of the actions may become both complicated and repetitive.
- a series of packets all bound from the same originating computer for a particular destination computer may require backup copies to be stored at a network attached storage, a log message to be generated, an error correction code to be calculated, a routing instruction across a switch to be determined, and a re-encapsulation of each packet to be performed.
- an action set comprising references to executable objects for each of the actions for this flow of packets increases the efficiency of the network by not forcing each packet to be evaluated at each stage of the flow to determine which actions need to be performed. Further, adding a pointer to the action set in a data field of the packet reduces the overhead needs because each packet may be associated with a single pointer that can be copied for each packet instead attaching the entire set of actions each time. The pointer may then be followed so that each packet's actions may be retrieved from the references of the action set and performed at a location that may be ideally situated in terms of resource capacity and/or connectivity to different segments of the network.
- data elements such as packets on an OpenFlow-enabled network may utilize action references.
- the OpenFlow architecture provides an Application Programming Interface (API) that allows for a programmable pipeline of actions that may be performed on packets as they pass through a network node, such as a switch. Each packet accumulates actions to be executed at the end of the pipeline, such as forwarding, packet modifications, quality of service (QOS) controls, counters, logging etc. These actions may be stored as entries in flow tables within the node. As the packet moves through the pipeline, references to actions within the flow tables may be added to an action set for the packet and a pointer to the action set may be associated with the packet. When the packet reaches the end of the pipeline, before exiting the node, the actions may be retrieved via the references in the action set and the actions performed on the packet.
- API Application Programming Interface
- FIG. 1 is a block diagram of an example action reference device 100 consistent with disclosed implementations.
- Action reference device 100 may comprise a processor 110 and a non-transitory machine-readable storage medium 120 .
- Action reference device 100 may comprise a computing device such as a server computer, a desktop computer, a laptop computer, a handheld computing device, a smart phone, a tablet computing device, a mobile phone, a network device (e.g., a switch and/or router), or the like.
- Processor 110 may comprise a central processing unit (CPU), a semiconductor-based microprocessor, a programmable component such as a complex programmable logic device (CPLD) and/or field-programmable gate array (FPGA), or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120 .
- processor 110 may fetch, decode, and execute a plurality of identify action instructions 130 , create action set pointer instructions 132 , and associate action set instructions 134 , follow pointer instructions 136 , and perform action instructions 138 to implement the functionality described in detail below.
- Executable instructions may comprise logic stored in any portion and/or component of machine-readable storage medium 120 and executable by processor 110 .
- the machine-readable storage medium 120 may comprise both volatile and/or nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power.
- the machine-readable storage medium 120 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid-state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, and/or a combination of any two and/or more of these memory components.
- the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and/or magnetic random access memory (MRAM) and other such devices.
- the ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and/or other like memory device.
- PROM programmable read-only memory
- EPROM erasable programmable read-only memory
- EEPROM electrically erasable programmable read-only memory
- Identify action instructions 130 may identify a plurality of actions associated with a data element.
- the data element may comprise, for example, a network packet such as may be associated with an OpenFlow-enabled network.
- the actions may comprise, for example, routing controls, logging instructions, and/or modification instructions (e.g., re-encoding for different network protocols and/or modification of different fields within the data element).
- the data element may be evaluated to identify which, if any, actions need to be performed with respect to the data element.
- the action may be performed by an executable object stored in machine-readable storage medium 120 and executed by processor 110 .
- the actions may relate to a type of the data element, an identifier of the data element, and/or a policy applicable to the data element.
- an action may comprise modifying the packet from a UDP protocol packet to a TCP protocol packet based on a requirement of a destination network for the packet.
- a network packet may be associated with a routing action, such as directing the packet to a particular subnet of a network via a network port associated with device 100 .
- Actions may be identified for intended data elements such as network packets by evaluating certain criteria. For example, criteria may comprise packets associated with a TCP connection, packets from a particular MAC or IP address, packets received from or destined for a particular port, and/or packets with a certain identifier, such as a Virtual Local Area Network (VLAN) tag.
- VLAN Virtual Local Area Network
- Create action set pointer instructions 132 may create a pointer to an action set comprising a list of the plurality of actions.
- the actions in the action set may comprise, for example, a linked list of references to executable objects associated with each of the actions.
- the packet For a network packet, for example, the packet may be processed by a pipeline in device 100 wherein the packet is checked against a series of flow tables.
- the flow tables may each comprise a plurality of possible actions and criteria for applying those actions to packets.
- an action may be added to the list of actions to be performed on the packet at the end of the pipeline. Adding the action to the set may comprise adding a reference associated with the entry in the flow table for that action to a linked list structure.
- a last reference of the linked list of references may comprise a second pointer to a second action set.
- a first action set may comprise a set of logging actions applied to all data elements processed by device 100 .
- a second action set may comprise a set of routing actions associated with a VLAN identifier of the packet.
- Associate action set instructions 134 may associate the pointer to the action set with the data element.
- a table may be used to store an identifier for the data element and a pointer to the action set in a database entry.
- a field of the data element may be used to hold the pointer to the action set.
- associate action set instructions 134 may associate the reference to the action set with a plurality of other data elements. For example, a pointer to a set of logging actions may be associated with each element processed by device 100 , such as each packet entering a network switch. The same pointer may be followed in order to execute the same set of actions each time.
- follow pointer instructions 136 may follow the pointer to retrieve the plurality of actions associated with the data element according to the action set.
- the pointer may, for example, identify a memory location for a reference to the first action of the action set.
- follow pointer instructions 136 may further comprise instructions to determine whether the data element is ready for processing with respect to the plurality of actions before performing each of the plurality of actions on the data element. For example, follow pointer instructions 136 may determine whether any more actions are associated with a pipeline for a network packet, such as by determining whether any additional flow tables need to be checked for actions to be applied to the packet.
- Perform action instructions 138 may perform each of the plurality of actions on the data element.
- the reference to the first action retrieved by follow pointer instructions 136 may be used to retrieve an executable object comprising instructions for performing the first action.
- a link referencing a second action may be associated with the first action, and an executable object for the second action may be similarly retrieved and executed to perform the second action on the data element.
- FIG. 2 is a flowchart of a method 200 for action reference consistent with disclosed implementations. Although execution of method 200 is described below with reference to the components of action reference device 100 , other suitable components for execution of method 200 may be used.
- Method 200 may begin in stage 205 and proceed to stage 210 where device 100 may receive a data element.
- a network node such as a switch may receive a network packet on an inbound port and/or a storage service may receive data to be stored to a storage device.
- Method 200 may then advance to stage 215 where device 100 may retrieve an action to be performed on the data element.
- a network packet may be associated with a flow in a network node, wherein the flow comprises a pipeline of processing actions to be applied to the packet.
- the flow may be identified, for example, according to a source or destination port, an identifier for the packet (e.g., a VLAN tag), a protocol type associated with the packet (e.g., UDP, TCP, etc.), and/or a network address associated with the packet (e.g., MAC address and/or IP address associated with a source or destination of the packet).
- an identifier for the packet e.g., a VLAN tag
- a protocol type associated with the packet e.g., UDP, TCP, etc.
- a network address associated with the packet e.g., MAC address and/or IP address associated with a source or destination of the packet.
- identify action instructions 130 may identify a plurality of actions associated with a data element.
- the data element may comprise, for example, a network packet such as may be associated with an OpenFlow-enabled network.
- the actions may comprise, for example, routing controls, logging instructions, and/or modification instructions (e.g., re-encoding for different network protocols and/or modification of different fields within the data element).
- the data element may be evaluated to identify which, if any, actions need to be performed with respect to the data element.
- the action may be performed by an executable object stored in machine-readable storage medium 120 and executed by processor 110 .
- the actions may relate to a type of the data element, an identifier of the data element, and/or a policy applicable to the data element.
- an action may comprise modifying the packet from a UDP protocol packet to a TCP protocol packet based on a requirement of a destination network for the packet.
- a network packet may be associated with a routing action, such as directing the packet to a particular subnet of a network via a network port associated with device 100 .
- Actions may be identified for intended data elements such as network packets by evaluating certain criteria. For example, criteria may comprise packets associated with a TCP connection, packets from a particular MAC or IP address, packets received from or destined for a particular port, and/or packets with a certain identifier, such as a Virtual Local Area Network (VLAN) tag.
- VLAN Virtual Local Area Network
- Method 200 may then advance to stage 220 where device 100 may add a reference to the action to an action set.
- the reference to the action may comprise one of a plurality of references to a section of a lookup table, wherein each of the plurality of references is associated with an available action.
- Each action that may be performed on a data element processed by device 100 may comprise an available action listed in the lookup table.
- Method 200 may then advance to stage 225 where device 100 may associate a pointer to the action set with the data element.
- create action set pointer instructions 132 may create a pointer to an action set comprising a list of the plurality of actions.
- the actions in the action set may comprise, for example, a linked list of references to executable objects associated with each of the actions.
- the packet For a network packet, for example, the packet may be processed by a pipeline in device 100 wherein the packet is checked against a series of flow tables.
- the flow tables may each comprise a plurality of possible actions and criteria for applying those actions to packets.
- an action may be added to the list of actions to be performed on the packet at the end of the pipeline.
- Adding the action to the set may comprise adding a reference associated with the entry in the flow table for that action to a linked list structure.
- a last reference of the linked list of references may comprise a second pointer to a second action set.
- a first action set may comprise a set of logging actions applied to all data elements processed by device 100 .
- a second action set may comprise a set of routing actions associated with a VLAN identifier of the packet.
- Associate action set instructions 134 may associate the pointer to the action set with the data element.
- a table may be used to store an identifier for the data element and a pointer to the action set in a database entry.
- a field of the data element may be used to hold the pointer to the action set.
- associate action set instructions 134 may associate the reference to the action set with a plurality of other data elements. For example, a pointer to a set of logging actions may be associated with each element processed by device 100 , such as each packet entering a network switch. The same pointer may be followed in order to execute the same set of actions each time.
- Method 200 may then advance to stage 230 where device 100 may determine whether any further actions are associated with the data element.
- the data element may have reached the end of a processing pipeline and be ready for an output, storage, or delivery to a destination.
- all criteria may have been evaluated such that no further actions need to be added to the action set(s) for the data element.
- method 200 may return to stage 220 to add references to those actions to the action set. Otherwise, method 200 may advance to stage 235 where device 100 may perform the action on the data element. For example, device 100 may retrieve the action set by following the pointer to the action set and execute an object at the reference to the action in the action set. Perform action instructions 138 may perform each of the plurality of actions on the data element. The reference to the first action retrieved by follow pointer instructions 136 may be used to retrieve an executable object comprising instructions for performing the first action. In some implementations, a link referencing a second action may be associated with the first action, and an executable object for the second action may be similarly retrieved and executed to perform the second action on the data element.
- Method 200 may then end at stage 250 .
- FIG. 3 is a block diagram of an example system 300 for providing action references using flow tables.
- System 300 may comprise a network node 305 , such as a switch, that may receive a data element 310 , such as a network packet.
- Data element 310 may enter network node 305 on an inbound port 312 and into a processing pipeline for a flow comprising a plurality of flow tables 315 (A)-(C).
- Each flow tables 315 (A)-(C) may comprise an action and/or a set of actions to be performed if data element 310 matches criteria associated with flow table 315 (A)-(C).
- Actions to be performed on data element 310 may be stored in an element table 325 comprising a plurality of action sets 330 (A)-(B) stored as pointers to a list of actions 340 (A)-(D) stored as entries in an action lookup table 335 .
- a packet engine 320 may retrieve and perform the actions. Retrieval may comprise, for example, following a pointer to action set 330 (A) stored in a data field of data element 310 (A) to a reference address for action 340 (A). Packet engine 320 may then dereference the address for action 340 (A) to retrieve an executable object that provides instructions to be performed on data element 310 , such as creating a copy of a data payload for a log entry.
- Packet engine 320 may follow a linked list of references in action set 330 (A) to retrieve a reference address to the next action, such as action 340 (B), and similarly dereference the address and retrieve the executable object for action 340 (B).
- the linked list of actions may comprise a pointer to another action set, such as action set 330 (B), which may be similarly followed and the action references contained therein processed as described above.
- Packet engine 320 may comprise, for example, any combination of hardware and programming to implement the functionalities described.
- the programming for the engines may be processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processing resource to execute those instructions.
- the processing pipeline described above may be implemented in a System on Chip (SoC) comprising a processor, an application-specific integrated circuit (ASIC) and/or a memory.
- SoC System on Chip
- ASIC application-specific integrated circuit
- FIG. 4 is a block diagram of an example system 400 for providing action references comprising a computing device 410 .
- Computing device 410 may comprise, for example, a general and/or special purpose computer, server, mainframe, desktop, laptop, tablet, smart phone, game console, and/or any other system capable of providing computing capability consistent with providing the implementations described herein.
- Computing device 410 may comprise any combination of hardware and programming to implement the functionalities of the respective components. In examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, programming may comprise processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processing resource to execute those instructions.
- Device 410 may comprise a flow engine 415 comprising a flow table 420 , an action engine 425 comprising a lookup table 430 comprising a plurality of action references 435 (A)-(C), and a packet engine 440 comprising an action set table 445 comprising a plurality of action sets 450 (A)-(B) to be performed on a data packet 455 .
- Flow engine 415 may create an entry in flow table 420 comprising a packet criteria and at least one action and determine if a data element 455 matches the packet criteria. In response to determining that the data element matches the packet criteria, flow engine 415 may associate a pointer to an action set 450 (A) comprising a reference 420 (A) to the at least one action with the data element 455 in an action set table 445 .
- Flow engine 415 may comprise identify action instructions 130 that may identify a plurality of actions associated with a data element 455 .
- the data element 455 may comprise, for example, a network packet such as may be associated with an OpenFlow-enabled network.
- the actions may comprise, for example, routing controls, logging instructions, and/or modification instructions (e.g., re-encoding for different network protocols and/or modification of different fields within the data element).
- the data element 455 may be evaluated to identify which, if any, actions need to be performed with respect to the data element 455 .
- the action may be performed by an executable object stored in a machine-readable storage medium and executed by a processor.
- the actions may, for example, relate to a type of the data element 455 , an identifier of the data element 455 , and/or a policy applicable to the data element 455 .
- an action may comprise modifying the packet from a UDP protocol packet to a TCP protocol packet based on a requirement of a destination network for the packet.
- a network packet may be associated with a routing action, such as directing the packet to a particular subnet of a network via a network port associated with device 100 .
- Actions may be identified for intended data elements such as network packets by evaluating certain criteria. For example, criteria may comprise packets associated with a TCP connection, packets from a particular MAC or IP address, packets received from or destined for a particular port, and/or packets with a certain identifier, such as a Virtual Local Area Network (VLAN) tag.
- VLAN Virtual Local Area Network
- Flow engine 415 may comprise create action set pointer instructions 132 that may create a pointer to an action set 450 (A) comprising a list of the plurality of actions.
- the actions in the action set may comprise, for example, a linked list of references 420 (A)-(C) to executable objects associated with each of the actions.
- the packet For a network packet, for example, the packet may be processed by a pipeline in device 410 wherein the packet is checked against a series of flow tables.
- the flow table(s) 420 may each comprise a plurality of possible actions and criteria for applying those actions to packets.
- an action may be added to the list of actions to be performed on the packet at the end of the pipeline.
- Adding the action to the action set 450 (A) may comprise adding a reference 420 (A) associated with the entry in the flow table for that action to a linked list structure.
- a last reference of the linked list of references may comprise a second pointer to a second action set 450 (B).
- a first action set may comprise a set of logging actions applied to all data elements processed by device 100 .
- a second action set may comprise a set of routing actions associated with a VLAN identifier of the packet.
- Flow engine 415 may comprise associate action set instructions 134 that may associate the pointer to the action set 450 (A) with the data element 455 .
- action set table 445 may be used to store an identifier for the data element 455 and a pointer to the action set 450 (A) in a database entry.
- a field of the data element 455 may be used to hold the pointer to the action set 450 (A).
- associate action set instructions 134 may associate the pointer to the action set 450 (A) with a plurality of other data elements. For example, a pointer to a set of logging actions may be associated with each element processed by device 410 , such as each packet entering a network switch. The same pointer may be followed in order to execute the same set of actions each time.
- Action engine 425 may provide lookup table 430 comprising a plurality action references 420 (A)-(C), each associated with an executable object and retrieve the executable object associated with a received reference of the plurality of references 420 (A)-(C).
- packet engine 440 may retrieve action reference 420 (A) from action set 450 (A) and provide it to action engine 425 .
- Action engine 425 may dereference action reference 420 (A) to locate a corresponding executable object and provide that object back to packet engine 440 .
- Packet engine 440 may determine whether any further actions are associated with the data element 455 , and if not, perform the at least one action via a corresponding executable object for the reference 420 (A) to the at least one action in the action set 450 (A).
- Packet engine 440 may comprise follow pointer instructions 136 that may follow the pointer to retrieve the plurality of actions associated with the data element 455 according to the action set 450 (A).
- the pointer may, for example, identify a memory location for a reference 420 (A) to the first action of the action set 450 (A) and/or a memory location for the action set 450 (A) in the action set table 445 .
- follow pointer instructions 136 may further comprise instructions to determine whether the data element 455 is ready for processing with respect to the plurality of actions before performing each of the plurality of actions on the data element 455 .
- follow pointer instructions 136 may determine whether any more actions are associated with a pipeline for a network packet, such as by determining whether any additional flow tables 420 need to be checked for actions to be applied to the packet.
- Packet engine 440 may comprise perform action instructions 138 that may perform each of the plurality of actions on the data element 455 .
- the reference 420 (A) to the first action retrieved by follow pointer instructions 136 may be used to retrieve an executable object comprising instructions for performing the first action.
- a link referencing a second action 420 (B) may be associated with the first action in the action set 450 (A), and an executable object for the second action may be similarly retrieved and executed to perform the second action on the data element 455 .
- the disclosed examples may include systems, devices, computer-readable storage media, and methods for action reference. For purposes of explanation, certain examples are described with reference to the components illustrated in the Figures. The functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may co-exist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
- In some situations, data elements such as network packets may be processed through a pipeline that performs a series of actions on the data element. These actions may modify the contents of the element, create copies of the element, and/or route the data element to various processing nodes prior to delivery and/or output of the data element at a final destination.
- In the accompanying drawings, like numerals refer to like components or blocks. The following detailed description references the drawings, wherein:
-
FIG. 1 is a block diagram of an example action reference device; -
FIG. 2 is a flowchart of an example of a method for providing action references; -
FIG. 3 is a block diagram of an example system for providing action references using flow tables; and -
FIG. 4 is a block diagram of an example system for providing action references. - As described above, data elements may be subjected to a series of actions prior to final delivery and/or output. For example, packets may be transmitted into a network where the packets may be subjected to various processing, copying, storage, and/or routing actions prior to delivery to a destination (e.g., another computer) connected to the network. In some situations, the number and complexity of the actions may become both complicated and repetitive. For example, a series of packets all bound from the same originating computer for a particular destination computer may require backup copies to be stored at a network attached storage, a log message to be generated, an error correction code to be calculated, a routing instruction across a switch to be determined, and a re-encapsulation of each packet to be performed. Creation of an action set comprising references to executable objects for each of the actions for this flow of packets increases the efficiency of the network by not forcing each packet to be evaluated at each stage of the flow to determine which actions need to be performed. Further, adding a pointer to the action set in a data field of the packet reduces the overhead needs because each packet may be associated with a single pointer that can be copied for each packet instead attaching the entire set of actions each time. The pointer may then be followed so that each packet's actions may be retrieved from the references of the action set and performed at a location that may be ideally situated in terms of resource capacity and/or connectivity to different segments of the network.
- In some implementations, data elements such as packets on an OpenFlow-enabled network may utilize action references. The OpenFlow architecture provides an Application Programming Interface (API) that allows for a programmable pipeline of actions that may be performed on packets as they pass through a network node, such as a switch. Each packet accumulates actions to be executed at the end of the pipeline, such as forwarding, packet modifications, quality of service (QOS) controls, counters, logging etc. These actions may be stored as entries in flow tables within the node. As the packet moves through the pipeline, references to actions within the flow tables may be added to an action set for the packet and a pointer to the action set may be associated with the packet. When the packet reaches the end of the pipeline, before exiting the node, the actions may be retrieved via the references in the action set and the actions performed on the packet.
- Referring now to the drawings,
FIG. 1 is a block diagram of an exampleaction reference device 100 consistent with disclosed implementations.Action reference device 100 may comprise aprocessor 110 and a non-transitory machine-readable storage medium 120.Action reference device 100 may comprise a computing device such as a server computer, a desktop computer, a laptop computer, a handheld computing device, a smart phone, a tablet computing device, a mobile phone, a network device (e.g., a switch and/or router), or the like. -
Processor 110 may comprise a central processing unit (CPU), a semiconductor-based microprocessor, a programmable component such as a complex programmable logic device (CPLD) and/or field-programmable gate array (FPGA), or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120. In particular,processor 110 may fetch, decode, and execute a plurality of identifyaction instructions 130, create actionset pointer instructions 132, and associateaction set instructions 134, followpointer instructions 136, and performaction instructions 138 to implement the functionality described in detail below. - Executable instructions may comprise logic stored in any portion and/or component of machine-
readable storage medium 120 and executable byprocessor 110. The machine-readable storage medium 120 may comprise both volatile and/or nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power. - The machine-
readable storage medium 120 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid-state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, and/or a combination of any two and/or more of these memory components. In addition, the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and/or magnetic random access memory (MRAM) and other such devices. The ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and/or other like memory device. - Identify
action instructions 130 may identify a plurality of actions associated with a data element. The data element may comprise, for example, a network packet such as may be associated with an OpenFlow-enabled network. The actions may comprise, for example, routing controls, logging instructions, and/or modification instructions (e.g., re-encoding for different network protocols and/or modification of different fields within the data element). - The data element may be evaluated to identify which, if any, actions need to be performed with respect to the data element. The action may be performed by an executable object stored in machine-
readable storage medium 120 and executed byprocessor 110. The actions may relate to a type of the data element, an identifier of the data element, and/or a policy applicable to the data element. - For a network packet, for example, an action may comprise modifying the packet from a UDP protocol packet to a TCP protocol packet based on a requirement of a destination network for the packet. Similarly, a network packet may be associated with a routing action, such as directing the packet to a particular subnet of a network via a network port associated with
device 100. Actions may be identified for intended data elements such as network packets by evaluating certain criteria. For example, criteria may comprise packets associated with a TCP connection, packets from a particular MAC or IP address, packets received from or destined for a particular port, and/or packets with a certain identifier, such as a Virtual Local Area Network (VLAN) tag. - Create action
set pointer instructions 132 may create a pointer to an action set comprising a list of the plurality of actions. The actions in the action set may comprise, for example, a linked list of references to executable objects associated with each of the actions. For a network packet, for example, the packet may be processed by a pipeline indevice 100 wherein the packet is checked against a series of flow tables. The flow tables may each comprise a plurality of possible actions and criteria for applying those actions to packets. As the packet is evaluated at each flow table in the pipeline, an action may be added to the list of actions to be performed on the packet at the end of the pipeline. Adding the action to the set may comprise adding a reference associated with the entry in the flow table for that action to a linked list structure. - In some implementations, a last reference of the linked list of references may comprise a second pointer to a second action set. For example, a first action set may comprise a set of logging actions applied to all data elements processed by
device 100. A second action set may comprise a set of routing actions associated with a VLAN identifier of the packet. By adding the pointer to the second action set at the end of the list of actions of the first action set, the two sets may both be associated with the same data element without a second pointer to the second action set having to be added to a field in the data element. - Associate action set
instructions 134 may associate the pointer to the action set with the data element. For example, a table may be used to store an identifier for the data element and a pointer to the action set in a database entry. For another example, a field of the data element may be used to hold the pointer to the action set. - In some implementations, associate action set
instructions 134 may associate the reference to the action set with a plurality of other data elements. For example, a pointer to a set of logging actions may be associated with each element processed bydevice 100, such as each packet entering a network switch. The same pointer may be followed in order to execute the same set of actions each time. - Follow
pointer instructions 136 may follow the pointer to retrieve the plurality of actions associated with the data element according to the action set. The pointer may, for example, identify a memory location for a reference to the first action of the action set. In some implementations, followpointer instructions 136 may further comprise instructions to determine whether the data element is ready for processing with respect to the plurality of actions before performing each of the plurality of actions on the data element. For example, followpointer instructions 136 may determine whether any more actions are associated with a pipeline for a network packet, such as by determining whether any additional flow tables need to be checked for actions to be applied to the packet. - Perform
action instructions 138 may perform each of the plurality of actions on the data element. The reference to the first action retrieved byfollow pointer instructions 136 may be used to retrieve an executable object comprising instructions for performing the first action. In some implementations, a link referencing a second action may be associated with the first action, and an executable object for the second action may be similarly retrieved and executed to perform the second action on the data element. -
FIG. 2 is a flowchart of amethod 200 for action reference consistent with disclosed implementations. Although execution ofmethod 200 is described below with reference to the components ofaction reference device 100, other suitable components for execution ofmethod 200 may be used. -
Method 200 may begin instage 205 and proceed to stage 210 wheredevice 100 may receive a data element. For example, a network node such as a switch may receive a network packet on an inbound port and/or a storage service may receive data to be stored to a storage device. -
Method 200 may then advance to stage 215 wheredevice 100 may retrieve an action to be performed on the data element. For example, a network packet may be associated with a flow in a network node, wherein the flow comprises a pipeline of processing actions to be applied to the packet. The flow may be identified, for example, according to a source or destination port, an identifier for the packet (e.g., a VLAN tag), a protocol type associated with the packet (e.g., UDP, TCP, etc.), and/or a network address associated with the packet (e.g., MAC address and/or IP address associated with a source or destination of the packet). - For example, identify
action instructions 130 may identify a plurality of actions associated with a data element. The data element may comprise, for example, a network packet such as may be associated with an OpenFlow-enabled network. The actions may comprise, for example, routing controls, logging instructions, and/or modification instructions (e.g., re-encoding for different network protocols and/or modification of different fields within the data element). - The data element may be evaluated to identify which, if any, actions need to be performed with respect to the data element. The action may be performed by an executable object stored in machine-
readable storage medium 120 and executed byprocessor 110. The actions may relate to a type of the data element, an identifier of the data element, and/or a policy applicable to the data element. - For a network packet, for example, an action may comprise modifying the packet from a UDP protocol packet to a TCP protocol packet based on a requirement of a destination network for the packet. Similarly, a network packet may be associated with a routing action, such as directing the packet to a particular subnet of a network via a network port associated with
device 100. Actions may be identified for intended data elements such as network packets by evaluating certain criteria. For example, criteria may comprise packets associated with a TCP connection, packets from a particular MAC or IP address, packets received from or destined for a particular port, and/or packets with a certain identifier, such as a Virtual Local Area Network (VLAN) tag. -
Method 200 may then advance to stage 220 wheredevice 100 may add a reference to the action to an action set. For example, the reference to the action may comprise one of a plurality of references to a section of a lookup table, wherein each of the plurality of references is associated with an available action. Each action that may be performed on a data element processed bydevice 100 may comprise an available action listed in the lookup table. -
Method 200 may then advance to stage 225 wheredevice 100 may associate a pointer to the action set with the data element. For example, create action setpointer instructions 132 may create a pointer to an action set comprising a list of the plurality of actions. The actions in the action set may comprise, for example, a linked list of references to executable objects associated with each of the actions. For a network packet, for example, the packet may be processed by a pipeline indevice 100 wherein the packet is checked against a series of flow tables. The flow tables may each comprise a plurality of possible actions and criteria for applying those actions to packets. As the packet is evaluated at each flow table in the pipeline, an action may be added to the list of actions to be performed on the packet at the end of the pipeline. Adding the action to the set may comprise adding a reference associated with the entry in the flow table for that action to a linked list structure. - In some implementations, a last reference of the linked list of references may comprise a second pointer to a second action set. For example, a first action set may comprise a set of logging actions applied to all data elements processed by
device 100. A second action set may comprise a set of routing actions associated with a VLAN identifier of the packet. By adding the pointer to the second action set at the end of the list of actions of the first action set, the two sets may both be associated with the same data element without a second pointer to the second action set having to be added to a field in the data element. - Associate action set
instructions 134 may associate the pointer to the action set with the data element. For example, a table may be used to store an identifier for the data element and a pointer to the action set in a database entry. For another example, a field of the data element may be used to hold the pointer to the action set. - In some implementations, associate action set
instructions 134 may associate the reference to the action set with a plurality of other data elements. For example, a pointer to a set of logging actions may be associated with each element processed bydevice 100, such as each packet entering a network switch. The same pointer may be followed in order to execute the same set of actions each time. -
Method 200 may then advance to stage 230 wheredevice 100 may determine whether any further actions are associated with the data element. For example, the data element may have reached the end of a processing pipeline and be ready for an output, storage, or delivery to a destination. For another example, all criteria may have been evaluated such that no further actions need to be added to the action set(s) for the data element. - If further actions are determined to be associated with the data element at
stage 230,method 200 may return tostage 220 to add references to those actions to the action set. Otherwise,method 200 may advance to stage 235 wheredevice 100 may perform the action on the data element. For example,device 100 may retrieve the action set by following the pointer to the action set and execute an object at the reference to the action in the action set. Performaction instructions 138 may perform each of the plurality of actions on the data element. The reference to the first action retrieved byfollow pointer instructions 136 may be used to retrieve an executable object comprising instructions for performing the first action. In some implementations, a link referencing a second action may be associated with the first action, and an executable object for the second action may be similarly retrieved and executed to perform the second action on the data element. -
Method 200 may then end atstage 250. -
FIG. 3 is a block diagram of anexample system 300 for providing action references using flow tables.System 300 may comprise anetwork node 305, such as a switch, that may receive adata element 310, such as a network packet.Data element 310 may enternetwork node 305 on aninbound port 312 and into a processing pipeline for a flow comprising a plurality of flow tables 315(A)-(C). Each flow tables 315(A)-(C) may comprise an action and/or a set of actions to be performed ifdata element 310 matches criteria associated with flow table 315(A)-(C). Actions to be performed ondata element 310 may be stored in an element table 325 comprising a plurality of action sets 330(A)-(B) stored as pointers to a list of actions 340(A)-(D) stored as entries in an action lookup table 335. - Once the packet has been compared to criteria at each of the flow tables 315(A)-(C) of the processing pipeline, a
packet engine 320 may retrieve and perform the actions. Retrieval may comprise, for example, following a pointer to action set 330(A) stored in a data field of data element 310(A) to a reference address for action 340(A).Packet engine 320 may then dereference the address for action 340(A) to retrieve an executable object that provides instructions to be performed ondata element 310, such as creating a copy of a data payload for a log entry.Packet engine 320 may follow a linked list of references in action set 330(A) to retrieve a reference address to the next action, such as action 340(B), and similarly dereference the address and retrieve the executable object for action 340(B). The linked list of actions may comprise a pointer to another action set, such as action set 330(B), which may be similarly followed and the action references contained therein processed as described above. Once all of the actions of action sets 330(A)-(B) have been performed with respect todata element 310, the packet may be output to anoutbound port 345 connected to anetwork 350 for delivery toward its destination. -
Packet engine 320 may comprise, for example, any combination of hardware and programming to implement the functionalities described. In some implementations, the programming for the engines may be processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processing resource to execute those instructions. For example, the processing pipeline described above may be implemented in a System on Chip (SoC) comprising a processor, an application-specific integrated circuit (ASIC) and/or a memory. -
FIG. 4 is a block diagram of anexample system 400 for providing action references comprising acomputing device 410.Computing device 410 may comprise, for example, a general and/or special purpose computer, server, mainframe, desktop, laptop, tablet, smart phone, game console, and/or any other system capable of providing computing capability consistent with providing the implementations described herein.Computing device 410 may comprise any combination of hardware and programming to implement the functionalities of the respective components. In examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, programming may comprise processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processing resource to execute those instructions. -
Device 410 may comprise aflow engine 415 comprising a flow table 420, anaction engine 425 comprising a lookup table 430 comprising a plurality of action references 435(A)-(C), and apacket engine 440 comprising an action set table 445 comprising a plurality of action sets 450(A)-(B) to be performed on adata packet 455. -
Flow engine 415 may create an entry in flow table 420 comprising a packet criteria and at least one action and determine if adata element 455 matches the packet criteria. In response to determining that the data element matches the packet criteria,flow engine 415 may associate a pointer to an action set 450(A) comprising a reference 420(A) to the at least one action with thedata element 455 in an action set table 445. -
Flow engine 415 may comprise identifyaction instructions 130 that may identify a plurality of actions associated with adata element 455. Thedata element 455 may comprise, for example, a network packet such as may be associated with an OpenFlow-enabled network. The actions may comprise, for example, routing controls, logging instructions, and/or modification instructions (e.g., re-encoding for different network protocols and/or modification of different fields within the data element). - The
data element 455 may be evaluated to identify which, if any, actions need to be performed with respect to thedata element 455. The action may be performed by an executable object stored in a machine-readable storage medium and executed by a processor. The actions may, for example, relate to a type of thedata element 455, an identifier of thedata element 455, and/or a policy applicable to thedata element 455. - For a network packet, for example, an action may comprise modifying the packet from a UDP protocol packet to a TCP protocol packet based on a requirement of a destination network for the packet. Similarly, a network packet may be associated with a routing action, such as directing the packet to a particular subnet of a network via a network port associated with
device 100. Actions may be identified for intended data elements such as network packets by evaluating certain criteria. For example, criteria may comprise packets associated with a TCP connection, packets from a particular MAC or IP address, packets received from or destined for a particular port, and/or packets with a certain identifier, such as a Virtual Local Area Network (VLAN) tag. -
Flow engine 415 may comprise create action setpointer instructions 132 that may create a pointer to an action set 450(A) comprising a list of the plurality of actions. The actions in the action set may comprise, for example, a linked list of references 420(A)-(C) to executable objects associated with each of the actions. For a network packet, for example, the packet may be processed by a pipeline indevice 410 wherein the packet is checked against a series of flow tables. The flow table(s) 420 may each comprise a plurality of possible actions and criteria for applying those actions to packets. As the packet is evaluated at each flow table in the pipeline, an action may be added to the list of actions to be performed on the packet at the end of the pipeline. Adding the action to the action set 450(A) may comprise adding a reference 420(A) associated with the entry in the flow table for that action to a linked list structure. - In some implementations, a last reference of the linked list of references may comprise a second pointer to a second action set 450(B). For example, a first action set may comprise a set of logging actions applied to all data elements processed by
device 100. A second action set may comprise a set of routing actions associated with a VLAN identifier of the packet. By adding the pointer to the second action set at the end of the list of actions of the first action set, the two sets may both be associated with thesame data element 455 without a second pointer to the second action set having to be added to a field in the data element. -
Flow engine 415 may comprise associate action setinstructions 134 that may associate the pointer to the action set 450(A) with thedata element 455. For example, action set table 445 may be used to store an identifier for thedata element 455 and a pointer to the action set 450(A) in a database entry. For another example, a field of thedata element 455 may be used to hold the pointer to the action set 450(A). - In some implementations, associate action set
instructions 134 may associate the pointer to the action set 450(A) with a plurality of other data elements. For example, a pointer to a set of logging actions may be associated with each element processed bydevice 410, such as each packet entering a network switch. The same pointer may be followed in order to execute the same set of actions each time. -
Action engine 425 may provide lookup table 430 comprising a plurality action references 420(A)-(C), each associated with an executable object and retrieve the executable object associated with a received reference of the plurality of references 420(A)-(C). For example,packet engine 440 may retrieve action reference 420(A) from action set 450(A) and provide it toaction engine 425.Action engine 425 may dereference action reference 420(A) to locate a corresponding executable object and provide that object back topacket engine 440. -
Packet engine 440 may determine whether any further actions are associated with thedata element 455, and if not, perform the at least one action via a corresponding executable object for the reference 420(A) to the at least one action in the action set 450(A). -
Packet engine 440 may comprise followpointer instructions 136 that may follow the pointer to retrieve the plurality of actions associated with thedata element 455 according to the action set 450(A). The pointer may, for example, identify a memory location for a reference 420(A) to the first action of the action set 450(A) and/or a memory location for the action set 450(A) in the action set table 445. In some implementations, followpointer instructions 136 may further comprise instructions to determine whether thedata element 455 is ready for processing with respect to the plurality of actions before performing each of the plurality of actions on thedata element 455. For example, followpointer instructions 136 may determine whether any more actions are associated with a pipeline for a network packet, such as by determining whether any additional flow tables 420 need to be checked for actions to be applied to the packet. -
Packet engine 440 may comprise performaction instructions 138 that may perform each of the plurality of actions on thedata element 455. The reference 420(A) to the first action retrieved byfollow pointer instructions 136 may be used to retrieve an executable object comprising instructions for performing the first action. In some implementations, a link referencing a second action 420(B) may be associated with the first action in the action set 450(A), and an executable object for the second action may be similarly retrieved and executed to perform the second action on thedata element 455. - The disclosed examples may include systems, devices, computer-readable storage media, and methods for action reference. For purposes of explanation, certain examples are described with reference to the components illustrated in the Figures. The functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may co-exist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.
- Moreover, as used in the specification and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context indicates otherwise. Additionally, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. Instead, these terms are only used to distinguish one element from another.
- Further, the sequence of operations described in connection with the Figures are examples and are not intended to be limiting. Additional or fewer operations or combinations of operations may be used or may vary without departing from the scope of the disclosed examples. Thus, the present disclosure merely sets forth possible examples of implementations, and many variations and modifications may be made to the described examples. All such modifications and variations are intended to be included within the scope of this disclosure and protected by the following claims.
Claims (15)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2015/038418 WO2017003436A1 (en) | 2015-06-30 | 2015-06-30 | Action references |
Publications (1)
Publication Number | Publication Date |
---|---|
US20180191640A1 true US20180191640A1 (en) | 2018-07-05 |
Family
ID=57608832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/736,193 Abandoned US20180191640A1 (en) | 2015-06-30 | 2015-06-30 | Action references |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180191640A1 (en) |
WO (1) | WO2017003436A1 (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170093987A1 (en) * | 2015-09-24 | 2017-03-30 | Barefoot Networks, Inc. | Data-plane stateful processing units in packet processing pipelines |
US10303387B2 (en) | 2015-02-23 | 2019-05-28 | Barefoot Networks, Inc. | Coding scheme for indirect addressing of multiple action memories |
US10430095B1 (en) | 2015-01-27 | 2019-10-01 | Barefoot Networks, Inc. | Dynamic memory reallocation for match-action packet processing |
US10594630B1 (en) | 2017-09-28 | 2020-03-17 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
US10819633B2 (en) | 2015-09-24 | 2020-10-27 | Barefoot Networks, Inc. | Data-plane stateful processing units in packet processing pipelines |
US10826840B1 (en) | 2017-07-23 | 2020-11-03 | Barefoot Networks, Inc. | Multiple copies of stateful tables |
US11381541B2 (en) * | 2020-02-07 | 2022-07-05 | KnowBe4, Inc. | Systems and methods for communication with a third-party email client plug-in |
US11388053B2 (en) | 2014-12-27 | 2022-07-12 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US11411870B2 (en) | 2015-08-26 | 2022-08-09 | Barefoot Networks, Inc. | Packet header field extraction |
US11425058B2 (en) | 2017-04-23 | 2022-08-23 | Barefoot Networks, Inc. | Generation of descriptive data for packet fields |
US11463385B2 (en) | 2017-01-31 | 2022-10-04 | Barefoot Networks, Inc. | Messaging between remote controller and forwarding element |
US11677851B2 (en) | 2015-12-22 | 2023-06-13 | Intel Corporation | Accelerated network packet processing |
US12375588B2 (en) | 2022-07-08 | 2025-07-29 | Barefoot Networks, Inc. | Generation of descriptive data for packet fields |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262294A1 (en) * | 2004-05-05 | 2005-11-24 | Nabil Bitar | Method for policy matching using a hybrid TCAM and memory-based scheme |
US20120246400A1 (en) * | 2011-03-22 | 2012-09-27 | Texas Instruments Incorporated | Method and apparatus for packet switiching |
US20140241359A1 (en) * | 2013-02-28 | 2014-08-28 | Texas Instruments Incorporated | Packet processing vliw action unit with or-multi-ported instruction memory |
US20140328180A1 (en) * | 2012-11-08 | 2014-11-06 | Texas Instruments Incorporated | Structure for implementing openflow all group buckets using egress flow table entries |
US20150023147A1 (en) * | 2013-07-17 | 2015-01-22 | Kt Corporation | Methods for managing transaction in software defined network |
US8964742B1 (en) * | 2010-07-28 | 2015-02-24 | Marvell Israel (M.I.S.L) Ltd. | Linked list profiling and updating |
US20160182378A1 (en) * | 2014-12-18 | 2016-06-23 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for load balancing in a software-defined networking (sdn) system upon server reconfiguration |
US20160197831A1 (en) * | 2013-08-16 | 2016-07-07 | Interdigital Patent Holdings, Inc. | Method and apparatus for name resolution in software defined networking |
US20160246507A1 (en) * | 2015-02-23 | 2016-08-25 | Barefoot Networks, Inc. | Coding Scheme for Identifying Location of Action Entries |
US20170070427A1 (en) * | 2014-05-30 | 2017-03-09 | Huawei Technologies Co., Ltd. | Method for Constructing Multipath Forwarding Rule, Apparatus, and System |
US20170126588A1 (en) * | 2014-07-25 | 2017-05-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet Processing in an OpenFlow Switch |
US20170142026A1 (en) * | 2014-07-16 | 2017-05-18 | Nec Europe Ltd. | Efficent cascading of flow tables in software defined networks (sdn) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6157955A (en) * | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US8830841B1 (en) * | 2010-03-23 | 2014-09-09 | Marvell Israel (M.I.S.L) Ltd. | Operations, administration, and maintenance (OAM) processing engine |
US8856203B1 (en) * | 2011-02-08 | 2014-10-07 | Pmc-Sierra Us, Inc. | System and method for algorithmic TCAM packet classification |
-
2015
- 2015-06-30 US US15/736,193 patent/US20180191640A1/en not_active Abandoned
- 2015-06-30 WO PCT/US2015/038418 patent/WO2017003436A1/en active Application Filing
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262294A1 (en) * | 2004-05-05 | 2005-11-24 | Nabil Bitar | Method for policy matching using a hybrid TCAM and memory-based scheme |
US8964742B1 (en) * | 2010-07-28 | 2015-02-24 | Marvell Israel (M.I.S.L) Ltd. | Linked list profiling and updating |
US20120246400A1 (en) * | 2011-03-22 | 2012-09-27 | Texas Instruments Incorporated | Method and apparatus for packet switiching |
US20140328180A1 (en) * | 2012-11-08 | 2014-11-06 | Texas Instruments Incorporated | Structure for implementing openflow all group buckets using egress flow table entries |
US20140241359A1 (en) * | 2013-02-28 | 2014-08-28 | Texas Instruments Incorporated | Packet processing vliw action unit with or-multi-ported instruction memory |
US20150023147A1 (en) * | 2013-07-17 | 2015-01-22 | Kt Corporation | Methods for managing transaction in software defined network |
US20160197831A1 (en) * | 2013-08-16 | 2016-07-07 | Interdigital Patent Holdings, Inc. | Method and apparatus for name resolution in software defined networking |
US20170070427A1 (en) * | 2014-05-30 | 2017-03-09 | Huawei Technologies Co., Ltd. | Method for Constructing Multipath Forwarding Rule, Apparatus, and System |
US20170142026A1 (en) * | 2014-07-16 | 2017-05-18 | Nec Europe Ltd. | Efficent cascading of flow tables in software defined networks (sdn) |
US20170126588A1 (en) * | 2014-07-25 | 2017-05-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet Processing in an OpenFlow Switch |
US20160182378A1 (en) * | 2014-12-18 | 2016-06-23 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for load balancing in a software-defined networking (sdn) system upon server reconfiguration |
US20160246507A1 (en) * | 2015-02-23 | 2016-08-25 | Barefoot Networks, Inc. | Coding Scheme for Identifying Location of Action Entries |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11394611B2 (en) | 2014-12-27 | 2022-07-19 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US11394610B2 (en) | 2014-12-27 | 2022-07-19 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US12119991B2 (en) | 2014-12-27 | 2024-10-15 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US11388053B2 (en) | 2014-12-27 | 2022-07-12 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US10430095B1 (en) | 2015-01-27 | 2019-10-01 | Barefoot Networks, Inc. | Dynamic memory reallocation for match-action packet processing |
US10303387B2 (en) | 2015-02-23 | 2019-05-28 | Barefoot Networks, Inc. | Coding scheme for indirect addressing of multiple action memories |
US10372365B2 (en) | 2015-02-23 | 2019-08-06 | Barefoot Networks, Inc. | Virtual addresses for action memories of a hardware forwarding element |
US10671304B2 (en) | 2015-02-23 | 2020-06-02 | Barefoot Networks, Inc. | Coding scheme for indirect addressing of multiple action memories |
US10712961B2 (en) | 2015-02-23 | 2020-07-14 | Barefoot Networks, Inc. | Addressing match and action entries in a match-action stage |
US11425039B2 (en) | 2015-08-26 | 2022-08-23 | Barefoot Networks, Inc. | Packet header field extraction |
US11425038B2 (en) | 2015-08-26 | 2022-08-23 | Barefoot Networks, Inc. | Packet header field extraction |
US11411870B2 (en) | 2015-08-26 | 2022-08-09 | Barefoot Networks, Inc. | Packet header field extraction |
US12040976B2 (en) | 2015-08-26 | 2024-07-16 | Barefoot Networks, Inc | Packet header field extraction |
US20170093987A1 (en) * | 2015-09-24 | 2017-03-30 | Barefoot Networks, Inc. | Data-plane stateful processing units in packet processing pipelines |
US10819633B2 (en) | 2015-09-24 | 2020-10-27 | Barefoot Networks, Inc. | Data-plane stateful processing units in packet processing pipelines |
US10523764B2 (en) * | 2015-09-24 | 2019-12-31 | Barefoot Networks, Inc. | Data-plane stateful processing units in packet processing pipelines |
US11677851B2 (en) | 2015-12-22 | 2023-06-13 | Intel Corporation | Accelerated network packet processing |
US12095882B2 (en) | 2015-12-22 | 2024-09-17 | Intel Corporation | Accelerated network packet processing |
US11606318B2 (en) | 2017-01-31 | 2023-03-14 | Barefoot Networks, Inc. | Messaging between remote controller and forwarding element |
US12255835B2 (en) | 2017-01-31 | 2025-03-18 | Barefoot Networks, Inc. | Messaging between remote controller and forwarding element |
US11463385B2 (en) | 2017-01-31 | 2022-10-04 | Barefoot Networks, Inc. | Messaging between remote controller and forwarding element |
US11425058B2 (en) | 2017-04-23 | 2022-08-23 | Barefoot Networks, Inc. | Generation of descriptive data for packet fields |
US12088504B2 (en) | 2017-07-23 | 2024-09-10 | Barefoot Networks, Inc. | Using stateful traffic management data to perform packet processing |
US11503141B1 (en) | 2017-07-23 | 2022-11-15 | Barefoot Networks, Inc. | Stateful processing unit with min/max capability |
US10826840B1 (en) | 2017-07-23 | 2020-11-03 | Barefoot Networks, Inc. | Multiple copies of stateful tables |
US11750526B2 (en) | 2017-07-23 | 2023-09-05 | Barefoot Networks, Inc. | Using stateful traffic management data to perform packet processing |
US10911377B1 (en) | 2017-07-23 | 2021-02-02 | Barefoot Networks, Inc. | Using stateful traffic management data to perform packet processing |
US11700212B2 (en) | 2017-09-28 | 2023-07-11 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
US10771387B1 (en) | 2017-09-28 | 2020-09-08 | Barefoot Networks, Inc. | Multiple packet data container types for a processing pipeline |
US10594630B1 (en) | 2017-09-28 | 2020-03-17 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
US11362967B2 (en) | 2017-09-28 | 2022-06-14 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
US12074842B2 (en) | 2020-02-07 | 2024-08-27 | KnowBe4, Inc. | Systems and methods for communication with a third-party email client plug-in |
US11381541B2 (en) * | 2020-02-07 | 2022-07-05 | KnowBe4, Inc. | Systems and methods for communication with a third-party email client plug-in |
US12375588B2 (en) | 2022-07-08 | 2025-07-29 | Barefoot Networks, Inc. | Generation of descriptive data for packet fields |
Also Published As
Publication number | Publication date |
---|---|
WO2017003436A1 (en) | 2017-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180191640A1 (en) | Action references | |
US10848552B2 (en) | Determining whether to perform address translation to forward a service request or deny a service request based on blocked service attributes in an IP table in a container-based computing cluster management system | |
CN103457818B (en) | Extend more hosts in bridge | |
US9992101B2 (en) | Parallel multipath routing architecture | |
US10601702B1 (en) | Flexible packet replication and filtering for multicast/broadcast | |
US20140269307A1 (en) | Content Addressable Memory with Reduced Power Consumption | |
US8880871B2 (en) | Hash table organization | |
CN109981409B (en) | Message forwarding method, device and forwarding equipment | |
US8024787B2 (en) | Packet firewalls of particular use in packet switching devices | |
WO2014022350A1 (en) | Connection mesh in mirroring asymmetric clustered multiprocessor systems | |
US9641611B2 (en) | Logical interface encoding | |
CN108259348B (en) | A message transmission method and device | |
US20150089047A1 (en) | Cut-through packet management | |
EP3905634B1 (en) | Network defense method and security detection device | |
US9894012B2 (en) | Method and system to improve network connection locality on multicore systems | |
EP3613228A1 (en) | Regulation based switching system for electronic message routing | |
US20210099492A1 (en) | System and method for regulated message routing and global policy enforcement | |
CN110752996A (en) | Message forwarding method and device | |
US10484304B2 (en) | Determining actions to be immediately performed on a network packet with an application specific integrated circuit | |
CN111107142B (en) | Service access method and device | |
US9497285B1 (en) | Connection bucketing in mirroring asymmetric clustered multiprocessor systems | |
WO2017184807A1 (en) | Parallel multipath routing architecture | |
CN108173762B (en) | Message redirection method and device | |
CN111106982B (en) | Information filtering method and device, electronic equipment and storage medium | |
CN106330722B (en) | A kind of method creating route-caching item, the method and device that E-Packets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VIQUEZ CALDERON, CLAUDIO ENRIQUE;ALPIZAR SALAS, PEDRO ELIAS;REEL/FRAME:044389/0062 Effective date: 20150629 Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:044863/0001 Effective date: 20151027 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |