IP Library Granted Patent US 12,088,482
Granted Patent B2
US 12,088,482 · App. 17/356,184 · Granted Sep 10, 2024

Optimized data streaming detection and prioritization

Inventors: Kevin Cunningham (Swarthmore, PA); Harry Volek (Philadelphia, PA); Alexander Gizis (Philadelphia, PA); Brian Prodoehl (Plymouth Meeting, PA)
Assignee: CONNECTIFY, INC.
H04L43/062H04L12/4641H04L43/0829H04L43/0894H04L43/16H04L65/70H04L69/22
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 12,088,482
App. No.
17/356,184
Granted
Sep 10, 2024
Kind
B2
Abstract

An example method may include receiving first data packets intended for a client device at a virtual private network (VPN) server, receiving, concurrently with the first data packets, second data packets at the VPN server, identifying, via the VPN server, whether the first or second packets correspond to a real-time streaming session based on one or more of header information and packet size of the first and second packets and a transmission rate associated with the first and second packets, prioritizing the first data packets, identified as real-time streaming session data packets, to be delivered to the client device prior to the second data packets, identified as non-real-time streaming session data packets, and performing connection bonding or connection mirroring using two or more connections when one or more of a data packet loss rate is above a threshold packet loss rate and the transmission rate is below a threshold transmission rate.

Claims (72)

1. A method comprising:

receiving, concurrently, a first plurality of data packets and a second plurality of data packets intended for a client device at a virtual private network (VPN) server;

identifying, via the VPN server, whether the first or second plurality of packets correspond to a real-time streaming session;

prioritizing, via the VPN server, the first plurality of data packets, identified as real-time streaming session data packets, to be delivered to the client device prior to the second plurality of data packets, identified as non-real-time streaming session data packets;

performing, via the VPN server, connection bonding using two or more connections when the first plurality of data packets is experiencing one or more of a data packet loss rate that is above a threshold packet loss rate and a transmission rate that is below a threshold transmission rate, wherein the transmission rate of the first plurality of packets is incrementally increased to a faster optimal transmission rate on the bonded connections for a period of time until the packet loss rate decreases below the threshold packet loss rate; and

when the packet loss rate is identified as having decreased, reducing a transmission rate of one of the two or more connections and maintaining a transmission rate of another of the two or more connections.

2. The method of claim 1 , comprising

determining packet data sizes of at least a portion of the first plurality of data packets received over a period of time;

determining whether the packet data sizes are within a margin of a target packet data size indicative of a streaming data packet; and

identifying the first plurality of data packets as streaming data packets.

3. The method of claim 1 , comprising

determining the transmission rate of at least a portion of the first plurality of data packets received over a period of time;

determining whether the transmission rate is within a margin of a target transmission rate indicative of streaming data packets; and

identifying the first plurality of data packets as streaming data packets.

4. The method of claim 1 , wherein the prioritizing the first plurality of data packets over the second plurality of data packets for delivery to the client device based on header information of the one or more first plurality of data packets is performed based on one or more of a domain name, an IP address and a port identified in the header information.

5. The method of claim 1 , comprising

auditing the first plurality of packets to identify the header information and the packet data size of the first plurality of packets for a plurality of separate time periods;

determining whether the packet data size for each of the first plurality of packets for each of the separate time periods are indicative of streaming data packets; and

performing the prioritization of the first plurality of packets when the first plurality of packets are identified as streaming data for each of the separate time periods.

6. The method of claim 1 , comprising

selecting the transmission rate for the first plurality of packets to be transmitted and received by the client device over one or more connections to reduce a likelihood of communication errors;

determining whether the first plurality of data packets are transmitted and received over the one or more connections by the client device below a threshold packet loss rate; and

combining the connection with a further connection to form the bonded connections when the first plurality of data packets are received above the threshold packet loss rate.

7. The method of claim 6 , wherein at least one of the first plurality of data packets and the second plurality of data packets are transmitted over a Wi-Fi connection before the bonded connection is formed and over the Wi-Fi connection and a cellular connection after the bonded connection is formed comprising the two or more connections.

8. The method of claim 7 , wherein when the packet loss rate decreases, reducing a transmission rate of the cellular connection and maintaining a transmission rate of the Wi-Fi connection.

9. The method of claim 1 , comprising

selecting the transmission rate for the first plurality of packets to be received by the client device over a connection to reduce a likelihood of communication errors;

determining whether the first plurality of data packets are received over the connection by the client device below a threshold packet loss rate; and

combining the connection with a further connection to form a mirrored connection when the first plurality of data packets are received above the threshold packet loss rate.

10. The method of claim 1 , comprising

populating a table stored in memory with streaming server identification information identifying a plurality of streaming servers; and

comparing the header information of the first and second plurality of data packets to the streaming server identification information stored in the table to identify whether the first and second plurality of packets originated from one or more of the plurality of data streaming servers, wherein the transmitting the first plurality of data packets to the client device using the transmission rate is performed via the virtual private network (VPN) server, and wherein the table is stored in the memory of the VPN server or the client device.

11. A virtual private network (VPN) server comprising

a receiver configured to

receive, concurrently, a first plurality of data packets and a second plurality of data packets intended for a client device;

a processor configured to

identify whether the first or second plurality of packets correspond to a real-time streaming session;

prioritize the first plurality of data packets, identified as real-time streaming session data packets, to be delivered to the client device prior to the second plurality of data packets, identified as non-real-time streaming session data packets;

perform connection bonding using two or more connections when the first plurality of data packets is experiencing one or more of a data packet loss rate that is above a threshold packet loss rate and a transmission rate is below a threshold transmission rate, wherein the transmission rate of the first plurality of packets is incrementally increased to a faster optimal transmission rate on the bonded connections for a period of time until the packet loss rate decreases below the threshold packet loss rate;

when the packet loss rate is identified as having decreased, reduce a transmission rate of one of the two or more connections and maintain a transmission rate of another of the two or more connections.

12. The VPN server of claim 11 , wherein the processor is further configured to

determine packet data sizes of at least a portion of the first plurality of data packets received over a period of time;

determine whether the packet data sizes are within a margin of a target packet data size indicative of a streaming data packet; and

identify the first plurality of data packets as streaming data packets.

13. The VPN server of claim 11 , wherein the processor is further configured to

determine the transmission rate of at least a portion of the first plurality of data packets received over a period of time;

determine whether the transmission rate is within a margin of a target transmission rate indicative of streaming data packets; and

identify the first plurality of data packets as streaming data packets.

14. The VPN server of claim 11 , wherein the prioritization of the first plurality of data packets over the second plurality of data packets for delivery to the client device based on the header information of the one or more first plurality of data packets is performed based on one or more of a domain name, an IP address and a port identified in the header information.

15. The VPN server of claim 11 , wherein the processor is further configured to

audit the first plurality of packets to identify header information and a packet data size of the first plurality of packets for a plurality of separate time periods;

determine whether the packet data size for each of the first plurality of packets for each of the separate time periods are indicative of streaming data packets; and

perform the prioritization of the first plurality of packets when the first plurality of packets are identified as streaming data for each of the separate time periods.

16. The VPN server of claim 11 , wherein the processor is further configured to

select the transmission rate for the first plurality of packets to be transmitted and received by the client device over one or more connections to reduce a likelihood of communication errors;

determine whether the first plurality of data packets are transmitted and received over the one or more connections by the client device below a threshold packet loss rate; and

combine the connection with a further connection to form the bonded connections when the first plurality of data packets are received above the threshold packet loss rate.

17. The VPN server of claim 16 , wherein at least one of the first plurality of data packets and the second plurality of data packets are transmitted over a Wi-Fi connection before the bonded connection is formed and over the Wi-Fi connection and a cellular connection after the bonded connection is formed comprising the two or more connections.

18. A non-transitory computer readable storage medium configured to store instructions that when executed cause a processor to perform:

receiving, concurrently, a first plurality of data packets and a second plurality of data packets intended for a client device at a virtual private network (VPN) server;

identifying, via the VPN server, whether the first or second plurality of packets correspond to a real-time streaming session;

prioritizing, via the VPN server, the first plurality of data packets, identified as real-time streaming session data packets, to be delivered to the client device prior to the second plurality of data packets, identified as non-real-time streaming session data packets;

performing, via the VPN server, connection bonding using two or more connections when the first plurality of data packets is experiencing one or more of a data packet loss rate that is above a threshold packet loss rate and a transmission rate that is below a threshold transmission rate, wherein the transmission rate of the first plurality of packets is incrementally increased to a faster optimal transmission rate on the bonded connections for a period of time until the packet loss rate decreases below the threshold packet loss rate; and

when the packet loss rate is identified as having decreased, reducing a transmission rate of one of the two or more connections and maintaining a transmission rate of another of the two or more connections.

19. The non-transitory computer readable storage medium of claim 18 , wherein the processor is further configured to perform:

determining packet data sizes of at least a portion of the first plurality of data packets received over a period of time;

determining whether the packet data sizes are within a margin of a target packet data size indicative of a streaming data packet; and

identifying the first plurality of data packets as streaming data packets.

20. The non-transitory computer readable storage medium of claim 18 , wherein the processor is further configured to perform:

determining the transmission rate of at least a portion of the first plurality of data packets received over a period of time;

determining whether the transmission rate is within a margin of a target transmission rate indicative of streaming data packets; and

identifying the first plurality of data packets as streaming data packets.

Assignments (2)
CHANGE OF ASSIGNEE ADDRESS Recorded Sep 21, 2025
From: CONNECTIFY, INC.
To: CONNECTIFY, INC.
Reel/Frame 072957/0512 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2021
From: CUNNINGHAM, KEVIN; VOLEK, HARRY; GIZIS, ALEXANDER; PRODOEHL, BRIAN
To: CONNECTIFY, INC.
Reel/Frame 056643/0123 →
Continuity (2)
Provisional Application 63042849 · Jun 23, 2020
Related Publication 20210399960A1 · Dec 23, 2021