Network load balancing with connection manipulation
First Claim
1. One or more processor-accessible storage media comprising processor-executable instructions that, when executed, direct a first device to perform actions comprising:
- accepting a connection from a connecting device at a forwarder;
receiving data at the forwarder from the connecting device as a result of accepting the connection;
forwarding the data from the forwarder to a classifier;
determining, by the classifier, a second device for receiving the connection;
aggregating a connection state for the connection at the classifier by aggregating a protocol state of a first protocol stack and the data to constitute a binary blob;
sending the connection state from the classifier to the second device for injection into a second protocol stack at the second device by sending the binary blob including the protocol state and the data to the second device, whereby the connection is transferred to the second device, wherein the sending the connection state further comprises transmitting the binary blob from the classifier to the second device asynchronously via the forwarder in a reliable manner such that the binary blob is received intact at the second device even if one or more packets that comprise the binary blob are lost or corrupted;
in conjunction with sending the connection state, adding an entry to a mapping table maintained by the forwarder that indicates the second device as a destination for packets for the connection;
sending a mapping for a flow identifier to the second device based upon the entry in the mapping table;
receiving subsequent communications from the connecting device by the forwarder; and
encapsulating the subsequent communications by the forwarder according to the entry in the mapping table of the forwarder by inserting the flow identifier into the encapsulated communications, wherein the flow identifier serves to identify a flow of encapsulated communications received at the second device from the forwarder as being associated with the connection to the connecting device.
2 Assignments
0 Petitions
Accused Products
Abstract
In an exemplary device implementation, a device includes: a connection migrator that is configured to migrate connections away from the device; the connection migrator capable of precipitating a compilation of protocol state for a connection across a protocol stack; the connection migrator adapted to aggregate the compiled protocol state with data for the connection into an aggregated connection state; the connection migrator further capable of causing the aggregated connection state to be sent toward a target device. In an exemplary media implementation, processor-executable instructions direct a device to perform actions including: obtaining at least a portion of a source/destination pair from a packet; accessing an encapsulation mapping table using the at least a portion of the source/destination pair to locate an encapsulation mapping entry; extracting a flow identifier from the encapsulation mapping entry; and replacing part of the packet with the flow identifier to produce an encapsulated packet.
470 Citations
20 Claims
-
1. One or more processor-accessible storage media comprising processor-executable instructions that, when executed, direct a first device to perform actions comprising:
-
accepting a connection from a connecting device at a forwarder; receiving data at the forwarder from the connecting device as a result of accepting the connection; forwarding the data from the forwarder to a classifier; determining, by the classifier, a second device for receiving the connection; aggregating a connection state for the connection at the classifier by aggregating a protocol state of a first protocol stack and the data to constitute a binary blob; sending the connection state from the classifier to the second device for injection into a second protocol stack at the second device by sending the binary blob including the protocol state and the data to the second device, whereby the connection is transferred to the second device, wherein the sending the connection state further comprises transmitting the binary blob from the classifier to the second device asynchronously via the forwarder in a reliable manner such that the binary blob is received intact at the second device even if one or more packets that comprise the binary blob are lost or corrupted; in conjunction with sending the connection state, adding an entry to a mapping table maintained by the forwarder that indicates the second device as a destination for packets for the connection; sending a mapping for a flow identifier to the second device based upon the entry in the mapping table; receiving subsequent communications from the connecting device by the forwarder; and encapsulating the subsequent communications by the forwarder according to the entry in the mapping table of the forwarder by inserting the flow identifier into the encapsulated communications, wherein the flow identifier serves to identify a flow of encapsulated communications received at the second device from the forwarder as being associated with the connection to the connecting device. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. One or more processor-accessible storage media comprising processor-executable instructions that, when executed, direct a first device to perform actions comprising:
-
accepting a connection from a connection device at a forwarder; receiving data at the forwarder from the connecting device as a result of accepting the connection; forwarding the data from the forwarder to a classifier; determining, by the classifier, a second device for receiving the connection; aggregating a connection state for the connection at the classifier by aggregating a protocol state of a first protocol stack and the data to constitute a binary blob, wherein the aggregating the protocol state comprises compiling the protocol state from the first protocol stack for use in offloading the connection state as the binary blob, wherein the compiled protocol state includes destination and source ports and IP addresses, wherein the compiling further comprises compiling the protocol state from the first protocol stack starting at a highest level of the first protocol stack, proceeding down the first protocol stack, to compile the protocol state, and then aggregating the received data with the compiled protocol state into the binary blob to be sent to the second device; sending the connection state from the classifier to the second device for injection into a second protocol stack at the second device by sending the binary blob including the protocol state and the data to the second device, whereby the connection is transferred to the second device; in conjunction with sending the connection state, adding an entry to a mapping table maintained by the forwarder that indicates the second device as a destination for packets for the connection; sending a mapping for a flow identifier to the second device based upon the entry in the mapping table; receiving subsequent communications from the connecting device by the forwarder; and encapsulating the subsequent communications by the forwarder according to the entry in the mapping table of the forwarder by inserting the flow identifier into the encapsulated communications, wherein the flow identifier serves to identify a flow of encapsulated communications received at the second device from the forwarder as being associated with the connection to the connecting device. - View Dependent Claims (8)
-
-
9. One or more processor-accessible storage media comprising processor-executable instructions that, when executed, direct a first device and a second device to perform actions comprising:
-
accepting a connection from a connecting device by a forwarder at the first device; receiving data at the first device as a result of accepting the connection; aggregating, by a classifier at the first device, a connection state for the connection at the first device by aggregating a protocol state of a first protocol stack and the received data to constitute an aggregated connection state; sending the aggregated connection state including the protocol state and the received data asynchronously from the first device to the second device; receiving the aggregated connection state asynchronously at the second device, whereby the aggregated connection state comprised of the protocol state and the received data is received intact at the second device, wherein the receiving further comprises receiving the connection state as a binary blob asynchronously at the second device, and recognizing the binary blob as a blob for connection migration; injecting the aggregated connection state for the connection into a network stack at the second device by infusing the protocol state into a second protocol stack forming a portion of the network stack at the second device, and directing data from the binary blob to an application at the second device as if the second device were part of a new locally terminated connection; in conjunction with sending the aggregated connection state, sending a mapping for a flow identifier from the first device to the second device, the flow identifier for identifying encapsulated packets received from the forwarder; continuing the connection at the second device using the injected connection state; receiving subsequent communications from the connecting device by the forwarder; encapsulating the subsequent communications by the forwarder by inserting the flow identifier into the encapsulated communications according to a mapping table maintained by the forwarder; and receiving the encapsulated communications at the second device from the forwarder, wherein the flow identifier serves to identify a flow of encapsulated communications as being associated with the connection to the connecting device according to the mapping for the flow identifier received from the first device. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method of carrying out load balancing, comprising:
-
accepting a connection from a connecting device at a forwarder, the forwarder including one or more processors implementing instructions contained in one or more processor-accessible storage media for receiving data at the forwarder from the connecting device as a result of accepting the connection; forwarding the data from the forwarder to a classifier; determining, by the classifier, a second device for receiving the connection; aggregating a connection state for the connection at the classifier by aggregating a protocol state of a first protocol stack and the data to constitute a binary blob; sending the connection state from the classifier to the second device for injection into a second protocol stack at the second device by sending the binary blob including the protocol state and the data to the second device, whereby the connection is transferred to the second device, wherein the sending the connection state further comprises transmitting the binary blob from the classifier to the second device asynchronously via the forwarder in a reliable manner such that the binary blob is received intact at the second device even if one or more packets that comprise the binary blob are lost or corrupted; in conjunction with sending the connection state, adding an entry to a mapping table maintained by the forwarder that indicates the second device as a destination for packets for the connection; sending a mapping for a flow identifier to the second device based upon the entry in the mapping table; receiving subsequent communications from the connecting device by the forwarder; and encapsulating the subsequent communications by the forwarder according to the entry in the mapping table of the forwarder by inserting the flow identifier into the encapsulated communications, wherein the flow identifier serves to identify a flow of encapsulated communications received at the second device from the forwarder as being associated with the connection to the connecting device.
-
-
19. A method of carrying out load balancing, comprising:
-
accepting a connection from a connecting device by a forwarder at a first device, the first device including one or more first processors implementing instructions contained in one or more first processor-accessible storage media for receiving data at the first device as a result of accepting the connection; aggregating, by a classifier at the first device, a connection state for the connection at the first device by aggregating a protocol state of a first protocol stack and the received data to constitute an aggregated connection state; sending the aggregated connection state including the protocol state and the received data asynchronously from the first device to a second device, the second device including one or more second processors implementing instructions contained in one or more second processor-accessible storage media for receiving the aggregated connection state asynchronously at the second device, whereby the aggregated connection state comprised of the protocol state and the received data is received intact at the second device, wherein the receiving further comprises receiving the aggregated connection state as a binary blob asynchronously at the second device, and recognizing the binary blob as a blob for connection migration; injecting the aggregated connection state for the connection into a network stack at the second device by infusing the protocol state into a second protocol stack forming a portion of the network stack at the second device, and directing data from the binary blob to an application at the second device as if the second device were part of a new locally terminated connection; in conjunction with sending the aggregated connection state, sending a mapping for a flow identifier from the first device to the second device, the flow identifier for identifying encapsulated packets received from the forwarder; continuing the connection at the second device using the injected connection state; receiving subsequent communications from the connecting device by the forwarder; encapsulating the subsequent communications by the forwarder by inserting the flow identifier into the encapsulated communications according to a mapping table maintained by the forwarder; and receiving the encapsulated communications at the second device from the forwarder, wherein the flow identifier serves to identify a flow of encapsulated communications as being associated with the connection to the connecting device according to the mapping for the flow identifier received from the first device.
-
-
20. A method of carrying out load balancing, the method comprising:
-
accepting a connection from a connecting device at a forwarder, the forwarder including one or more processors implementing instructions contained in one or more processor-accessible storage media for receiving data at the forwarder from the connecting device as a result of accepting the connection; forwarding the data from the forwarder to a classifier; determining, by the classifier, a second device for receiving the connection; aggregating a connection state for the connection at the classifier by aggregating a protocol state of a first protocol stack and the data to constitute a binary blob, wherein the aggregating the protocol state comprises compiling the protocol state from the first protocol stack for use in offloading the connection state as the binary blob, wherein the compiled protocol state includes destination and source ports and IP addresses, wherein the compiling further comprises compiling the protocol state from the first protocol stack starting at a highest level of the first protocol stack, proceeding down the first protocol stack, to compile the protocol state, and then aggregating the received data with the compiled protocol state into the binary blob to be sent to the second device; sending the connection state from the classifier to the second device for injection into a second protocol stack at the second device by sending the binary blob including the protocol state and the data to the second device, whereby the connection is transferred to the second device; in conjunction with sending the connection state, adding an entry to a mapping table maintained by the forwarder that indicates the second device as a destination for packets for the connection; sending a mapping for a flow identifier to the second device based upon the entry in the mapping table; receiving subsequent communications from the connecting device by the forwarder; and encapsulating the subsequent communications by the forwarder according to the entry in the mapping table of the forwarder by inserting the flow identifier into the encapsulated communications, wherein the flow identifier serves to identify a flow of encapsulated communications received at the second device from the forwarder as being associated with the connection to the connecting device.
-
Specification