CONTROLLING FAIR BANDWIDTH ALLOCATION EFFICIENTLY
First Claim
1. A system comprising:
- at least one processor;
a computer-readable storage medium that stores executable instructions that are executable by the at least one processor, the executable instructions including a bandwidth allocation controller that includes;
a plurality of micro-schedulers, each of the micro-schedulers controlling bandwidth allocation for respective clients, each of the respective clients subscribing to a respective predefined portion of bandwidth of an outgoing communication link; and
a macro-scheduler that controls the plurality of micro-schedulers, by;
for each respective client that is active, allocating the respective subscribed portion of bandwidth associated with the 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.
1 Assignment
0 Petitions
Accused Products
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.
149 Citations
20 Claims
-
1. A system comprising:
-
at least one processor; a computer-readable storage medium that stores executable instructions that are executable by the at least one processor, the executable instructions including a bandwidth allocation controller that includes; a plurality of micro-schedulers, each of the micro-schedulers controlling bandwidth allocation for respective clients, each of the respective clients subscribing to a respective predefined portion of bandwidth of an outgoing communication link; and a macro-scheduler that controls the plurality of micro-schedulers, by; for each respective client that is active, allocating the respective subscribed portion of bandwidth associated with the 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method comprising:
-
controlling, by a macro-controller, bandwidth allocation for a plurality of users 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 users subscribing to a respective predefined portion of the outgoing transmission bandwidth of the outgoing communication link, the controlling the bandwidth allocation including; determining a periodic 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, by comparing the periodic bit rate of outgoing transmissions at the outgoing communication link with a predefined rate of congestion value; if the outgoing communication link is determined as being currently congested; assigning a respective independent max-cap queue to each of the plurality of respective users of the plurality of respective resources that are currently active, allocating a respective amount up to the respective subscribed portion of bandwidth associated with the 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, and periodically adjusting respective bandwidth allocations to each of the plurality of respective users of the plurality of respective resources, to provide an approximation of fair queuing. - View Dependent Claims (15, 16, 17)
-
-
18. A computer program product comprising a computer-readable storage medium storing executable instructions that cause at least one computing device to:
-
control bandwidth allocation for a plurality of execution entities that are respectively configured to transmit to a common outgoing communication link having a predefined maximum outgoing transmission bandwidth, each of the respective execution entities subscribing to a respective predefined portion of the outgoing transmission bandwidth of the outgoing communication link, the controlling the bandwidth allocation including; controlling a plurality of micro-schedulers, each of the micro-schedulers controlling bandwidth allocation for the respective execution entities, the controlling the plurality of micro-schedulers including; for each respective execution entity that is active, allocating the respective subscribed portion of bandwidth associated with the each respective execution entity that is active, by a predefined first deadline, with residual bandwidth that is unused by the respective execution entities being shared proportionately among respective active execution entities by a predefined second deadline, while minimizing coordination among micro-schedulers by periodically adjusting respective bandwidth allocations to each micro-scheduler. - View Dependent Claims (19, 20)
-
Specification