Method and apparatus for dynamic packet batching with a high performance network interface
First Claim
1. A method of identifying multiple packets in a communication flow between a source entity and a destination entity, comprising:
- storing a first flow identifier of a first packet received from a source entity for a destination entity, wherein said first flow identifier comprises an identifier of the source entity and an identifier of the destination entity;
storing said first packet in a packet memory for transfer toward the destination entity;
storing a second flow identifier of a second packet;
storing said second packet in said packet memory;
determining whether said first flow identifier matches said second flow identifier;
storing a first indicator in the destination entity if a first communication flow identified by said first flow identifier comprises said second packet; and
storing a second indicator in the destination entity if said first packet is the only packet stored in the packet memory that is part of said first communication flow.
3 Assignments
0 Petitions
Accused Products
Abstract
An intelligent network interface card (INIC) or communication processing device (CPD) works with a host computer for data communication. The device provides a fast-path that avoids protocol processing for most messages, greatly accelerating data transfer and offloading time-intensive processing tasks from the host CPU. The host retains a fallback processing capability for messages that do not fit fast-path criteria, with the device providing assistance such as validation even for slow-path messages, and messages being selected for either fast-path or slow-path processing. A context for a connection is defined that allows the device to move data, free of headers, directly to or from a destination or source in the host. The context can be passed back to the host for message processing by the host. The device contains specialized hardware circuits that are much faster at their specific tasks than a general purpose CPU. A preferred embodiment includes a trio of pipelined processors devoted to transmit, receive and utility processing, providing full duplex communication for four Fast Ethernet nodes.
-
Citations
27 Claims
-
1. A method of identifying multiple packets in a communication flow between a source entity and a destination entity, comprising:
-
storing a first flow identifier of a first packet received from a source entity for a destination entity, wherein said first flow identifier comprises an identifier of the source entity and an identifier of the destination entity;
storing said first packet in a packet memory for transfer toward the destination entity;
storing a second flow identifier of a second packet;
storing said second packet in said packet memory;
determining whether said first flow identifier matches said second flow identifier;
storing a first indicator in the destination entity if a first communication flow identified by said first flow identifier comprises said second packet; and
storing a second indicator in the destination entity if said first packet is the only packet stored in the packet memory that is part of said first communication flow. - View Dependent Claims (2)
-
-
3. A method of identifying one or more packets in a communication flow between a source entity and a destination entity, comprising:
-
receiving a first packet at a communication device;
identifying a first communication flow comprising said first packet with a first flow identifier configured to identify both the source entity and the destination entity;
determining whether said first communication flow also comprises a second packet received at said communication device after said first packet was received at said communication device; and
transferring said first packet to a host computer for processing in accordance with a communication protocol associated with said first packet. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 24, 27)
-
-
16. A method of transferring a packet from a network interface to a host computer, comprising:
-
receiving a first packet at a network interface;
storing said first packet in a packet memory;
receiving a first flow identifier configured to identify a communication flow comprising said first packet;
storing said first flow identifier in a flow memory;
searching said flow memory for a second packet in said communication flow received at the network interface after said first packet;
transferring said first packet to said host computer; and
configuring an indicator in a host memory to indicate whether processing of said first packet by said host computer should be delayed to await transfer of said second packet to said host memory. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A computer system for processing a packet received from a network interface, comprising:
-
a network interface configured to receive a first packet from a network and transfer said first packet to a host computer memory, said network interface comprising;
a packet memory configured to store said first packet;
a flow memory for storing a first flow number associated with said first packet, wherein said first flow number is configured to identify a communication flow comprising said first packet;
a packet batcher configured to determine whether the communication flow includes a second packet stored in said packet memory after said first packet; and
a notifier configured to;
store a first code in a host indicator if said packet memory includes the second packet; and
store a second code in said host indicator if said packet memory does not include the second packet; and
a processor for processing a header portion of said first packet.
-
-
22. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of transferring a packet from a network interface to a host computer, the method comprising:
-
receiving a first packet at a communication device;
identifying a first communication flow comprising said first packet with a first flow identifier configured to identify both the source entity and the destination entity;
determining whether said first communication flow also comprises a second packet received at said communication device after said first packet was received at said communication device; and
transferring said first packet to a host computer for processing in accordance with a communication protocol associated with said first packet.
-
-
23. A processor readable storage medium containing a data structure configured to store information concerning a packet to be transferred from a network interface to a host computer, the data structure including one or more entries, each entry comprising:
-
a flow number configured to identify a communication flow comprising a first packet received at the network interface from a source entity for a destination entity associated with the host computer; and
a validity indicator configured to provide;
a first indication if said first packet is ready for transfer to the host computer; and
a second indication if said first packet is a control packet;
wherein said data structure is searched for a second entry containing said flow number when said first packet is transferred to the host computer to determine if said communication flow also comprises a second packet received at the network interface after said first packet.
-
-
25. A communication interface, comprising:
-
a header parser configured to parse a header of a first packet received at the communication interface, wherein the first packet was issued from a source entity for a destination entity;
a flow database configured to facilitate management of a communication flow comprising the first packet, the flow database comprising;
a flow key configured to identify the communication flow using identifiers of the source entity and the destination entity;
an activity indicator configured to indicate a recency with which a packet in the communication flow has been received; and
a validity indicator for indicating whether the communication flow is valid;
a code generator configured to generate an operation code for the first packet, to facilitate forwarding of the first packet toward the destination entity; and
a packet batching module configured to determine whether a second packet received at the communication interface is part of the communication flow.
-
-
26. A method of processing a packet through a communication interface, the method comprising:
-
receiving a first packet from a network, wherein the first packet is part of a communication flow between a source entity and a destination entity;
determining whether a header portion of the first packet conforms to one of a set of communication protocols;
assembling a flow identifier to identify the communication flow, wherein said flow identifier comprises a source entity identifier and a destination entity identifier;
updating a flow database configured to facilitate management of communication flows through the communication interface, wherein said updating comprises;
configuring a flow activity indicator associated with the communication flow to reflect receipt of the first packet; and
configuring a flow validity indicator associated with the communication flow to indicate that the communication flow is valid;
assigning an operation code to the first packet, said operation code indicating whether a portion of data in the first packet is reassembleable with another portion of data in another packet in the communication flow; and
determining whether a second packet received at the communication interface is part of the communication flow.
-
Specification