Controlling fair bandwidth allocation efficiently
AssigneeMicrosoft Technology Licensing, LLC
InventorsKhoa To, Jitendra Padhye, George Varghese, Daniel Firestone
Life of this patent
Estimating the term…
Abstract
Micro-schedulers control bandwidth allocation for clients, each client subscribing to a respective predefined portion of bandwidth of an outgoing communication link. A macro-scheduler controls the micro-schedulers, by allocating the respective subscribed portion of bandwidth associated with each respective client that is active, by a predefined first deadline, with residual bandwidth that is unused by the respective clients being shared proportionately among respective active clients by a predefined second deadline, while minimizing coordination among micro-schedulers by the macro-scheduler periodically adjusting respective bandwidth allocations to each micro-scheduler.
Claims20
A computer system, comprising:
- at least one processor;
- a network interface card;
- and
- a memory operatively coupled to the at least one processor and the network interface card, the memory containing instructions that are executable by the at least one processor to cause the computer system to:
- control consumption of a bandwidth of an outgoing communication link at the network interface card by respective clients, each of the respective clients subscribing to a respective predefined portion of the bandwidth of the outgoing communication link via the network interface card;
- and
- control the bandwidth allocation of the outgoing communication link at the network interface card to each of the clients by, for each respective client that is active:
- allocating the respective predefined portion of the bandwidth subscribed to by the each respective client that is active, by a predefined first deadline;
- subsequent to an initial period, allocating residual bandwidth that is unused by the respective clients in an amount proportionate among respective active clients by a predefined second deadline, wherein the predefined first deadline and the predefined second deadline differ by a time interval of the initial period;
- and
- periodically adjusting respective allocation of the bandwidth to each of the clients by repeating the allocating the respectively predefined portion or the allocating the residual bandwidth operations over additional periods of the same time interval subsequent to the initial period.
A method comprising:
- controlling bandwidth allocation for a plurality of clients of a plurality of respective resources that are respectively configured to transmit to a common outgoing communication link having a predefined maximum outgoing transmission bandwidth, each of the respective clients subscribing to a respective predefined portion of the outgoing transmission bandwidth, wherein controlling the bandwidth allocation includes:
- determining a periodic total bit rate of outgoing transmissions at the outgoing communication link, for a first predetermined temporal interval;
- determining whether the outgoing communication link is currently congested based on a comparison of the periodic total bit rate of the outgoing transmissions at the outgoing communication link and a predefined rate of congestion value;
- in response to determining that the outgoing communication link is currently congested:
- assigning a respective independent max-cap queue to each of the plurality of respective clients of the plurality of respective resources that are currently active;
- allocating a respective amount up to the respective predefined portion of the outgoing transmission bandwidth that the each respective client that is active is subscribed to, by a predefined first deadline;
- subsequent to an initial period, allocating residual bandwidth that is unused by the respective clients proportionately among respective active clients by a predefined second deadline, wherein the predefined first deadline and the predefined second deadline differ by a time interval of the initial period;
- and
- periodically adjusting respective bandwidth allocations to each of the plurality of clients of the plurality of respective resources by repeating the allocating the respectively amount and allocating the residual bandwidth operations over additional periods of the same time interval subsequent to the initial period, to provide an approximation of fair queuing.
A method of controlling bandwidth allocation for a plurality of clients sharing a common outgoing communication link at a server and having a predefined outgoing transmission threshold, each of the clients subscribing to a predefined portion of the outgoing transmission bandwidth, the method comprising:
- determining a total bit rate of outgoing transmissions at the outgoing communication link;
- determining whether the outgoing communication link is congested based on a comparison of the determined total bit rate and the predefined outgoing transmission threshold;
- and
- in response to determining that the outgoing communication link is congested,
- allocating an amount of the outgoing transmission bandwidth up to the respective predefined portion that each active client is subscribed to;
- transmitting data of the clients via the common outgoing communication link according to the allocated amount of the outgoing transmission bandwidth over an initial period;
- subsequent to the initial period, allocating residual bandwidth that is unused by the clients proportionately among active clients, wherein the initial period corresponding to a time interval;
- and
- periodically adjusting respective bandwidth allocations to each of the clients by repeating the allocating the respectively amount, transmitting, and allocating the residual bandwidth operations over additional periods of the same time interval subsequent to the initial period, to provide an approximation of fair queuing.
Dependencies are inferred from the claim text.