IP Library Granted Patent US 8,335,853
Granted Patent B2
US 8,335,853 · App. 12/641,105 · Granted Dec 18, 2012

Transparent recovery of transport connections using packet translation techniques

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,335,853
App. No.
12/641,105
Granted
Dec 18, 2012
Kind
B2
Abstract

Methods and apparatuses, including computer program products, are described for transparent recovery of transport connections. The method includes collecting a state associated with a first connection between a first server and a remote server via a first network socket and transmitting the state from a first networking module to a second networking module. The method includes storing the state, opening a second network socket based on failure of the first networking module, intercepting outbound packets associated with a request to initiate a second connection between the first server and the remote server via the second socket, modifying the intercepted packets based on the state, and transmitting the modified packets to the remote server to elicit an acknowledgement to maintain the first connection. The method includes receiving packets associated with the acknowledgment from the remote server, and modifying the received packets to acknowledge the request to initiate the second connection.

Claims (71)

1. A method for transparent recovery of transport connections, the method comprising:

installing one or more packet translator modules in a first networking module of a first server without modifying an operating system associated with the first networking module;

installing one or more packet translator modules in a second networking module without modifying an operating system associated with the second networking module;

collecting, at the first networking module, the state associated with a first connection between the first server and a remote server via a first network socket of the first networking module;

transmitting, by the first networking module, the state associated with the first connection to a second networking module;

storing, at the second networking module, the state associated with the first connection;

opening, by the second networking module, a second network socket based on detection of a failure of the first networking module;

intercepting, at the second networking module, outbound packets associated with a request to initiate a second connection between the first server and the remote server via the second network socket;

modifying, by the one or more packet translator modules of the second networking module, the intercepted packets based on the state associated with the first connection stored at the second networking module;

transmitting, by the second networking module, the modified packets to the remote server to elicit an acknowledgement from the remote server to maintain the first connection between the first server and the remote server via the second network socket;

receiving, by the second networking module, packets associated with the acknowledgment from the remote server in response to the modified packets transmitted by the second networking module;

modifying, by the one or more packet translator modules of the second networking module, the received packets to acknowledge the request to initiate the second connection between the first server and the remote server via the second network socket; and

wherein the one or more packet translator modules of the first networking module are implemented as network filters invoked by the operating system associated with the first networking module when processing a packet, and the one or more packet translator modules of the second networking module are implemented as network filters invoked by the operating system associated with the second networking module when processing a packet.

2. The method of claim 1 , wherein a first software application tangibly embodied in the second networking module detects the failure of the first networking module.

3. The method of claim 2 , wherein the first software application is a middleware application.

4. The method of claim 2 , wherein the first software application is an end-user software application.

5. The method of claim 2 , wherein the first software application is an operating system.

6. The method of claim 1 , wherein transmitting the state associated with the first connection is based on a period of inactivity on the first connection between the first server and the remote server.

7. The method of claim 1 , wherein transmitting the state associated with the first connection occurs at predetermined time intervals, is based on a number of bytes transmitted on the first connection, a number of bytes received on the first connection, or any combination thereof.

8. The method of claim 1 , wherein the second networking module is a copy of the first networking module.

9. The method of claim 1 , wherein the second networking module is located on the first server or a second server.

10. The method of claim 1 , wherein the network protocol is TCP.

11. The method of claim 10 , wherein the state associated with the first connection comprises a source IP address, a destination IP address, a source port number, a destination port number, a send sequence number, and a receive sequence number.

12. The method of claim 10 , wherein the packets associated with the request to initiate the second connection between the first server and the remote server via the second network socket comprise a TCP connect sequence.

13. The method of claim 10 , wherein the packets associated with maintaining the first connection between the first server and the remote server via the second network socket comprise a TCP keepalive sequence.

14. The method of claim 10 , wherein modifying the intercepted packets further comprises translating a first send sequence number of the intercepted packets into a second send sequence number based on the state associated with the first connection stored at the second networking module.

15. The method of claim 10 , wherein modifying the intercepted packets further comprises translating a first receive sequence number of the intercepted packets into a second receive sequence number based on the state associated with the first connection stored at the second networking module.

16. The method of claim 10 , wherein modifying the received packets further comprises translating a first receive sequence number of the received packets into a second receive sequence number associated with the request to initiate the second connection between the first server and the remote server.

17. The method of claim 10 , wherein modifying the intercepted packets further comprises translating a packet of the intercepted packets comprising a SYN flag and no ACK flag into a packet comprising an ACK flag and no SYN flag.

18. The method of claim 10 , wherein modifying the received packets further comprises translating a packet of the received packets comprising an ACK flag and no SYN flag into a packet comprising a SYN flag and an ACK flag.

19. A system for transparent recovery of transport connections, the system comprising:

a first networking module of a first server having one or more packet translator modules, the first networking module configured to:

collect the state associated with a first connection between the first server and a remote server via a first network socket of the first networking module,

transmit the state associated with the first connection to a second networking module; and

wherein installation of the one or more packet translator modules in the first networking module does not modify an operating system associated with the first networking module; and

the second networking module having one or more packet translator modules configured to:

store the state associated with the first connection;

open a second network socket based on detecting a failure of the first networking module;

intercept outbound packets associated with a request to initiate a second connection between the first server and the remote server via the second network socket;

modify, by one or more packet translator modules, the intercepted packets based on the state associated with the first connection stored at the second networking module;

transmit the modified packets to the remote server to elicit an acknowledgement from the remote server to maintain the first connection between the first server and the remote server via the second network socket;

receive packets associated with the acknowledgement from the remote server in response to the modified packets transmitted by the second networking module; and

modify, by the one or more packet translator modules, the received packets to acknowledge the request to initiate the second connection between the first server and the remote server via the second network socket; and

wherein installation of the one or more packet translator modules in the second networking module does not modify an operating system associated with the second networking module; and

wherein the one or more packet translator modules of the first networking module are implemented as network filters invoked by the operating system associated with the first networking module when processing a packet, and the one or more packet translator modules of the second networking module are implemented as network filters invoked by the operating system associated with the second networking module when processing a packet.

20. A system for transparent recovery of transport connections, the system comprising:

means for installing one or more packet translator modules in a first networking module of a first server without modifying an operating system associated with the first networking module;

means for installing one or more packet translator modules in a second networking module without modifying an operating system associated with the second networking module;

means for collecting, at the first networking module, the state associated with a first connection between the first server and a remote server via a first network socket of the first networking module,

means for transmitting, by the first networking module, the state associated with the first connection to the second networking module;

means for storing in memory, at the second networking module, the state associated with the first connection;

means for opening, by the second networking module, a second network socket based on detection of a failure of the first networking module;

means for intercepting, at the second networking module, outbound packets associated with a request to initiate a second connection between the first server and the remote server via the second network socket;

means for modifying, by one or more packet translator modules of the second networking module, the intercepted packets based on the state associated with the first connection stored at the second networking module;

means for transmitting, implemented by hardware in the second networking module, the modified packets to the remote server to elicit an acknowledgement from the remote server to maintain the first connection between the first server and the remote server via the second network socket;

means for receiving, implemented by hardware in the second networking module, packets associated with the acknowledgment from the remote server in response to the modified packets transmitted by the second networking module;

means for modifying, by the one or more packet translator modules of the second networking module, the received packets to acknowledge the request to initiate the second connection between the first server and the remote server via the second network socket; and

wherein the one or more packet translator modules of the first networking module are implemented as network filters invoked by the operating system associated with the first networking module when processing a packet, and the one or more packet translator modules of the second networking module are implemented as network filters invoked by the operating system associated with the second networking module when processing a packet.

21. A computer program product, tangibly embodied in a non-transitory computer readable storage medium, for transparent recovery of transport connections, the computer program product including instructions operable to cause a data programming apparatus to:

install one or more packet translator modules in a first networking module of a first server without modifying an operating system associated with the first networking module;

install one or more packet translator modules in a second networking module without modifying an operating system associated with the second networking module;

collect the state associated with a first connection between the first server and a remote server via a first network socket of the first networking module;

transmit the state associated with the first connection to the second networking module;

store the state associated with the first connection at the second networking module;

open a second network socket at the second networking module based on a failure of the first networking module;

intercept outbound packets associated with a request to initiate a second connection between the first server and the remote server via the second network socket;

modify the intercepted packets based on the state associated with the first connection stored at the second networking module;

transmit the modified packets to the remote server to elicit an acknowledgement from the remote server to maintain the first connection between the first server and the remote server via the second network socket;

receive packets associated with the acknowledgement from the remote server in response to the modified packets transmitted by the second networking module; and

modify the received packets to acknowledge the request to initiate the second connection between the first server and the remote server via the second network socket; and

wherein the one or more packet translator modules of the first networking module are implemented as network filters invoked by the operating system associated with the first networking module when processing a packet, and the one or more packet translator modules of the second networking module are implemented as network filters invoked by the operating system associated with the second networking module when processing a packet.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Jun 24, 2024
From: CITIZENS BANK, N.A.
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC. (F/K/A GENBAND US LLC AND SONUS NETWORKS, INC.)
Reel/Frame 067822/0433 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 044978/0801 Recorded Dec 6, 2021
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC. (F/K/A GENBAND US LLC AND SONUS NETWORKS, INC.)
Reel/Frame 058949/0497 →
SECURITY INTEREST Recorded Mar 3, 2020
From: RIBBON COMMUNICATIONS OPERATING COMPANY, INC.
To: CITIZENS BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 052076/0905 →
CHANGE OF NAME Recorded Jan 16, 2019
From: SONUS NETWORKS, INC.
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC.
Reel/Frame 048078/0036 →
SECURITY INTEREST Recorded Jan 2, 2018
From: GENBAND US LLC; SONUS NETWORKS, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 044978/0801 →
CHANGE OF NAME Recorded Dec 24, 2017
From: SONUS, INC.
To: SONUS NETWORKS, INC.
Reel/Frame 044957/0213 →
MERGER AND CHANGE OF NAME Recorded Dec 24, 2017
From: SOLSTICE SAPPHIRE, INC.; SONUS NETWORKS, INC.; SONUS NETWORKS, INC.
To: SONUS, INC.
Reel/Frame 044957/0243 →
RELEASE OF SECURITY INTEREST Recorded Oct 24, 2017
From: BANK OF AMERICA, N.A.
To: SONUS NETWORKS, INC.; SONUS FEDERAL, INC.; NETWORK EQUIPMENT TECHNOLOGIES, INC.; PERFORMANCE TECHNOLOGIES, INCORPORATED; SONUS INTERNATIONAL, INC.; TAQUA, INC.
Reel/Frame 044283/0361 →
SECURITY INTEREST Recorded Sep 12, 2014
From: SONUS NETWORKS, INC.; SONUS FEDERAL, INC.; NETWORK EQUIPMENT TECHNOLOGIES, INC.; PERFORMANCE TECHNOLOGIES, INCORPORATED; SONUS INTERNATIONAL, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 033728/0409 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2010
From: BHARRAT, SHAUN JAIKARRAN
To: SONUS NETWORKS, INC.
Reel/Frame 024363/0492 →