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
How to test XDP_TX performance using Linux traffic gen? #639
Comments
The
I will update the MD with the above information. Currently the XDP eBPF program binds to all interfaces. Since the packets will be intercepted and reflected back at low layer (just above the NDIS miniport driver), I doubt if taskmgr will be able to show it though. |
To make this easier to debug, can you run this in interpret mode with driver verifier enabled? Due to limitations of the Windows kernel, the debugger can't unwind through generated code in the kernel. To enable driver verifier run: Once you have it running in interpret mode, attach a kernel-mode debugger and capture a stack backtrace to better understand where it's crashing. |
Thanks!
|
Alternatively, you can grab the memory.dmp from %windir%\memory.dmp + driver files (ebpfcore.sys + netebpfext.sys) + matching pdb files. That should be enough to debug it. |
Hi Alan,
|
Interesting. @shankarseal can you take a look? I think something might be corrupted in the NBL as it's not finding the right send completion handler for the packet. |
@williamtu can you may be upload the kernel crash dump? |
Hi @shankarseal, Thanks! What traffic generation software should I use on Windows? On my side, the traffic generator Linux machine and windows machine are connected back-to-back. It's hard to reimagine the traffic gen machine to run Windows. I will try but it might take some time. |
Thanks for sharing the crash dump. Can you please also upload c:\ebpf-for-windows\x64\Debug\NetEbpfExt.pdb ? |
Please see netebpfext.pdb below, thanks |
Thanks for the symbols. I could get some diagnostic information from the crash dump. But I could not root cause it. I will try to get a repro myself. I am assuming you just blasted the target machine with a lot of UDP datagrams with dst port == 8989? The packet that caused the crash is this;
30 bytes of 0s . Is that right? I will try to do the same. |
Thanks a lot! |
update - I tried ntttcp and flooded target VM running reflect_packet with 20K datagrams - no crash. Are you using reflect_packet or encap_reflect_packet? I will try testpmd as well - but I wonder how much difference the traffic gen tool will make? |
I'm using reflect_packet |
I have a repro - nvm. |
that's great! thank you. |
Should be fixed by #641. Please reopen if not. |
@williamtu - The bug has been fixed. Please pull the latest changes and give it a try. Note that this implementation of XDP is more a prototype than finished product. We just implemented the basic functionality and helpers rather than focus on perf. With the current implementation, using NTTTCP tool, I observed that there were up to 100K packets sent/received per second on the VM running the XDP eBPF program with 1 core being busy. I tried but could not spread the traffic on other cores of the VM - I will keep trying to do that. You can measure the packets per second by running perfmon.exe and adding a counter under Network Interface -> Packets Sent/Packets Received. |
@shankarseal |
@shankarseal, thanks, I pull the latest code and it works OK! |
Hi,
I have a sender Linux machine and receiver Windows machine, followed the xdp_test.exe guide
https://github.com/microsoft/ebpf-for-windows/blob/master/docs/GettingStarted.md#xdp_testsexe
to load the xdp program using netsh
And I have another Linux machine running DPDK test-me to generate traffic
At Windows, I saw RX packets, but no TX packets.
Question:
How do I know which Windows interface the XDP program binds to?
Is there a tool / command to know the XDP_TX packet rate?
(Or any pointer to the source code for me to read)
Thank you
William
The text was updated successfully, but these errors were encountered: