US9742702B1 - End-to-end cache for network elements - Google Patents

End-to-end cache for network elements Download PDF

Info

Publication number
US9742702B1
US9742702B1 US14/813,142 US201514813142A US9742702B1 US 9742702 B1 US9742702 B1 US 9742702B1 US 201514813142 A US201514813142 A US 201514813142A US 9742702 B1 US9742702 B1 US 9742702B1
Authority
US
United States
Prior art keywords
packet
parameters
new input
input packet
function units
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US14/813,142
Inventor
Ido Bukspan
Oded Wertheim
Benny Koren
Itamar Rabenstein
Amiad MARELLI
Omri Flint
Dror Aharoni
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies 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 Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Priority to US14/813,142 priority Critical patent/US9742702B1/en
Assigned to MELLANOX TECHNOLOGIES LTD. reassignment MELLANOX TECHNOLOGIES LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AHARONI, DROR, BUKSPAN, IDO, FLINT, OMRI, KOREN, BENNY, MARELLI, AMIAD, RABENSTEIN, ITAMAR, WERTHEIM, ODED
Assigned to JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT reassignment JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT PATENT SECURITY AGREEMENT Assignors: MELLANOX TECHNOLOGIES, LTD.
Application granted granted Critical
Publication of US9742702B1 publication Critical patent/US9742702B1/en
Assigned to MELLANOX TECHNOLOGIES, LTD. reassignment MELLANOX TECHNOLOGIES, LTD. RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Assignors: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3063Pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]

Definitions

  • the present invention relates generally to communication networks, and particularly to methods and systems for caching in network elements.
  • Packet communication networks commonly use network elements such as switches and routers for processing packets.
  • Network elements perform various packet processing functions, such as filtering, forwarding, routing, policing, tunneling and queuing, among others.
  • An embodiment of the present invention that is described herein provides a method in a network element.
  • the method includes processing input packets using a set of two or more functions that are defined over parameters of the input packets. Each function in the set produces respective interim actions applied to the input packets and the entire set produces respective end-to-end actions applied to the input packets.
  • An end-to-end mapping which maps the parameters of at least some of the input packets directly to the corresponding end-to-end actions, is cached in the network element. The end-to-end mapping is queried with the parameters of a new input packet. Upon finding the parameters of the new input packet in the end-to-end mapping, an end-to-end action mapped to the found parameters is applied to the new input packet, without processing the new input packet using the set of functions.
  • the method includes, upon determining that the parameters of the new input packet are not cached in the end-to-end mapping, processing the new input packet using the set of functions.
  • processing the new input packet includes updating the end-to-end mapping with the end-to-end action produced by the set for the new input packet.
  • the interim actions and the end-to-end actions include actions that affect packet destinations, and/or modifications applied to the packets.
  • processing the input packets includes applying first and second different configurations of the set of functions to respective first and second input packets. Applying the different configurations may include applying to the first input packet only a single function from the set.
  • the method includes, upon applying the end-to-end action to the new input packet using the end-to-end mapping, updating data in the network element that would be updated if the new input packet were processed by the set of functions.
  • a network element including one or more ports that are configured for receiving and transmitting packets, and packet processing circuitry.
  • the packet processing circuitry is configured to receive input packets via the ports, to process the input packets using a set of two or more functions that are defined over parameters of the input packets, such that each function in the set produces respective interim actions applied to the input packets and the entire set produces respective end-to-end actions applied to the input packets, to cache an end-to-end mapping that maps the parameters of at least some of the input packets directly to the corresponding end-to-end actions, to query the end-to-end mapping with the parameters of a new input packet, and, upon finding the parameters of the new input packet in the end-to-end mapping, to apply to the new input packet an end-to-end action mapped to the found parameters, without processing the new input packet using the set of functions.
  • apparatus including a memory and circuitry.
  • the circuitry is configured to process input packets using a set of two or more functions that are defined over parameters of the input packets, such that each function in the set produces respective interim actions applied to the input packets and the entire set produces respective end-to-end actions applied to the input packets, to cache in the memory an end-to-end mapping that maps the parameters of at least some of the input packets directly to the corresponding end-to-end actions, to query the end-to-end mapping with the parameters of a new input packet, and, upon finding the parameters of the new input packet in the end-to-end mapping, to apply to the new input packet an end-to-end action mapped to the found parameters, without processing the new input packet using the set of functions.
  • FIG. 1 is a block diagram that schematically illustrates a network element, in accordance with an embodiment of the present invention.
  • FIG. 2 is a flow chart that schematically illustrates a method for packet processing in a network element, in accordance with an embodiment of the present invention.
  • Embodiments of the present invention that are described herein provide improved methods and systems for processing communication packets in network elements.
  • a network element processes input packets using a set of functions.
  • the functions may comprise, for example, ingress and/or egress Access Control Lists (ACLs), filtering rules, forwarding, routing, mirroring, tunneling and many others.
  • ACLs egress Access Control Lists
  • Each function in the set is defined over one or more parameters of the input packets, such as packet properties, metadata or some stateless or stateful context.
  • Each individual function produces interim actions to be applied to the input packets, and the set as a whole produces end-to-end actions to be applied to the input packets.
  • the interim and end-to-end actions may involve, for example, forwarding decisions (e.g., a transmit queue—TQ—over which to send the packet) as well as setting of packet attributes (e.g., Virtual Local Area Network—VLAN or priority) and/or modification of packet header fields.
  • the network element maintains an end-to-end cache, which caches a direct mapping of input packet parameters to the corresponding end-to-end actions.
  • the mapping is direct in the sense that it does not distinguish between individual functions and interim actions, but rather gives the end-to-end action specified by the entire set for a certain combination of packet parameters.
  • the network element queries the end-to-end cache with the parameters of the new input packet. If the parameters of the new input packet are found in the end-to-end cache, the network element reads the corresponding end-to-end action from the cache, and applies this end-to-end action to the new input packet. This process is performed using only the end-to-end cache, without applying the set of functions.
  • the network element typically updates any relevant databases or other elements that are normally updated by the set of functions, such that the caching mechanism is transparent.
  • the network element reverts to process the new input packet using the set of functions. Then, the network element typically updates the end-to-end cache with a new entry that maps the parameters of the new input packet to the end-to-end action. From this point, subsequent packets having the same parameters can be processed using the end-to-end cache instead of using the set of functions.
  • Processing a packet using the end-to-end cache is considerably faster and simpler than processing a packet using the set of functions. Processing a packet using the end-to-end cache also reduces the workload of the set of functions, and therefore reduces power consumption. Thus, the disclosed techniques help to reduce the latency, computational complexity and power consumption of network elements.
  • the disclosed techniques provide constant and small latency that does not depend on the number and types of the individual functions.
  • the set of functions and/or the connectivity between them may change from one packet to another.
  • the set of functions may have different latencies for different packets.
  • the end-to-end caching mechanism has a latency that is independent of the set of functions it replaces for a given packet.
  • FIG. 1 is a block diagram that schematically illustrates a network element 20 , in accordance with an embodiment of the present invention.
  • Network element 20 may comprise, for example, a network switch, a router, or any other suitable type of network element that processes communication packets.
  • network element 20 may comprise a network interface such as a Network Interface Card (NIC) or Host Channel Adapter (HCA).
  • NIC Network Interface Card
  • HCA Host Channel Adapter
  • Network element 20 may operate in any suitable communication network, and in accordance with any suitable communication protocol.
  • Example protocols may comprise Ethernet or Infiniband.
  • packets may also be referred to as frames or cells, for example.
  • Network element 20 comprises multiple ports 24 , over which the network element receives input packets (also referred to as ingress packets) from the communication network and sends output packets (also referred to as egress packets) to the communication network.
  • the network element comprises packet processing circuitry 28 , which processes the packets. In a typical flow, processing circuitry 28 receives an input packet from one of ports 24 that is referred to as an ingress port, applies certain processing to the packet, and forwards the packet over one of ports 24 that is referred to as an egress port.
  • Circuitry 28 comprises a packet processing path 32 , which applies a set of two or more functions to the input packets.
  • the packet processing path comprises a cascade of three functions 36 A . . . 36 C, denoted FUNCTION A, FUNCTION B and FUNCTION C.
  • packet processing path 32 may comprise any suitable number and any suitable types of functions, which are applied to the input packets in series, in parallel, nested in one another, arranged in feedback configurations, or in any other suitable order or hierarchy.
  • packet processing path 32 may vary from one packet to another, for example based on criteria or rules related to the packet.
  • the variations in the packet processing path may involve changes in the number of functions, in the order or connectivity between the functions, or in any other suitable way.
  • the processing path may comprise multiple paths of functions, and different packets may traverse different paths.
  • the packet processing path may comprise a single function. The end-to-end caching mechanism replaces any such paths, often without knowledge of the actual functions or path structures it replaces.
  • Functions 36 A . . . 36 B may comprise, for example, stateless filtering of packets, ingress and/or egress rules such as Access Control Lists (ACLs), forwarding decision functions, routing decision functions, policing, tunneling, mirroring, queuing decision functions, or any other suitable type of function.
  • ACLs Access Control Lists
  • forwarding decision functions routing decision functions
  • policing tunneling
  • mirroring queuing decision functions
  • Each of functions 36 A . . . 36 C is defined over one or more packet parameters, and produces interim actions to be applied to the packets.
  • each function typically maps various combinations of packet parameters to corresponding interim actions, which are to be applied to packets having these parameters.
  • Packet parameters may comprise, for example, properties of the packet (e.g., packet header field values or packet size), metadata (e.g., properties of the ingress port), additional stateful context, and/or any other suitable parameter.
  • the interim actions produced by the functions may comprise, for example, forwarding or routing decisions (e.g., an egress port or transmit queue—TQ—to which the packet should be sent), setting of packet properties (e.g., a Virtual Local Area Network—VLAN—tag for the packet, or a priority to be assigned to the packet), or any other suitable action.
  • forwarding or routing decisions e.g., an egress port or transmit queue—TQ—to which the packet should be sent
  • setting of packet properties e.g., a Virtual Local Area Network—VLAN—tag for the packet, or a priority to be assigned to the packet
  • VLAN Virtual Local Area Network
  • the interim action of one function is used as input to another function.
  • the set of functions as a whole can be viewed as producing a respective end-to-end action that is applied to the packet.
  • the end-to-end action may involve forwarding or routing decisions, setting of packet properties, or any other suitable actions.
  • the interim actions and the end-to-end actions can be classified into actions that affect the packet destinations (e.g., forwarding, routing, filtering, mirroring, assuming that discarding a packet is also regarded as affecting its destination), and actions that modify the packets.
  • actions that affect the packet destinations e.g., forwarding, routing, filtering, mirroring, assuming that discarding a packet is also regarded as affecting its destination
  • actions that modify the packets e.g., forwarding, routing, filtering, mirroring, assuming that discarding a packet is also regarded as affecting its destination
  • processing circuitry 28 comprises databases (DB) 40 A . . . 40 C that are coupled locally to functions 36 A . . . 36 C, respectively.
  • DB databases
  • all three functions comprise databases.
  • only part of the functions may use such databases.
  • the database of a given function is typically accessed by packet properties, and returns information used by the function. Packets that differ in properties that are not inspected by the function (and are thus not used for accessing the database) are thus considered equal from the function's perspective.
  • Each of databases 40 A . . . 40 C may be implemented using a table, a Content Addressable Memory (CAM), a Ternary CAM (TCAM), multiple sequential table lookups, external memory access, or in any other suitable way.
  • CAM Content Addressable Memory
  • TCAM Ternary CAM
  • one or more of the functions may comprise a local cache 42 that reduces the number of database lookups by the function.
  • FIG. 1 shows a local cache only for function 36 A, by way of example.
  • network element 20 comprises an end-to-end cache memory 44 .
  • Cache 44 holds a direct mapping of input packet parameters to the corresponding end-to-end actions.
  • the term “direct mapping” means that the mapping does not distinguish between the individual functions and interim actions. Instead, the mapping in cache 44 gives the end-to-end action produced by processing path 32 as a whole for a certain combination of packet parameters.
  • the end-to-end cache is typically accessed with the union of packet parameters used by FUNCTION A, FUNCTION B and FUNCTION C.
  • An action execution unit 48 executes the end-to-end actions read from cache 44 .
  • end-to-end cache 44 The entries of end-to-end cache 44 are added progressively during operation:
  • processing circuitry 28 queries the end-to-end cache with the parameters of the new input packet. If the parameters of the new input packet are found in the end-to-end cache (“cache hit”), the processing circuitry reads the corresponding end-to-end action from cache 44 , and unit 48 applies the end-to-end action to the new input packet. This process is performed using only the end-to-end cache, without applying packet processing path 32 .
  • processing circuitry 28 reverts to process the new input packet using the packet processing path, i.e., to apply the set of functions.
  • the packet processing path produces an end-to-end action that is then applied to the packet.
  • packet processing circuitry 28 updates end-to-end cache 44 with this end-to-end action, i.e., creates a new entry that maps the parameters of the new input packet to the end-to-end action. From this point onwards, subsequent packets having the same parameters will be processed by circuitry 28 using the end-to-end cache instead of using the packet processing path.
  • end-to-end cache 44 is accessed by ⁇ RQ, SIP, MAC, Ethertype ⁇ .
  • the network element configuration shown in FIG. 1 is an example configuration, which is chosen purely for the sake of conceptual clarity. In alternative embodiments, any other suitable network element configuration can be used. Certain elements of processing circuitry 28 may be implemented using hardware, such as using one or more Application-Specific Integrated Circuits (ASICs) or Field-Programmable Gate Arrays (FPGAs). Alternatively, some processing circuitry elements may be implemented in software or using a combination of hardware and software elements. End-to-end cache 44 and databases 40 A . . . 40 C may be implemented using any suitable type of memory devices.
  • ASICs Application-Specific Integrated Circuits
  • FPGAs Field-Programmable Gate Arrays
  • End-to-end cache 44 and databases 40 A . . . 40 C may be implemented using any suitable type of memory devices.
  • packet processing circuitry 28 may be implemented using a general-purpose processor, which is programmed in software to carry out the functions described herein.
  • the software may be downloaded to the processor in electronic form, over a network, for example, or it may, alternatively or additionally, be provided and/or stored on non-transitory tangible media, such as magnetic, optical, or electronic memory.
  • FIG. 2 is a flow chart that schematically illustrates a method for packet processing in network element 20 , in accordance with an embodiment of the present invention. The method begins with network element 20 receiving an input packet over one of ports 24 , at an ingress step 60 .
  • Processing circuitry 28 extracts relevant packet properties, at a property extraction step 64 .
  • processing circuitry 28 classifies the packet so as to extract the packet properties that are relevant to the particular packet.
  • the processing circuitry looks for an entry of cache 44 that matches the packet properties, at a cache checking step 68 .
  • processing circuitry 28 If a matching entry is found (“cache hit”), processing circuitry 28 first performs any update in the network element that is normally performed by the packet processing path, at a function updating step 70 . This updating is performed so that the caching mechanism is transparent, i.e., such that all data in the network element will be updated in the same way regardless of whether the packet is processed by the cache or by the processing path. Processing circuitry 28 then reads the corresponding end-to-end action from cache 44 , at a cache readout step 72 . Execution unit 48 executes the end-to-end action, at an execution step 76 .
  • processing circuitry 28 calculates the end-to-end action using processing path 32 and functions 36 A . . . 36 B, at a path processing step 80 .
  • the processing circuitry updates end-to-end cache 44 with the newly-calculated end-to-end action, at a cache updating step 84 .
  • Execution unit 48 executes this end-to-end action at execution step 76 .

Abstract

A method in a network element includes processing input packets using a set of two or more functions that are defined over parameters of the input packets. Each function in the set produces respective interim actions applied to the input packets and the entire set produces respective end-to-end actions applied to the input packets. An end-to-end mapping, which maps the parameters of at least some of the input packets directly to the corresponding end-to-end actions, is cached in the network element. The end-to-end mapping is queried with the parameters of a new input packet. Upon finding the parameters of the new input packet in the end-to-end mapping, an end-to-end action mapped to the found parameters is applied to the new input packet, without processing the new input packet using the set of functions.

Description

CROSS-REFERENCE TO RELATED APPLICATION
This application is a continuation of U.S. patent application Ser. No. 13/609,378, filed Sep. 11, 2012.
FIELD OF THE INVENTION
The present invention relates generally to communication networks, and particularly to methods and systems for caching in network elements.
BACKGROUND OF THE INVENTION
Packet communication networks commonly use network elements such as switches and routers for processing packets. Network elements perform various packet processing functions, such as filtering, forwarding, routing, policing, tunneling and queuing, among others.
SUMMARY OF THE INVENTION
An embodiment of the present invention that is described herein provides a method in a network element. The method includes processing input packets using a set of two or more functions that are defined over parameters of the input packets. Each function in the set produces respective interim actions applied to the input packets and the entire set produces respective end-to-end actions applied to the input packets. An end-to-end mapping, which maps the parameters of at least some of the input packets directly to the corresponding end-to-end actions, is cached in the network element. The end-to-end mapping is queried with the parameters of a new input packet. Upon finding the parameters of the new input packet in the end-to-end mapping, an end-to-end action mapped to the found parameters is applied to the new input packet, without processing the new input packet using the set of functions.
In some embodiments the method includes, upon determining that the parameters of the new input packet are not cached in the end-to-end mapping, processing the new input packet using the set of functions. Typically, processing the new input packet includes updating the end-to-end mapping with the end-to-end action produced by the set for the new input packet. In an embodiment, the interim actions and the end-to-end actions include actions that affect packet destinations, and/or modifications applied to the packets.
In a disclosed embodiment, processing the input packets includes applying first and second different configurations of the set of functions to respective first and second input packets. Applying the different configurations may include applying to the first input packet only a single function from the set. In some embodiments the method includes, upon applying the end-to-end action to the new input packet using the end-to-end mapping, updating data in the network element that would be updated if the new input packet were processed by the set of functions.
There is additionally provided, in accordance with an embodiment of the present invention, a network element including one or more ports that are configured for receiving and transmitting packets, and packet processing circuitry. The packet processing circuitry is configured to receive input packets via the ports, to process the input packets using a set of two or more functions that are defined over parameters of the input packets, such that each function in the set produces respective interim actions applied to the input packets and the entire set produces respective end-to-end actions applied to the input packets, to cache an end-to-end mapping that maps the parameters of at least some of the input packets directly to the corresponding end-to-end actions, to query the end-to-end mapping with the parameters of a new input packet, and, upon finding the parameters of the new input packet in the end-to-end mapping, to apply to the new input packet an end-to-end action mapped to the found parameters, without processing the new input packet using the set of functions.
There is also provided, in accordance with an embodiment of the present invention, apparatus including a memory and circuitry. The circuitry is configured to process input packets using a set of two or more functions that are defined over parameters of the input packets, such that each function in the set produces respective interim actions applied to the input packets and the entire set produces respective end-to-end actions applied to the input packets, to cache in the memory an end-to-end mapping that maps the parameters of at least some of the input packets directly to the corresponding end-to-end actions, to query the end-to-end mapping with the parameters of a new input packet, and, upon finding the parameters of the new input packet in the end-to-end mapping, to apply to the new input packet an end-to-end action mapped to the found parameters, without processing the new input packet using the set of functions.
The present invention will be more fully understood from the following detailed description of the embodiments thereof, taken together with the drawings in which:
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram that schematically illustrates a network element, in accordance with an embodiment of the present invention; and
FIG. 2 is a flow chart that schematically illustrates a method for packet processing in a network element, in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION OF EMBODIMENTS Overview
Embodiments of the present invention that are described herein provide improved methods and systems for processing communication packets in network elements. In some embodiments, a network element processes input packets using a set of functions. The functions may comprise, for example, ingress and/or egress Access Control Lists (ACLs), filtering rules, forwarding, routing, mirroring, tunneling and many others.
Each function in the set is defined over one or more parameters of the input packets, such as packet properties, metadata or some stateless or stateful context. Each individual function produces interim actions to be applied to the input packets, and the set as a whole produces end-to-end actions to be applied to the input packets. The interim and end-to-end actions may involve, for example, forwarding decisions (e.g., a transmit queue—TQ—over which to send the packet) as well as setting of packet attributes (e.g., Virtual Local Area Network—VLAN or priority) and/or modification of packet header fields.
In addition to the set of functions, the network element maintains an end-to-end cache, which caches a direct mapping of input packet parameters to the corresponding end-to-end actions. The mapping is direct in the sense that it does not distinguish between individual functions and interim actions, but rather gives the end-to-end action specified by the entire set for a certain combination of packet parameters.
When a new input packet arrives, the network element queries the end-to-end cache with the parameters of the new input packet. If the parameters of the new input packet are found in the end-to-end cache, the network element reads the corresponding end-to-end action from the cache, and applies this end-to-end action to the new input packet. This process is performed using only the end-to-end cache, without applying the set of functions. When the end-to-end action is applied using the end-to-end cache, the network element typically updates any relevant databases or other elements that are normally updated by the set of functions, such that the caching mechanism is transparent.
Otherwise, if the parameters of the new input packet are not found in the end-to-end cache, the network element reverts to process the new input packet using the set of functions. Then, the network element typically updates the end-to-end cache with a new entry that maps the parameters of the new input packet to the end-to-end action. From this point, subsequent packets having the same parameters can be processed using the end-to-end cache instead of using the set of functions.
Processing a packet using the end-to-end cache is considerably faster and simpler than processing a packet using the set of functions. Processing a packet using the end-to-end cache also reduces the workload of the set of functions, and therefore reduces power consumption. Thus, the disclosed techniques help to reduce the latency, computational complexity and power consumption of network elements.
Moreover, for packets that are processed using the cache, the disclosed techniques provide constant and small latency that does not depend on the number and types of the individual functions. In some embodiments, the set of functions and/or the connectivity between them may change from one packet to another. As such, the set of functions may have different latencies for different packets. The end-to-end caching mechanism, however, has a latency that is independent of the set of functions it replaces for a given packet.
Network Element Description
FIG. 1 is a block diagram that schematically illustrates a network element 20, in accordance with an embodiment of the present invention. Network element 20 may comprise, for example, a network switch, a router, or any other suitable type of network element that processes communication packets. In an alternative embodiment, network element 20 may comprise a network interface such as a Network Interface Card (NIC) or Host Channel Adapter (HCA).
Network element 20 may operate in any suitable communication network, and in accordance with any suitable communication protocol. Example protocols may comprise Ethernet or Infiniband. Depending on the protocol, packets may also be referred to as frames or cells, for example.
Network element 20 comprises multiple ports 24, over which the network element receives input packets (also referred to as ingress packets) from the communication network and sends output packets (also referred to as egress packets) to the communication network. In addition, the network element comprises packet processing circuitry 28, which processes the packets. In a typical flow, processing circuitry 28 receives an input packet from one of ports 24 that is referred to as an ingress port, applies certain processing to the packet, and forwards the packet over one of ports 24 that is referred to as an egress port.
Circuitry 28 comprises a packet processing path 32, which applies a set of two or more functions to the input packets. In the present example, the packet processing path comprises a cascade of three functions 36A . . . 36C, denoted FUNCTION A, FUNCTION B and FUNCTION C.
The embodiments described herein refer mainly to functions that are arranged in cascade, for the sake of clarity. Generally, however, packet processing path 32 may comprise any suitable number and any suitable types of functions, which are applied to the input packets in series, in parallel, nested in one another, arranged in feedback configurations, or in any other suitable order or hierarchy.
Moreover, in some embodiments, packet processing path 32 may vary from one packet to another, for example based on criteria or rules related to the packet. The variations in the packet processing path may involve changes in the number of functions, in the order or connectivity between the functions, or in any other suitable way. Put in another way—The processing path may comprise multiple paths of functions, and different packets may traverse different paths. In some embodiments, for certain packets, for certain time periods or under certain conditions, the packet processing path may comprise a single function. The end-to-end caching mechanism replaces any such paths, often without knowledge of the actual functions or path structures it replaces.
Functions 36A . . . 36B may comprise, for example, stateless filtering of packets, ingress and/or egress rules such as Access Control Lists (ACLs), forwarding decision functions, routing decision functions, policing, tunneling, mirroring, queuing decision functions, or any other suitable type of function.
Each of functions 36A . . . 36C is defined over one or more packet parameters, and produces interim actions to be applied to the packets. In other words, each function typically maps various combinations of packet parameters to corresponding interim actions, which are to be applied to packets having these parameters.
Packet parameters may comprise, for example, properties of the packet (e.g., packet header field values or packet size), metadata (e.g., properties of the ingress port), additional stateful context, and/or any other suitable parameter.
The interim actions produced by the functions may comprise, for example, forwarding or routing decisions (e.g., an egress port or transmit queue—TQ—to which the packet should be sent), setting of packet properties (e.g., a Virtual Local Area Network—VLAN—tag for the packet, or a priority to be assigned to the packet), or any other suitable action. In many cases, e.g., when the functions are cascaded, the interim action of one function is used as input to another function.
For a given input packet, the set of functions as a whole can be viewed as producing a respective end-to-end action that is applied to the packet. Similarly to the interim actions, the end-to-end action may involve forwarding or routing decisions, setting of packet properties, or any other suitable actions.
Generally speaking, the interim actions and the end-to-end actions can be classified into actions that affect the packet destinations (e.g., forwarding, routing, filtering, mirroring, assuming that discarding a packet is also regarded as affecting its destination), and actions that modify the packets.
In some embodiments, processing circuitry 28 comprises databases (DB) 40A . . . 40C that are coupled locally to functions 36A . . . 36C, respectively. In the present example all three functions comprise databases. In alternative embodiments, only part of the functions may use such databases. The database of a given function is typically accessed by packet properties, and returns information used by the function. Packets that differ in properties that are not inspected by the function (and are thus not used for accessing the database) are thus considered equal from the function's perspective. Each of databases 40A . . . 40C may be implemented using a table, a Content Addressable Memory (CAM), a Ternary CAM (TCAM), multiple sequential table lookups, external memory access, or in any other suitable way.
In some embodiments, one or more of the functions may comprise a local cache 42 that reduces the number of database lookups by the function. FIG. 1 shows a local cache only for function 36A, by way of example.
In addition to processing path 32 and functions 36A . . . 36C, network element 20 comprises an end-to-end cache memory 44. Cache 44 holds a direct mapping of input packet parameters to the corresponding end-to-end actions. The term “direct mapping” means that the mapping does not distinguish between the individual functions and interim actions. Instead, the mapping in cache 44 gives the end-to-end action produced by processing path 32 as a whole for a certain combination of packet parameters.
In the example of FIG. 1, the end-to-end cache is typically accessed with the union of packet parameters used by FUNCTION A, FUNCTION B and FUNCTION C. An action execution unit 48 executes the end-to-end actions read from cache 44.
The entries of end-to-end cache 44 are added progressively during operation: When a new input packet enters network element 20, processing circuitry 28 queries the end-to-end cache with the parameters of the new input packet. If the parameters of the new input packet are found in the end-to-end cache (“cache hit”), the processing circuitry reads the corresponding end-to-end action from cache 44, and unit 48 applies the end-to-end action to the new input packet. This process is performed using only the end-to-end cache, without applying packet processing path 32.
If the parameters of the new input packet are not found in end-to-end cache 44 (“cache miss”), then processing circuitry 28 reverts to process the new input packet using the packet processing path, i.e., to apply the set of functions. The packet processing path produces an end-to-end action that is then applied to the packet.
Typically, packet processing circuitry 28 updates end-to-end cache 44 with this end-to-end action, i.e., creates a new entry that maps the parameters of the new input packet to the end-to-end action. From this point onwards, subsequent packets having the same parameters will be processed by circuitry 28 using the end-to-end cache instead of using the packet processing path.
In an example embodiment, the various functions, databases, packet parameters and interim actions are defined as follows:
TABLE 1
Example packet processing path
# FUNCTION A FUNCTION B FUNCTION C
Function Ingress ACL Layer 2 Egress ACL
type forwarding
Database TCAM Forwarding TCAM
type database
(FDB)
Packet RQ, SIP MAC, VLAN TQ, Ethertype
parameters (300)
Interim Set VLAN to TQ = 7 Set priority
action 300 to 3
In this embodiment, end-to-end cache 44 is accessed by {RQ, SIP, MAC, Ethertype}. In case of cache hit, cache outputs the end-to-end action {Set VLAN to 300, set priority to 3, forward to TQ=7}. The example above is a highly simplified example, which is chosen purely for the sake of conceptual clarity. In alternative embodiments, any other suitable functions and end-to-end cache structure can be used.
The network element configuration shown in FIG. 1 is an example configuration, which is chosen purely for the sake of conceptual clarity. In alternative embodiments, any other suitable network element configuration can be used. Certain elements of processing circuitry 28 may be implemented using hardware, such as using one or more Application-Specific Integrated Circuits (ASICs) or Field-Programmable Gate Arrays (FPGAs). Alternatively, some processing circuitry elements may be implemented in software or using a combination of hardware and software elements. End-to-end cache 44 and databases 40A . . . 40C may be implemented using any suitable type of memory devices.
In some embodiments, certain functions of packet processing circuitry 28 may be implemented using a general-purpose processor, which is programmed in software to carry out the functions described herein. The software may be downloaded to the processor in electronic form, over a network, for example, or it may, alternatively or additionally, be provided and/or stored on non-transitory tangible media, such as magnetic, optical, or electronic memory.
Packet Processing Method Description
FIG. 2 is a flow chart that schematically illustrates a method for packet processing in network element 20, in accordance with an embodiment of the present invention. The method begins with network element 20 receiving an input packet over one of ports 24, at an ingress step 60.
Processing circuitry 28 extracts relevant packet properties, at a property extraction step 64. In some embodiments, processing circuitry 28 classifies the packet so as to extract the packet properties that are relevant to the particular packet. The processing circuitry then looks for an entry of cache 44 that matches the packet properties, at a cache checking step 68.
If a matching entry is found (“cache hit”), processing circuitry 28 first performs any update in the network element that is normally performed by the packet processing path, at a function updating step 70. This updating is performed so that the caching mechanism is transparent, i.e., such that all data in the network element will be updated in the same way regardless of whether the packet is processed by the cache or by the processing path. Processing circuitry 28 then reads the corresponding end-to-end action from cache 44, at a cache readout step 72. Execution unit 48 executes the end-to-end action, at an execution step 76.
If, on the other hand, a matching entry is not found at step 68 (“cache miss”), processing circuitry 28 calculates the end-to-end action using processing path 32 and functions 36A . . . 36B, at a path processing step 80. The processing circuitry updates end-to-end cache 44 with the newly-calculated end-to-end action, at a cache updating step 84. Execution unit 48 executes this end-to-end action at execution step 76.
It will thus be appreciated that the embodiments described above are cited by way of example, and that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art. Documents incorporated by reference in the present patent application are to be considered an integral part of the application except that to the extent any terms are defined in these incorporated documents in a manner that conflicts with the definitions made explicitly or implicitly in the present specification, only the definitions in the present specification should be considered.

Claims (20)

The invention claimed is:
1. A method, comprising:
providing a network element, including a set of two or more hardware implemented function units that are each defined over parameters of input packets to determine a forwarding decision or a packet modification, such that each function unit in the set produces respective interim actions applied to input packets and the entire set produces respective end-to-end actions applied to input packets;
caching in the network element an end-to-end mapping cache, which maps the parameters of at least some input packets directly to the corresponding end-to-end actions;
receiving a new input packet in the network element; and querying the end-to-end mapping cache with parameters of the received new input packet, and,
upon finding the parameters of the new input packet in the end-to-end mapping cache, applying to the new input packet an end-to-end action mapped to the parameters of the new input packet, without processing the new input packet using the set of function units, and
upon determining that the parameters of the input packet are not cached in the end-to-end mapping cache processing the input packet by the set of function units, wherein processing the new input packet comprises updating the end-to-end mapping cache with the end-to-end action produced by the set of function units for the new input packet,
wherein at least one of the function units is configured to update a database when handling packets and wherein the end-to-end action includes updating the database as it would have been updated by the function unit, and
wherein the applying of the end-to-end action to the new input packet is performed transparently, such that data in the network element is updated in the same way regardless of whether the new input packet is processed by the end-to-end action or by the function units.
2. The method according to claim 1, wherein processing the input packets comprises applying first and second different configurations of the set of function units to respective first and second input packets.
3. The method according to claim 2, wherein applying the different configurations comprises applying to the first input packet only a single function unit from the set.
4. The method according to claim 1, and comprising, upon applying the end-to-end action to the new input packet using the end-to-end mapping cache, updating data in the network element that would be updated if the new input packet were processed by the set of function units.
5. The method according to claim 1, wherein querying the end-to-end mapping cache with the parameters of a new input packet comprises querying with a union of the parameters over which the two or more function units are defined.
6. The method according to claim 1, wherein the two or more function units are defined over different parameters of the input packets.
7. The method according to claim 1, wherein one or more of the hardware implemented function units has a local cache, not used in the end-to-end mapping.
8. The method according to claim 1, wherein each of the hardware implemented function units is implemented using a separate table in a respective separate memory.
9. A network element, comprising:
one or more ports, which are configured to receive and transmit packets; a set of two or more separate hardware-implemented function units that are each defined over parameters of the input packets to determine a forwarding decision or a packet modification;
an end-to-end mapping cache that maps parameters of packets with corresponding end-to-end actions, which would be applied to the packet if handled by the set of two or more separate hardware implemented function units; and
packet processing circuitry, which is configured to receive input packets via the ports, to query the end-to-end mapping cache with parameters of a new input packet, and,
upon finding the parameters of the new input packet in the end-to-end mapping, to apply to the new input packet an end-to-end action mapped to the found parameters, without processing the new input packet using the set of function units, and
upon determining that the parameters of the new input packet are not cached in the end-to-end mapping cache, handling the packet by each of the hardware implemented function units in the set, and updating the end-to-end mapping cache with the end-to-end action produced by the set of hardware implemented function units for the new input packet,
wherein at least one of the function units is configured to update a database when handling packets and wherein the end-to-end action includes updating the database as it would have been updated by the function unit, and
wherein the applying of the end-to-end action to the new input packet is performed transparently, such that data in the network element is updated in the same way regardless of whether the new input packet is processed by the end-to-end action or by the function units.
10. The network element according to claim 9, wherein the packet processing circuitry is configured to apply first and second different configurations of the set of function units to respective first and second input packets.
11. The network element according to claim 10, wherein the packet processing circuitry is configured to apply to the first input packet only a single function unit from the set.
12. The network element according to claim 9, wherein, upon applying the end-to-end action to the new input packet using the end-to-end mapping cache, the packet processing circuitry is configured to update data in the network element that would be updated if the new input packet were processed by the set of function units.
13. The network element according to claim 9, wherein the packet processing circuitry is configured to query the end-to-end mapping cache with a union of the parameters over which the two or more function units are defined.
14. The network element according to claim 9, wherein the two or more function units are defined over different parameters of the input packets.
15. The network element according to claim 9, wherein each of the hardware-implemented function units has its own memory unit storing a respective database.
16. Apparatus, comprising:
a set of two or more separate hardware-implemented function units that are each defined over parameters of the input packets to determine a forwarding decision or a packet modification;
a memory storing an end-to-end mapping that maps parameters of packets with corresponding end-to-end actions, which would be applied to the packet if handled by the set of two or more separate hardware implemented function units; and
circuitry, which is configured to query the end-to-end mapping with parameters of a new input packet, and, upon finding the parameters of the new input packet in the end-to-end mapping, to apply to the new input packet an end-to-end action mapped to the found parameters, without processing the new input packet using the set of function units, and upon determining that the parameters of the new input packet are not cached in the end-to-end mapping, handling the packet by each of the hardware implemented function units in the set, and update the end-to-end mapping with the end-to-end action produced by the set of hardware implemented function units for the new input packet,
wherein at least one of the function units is configured to update a database when handling packets and wherein the end-to-end action includes updating the database as it would have been updated by the function unit, and
wherein the applying of the end-to-end action to the new input packet is performed transparently, such that data in the network element is updated in the same way regardless of whether the new input packet is processed by the end-to-end action or by the function units.
17. The apparatus according to claim 16, wherein the circuitry is configured to apply first and second different configurations of the set of function units to respective first and second input packets.
18. The apparatus according to claim 17, wherein the circuitry is configured to apply to the first input packet only a single function unit from the set.
19. The apparatus according to claim 16, wherein, upon applying the end-to-end action to the new input packet using the end-to-end mapping, the circuitry is configured to update data in the apparatus that would be updated if the new input packet were processed by the set of function units.
20. The apparatus according to claim 16, wherein the circuitry is configured to query the end-to-end mapping with a union of the parameters over which the two or more function units are defined.
US14/813,142 2012-09-11 2015-07-30 End-to-end cache for network elements Active US9742702B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/813,142 US9742702B1 (en) 2012-09-11 2015-07-30 End-to-end cache for network elements

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/609,378 US9130885B1 (en) 2012-09-11 2012-09-11 End-to-end cache for network elements
US14/813,142 US9742702B1 (en) 2012-09-11 2015-07-30 End-to-end cache for network elements

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/609,378 Continuation US9130885B1 (en) 2012-09-11 2012-09-11 End-to-end cache for network elements

Publications (1)

Publication Number Publication Date
US9742702B1 true US9742702B1 (en) 2017-08-22

Family

ID=54012714

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/609,378 Active 2033-08-08 US9130885B1 (en) 2012-09-11 2012-09-11 End-to-end cache for network elements
US14/813,142 Active US9742702B1 (en) 2012-09-11 2015-07-30 End-to-end cache for network elements

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US13/609,378 Active 2033-08-08 US9130885B1 (en) 2012-09-11 2012-09-11 End-to-end cache for network elements

Country Status (1)

Country Link
US (2) US9130885B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022121114A (en) * 2021-02-08 2022-08-19 Necプラットフォームズ株式会社 Network device, packet processing method, and program

Citations (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5235642A (en) * 1992-07-21 1993-08-10 Digital Equipment Corporation Access control subsystem and method for distributed computer system using locally cached authentication credentials
US5790522A (en) 1994-10-07 1998-08-04 International Business Machines Corporation Method and system for performing traffic congestion control in a data communication network
US5917947A (en) 1990-07-31 1999-06-29 Canon Kabushiki Kaisha Image processing method and apparatus permitting use of PDL in compression memory
US6160814A (en) 1997-05-31 2000-12-12 Texas Instruments Incorporated Distributed shared-memory packet switch
US6324165B1 (en) 1997-09-05 2001-11-27 Nec Usa, Inc. Large capacity, multiclass core ATM switch architecture
US20020019916A1 (en) 2000-07-17 2002-02-14 Alcatel Memory management system enabling writing of data blocks by substitution
US20020067695A1 (en) 1999-03-05 2002-06-06 Mark L. Skarpness Method for interfacing an atm network to a pc by implementing the atm segmentation and reassembly functions in pc system software
US20020167955A1 (en) 1995-09-18 2002-11-14 Kabushiki Kaisha Toshiba Packet transfer device and packet transfer method adaptive to a large number of input ports
US20020176432A1 (en) 2001-05-22 2002-11-28 John Courtney Hitless protection switching
US20030016697A1 (en) 2001-07-19 2003-01-23 Jordan Reuven D. Method and apparatus for converting data packets between a higher bandwidth network and a lower bandwidth network having multiple channels
US20030043828A1 (en) 2001-08-28 2003-03-06 Axiowave Networks, Inc. Method of scalable non-blocking shared memory output-buffered switching of variable length data packets from pluralities of ports at full line rate, and apparatus therefor
US20030065812A1 (en) * 2001-09-28 2003-04-03 Niels Beier Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
US20030120894A1 (en) 2001-12-21 2003-06-26 Axiowave Networks, Inc. Method of addressing sequential data packets from a plurality of input data line cards for shared memory storage and the like, and novel address generator therefor
US20030123392A1 (en) 2001-12-31 2003-07-03 Jussi Ruutu Packet flow control method and device
US6633395B1 (en) 1997-12-11 2003-10-14 Canon Kabushiki Kaisha Printer, printing system, print control method, storage medium used to store print control program for controlling a printer, and transmission device for transmitting print control program for controlling a printer
US20030222860A1 (en) 2002-02-28 2003-12-04 Shinichi Yamaura Image processing circuit, combined image processing circuit, and image forming apparatus
US20030223435A1 (en) 2002-05-31 2003-12-04 Gil Mercedes E. Apparatus and methods for increasing bandwidth in an infiniband switch
US20040037558A1 (en) 2002-08-20 2004-02-26 Nortel Networks Limited Modular high-capacity switch
US6771654B1 (en) 2000-01-24 2004-08-03 Advanced Micro Devices, Inc. Apparatus and method for sharing memory using a single ring data bus connection configuration
US20040202169A1 (en) 2000-08-10 2004-10-14 Hiroyuki Mukouyama ATM communication apparatus and ATM cell forwarding control method
US20050063370A1 (en) 2000-09-28 2005-03-24 Beshai Maged E. Multi-grained network
US20050076138A1 (en) * 2003-10-07 2005-04-07 Alcatel Access control listing mechanism for routers
US20050125424A1 (en) * 2003-12-05 2005-06-09 Guy Herriott Decision cache using multi-key lookup
US20050129033A1 (en) 2003-12-13 2005-06-16 Gordy Stephen C. Network tap for use with multiple attached devices
US20050144553A1 (en) * 2000-04-06 2005-06-30 International Business Machines Corporation Longest prefix match (LPM) algorithm implementation for a network processor
US20050259574A1 (en) 2004-05-24 2005-11-24 Nortel Networks Limited Method and apparatus for implementing scheduling algorithms in a network element
US7027457B1 (en) 1999-12-03 2006-04-11 Agere Systems Inc. Method and apparatus for providing differentiated Quality-of-Service guarantees in scalable packet switches
US20060095609A1 (en) 2004-10-29 2006-05-04 Sivakumar Radhakrishnan Methodology and apparatus for implementing write combining
US20070015525A1 (en) 2003-10-06 2007-01-18 Per Beming Coordinated data flow control and buffer sharing in umts
US20070019553A1 (en) 2005-07-19 2007-01-25 Telefonaktiebolaget Lm Ericsson (Publ) Minimizing Padding for Voice Over Internet Protocol-Type Traffic Over Radio Link Control
US20070274215A1 (en) 2006-05-23 2007-11-29 International Business Machines Corporation Method and a system for flow control in a communication network
US7334065B1 (en) 2002-05-30 2008-02-19 Cisco Technology, Inc. Multiple data bus synchronization
US20080259936A1 (en) * 2002-06-04 2008-10-23 Fortinet, Inc. Service processing switch
US20090182944A1 (en) * 2008-01-10 2009-07-16 Miguel Comparan Processing Unit Incorporating L1 Cache Bypass
US20100057953A1 (en) 2008-08-27 2010-03-04 Electronics And Telecommunications Research Institute Data processing system
US20100088756A1 (en) * 2005-06-30 2010-04-08 Intel Corporation Multi-pattern packet content inspection mechanisms employing tagged values
US7747086B1 (en) 2005-07-28 2010-06-29 Teradici Corporation Methods and apparatus for encoding a shared drawing memory
US7856026B1 (en) 2005-06-28 2010-12-21 Altera Corporation Configurable central memory buffered packet switch module for use in a PLD
US20120072635A1 (en) 2010-09-03 2012-03-22 Panasonic Corporation Relay device
US20120106562A1 (en) 2010-10-28 2012-05-03 Compass Electro Optical Systems Ltd. Router and switch architecture
US20120144064A1 (en) 2010-11-05 2012-06-07 Cray Inc. Progressive adaptive routing in a dragonfly processor interconnect network
US8352648B1 (en) 2010-11-22 2013-01-08 Xilinx, Inc. Credit-based flow control
US20130212296A1 (en) * 2012-02-13 2013-08-15 Juniper Networks, Inc. Flow cache mechanism for performing packet flow lookups in a network device
US20140095745A1 (en) 2011-06-09 2014-04-03 Fujitsu Limited Buffer device, buffer control device, and buffer control method
US20140204742A1 (en) 2013-01-22 2014-07-24 Emulex Design And Manufacturing Corp. Positive feedback ethernet link flow control for promoting lossless ethernet
US20140286349A1 (en) 2013-03-21 2014-09-25 Fujitsu Limited Communication device and packet scheduling method
US20140289568A1 (en) 2011-11-09 2014-09-25 Nec Corporation Analysis system
US20140310354A1 (en) 2011-06-15 2014-10-16 Bae Systems Plc Data transfer
US8923337B2 (en) 2009-05-22 2014-12-30 Tejas Networks Limited Method to transmit multiple data-streams of varying capacity data using virtual concatenation
US20150026309A1 (en) 2011-09-29 2015-01-22 Avvasi Inc. Systems and methods for adaptive streaming control
US20150058857A1 (en) 2011-07-15 2015-02-26 Mark Henrik Sandstrom Concurrent Program Execution Optimization
US20150103667A1 (en) 2013-10-13 2015-04-16 Mellanox Technologies Ltd. Detection of root and victim network congestion

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7114008B2 (en) * 2000-06-23 2006-09-26 Cloudshield Technologies, Inc. Edge adapter architecture apparatus and method
US7177311B1 (en) * 2002-06-04 2007-02-13 Fortinet, Inc. System and method for routing traffic through a virtual router-based network switch
US8769156B2 (en) 2009-12-23 2014-07-01 Citrix Systems, Inc. Systems and methods for maintaining transparent end to end cache redirection

Patent Citations (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5917947A (en) 1990-07-31 1999-06-29 Canon Kabushiki Kaisha Image processing method and apparatus permitting use of PDL in compression memory
US5235642A (en) * 1992-07-21 1993-08-10 Digital Equipment Corporation Access control subsystem and method for distributed computer system using locally cached authentication credentials
US5790522A (en) 1994-10-07 1998-08-04 International Business Machines Corporation Method and system for performing traffic congestion control in a data communication network
US20020167955A1 (en) 1995-09-18 2002-11-14 Kabushiki Kaisha Toshiba Packet transfer device and packet transfer method adaptive to a large number of input ports
US6160814A (en) 1997-05-31 2000-12-12 Texas Instruments Incorporated Distributed shared-memory packet switch
US6324165B1 (en) 1997-09-05 2001-11-27 Nec Usa, Inc. Large capacity, multiclass core ATM switch architecture
US6633395B1 (en) 1997-12-11 2003-10-14 Canon Kabushiki Kaisha Printer, printing system, print control method, storage medium used to store print control program for controlling a printer, and transmission device for transmitting print control program for controlling a printer
US20020067695A1 (en) 1999-03-05 2002-06-06 Mark L. Skarpness Method for interfacing an atm network to a pc by implementing the atm segmentation and reassembly functions in pc system software
US7027457B1 (en) 1999-12-03 2006-04-11 Agere Systems Inc. Method and apparatus for providing differentiated Quality-of-Service guarantees in scalable packet switches
US6771654B1 (en) 2000-01-24 2004-08-03 Advanced Micro Devices, Inc. Apparatus and method for sharing memory using a single ring data bus connection configuration
US20050144553A1 (en) * 2000-04-06 2005-06-30 International Business Machines Corporation Longest prefix match (LPM) algorithm implementation for a network processor
US20020019916A1 (en) 2000-07-17 2002-02-14 Alcatel Memory management system enabling writing of data blocks by substitution
US20040202169A1 (en) 2000-08-10 2004-10-14 Hiroyuki Mukouyama ATM communication apparatus and ATM cell forwarding control method
US20050063370A1 (en) 2000-09-28 2005-03-24 Beshai Maged E. Multi-grained network
US20020176432A1 (en) 2001-05-22 2002-11-28 John Courtney Hitless protection switching
US20030016697A1 (en) 2001-07-19 2003-01-23 Jordan Reuven D. Method and apparatus for converting data packets between a higher bandwidth network and a lower bandwidth network having multiple channels
US20030043828A1 (en) 2001-08-28 2003-03-06 Axiowave Networks, Inc. Method of scalable non-blocking shared memory output-buffered switching of variable length data packets from pluralities of ports at full line rate, and apparatus therefor
US20030065812A1 (en) * 2001-09-28 2003-04-03 Niels Beier Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
US20030120894A1 (en) 2001-12-21 2003-06-26 Axiowave Networks, Inc. Method of addressing sequential data packets from a plurality of input data line cards for shared memory storage and the like, and novel address generator therefor
US20030123392A1 (en) 2001-12-31 2003-07-03 Jussi Ruutu Packet flow control method and device
US20030222860A1 (en) 2002-02-28 2003-12-04 Shinichi Yamaura Image processing circuit, combined image processing circuit, and image forming apparatus
US7334065B1 (en) 2002-05-30 2008-02-19 Cisco Technology, Inc. Multiple data bus synchronization
US20030223435A1 (en) 2002-05-31 2003-12-04 Gil Mercedes E. Apparatus and methods for increasing bandwidth in an infiniband switch
US20080259936A1 (en) * 2002-06-04 2008-10-23 Fortinet, Inc. Service processing switch
US20040037558A1 (en) 2002-08-20 2004-02-26 Nortel Networks Limited Modular high-capacity switch
US20070015525A1 (en) 2003-10-06 2007-01-18 Per Beming Coordinated data flow control and buffer sharing in umts
US20050076138A1 (en) * 2003-10-07 2005-04-07 Alcatel Access control listing mechanism for routers
US20050125424A1 (en) * 2003-12-05 2005-06-09 Guy Herriott Decision cache using multi-key lookup
US20050129033A1 (en) 2003-12-13 2005-06-16 Gordy Stephen C. Network tap for use with multiple attached devices
US20050259574A1 (en) 2004-05-24 2005-11-24 Nortel Networks Limited Method and apparatus for implementing scheduling algorithms in a network element
US20060095609A1 (en) 2004-10-29 2006-05-04 Sivakumar Radhakrishnan Methodology and apparatus for implementing write combining
US7856026B1 (en) 2005-06-28 2010-12-21 Altera Corporation Configurable central memory buffered packet switch module for use in a PLD
US20100088756A1 (en) * 2005-06-30 2010-04-08 Intel Corporation Multi-pattern packet content inspection mechanisms employing tagged values
US20070019553A1 (en) 2005-07-19 2007-01-25 Telefonaktiebolaget Lm Ericsson (Publ) Minimizing Padding for Voice Over Internet Protocol-Type Traffic Over Radio Link Control
US7747086B1 (en) 2005-07-28 2010-06-29 Teradici Corporation Methods and apparatus for encoding a shared drawing memory
US20070274215A1 (en) 2006-05-23 2007-11-29 International Business Machines Corporation Method and a system for flow control in a communication network
US20090182944A1 (en) * 2008-01-10 2009-07-16 Miguel Comparan Processing Unit Incorporating L1 Cache Bypass
US20100057953A1 (en) 2008-08-27 2010-03-04 Electronics And Telecommunications Research Institute Data processing system
US8923337B2 (en) 2009-05-22 2014-12-30 Tejas Networks Limited Method to transmit multiple data-streams of varying capacity data using virtual concatenation
US20120072635A1 (en) 2010-09-03 2012-03-22 Panasonic Corporation Relay device
US20120106562A1 (en) 2010-10-28 2012-05-03 Compass Electro Optical Systems Ltd. Router and switch architecture
US20120144064A1 (en) 2010-11-05 2012-06-07 Cray Inc. Progressive adaptive routing in a dragonfly processor interconnect network
US8352648B1 (en) 2010-11-22 2013-01-08 Xilinx, Inc. Credit-based flow control
US20140095745A1 (en) 2011-06-09 2014-04-03 Fujitsu Limited Buffer device, buffer control device, and buffer control method
US20140310354A1 (en) 2011-06-15 2014-10-16 Bae Systems Plc Data transfer
US20150058857A1 (en) 2011-07-15 2015-02-26 Mark Henrik Sandstrom Concurrent Program Execution Optimization
US20150026309A1 (en) 2011-09-29 2015-01-22 Avvasi Inc. Systems and methods for adaptive streaming control
US20140289568A1 (en) 2011-11-09 2014-09-25 Nec Corporation Analysis system
US20130212296A1 (en) * 2012-02-13 2013-08-15 Juniper Networks, Inc. Flow cache mechanism for performing packet flow lookups in a network device
US20140204742A1 (en) 2013-01-22 2014-07-24 Emulex Design And Manufacturing Corp. Positive feedback ethernet link flow control for promoting lossless ethernet
US20140286349A1 (en) 2013-03-21 2014-09-25 Fujitsu Limited Communication device and packet scheduling method
US20150103667A1 (en) 2013-10-13 2015-04-16 Mellanox Technologies Ltd. Detection of root and victim network congestion

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
U.S. Appl. No. 14/207,680 Office Action dated Sep. 25, 2015.

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device

Also Published As

Publication number Publication date
US9130885B1 (en) 2015-09-08

Similar Documents

Publication Publication Date Title
US10616001B2 (en) Flexible processor of a port extender device
US10164883B2 (en) System and method for flow management in software-defined networks
US8799507B2 (en) Longest prefix match searches with variable numbers of prefixes
US9716661B2 (en) Methods and apparatus for path selection within a network based on flow duration
JP5567641B2 (en) How to provide virtual router functionality
US20180083876A1 (en) Optimization of multi-table lookups for software-defined networking systems
US9569561B2 (en) Label masked addressable memory
US7327744B2 (en) Fibre channel forwarding information base
US10693790B1 (en) Load balancing for multipath group routed flows by re-routing the congested route
US10397116B1 (en) Access control based on range-matching
TWI635726B (en) Heavy network flow detection method and software-defined networking switch
US11362948B2 (en) Exact match and ternary content addressable memory (TCAM) hybrid lookup for network device
US8886879B2 (en) TCAM action updates
US20130142039A1 (en) Configurable Access Control Lists Using TCAM
US9590922B2 (en) Programmable and high performance switch for data center networks
US7624226B1 (en) Network search engine (NSE) and method for performing interval location using prefix matching
CN112367278B (en) Cloud gateway system based on programmable data switch and message processing method thereof
US9473395B2 (en) Ultra low latency multi-protocol network device
US9742702B1 (en) End-to-end cache for network elements
US10554556B2 (en) Network element with congestion-aware match tables
US10798014B1 (en) Egress maximum transmission unit (MTU) enforcement
US9898069B1 (en) Power reduction methods for variable sized tables
US20170012874A1 (en) Software router and methods for looking up routing table and for updating routing entry of the software router
US20180198720A1 (en) Port extender with local switching
US10205658B1 (en) Reducing size of policy databases using bidirectional rules

Legal Events

Date Code Title Description
AS Assignment

Owner name: MELLANOX TECHNOLOGIES LTD., ISRAEL

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BUKSPAN, IDO;WERTHEIM, ODED;KOREN, BENNY;AND OTHERS;REEL/FRAME:036213/0591

Effective date: 20120911

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT, ILLINOIS

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MELLANOX TECHNOLOGIES, LTD.;REEL/FRAME:037900/0720

Effective date: 20160222

Owner name: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MELLANOX TECHNOLOGIES, LTD.;REEL/FRAME:037900/0720

Effective date: 20160222

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: MELLANOX TECHNOLOGIES, LTD., ISRAEL

Free format text: RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:046542/0792

Effective date: 20180709

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4