IP Library Granted Patent US 8,516,069
Granted Patent B1
US 8,516,069 · App. 12/894,336 · Granted Aug 20, 2013

Optimizer-to-link layer interface using dynamic buffering

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,516,069
App. No.
12/894,336
Granted
Aug 20, 2013
Kind
B1
Abstract

Systems and methods are described for communicating overhead data in a way that complies with applicable protocols while using return-link bandwidth more efficiently, for example, by providing a shared memory at an interface between lower layers and higher layers of a protocol stack. In one exemplary configuration, a shared dynamic buffer is provided at the interface between a closely coupled client optimizer and link layer of a user system. For example, the dynamic buffer is used to supplement or replace the FIFO queue typically at the interface between Layers 2 and 3 of the OSI protocol stack for the TCP protocol. The client optimizer continually and efficiently maintains current status data in the shared memory (e.g., ACK or NACK data, FEC data, partial packets, etc.). This status data can be uploaded by the link layer according to upload bandwidth allowances granted by a protocol partner.

Claims (48)

1. A method comprising:

receiving an upload allocation at a link layer of a user system from a partner system over a communications link, the upload allocation indicating an amount of resources allocated for communications to the partner system over a return link portion of the communications link;

generating, using a client optimizer of the user system, status data indicating a current state of dynamically changing data intended for upload to the partner system;

overwriting at least a portion of a status data block with the status data using the client optimizer, the status data block stored in a dynamic buffer implemented at an interface between the link layer and the client optimizer;

generating a status upload comprising at least some of the status data in the status data block;

determining whether the status upload is currently being generated, such that the status data is being read by the link layer from a first location in the dynamic buffer;

overwriting at least a portion of the status data block with the status data using the client optimizer at the first location in the dynamic buffer when the status upload is not currently being generated;

overwriting at least a portion of the status data block with the status data using the client optimizer at a second location in the dynamic buffer when the status upload is currently being generated; and

communicating the status upload to the partner system over the return link in accordance with the upload allocation using the link layer.

2. The method of claim 1 , wherein the client optimizer and the link layer are closely coupled and the dynamic buffer is implemented as a shared memory, such that information can be communicated between the client optimizer and the link layer via the shared memory without packetization of the information.

3. The method of claim 1 , wherein overwriting at least a portion of the status data block with the status data using the client optimizer comprises writing control data to a control data block, the control data indicating a location of the status data block in the dynamic buffer and a size of the status data block.

4. The method of claim 3 , wherein generating the status upload comprises:

reading the control data to determine the location of the status data block in the dynamic buffer and the size of the status data block;

reading the status data block according to the control data to generate the status data upload; and

updating the control data to the control data block, the control data indicating an amount of the status data block consumed by the status data upload.

5. The method of claim 1 , wherein the status upload comprises an indication of successful receipt at the user system of at least two packets consolidated into a single status packet.

6. The method of claim 1 , wherein the status upload comprises information relating to at least one of successful receipts at the user system of downloaded packets, unsuccessful receipts at the user system of downloaded packets, forward error correction data corresponding to downloaded packets, or a partial packet.

7. The method of claim 1 , wherein:

the link layer is configured to provide link layer functionality according to a protocol stack model; and

the client optimizer is configured to provide transport layer and application layer functionality according to a protocol stack model.

8. The method of claim 1 , wherein:

the communications link comprises a satellite communications link;

the user system comprises a user terminal; and

the upload allocation is a grant of satellite return-link bandwidth resources to the user terminal from a satellite gateway.

9. A user system comprising:

a shared memory subsystem comprising a dynamic buffer configured to store a status data block;

a link management subsystem, communicatively coupled with the shared memory subsystem and communicatively coupled with a partner system over a communications link, and configured to:

receive an upload allocation from the partner system indicating an amount of resources allocated for communications to the partner system over a return link portion of the communications link; and

generate a status upload comprising at least a portion of the status data block for upload to the partner system over the return link in accordance with the upload allocation; and

a client optimizer, communicatively coupled with the shared memory subsystem such that the memory subsystem is implemented at an interface between the link management subsystem and the client optimizer subsystem, and configured to periodically overwrite at least a portion of the status block with dynamically changing status data for upload by the link management subsystem;

wherein the client optimizer subsystem is configured to overwrite at least a first portion of the status block with the dynamically changing status data when the status upload is not currently being generated by the link management subsystem according to the status data in the first portion of the status block and overwrite at least a second portion of the status block with the dynamically changing status data when the status upload is currently being generated by the link management subsystem according to the status data in the first portion of the status block.

10. The user system of claim 9 , wherein the client optimizer is configured to periodically overwrite at least a portion of the status block with the dynamically changing status data for upload by the link management subsystem by:

determining current version of the dynamically changing status data;

writing the current version of the dynamically changing status data to the status data block to replace at least a portion of a previous version of the dynamically changing status data; and

writing control data to a control data block indicating a location of the status data block in the dynamic buffer and a size of the status data block.

11. The user system of claim 10 , wherein the link management subsystem is configured to generate the status upload by:

reading the control data to determine the location of the status data block in the dynamic buffer and a size of the status data block;

reading the status data block according to the control data to generate the status data upload; and

updating the control data to the control data block, the control data indicating an amount of the status data block consumed by the status data upload.

12. A computer program product residing on a non-transitory processor-readable medium disposed at a user system and comprising processor-readable instructions, which, when executed, cause a processor to perform steps comprising:

receiving an upload allocation at a link layer of a user system from a partner system over a communications link, the upload allocation indicating an amount of resources allocated for communications to the partner system over a return link portion of the communications link;

generating, using a client optimizer of the user system, status data indicating a current state of dynamically changing data intended for upload to the partner system;

overwriting at least a portion of a status data block with the status data using the client optimizer, the status data block stored in a dynamic buffer implemented at an interface between the link layer and the client optimizer;

generating a status upload comprising at least some of the status data in the status data block;

communicating the status upload to the partner system over the return link in accordance with the upload allocation using the link layer;

overwriting the at least a portion of the status data block with the status data using the client optimizer by writing control data to a control data block, the control data indicating a location of the status data block in the dynamic buffer and a size of the status data block; and

setting a read-out state using the link management controller while generating the status upload;

wherein the overwriting step is performed according to the read-out state, such that the client optimizer controller cannot write to a portion of the status block currently being read out by the link management controller as part of generating the status upload.

Assignments (11)
PARTIAL RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 48715/0589 Recorded Jun 6, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
To: VIASAT, INC.
Reel/Frame 071638/0083 →
PARTIAL RELEASE OF SECURITY INTEREST AT REEL/FRAME 063822/0446 Recorded Jun 4, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VIASAT, INC.
Reel/Frame 071495/0223 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2025
From: MUFG BANK, LTD. (AS SUCCESSOR-IN-INTEREST TO MUFG UNION BANK, N.A. (F/K/A UNION BANK, N.A.)), AS AGENT
To: VIASAT, INC.
Reel/Frame 071321/0026 →
PARTIAL RELEASE OF SECURITY INTEREST AT REEL/FRAME 059332/0558 Recorded Jun 4, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VIASAT, INC.
Reel/Frame 071495/0152 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2025
From: VIASAT, INC.
To: SNAPPI HOLDCO, INC.
Reel/Frame 070293/0483 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2025
From: SNAPPI HOLDCO, INC.
To: SNAPPI, INC.
Reel/Frame 070293/0879 →
SECURITY AGREEMENT Recorded Jun 1, 2023
From: VIASAT, INC.
To: BANK OF AMERICA, N.A., AS AGENT
Reel/Frame 063822/0446 →
SECURITY AGREEMENT Recorded Mar 7, 2022
From: VIASAT, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 059332/0558 →
SECURITY INTEREST Recorded Mar 27, 2019
From: VIASAT, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
Reel/Frame 048715/0589 →
SECURITY AGREEMENT Recorded Dec 23, 2013
From: VIASAT, INC.
To: UNION BANK, N.A., AS AGENT FOR THE SECURED PARTIES
Reel/Frame 031868/0789 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2010
From: SEBASTIAN, WILLIAM B.
To: VIASAT, INC.
Reel/Frame 025092/0547 →