IP Library Granted Patent US 9,130,843
Granted Patent B2
US 9,130,843 · App. 13/475,236 · Granted Sep 8, 2015

Method and apparatus for improving HTTP adaptive streaming performance using TCP modifications at content source

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 9,130,843
App. No.
13/475,236
Granted
Sep 8, 2015
Kind
B2
Abstract

A method of sending hypertext transfer protocol (HTTP) adaptive streaming (HAS) content from a content source to a client over a transmission control protocol (TCP) connection between the content source and the client may include receiving a request for one or more first HAS data chunks from the client; sending the one or more first HAS data chunks to the client; generating idle delay values indicating an amount of delay in the TCP connection during an idle time period, the idle time period being a time period over which no HAS data chunks are being sent from the content source to the client; receiving a request for a second HAS data chunk from the client; setting the size of a starting TCP congestion window based on the idle delay values; and sending the second HAS chunk to the client using the starting TCP congestion window.

Claims (74)

1. A method of sending hypertext transfer protocol (HTTP) adaptive streaming (HAS) content from a content source to a client over a transmission control protocol (TCP) connection between the content source and the client, the method comprising:

measuring network delay values of the TCP connection;

determining a size of a starting TCP congestion window (cwnd) based on the measured delay values;

receiving a request for one or more first HAS data chunks from the client;

sending the one or more first HAS data chunks from the content source to the client over the TCP connection;

receiving a request for a second HAS data chunk from the client; and

sending the second HAS chunk from the content source to the client over the TCP connection using the starting cwnd,

wherein the network delay values include idle delay values indicating an amount of delay in the TCP connection during an idle time period, the idle time period is a time period over which no HAS data chunks are being sent from the content source to the client, and determining the size of the starting cwnd includes setting the size of the starting cwnd based on the idle delay values.

2. The method of claim 1 , further comprising:

generating the idle delay values by,

generating one or more loopback messages and sending the one or more loop back messages to the HAS client during the idle time period;

measuring a plurality of first round trip times (RTTs) corresponding to each of the one or more loop back messages, respectively; and

generating the idle delay values based on the measured plurality of first RTTs.

3. The method of claim 2 wherein the idle delay values include a short term idle delay value, and generating the short term idle delay value includes averaging RTTs falling in a first moving window of the plurality of first RTTs.

4. The method of claim 3 wherein the idle delay values further include a long term delay value, and generating the long term idle delay value includes averaging RTTs falling in a second moving window of the plurality of first RTTs, the first moving window including fewer RTT values than the second moving window.

5. The method of claim 2 , further comprising:

generating an active delay value indicating an amount of delay in the TCP connection during an active time period, the active time period being a time period during which one or more HAS data chunks are being sent,

wherein setting the size of the starting cwnd includes setting the size of a starting cwnd based on the idle delay values and the active delay value.

6. The method of claim 5 ,

wherein sending the one or more first HAS data chunks includes,

dividing the first one or more data chunks into a plurality of data segments, and

sending each of the plurality of data segments to the client; and

wherein generating the active delay value includes,

measuring a plurality of second round trip times (RTTs) corresponding to each of the plurality of data segments, respectively, and

generating the active delay values based on the measured plurality of second RTTs.

7. The method of 6 , wherein generating the active delay values based on the measured plurality of second RTTs includes averaging RTTs falling in a moving window of the plurality of second RTTs.

8. The method of 6 , further comprising:

storing the n longest successful RTTs from among the plurality of first RTTs and the plurality of second RTTs, successful RTTs being RTTs of data segments or loopback messages for which the content source received no indication of loss; and

determining a lossless delay value based on an average of the n longest successful RTTs,

wherein setting the size of the starting cwnd includes setting the size of a starting cwnd based on the idle delay values, the active delay value, and the lossless delay value.

9. The method of 8 , further comprising:

determining a fraction value based on the idle delay values, the active delay value, and the lossless delay value; and

determining whether the fraction value is greater than a reference value,

wherein setting the size of the starting cwnd includes determining a product of the fraction value and a size of a last cwnd used to send the one or more first HAS chunks to the client, and setting the determined product as the size of the starting cwnd.

10. The method of claim 2 , wherein the one or more loopback messages are empty MP4 HAS messages.

11. A network apparatus configured to send hypertext transfer protocol (HTTP) adaptive streaming (HAS) content to a client over a transmission control protocol (TCP) connection between the network apparatus and the client, the apparatus comprising:

a receiver unit configured to receive data;

a transmitting unit configured to transmit data;

a memory unit configured to store parameters corresponding with characteristics of the TCP connection; and

a processing unit coupled to the transmitting unit, the receiving unit, and the memory unit and configured to control operations associated with sending HAS content to the client, the operations including,

measuring network delay values of the TCP connection; and

determining a size of a starting TCP congestion window (cwnd) based on the measured delay values,

wherein the processor is further configured to control operations including,

receiving a request for one or more first HAS data chunks from the client;

sending the one or more first HAS data chunks to the client over the TCP connection;

receiving a request for a second HAS data chunk from the client; and

sending the second HAS chunk to the client over the TCP connection using the starting cwnd,

wherein the network delay values include idle delay values indicating an amount of delay in the TCP connection during an idle time period, the idle time period is a time period over which no HAS data chunks are being sent from the content source to the client, and determining the size of the starting cwnd includes setting the size of the starting cwnd based on the idle delay values.

12. The network apparatus of claim 11 wherein the processing unit is configured to generate the idle delay values by,

generating one or more loopback messages and sending the one or more loop back messages to the HAS client during the idle time period;

measuring a plurality of first round trip times (RTTs) corresponding to each of the one or more loop back messages, respectively; and

generating the idle delay values based on the measured plurality of first RTTs.

13. The network apparatus of claim 12 wherein the processor is configured such that the idle delay values include a short idle delay value, and generating the short idle delay value includes averaging Ras falling in a first moving window of the plurality of first RTTs.

14. The network apparatus of claim 13 wherein the processor is configured such that the idle delay values further include a long idle delay value, and generating the long idle delay value includes averaging RTTs falling in a second moving window of the plurality of first RTTs, the first moving window including fewer RTT values than the second moving window.

15. The network apparatus of claim 14 , wherein the processor is further configured to control operations including

generating an active delay value indicating an amount of delay in the TCP connection during an active time period, the active time period being a time period during which one or more HAS data chunks are being sent,

wherein setting the size of the starting cwnd includes setting the size of a starting cwnd based on the idle delay values and the active delay value.

16. The network apparatus of claim 15 , wherein the processor is configured such that sending the one or more first HAS data chunks includes,

dividing the first one or more data chunks into a plurality of data segments, and

sending each of the plurality of data segments to the client, wherein generating the active delay value includes,

measuring a plurality of second round trip times (RTTs) corresponding to each of the plurality of data segments, respectively, and

generating the active delay values based on the measured plurality of second RTTs.

17. The network apparatus of 16 , wherein the processor is configured such that generating the active delay values based on the measured plurality of second RTTs includes averaging RTTs falling in a moving window of the plurality of second RTTs.

18. The network apparatus of 17 , wherein the processor is further configured to control operations including,

storing the n longest successful RTTs from among the plurality of first RTTs and the plurality of second RTTs, successful RTTs being RTTs of data segments or loopback messages for which the content source received no indication of loss; and

determining a lossless delay value based on an average of the n longest successful RTTs,

wherein setting the size of the starting TCP congestion window includes setting the size of a starting TCP congestion window based on the idle delay values, the active delay value, and the lossless delay value.

19. The network apparatus of 18 , wherein the processor is further configured to control operations including

determining a fraction value based on the idle delay values, the active delay value, and the lossless delay value; and

determining whether the fraction value is greater than a reference value,

wherein setting the size of the starting cwnd includes

determining a product of the fraction value and a size of a last cwnd used to send the one or more first HAS chunks to the client and setting the determined product as the size of the starting cwnd, if the fraction value is greater that the reference value, and

setting the size of the staring cwnd in accordance with one the TCP standards defined by RFC 2861 and RFC 2581, if the fraction value is not greater that the reference value.

20. The network apparatus of claim 12 , wherein the one or more loopback messages are empty MP4 HAS messages.

Assignments (14)
PATENT SECURITY AGREEMENT Recorded Apr 22, 2023
From: RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 063429/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2021
From: PROVENANCE ASSET GROUP LLC
To: RPX CORPORATION
Reel/Frame 059352/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 30, 2021
From: NOKIA US HOLDINGS INC.
To: PROVENANCE ASSET GROUP HOLDINGS LLC; PROVENANCE ASSET GROUP LLC
Reel/Frame 058363/0723 →
RELEASE OF SECURITY INTEREST Recorded Nov 30, 2021
From: CORTLAND CAPITAL MARKETS SERVICES LLC
To: PROVENANCE ASSET GROUP HOLDINGS LLC; PROVENANCE ASSET GROUP LLC
Reel/Frame 058983/0104 →
ASSIGNMENT AND ASSUMPTION AGREEMENT Recorded Feb 14, 2019
From: NOKIA USA INC.
To: NOKIA US HOLDINGS INC.
Reel/Frame 048370/0682 →
SECURITY INTEREST Recorded Sep 13, 2017
From: PROVENANCE ASSET GROUP HOLDINGS, LLC; PROVENANCE ASSET GROUP, LLC
To: CORTLAND CAPITAL MARKET SERVICES, LLC
Reel/Frame 043967/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2017
From: NOKIA TECHNOLOGIES OY; NOKIA SOLUTIONS AND NETWORKS BV; ALCATEL LUCENT SAS
To: PROVENANCE ASSET GROUP LLC
Reel/Frame 043877/0001 →
SECURITY INTEREST Recorded Sep 13, 2017
From: PROVENANCE ASSET GROUP HOLDINGS, LLC; PROVENANCE ASSET GROUP LLC
To: NOKIA USA INC.
Reel/Frame 043879/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2014
From: CREDIT SUISSE AG
To: ALCATEL-LUCENT USA INC.
Reel/Frame 033949/0016 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2013
From: ALCATEL-LUCENT USA INC.
To: ALCATEL LUCENT
Reel/Frame 030615/0380 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2013
From: ALCATEL-LUCENT CANADA INC.
To: ALCATEL LUCENT
Reel/Frame 030615/0667 →
SECURITY INTEREST Recorded Mar 7, 2013
From: ALCATEL-LUCENT USA INC.
To: CREDIT SUISSE AG
Reel/Frame 030510/0627 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2012
From: CRACIUN, VIOREL
To: ALCATEL-LUCENT CANADA INC.
Reel/Frame 028953/0253 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2012
From: AKHTAR, SHAHID; LIEFOOGHE, PIETER J.; CHAUDHRY, ATHER J.
To: ALCATEL-LUCENT USA INC.
Reel/Frame 028968/0150 →