Method and apparatus for data re-assembly with a high performance network interface
First Claim
1. A method of storing a portion of a packet in a host computer memory, comprising:
- receiving a first packet at a communication interface;
receiving a second packet at said communication interface;
storing a header portion of said first packet in a hybrid storage area of a host computer;
if said first packet includes a data portion, storing said data portion in a data storage area of said host computer; and
if said second packet is smaller than a predetermined size, storing said second packet in said hybrid storage area.
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
40 Claims
-
1. A method of storing a portion of a packet in a host computer memory, comprising:
-
receiving a first packet at a communication interface;
receiving a second packet at said communication interface;
storing a header portion of said first packet in a hybrid storage area of a host computer;
if said first packet includes a data portion, storing said data portion in a data storage area of said host computer; and
if said second packet is smaller than a predetermined size, storing said second packet in said hybrid storage area. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
10. A method of transferring multiple packets in a communication flow into a host computer, comprising:
-
receiving a first packet at a network interface for transfer to a host computer;
identifying a communication flow comprising said first packet;
receiving a second packet at said network interface, wherein said communication flow further comprises said second packet;
associating a code with said first packet to indicate whether a data portion of said first packet is re-assembleable with a data portion of another packet in said communication flow;
receiving a set of descriptors from the host computer, wherein an aggregate size of said set of descriptors approximates a cache line size of the host computer;
storing a header portion of said first packet in a header storage area;
storing said data portion of said first packet in a re-assembly storage area; and
storing a data portion of said second packet in said re-assembly storage area. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A method of network communication, the method comprising:
-
providing a computer having a processor and a memory, the memory including first, second and third storage areas that are accessible by a communication interface;
receiving, by the communication interface, a first packet, and storing the first packet in the first storage area;
receiving, by the communication interface, a second packet, storing a header of the second packet in the first storage area, and storing data of the second packet in the second storage area; and
receiving, by the communication interface, a third packet, and storing data of the third packet in the third storage area, the third storage area containing data from a plurality of packets and corresponding to an application running on the computer, the third storage area containing no headers. - View Dependent Claims (34, 38)
-
-
29. A network interface for transferring a packet from a network to a host computer, comprising:
-
a parser configured to examine one or more packets received from a network;
a flow manager configured to manage a first communication flow comprising said one or more packets;
a header storage area configured to store header portions of said one or more packets;
a first re-assembly storage area configured to store data portions of said one or more packets;
a second re-assembly storage area; and
a transfer module configured to;
transfer a data portion of a first packet of a second communication flow into said second re-assembly storage area if said first packet is larger than a predetermined size; and
otherwise, transfer said first packet into said header storage area. - View Dependent Claims (35, 36)
-
-
30. 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 to a host computer, the method comprising:
-
receiving a first packet at a communication interface;
receiving a second packet at said communication interface;
storing a header portion of said first packet in a hybrid storage area of a host computer;
if said first packet includes a data portion, storing said data portion in a data storage area of said host computer; and
if said second packet is smaller than a predetermined size, storing said second packet in said hybrid storage area.
-
-
31. A method of transferring a packet from a communication link to a host computer, comprising:
-
parsing a first packet received from a communication link to determine if the first packet conforms to a predetermined set of communication protocols;
generating, from identifiers of a source and a destination of the first packet extracted from the first packet, a flow key to identify a communication flow comprising the first packet;
updating a flow database to track a status of the communication flow;
associating a first operation code with the first packet to indicate whether the first packet is re-assembleable with another packet in the communication flow;
maintaining a plurality of storage areas for transferring packets to a host computer, including;
a first storage area configured to store data portions of packets in the communication flow;
a second storage area configured to store a packet having an associated operation code indicating that the packet is not re-assembleable; and
a third storage area configured to store packets less than a predetermined size and headers of packets having data portions stored in said first storage area; and
storing the first packet in one or more of said plurality of storage areas for transfer to the host computer. - View Dependent Claims (32, 33)
-
-
37. A communication interface configured to store packets for transfer to a host computer, comprising:
-
a parser configured to determine whether a packet includes a data portion;
a re-assembly storage area configured to store data portions of a plurality of packets from a single communication flow; and
a hybrid storage area configured to store;
header portions of the plurality of packets; and
one or more packets smaller than a first predetermined size. - View Dependent Claims (39, 40)
-
Specification