70 likes | 177 Views
Link Sharing or CBQ. Link sharing controls the distribution of bandwidth on “local” links Each class receives a guaranteed share during congestion Aggregate “similar” connections in the same class Hierarchical link sharing
E N D
Link Sharing or CBQ • Link sharing controls the distribution of bandwidth on “local” links • Each class receives a guaranteed share during congestion • Aggregate “similar” connections in the same class • Hierarchical link sharing • A unified set of mechanisms to satisfy link sharing (organizational) and real-time (application) service requirements • General scheduler + link-sharing scheduler • General scheduler could be a priority-based scheduler • During congestion, the link-sharing scheduler is invoked to rate-limit the “overlimit” class to its allocated bandwidth • Explicitly prevents starvation of lower-priority traffic • Distribution of “excess” bandwidth is a function of general scheduler • Classes and bandwidth allocations could be static or dynamic
Goals and Formal Guidelines • Main goal: each interior or leaf class should receive roughly its allocated bandwidth over appropriate time intervals, given sufficient demand • Distribution of “excess” bandwidth should not be arbitrary, e.g. to higher priority classes in proportion to their allocations • Within each class, congestion control for its queue can be done using TCP, admission control, RED, etc. • Packets from a “regulated” class are scheduled by the link-sharing scheduler, from an “unregulated” class by the general scheduler • Link-sharing scheduler rate-limits a regulated class, for example by decreasing its priority so that the general scheduler sends packets from that class less frequently • The “estimator” estimates the bandwidth used by each class over a time interval
Formal Guidelines • A leaf class is “unsatisfied” if it is “underlimit” and has a persistent backlog • A non-leaf class is unsatisfied if it is underlimit and has some descendant class with a persistent backlog • A class can continue unregulated if - the class is not overlimit, OR - the class has a not-overlimit ancestor al level i, and there are no unsatisfied classes at levels lower than i. Otherwise, the class will be regulated • This check can be done by the general scheduler before transmitting a packet from that class, or less frequently
Approximations • Avoid checking the “satisfied” status of other classes • Ancestors-Only approximation: a class can continue unregulated if - the class is not overlimit, OR - the class has an underlimit ancestor • A class can be regulated unnecessarily • An overlimit class can continue unregulated until its parent is labeled not underlimit, even if a sibling class is unsatisfied • Top-Level approximation: a class can continue unregulated if - the class is not overlimit, OR - the class has an underlimit ancestor whose level is at most Top-Level • Top-Level indicates the highest level from which a class can borrow (infinity in Ancestors-Only, 1 means parent status not checked)
Simulations • General scheduler uses strict priority • For classes of same priority, the general scheduler uses a variant of weighted round robin with number of bytes served at each round proportional to bandwidth allocations • The estimator updates the limit status for a class and its ancestor classes after a packet from that class is transmitted • EWMA of inter-packet departure times (the reciprocal is the average rate) • t = measured time since the departure of previous packet • f = s/b, s is packet size and b the allocated rate • diff = t - f is negative if class exceeds its allocated rate • avg = (1-w) * avg + w * diff • Limit avg to a maximum (positive value) so not to accumulate credits
Simulations (cont’d) • Each class has a “time-to-send” field • If a class has avg negative (i.e. overlimit), the estimator sets time-to-send to a time x seconds ahead of current time to bring avg to zero • If time-to-send is zero, the class is at-limit or underlimit, and the general scheduler is allowed to send a packet from that class • If time-to-send is greater than current time, then the class is overlimit. The general scheduler can only send a packet from that class if permitted by the link-sharing rules • Each class is getting its allocated rate • The excess is given to higher priority classes; divided in proportion of allocations among classes of same priority • The approximations are good, with Ancestors-Only sometimes slightly imprecise
Comments • Link sharing can protect non-real-time traffic • E.g. when prediction of future traffic is incorrect and the predictive service class becomes oversubscribed • Group compatible connections into classes (e.g. TCP connections, rate-adaptive video connections) and protect them from each other