Still, the network may not want the burst allowed in,
in consecutive slots.
So, add a Simple Leaky Bucket with leak rate C
to the output of the Leaky Token Bucket Regulator:
Last time we discussed the
Leaky Token Bucket Regulator
and showed how
controls the rate (the steady state average) number of cells accepted,
while M controls the burst size allowed.
is used in several ways in ATM Traffic Management.
We will discuss these later.
First, let explore the mechanism itself.
GCRA has 2 parameters:
Define the internal variable TAT = "Theoretical Arrival Time"
First, assume 1st cell arrives at some time t1 and
initialize TAT = t1.
Next, given that the nth arrival occurs at
time tn, follow the following algorithm:
Internal variables: X = bucket level; LCT = Last Compliant Time.
Assume tn = nth arrival time, n = 1, 2, 3, . . .
Initialize X = 0 and LCT = t1.
Follow algorithm:
Let X = X - (tn - LCT)
These 2 versions of GCRA are equivalent, i.e. yield the same output.
I = Increment
The goal of GCRA is to send a cell every I sec subject to
an allowed variability of L.
L = Limit
There are 2 versions of GCRA(I, L):
Note:
I have moved the (tn = TAT - L) case from Case III to Case II.
This is different from the way I presented it in class, but
consistent with the ATM Forum standard.
Conceptually it makes no difference.
If (tn >= TAT) then
tn is "compliant";
TAT = tn + I;
[next cell is expect at least I after this one]
If (TAT > tn >= TAT - L) then
tn is "compliant";
TAT = TAT + I;
[next cell is expect at least I after when this one was expected]
If (tn < TAT - L) then
tn is "non-compliant";
TAT = TAT (unchanged);
[next cell is expect at the same time it was before]
[The time elapsed since the last compliant time is "drained" from the bucket.]
If (x <= 0) then
tn is "compliant";
x = I; [The empty bucket is refilled with I units.]
LCT = tn;
If (0 < x <= L) then
tn is "compliant";
x = x + I; [I units is added to what remains in the bucket.]
LCT = tn;
If (x > L) then
tn is "non-compliant";
[Nothing is added to the bucket.]