Patent classifications
H04L49/9036
Switch device for facilitating switching in data-driven intelligent network
- Abdulla M. Bataineh ,
- Jonathan P. Beecroft ,
- Thomas L. Court ,
- Anthony M. Ford ,
- Edwin L. Froese ,
- David Charles Hewson ,
- Joseph G. Kopnick ,
- Andrew S. Kopser ,
- Duncan Roweth ,
- Gregory Faanes ,
- Michael Higgins ,
- Timothy J. Johnson ,
- Trevor Jones ,
- James Reinhard ,
- Edward J. Turner ,
- Steven L. Scott ,
- Robert L. Alverson
A switch architecture for a data-driven intelligent networking system is provided. The system can accommodate dynamic traffic with fast, effective congestion control. The system can maintain state information of individual packet flows, which can be set up or released dynamically based on injected data. Each flow can be provided with a flow-specific input queue upon arriving at a switch. Packets of a respective flow are acknowledged after reaching the egress point of the network, and the acknowledgement packets are sent back to the ingress point of the flow along the same data path. As a result, each switch can obtain state information of each flow and perform flow control on a per-flow basis.
METHOD OF REDUCING LATENCY IN COMMUNICATION OF DATA PACKETS
A method of reducing latency in communication of data packets comprising the steps of: receiving a data packet from a first device; determining whether the addition of the data packet results in the current number of data packets stored in all data queues exceeds a global threshold limit, where if the addition of the data packet results in the number of data packets stored not exceeding the global threshold limit then (i) allocate the data packet to a queueing group based on a predetermined factor; (ii) determine whether the addition of the data packets results in the number of data packets stored in the data queues of the allocated queueing group exceeds a local threshold limit. However, if the addition of the data packet results in the number of data packets stored not exceeding the local threshold limit then allocate the data packet to a data queue in the allocated queueing group based on the predetermined factor. The data packets stored in each data queue of a queueing group thereafter being processed as normal. But, if the addition of the data packet results in either the global threshold limit or the local threshold limit being exceeded, the first data packet from the longest data queue in an identified queueing group is dropped, the identified queueing group being a queuing group pointed to by a pointer in the case of the global threshold limit being exceeded and the identified queueing group by the allocated queueing group in the case of the local threshold limit being exceeded.
System and method for facilitating efficient host memory access from a network interface controller (NIC)
A network interface controller (NIC) capable of efficient memory access is provided. The NIC can be equipped with an operation logic block, a signaling logic block, and a tracking logic block. The operation logic block can maintain an operation group associated with packets requesting an operation on a memory segment of a host device of the NIC. The signaling logic block can determine whether a packet associated with the operation group has arrived at or departed from the NIC. Furthermore, the tracking logic block can determine that a request for releasing the memory segment has been issued. The tracking logic block can then determine whether at least one packet associated with the operation group is under processing in the NIC. If no packet associated with the operation group is under processing in the NIC, tracking logic block can notify the host device that the memory segment can be released.
USER INTERFACE FOR CUSTOMIZING DATA STREAMS AND PROCESSING PIPELINES
Systems and methods are described for customizable data streams in a streaming data processing system. Routing criteria for the customizable data streams are defined by a user, an automated process, or any other process. The routing criteria can be defined using graphical controls. The streaming data processing system uses the routing criteria to determine data that should be used to populate a particular data stream. Further, processing pipelines are customized such that a particular processing pipeline can obtain data from a particular user defined data stream and write data to a particular user defined data stream. Data is routed through the user defined data streams and customized processing pipelines based on a data route. A data route for a set of data may include multiple user defined data streams and multiple processing pipelines. The data route can include a loop of processing pipelines and data streams.
GENERATION OF DESCRIPTIVE DATA FOR PACKET FIELDS
Some embodiments provide a method for a parser of a processing pipeline. The method receives a packet for processing by a set of match-action stages of the processing pipeline. The method stores packet header field (PHF) values from a first set of PHFs of the packet in a set of data containers. The first set of PHFs are for use by the match-action stages. For a second set of PHFs not used by the match-action stages, the method generates descriptive data that identifies locations of the PHFs of the second set within the packet. The method sends (i) the set of data containers to the match-action stages and (ii) the packet data and the generated descriptive data outside of the match-action stages to a deparser that uses the packet data, generated descriptive data, and the set of data containers as modified by the match-action stages to reconstruct a modified packet.
METHODS FOR DISTRIBUTING SOFTWARE-DETERMINED GLOBAL LOAD INFORMATION
Systems and methods are provided for performing routing in a switch network or fabric. Switches can be configured in a hierarchical topology having a plurality of groups, where switches in a group are connected to one another, and groups are connected to other groups. Routing can be performed by maintaining per-group group load information. A packet can be routed between at least two groups using the per-group group load information to effect a set of routing decisions. The set of routing decisions can be biased towards or away one or more paths.
Generation of descriptive data for packet fields
Some embodiments provide a method for a parser of a processing pipeline. The method receives a packet for processing by a set of match-action stages of the processing pipeline. The method stores packet header field (PHF) values from a first set of PHFs of the packet in a set of data containers. The first set of PHFs are for use by the match-action stages. For a second set of PHFs not used by the match-action stages, the method generates descriptive data that identifies locations of the PHFs of the second set within the packet. The method sends (i) the set of data containers to the match-action stages and (ii) the packet data and the generated descriptive data outside of the match-action stages to a deparser that uses the packet data, generated descriptive data, and the set of data containers as modified by the match-action stages to reconstruct a modified packet.
Data Forwarding Method, Data Buffering Method, Apparatus, and Related Device
A data forwarding method includes, after congestion of an egress queue is relieved, a network device that receives a packet from an upstream node, and determines whether a storage device associated with the egress queue buffers a previous packet that belongs to a same data flow as the packet. When the storage device does not buffer the previous packet, the network device schedules the packet to the egress queue, to forward the packet to a downstream node, where the storage device is configured to receive, during congestion of the egress queue, a packet sent by the network device.
STREAMING COMMUNICATION BETWEEN DEVICES
In accordance with implementations of the subject matter described herein, there is provided a solution for streaming communication between devices. In this solution, a memory of a first device comprising a ring buffer is allocated to be dedicated for storing a data stream of an application to be transmitted to a second electronic device. The application of the first device writes data to be transmitted into the ring buffer, to form a portion of the first data stream, and a write pointer of the ring buffer is thus updated. A portion of data is read based on a source memory address from the ring buffer via the interface device. The interface device also transmits the data portion to a second device. The read data portion is stored in a dedicated ring buffer of the memory. In accordance with the solution, an efficient streaming communication interface is provided between devices.
ALGORITHMS FOR USE OF LOAD INFORMATION FROM NEIGHBORING NODES IN ADAPTIVE ROUTING
Systems and methods are provided for passing data amongst a plurality of switches having a plurality of links attached between the plurality of switches. At a switch, a plurality of load signals are received from a plurality of neighboring switches. Each of the plurality of load signals are made up of a set of values indicative of a load at each of the plurality of neighboring switches providing the load signal. Each value within the set of values provides an indication for each link of the plurality of links attached thereto as to whether the link is busy or quiet. Based upon the plurality of load signals, an output link for routing a received packet is selected, and the received packet is routed via the selected output link.