Claims
- 1. A method for receiving at a first host computer receive data associated with a bi-directional data flow between said first host computer and a second host computer, said first host computer and said second host computer being coupled via a computer network, said method comprising:
ascertaining, responsive to a receipt of a first set of packets received at said first host computer, an expected sequence number parameter, said first set of packets being associated with said bi-directional data flow, said expected sequence number parameter being stored in a first control block implemented in said first host computer and associated with said bi-directional data flow, said first control block being configured to store receive-facilitating parameters employed for receiving, using the TCP protocol, said receive data; and if said expected sequence number parameter indicates that a first set of packets received at said first host computer represents packets in order, updating in said first control block said expected sequence parameter, wherein said first host computer is also configured to transmit, using the TCP protocol, transmit data associated with said bi-directional data flow from said first host computer to said second computer, a request to transmit a portion of said transmit data being serviced simultaneously with receiving said first set of packets, transmit-facilitating parameters employed to transmit said transmit data being stored in a second control block at the same time that said receive-facilitating parameters are stored in said first control block, said second control block being implemented in said first host computer and associated with said bi-directional data flow.
- 2. The method of claim 1 further comprising
ascertaining whether said first set of packets pertains to acknowledgment for previously transmitted data from said first host computer to said second host computer; and if said first set of packets pertains to said acknowledgement, updating timer-related parameters in said second control block responsive to information extracted from said first set of packets.
- 3. The method of claim 1 further comprising
ascertaining whether said first set of packets pertains to acknowledgment for previously transmitted data from said first host computer to said second host computer; and if said first set of packets pertains to said acknowledgement, updating a transmit window parameter in said second control block responsive to information extracted from said first set of packets.
- 4. The method of claim 1 further comprising
ascertaining whether said first set of packets pertains to acknowledgment for previously transmitted data from said first host computer to said second host computer; and if said first set of packets does not pertain to said acknowledgement, preparing an acknowledgment packet using parameters stored in said first control block and information extracted from said first set of packets, said acknowledgment packet being configured to be transmitted to said second host computer and pertains to an acknowledgement to said second host computer of said receipt of said first set of packets by said first host computer.
- 5. The method of claim 4 wherein said acknowledgement packet is prepared using a transmit network processor (Tx NPP) associated with transmit circuitry for transmitting said transmit data.
- 6. The method of claim 1 further comprising storing, if said expected sequence number parameter indicates that said first set of packets represents out-of-order packets, said first set of packets without sending said first set of packets to an application executing in said first host computer, said application executing in said first host computer representing an application program expecting to receive data associated with said bi-directional data flow, said storing employs out-of-order buffer parameters associated with said first control block.
- 7. The method of claim 6 further comprising
receiving at said first host computer a second set of packets, said second set of packets being associated with said data flow, said second set of packets being received subsequent to said receipt of said first set of packets; putting together said first set of packets and said second set of packets to form a plurality of packets having their sequence numbers in order; and transmitting said plurality of packets to said application executing in said first host computer.
- 8. The method of claim 1 wherein said first host computer is a personal computer.
- 9. The method of claim 8 wherein said second host computer is a server associated with a storage area network (SAN).
- 10. The method of claim 1 wherein said second host computer is a server associated with a network attached storage (NAS) arrangement.
- 11. The method of claim 1 wherein both said first control block and said second control block are implemented on a network interface card configured to be detachably coupled with a bus in said first host computer.
- 12. The method of claim 1 wherein said first host computer is coupled to other host computers via said computer network, said first host computer communicates with said other host computers via a plurality of bi-directional data flows, said first host computer implementing a first plurality of control blocks, each of said first plurality of control blocks being associated with a respective one of said bi-directional data flows and employed for storing receive-facilitating parameters employed for receiving data from a respective one of said other host computers.
- 13. The method of claim 12 wherein said first host computer also implements a second plurality of control blocks, each of said second plurality of control blocks being associated with said respective one of said bi-directional data flows and employed for storing transmit-facilitating parameters employed for transmitting data to said respective one of said other host computers and wherein said each of said second plurality of control blocks stores said transmit-facilitating parameters at the same time that said each of said first plurality of control blocks stores said receive-facilitating parameters.
- 14. The method of claim 13 wherein said first plurality of control blocks and said second plurality of control blocks are implemented on a network interface card configured to be detachably coupled with a bus in said first host computer.
- 15. The method of claim 14 wherein processes for updating said first plurality of control blocks and said second plurality of control blocks represent processes offloaded from a host processor in said first host computer.
- 16. The method of claim 1 wherein said transmit data represents block storage data transmitted in accordance to the iSCSI protocol.
- 17. A method for receiving receive data associated with a bi-directional data flow between a first host computer and a second host computer, said first host computer and said second host computer being coupled via a computer network, said method comprising:
storing receive-facilitating parameters employed for said receiving said receive data in a first control block, said first control block being implemented in said first host computer and associated with said bi-directional data flow, said receiving said receive data being performed in accordance with the TCP protocol; and employing said receive-facilitating parameters in said first control block to facilitate receiving a given portion of said receive data at said first host computer from said second computer, wherein said receiving said given portion of said receive data occurs simultaneously with servicing a transmit request pertaining to transmit data associated with said bi-directional data flow from said first host computer to said second host computer, said transmit data being transmitted using transmit-facilitating parameters stored in a second control block implemented in said first host computer, said transmit data being transmitted in accordance with said TCP protocol.
- 18. The method of claim 17 wherein said receive-facilitating parameters are stored in said first control block at the same time that said transmit-facilitating parameters are stored in said second control block.
- 19. The method of claim 18 wherein said first control block is a transmit transmit control block (Tx TCB) and said second control block is a receive transmit control block (Rx TCB).
- 20. The method of claim 19 wherein said Tx TCB and said Rx TCB are implemented in a network interface card (NIC card) configured to be detachably coupled to said first host computer.
- 21. The method of claim 17 processes involved in updating said first control block and said second control block represent processes offloaded from a host processor of said first host computer, said updating said first control block and said second control block being performed responsive to said servicing said transmit request and said receiving said given portion of said receive data respectively.
- 22. The method of claim 17 wherein said first host computer represents a desktop computer.
- 23. The method of claim 17 wherein said first host computer represents a server associated with a storage area network (SAN).
- 24. The method of claim 17 wherein said storing said receive-facilitating parameters in said first control block includes storing TCP source port and TCP destination port parameters associated with said bi-directional data flow.
- 25. The method of claim 24 wherein said storing said receive-facilitating parameters in said first control block further includes storing reorder buffer parameters configured to track out-of-order packets received at said first host computer.
- 26. The method of claim 17 further comprising
ascertaining whether said given portion of said receive data pertains to acknowledgment for previously transmitted data from said first host computer to said second host computer; and if said given portion of said receive data does not pertain to said acknowledgement, preparing an acknowledgment packet using parameters stored in said first control block and information extracted from said given portion of said receive data, said acknowledgment packet being configured to be transmitted to said second host computer and pertains to an acknowledgement to said second host computer of a receipt of said given portion of said receive data by said first host computer.
- 27. The method of claim 26 wherein said acknowledgement packet is prepared using a transmit network processor (Tx NPP) associated with transmit circuitry for transmitting said transmit data.
- 28. Circuitries for facilitating data exchange via a network, said circuitries being associated with a first host computer coupled to a network, said network being coupled to a second host computer, said circuitries comprising:
means for storing receive-facilitating parameters employed for receiving receive data associated with a bi-directional data flow at said first host computer from said second host computer, said receive data being received using the TCP protocol, said means for storing being implemented in said first host computer; and means for receiving a given portion of said receive data using said receive-facilitating parameters, wherein said receiving said given portion of said receive data occurs simultaneously with servicing a transmit request pertaining to transmit data associated with said bi-directional data flow to said second host computer from said first host computer, said transmit data being transmitted using parameters stored in means for storing transmit-facilitating parameters, said means for storing transmit-facilitating parameters also being implemented in said first host computer, said transmit data being transmitted in accordance with said TCP protocol.
- 29. The circuitries of claim 28 wherein said means for storing said receive-facilitating parameters is implemented on a network interface card (NIC card) that is configured to be detachably coupled to a bus of said first host computer.
- 30. Circuitries for facilitating data exchange via a network, said circuitries being associated with a first host computer coupled to said network, said network being coupled to a second host computer, said circuitries comprising:
a first control block configured to store receive-facilitating parameters employed for receiving receive data associated with a bi-directional data flow at said first host computer from said second host computer, said receive data being received using the TCP protocol, said first control block being implemented in said first host computer; and circuitry configured to receive a given portion of said receive data using said receive-facilitating parameters, wherein said receiving said given portion of said receive data occurs simultaneously with servicing a transmit request pertaining to transmit data associated with said bi-directional data flow from said first host computer to said second host computer, said transmit data being transmitted using parameters stored in a second control block, said second control block also being implemented in said first host computer, said transmit data being transmitted in accordance with said TCP protocol.
- 31. Circuitries of claim 30 wherein said receive-facilitating parameters include reorder buffer parameters configured to track out-of-order packets received at said first host computer.
- 32. Circuitries of claim 30 wherein said receive-facilitating parameters include a TCP source port parameter and a TCP destination port parameter.
- 33. Circuitries of claim 30 wherein said receive-facilitating parameters include an expected sequence number parameter.
Parent Case Info
[0001] This application claims priority under 35 USC 119(e) of the following patent application(s), which is incorporated by reference herein
[0002] METHOD OF IMPLEMENTING TRANSMISSION CONTROL PROTOCOL/INTERNET PROTOCOL IN HARDWARE (A/No. 60/316,651, filed Aug. 31, 2001).
[0003] This application incorporates by reference the following patent applications:
[0004] 1 SYSTEMS AND METHODS FOR HIGH SPEED DATA TRANSMISSION USING TCP/IP (ATECP002-R1/SNG-011A), filed on even date herewith.
[0005] 2 APPARATUS AND METHODS FOR TRANSMITTING DATA AT HIGH SPEED USING TCP/IP (ATECP002-R2/SNG-026A), filed on even date herewith.
[0006] 3 METHODS AND APPARATUS FOR PARTIALLY REORDERING DATA PACKETS (ATECP002-R4/SNG-030/A), filed on even date herewith.
[0007] 4 SYSTEMS AND METHODS FOR IMPLEMENTING HOST-BASED SECURITY IN A COMPUTER NETWORK (ATECP008/SNG-029A), filed on even date herewith.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60316651 |
Aug 2001 |
US |