[RPRWG] [FAH] :Comments on Simulation results (of Jon Schuringa)
Jon:
I did not get a chance to read your mail before the meeting. After
reading it I am not sure what is the problem you are trying to
highlight. Please clarify the problem so that we understand your concern
clearly.
In the scenario you are describing. You have a 50% reservation for A0
traffic but you do not have any class-A traffic (only class-C traffic).
Each client is capable of adding class-C traffic at line rate but note
that they will be back pressured immediately when nrXmitRate exceeds
unreserved Rate. So there is no way flow1 will reach line rate over a
period of time.
In that context, I do not understand why you are concerned about STQ at
Node-B filling up. STQ will not fill up as fill rate is same as drain
rate (max of unreserved rate).
For the same reason I do not understand why Shaper-D in node-B will be
decrementing credit at line rate (it is limited by unreserved rate).
Your ultimate results for flow1 and flow2 are as expected.
I feel you should add Class-A traffic in your simulation and if the
simulation is correct you wll be seeing STQ levels building up. Once
that happens you will see the Is_Congested() condition met for different
reason (ie., STQ depth crossing low Threshold).
It is quite possible that I have completely misunderstood what you are
trying to portray in this example.In that case, please explain.
I hope we could see some simulation results next week with the same
scenario but additional Class-A traffic occupying real bandwidth on the
links. You should also show the STQ status condition of the nodes B and
C. Also a plot of shaper credits against time at node B and C would be
very useful.
Thanks.
Prasenjit
Jon Schuringa wrote:
All,
.....
.......
BUT, it is very clear to me now why shaperD has a serious
design flaw. I will explain that here without "prove by simulations".
Please take some time to read it.
Following very simple situation (like Wang Chao proposed some
months ago):
------(A)-------------(B)-------------(C)----
o-------------flow1------------->
o------flow2---->
Both flows are class C flows and have enough to send, say 100% lineRate.
Furthermore we have 50% classA0, so unreservedRate is 50% of the lineRate.
It does not matter if classA0 is actually send.
What do we expect to happen?
1) STQ in station B grows
2) STQ in B reaches lowThreshold
3) Station B advertises a fair rate
4) Flow1 and flow2 both get unreservedRate/2 = 25% of the lineRate
What will happen?
1) STQ in B will not fill until lowThreshold:
Each time that a small number of packets is in the STQ, station B will
forward these OR add local packets. The output will not be idle until
the STQ is empty. This is *very* important to understand.
Now, all these packets decrement the shaperD credits, so:
a) We are decrementing credits at lineRate, and
b) Increasing at unreservedRate, which is less than lineRate.
ShaperD will get below the loLimit, thus stopping add traffic.
Station B now drains the STQ at lineRate, keeping the shaperD below
loLimit. Thus the STQ cannot fill at all! Initial credits, or timimg in
simulation programs are actually not important in this case.
2) Interestingly, both flows get 25% in the current RPR
version. Station B is reporting congestion, but not because of STQ
thresholds! A station is also reporting congestion if (lpNrXmitRate >
unreservedRate). And that is exactly what happens because station B is
Xmitting at lineRate as long as there is something in its STQ. The fact
that the outcome of this experiment is right, might be the reason why
some people did not recognize this to be a problem.
So, the external observable behavior of RPR is actually ok in this case,
but it is easy to come with other scenarios where it is not. Why do we
need a STQ of multiple MB if it cannot fill.
I hope this was understandable,
Jon