TECHNICAL FIELD

The disclosure relates to computer networks and, more particularly, to processing information communicated, or to be communicated, over a network.

BACKGROUND

In a typical cloud-based data center, a large collection of interconnected servers provides computing and/or storage capacity for execution of various applications. For example, a data center may comprise a facility that hosts applications and services for subscribers, i.e., customers of the data center. The data center may, for example, host all of the infrastructure equipment, such as compute nodes, networking and storage systems, power systems, and environmental control systems.

In most data centers, clusters of storage systems and application servers are interconnected via a high-speed switch fabric provided by one or more tiers of physical network switches and routers. In some implementations, packets communicated or to be communicated over the switch fabric are parsed by a state machine specific to the type of network being used and are processed by a pipeline of fixed function functional blocks.

SUMMARY

Aspects of this disclosure describes techniques for parsing network packets, processing network packets, and modifying network packets before forwarding the modified network packets over a network. The present disclosure describes a system that, in some examples, parses network packets, generates data describing or specifying attributes of the packet, identifies operations to be performed when processing a network packet, performs the identified operations, generates data describing or specifying how to modify and/or forward the packet, modifies the packet, and/or outputs the modified packet to another device or system, such as a switch.

In accordance with one or more aspects of the present disclosure, techniques described herein include parsing network packets to generate data, referred to in some examples as a parsed result vector, describing or specifying attributes of the packet. Based on the parsed result vector, a number of operations may be identified and performed to generate data, referred to in some examples as metadata, that describes how to modify and/or forward the packet. In some examples, network packets may be parsed by a set of parallel parsing devices, some of which share certain hardware used for the parsing. Further, in some examples, at least some of the operations may be performed by a series of flexible forwarding engines, where each of the flexible forwarding engines perform one or more operations that each updates metadata received from an earlier flexible forwarding engine or other block. The resulting metadata produced by the operations may, in some examples, be used to identify rewrite instructions that, when executed, modify the packet. The modified packet may be consumed by another functional block, such as one that forwards the packet on the network.

Techniques described herein further include associating a timestamp with a network packet, and carrying the timestamp or otherwise associating the timestamp with the network packet during some or all processing by one or more systems described herein. In some examples, the timestamp may be used to determine how much time has elapsed since the network packet started to be received by the system. Such information may be used to determine whether information derived from early portions of a network packet received at an ingress port can be transmitted, without causing an error, to a receiving device over an egress port before later portions of that same network packet have been received at the ingress ports. By evaluating the amount of time that has elapsed since the network packet started to be received, it may be possible to determine whether later portions of a network packet that have not yet been received will be received in a sufficient timely manner such that transmitting an early portion of the network packet will not incur an underrun error or other error. In some examples, data from the network packet may be organized into cell-sized units, which may represent a minimum amount of data that may be transmitted over an egress port at a time.

Techniques in accordance with one or more aspects of the present disclosure may provide several technical advantages. For instance, the manner in which parsing is performed in some examples may be flexible enough to enable parsing, by the same system, of multiple types of network packets. Further, aspects of one or more systems described herein may further enable high speed yet flexible parsing of multiple types of network packets in an efficient manner. For instance, in some examples, multiple parsing devices may be used in parallel, and techniques for sharing aspects of the parsing devices may be employed to attain high parsing rates. Further, by evaluating timestamp information to determine how much time has elapsed since a network packet started to be received by the system, it may be possible to start transmitting data derived from early portions of the network packet before the entire network packet has been received. Such a system may have very low latency, and may have a higher throughput and be more efficient than other systems, while ensuring little or no possibility of incurring an underrun condition or other error resulting from such early transmission.

In some examples, this disclosure describes operations performed by a low latency packet switch. In one specific example, this disclosure describes a method comprising: receiving, at an ingress port of a device, an initial portion of a network packet; storing, by the device, timestamp information associated with receiving the initial portion of the packet; determining, by the device, whether to transmit information derived from the initial portion of the network packet out an egress port by determining, based on the timestamp, that information from a later portion of the network packet will be available to be transmitted out the egress port at a later time such that transmitting the information derived from the initial portion of the network packet will not cause an underrun condition; and transmitting, by the device and out the egress port to a receiving device, the information derived from the initial portion of the network packet.

In another specific example, this disclosure describes a method comprising receiving, at an ingress port of a device, an initial portion of a network packet; storing, by the device, timestamp information associated with receiving the initial portion of the packet; identifying, by the device and based on information included within the network packet, an egress port of the device for outputting information to a destination device; determining, by the device, whether to transmit information derived from the initial portion of the network packet out the egress port by determining that information from a later portion of the network packet will be available to be transmitted out the egress port sufficiently soon such that transmitting the information derived from the initial portion of the network packet will not cause an underrun condition; transmitting, by the device and over the egress port to a receiving device, the information derived from the initial portion of the network packet; receiving, by the device and at the ingress port of the device, the later portion of the network packet; and transmitting, by the device and over the egress port to the receiving device, the information from the later portion of the network packet.

In other examples, this disclosure describes one or more systems, components, or devices that perform various operations as described herein. In still other examples, this disclosure describes a computer-readable storage medium comprising instructions that, when executed, configure processing circuitry of a computing system to perform various operations as described herein.

The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.

