Method and apparatus for managing a network flow in a high performance network interface
First Claim
1. A method of managing a communication flow comprising one or more packets received by a network interface, the method comprising:
- identifying a flow index of a packet received at a network interface, wherein said flow index identifies a communication flow comprising said packet;
searching a flow database for a flow record comprising said flow index;
at a flow database manager, generating an operation code representing an eligibility of said packet for one or more predetermined processes; and
forwarding said operation code to a reassembly engine configured to reassemble a data portion of the packet with a data portion of another packet in the communication flow.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method are provided for managing information concerning a network flow comprising packets sent from a source entity to a destination entity served by a network interface. A network flow is established for each datagram sent from the source entity to the destination entity. A flow key, identifying the source and destination entities, is stored in a data structure along with information concerning validity of the flow, sequence of data in the flow datagram and how recently the flow was active. Once a flow is established, it is updated each time a packet containing data from the flow'"'"'s datagram is received. When such a packet is received, an operation code is generated for identifying whether the packet is suitable for a particular network interface function. An operation code may, for example, indicate that a packet contains data to be re-assembled with other data from the same flow. Another operation code may indicate that a packet is not suitable for data re-assembly. Another operation code may specify that the packet is simply a control packet, has no data, or that the packet was received out of order.
-
Citations
59 Claims
-
1. A method of managing a communication flow comprising one or more packets received by a network interface, the method comprising:
-
identifying a flow index of a packet received at a network interface, wherein said flow index identifies a communication flow comprising said packet;
searching a flow database for a flow record comprising said flow index;
at a flow database manager, generating an operation code representing an eligibility of said packet for one or more predetermined processes; and
forwarding said operation code to a reassembly engine configured to reassemble a data portion of the packet with a data portion of another packet in the communication flow. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 44, 45, 46, 47)
determining whether said packet is suitable for a function that said network interface is configured to perform; and
assigning an operation code for said packet to indicate whether said function is to be performed.
-
-
14. The method of claim 13, wherein said generating further comprises determining whether said packet includes a data portion.
-
15. The method of claim 14, wherein said generating further comprises determining whether said data portion exceeds a pre-determined size.
-
16. The method of claim 13, wherein said generating further comprises determining whether said packet was received out of order.
-
17. The method of claim 13, wherein said generating further comprises determining whether said flow database is full.
-
18. The method of claim 1, further comprising:
-
determining whether said flow database is full;
for each flow record in said flow database, examining a flow activity indicator configured to indicate a recency of traffic in an associated communication flow;
selecting an aged flow record having a flow activity indicator indicating least recent traffic among said associated communication flows; and
replacing said aged flow record with a new flow record comprising said flow index.
-
-
44. The method of claim 1, wherein said one or more predetermined processes include reassembly of a data portion of the packet with a data portion of another packet in the communication flow.
-
45. The method of claim 1, wherein said one or more predetermined processes include batch processing of headers of multiple packets in the communication flow, including the packet.
-
46. The method of claim 1, wherein said one or more predetermined processes include distributing packets of different communication flows to different host computer processors.
-
47. The method of claim 1, further comprising forwarding said operation code to a packet batching module configured to facilitate batch processing of headers of multiple packets in the communication flow.
-
19. A method of managing a communication flow comprising a collection of data directed from a source entity to a destination entity, the method comprising:
-
receiving a first packet at a network interface, said first packet comprising a first portion of a collection of data;
identifying a first flow key, said first flow key comprising an identifier of a source of said first packet and an identifier of a destination of said first packet;
setting up a first communication flow for said collection of data, wherein said first communication flow is identifiable by said first flow key; and
assigning an operation code to said first packet, said operation code indicating whether said first portion of data is reassembleable with another portion of data in said collection of data;
wherein said first communication flow is configured to be terminated after said collection of data is received at said network interface. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
receiving a second packet at said network interface, said second packet comprising a second portion of said collection of data;
determining whether said second portion of said collection of data comprises a final portion of said collection of data; and
terminating said first communication flow if said second portion comprises said final portion.
-
-
21. The method of claim 20, wherein said setting up comprises:
-
storing said first flow key in a database; and
indicating that said first communication flow is valid.
-
-
22. The method of claim 21, wherein said indicating comprises configuring a validity indicator in said database.
-
23. The method of claim 22, wherein said terminating comprises modifying said validity indicator to indicate that said first communication flow is invalid.
-
24. The method of claim 21, wherein said terminating comprises removing said first flow key from said database.
-
25. The method of claim 19, further comprising:
-
receiving a second packet at said network interface; and
associating an operation code with said second packet to indicate whether said first communication flow is to be terminated.
-
-
26. The method of claim 25, wherein said associating comprises:
-
receiving information extracted from a header portion of said second packet; and
examining said information to determine whether said first communication flow is to be terminated.
-
-
27. The method of claim 26, wherein said associating further comprises examining said information to determine whether a second communication flow is to be established and whether a data portion of said second packet is to be re-assembled with a data portion of another packet.
-
28. A method of managing a network flow received at a network interface, comprising:
-
parsing a packet received at a network interface;
assembling a flow identifier configured to identify a network flow comprising said packet;
searching a flow database on said network interface for said flow identifier;
updating a flow sequence number in a flow database record comprising said flow identifier;
setting a flow activity indicator in said flow database record to reflect receipt of said packet; and
setting a flow validity indicator in said flow database to indicate said network flow is valid. - View Dependent Claims (50, 51, 52, 53, 54, 55, 56, 57, 58)
generating an operation code configured to identify a status of said packet.
-
-
54. The method of claim 53, wherein said operation code is configured to indicate whether said packet includes a data portion.
-
55. The method of claim 53, wherein said operation code is configured to indicate whether said packet includes a data portion larger than a pre-determined size.
-
56. The method of claim 53, wherein said operation code is configured to indicate whether said packet was received out of order.
-
57. The method of claim 53 wherein said operation code is configured to indicate whether said packet is reassembleable with another packet in said network flow.
-
58. The method of claim 53, said operation code is configured to indicate whether said network flow is to be terminated.
-
29. A method of processing a packet received at a network interface, comprising:
-
receiving a packet at a network interface, wherein said packet was sent from a source entity to a destination entity;
parsing said packet to identify a flow between said source entity and said destination entity that comprises said packet;
receiving a status indicator extracted from said packet;
searching a flow database for said flow;
generating an operation code based on said status indicator, wherein said operation code is configured to;
indicate whether said packet is a control packet; and
indicate whether a header portion of said packet conforms to one of a set of pre-selected communication protocols; and
updating said flow database by;
updating a flow activity indicator associated with said flow to reflect receipt of said packet; and
updating a flow validity indicator associated with said flow to indicate said flow is valid. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37)
-
-
38. A network interface for receiving a communication flow from a network, comprising:
-
a parser for examining a header portion of a first packet received from a network, said first packet comprising a first portion of data transmitted from a source entity to a destination entity;
a data structure comprising;
a flow key for identifying said communication flow, wherein said flow key comprises identifiers of said source entity and said destination entity;
an activity indicator for indicating a recency with which a packet in said communication flow has been received; and
a validity indicator for indicating whether said communication flow is valid;
a data manager for managing said data structure; and
a generator configured to generate an operation code for every packet in said communication flow, to facilitate forwarding of said data toward the destination entity from the network interface;
wherein said data manager establishes said communication flow and stores said flow key in said data structure upon receipt of said first portion of data, and terminates said communication flow upon receipt of a final portion of said data.
-
-
39. A network interface, comprising:
-
a database configured to facilitate management of a network flow, said network flow comprising one or more packets sent from a source entity to a destination entity, said database comprising;
a flow key configured to identify said network flow; and
a validity indicator configured to indicate whether said network flow is valid;
a database manager configured to manage said database; and
an operation code generator configured to generate an operation code for every packet within said network flow, wherein said operation code is configured to specify an operation to be performed with said packet;
wherein said database manager receives said flow key and updates said database when said packet is received. - View Dependent Claims (40, 41, 43)
a control memory;
wherein said database manager further stores said operation code in said control memory when said packet is received.
-
-
41. The network interface of claim 39, wherein said database manager comprises said operation code generator.
-
43. The network interface of claim 39, wherein said database further comprises an activity indicator for indicating a recency with which a packet in said network flow has been received.
-
42. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of managing a network flow database storing information relating to a network flow received by a network interface, the method comprising:
-
identifying a flow index of a packet received at a network interface, wherein said flow index identifies a communication flow comprising said packet;
searching a flow database for a flow record comprising said flow index;
at a flow database manager, generating an operation code representing an eligibility of said packet for one or more predetermined processes; and
forwarding said operation code to a reassembly engine configured to reassemble a data portion of the packet with a data portion of another packet in the communication flow.
-
-
48. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of managing a communication flow comprising a collection of data directed from a source entity to a destination entity, the method comprising:
-
receiving a first packet at a network interface, said first packet comprising a first portion of a collection of data;
identifying a first flow key, said first flow key comprising an identifier of a source of said first packet and an identifier of a destination of said first packet;
setting up a first communication flow for said collection of data, wherein said first communication flow is identifiable by said first flow key; and
assigning an operation code to said first packet, said operation code indicating whether said first portion of data is reassembleable with another portion of data in said collection of data;
wherein said first communication flow is configured to be terminated after said collection of data is received at said network interface.
-
-
49. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of processing a packet received at a network interface, the method comprising:
-
receiving a packet at a network interface, wherein said packet was sent from a source entity to a destination entity;
parsing said packet to identify a flow between said source entity and said destination entity that comprises said packet;
receiving a status indicator extracted from said packet;
searching a flow database for said flow;
generating an operation code based on said status indicator, wherein said operation code is configured to;
indicate whether said packet is a control packet; and
indicate whether a header portion of said packet conforms to one of a set of pre-selected communication protocols; and
updating said flow database by;
updating a flow activity indicator associated with said flow to reflect receipt of said packet; and
updating a flow validity indicator associated with said flow to indicate said flow is valid.
-
-
59. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of managing a network flow received at a network interface, the method comprising:
-
parsing a packet received at a network interface;
assembling a flow identifier configured to identify a network flow comprising said packet;
searching a flow database on said network interface for said flow identifier;
updating a flow sequence number in a flow database record comprising said flow identifier;
setting a flow activity indicator in said flow database record to reflect receipt of said packet; and
setting a flow validity indicator in said flow database to indicate said network flow is valid.
-
Specification