Intelligent network interface device and system for accelerated communication
DC CAFCFirst Claim
1. A method of transferring a packet to a host 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 network interface for the host computer system to determine if said first packet conforms to a TCP protocol;
generating a flow key to identify a first communication flow that includes said first packet, wherein said flow key includes a TCP connection for the communication flow;
associating an operation code with said first packet, wherein said operation code indicates a status of said first packet, including whether said packet is a candidate for transfer to the host computer system that avoids processing said header portion by the host computer system in accordance with said TCP protocol; and
processing, by the network interface, said packet according to the TCP connection, including updating a control block representing the TCP connection on the network interface.
3 Assignments
Litigations
6 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
60 Claims
-
1. A method of transferring a packet to a host 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 network interface for the host computer system to determine if said first packet conforms to a TCP protocol; generating a flow key to identify a first communication flow that includes said first packet, wherein said flow key includes a TCP connection for the communication flow; associating an operation code with said first packet, wherein said operation code indicates a status of said first packet, including whether said packet is a candidate for transfer to the host computer system that avoids processing said header portion by the host computer system in accordance with said TCP protocol; and processing, by the network interface, said packet according to the TCP connection, including updating a control block representing the TCP connection on the network interface. - 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, 40, 45, 55)
-
-
13. A non-transitory 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, wherein said flow key identifies a TCP connection for the communication flow; determining whether a header in said header portion conforms to the TCP 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, including whether said packet is to be TCP processed by the host computer; storing said packet in a packet memory; if said operation code indicates that said packet is not to be TCP processed by the host computer; storing a data portion of said packet in a re-assembly buffer; and storing said header portion in a header buffer; and processing, by the network interface, said packet according to the TCP connection, including updating a control block representing the TCP connection on the network interface.
-
-
24. A method of transferring a packet to a host computer system, wherein the packet is received at a communication device for the host computer system 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 TCP protocol, wherein said header portion includes an IP address of the host computer system; generating a TCP connection to identify a first communication flow that includes said first packet; associating a summary with said first packet, wherein said summary indicates a status of said first packet, including whether said packet is a candidate for transfer to the host computer system that avoids processing said header portion by the host computer system in accordance with said TCP protocol; and processing, by the network interface, said packet according to the TCP connection, including updating a control block representing the TCP connection on the network interface. - View Dependent Claims (25, 26)
-
-
31. A method of transferring a packet received at a network interface of a host computer system, comprising:
-
receiving, by the network interface, a packet from a network; storing, by the network interface, said packet in a packet memory; parsing, by the network interface, a header portion of said packet; extracting, by the network interface, a value stored in said header portion; identifying, by the network interface, a communication flow comprising said packet, wherein said communication flow key identifies a TCP connection and a first hop medium access control (MAC) layer address; determining, by the network interface, whether a header in said header portion conforms to the TCP protocol; determining, by the network interface, whether a second packet in said packet memory is part of said communication flow; processing, by the network interface, said packet according to the TCP connection, including updating a control block representing the TCP connection on the network interface; if the host computer system contains a plurality of processors such that a first of the processors is on the network interface and a second of the processors is on the host computer, identifying a processor of the first and second processors to process said second packet; and storing, by the network interface, said packet in a host memory area.
-
-
32. 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 of 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, wherein said flow key includes a TCP connection for the communication flow and a first hop medium access control (MAC) layer address; 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 the TCP protocol; storing a data portion of said packet in a re-assembly buffer; storing said header portion in a header buffer; and processing, by the network interface, said packet according to the TCP connection. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39)
-
-
41. An apparatus for transferring a packet to a host computer system, comprising:
-
a traffic classifier, disposed in a network interface for the host computer system, configured to classify a first packet received from a network by a communication flow that includes said first packet; a packet memory, disposed in the network interface, configured to store said first packet; a packet batching module, disposed in the network interface, configured to determine whether another packet in said packet memory belongs to said communication flow; a flow re-assembler, disposed in the network interface, configured to re-assemble a data portion of said first packet with a data portion of a second packet in said communication flow; and a processor, disposed in the network interface, that maintains a TCP connection for the communication flow, the TCP connection stored as a control block on the network interface. - View Dependent Claims (42, 44)
-
-
43. A computer system for receiving a packet from a network, comprising:
-
a memory configured to store packets received from a network; and a network interface for the computer system, the network interface configured to receive a first packet from said network, the network interface 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 without header portions in a first portion of said memory; and a processor for processing said first packet and for maintaining a TCP connection for the communication flow, the TCP connection stored as a control block on the network interface.
-
-
46. 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 the host computer system in accordance with said operation code, wherein said device is a peripheral device for the host computer system; wherein said device maintains a TCP connection for the communication flow, the TCP connection stored as a control block on the device. - View Dependent Claims (47, 48, 49, 50, 51, 53, 54)
-
-
52. A non-transitory 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 for a host computer to the host computer, the method comprising:
-
parsing a header portion of a first packet received at a network interface for the host computer to determine if said first packet conforms to a TCP protocol; generating a flow key to identify a first communication flow that includes said first packet, wherein said flow key includes an IP address and a TCP port for a TCP connection of the host computer system; associating an operation code with said first packet, wherein said operation code indicates a status of said first packet, including whether said packet is a candidate for transfer to the host computer system that avoids processing said header portion by the host computer system in accordance with said TCP protocol; and processing, by the network interface, said packet the according to the TCP connection, including updating a control block representing the TCP connection on the network interface.
-
-
56. 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, wherein said destination is part of the host computer system; 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; wherein said apparatus maintains a TCP connection for the communication flow. - View Dependent Claims (57, 58, 59, 60)
-
Specification