Claims
- 1. A method for use in tracking received out-of-order packets, the method comprising:
receiving at least a portion of a packet that includes data identifying an order within a sequence; and based on the data identifying the order, requesting stored data identifying a set of contiguous previously received out-of-order packets having an ordering within the sequence that borders the received packet.
- 2. The method of claim 1, wherein the requesting stored data comprises requesting data from at least one content-addressable memory.
- 3. The method of claim 1, further comprising storing data that identifies, at least, the start and end boundaries of at least one of the sets.
- 4. The method of claim 3, wherein requesting the data comprises requesting data that identifies a set of contiguous previously received out-of-order packets that border the end of the received packet.
- 5. The method of claim 3, wherein requesting the data comprises requesting data that identifies a set of contiguous previously received out-of-order packets that border the start of the received packet.
- 6. The method of claim 1, further comprising,
if the received packet borders a set of contiguous previously received out-of-order packets, modifying the stored data for the set of contiguous previously received out-of-order packets to include the received packet.
- 7. The method of claim 1,
wherein the requesting data comprises querying at least two content-addressable memories, wherein a first of the content-addressable memories stores data that identifies the start of a boundary of at least one of the sets of contiguous previously received out-of-order packets and a second of the content-addressable memories stores data that identifies the end boundary of at least one of the set of contiguous previously received out-of-order packets; and wherein the requesting data comprises:
querying the first content-addressable memory to determine if the received packet borders the start of a set of contiguous previously received out-of-order packets, and querying the second content-addressable memory to determine if the received packet borders the end of a set of contiguous previously received out-of-order packets.
- 8. The method of claim 1, wherein the data identifying an order comprises at least one TCP (Transmission Control Protocol) sequence number.
- 9. The method of claim 8, wherein the stored data identifies the end of a set of contiguous previously received out-of-order packets, and wherein the end of a set is identified by incrementing the last sequence number of the last packet in the set by one.
- 10. The method of claim 1, wherein the received packet comprises a packet received in-order.
- 11. The method of claim 10, further comprising:
identifying a set of contiguous previously received out-of-order packets that border the end of the received in-order packet.
- 12. The method of claim 1, wherein the receiving the at least a portion of the packet comprises receiving data included in a header of the packet.
- 13. The method of claim 1, wherein the receiving the at least a portion of the packet comprises receiving the at least a portion at a network protocol off-load engine.
- 14. The method of claim 13, wherein the network protocol off-load engine comprises at least one content-addressable memory to store data for different network connections.
- 15. A computer program product, disposed on a computer readable medium, for use in tracking received out-of-order packets, the program including instructions for causing a processor to:
receive at least a portion of a packet that includes data identifying an order within a sequence; and based on the data identifying the order, request stored data identifying at least one set of contiguous previously received out-of-order packets having an ordering within the sequence that borders the received packet.
- 16. The computer program of claim 15, wherein the instructions for causing the processor to request stored data comprise instructions for causing the processor to request data from at least one content-addressable memory.
- 17. The computer program of claim 15, further comprising instructions for causing the processor to store data that identifies, at least, the start and end boundaries of at least one of the sets of one or more previously received packets.
- 18. The computer program of claim 15, wherein instructions for causing the processor to request stored data comprise instructions for causing the processor to request stored data indicating that the received packet borders the start of a set of contiguous previously received out-of-order packets.
- 19. The computer program of claim 15, wherein instructions for causing the processor to request stored data comprise instructions for causing the processor to request stored data indicating that the received packet borders the end of a set of contiguous previously received out-of-order packets.
- 20. The computer program of claim 15, further comprising instructions for causing the processor to, if the received packet borders a set of contiguous previously received out-of-order packets, modify the stored data for the set of contiguous previously received out-of-order packets to include the received packet.
- 21. The computer program of claim 1,
wherein instructions for causing the processor to request data comprise instructions for causing the processor to access at least two content-addressable memories, wherein a first of the content-addressable memories stores data that identifies the start of a boundary of at least one of the sets of contiguous previously received out-of-order packets and a second of the content-addressable memories stores data that identifies the end boundary of at least one of the sets of contiguous previously received out-of-order packets; and wherein the instructions for causing the processor to request data comprise instructions for causing the processor to:
query the first content-addressable memory to determine if the received packet borders the start of a set of contiguous previously received out-of-order packets, and query the second content-addressable memory to determine if the received packet borders the end of a set of contiguous previously received out-of-order packets.
- 22. The computer program of claim 15, wherein the data identifying an order comprises at least one TCP (Transmission Control Protocol) sequence number.
- 23. The computer program of claim 22, wherein the stored data identifies the end of a set of contiguous previously received out-of-order packets, and wherein the end of a set is identified by incrementing the last sequence number of the last packet by one.
- 24. The computer program of claim 15, wherein the received packet comprises a packet received in-order and further comprising instructions for causing the processor to identify a set of contiguous previously received out-of-order packets that border the end of the received packet.
- 25. A system for tracking packet received out-of-order, the system comprising:
a memory to store data identifying at least one set of previously received out-of-order packets that are contiguous with respect to an ordering within a sequence; and digital logic to request data from memory that identifies at least one set of contiguous previously received out-of-order packets having an ordering within the sequence that borders a received packet.
- 26. The system of claim 25, wherein the system comprises a system within a single chip.
- 27. The system of claim 25, wherein the memory comprises at least one content-addressable memory.
- 28. The system of claim 25, wherein the memory comprises a memory to store data identifying the start of the sets of contiguous previously received out-of-order packets and data identifying the end of the sets of contiguous previously received out-of-order packets.
- 29. The system of claim 25, wherein the digital logic to request data comprises digital logic to determine if the received packet borders the start of a set of contiguous previously received out-of-order packets.
- 30. The system of claim 25, wherein the digital logic to request data comprises digital logic to determine if the received packet borders the end of a set of contiguous previously received out-of-order packets.
- 31. The system of claim 25, further comprising,
digital logic to, if the received packet borders a set of contiguous previously received out-of-order packets, modify the stored data for the set of contiguous previously received out-of-order packets to include the received packet.
- 32. The system of claim 25, wherein the data identifying an order comprises at least one TCP (Transmission Control Protocol) sequence number.
- 33. The system of claim 25, further comprising digital logic to identify a set of contiguous previously received out-of-order packets that border the end of the received packet.
- 34. The system of claim 25, wherein the receiving the at least a portion of the packet comprises receiving a header of the packet.
- 35. The system of claim 25, wherein the receiving the at least a portion of the packet comprises receiving the at least a portion at a network protocol off-load engine.
- 36. A system, comprising:
at least one host processor; an Ethernet medium access control (MAC) device to receive packets that include TCP (Transmission Control Protocol) segments over a network connection; a TCP off-load engine that comprises:
a Peripheral Component Interface (PCI) bus interface to communicate with the at least one host processor; at least one content-addressable memory to store data identifying sequence boundaries of sets of one or more contiguous, out-of-order TCP segments previously received via the Ethernet MAC device; and digital logic to:
receive at least a portion a TCP header of a TCP segment received via the Ethernet MAC device; and based on TCP sequence data included in the TCP header, query the at least one content-addressable memory for data identifying a set of contiguous previously received out-of-order segments having an ordering within the sequence that borders the received TCP segment.
- 37. The system of claim 36, wherein the digital logic further comprises logic to store data in the at least one content-addressable memory that identifies, at least, the start and end boundaries of at least one of the sets.
- 38. The system of claim 36, further comprising digital logic to:
if the received segment borders a set of one or more previously received segments, modify the content-addressable memory data for the set of one or more contiguous previously received segments to include the received segment.
- 39. The system of claim 36,
wherein the at least one content-addressable memories comprises at least two content-addressable memories, wherein a first of the content-addressable memories stores data that identifies the start of a boundary of at least one of the sets of one or more contiguous previously received segments and a second of the content-addressable memories stores data that identifies the end boundary of at least one of the set of one or more contiguous previously received segments; and wherein the digital logic to query the at least one content-addressable memory comprises digital logic to:
query the first content-addressable memory to determine if the received packet borders the start of a set, and query the second content-addressable memory to determine if the received packet borders the end of a set.
- 40. The system of claim 36,
wherein the received segment comprises a segment received in-order; and wherein the digital logic further comprises digital logic to query the content-addressable memory to identify a set of one or more contiguous previously received segments that border the end of the received segment.
- 41. The system of claim 36, wherein TCP off-load engine comprises a second set of at least one content-addressable memory to store data that identifies a TCB (Transmission Control Block) for different TCP connections.
- 42. The system of claim 36, wherein the TCP off-load engine comprises an engine having interface logic clocked at a first frequency and processing logic clocked at a second frequency.
- 43. The system of claim 42, wherein the digital logic changes the second frequency based on a header included in an Internet Protocol header of the received packet.
Parent Case Info
[0001] This application relates to the following co-pending applications: “NETWORK PROTOCOL ENGINE”, attorney docket 42. P14732; and “PACKET-BASED CLOCK SIGNAL”, attorney docket 42.P14951. These applications were filed on the same day as the present application and name the same inventors.