Note that the Floating Algorithm discussed last time,
ignores the PCR value on each VCC.
In order to incorporate the PCR value for each VCC,
add one imaginary link for each VCC to its source (or destination) with
link capacity, C = PCRVCC .
Apply the algorithm to the extended network.
Example:
Results from last time (with no PCR)
| VCC | ACR with no PCR |
| VCC1 A -> D | 0.5 |
| VCC2 A -> B | 1.5 |
| VCC3 B -> C | 0.5 |
| VCC4 C -> D | 0.5 |
Now incorporate PCRVCC1 = 0.2,
PCRVCC2 = 1.5,
PCRVCC3 = 2.0,
PCRVCC3 = 0.4
Apply Floating Algorithm
| Raise all VCC's to 0.2 | VCC1 stops |
| Raise VCC2, VCC3, and VCC4 to 0.4 | VCC4 stops |
| Raise VCC2 and VCC3 to 0.8 | VCC3 stops |
| Raise VCC2 to 1.5 | VCC2 stops |
New Results
| VCC | ACR with no PCR | ACR with PCR |
| VCC1 A -> D | 0.5 | 0.2 |
| VCC2 A -> B | 1.5 | 1.5 |
| VCC3 B -> C | 0.5 | 0.8 |
| VCC4 C -> D | 0.5 | 0.4 |
Note that F < C, for the links A -> B and C -> D.
Apply floating algorithm with
PCRVCC1 = 3
PCRVCC2 = 1
PCRVCC3 = 0.25
PCRVCC4 = 0.4
Solution
Concern: Floating Algorithm is inherently centralized.
Solution:
A. Charny's Distributed Max-Min Fair Rate Computation Algorithm.
FSR = Fair Share Rate
Initially let FSR = Link BW / number of VCC's on link
For each RM cell
If ER < FSR then count this VCC as an "underloading" VCC and leave its
ER unchanged.
If ER >= FSR then ER <- FSR.
Recompute FSR via
Repeat for each RM cell (both in forward and reverse directions).
Charny proved that this converges to a Max-Min Fair allocation.
A Simpler Algorithm for computing FSR
The standards folks thought Charny's Algorithm with computationally too
intensive, so they implemented this simper one (which is not known to
converge to anything in particular). As the old joke goes: We may be
lost, but we're making very good time!
MACR = mean ACR
In steady state the FSR should converge to the average of all the ACR's
on the link. If a higher rate is desired, it may eventually creep up
to that higher rate.
MACR = (1 - alpha) x MACR + alpha x CCR
Typically alpha = 1/16
Set FSR = SW_DPF x MACR
SW_DPF stands for Switch Down Pressure Factor .
This value is typically 7/8 since,
based on typical queueing theory results,
a much lower delay (or backlog) can be achieved
slightly below capacity:
Switches also set CI = 1 in RM cells of VCC with MACR < ER
Sources do the following:
Set ACR = ACR X RDF (Rate Decrease Factor) after each data cell.
After each RM cell they reset ACR as:
ACR = min (ACR + AIR, ER, PCR)
unless CI = 1 in which case ACR remains unchanged and continues
to decrease as above.