[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: BE and EF Isolation



> 	Assume a 2Mbit full duplex curcuit (E1 to keep the number
> even)
> 
> 	2 classes, same prio, 1Mbit, only difference is one is
> isolated, one is not.
> 
> 	Both streams run flat out, 1Mbit/1Mbit.
> 
> 	Isolated stream flat out, other stream inactive, 1Mbit + 1Mbit
> borrowed = 2Mbit.
> 
> 	Isolated stream inactive other stream flat out, 1Mbit + 1Mbit
> borrowed from inactive isolated stream = 2Mbit.

Yes, I think this should be expected.

> 	If this is the case what is the use of the isolated keyword?
> I understand there needs to be a minimal flow via the CBQ queue for it
> to do anything, but shouldn't the flow in the non-isolated class keep
> the CBQ queue active to enforce the isolated class, considering both
> classes are running within the same CBQ queue?

Suppose now that each of your 1Mbit classes has two 0.5Mbit descendants, one
priority 1 and the other priority 2. On the isolated class, the priority 1
child has no traffic, and the priority 2 child has enough demand for 1.5Mbit.
On the non-isolated class it's the reverse: you have no traffic on the priority
2 child and have demand for 1.5Mbit on the priority 1 child.
Under these circumstances, you should have the priority 1 child of the
non-isolated class transmitting 1.5Mbit and the priority 2 child of the
isolated class transmitting 0.5Mbit. As there is no unsatisfied level 1 class,
priority 1 child of the non-isolated class can borrow bandwidth from it's level
2 ancestor and won't be regulated.

Now invert the situation. The isolated class has a priority 1 child with demand
for 1.5Mbit and a priority 2 child with no traffic, whereas the non-isolated
class has a priority 1 child with no traffic and a priority 2 child with demand
for 1.5Mbit. Under these circumstances, you should have each of the child
classes with traffic transmitting 1Mbit.
Because you have enough traffic from other classes to fill the remaining
capacity, the isolated class is regulated to it's 1Mbit share. This bw is
utilized in it's entirety by the priority 1 child because the other has no
traffic. The priority 2 child of the non-isolated class gets to transmit 1Mbit
instead of the 0.5Mbit it would be limited to if the isolated class wasn't
isolated.

Has anyone experimentally confirmed what I have just said? I'm pretty sure
things work this way, but you never know... And I don't have a network
available right now for experimenting it myself...

As you see, the semantics of "isolated" classes are a bit complicated, but
there's no other way of implementing "isolation" on a work-conserving
discipline. If this is not the desired behaviour (and I can't see why it
shouldn't be) you have the option of implementing a TBF parent for the isolated
class.

Rui Prior