IP Library Granted Patent US 10,999,773
Granted Patent B2
US 10,999,773 · App. 15/675,381 · Granted May 4, 2021

Opportunistic balancing in multiple links

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 10,999,773
App. No.
15/675,381
Granted
May 4, 2021
Kind
B2
Abstract

Systems and methods are provided for opportunistic load balancing across one or more communication links supported by one or more base stations. As part of the opportunistic load balancing process, a load balancer may measure a performance metric and an idle capacity metric for the one or more communication links. In some embodiments, the load balancer may directionally measure the performance metric and the idle capacity metric. Based on the measured metrics, the load balancer may determine a candidate base station for a network socket. The load balancer may then establish the network socket with the candidate base station. As a result, the load balancer may help alleviate network congestion.

Claims (65)

1. A computer-implemented method, executed with a computer processor disposed within a vehicle, comprising:

commanding, with the computer processor, a first transceiver disposed within the vehicle to measure a first radio channel performance metric and a first idle capacity metric for both of a forward link and a reverse link supported by a first base station;

commanding, with the computer processor, a second transceiver disposed within the vehicle to measure a second radio channel performance metric and a second idle capacity metric for both a forward link and a reverse link supported by a second base station, wherein:

measuring an idle capacity metric for a particular link includes calculating, with the computer processor, a bandwidth estimate metric indicative of a capacity of the particular link and a scheduled traffic metric for the particular link, and

at least one of the bandwidth estimate metric or the scheduled traffic metric is measured by invoking an application programming interface (API) of a vendor-specific application of the respective base station:

determining, with the computer processor, a first candidate base station for a forward link network socket using the first radio channel performance metric, the second radio channel performance metric, the first idle capacity metric, and the second idle capacity metric for the forward links supported by the first and second base stations;

determining, with the computer processor, a second candidate base station for a reverse link network socket using the first radio channel performance metric, the second radio channel performance metric, the first idle capacity metric, and the second idle capacity metric for the reverse links supported by the first and second base stations;

commanding, with the computer processor, at least one of the first transceiver or the second transceiver to establish the forward link network socket with the first candidate base station; and

commanding, with the computer processor, at least one of the first transceiver or the second transceiver to establish the reverse link network socket with the second candidate base station.

2. The method of claim 1 , wherein measuring a performance metric for a link comprises:

calculating, with the computer processor, at least one of a round-trip time (RTT) on the link of a ping message originating from the vehicle and a quantity of attempted retransmissions.

3. The method of claim 1 , wherein measuring a radio channel performance metric for a link comprises:

commanding, with the computer processor, at least one of the first transceiver or the second transceiver to measure at least one of a signal-to-noise ratio (SNR), a noise power level, a received signal strength measure, and a data error rate for the link.

4. The method of claim 1 , further comprising:

determining, with the computer processor, a new candidate base station when at least one of a radio channel performance metric or the idle capacity metric for a forward link supported by the first candidate base station falls below a minimum performance threshold; and

commanding, with the computer processor, at least one of the first transceiver or the second transceiver to establish a new forward link network socket with the new candidate base station.

5. The method of claim 1 , further comprising:

determining, with the computer processor, a new candidate base station when at least one of a radio channel performance metric or the idle capacity metric for a reverse link supported by the second candidate base station falls below a minimum performance threshold; and

commanding, with the computer processor, at least one of the first transceiver or the second transceiver to establish a new reverse link network socket with the new candidate base station.

6. The method of claim 1 , further comprising:

determining, with the computer processor, the first candidate base station for the forward link network socket when the forward link network socket comprises a Transmission Control Protocol (TCP) socket; and

determining, with the computer processor, an alternative base station for the forward link network socket when the forward link network socket comprises a User Datagram Protocol (UDP) socket;

wherein the candidate base station is not the alternative base station.

7. The method of claim 1 , further comprising:

determining, with the computer processor, the first candidate base station for the forward link network socket when a size of a datagram intended for the forward link network socket falls below a size threshold; and

determining, with the computer processor, an alternative base station for the forward link network socket when the size of the datagram intended for the forward link network socket is at least the size threshold;

wherein the first candidate base station is not the alternative base station.

8. A system comprising:

one or more processors;

one or more transceivers; and

one or more non-transitory, computer-readable storage media storing computer-executable instructions that, when executed by the one or more processors, cause the system to:

command the one or more transceivers to measure a first performance metric and a first idle capacity metric for a first communication link supported by a first base station;

command the one or more transceivers to measure a second performance metric and a second idle capacity metric for a second communication link supported by a second base station,

wherein measuring an idle capacity metric for a particular link includes calculating, with the computer processor, a bandwidth estimate metric indicative of a capacity of the particular link and a scheduled traffic metric for the particular link, and

at least one of the bandwidth estimate metric or the scheduled traffic metric is measured by invoking an application programming interface (API) of a vendor-specific application of the respective base station:

determine a candidate base station for a network socket using the first performance metric, the second performance metric, the first idle capacity metric, and the second idle capacity metric; and

command the one or more transceivers to establish the network socket with the candidate base station.

9. The system of claim 8 , wherein to command the one or more transceivers to measure a performance metric and an idle capacity metric of a particular communication link, the instructions, when executed, cause the system to:

command the one or more transceivers to measure a performance metric and an idle capacity metric for a forward link of the particular communication link; and

command the one or more transceivers to measure a performance metric and an idle capacity metric for a reverse link of the particular communication link.

10. The system of claim 9 , wherein to determine the candidate base station for the network socket, the instructions, when executed, cause the system to:

determine a first candidate base station for a forward link network socket using the first performance metric, the second performance metric, the first idle capacity metric, and the second idle capacity metric for the forward links of the first and second communication links; and

determine a second candidate base station for a reverse link network socket using the first performance metric, the second performance metric, the first idle capacity metric, and the second idle capacity metric for the reverse links of the first and second communication links.

11. The system of claim 10 , wherein to establish the network socket, the instructions, when executed, cause the system to:

command the one or more transceivers to establish the forward link network socket with the first candidate base station; and

command the one or more transceivers to establish the reverse link network socket with the second candidate base station.

12. The system of claim 8 , wherein the instructions, when executed, cause the system to:

determine that the network socket is a Transmission Control Protocol (TCP) socket; and

command the one or more transceivers to measure the first performance metric and the first idle capacity metric for a TCP communication link supported by the first base station.

13. The system of claim 8 , wherein the instructions, when executed, cause the system to:

determine that the network socket is a User Datagram Protocol (UDP) socket; and

command the one or more transceivers to measure the first performance metric and the first idle capacity metric for a UDP communication link supported by the first base station.

14. The system of claim 8 , wherein to measure a performance metric for a particular communication link, the instructions, when executed, cause the system to:

calculate at least one of a round-trip time (RTT) on the link of a ping message sent over the particular communication link and a quantity of attempted retransmissions on the communication link.

15. The system of claim 8 , wherein to measure a performance metric for a particular communication link comprises:

command the one or more transceivers to measure at least one of a signal-to-noise ratio (SNR), a noise power level, a received signal strength measure, and a data error rate for the particular communication link.

16. A non-transitory computer readable storage medium storing processor-executable instructions, that, when executed, cause one or more processors to:

command a first transceiver disposed within a vehicle to measure a first radio channel performance metric and a first idle capacity metric for both of a forward link and a reverse link supported by a first base station;

command a second transceiver disposed within the vehicle to measure a second radio channel performance metric and a second idle capacity metric for both of a forward link and a reverse link supported by a second base station,

wherein measuring an idle capacity metric for a particular link includes calculating, with the computer processor, a bandwidth estimate metric indicative of a capacity of the particular link and a scheduled traffic metric for the particular link, and

at least one of the bandwidth estimate metric or the scheduled traffic metric is measured by invoking an application programming interface (API) of a vendor-specific application of the respective base station;

determine a first candidate base station for a forward link network socket using the first radio channel performance metric, the second radio channel performance metric, the first idle capacity metric, and the second idle capacity metric for the forward links supported by the first and second base stations;

determine a second candidate base station for a reverse link network socket using the first radio channel performance metric, the second radio channel performance metric, the first idle capacity metric, and the second idle capacity metric for the reverse links supported by the first and second base stations;

command at least one of the first transceiver or the second transceiver to establish the forward link network socket with the first candidate base station; and

command at least one of the first transceiver or the second transceiver to establish the reverse link network socket with the second candidate base station.

Assignments (10)
PATENT SECURITY AGREEMENT Recorded Dec 3, 2024
From: GOGO BUSINESS AVIATION LLC
To: HPS INVESTMENT PARTNERS, LLC, AS COLLATERAL AGENT
Reel/Frame 069479/0335 →
RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY COLLATERAL Recorded May 6, 2021
From: U.S. BANK NATIONAL ASSOCIATION
To: GOGO LLC; GOGO BUSINESS AVIATION LLC
Reel/Frame 056153/0033 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2021
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: GOGO LLC
Reel/Frame 057252/0208 →
SECURITY INTEREST Recorded Apr 30, 2021
From: GOGO BUSINESS AVIATION LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 056106/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2020
From: GOGO LLC
To: GOGO BUSINESS AVIATION LLC
Reel/Frame 053782/0669 →
SECURITY INTEREST Recorded Aug 27, 2019
From: GOGO LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 050193/0797 →
SECURITY INTEREST Recorded May 2, 2019
From: GOGO LLC
To: U.S. BANK NATIONAL ASSOCIATION
Reel/Frame 049074/0225 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 039381/0484 Recorded Apr 26, 2019
From: U.S. BANK NATIONAL ASSOCIATION
To: GOGO LLC
Reel/Frame 049013/0360 →
PATENT SECURITY AGREEMENT Recorded Sep 19, 2017
From: GOGO LLC
To: U.S. BANK NATIONAL ASSOCIATION
Reel/Frame 043905/0050 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2017
From: LAUER, BRYAN ADRIAN; ETICALA, RAVI KIRAN
To: GOGO LLC
Reel/Frame 043375/0330 →