-
Notifications
You must be signed in to change notification settings - Fork 225
DPDK: 5-tuple-swap multiprocess testpmd on a single port #4241
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
base: main
Are you sure you want to change the base?
Conversation
Gathers and checks packet drops at the end of send receive tests. Senders are allowed to drop more packets, we intentionally tune it to maximize the PPS, so some drops are expected. The rough metric in this PR is that the percentage of packets dropped should not exceed 20% on the sender and 1% on the receiver.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds a new DPDK test that validates multiprocess testpmd functionality using a 5-tuple-swap forwarding mode with a single port setup. The test involves two VMs: one VM runs both sender and receiver processes using DPDK multiprocessing, while the other VM acts as a forwarder that swaps MAC and IP addresses to return traffic back to the sender VM.
Changes:
- Introduces multiprocess DPDK support with new enums for process roles and forwarding modes
- Adds
generate_5tswap_run_infofunction to configure the 3-process test topology - Updates command handling throughout to support multiple commands per node (List[str] instead of str)
- Adds new test case
verify_dpdk_testpmd_5tswap_gb_hugepages_netvscto the test suite
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 10 comments.
| File | Description |
|---|---|
| lisa/microsoft/testsuites/dpdk/common.py | Adds DpdkMpRole and TestpmdForwardMode enums to support multiprocess contexts and different forwarding modes |
| lisa/microsoft/testsuites/dpdk/dpdktestpmd.py | Adds _generate_mp_arguments method and extends generate_testpmd_command to support multiprocess role configuration and custom core lists |
| lisa/microsoft/testsuites/dpdk/dpdkutil.py | Adds generate_5tswap_run_info function for 5-tuple-swap test setup, updates return types to support multiple commands per node, and modifies verify_dpdk_send_receive to handle multiple processes |
| lisa/microsoft/testsuites/dpdk/dpdksuite.py | Adds new test case for 5-tuple-swap multiprocess validation with 1GB hugepages |
| def _generate_mp_arguments( | ||
| self, mp_role: DpdkMpRole, num_procs: int, proc_id: int | ||
| ) -> str: | ||
| # Check and set multi_process arugments for testpmd. |
Copilot
AI
Jan 27, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Spelling error: "arugments" should be "arguments".
| # Check and set multi_process arugments for testpmd. | |
| # Check and set multi_process arguments for testpmd. |
adds handling for testpmd multiple processes. will be used for secondary process receiver for 5tswap test.
Adds a simpler forwarding test with a single DPDK port. Two vms, vm0 -> vm1. vm1 swaps the addresses (5 tuple) and sends traffic back to vm0. Co-authored-by: Copilot <[email protected]>
5d6247d to
08cd765
Compare
bb6ff7b to
9660833
Compare
Adds a simpler forwarding test using 2 VMs and 1 port. This test uses multiprocess DPDK to create a sender and receiver process on one VM, and a forwarder process on the other. The forwarder sends all traffic back to the first VM by swapping the mac and IP addresses.