Connection forwarding
Abstract
Two or more network traffic processors connected with the same LAN and WAN are identified as neighbors. Neighboring network traffic processors cooperate to overcome asymmetric routing, thereby ensuring that related sequences of network traffic are processed by the same network proxy. A network proxy can be included in a network traffic processor or as a standalone unit. A network traffic processor that intercepts a new connection initiation by a client assigns a network proxy to handle all messages associated with that connection. The network traffic processor conveys connection information to neighboring network traffic processors. The neighboring network traffic processors use the connection information to redirect network traffic associated with the connection to the assigned network proxy, thereby overcoming the effects of asymmetric routing. The assigned network proxy handles redirected network traffic in much the same way that it would handle network traffic received directly.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method, comprising:
receiving, at a first client-side proxy, first connection setup information for a first connection between a client and a server; sending, from the first client-side proxy to a second client-side proxy, second connection setup information that comprises at least a portion of the first connection setup information; storing at the second client-side proxy, the second connection setup information; receiving, at the second client-side proxy, a) connection setup response information, and b) server-side proxy identifying information that indicates the presence of a server-side proxy; based at least in part on the stored second connection setup information, forwarding to the first client-side proxy from the second client-side proxy both the connection setup response information and the server-side proxy-identifying information; and in response to receiving the connection setup response information and the server-side proxy-identifying information, establishing at the first client-side proxy a second connection between the first client-side proxy and the server-side proxy based at least in part on the server-side proxy-identifying information; wherein the method is performed by one or more computing devices.
2 . The method of claim 1 , further comprising proxying the one or more messages over the second connection in response to receiving one or more messages from the client to the server at the first client-side proxy.
3 . The method of claim 2 , wherein proxying the one or more messages comprises sending representations of the one or more messages over the second connection to the server-side proxy.
4 . The method of claim 1 , further comprising:
establishing the first connection; and in response to the establishing of the second connection, terminating the first connection.
5 . The method of claim 1 , wherein forwarding from the second client-side proxy the connection setup response information to the first client-side proxy comprises encapsulating at least a portion of a message received by the second client-side proxy using a tunneling protocol.
6 . The method of claim 1 , wherein forwarding from the second client-side proxy the connection setup response information to the first client-side proxy comprises modifying a destination address of a message received by the second client-side proxy.
7 . The method of claim 1 , wherein forwarding from the second client-side proxy the connection setup response information to the first client-side proxy comprises extracting the payload from a message received by the second client-side proxy and sending the payload to the first client-side proxy.
8 . The method of claim 1 , further comprising:
receiving, at the second client-side proxy, third connection setup information for a third connection between a second client and a second server; sending, from the second client-side proxy to first client-side proxy, fourth connection setup information that comprises at least a portion of the third connection setup information; storing at the first client-side proxy, the fourth connection setup information; receiving, at the first client-side proxy, a) second connection setup response information, and b) second server-side proxy identifying information that indicates the presence of a second server-side proxy; based at least in part on the stored fourth connection setup information, forwarding to the second client-side proxy from the first client-side proxy both the second connection setup response information and the second server-side proxy-identifying information; and in response to receiving the second connection setup response information and the second server-side proxy-identifying information, establishing at the second client-side proxy a fourth connection between the second client-side proxy and the second server-side proxy based at least in part on the second server-side proxy-identifying information.
9 . The method of claim 8 , wherein the first server-side proxy is a different server-side proxy than the second server-side proxy.
10 . The method of claim 1 , wherein the first client-side proxy maintains a connection state internally based on the connection setup response information, the connection state corresponding to a connection between the first client-side proxy and the first server-side proxy as if the connection setup response information sent from the second client-side proxy to the first client-side proxy had been received at the first client-side proxy from the first server-side proxy.
11 . A computer-readable non-transitory storage medium storing instructions which, when executed on one or more processors, cause the one or more processors to perform:
receiving, at a first client-side proxy, first connection setup information for a first connection between a client and a server; sending, from the first client-side proxy to a second client-side proxy, second connection setup information that comprises at least a portion of the first connection setup information; storing at the second client-side proxy, the second connection setup information; receiving, at the second client-side proxy, a) connection setup response information, and b) server-side proxy identifying information that indicates the presence of a server-side proxy; based at least in part on the stored second connection setup information, forwarding from the second client-side proxy to the first client-side proxy both the connection setup response information and the server-side proxy-identifying information; and in response to receiving the connection setup response information and the server-side proxy-identifying information establishing at the first client-side proxy a second connection between the first client-side proxy and the server-side proxy based at least in part on the server-side proxy-identifying information.
12 . The computer-readable non-transitory storage medium of claim 11 , wherein the instructions further include instructions for proxying the one or more messages over the second connection in response to receiving one or more messages from the client to the server at the first client-side proxy.
13 . The computer-readable non-transitory storage medium of claim 12 , wherein proxying the one or more messages comprises sending representations of the one or more messages over the second connection to the server-side proxy.
14 . The computer-readable non-transitory storage medium of claim 11 , wherein the instructions further include instructions for:
establishing the first connection; and in response to the establishing of the second connection, terminating the first connection.
15 . The computer-readable non-transitory storage medium of claim 11 , wherein forwarding from the second client-side proxy the connection setup response information to the first client-side proxy comprises encapsulating at least a portion of a message received by the second client-side proxy using a tunneling protocol.
16 . The computer-readable non-transitory storage medium of claim 11 , wherein forwarding from the second client-side proxy the connection setup response information to the first client-side proxy comprises modifying a destination address of a message received by the second client-side proxy.
17 . The computer-readable non-transitory storage medium of claim 11 , wherein forwarding from the second client-side proxy the connection setup response information to the first client-side proxy comprises extracting the payload from a message received by the second client-side proxy and sending the payload to the first client-side proxy.
18 . The computer-readable non-transitory storage medium of claim 11 , wherein the instructions further include instructions for:
receiving, at the second client-side proxy, third connection setup information for a third connection between a second client and a second server; sending, from the second client-side proxy to first client-side proxy, fourth connection setup information that comprises at least a portion of the third connection setup information; storing at the first client-side proxy the fourth connection setup information; receiving, at the first client-side proxy, a) second connection setup response information, and b) second server-side proxy identifying information that indicates the presence of a second server-side proxy; based at least in part on the stored fourth connection setup information forwarding from the first client-side proxy to the second client-side proxy both the second connection setup response information and the second server-side proxy-identifying information; in response to receiving the second connection setup response information and the second server-side proxy-identifying information establishing, at the second client-side proxy a fourth connection between the second client-side proxy and the second server-side proxy based at least in part on the second server-side proxy-identifying information.
19 . The computer-readable non-transitory storage medium of claim 18 , wherein the first server-side proxy is a different server-side proxy than the second server-side proxy.
20 . The computer-readable non-transitory storage medium of claim 11 , further comprising program code at the first client-side proxy to maintain a connection state internally based on the connection setup response information, the connection state corresponding to a connection between the first client-side proxy and the first server-side proxy as if the connection setup response information sent from the second client-side proxy to the first client-side proxy had been received at the first client-side proxy from the first server-side proxy.
21 . A system, comprising:
a first initiation-side proxy, comprising:
a) one or more processors;
b) logic configured to receive first connection setup information for a first connection between a client and a server; and
c) logic configured to send, to a second initiation-side proxy, second connection setup information that comprises at least a portion of the first connection setup information;
the second initiation-side proxy, comprising:
a) one or more processors;
b) logic configured to store the second connection setup information; and
c) logic configured to receive: a) connection setup response information, and b) response-side proxy identifying information that indicates the presence of a response-side proxy; and
d) logic configured to forward, based at least in part on the stored second connection setup information, both the connection setup response information and the response-side proxy-identifying information to the first initiation-side proxy; and
wherein the first initiation-side proxy further comprises logic configured to establish a second connection between the first initiation-side proxy and the response-side proxy based at least in part on the response-side proxy-identifying information in response to receiving the connection setup response information and the response-side proxy-identifying information, wherein an initiation-side is the side where a transaction begins.
22 . The system of claim 21 , wherein the first initiation-side proxy further comprises logic configured to proxy the one or more messages over the second connection in response to receiving one or more messages from the client to the server at the first initiation-side proxy.
23 . The system of claim 22 , wherein proxying the one or more messages comprises sending representations of the one or more messages over the second connection to the response-side proxy.
24 . The system of claim 21 , wherein the first initiation-side proxy further comprises logic configured to:
establish the first connection; and terminate the first connection in response to the establishing of the second connection.
25 . The system of claim 21 , wherein forwarding the connection setup response information to the first initiation-side proxy comprises encapsulating at least a portion of a message received by the second initiation-side proxy using a tunneling protocol.
26 . The system of claim 21 , wherein forwarding the connection setup response information to the first initiation-side proxy comprises modifying a destination address of a message received by the second initiation-side proxy.
27 . The system of claim 21 , wherein forwarding the connection setup response information to the first initiation-side proxy comprises extracting the payload from a message received by the second initiation-side proxy and sending the payload to the first initiation-side proxy.
28 . The system of claim 21 , wherein:
the second initiation-side proxy further comprises:
e) logic configured to receive third connection setup information for a third connection between a second client and a second server; and
f) logic configured to send, to the first initiation-side proxy, fourth connection setup information that comprises at least a portion of the third connection setup information;
the first initiation-side proxy further comprises:
d) logic configured to store the fourth connection setup information;
e) logic configured to receive: a) second connection setup response information, and b) second response-side proxy identifying information that indicates the presence of a second response-side proxy; and
f) logic configured to forward both the second connection setup response information and the second response-side proxy-identifying information to the second initiation-side proxy based at least in part on the stored fourth connection setup information; and
the second initiation-side proxy further comprises:
g) logic configured to establish a fourth connection between the second initiation-side proxy and the second response-side proxy based at least in part on the second response-side proxy-identifying information in response to receiving the second connection setup response information and the second response-side proxy-identifying information.
29 . The system of claim 28 , wherein the first response-side proxy is a different response-side proxy than the second response-side proxy.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.