P
US7694024B2ExpiredUtilityPatentIndex 93

TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism

Assignee: ALACRITECH INCPriority: Oct 14, 1997Filed: Jan 22, 2007Granted: Apr 6, 2010
Est. expiryOct 14, 2017(expired)· nominal 20-yr term from priority
Inventors:PHILBRICK CLIVE MBOUCHER LAURENCE BBLIGHTMAN STEPHEN E JCRAFT PETER KHIGGEN DAVID ASTARR DARYL D
H04L 49/90H04L 67/62H04L 69/32H04L 49/901H04L 69/16H04L 69/163H04L 69/161H04L 69/166H04L 67/63H04L 69/12H04L 69/22
93
PatentIndex Score
35
Cited by
275
References
20
Claims

Abstract

A network interface device has a fast-path ACK generating and transmitting mechanism. ACKs are generated using a finite state machine (FSM). The FSM retrieves a template header and fills in TCP and IP fields in the template. The FSM is not a stack, but rather fills in the TCP and IP fields without performing transport layer processing and network layer processing sequentially as separate tasks. The filled-in template is placed into a buffer and a pointer to the buffer is pushed onto a high-priority transmit queue. Pointers for ordinary data packets are pushed onto a low-priority transmit queue. A transmit sequencer outputs a packet by popping a transmit queue, obtaining a pointer, and causing information pointed to by the pointer to be output from the network interface device as a packet. The sequencer pops the high-priority queue in preference to the low-priority queue, thereby accelerating ACK generation and transmission.

Claims

exact text as granted — not AI-modified
1. A method of outputting a first TCP/IP packet and a second TCP/IP packet from a network interface device, the first TCP/IP packet and the second TCP/IP packet being output to a network, comprising:
 (a) storing first packet information on the network interface device; 
 (b) pushing a first pointer to the first packet information onto a first transmit queue of the network interface device; 
 (c) storing second packet information on the network interface device; 
 (d) pushing a second pointer to the second packet information onto a second transmit queue of the network interface device, after the first pointer has been pushed onto the first transmit queue; and 
 (e) popping the second pointer off the second transmit queue and then popping the first pointer off the first transmit queue, the popped second pointer being used to locate the second packet information, the located second packet information then being output from the network interface device in the form of a second TCP/IP packet, the popped first pointer being used to locate the first packet information, the located first packet information being output from the network interface device in the form of a first TCP/IP packet such that the second TCP/IP packet is output from the network interface device and to the network before the first TCP/IP packet is output from the network interface device and to the network. 
 
   
   
     2. The method of  claim 1 , wherein the first TCP/IP packet is a data packet, wherein the second TCP/IP packet is a control packet, and wherein the network interface device is coupled to a host computer by an input/output bus. 
   
   
     3. The method of  claim 1 , wherein the first transmit queue contains pointers associated with a first set of packets, and wherein the second transmit queue contains pointers associated with a second set of packets, the second set of packets having transmission priority over the first set of packets. 
   
   
     4. The method of  claim 1 , wherein the network interface device comprises a transmit sequencer, a memory, and MAC interface circuitry, the transmit sequencer causing the second packet information to be transferred from the memory to the MAC interface circuitry, the second TCP/IP packet being output from the network interface device through the MAC interface circuitry. 
   
   
     5. The method of  claim 1 , wherein the first TCP/IP packet is associated with a first TCP/IP connection, and wherein the second TCP/IP packet is associated with a second TCP/IP connection. 
   
   
     6. The method of  claim 1 , wherein the first packet information includes a header portion and a data payload portion. 
   
   
     7. The method of  claim 1 , wherein the first pointer is part of a buffer descriptor. 
   
   
     8. The method of  claim 1 , further comprising:
 receiving onto the network interface device from the network a third packet; 
 fast-path processing the third packet on the network interface device such that a data payload portion of the third packet is written into a destination memory without a network protocol stack performing substantial transport or substantial network layer protocol processing on the third packet; 
 receiving onto the network interface device from the network a fourth packet; and 
 slow-path processing the fourth packet such that at least a data payload portion of the fourth packet is written into the destination memory, the network protocol stack performing substantial transport and substantial network layer protocol processing on the fourth packet. 
 
   
   
     9. The method of  claim 1 , wherein the second TCP/IP packet is a TCP ACK. 
   
   
     10. The method of  claim 8 , wherein the second TCP/IP packet is a TCP ACK. 
   
   
     11. The method of  claim 1 , wherein the second transmit queue is used for the transmission of TCP ACKs, and wherein the first transmit queue is used for the transmission of TCP/IP data packets, the second transmit queue being free of or substantially free of pointers to TCP/IP data packets. 
   
   
     12. The method of  claim 8 , wherein the network protocol stack is executed by a processor, the processor being a part of the network interface device. 
   
   
     13. The method of  claim 8 , wherein the network protocol stack is executed by a processor, the processor being a part of a host computer, the network interface device being coupled to the host computer. 
   
   
     14. A network interface device, comprising:
 a memory containing first packet information and second packet information; 
 a processor that causes a first pointer to the first packet information to be pushed onto a first transmit queue before a second pointer to the second packet information is pushed onto a second transmit queue; and 
 a transmit mechanism that pops the second queue in preference to popping the first queue, the transmit mechanism popping the second pointer off the second queue and outputting the second packet information from the network interface device in the form of a second TCP/IP packet, the transmit mechanism popping the first pointer off the first queue and outputting the first packet information from the network interface device in the form of a first TCP/IP packet, the transmit mechanism popping the second pointer from the second queue before popping the first pointer off the first queue, the second TCP/IP packet being output from the network interface device before the first TCP/IP packet is output from the network interface device. 
 
   
   
     15. The network interface device of  claim 14 , wherein the first TCP/IP packet is a data packet, and wherein the second TCP/IP packet is a control packet. 
   
   
     16. The network interface device of  claim 14 , wherein the first TCP/IP packet is a data packet associated with a first TCP/IP connection, and wherein the second TCP/IP packet is a TCP ACK associated with a second TCP/IP connection. 
   
   
     17. The network interface device of  claim 16 , wherein the TCP/IP offload network interface device is operatively coupled to a host computer, the host computer executing a protocol processing stack. 
   
   
     18. The network interface device of  claim 16 , wherein the network interface device includes a second processor, the second processor executing a protocol processing stack. 
   
   
     19. The network interface device of  claim 16 , wherein a template header having TCP fields and IP fields is stored on the network interface device, and wherein the processor executes a transmit finite state machine, the transmit finite state machine filling in the TCP fields and the IP fields of the template header, the filled in template header forming at least a part of the second packet information. 
   
   
     20. The network interface device of  claim 19 , wherein the transmit finite state machine does not include a TCP protocol processing layer and a discrete IP protocol processing layer, but rather the transmit finite state machine covers both TCP and IP protocol processing.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.