Scalable receive window auto-tuning

US10128987B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10128987-B2
Application numberUS-201615288554-A
CountryUS
Kind codeB2
Filing dateOct 7, 2016
Priority dateSep 15, 2016
Publication dateNov 13, 2018
Grant dateNov 13, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Examples of the disclosure dynamically scale receive window auto-tuning. Tuning data is obtained, including the number of bytes in a receive buffer and the distribution of receive packets over time. Aspects of the disclosure use this tuning data to determine rates at which one or more applications on the receiving computer are consuming data and adjust or maintain the receive buffer accordingly in a dynamic manner to scale a receive window to current conditions.

First claim

Opening claim text (preview).

What is claimed is: 1. A system comprising: at least one processor; and a memory communicatively coupled to the at least one processor, the processor executing instructions stored on the memory to: monitor a receive buffer of a receive window for a network connection; determine a size of the receive buffer over a time interval, the time interval having one or more time slices; identify a number of bytes received over the time interval via the network connection; calculate a number of bytes received per time slice for the time interval; and analyze the determined size of the receive buffer over the time interval and the calculated number of bytes received per time slice of the time interval to determine whether to adjust the receive buffer for scalable auto-tuning of the receive window for the network connection. 2. The system of claim 1 , wherein the processor further executes instructions to determine the size of the receive buffer over the time interval, including to identify a number of bytes in the receive buffer per time slice of the time interval. 3. The system of claim 1 , wherein the processor further executes instructions to determine the size of the receive buffer over the time interval, including to identify a minimum size of the receive buffer at individual time slices of the one or more time slices of the time interval. 4. The system of claim 1 , wherein the processor further executes instructions to calculate the number of bytes received per time slice of the time interval, including to identify a variance between the number of bytes received for individual time slices of the one or more time slices. 5. The system of claim 1 , wherein the processor further executes instructions to calculate a target time for the time interval. 6. The system of claim 1 , wherein the processor further executes instructions to adjust the receive buffer based on a scaling factor. 7. The system of claim 6 , wherein the scaling factor is based at least in part on a minimum size of the receive buffer over the time interval. 8. The system of claim 6 , wherein the scaling factor is based at least in part on a threshold range for a receive buffer. 9. The system of claim 6 , wherein the scaling factor is based at least in part on comparing a computed average value of a set of recent time slices of the one or more time slices against a computed maximum value of an average value of bytes received per time slice of the one or more time slices of the time interval, and determining whether the computed average value of the set of recent time slices is lower than the computed maximum value of the average value for the time interval. 10. A method for scalable receive window auto-tuning for a network connection, the method comprising: calculating a target time value for a time interval, the target time value calculated based on a number of bytes advertised in a receive buffer, including by: identifying a measure of time needed to receive the number of bytes advertised in the receive buffer; selecting a max queue time; and calculating the identified measure of time and the selected max queue time to generate the target time for the time interval; receiving tuning data corresponding to a receive window; observing the tuning data during the time interval based on the calculated target time value; adjusting the receive buffer value responsive to determining that the receive buffer is below or above a threshold range based on observed behavior of the tuning data over the time interval; and maintaining the receive buffer value responsive to determining that the receive buffer is within the threshold range. 11. The method of claim 10 , wherein the adjusting the receive buffer value includes adjusting the receive buffer based on a scaling factor. 12. The method of claim 10 , wherein receiving the tuning data further comprises: receiving tuning data for a size of a receive buffer over the time interval; and receiving tuning data for a number of bytes received over the time interval. 13. The method of claim 10 , wherein adjusting the receive buffer further comprises: identifying a minimum size of the receive buffer for the generated target time for a plurality of time intervals. 14. The method of claim 13 , further comprising: determining whether the minimum size of the receive buffer is below a threshold buffer size range; responsive to a determination that the minimum size is below the threshold buffer size range, identifying the number of bytes received per time interval; and computing an average value and a maximum value of the bytes received per time slice of an individual time interval. 15. The method of claim 14 , further comprising: determining whether the average and maximum values are substantially similar; responsive to a determination that the average and maximum value are substantially similar, maintaining the value of the receive buffer; responsive to a determination that the average and maximum values are not substantially similar, comparing an average value for a set of recent time slices against the maximum value for the time interval; determining whether the average value for the set of recent time slices is lower than the maximum value; responsive to a determination that the average value is lower than the maximum value, maintaining the value of the receive buffer; and responsive to a determination that the average value is higher than the maximum value, increasing the value of the receive buffer. 16. The method of claim 14 , further comprising: responsive to a determination that the minimum size is not below the threshold buffer size range, determining if the minimum size is above the threshold buffer size range; responsive to a determination that the minimum size is above the threshold buffer size range, reducing the value of the receive buffer; and responsive to a determination that the minimum size is not above the threshold buffer size range, considering that that minimum size is within the threshold buffer size range and maintaining the value of the receive buffer. 17. One or more computer storage device having computer-executable instructions stored thereon for scalable window receive auto-tuning, which, on execution by a computer, cause the computer to perform operations comprising: calculating a target time value for a time interval, including by identifying a measure of time needed to receive a number of bytes advertised in a receive buffer, selecting a max queue time, and calculating the identified measure of time and the selected max queue time to generate the target time for the time interval; receiving a plurality of tuning data corresponding to a receive window; observing the plurality of tuning data during the time interval based on the calculated target time value; adjusting a receive buffer value associated with the receive window in response to a determination that the receive buffer is below or above a threshold range based on observed behavior of the plurality of tuning data over the time interval; and maintaining the receive buffer value in response to a determination that the receive buffer is within the threshold range. 18. The one or more computer storage device of claim 17 , wherein calculating the target time for the time interval further comprises: determining whether the minimum size of the receive buffer is below a threshold buffer size range; responsive to a determination that the minimum size is below the threshold buffer size range, identifying the number of bytes received per time i

Assignees

Inventors

Classifications

  • H04L1/1835Primary

    Buffer management · CPC title

  • using dynamic buffer space allocation · CPC title

  • Details of sliding window management · CPC title

  • the supervisory signal being transmitted together with control information · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10128987B2 cover?
Examples of the disclosure dynamically scale receive window auto-tuning. Tuning data is obtained, including the number of bytes in a receive buffer and the distribution of receive packets over time. Aspects of the disclosure use this tuning data to determine rates at which one or more applications on the receiving computer are consuming data and adjust or maintain the receive buffer accordingly…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification H04L1/1835. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Nov 13 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).