-
Notifications
You must be signed in to change notification settings - Fork 491
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unexpected Guardband respectively a wrong credit evolution #886
Comments
Thanks for reporting the issue. Can you be a little bit more detailed about what is expected and what happens instead? |
Thanks for your fast response. The correct behaviour should be that the credit reaches zero, the guardband-check should be invoked. When the frame is short enough to be served in the time window before the transmission gate closes, it should be dequeued, if not, the guardband signal should be emitted and keep active until the next transmission gate closing event. (see subsequent guardband signal path from 500us ongoing- this looks correct). The credit curve should not increase to values bigger than zero in this example. In this case, the guardband is set as active but only for an infinitesimally small time duration. For me it looks like there are two simoultaneous incoming changeTimer events. |
Previously the gate state update could trigger a sequence of operations in other modules that came back to the CreditBasedGate while it was in a middle of an operation. The gate state should be the last operation that is done by this module. This patch fixes issue #886.
Thanks for the update! I was able to reproduce the problem. The https://github.com/inet-framework/inet/tree/topic/creditbasedgate branch contains my first try to fix this issue. The problem was caused by opening/closing the gate from setCurrentCredit method. The gate state change caused other modules to react, the call chain reached back to the CreditBasedGate while it was in the middle of the original operation. I'm still testing this change. Could you please take a look? |
Thankyou very much for your help and providing a solution approach! I have attached the relevant test case from the images here: Some additional side facts to the network:
|
Thanks for the detailed bug report! I'm surprised that another one popped up, I'm looking into this one. |
I updated the topic/creditbasedgate branch with a series of small changes that fix the above issue. Could you please check if everything seems right? |
Hi Levente, I did some extended testing with multiple AVB traffic classes shaped by parallel Credit Based Shapers and different network loads. Best Regards |
Previously the gate state update could trigger a sequence of operations in other modules that came back to the CreditBasedGate while it was in a middle of an operation. The gate state should be the last operation that is done by this module. This patch fixes issue #886.
Thanks for your contribution! |
Previously the gate state update could trigger a sequence of operations in other modules that came back to the CreditBasedGate while it was in a middle of an operation. The gate state should be the last operation that is done by this module. This patch fixes issue #886.
Hi everyone,
I observed in the attached testcase, a wrong guardBandStateChangedSignal respectively a wrong credit behavior. With the debugger mode I figured out that the first
updateIsInGuardBand()
- call at 0.000364s is invoked by an incoming changeTimer in creditBasedGate.cc when the credit value reaches zero. But immediately the guardband is turned off again by the periodicGate by an incoming changeTimer message that invokes theprocessChangeTimer()
which in turn to closes the gate.It's is a bit weird, that this only happens one time at the beginning of the simulation, but then never again (tested with 5s simulation duration)
It would be great if you could try to reproduce the error, so we could find a solution :)
Best regards,
Philipp
ATTACHMENT:
testcase_gb_error.zip
The text was updated successfully, but these errors were encountered: