-
Notifications
You must be signed in to change notification settings - Fork 334
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
zero-valued enq_timestamp and deq_timedelta in egress pipeline #905
Comments
I tried to reproduce this and couldn't:
But there could be other things at play. Could you share the bmv2 JSON file produced by the compiler? That would be helpful. |
Please find the zipped json file here: bmv2.json.zip. |
Sorry I forgot to ask, could you include the p4info file as well? |
Sure, please find it here: |
Thanks for the info. I was able to reproduce the issue. I should be able to fix it in the next couple of days, but I don't know how long it will take for the fix to be integrated into the stratum_bmv2 build. |
In some case, the do_swap() call in simple_switch never returned 0 (because the swap was performed independently of the target), which meant that the with_queueing_metadata flag was not updated. This created an issue in the following specific scenario: * simple_switch is started with a JSON config that does not include queueing metadata fields * a JSON config swap is performed (using the runtime_CLI or P4Runtime, in the case of simple_switch_grpc), and the new config includes all queueing metadata fields * queueing metadata fields still show as 0 for all subsequent traffic To fix this, we get rid of the assumption that targets are in charge of calling do_swap() themselves, which must data back to when Packet instantiation was not guarded by a lock (thus requiring the collaboration of targets to ensure no new Packets were created as the swap if being performed). From now targets are notified using the swap_notify_() virtual method, which targets can override. Fixes #905
Great, thanks for looking into this! |
In some case, the do_swap() call in simple_switch never returned 0 (because the swap was performed independently of the target), which meant that the with_queueing_metadata flag was not updated. This created an issue in the following specific scenario: * simple_switch is started with a JSON config that does not include queueing metadata fields * a JSON config swap is performed (using the runtime_CLI or P4Runtime, in the case of simple_switch_grpc), and the new config includes all queueing metadata fields * queueing metadata fields still show as 0 for all subsequent traffic To fix this, we get rid of the assumption that targets are in charge of calling do_swap() themselves, which must data back to when Packet instantiation was not guarded by a lock (thus requiring the collaboration of targets to ensure no new Packets were created as the swap if being performed). From now targets are notified using the swap_notify_() virtual method, which targets can override. Fixes #905
The issue is described here: p4lang/behavioral-model#905
The issue is described here: p4lang/behavioral-model#905
Move port maps to hal/config Revert "First cleanup steps" This reverts commit 1b8e184. Conditionally mount config dir inside docker Package config files in stratum_bf Debian package (#262) PR #259 moved them. Initialize the CPU port when Stratum started (#256) Co-authored-by: Maximilian Pudelko <[email protected]> Bump BMv2 commit fix to zero-valued timestamps (#264) The issue is described here: p4lang/behavioral-model#905 Update cpplint (#263) Overwrite existing port map symlinks These can exist from previous runs or different installs. We should remove the to ensure consistent startup behavior. Do not start stratum_bf if insmod failed There is no point in continuing Stratum startup.
Move port maps to hal/config Revert "First cleanup steps" This reverts commit 1b8e184. Conditionally mount config dir inside docker Package config files in stratum_bf Debian package (#262) PR #259 moved them. Initialize the CPU port when Stratum started (#256) Co-authored-by: Maximilian Pudelko <[email protected]> Bump BMv2 commit fix to zero-valued timestamps (#264) The issue is described here: p4lang/behavioral-model#905 Update cpplint (#263) Overwrite existing port map symlinks These can exist from previous runs or different installs. We should remove the to ensure consistent startup behavior. Do not start stratum_bf if insmod failed There is no point in continuing Stratum startup. Fix missing $ Unifiy docker config mount
* Unifiy docker config mount Move port maps to hal/config Revert "First cleanup steps" This reverts commit 1b8e184. Conditionally mount config dir inside docker Package config files in stratum_bf Debian package (#262) PR #259 moved them. Initialize the CPU port when Stratum started (#256) Co-authored-by: Maximilian Pudelko <[email protected]> Bump BMv2 commit fix to zero-valued timestamps (#264) The issue is described here: p4lang/behavioral-model#905 Update cpplint (#263) Overwrite existing port map symlinks These can exist from previous runs or different installs. We should remove the to ensure consistent startup behavior. Do not start stratum_bf if insmod failed There is no point in continuing Stratum startup. Fix missing $ Unifiy docker config mount * Restructure README * Handle non-ONLP platforms * Update stratum/hal/bin/barefoot/README.md Co-authored-by: Carmelo Cascone <[email protected]> * Update stratum/hal/bin/barefoot/README.md Co-authored-by: Carmelo Cascone <[email protected]> * Remove container on exit * Fix link to example port map * Address comments * Address comments * Rename stratum-entrypoint.sh to start-stratum.sh * Minor README cleanup * Fix typo Co-authored-by: Carmelo Cascone <[email protected]>
The fields
enq_timestamp
anddeq_timedelta
are 0 in the egress pipeline of fabric.p4 when run on stratum_bmv2 switches. This is reflected when INT is running and is configured to add the metadata fields ingress timestamp and egress timestamp. The reported values of these INT metadata fields are thus 0. However, the values of the fieldsingress_global_timestamp
andegress_global_timestamp
are correctly set.One way to reproduce this is by adding the following two logging commands to the beginning of the FabricEgress control block in fabric.p4
This results in the following log messages in the stratum_bmv2 log:
The text was updated successfully, but these errors were encountered: