IP Library Granted Patent US 8,230,091
Granted Patent B2
US 8,230,091 · App. 12/546,366 · Granted Jul 24, 2012

System and method for real-time bidirectional communication through firewalls

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,230,091
App. No.
12/546,366
Granted
Jul 24, 2012
Kind
B2
Abstract

A system and method for real-time data transmission through data communication networks are disclosed. The system and the method allow for real time communication between applications located in different internal networks protected by firewalls by means of representing the applications by proxies and establishing TCP channels towards an intermediate proxy server localized outside the firewalls. A set of parameters residing in the server determines i.a. the number of required TCP channels based on the ratio of measured bandwidth between the data flow directions.

Claims (61)

1. A non-transitory, computer-accessible memory medium storing program instructions for communication between a real-time client and a real-time server, wherein the program instructions are executable by a processor to:

establish at least one bidirectional connection to the real-time server through at least one of one or more firewalls or one or more NAT devices, wherein the at least one bidirectional connection comprises at least one bidirectional HTTPS connection or at least two unidirectional HTTP connections;

receive a first one or more RTP packets of a real-time application;

provide a first one or more TCP packets to the real-time server via the at least one bidirectional connection, wherein the first one or more TCP packets comprise the first one or more RTP packets;

receive a second one or more TCP packets from the real-time server via the at least one bidirectional connection;

extract a second one or more RTP packets from the second one or more TCP packets; and

provide at least one of the second one or more RTP packets to the real-time application;

wherein the program instructions are further executable to provide an acknowledgement to the real-time server for each TCP packet regardless of whether or not the TCP packet is received, and if a TCP packet is lost, modify a TCP 32-bit acknowledge number of the TCP packet to be equal to a TCP bit sequence number of a last received TCP packet.

2. The non-transitory, computer-accessible memory medium of claim 1 , wherein the at least one bidirectional connection comprises a plurality of bidirectional connections, wherein each bidirectional connections comprises a bidirectional HTTPS connection or two unidirectional HTTP connections.

3. The non-transitory, computer-accessible memory medium of claim 1 , wherein the program instructions are further executable to:

cache the second one or more RTP packets in a buffer; and

drop at least an RTP packet of the second one or more RTP packets from the buffer, leaving a third one or more RTP packets in the buffer;

wherein said providing comprises providing the third one or more RTP packets to the real-time application.

4. The non-transitory, computer-accessible memory medium of claim 1 , wherein the program instructions are further executable to establish at least one additional bidirectional connection to perform communication between the real-time server and the real-time client.

5. The non-transitory, computer-accessible memory medium of claim 4 , wherein said establishing the at least one additional bidirectional connection is performed based on one or more of the following conditions:

a first cache level is full;

a second cache level is full;

the first cache level has reached a predetermined threshold level;

the second cache level has reached a predetermined threshold level;

a rate of dropping packets has reached a predetermined drop rate level;

a function of a current drop rate and one or more previous drop rates is satisfied; or

a ratio between a total transmitted bandwidth and a total receiving bandwidth exceeds a predetermined threshold with reference to the real-time client.

6. The non-transitory, computer-accessible memory medium of claim 4 , wherein the program instructions are further executable to reduce the number of bidirectional connections based on one or more of the following conditions:

a first cache level is empty;

a second cache level is empty;

the first cache level has reached a predetermined threshold level;

the second cache level has reached a predetermined threshold level;

a rate of dropping packets has reached a predetermined drop rate level;

a function of a current drop rate and a previous drop rate or drop rates are satisfied; or

a ratio between the total transmitted bandwidth and the total receiving bandwidth exceeds a predetermined threshold with reference to the real-time client.

7. The non-transitory, computer-accessible memory medium of claim 4 , wherein the program instructions are further executable to rank a best available bidirectional connection according to one or more of the following conditions:

a first cache level is full;

a second cache level is full;

the first cache level has reached a predetermined threshold level;

the second cache level has reached a predetermined threshold level;

a rate of dropping packets has reach a predetermined drop rate level;

a function of a current drop rate and a previous drop rate or drop rates are satisfied; or

ratio between a total transmitted bandwidth and the total receiving bandwidth exceeds a predetermined threshold with reference to the real-time client.

8. A non-transitory, computer-accessible memory medium storing program instructions for communication between a real-time client and a real-time server, wherein the program instructions are executable by a processor to:

establish at least one bidirectional connection to the real-time client through at least one of one or more firewalls or one or more NAT devices, wherein the at least one bidirectional connection comprises at least one bidirectional HTTPS connection or at least two unidirectional HTTP connections;

receive a first one or more RTP packets of a real-time application;

provide a first one or more TCP packets to the real-time client via the at least one bidirectional connection, wherein the first one or more TCP packets comprise the first one or more RTP packets;

acknowledge receipt of each of the first one or more TCP packets, regardless of whether or not the TCP is received by the real-time client, wherein said acknowledging comprises using a TCP 32-bit acknowledge number of a last provided TCP packet;

receive a second one or more TCP packets from the real-time client via the at least one bidirectional connection;

extract a second one or more RTP packets from the second one or more TCP packets; and

provide at least one of the second one or more RTP packets to the real-time application.

9. The non-transitory, computer-accessible memory medium of claim 8 , wherein the at least one bidirectional connection comprises a plurality of bidirectional connections, wherein each bidirectional connections comprises a bidirectional HTTPS connection or two unidirectional HTTP connections.

10. The non-transitory, computer-accessible memory medium of claim 8 , wherein the program instructions are further executable to:

cache the second one or more RTP packets in a buffer; and

drop at least an RTP packet of the second one or more RTP packets from the buffer, leaving a third one or more RTP packets in the buffer;

wherein said providing comprises providing the third one or more RTP packets to the real-time application.

11. The non-transitory, computer-accessible memory medium of claim 8 , wherein the program instructions are further executable to establish at least one additional bidirectional connection to perform communication between the real-time server and the real-time client.

12. The non-transitory, computer-accessible memory medium of claim 11 , wherein said establishing the at least one additional bidirectional connection is performed based on one or more of the following conditions:

a first cache level is full;

a second cache level is full;

the first cache level has reached a predetermined threshold level;

the second cache level has reached a predetermined threshold level;

a rate of dropping packets has reach a predetermined drop rate level;

a function of a current drop rate and a previous drop rate or drop rates are satisfied; or

a ratio between the total transmitted bandwidth and the total receiving bandwidth exceeds a predetermined threshold with reference to the real-time client.

13. The non-transitory, computer-accessible memory medium of claim 8 , wherein the program instructions are further executable to add a fixed bit pattern to every RTP packet.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2025
From: SL MIDCO 2, LLC; SL MIDCO 1, LLC; LO PLATFORM MIDCO, INC.; SERENOVA, LLC; LIFESIZE, INC.; TELESTRAT LLC; LIGHT BLUE OPTICS INC.; SERENOVA WFM, INC.
To: ENGHOUSE INTERACTIVE INC.
Reel/Frame 070932/0415 →
SECURITY INTEREST Recorded Mar 16, 2020
From: LIFESIZE, INC.
To: WESTRIVER INNOVATION LENDING FUND VIII, L.P.
Reel/Frame 052179/0063 →
SECURITY INTEREST Recorded Mar 2, 2020
From: SERENOVA, LLC; LIFESIZE, INC.; LO PLATFORM MIDCO, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 052066/0126 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 040900 FRAME: 0818. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 11, 2017
From: LOGITECH EUROPE S.A.
To: LIFESIZE COMMUNICATIONS, INC.
Reel/Frame 041331/0507 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2016
From: LOGITECH EUROPE S.A.
To: LIFESIZE COMMUNICATIONS INC.
Reel/Frame 040900/0818 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2016
From: LIFESIZE COMMUNICATIONS, INC.
To: LIFESIZE, INC.
Reel/Frame 037900/0054 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2011
From: PARADIAL AS
To: LIFESIZE COMMUNICATIONS, INC.
Reel/Frame 026227/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2011
From: PARADIAL AS
To: LOGITECH EUROPE S.A.
Reel/Frame 025844/0917 →