Leverage the fanout's ASIC to send PFC storm#13242
Leverage the fanout's ASIC to send PFC storm#13242bingwang-ms merged 1 commit intosonic-net:masterfrom
Conversation
899de5a to
7537e39
Compare
|
The pre-commit check detected issues in the files touched by this pull request. Detailed pre-commit check results: To run the pre-commit checks locally, you can follow below steps:
|
|
The pre-commit check is mandatory. Can you help fix it? |
|
@bingwang-ms This seems to be a big PR. FYI. |
7537e39 to
30c303c
Compare
|
/azpw run |
|
/AzurePipelines run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
@kperumalbfn Can you please help review this PR? |
|
@nhe-NV Does this change require the leaf-fanout switch running Onyx? If that's the case, the PR may not help us because we are not using Onyx as leaf-fanout OS. |
|
The new PFCWD logic requires queue not empty. sonic-net/sonic-swss#3036 |
Hi @bingwang-ms the logic is implemented in #12733. |
I see. Thanks for the clarification. Then it makes sense to me. I missed #12733 as there is no cherry-pick request. I just added the cherry-pick label for it. |
Can you please check this question as well? |
|
Related PR for Non-Onyx leaf-fanout #13768 |
I see you found the answer for nononxy one: "Related PR for Non-Onyx leaf-fanout #13768"
What do you mean this" I didn't see code for building and importing the new container. Is that done manually?" |
|
I see. So the code for building the docker is not changed right? Can you please point me the code for building the docker? |
Hi @bingwang-ms In this PR, you can find ansible/roles/test/files/mlnx/docker-tests-pfcgen-asic/Makefile, this is a new file for build the new docker. but the docker name that build is same as prev |
Yes, I saw the makefile. But can you point me the code for building the new docker image? I didn't see that code in this PR. |
|
|
Hi @nhe-NV , I understand we have Makefile and Dockerfile. I'm looking for the code to call the |
Hi @bingwang-ms , same as prev pfc_wd docker, it dose not have the build command in the script, user will build their own docker and save it locally on demand. In the relevent test case, it will use it directly |
|
I see. Thanks for the clarification. Please address the conflict. |
30c303c to
5debb87
Compare
|
The pre-commit check detected issues in the files touched by this pull request. Detailed pre-commit check results: To run the pre-commit checks locally, you can follow below steps:
|
f4fa608 to
05bb1e8
Compare
Currently, the PFC storm is sent using packet socket on the host CPU, which causes some drawbacks - There is strict timing requirement, which can not be guaranteed - The more ports under PFC storm, the higher probability that the timing requirement is not satisfied We will leverage the fanout's ASIC to send PFC storm - Use SDK API to enable lossless traffic, set xoff to 0, and setup mappings for the PGs and the corresponding IEEE priorities Limitation Still keep sending pfc frame with cpu in the storm docker, but rename it to pfc_gen_cpu.py in the docker. If use the ASIC to send the pfc frame, ASIC could not send specified count of the pfc frame. need to still use the CPU to send the pfc frame.such as the test_pfc_counter test Signed-off-by: Stephen Sun <[email protected]>
05bb1e8 to
5547d5d
Compare
Currently, the PFC storm is sent using packet socket on the host CPU, which causes some drawbacks - There is strict timing requirement, which can not be guaranteed - The more ports under PFC storm, the higher probability that the timing requirement is not satisfied We will leverage the fanout's ASIC to send PFC storm - Use SDK API to enable lossless traffic, set xoff to 0, and setup mappings for the PGs and the corresponding IEEE priorities Limitation Still keep sending pfc frame with cpu in the storm docker, but rename it to pfc_gen_cpu.py in the docker. If use the ASIC to send the pfc frame, ASIC could not send specified count of the pfc frame. need to still use the CPU to send the pfc frame.such as the test_pfc_counter test Signed-off-by: Stephen Sun <[email protected]> Co-authored-by: Stephen Sun <[email protected]>
|
Cherry-pick PR to 202405: #13885 |
Currently, the PFC storm is sent using packet socket on the host CPU, which causes some drawbacks - There is strict timing requirement, which can not be guaranteed - The more ports under PFC storm, the higher probability that the timing requirement is not satisfied We will leverage the fanout's ASIC to send PFC storm - Use SDK API to enable lossless traffic, set xoff to 0, and setup mappings for the PGs and the corresponding IEEE priorities Limitation Still keep sending pfc frame with cpu in the storm docker, but rename it to pfc_gen_cpu.py in the docker. If use the ASIC to send the pfc frame, ASIC could not send specified count of the pfc frame. need to still use the CPU to send the pfc frame.such as the test_pfc_counter test Signed-off-by: Stephen Sun <[email protected]> Co-authored-by: Stephen Sun <[email protected]>
Currently, the PFC storm is sent using packet socket on the host CPU, which causes some drawbacks - There is strict timing requirement, which can not be guaranteed - The more ports under PFC storm, the higher probability that the timing requirement is not satisfied We will leverage the fanout's ASIC to send PFC storm - Use SDK API to enable lossless traffic, set xoff to 0, and setup mappings for the PGs and the corresponding IEEE priorities Limitation Still keep sending pfc frame with cpu in the storm docker, but rename it to pfc_gen_cpu.py in the docker. If use the ASIC to send the pfc frame, ASIC could not send specified count of the pfc frame. need to still use the CPU to send the pfc frame.such as the test_pfc_counter test Signed-off-by: Stephen Sun <[email protected]> Co-authored-by: Stephen Sun <[email protected]>
Currently, the PFC storm is sent using packet socket on the host CPU, which causes some drawbacks - There is strict timing requirement, which can not be guaranteed - The more ports under PFC storm, the higher probability that the timing requirement is not satisfied We will leverage the fanout's ASIC to send PFC storm - Use SDK API to enable lossless traffic, set xoff to 0, and setup mappings for the PGs and the corresponding IEEE priorities Limitation Still keep sending pfc frame with cpu in the storm docker, but rename it to pfc_gen_cpu.py in the docker. If use the ASIC to send the pfc frame, ASIC could not send specified count of the pfc frame. need to still use the CPU to send the pfc frame.such as the test_pfc_counter test Signed-off-by: Stephen Sun <[email protected]> Co-authored-by: Stephen Sun <[email protected]>

Currently, the PFC storm is sent using packet socket on the host CPU, which causes some drawbacks
We will leverage the fanout's ASIC to send PFC storm
After the change, the pfc related test case which is using onxy as fanout will send the pfc frame with ASIC instead of using the CPU.
New docker storm docker need to be build with the Docker file provided in this PR.
Description of PR
Summary:
Fixes # (issue)
Type of change
Back port request
Approach
What is the motivation for this PR?
To make the pfc related test case much more stable.
How did you do it?
Change sending pfc frame with CPU to ASIC on the onxy fanout.
How did you verify/test it?
Run the pfc related test case on the setup which has onxy fanout, test case could pass stablly.
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation