WO2017087017A1 - Flow table bypass - Google Patents

Flow table bypass Download PDF

Info

Publication number
WO2017087017A1
WO2017087017A1 PCT/US2016/017121 US2016017121W WO2017087017A1 WO 2017087017 A1 WO2017087017 A1 WO 2017087017A1 US 2016017121 W US2016017121 W US 2016017121W WO 2017087017 A1 WO2017087017 A1 WO 2017087017A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
flow
data packet
communication
packet
Prior art date
Application number
PCT/US2016/017121
Other languages
French (fr)
Inventor
Roy SOURAV
Original Assignee
Hewlett Packard Enterprise Development Lp
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 Hewlett Packard Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Publication of WO2017087017A1 publication Critical patent/WO2017087017A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • H04L45/245Link aggregation, e.g. trunking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Definitions

  • Figure 1 shows an example of a system that supports flow table bypass.
  • the system 100 shown in Figure 1 includes the link aggregation engine 1 10.
  • the system 100 may implement the link aggregation engine 1 10 (and components thereof) in various ways, for example as hardware and programming.
  • the programming for the link aggregation engine 1 10 may take the form of processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the link aggregation engine 1 10 may include a processing resource to execute those instructions.
  • a processing resource may take the form of single processor or multi-processor systems, and in some examples, the system 100 implements multiple engines using the same computing system features or hardware components (e.g., a common processing resource).
  • Figure 2 shows an example of a flow table bypass that the link aggregation engine 1 10 may perform.
  • the link aggregation engine 1 10 maintains the flow table 201.
  • the flow table 201 may store flow entries that indicate assigned communication links for various data flows communicated through a system or device implementing the link aggregation engine 1 10.
  • a flow entry of the flow table 201 may identify a data flow through a flow identification value (also referred to as a flow ID), for instance by pairing a flow ID to a particular communication link that the data flow is assigned to.
  • a flow identification value also referred to as a flow ID
  • the link aggregation engine 1 10 may forward the data packet 210 for communication without lookup into the flow table 201 .
  • the link aggregation engine 1 10 may randomly select a communication link for communicating the data packet 210 instead of assigning the data flow of the data packet 210 to a particular communication link tracked through a flow entry in the flow table 201 .
  • the link aggregation engine 1 10 may forward the data packet 210 to a queue, a packet processing pipeline, or other logic of a network interface corresponding to a selected communication link.
  • the link aggregation engine 1 10 forwards the data packet 210 to a packet processing queue for the network interface corresponding to communication link 3, doing so without accessing the flow table 201 .
  • the link aggregation engine 1 10 may prevent assigning of insignificant data flows to communication links. Doing so may increase the effectiveness of load- balancing across the communication links of a link aggregation group and reduce instances of flow reassignment caused by skewed data flow assignments and actual bandwidth consumption.
  • the link aggregation engine 1 10 may bypass access to the flow table in processing the data packet for communication. That is, the link aggregation engine 1 10 may determine not to perform a lookup into the flow table for the data packet, not to insert a flow entry into the flow table assigning the data flow of the data packet to a particular communication link (and corresponding network interface), and not to otherwise access or use the flow table in processing the data packet for communication.

Abstract

In some examples, a method includes parsing a data packet of a data flow to identify the data packet as an acknowledgment packet. The method may also include bypassing insertion of a flow entry for the data flow into a flow table.

Description

FLOW TABLE BYPASS
BACKGROUND
[0001] High speed communication networks form part of the backbone of what has become indispensable worldwide data connectivity. Within such communication networks, various network devices including end point devices and switching devices direct network traffic from source ports to destination ports, helping to eventually guide a data packet from a source to a destination. Improvements in the efficiency of these communication networks will increase the effectiveness of communicating data.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Certain examples are described in the following detailed description and in reference to the drawings.
[0003] Figure 1 shows an example of a system that supports flow table bypass.
[0004] Figure 2 shows an example of a flow table bypass that a link aggregation engine may perform.
[0005] Figure 3 shows an example of logic that a system or device may implement to support flow table bypass.
[0006] Figure 4 shows another example of logic that a system or device may implement to support flow table bypass.
[0007] Figure 5 shows an example of a device that supports flow table bypass.
DETAILED DESCRIPTION
[0008] The disclosure herein may provide systems, methods, devices, and logic that support flow table bypass. Flow table bypass may refer to a determination not to access, perform an entry lookup, insert an entry into, alter, or otherwise use a flow table for processing certain data packets or data flows for communication through a communication network. The flow table bypass features described herein may provide increased efficiency and effectiveness in balancing a network load across communication links in a link aggregation group. As such, the flow bypass features described herein may increase the efficiency of data flow assignments in the link aggregation group, as link assignments for insignificant data flows or data packets that do not include a payload may be bypassed. Doing so may increase the accuracy of the flow table in load balancing, which may improve overall network throughput, reduce instances of flow reassignment across the link aggregation group, and reduce the chances of packet drops due to congestion.
[0009] Figure 1 shows an example of a system 100 that supports flow table bypass. The system 100 may take the form of a computing system, including a single or multiple computing devices such as application servers, compute nodes, desktop or laptop computers, smart phones or other mobile devices, tablet devices, embedded controllers, and more. The system 100 may be part of a communication network, and may thus be part of an end point device, switching device, router, edge device, or any other network device that transmits, receives, or otherwise routes data through the communication network.
[0010] The system 100 may include a set of network interfaces 108 through which the system 100 may communicate data across a communication network. The set of network interfaces 108 may include wired interfaces, wireless interfaces, or combinations of both. The set of network interfaces 108 may support communication across various communication protocols, techniques, networks, and standards, including as examples Ethernet, cable-based communications, Data over Cable Service Interface Specification (DOCSIS), any Internet Protocol (IP) based communication, Multimedia over Coax Alliance (MoCA), optical-fiber communications, wireless communications according to any of the 802.1 1 communication standards, and many more.
[0011] A network interface may be used to provide a communication link through which the system 100 transmits and receives data. In some examples, the system 100 may group communication links provided by some or all of the network interfaces in the set of network interfaces 108 into a link aggregation group. Through the link aggregation group, the system 100 may balance the network load across the combined communications links, provide failover for failed links, or both. The system 100 may maintain a flow table to track a particular communication link (and corresponding network interface) that a data flow is assigned to. A data flow may refer to a sequence of data (e.g., packets, segments, datagrams, etc.) sent from a particular source to a particular destination. As described in greater detail below, the system 100 may bypass access to the flow table when processing data packets from particular data flows or for particular packets. In bypassing a flow table lookup or flow entry insertion into a flow table, the system 100 may reduce resource consumption and increase the efficiency and effectiveness by which the system 100 balances network load through the flow table.
[0012] As one example, the system 100 shown in Figure 1 includes the link aggregation engine 1 10. The system 100 may implement the link aggregation engine 1 10 (and components thereof) in various ways, for example as hardware and programming. The programming for the link aggregation engine 1 10 may take the form of processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the link aggregation engine 1 10 may include a processing resource to execute those instructions. A processing resource may take the form of single processor or multi-processor systems, and in some examples, the system 100 implements multiple engines using the same computing system features or hardware components (e.g., a common processing resource).
[0013] In Figure 1 , the link aggregation engine 1 10 includes various components. In particular, the link aggregation engine 1 10 may include components to maintain a flow table that identifies communication links through particular network interfaces in the set of network interfaces that data flows are assigned to, identify a data packet of a particular data flow as an acknowledgment packet through parsing header data of the data packet, and in response, bypass a lookup of the particular data flow in the flow table and forward the data packet for communication through a particular network interface without performing the lookup of the particular data flow in the flow table.
[0014] Some example features relating to flow table bypass are described in greater detail next.
[0015] Figure 2 shows an example of a flow table bypass that the link aggregation engine 1 10 may perform. In the example shown in Figure 2, the link aggregation engine 1 10 maintains the flow table 201. The flow table 201 may store flow entries that indicate assigned communication links for various data flows communicated through a system or device implementing the link aggregation engine 1 10. A flow entry of the flow table 201 may identify a data flow through a flow identification value (also referred to as a flow ID), for instance by pairing a flow ID to a particular communication link that the data flow is assigned to.
[0016] The communication links to which data flows are assigned via the flow table 201 may be part of a link aggregation group. Three communication links are shown in the example in Figure 2, labeled as links 1 , 2, and 3 and each corresponding to a particular network interface. Entries in the flow table 201 may assign data flows to one of the communication links. Thus, the flow table 201 shown in Figure 2 includes an entry assigning a data flow with a flow ID of 3 to link 1 , an entry assigning a data flow with a flow ID of 39 to link 2, etc.
[0017] The link aggregation engine 1 10 may bypass access to the flow table 201 for specifically identified data packets or data flows, including acknowledgement packets or data flows characterized as insignificant according to insignificant flow criteria. To illustrate, the link aggregation engine 1 10 may receive a data packet 210 for processing. A data packet may refer to any form of data to be communicated across a communication network. As examples, the data packet 210 may take the form of a Transmission Communication Protocol (TCP) segment, an IP datagram, a User Datagram Protocol (UDP) packet, or any other data portion formatted according to any standard or protocol by which data is communicated across a network. [0018] The data packet 210 may include header data, including multiple headers of different communication protocols, standards, or communication layers. The link aggregation engine 1 10 may determine to bypass access to the flow table 201 according to specific values specified in the header data and/or the size of the data payload (also referred to as a data length of the data payload). In the example shown in Figure 2, the data packet 210 includes a TCP header 212, which may include various include control fields such as the ACK control bit 216 shown in Figure 2. When set, the ACK control bit 216 may indicate receipt of a prior data communication. The link aggregation engine 1 10 may parse the TCP header 212 to identify the data packet 210 as an acknowledgement packet, which may refer to a data packet with an acknowledgement field set (e.g., the ACK control bit 216) and a data payload with a data length that is less than a threshold amount.
[0019] To determine whether to bypass access to the flow table 201 for the data packet 210, the link aggregation engine 1 10 may determine the data length of a data payload of the data packet 210. In some examples, the link aggregation engine 1 10 parses header data of the data packet 210 to identify the data length, e.g., by parsing a payload length field of an IP header of the data packet. In other examples, the link aggregation engine 1 10 inspects the payload itself of the data packet 210 to identify the payload data length. As yet another example, the link aggregation engine 1 10 may perform a payload data length calculation using offset values, packet size values, or other data parsed from the header data of the data packet 210. The link aggregation engine 1 10 may identify the data packet 210 as an acknowledgement packet when the data packet 210 does not include a payload (e.g., the payload data length of the data packet 210 is zero) or when the payload has a data length less than a predetermined threshold (e.g., 16 bits, 8 bytes, or any other configurable value).
[0020] In the example shown in Figure 2, the link aggregation engine 1 10 bypasses lookup into the flow table 201 for the data packet 210 according to a determination that the ACK control bit 216 is set and that the payload data length of the data packet 210 is zero. In that regard, the link aggregation engine 1 10 may determine not to utilize the flow table 201 in determining a particular communication link or network interface to forward the data packet 210 to for transmission. Put another way, in processing the data packet 210 for communication across a network, the link aggregation engine 1 10 may determine a communication link (and corresponding network interface) to communicate the data packet 210 through without assigning the data flow of the data packet 210 to a particular communication link through flow entry insertion into the flow table 201.
[0021] Instead, the link aggregation engine 1 10 may forward the data packet 210 for communication without lookup into the flow table 201 . For instance, the link aggregation engine 1 10 may randomly select a communication link for communicating the data packet 210 instead of assigning the data flow of the data packet 210 to a particular communication link tracked through a flow entry in the flow table 201 . Then, the link aggregation engine 1 10 may forward the data packet 210 to a queue, a packet processing pipeline, or other logic of a network interface corresponding to a selected communication link. In the example shown in Figure 2, the link aggregation engine 1 10 forwards the data packet 210 to a packet processing queue for the network interface corresponding to communication link 3, doing so without accessing the flow table 201 .
[0022] As the link aggregation engine 1 10 may forward the data packet 210 for communication without lookup into the flow table 201 , the link aggregation engine 1 10 may send different packets for a data flow through different communication links. To illustrate, the data packet 210 may be part of a particular data flow that includes multiple acknowledgement packets. The particular data flow may be a stream of acknowledgement packets acknowledging receipt of data in a unidirectional data transfer, for example. In this example, the acknowledgement packets transmitted through the particular data flow may include data packets specifying acknowledgment indications, but without any payload data. [0023] The link aggregation engine 1 10 may determine to bypass insertion of a flow entry for this particular data flow, and thus route the various acknowledgement packets of the particular data flow across any of the communication links of a link aggregation group without flow table lookup or access. Accordingly, the link aggregation engine 1 10 may forward the data packet 210 of the particular data flow for communication through a first communication link that uses a particular network interface without updating the flow table 201 to assign the particular data flow to the first communication link and further forward another data packet of the particular data flow for communication through a second communication link that is different from the first communication link.
[0024] As described above, the link aggregation engine 1 10 may bypass access to a flow table 201 when a data packet is identified as an acknowledgement packet or meets certain criteria, which may be referred to as insignificant flow criteria. The link aggregation engine 1 10 may set specific insignificant flow criteria to identify insignificant data flows. An insignificant data flow may refer to data flow that includes no payload data or payload data below data size threshold (e.g., less than threshold payload data amount per packet, over a specified period of time, averaged across a number of packets or time period, or according to any other data measurement metric). As such, insignificant data flows may transmit a low amount of data, and thus consume relatively less network bandwidth.
[0025] Assigning such insignificant data flows to a communication link through the flow table 201 may hinder the load balancing in a link aggregation group, as assignment of insignificant data flows to a particular communication link may skew a ratio of the number of data flows assigned to the particular communication link and the actual bandwidth consumed in communicating the assigned data flows. However, for data flows that do not meet the insignificant criteria, the link aggregation engine 1 10 may insert flow entries and perform lookups into the flow table 201 . In some examples, the link aggregation engine 1 10 inserts a flow entry into the flow table 201 for a different data flow that includes data packets with payload data, e.g., different from the data flow of the data packet 210.
[0026] In bypassing lookups and flow entry insertions into the flow table 201 for data packets and data flows meeting the insignificant flow criteria, the link aggregation engine 1 10 may prevent assigning of insignificant data flows to communication links. Doing so may increase the effectiveness of load- balancing across the communication links of a link aggregation group and reduce instances of flow reassignment caused by skewed data flow assignments and actual bandwidth consumption.
[0027] The flow table bypass features described herein may increase network throughput in various network communication scenarios in particular. As one illustration, the TCP transport protocol supports flow control capabilities, including a source node (e.g., a data sender) slowing or accelerating data transmission speeds based on the rate that a destination node responds with acknowledgement packets. The faster a destination node responds with an acknowledgement packet, the greater the transmission speed the source node may determine to transmit data to the destination node.
[0028] Through flow table bypass, the link aggregation engine 1 10 may increase the speed and efficiency of communicating such acknowledge packets, such as through bypass of hash calculations to determine a flow ID, table lookups, or various other flow table access operations. As such, the flow table bypass features described herein may cause a source node to transmit data at an increased speed based on a faster transmission of acknowledgement packets by the destination node (e.g., that implements the link aggregation engine 1 10). As such, the flow table bypass features described herein may improve network throughput, including for bulk data transmissions that may be affected by acknowledgement response speeds.
[0029] Figure 3 shows an example of logic 300 that a system or device may implement to support flow table bypass. The system 100 may implement the logic 300 as hardware, executable instructions stored on a machine-readable medium, or as combinations thereof. In some examples, the system 100 implements the logic 300 through the link aggregation engine 1 10, by which the system 100 may perform or execute the logic 300 as a method to support flow table bypass.
[0030] The link aggregation engine 1 10 may obtain a data packet (302). As examples, the data packet may be generated from an application executing on the system 100 implementing the link aggregation engine 1 10 or from a different network device. After obtaining the data packet, the link aggregation engine 1 10 may parse header data of the data packet (304). The link aggregation engine 1 10 may parse the header data to identify certain characteristics of the data packet or the data flow that the data packet is part of, through which the link aggregation engine1 10 may determine whether to bypass access to a flow table in processing the data packet for communication through a communication network.
[0031] The link aggregation engine 1 10 may apply any number of insignificant flow criteria to identify whether the data flow of the data packet meets a significance threshold to access the flow table. As one example, the link aggregation engine 1 10 may identify a data flow that includes a stream of acknowledgement packets with no payload data as an insignificant data flow. For identified insignificant data flows, the link aggregation engine 1 10 may bypass flow entry insertions and flow table lookups, which may increase the efficiency and effectiveness in load-balancing the network load across communication links of a link aggregation group, for example.
[0032] In the example shown in Figure 3, the link aggregation engine 1 10 applies insignificant flow criteria with regards to the ACK control bit of a TCP header and the data length of a payload of the data packet. As shown in the logic 300 in Figure 3, the link aggregation engine 1 10 may parse the header data of the data packet to determine whether the ACK control bit of a TCP header of the data packet is set (306), which may be a first insignificant flow criterion applied by the link aggregation engine 1 10. When the ACK control bit is set (and first insignificant flow criterion is met), the link aggregation engine 1 10 may determine whether the data packet includes a payload (308), which may be a second insignificant flow criterion applied by the link aggregation engine 1 10. The link aggregation engine 1 10 may do so in any of the ways described herein, such as through parsing a payload length field of an IP header of the data packet, by inspecting the payload itself of the data packet, or by performing any payload size calculations using offset values, packet size values, or other data parsed from the header data.
[0033] When the data packet does not include a payload (e.g., when the payload length field of the data packet indicates the payload has a data length of zero), the link aggregation engine 1 10 may determine that the second insignificant flow criterion is met. While two specific examples of insignificant flow criterion are shown in Figure 3, the link aggregation engine 1 10 may apply any number of additional or alternative criteria to identify the data flow of the data packet as an insignificant data flow. For example, the link aggregation engine 1 10 may apply the payload data length criterion (e.g., of length zero or less than a predetermined threshold), but not the TCP ACK control bit criterion. The link aggregation engine 1 10 may thus support insignificant flow identification and flow table bypass for any number of transport protocols, such as an interactive data transfer communicated using UDP transport protocol as one example.
[0034] Upon determining that the applied insignificant flow criteria are met, the link aggregation engine 1 10 may bypass access to the flow table in processing the data packet for communication. That is, the link aggregation engine 1 10 may determine not to perform a lookup into the flow table for the data packet, not to insert a flow entry into the flow table assigning the data flow of the data packet to a particular communication link (and corresponding network interface), and not to otherwise access or use the flow table in processing the data packet for communication.
[0035] Even without accessing or performing a lookup into the flow table, the link aggregation engine 1 10 may determine a communication link to communicate the data packet through (310). Put another way, the link aggregation engine 1 10 may select a communication link to communicate the data packet through without reference to the flow entries in the flow table that assign data flows to communication links.
[0036] The link aggregation engine 1 10 may determine a communication link without flow table access in various ways. As examples, the link aggregation engine 1 10 may select a communication link for the data packet randomly, according to a round robin or weighted round robin selection scheme, according a fixed order or fixed communication link, or in various other ways without access to the flow table. Then, the link aggregation engine 1 10 may forward the data packet for communication through the determined communication link (312), for example to a packet processing pipeline of a corresponding network interface that provides the determined communication link.
[0037] As described above, the link aggregation engine 1 10 may bypass access to a flow table when a data packet of a data flow satisfies various insignificant flow criteria. When the data packet is part of a data flow that does not satisfy the insignificant flow criteria, the link aggregation engine 1 10 may instead access the flow table for routing the data packet. In the example shown in Figure 3, the link aggregation engine 1 10 performs a lookup for the data flow of the data packet in the flow table (314) when the insignificant flow criteria are not met, i.e., upon determination that the ACK control bit is not set (306) or when the data packet includes a payload (308).
[0038] The link aggregation engine 1 10 may perform the lookup according to a flow identification value for the data flow, which the link aggregation engine 1 10 may identify or calculate from header data of the data packet. For example, the link aggregation engine 1 10 may identify a particular header value as the flow identification value or perform a hash value computation on particular header values (e.g., a 5-tuple of a packet header for a TCP/IP connection that includes a source IP address, a source port number, a destination IP address, a destination port number, and a layer 4 protocol). From the lookup into the flow table using a determined flow identification value, the link aggregation engine 1 10 may determine whether the flow table stores a flow entry for the data flow of the data packet (316). When the flow table includes a flow entry for the data flow, the link aggregation engine 1 10 may determine a communication link (and corresponding network interface) to communicate the data packet through from the flow entry for the data flow (318). That is, the flow entry may indicate a particular communication link assigned to the data flow to which the data packet belongs. The link aggregation engine 1 10 may then forward the data packet for communication through the determined communication link (312).
[0039] When the flow table does not include a flow entry for the data flow of the data packet (e.g., when the lookup into the flow table misses), the link aggregation engine 1 10 may determine a communication link to assign the data flow to. In doing so, the link aggregation engine 1 10 may account for the load on the various communication links of a link aggregation group, and select the communication link assign the data flow to according to various load-balancing factors. In selecting the communication link, the link aggregation engine 1 10 may load-balance the network load across the communication links, for example according to the number of data flows assigned to various communication links in the link aggregation group. In some examples, the link aggregation engine 1 10 dynamically reassigns data flows to another communication link to balance the network load across the various communication links of the link aggregation group.
[0040] Because the link aggregation engine 1 10 may bypass insertion of flow entries for insignificant flows, load balancing by the link aggregation engine 1 10 may have an increased effectiveness. For instance, the link aggregation engine 1 10 may select a communication link to assign to a newly identified data flow (e.g., upon a lookup miss into the flow table) by referring to the number of data flows already assigned across the link aggregation group, which may be tracked through the flow entries of the flow table. The flow entries may include data flows that meet the significance threshold, but not entries for insignificant data flows (as entry insertion for insignificant data flows may be bypassed by the link aggregation engine 1 10).
[0041] Thus, the link aggregation engine 1 10 may load balance and assign communication links with an accurate view of the network load distribution, not skewed by assignment of insignificant data flows. Flow table bypass for insignificant data flows may increase the efficiency and effectiveness of data flow assignments in a link aggregation group, balancing the network load across different communication links without assigning insignificant flows to communication links. The flow table bypass features described herein may likewise support increased efficiency in memory management of the flow table, as the link aggregation engine 1 10 may prevent entries for insignificant flows from being stored in the flow table.
[0042] Upon determining (e.g., selecting) a communication link for the data flow of the data packet, the link aggregation engine 1 10 may create and insert a flow entry assigning the data flow to the determined communication link (322). The link aggregation engine 1 10 may also forward the data packet for communication through the determined communication link (312) as well.
[0043] The example logic 300 described above, including the flow table bypass features, may be implemented as part of a link selection process for selecting a communication link to communicate network traffic through. In that regard, the link aggregation engine 1 10 may integrate the flow table bypass features as part of the packet processing and link selection processes performed to route data flows across a communication network. In that regard, the flow bypass features described herein may improve the effectiveness in network load-balancing and reduce instances of flow reassignments without a significant increase in processing overhead or packet transmission delay.
[0044] Figure 4 shows another example of logic 400 that a system or device may implement to support flow table bypass. The system 100 may implement the logic 400 as hardware, executable instructions stored on a machine- readable medium, or as combinations thereof. In some examples, the system 100 implements the logic 400 through the link aggregation engine 1 10, by which the system 100 may perform or execute the logic 400 as a method to support flow table bypass.
[0045] In implementing the logic 400, the link aggregation engine 1 10 may parse a data packet of a data flow to identify the data packet as an acknowledgment packet (402), including in any of the ways described herein. Parsing the data packet by the link aggregation engine 1 10 may include, for example, determining that an ACK control bit of a TCP header of the data packet is set. As another example, parsing the data packet may include determining that the data packet does not include a payload, such as by identifying that a payload length field of the data packet indicates the payload has a data length of zero. The link aggregation engine 1 10 may parse the data packet as part of a link selection process for selecting a communication link to communicate the data packet through.
[0046] The link aggregation engine 1 10 may bypass insertion of a flow entry for the data flow into a flow table (404), though the link aggregation engine 1 10 may support various other flow table bypasses as well. As noted above, the link aggregation engine 1 10 may bypass a lookup into the flow table for the data flow of the data packet, which may reduce resource consumption and increase the efficiency of load-balancing across a link aggregation group. In that regard, the link aggregation engine 1 10 may process the data packet for communication without accessing the flow table for the data packet. In some examples, the link aggregation engine 1 10 may further forward the data packet of the data flow for communication through a first communication link without updating the flow table to assign the data flow to the first communication link. The link aggregation engine 1 10 may also forward another data packet of the data flow for communication through a second communication link different from the first communication link.
[0047] Figure 5 shows an example of a device 500 that supports flow table bypass. The device 500 may include a processing resource 510, which may take the form of a single or multiple processors. The processor(s) may include a central processing unit (CPU), microprocessor, or any hardware device suitable for executing instructions stored on a machine-readable medium, such as the machine-readable medium 520 shown in Figure 5. The machine- readable medium 520 may take the form of any non-transitory electronic, magnetic, optical, or other physical storage device that stores executable instructions, such as the instructions 522, 524, and 526 shown in Figure 5. As such, the machine-readable medium 520 may be, for example, Random Access Memory (RAM) such as dynamic RAM (DRAM), flash memory, memristor memory, spin-transfer torque memory, an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disk, and the like.
[0048] The device 500 may execute instructions stored on the machine- readable medium 520 through the processing resource 510. Executing the instructions may cause the device 500 to perform any of the flow table bypass features described herein, including according to any features of the link aggregation engine 1 10. For example, execution of the instructions 522, 524, and 526 by the processing resource 510 may cause the device 500 to maintain a flow table that identifies communication links that data flows are assigned to communicate data through; parse a data packet of a particular data flow to determine that the particular data flow satisfies insignificant flow criteria, including a first insignificant flow criterion that is satisfied when an ACK control bit of a TCP header is set and a second insignificant flow criterion that is satisfied when a payload length field of the data packet indicates a payload of the data packet has a data length of zero; and bypass access to the flow table for processing the data packet for communication through a communication network.
[0049] In some examples, the machine-readable medium 520 may further include executable instructions to insert a flow entry into the flow table for a different data flow that includes data packets with payload data. As another example, the machine-readable medium 520 may further include executable instructions to forward the data packet of the particular data flow for communication through a first communication link without updating the flow table to assign the data flow to the first link and forward another data packet of the particular data flow for communication through a second communication link different from the first communication link.
[0050] The systems, methods, devices, and logic described above, including the link aggregation engine 1 10, may be implemented in many different ways in many different combinations of hardware, logic, circuitry, and executable instructions stored on a machine-readable medium. For example, the link aggregation engine 1 10 may include circuitry in a controller, a microprocessor, or an application specific integrated circuit (ASIC), or may be implemented with discrete logic or components, or a combination of other types of analog or digital circuitry, combined on a single integrated circuit or distributed among multiple integrated circuits. A product, such as a computer program product, may include a storage medium and machine readable instructions stored on the medium, which when executed in an endpoint, computer system, or other device, cause the device to perform operations according to any of the description above, including according to any features of the link aggregation engine 1 10.
[0051] The processing capability of the systems, devices, and engines described herein, including the link aggregation engine 1 10, may be distributed among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may implemented in many ways, including data structures such as linked lists, hash tables, or implicit storage mechanisms. Programs may be parts (e.g., subroutines) of a single program, separate programs, distributed across several memories and processors, or implemented in many different ways, such as in a library (e.g., a shared library).
[0052] While various examples have been described above, many more implementations are possible.

Claims

1 . A system comprising:
a set of network interfaces; and
a link aggregation engine to:
maintain a flow table that identifies communication links through particular network interfaces in the set of network interfaces that data flows are assigned to;
identify a data packet of a particular data flow as an acknowledgment packet through parsing header data of the data packet, and in response:
bypass a lookup of the particular data flow in the flow table; and
forward the data packet for communication through a particular network interface without performing the lookup of the particular data flow in the flow table.
2. The system of claim 1 , wherein the link aggregation engine is to identify the data packet as an acknowledgement packet through parsing the header data of the data packet by:
determining that an ACK control bit of a Transmission Communication Protocol (TCP) header of the data packet is set.
3. The system of claim 1 , wherein the link aggregation engine is to identify the data packet as an acknowledgement packet through parsing the header data of the data packet by:
determining that the data packet does not include a payload.
4. The system of claim 3, wherein the link aggregation engine is to determine that the data packet does not include a payload by identifying that a payload length field of an Internet Protocol (IP) header of the data packet indicates the payload has a data length of zero.
5. The system of claim 1 , wherein the link aggregation engine is further to insert a flow entry into the flow table for a different data flow that includes data packets with payload data.
6. The system of claim 1 , wherein the link aggregation engine is to forward the data packet of the particular data flow for communication through a first communication link that uses the particular network interface without updating the flow table to assign the particular data flow to the first communication link; and
wherein the link aggregation engine is further to forward another data packet of the particular data flow for communication through a second communication link different from the first communication link.
7. A method comprising:
parsing a data packet of a data flow to identify the data packet as an acknowledgment packet; and
bypassing insertion of a flow entry for the data flow into a flow table.
8. The method of claim 7, wherein parsing the data packet comprises determining that an ACK control bit of a Transmission Control Packet (TCP) header of the data packet is set.
9. The method of claim 8, wherein parsing the data packet further comprises determining that the data packet does not include a payload.
10. The method of claim 9, wherein determining that the data packet does not include a payload by identifying that a payload length field of the data packet indicates the payload has a data length of zero.
1 1 . The method of claim 7, comprising parsing the data packet as part of a link selection process for selecting a communication link to communicate the data packet through.
12. The method of claim 7, further comprising:
forwarding the data packet of the data flow for communication through a first communication link without updating the flow table to assign the data flow to the first communication link; and
forwarding another data packet of the data flow for communication through a second communication link different from the first communication link.
13. A non-transitory machine-readable medium comprising instructions executable by a processing resource to:
maintain a flow table that identifies communication links that data flows are assigned to communicate data through;
parse a data packet of a particular data flow to determine that the particular data flow satisfies insignificant flow criteria, including:
a first insignificant flow criterion that is satisfied when an ACK control bit of a Transmission Communication Protocol (TCP) header is set; and
a second insignificant flow criterion that is satisfied when a payload length field of the data packet indicates a payload of the data packet has a data length of zero; and
bypass access to the flow table for processing the data packet for communication through a communication network.
14. The non-transitory machine-readable medium of claim 13, wherein the instructions are further executable by the processing resource to insert a flow entry into the flow table for a different data flow that includes data packets with payload data.
15. The non-transitory machine-readable medium of claim 13, wherein the instructions are further executable by the processing resource to:
forward the data packet of the particular data flow for communication through a first communication link without updating the flow table to assign the data flow to the first link; and
forward another data packet of the particular data flow for communication through a second communication link different from the first communication link.
PCT/US2016/017121 2015-11-19 2016-02-09 Flow table bypass WO2017087017A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN6250CH2015 2015-11-19
IN6250/CHE/2015 2015-11-19

Publications (1)

Publication Number Publication Date
WO2017087017A1 true WO2017087017A1 (en) 2017-05-26

Family

ID=58717632

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/017121 WO2017087017A1 (en) 2015-11-19 2016-02-09 Flow table bypass

Country Status (1)

Country Link
WO (1) WO2017087017A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7079533B1 (en) * 2001-05-02 2006-07-18 Advanced Micro Devices, Inc. Systems and methods for bypassing packet lookups
US20110200041A1 (en) * 2004-04-28 2011-08-18 Smith Michael R Intelligent Adjunct Network Device
US20140126577A1 (en) * 2011-02-17 2014-05-08 Alcatel-Lucent Network communication node comprising a plurality of processors for processing layers of communication and associated node
US20150163153A1 (en) * 2009-07-21 2015-06-11 Microsoft Technology Licensing, Llc Packet aggregation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7079533B1 (en) * 2001-05-02 2006-07-18 Advanced Micro Devices, Inc. Systems and methods for bypassing packet lookups
US20110200041A1 (en) * 2004-04-28 2011-08-18 Smith Michael R Intelligent Adjunct Network Device
US20150163153A1 (en) * 2009-07-21 2015-06-11 Microsoft Technology Licensing, Llc Packet aggregation
US20140126577A1 (en) * 2011-02-17 2014-05-08 Alcatel-Lucent Network communication node comprising a plurality of processors for processing layers of communication and associated node

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YING-DAR LIN ET AL.: "Ordered lookup with bypass matching for scalable per-flow classification in layer 4 routers.", COMPUTER COMMUNICATIONS, 24 April 2001 (2001-04-24), pages 667 - 676, XP055383339 *

Similar Documents

Publication Publication Date Title
US11843657B2 (en) Distributed load balancer
US10999184B2 (en) Health checking in a distributed load balancer
US9432245B1 (en) Distributed load balancer node architecture
US9553809B2 (en) Asymmetric packet flow in a distributed load balancer
US10135914B2 (en) Connection publishing in a distributed load balancer
US9231871B2 (en) Flow distribution table for packet flow load balancing
US9559961B1 (en) Message bus for testing distributed load balancers
US8812725B2 (en) System and method for latency reduction in a network environment
CN106416197A (en) Method and system for load balancing anycast data traffic
US20160112502A1 (en) Distributed computing based on deep packet inspection by network devices along network path to computing device
CN102377640B (en) Message processing apparatus, message processing method and preprocessor
US9537785B2 (en) Link aggregation group (LAG) link allocation
WO2018112877A1 (en) Path calculating and access request distributing methods, devices and systems
CN106201356A (en) A kind of dynamic data dispatching method based on link available bandwidth state
US11303571B2 (en) Data communication method and data communications network
US10715437B2 (en) Deadline driven packet prioritization for IP networks
US7869366B1 (en) Application-aware rate control
US10887237B2 (en) Advanced load balancing based on bandwidth estimation
WO2017087017A1 (en) Flow table bypass
US20190391856A1 (en) Synchronization of multiple queues
AU2014253953B9 (en) Distributed load balancer
WO2017041569A1 (en) Service data transmission method and device

Legal Events

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

Ref document number: 16866773

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16866773

Country of ref document: EP

Kind code of ref document: A1