Claims
- 1. A method of identifying multiple packets in a communication flow between a source entity and a destination entity, comprising:
storing a first flow identifier of a first packet received from a source entity for a destination entity, wherein said first flow identifier comprises an identifier of the source entity and an identifier of the destination entity; storing said first packet in a packet memory for transfer toward the destination entity; storing a second flow identifier of a second packet; storing said second packet in said packet memory; determining whether said first flow identifier matches said second flow identifier; storing a first indicator in the destination entity if a first communication flow identified by said first flow identifier comprises said second packet; and storing a second indicator in the destination entity if said first packet is the only packet stored in the packet memory that is part of said first communication flow.
- 2. The method of claim 1, further comprising, prior to said storing a first flow identifier, parsing said first packet to retrieve said identifier of the source entity and said identifier of the destination entity.
- 3. A method of identifying one or more packets in a communication flow between a source entity and a destination entity, comprising:
receiving a first packet at a communication device; identifying a first communication flow comprising said first packet with a first flow identifier configured to identify both the source entity and the destination entity; determining whether said first communication flow also comprises a second packet received at said communication device after said first packet was received at said communication device; and transferring said first packet to a host computer for processing in accordance with a communication protocol associated with said first packet.
- 4. The method of claim 3, further comprising:
transferring said second packet to said host computer; wherein said host computer is configured to collectively process a header portion of said first packet and a header portion of said second packet in accordance with said communication protocol.
- 5. The method of claim 3, wherein said identifying comprises:
receiving a flow key generated by concatenating an identifier of the source entity and an identifier of the destination entity; wherein said first flow identifier comprises said flow key.
- 6. The method of claim 3, wherein said identifying comprises:
receiving an index of said first communication flow in a flow database; wherein said first flow identifier comprises said index.
- 7. The method of claim 3, wherein said determining comprises comparing said first flow identifier with a second flow identifier associated with a second packet received at said communication device.
- 8. The method of claim 7, wherein said determining further comprises:
storing said first flow identifier in a flow memory; and storing said second flow identifier in said flow memory; and comparing said stored first flow identifier and said stored second flow identifier.
- 9. The method of claim 8, wherein said flow memory is an associative memory in said communication device.
- 10. The method of claim 3, further comprising storing said first packet in a packet memory.
- 11. The method of claim 10, wherein said determining comprises comparing said first flow identifier configured to identify said first communication flow with a second flow identifier configured to identify a second communication flow comprising a packet stored in said packet memory.
- 12. The method of claim 3, further comprising informing said host computer of said transfer of said first packet.
- 13. The method of claim 12, wherein said informing comprises configuring an indicator in a host memory.
- 14. The method of claim 13, wherein said indicator is configured to indicate that said host computer should delay processing said first packet until said second packet is transferred to said host computer.
- 15. The method of claim 13, wherein said indicator indicates that said host computer should not delay processing said first packet.
- 16. A method of transferring a packet from a network interface to a host computer, comprising:
receiving a first packet at a network interface; storing said first packet in a packet memory; receiving a first flow identifier configured to identify a communication flow comprising said first packet; storing said first flow identifier in a flow memory; searching said flow memory for a second packet in said communication flow received at the network interface after said first packet; transferring said first packet to said host computer; and configuring an indicator in a host memory to indicate whether processing of said first packet by said host computer should be delayed to await transfer of said second packet to said host memory.
- 17. The method of claim 16, wherein said generating comprises:
receiving an index of said communication flow in a flow database; wherein said flow identifier comprises said index.
- 18. The method of claim 16, wherein said receiving comprises:
receiving a flow key comprising an identifier of a source of said first packet and an identifier of a destination of said first packet; wherein said flow identifier comprises said flow key.
- 19. The method of claim 16, wherein said packet memory comprises said flow memory.
- 20. The method of claim 16, wherein said configuring comprises:
storing a first indicator in a host memory if said communication flow comprises said second packet; and storing a second indicator in said host memory if said first packet is the only packet in said packet memory that is part of said communication flow.
- 21. A computer system for processing a packet received from a network interface, comprising:
a network interface configured to receive a first packet from a network and transfer said first packet to a host computer memory, said network interface comprising: a packet memory configured to store said first packet; a flow memory for storing a first flow number associated with said first packet, wherein said first flow number is configured to identify a communication flow comprising said first packet; a packet batcher configured to determine whether the communication flow includes a second packet stored in said packet memory after said first packet; and a notifier configured to: store a first code in a host indicator if said packet memory includes the second packet; and store a second code in said host indicator if said packet memory does not include the second packet; and a processor for processing a header portion of said first packet.
- 22. 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 network interface to a host computer, the method comprising:
receiving a first packet at a communication device; identifying a first communication flow comprising said first packet with a first flow identifier configured to identify both the source entity and the destination entity; determining whether said first communication flow also comprises a second packet received at said communication device after said first packet was received at said communication device; and transferring said first packet to a host computer for processing in accordance with a communication protocol associated with said first packet.
- 23. A processor readable storage medium containing a data structure configured to store information concerning a packet to be transferred from a network interface to a host computer, the data structure including one or more entries, each entry comprising:
a flow number configured to identify a communication flow comprising a first packet received at the network interface from a source entity for a destination entity associated with the host computer; and a validity indicator configured to provide: a first indication if said first packet is ready for transfer to the host computer; and a second indication if said first packet is a control packet; wherein said data structure is searched for a second entry containing said flow number when said first packet is transferred to the host computer to determine if said communication flow also comprises a second packet received at the network interface after said first packet.
- 24. The method of claim 3, wherein said identifying comprises:
parsing said first packet to retrieve an identifier of the source entity and an identifier of the destination entity; and combining said source entity identifier and said destination entity identifier to form said first flow identifier.
- 25. A communication interface, comprising:
a header parser configured to parse a header of a first packet received at the communication interface, wherein the first packet was issued from a source entity for a destination entity; a flow database configured to facilitate management of a communication flow comprising the first packet, the flow database comprising: a flow key configured to identify the communication flow using identifiers of the source entity and the destination entity; an activity indicator configured to indicate a recency with which a packet in the communication flow has been received; and a validity indicator for indicating whether the communication flow is valid; a code generator configured to generate an operation code for the first packet, to facilitate forwarding of the first packet toward the destination entity; and a packet batching module configured to determine whether a second packet received at the communication interface is part of the communication flow.
- 26. A method of processing a packet through a communication interface, the method comprising:
receiving a first packet from a network, wherein the first packet is part of a communication flow between a source entity and a destination entity; determining whether a header portion of the first packet conforms to one of a set of communication protocols; assembling a flow identifier to identify the communication flow, wherein said flow identifier comprises a source entity identifier and a destination entity identifier; updating a flow database configured to facilitate management of communication flows through the communication interface, wherein said updating comprises: configuring a flow activity indicator associated with the communication flow to reflect receipt of the first packet; and configuring a flow validity indicator associated with the communication flow to indicate that the communication flow is valid; assigning an operation code to the first packet, said operation code indicating whether a portion of data in the first packet is reassembleable with another portion of data in another packet in the communication flow; and determining whether a second packet received at the communication interface is part of the communication flow.
- 27. The method of claim 3, further comprising:
storing a first indicator in the host computer if said first communication flow comprises said second packet; and storing a second indicator in the host computer if said first packet is the only packet stored in the communication device that is part of said communication flow.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit under 35 U.S.C. §120 of (is a continuation of) U.S. patent application Ser. No. 10/005,536, filed Nov. 7, 2001, which in turn claims the benefit under 35 U.S.C. §120 of (is a continuation of) U.S. patent application Ser. No. 09/384,792, filed Aug. 27, 1999, now U.S. Pat. No. 6,434,620, which in turn: 1) claims the benefit under 35 U.S.C. §119 of Provisional Patent Application Serial No. 60/098,296, filed Aug. 27, 1998, 2) claims the benefit under 35 U.S.C. §120 of (is a continuation-in-part of) U.S. patent application Ser. No. 09/067,544, filed Apr. 27, 1998, now U.S. Pat. No. 6,226,680, and 3) claims the benefit under 35 U.S.C. §120 of (is a continuation-in-part of) U.S. patent application Ser. No. 09/141,713, filed Aug. 28, 1998, now U.S. Pat. No. 6,389,479.
[0002] U.S. Pat. No. 6,226,680 and U.S. Pat. No. 6,389,479 both claim the benefit under 35 U.S.C. §119 of Provisional Patent Application Serial No. 60/061,809, filed Oct. 14, 1997. The present application also claims the benefit under 35 U.S.C. §120 of (is a continuation-in-part of) U.S. patent application Ser. No. 09/464,283, filed Dec. 15, 1999, now U.S. Pat. No. 6,427,173, and claims the benefit under 35 U.S.C. §120 of (is a continuation-in-part of) U.S. patent application Ser. No. 09/514,425, filed Feb. 28, 2000, now U.S. Pat. No. 6,427,171. All of the above-listed applications are incorporated by reference herein.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60098296 |
Aug 1998 |
US |
|
60061809 |
Oct 1997 |
US |
Continuations (2)
|
Number |
Date |
Country |
| Parent |
10005536 |
Nov 2001 |
US |
| Child |
10678336 |
Oct 2003 |
US |
| Parent |
09384792 |
Aug 1999 |
US |
| Child |
10005536 |
Nov 2001 |
US |
Continuation in Parts (4)
|
Number |
Date |
Country |
| Parent |
09067544 |
Apr 1998 |
US |
| Child |
10005536 |
Nov 2001 |
US |
| Parent |
09141713 |
Aug 1998 |
US |
| Child |
10005536 |
Nov 2001 |
US |
| Parent |
09464283 |
Dec 1999 |
US |
| Child |
10678336 |
Oct 2003 |
US |
| Parent |
09514425 |
Feb 2000 |
US |
| Child |
10678336 |
Oct 2003 |
US |