High performance network interface
First Claim
1. A method of transferring a packet to a computer system, wherein the packet is received at a communication device from a network, comprising:
- parsing a header portion of a first packet received at a communication device to determine if said first packet conforms to a pre-selected protocol;
generating a flow key to identify a first communication flow that includes said first packet;
transferring said first packet to a host computer system for processing in accordance with said pre-selected protocol; and
associating an operation code with said first packet, wherein said operation code indicates a status of said first packet.
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
62 Claims
-
1. A method of transferring a packet to a computer system, wherein the packet is received at a communication device from a network, comprising:
-
parsing a header portion of a first packet received at a communication device to determine if said first packet conforms to a pre-selected protocol;
generating a flow key to identify a first communication flow that includes said first packet;
transferring said first packet to a host computer system for processing in accordance with said pre-selected protocol; and
associating an operation code with said first packet, wherein said operation code indicates a status of said first packet. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 41, 46, 57)
-
-
13. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of transferring a packet received at a network interface from a network to a host computer system, the method comprising:
-
receiving a packet from a network at a network interface for a host computer system;
parsing a header portion of said packet to extract an identifier of a source entity and an identifier of a destination entity;
generating a flow key from said source identifier and said destination identifier to identify a communication flow comprising said packet;
determining whether a header in said header portion conforms to a pre-selected protocol;
storing said flow key in a database;
associating an operation code with said packet, wherein said operation code identifies a status of said packet;
storing said packet in a packet memory;
if said header conforms to said pre-selected protocol;
storing a data portion of said packet in a re-assembly buffer; and
storing said header portion in a header buffer; and
if said header conforms to a protocol other than said pre-selected protocol, storing said packet in a non-re-assembly buffer.
-
-
24. A method of transferring a packet to a computer system, wherein the packet is received at a communication device from a network, comprising:
-
parsing a header portion of a first packet received at a communication device to determine if said first packet conforms to a pre-selected protocol;
generating a transmit control block (TCB) to identify a first communication flow that includes said first packet;
transferring said first packet to a host computer system for processing in accordance with said pre-selected protocol; and
associating a summary with said first packet, wherein said summary indicates a status of said first packet. - View Dependent Claims (25, 26)
-
-
32. A method of transferring a packet received at a network interface to a host computer system, comprising:
-
receiving a packet from a network;
storing said packet in a packet memory;
parsing a header portion of said packet;
extracting a value stored in said header portion;
identifying a communication flow comprising said packet;
determining whether a header in said header portion conforms to a pre-selected protocol;
determining whether a second packet in said packet memory is part of said communication flow;
if the host computer system contains a plurality of processors, identifying a processor to process said packet; and
storing said packet in a host memory area.
-
-
33. A method of transferring a packet received at a network interface from a network to a host computer system, comprising:
-
receiving a packet from a network at a network interface for a host computer system;
parsing a header portion of said packet to extract an identifier of a source entity and an identifier of a destination entity;
generating a flow key from said source identifier and said destination identifier to identify a communication flow comprising said packet;
determining whether a header in said header portion conforms to a pre-selected protocol;
storing said flow key in a database;
associating an operation code with said packet, wherein said operation code identifies a status of said packet;
storing said packet in a packet memory;
if said header conforms to said pre-selected protocol;
storing a data portion of said packet in a re-assembly buffer; and
storing said header portion in a header buffer; and
if said header conforms to a protocol other than said pre-selected protocol, storing said packet in a non-re-assembly buffer. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40)
-
-
42. An apparatus for transferring a packet to a host computer system, comprising:
-
a traffic classifier configured to classify a first packet received from a network by a communication flow that includes said first packet;
a packet memory configured to store said first packet;
a packet batching module configured to determine whether another packet in said packet memory belongs to said communication flow; and
a flow re-assembler configured to re-assemble a data portion of said first packet with a data portion of a second packet in said communication flow;
wherein said first packet data portion and said second packet data portion are stored in a host computer memory area to enable efficient transfer of said memory area contents. - View Dependent Claims (43, 45)
-
-
44. A computer system for receiving a packet from a network, comprising:
-
a memory configured to store packets received from a network; and
a communication device configured to receive a first packet from said network, the communication device comprising;
a parser configured to extract information from a header portion of a first packet;
a flow manager configured to examine said information;
a flow database configured to store an identifier of a first communication flow comprising multiple packets, including said first packet; and
a re-assembler for storing data portions of said multiple packets in a first portion of said memory; and
a processor for processing said first packet.
-
-
47. A device for receiving a packet from a network and transferring the packet to a host computer system, comprising:
a parser configured to parse a header portion of a packet received from a network, wherein said parsing comprises;
determining whether a header within said header portion conforms to one of a set of communication protocols; and
if said header conforms to one of said communication protocols, extracting information from said header portion to identify a communication flow to which said packet belongs;
a flow memory configured to store a flow identifier for identifying said communication flow;
a flow manager configured to assign an operation code to said packet, wherein said operation code;
indicates a status of said packet; and
indicates a manner of transferring said packet to the host computer system;
a packet memory configured to store said packet; and
a transfer module configured to transfer said packet from said packet memory to a host computer system in accordance with said operation code. - View Dependent Claims (48, 49, 50, 51, 52, 54, 55, 56)
-
53. 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 communication device to a host computer, the method comprising:
-
parsing a header portion of a first packet received at a communication device to determine if said first packet conforms to a pre-selected protocol;
generating a flow key to identify a first communication flow that includes said first packet;
transferring said first packet to a host computer system for processing in accordance with said pre-selected protocol; and
associating an operation code with said first packet, wherein said operation code indicates a status of said first packet.
-
-
58. An apparatus for transferring a packet from a network to a host computer system, comprising:
-
a parser module configured to;
parse a header portion of a first packet received from a network to extract an identifier of a source of said first packet and an identifier of a destination of said first packet;
generate a flow key from said source identifier and said destination identifier to identify a communication flow comprising said first packet; and
determine whether a header in said header portion conforms to a pre-selected protocol;
a flow database configured to store said flow key;
a flow database manager configured to associate an operation code with said first packet, wherein said operation code identifies a status of said first packet;
a packet memory configured to store said first packet; and
a transfer module configured to;
if said header conforms to said pre-selected protocol;
store a data portion of said first packet in a re-assembly buffer; and
store said header portion in a header buffer; and
if said header conforms to a protocol other than said pre-selected protocol, store said packet in a non-re-assembly buffer. - View Dependent Claims (59, 60, 61, 62)
-
Specification