System and method for efectuating packet distribution among servers in a network
First Claim
1. A packet distribution method operating at a packet distributor for forwarding communication flows to one or more servers, the method comprising:
- receiving a packet of a communication flow;
hashing one or more flow identification parameters of the packet to obtain a hash index;
storing in a first database portion a plurality of hash indices based on hashing one or more flow identification parameters associated with a plurality of incoming communication flows being received, each hash index associated with a plurality of data fields;
if the communication flow is a new flow, processing the packet according to a new flow process at least based on values of one or more data fields of the plurality of data fields provided for the hash index in the first database portion;
if the communication flow is an existing flow, processing the packet according to an existing flow process at least based on the values of the one or more data fields provided for the hash index in the first database portion; and
if the received packet is an end-of-flow packet, processing the packet according to an end-of-flow process at least based on the values of the one or more data fields provided for the hash index in the first database portion,wherein the plurality of data fields comprise (i) a single bit field (Flow-bit) configured to indicate whether there exists at least one communication flow having the flow identification parameters that hash to a specific hash index;
(ii) a server data field configured to identify a server of the one or more servers that is assigned to serve the at least one communication flow having the flow identification parameters that hash to the specific hash index; and
(iii) a counter data field that is incremented when flow identification parameters of two communication flows having a same server assignment hash to a same hash index resulting in a hash collision scenario, and further wherein a single hash index entry is provided in the first database portion operative for forwarding packets of the two communication flows in the hash collision scenario.
1 Assignment
0 Petitions
Accused Products
Abstract
A packet distribution scheme for forwarding incoming packets to servers in a network. Depending on a hash value of the incoming flow'"'"'s identification parameters, a hash flow table or database is queried to determine the server to which the packet is to be forwarded. If multiple flows have the same hash index and are associated with different servers, a secondary flow table or database is queried for determining the server. In an example implementation, only the secondary flow table is configured to store fully qualified flow identification parameters whereas the hash flow table is operative to store reduced or compressed state information.
-
Citations
21 Claims
-
1. A packet distribution method operating at a packet distributor for forwarding communication flows to one or more servers, the method comprising:
-
receiving a packet of a communication flow; hashing one or more flow identification parameters of the packet to obtain a hash index; storing in a first database portion a plurality of hash indices based on hashing one or more flow identification parameters associated with a plurality of incoming communication flows being received, each hash index associated with a plurality of data fields; if the communication flow is a new flow, processing the packet according to a new flow process at least based on values of one or more data fields of the plurality of data fields provided for the hash index in the first database portion; if the communication flow is an existing flow, processing the packet according to an existing flow process at least based on the values of the one or more data fields provided for the hash index in the first database portion; and if the received packet is an end-of-flow packet, processing the packet according to an end-of-flow process at least based on the values of the one or more data fields provided for the hash index in the first database portion, wherein the plurality of data fields comprise (i) a single bit field (Flow-bit) configured to indicate whether there exists at least one communication flow having the flow identification parameters that hash to a specific hash index;
(ii) a server data field configured to identify a server of the one or more servers that is assigned to serve the at least one communication flow having the flow identification parameters that hash to the specific hash index; and
(iii) a counter data field that is incremented when flow identification parameters of two communication flows having a same server assignment hash to a same hash index resulting in a hash collision scenario, and further wherein a single hash index entry is provided in the first database portion operative for forwarding packets of the two communication flows in the hash collision scenario. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A packet distributor node configured to forward communication flows to one or more servers, the packet distributor node comprising:
-
one or more processors coupled to a persistent memory; a hash flow table (HFT) module forming a portion of the persistent memory, the HFT module configured to store a plurality of hash indices based on hashing one or more flow identification parameters associated with a plurality of incoming communication flows being received at the packet distributor node, each hash index associated with a plurality of data fields; a supplementary flow table (SFT) module forming a portion of the persistent memory and configured to store fully qualified flow identification parameters with respect to communication flows that are assigned to different servers and have the same hash indices; a server association module forming a portion of the persistent memory and configured to associate a server to an incoming communication flow received at the packet distributor node; a flow identification module forming a portion of the persistent memory and configured to identify whether an incoming packet is for an existing communication flow, a new communication flow or an end-of-flow packet to indicate termination of the existing communication flow; and a packet processing module configured to process an incoming packet of a communication flow at least based on values of one or more data fields of the plurality of data fields associated with a hash index of the incoming packet'"'"'s flow identification parameters, wherein the plurality of data fields comprise (i) a single bit field (Flow-bit) configured to indicate whether there exists at least one communication flow having the flow identification parameters that hash to a specific hash index;
(ii) a server data field configured to identify a server of the one or more servers that is assigned to serve the at least one communication flow having the flow identification parameters that hash to specific the hash index; and
(iii) a counter data field that is incremented when flow identification parameters of two communication flows having a same server assignment hash to a same hash index resulting in a hash collision scenario, and further wherein a single hash index entry is provided in the first hash flow table operative for forwarding packets of the two communication flows in the hash collision scenario. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A non-transitory computer-readable medium containing instructions stored thereon which, when executed by one or more processors of a packet distributor node, facilitate forwarding of communication flows to one or more servers, the non-transitory computer-readable medium comprising:
-
a code portion for hashing one or more flow identification parameters of an incoming packet of a communication flow to obtain a hash index; a code portion for storing in a first database portion a plurality of hash indices based on hashing one or more flow identification parameters associated with a plurality of incoming communication flows being received, each hash index associated with a plurality of data fields; a code portion, operative upon determining that the communication flow is a new flow, for processing the incoming packet according to a new flow process at least based on values of one or more data fields of the plurality of data fields provided for the hash index in a first database portion a code portion, operative upon determining that the communication flow is an existing flow, for processing the incoming packet according to an existing flow process at least based on the values of the one or more data fields provided for the hash index in the first database portion; and a code portion, operative upon determining that the incoming packet is an end-of-flow packet, for processing the packet according to an end-of-flow process at least based on the values of the one or more data fields provided for the hash index in the first database portion, wherein the plurality of data fields comprise (i) a single bit field (Flow-bit) configured to indicate whether there exists at least one communication flow having the flow identification parameters that hash to a specific hash index;
(ii) a server data field configured to identify a server of the one or more servers that is assigned to serve the at least one communication flow having the flow identification parameters that hash to the specific hash index; and
(iii) a counter data field that is incremented when flow identification parameters of two communication flows having a same server assignment hash to a same hash index resulting in a hash collision scenario, and further wherein a single hash index entry is provided in the first database portion operative for forwarding packets of the two communication flows in the hash collision scenario. - View Dependent Claims (17, 18, 19, 20, 21)
-
Specification