IP Library Granted Patent US 8,140,690
Granted Patent B2
US 8,140,690 · App. 12/331,257 · Granted Mar 20, 2012

Connection forwarding

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,140,690
App. No.
12/331,257
Granted
Mar 20, 2012
Kind
B2
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 (115)

1. In a network usable by clients and servers for conveying messages there between comprising transactions wherein a transaction comprises one or more messages from a client forming a client request to a server and one or more messages from the server forming a server response to the client, wherein at least one message from the client is conveyed from the client to the server via an owning proxy, a system for ensuring that the owning proxy has access to parts of the transaction, the owning proxy being a proxy that is programmed to expect such access, the system comprising:

logic in the owning proxy for maintaining a connection status;

logic in the owning proxy for deriving new-connection information from a message that establishes a new client/server connection;

logic in the owning proxy for providing the new-connection information to at least one of a plurality of neighboring proxies;

logic in the owning proxy for conveying the connection status information to the plurality of neighboring proxies, wherein:

a) the connection status information indicates at least one transaction owned by the owning proxy; and

b) the plurality of neighboring proxies are proxies that can receive messages as part of a transaction owned by the owning proxy but not directed to the owning proxy;

at least one of the plurality of neighboring proxies comprising:

a) logic that stores the new-connection information and associates the new-connection information with the owning proxy;

b) logic for tracking transaction ownership; and

c) logic for transferring messages to the owning proxy using the new-connection information to be processed by the owning proxy, when indicated by a tracked transaction ownership information that the messages are a related sequences of messages, wherein the logic for transferring messages to the owning proxy is adapted to encapsulate at least a portion of a message received by the neighboring proxy using a tunneling protocol; and

logic in the owning proxy that processes the related sequence of messages using the same owning proxy.

2. The system of claim 1 , wherein the owning proxy is a client-side proxy connected with at least one client via a local area portion of the network.

3. The system of claim 1 , wherein the owning proxy is a server-side proxy connected with at least one server via a local area portion of the network.

4. In a network usable by clients and servers for conveying messages there between comprising transactions wherein a transaction comprises one or more messages from a client forming a client request to a server and one or more messages from the server forming a server response to the client, wherein at least one message from the client is conveyed from the client to the server via an owning proxy, a system for ensuring that the owning proxy has access to parts of the transaction, the owning proxy being a proxy that is programmed to expect such access, the system comprising:

logic in the owning proxy for maintaining a connection status;

logic in the owning proxy for deriving new-connection information from a message that establishes a new client/server connection;

logic in the owning proxy for providing the new-connection information to at least one of a plurality of neighboring proxies;

logic in the owning proxy for conveying the connection status information to the plurality of neighboring proxies, wherein:

a) the connection status information indicates at least one transaction owned by the owning proxy; and

b) the plurality of neighboring proxies are proxies that can receive messages as part of a transaction owned by the owning proxy but not directed to the owning proxy;

at least one of the plurality of neighboring proxies comprising:

a) logic that stores the new-connection information and associates the new- connection information with the owning proxy;

b) logic for tracking transaction ownership; and

c) logic for transferring messages to the owning proxy using the new-connection information to be processed by the owning proxy, when indicated by a tracked transaction ownership information that the messages are a related sequences of messages, wherein the logic for transferring messages to the owning proxy is adapted to modify a destination address of a message received by the neighboring proxy; and

logic in the owning proxy that processes the related sequence of messages using the same owning proxy.

5. The system of claim 1 , wherein the logic for tracking transaction ownership includes logic adapted to store the connection status information and logic adapted to determine if a message received by the neighboring proxy is associated with a transaction indicated by the connection status information.

6. The system of claim 1 , further comprising:

at least one additional proxy adapted to form an association with the owning proxy, wherein the owning proxy and the additional proxy each include logic adapted to facilitate communication of messages between a client and a server via the owning proxy and the additional proxy over at least a portion of the network.

7. The system of claim 6 , wherein the owning proxy is adapted to process messages to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the client.

8. The system of claim 6 , wherein the owning proxy is adapted to process messages to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the server.

9. A method, in a network usable by clients and servers for conveying messages there between including transactions wherein a transaction includes one or more messages from a client forming a client request to a server and one or more messages from the server forming a server response to the client, wherein at least one message from the client is conveyed from the client to the server via an owning proxy, the method ensures that the owning proxy has access to parts of the transaction, the owning proxy being a proxy that is programmed to expect such access, the method comprising:

maintaining a connection status using logic in the owning proxy;

deriving a new-connection information from a message that establishes a new client/server connection using logic in the owning proxy;

providing the new-connection information to at least one of a plurality of neighboring proxies using logic in the owning proxy;

conveying a connection status information to the plurality of neighboring proxies using logic in the owning proxy, wherein:

a) the connection status information indicates at least one transaction owned by the owning proxy; and

b) the plurality of neighboring proxies are proxies that can receive messages as part of a transaction owned by the owning proxy but not directed to the owning proxy;

storing the new-connection information and associating the new-connection information with the owning proxy using logic in at least one of the plurality of neighboring proxies;

tracking transaction ownership using logic in the at least one of the plurality of neighboring proxies;

transferring messages to the owning proxy using logic in the least one of the plurality of neighboring proxies and using the new-connection information to be processed by the owning proxy, when indicated by a tracked transaction ownership information that the messages are a related sequences of messages, wherein transferring messages to the owning proxy includes encapsulating at least a portion of a message received by the neighboring proxy using a tunneling protocol; and

processing the related sequence of messages using the same owning proxy.

10. The method of claim 9 , wherein the owning proxy is a client-side proxy connected with at least one client via a local area portion of the network.

11. The method of claim 9 , wherein the owning proxy is a server-side proxy connected with at least one server via a local area portion of the network.

12. A method, in a network usable by clients and servers for conveying messages there between including transactions wherein a transaction includes one or more messages from a client forming a client request to a server and one or more messages from the server forming a server response to the client, wherein at least one message from the client is conveyed from the client to the server via an owning proxy, the method ensures that the owning proxy has access to parts of the transaction, the owning proxy being a proxy that is programmed to expect such access, the method comprising:

maintaining a connection status using logic in the owning proxy;

deriving a new-connection information from a message that establishes a new client/server connection using logic in the owning proxy;

providing the new-connection information to at least one of a plurality of neighboring proxies using logic in the owning proxy;

conveying a connection status information to the plurality of neighboring proxies using logic in the owning proxy, wherein:

a) the connection status information indicates at least one transaction owned by the owning proxy; and

b) the plurality of neighboring proxies are proxies that can receive messages as part of a transaction owned by the owning proxy but not directed to the owning proxy;

storing the new-connection information and associating the new-connection information with the owning proxy using logic in at least one of the plurality of neighboring proxies;

tracking transaction ownership using logic in the at least one of the plurality of neighboring proxies;

transferring messages to the owning proxy using logic in the least one of the plurality of neighboring proxies and using the new-connection information to be processed by the owning proxy, when indicated by a tracked transaction ownership information that the messages are a related sequences of messages, wherein transferring messages to the owning proxy using logic comprises modifying a destination address of a message received by the neighboring proxy; and

processing the related sequence of messages using the same owning proxy.

13. The method of claim 9 , wherein tracking transaction ownership using logic in the at least one of the plurality of neighboring proxies includes storing the connection status information and determining if a message received by the neighboring proxy is associated with a transaction indicated by the connection status information.

14. The method of claim 9 , further comprising:

forming an association between at least one additional proxy and the owning proxy; and

facilitating communication of messages between a client and a server via the owning proxy and the additional proxy over at least a portion of the network using logic in the owning proxy or the additional proxy.

15. The method of claim 14 , further comprising processing messages at the owning proxy to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the client.

16. The method of claim 14 , further comprising processing messages at the owning proxy to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the server.

17. In a network usable by clients and servers for conveying messages there between comprising transactions wherein a transaction comprises one or more messages from a client forming a client request to a server and one or more messages from the server forming a server response to the client, wherein at least one message from the client is conveyed from the client to the server via an owning proxy, a system for ensuring that the owning proxy has access to parts of the transaction, the owning proxy being a proxy that is programmed to expect such access, the system comprising:

logic in the owning proxy for maintaining a connection status;

logic in the owning proxy for deriving new-connection information from a message that establishes a new client/server connection;

logic in the owning proxy for providing the new-connection information to at least one of a plurality of neighboring proxies;

logic in the owning proxy for conveying the connection status information to the plurality of neighboring proxies, wherein:

a) the connection status information indicates at least one transaction owned by the owning proxy; and

b) the plurality of neighboring proxies are proxies that can receive messages as part of a transaction owned by the owning proxy but not directed to the owning proxy;

at least one of the plurality of neighboring proxies comprising:

a) logic that stores the new-connection information and associates the new-connection information with the owning proxy;

b) logic for tracking transaction ownership; and

c) logic for transferring messages to the owning proxy using the new-connection information to be processed by the owning proxy, when indicated by a tracked transaction ownership information that the messages are a related sequences of messages;

d) logic for extracting a payload from a message; and

e) logic for sending the payload to the owning proxy;

logic in the owning proxy that processes the related sequence of messages using the same owning proxy.

18. The system of claim 17 , wherein the owning proxy is a client-side proxy connected with at least one client via a local area portion of the network.

19. The system of claim 17 , wherein the owning proxy is a server-side proxy connected with at least one server via a local area portion of the network.

20. The system of claim 17 , wherein the logic for tracking transaction ownership includes logic adapted to store the connection status information and logic adapted to determine if a message received by the neighboring proxy is associated with a transaction indicated by the connection status information.

21. The system of claim 17 , further comprising:

at least one additional proxy adapted to form an association with the owning proxy, wherein the owning proxy and the additional proxy each include logic adapted to facilitate communication of messages between a client and a server via the owning proxy and the additional proxy over at least a portion of the network.

22. The system of claim 21 , wherein the owning proxy is adapted to process messages to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the client.

23. The system of claim 21 , wherein the owning proxy is adapted to process messages to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the server.

24. A method, in a network usable by clients and servers for conveying messages there between including transactions wherein a transaction includes one or more messages from a client forming a client request to a server and one or more messages from the server forming a server response to the client, wherein at least one message from the client is conveyed from the client to the server via an owning proxy, the method ensures that the owning proxy has access to parts of the transaction, the owning proxy being a proxy that is programmed to expect such access, the method comprising:

maintaining a connection status using logic in the owning proxy;

deriving a new-connection information from a message that establishes a new client/server connection using logic in the owning proxy;

providing the new-connection information to at least one of a plurality of neighboring proxies using logic in the owning proxy;

conveying a connection status information to the plurality of neighboring proxies using logic in the owning proxy, wherein:

a) the connection status information indicates at least one transaction owned by the owning proxy; and

b) the plurality of neighboring proxies are proxies that can receive messages as part of a transaction owned by the owning proxy but not directed to the owning proxy;

storing the new-connection information and associating the new-connection information with the owning proxy using logic in at least one of the plurality of neighboring proxies;

tracking transaction ownership using logic in the at least one of the plurality of neighboring proxies;

transferring messages to the owning proxy using logic in the least one of the plurality of neighboring proxies and using the new-connection information to be processed by the owning proxy, when indicated by a tracked transaction ownership information that the messages are a related sequences of messages, wherein the transferring messages to an owning proxy includes extracting the payload from a message and sending the payload to the owning proxy; and

processing the related sequence of messages using the same owning proxy.

25. The method of claim 24 , wherein the owning proxy is a client-side proxy connected with at least one client via a local area portion of the network.

26. The method of claim 24 , wherein the owning proxy is a server-side proxy connected with at least one server via a local area portion of the network.

27. The method of claim 24 , wherein tracking transaction ownership using logic in the at least one of the plurality of neighboring proxies includes storing the connection status information and determining if a message received by the neighboring proxy is associated with a transaction indicated by the connection status information.

28. The method of claim 24 , further comprising:

forming an association between at least one additional proxy and the owning proxy; and

facilitating communication of messages between a client and a server via the owning proxy and the additional proxy over at least a portion of the network using logic in the owning proxy or the additional proxy.

29. The method of claim 28 , further comprising processing messages at the owning proxy to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the client.

30. The method of claim 28 , further comprising processing messages at the owning proxy to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the server.

31. The system of claim 4 , wherein the owning proxy is a client-side proxy connected with at least one client via a local area portion of the network.

32. The system of claim 4 , wherein the owning proxy is a server-side proxy connected with at least one server via a local area portion of the network.

33. The system of claim 4 , wherein the logic for tracking transaction ownership includes logic adapted to store the connection status information and logic adapted to determine if a message received by the neighboring proxy is associated with a transaction indicated by the connection status information.

34. The system of claim 4 , further comprising: at least one additional proxy adapted to form an association with the owning proxy, wherein the owning proxy and the additional proxy each include logic adapted to facilitate communication of messages between a client and a server via the owning proxy and the additional proxy over at least a portion of the network.

35. The system of claim 34 , wherein the owning proxy is adapted to process messages to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the client.

36. The system of claim 34 , wherein the owning proxy is adapted to process messages to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the server.

37. The method of claim 12 , wherein the owning proxy is a client-side proxy connected with at least one client via a local area portion of the network.

38. The method of claim 12 , wherein the owning proxy is a server-side proxy connected with at least one server via a local area portion of the network.

39. The method of claim 12 , wherein tracking transaction ownership using logic in the at least one of the plurality of neighboring proxies includes storing the connection status information and determining if a message received by the neighboring proxy is associated with a transaction indicated by the connection status information.

40. The method of claim 12 , further comprising:

forming an association between at least one additional proxy and the owning proxy; and

facilitating communication of messages between a client and a server via the owning proxy and the additional proxy over at least a portion of the network using logic in the owning proxy or the additional proxy.

41. The method of claim 40 , further comprising processing messages at the owning proxy to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the client.

42. The method of claim 40 , further comprising processing messages at the owning proxy to produce transformed messages, wherein the transformed messages are equivalent to messages previously received by the owing proxy from the server.

Assignments (19)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 18, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059232/0551 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
PATENT SECURITY AGREEMENT Recorded Mar 5, 2021
From: RIVERBED TECHNOLOGY, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 055514/0249 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
SECURITY AGREEMENT Recorded Dec 20, 2012
From: RIVERBED TECHNOLOGY, INC.; OPNET TECHNOLOGIES, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 029646/0060 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2008
From: LY, KAND; TSENG, JOSHUA; MCCANNE, STEVE
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 021990/0052 →