tcpreplay icon indicating copy to clipboard operation
tcpreplay copied to clipboard

[Bug] Failed to use netmap, `nm_do_ioctl: No such file or directory`

Open duskmoon314 opened this issue 1 year ago • 1 comments

Describe the bug

I'm trying to use tcpreplay with netmap enabled on a Ubuntu 22.04 machine with Intel 82599ES. After building netmap (master with ixgbe:5.18.11) and tcpreplay 4.4.4, I failed to switch the network driver to netmap bypass mode because of the nm_do_ioctl: No such file or directory

It seems I cannot build netmap on Ubuntu 22.04 successfully with an older version (v11, v13) so I use the master branch. The version of ixgbe is the latest one in netmap/LINUX/final-patches that I can build successfully.

To ReproduceSteps to reproduce the behavior: 0. Clone netmap to~/Documents/netmap; Clone tcpreplay to ~/Documents/tcpreplay`

  1. Build netmap with: ./configure --no-drivers=virtio_net.c --driver-suffix=-netmap --select-version=ixgbe:5.18.11 && make -j && sudo make install
  2. Build tcpreplay with: ./configure --with-netmap=~/Documents/netmap && make -j && sudo make install
  3. sudo tcpreplay -i enp1s0f1 --netmap dataset/202006101400.pcap
  4. Get the error:
Switching network driver for enp1s0f1 to netmap bypass mode... failed!
 Switching network driver for enp1s0f1 to normal mode... 
Fatal Error: failed to open device enp1s0f1: nm_do_ioctl: No such file or directory

Expected behavior I want to use tcpreplay with netmap to send packets as in normal mode (without --netmap).

Screenshots image

System (please complete the following information):

  • OS: Ubuntu 22.04
  • Tcpreplay Version 4.4.4.

Additional context ~I haven't figured out how to let tcpreplay show more information about the failure.~ Please give me some advice to find out how to provide more information and solve this problem.

I rebuild tcpreplay with debug output enabled. And the output is:

> sudo tcpreplay -i enp1s0f1 --netmap -d 1 dataset/202006101400.pcap 
DEBUG1 in netmap.c:sendpacket_open_netmap() line 192: sendpacket_open_netmap: using netmap
DEBUG1 in netmap.c:get_netmap_version() line 56: netmap detected API version 14 which matches compiled version

Switching network driver for enp1s0f1 to netmap bypass mode... DEBUG1 in netmap.c:sendpacket_open_netmap() line 369: sendpacket_open_netmap: mapping 334980 Kbytes queues=4
DEBUG1 in netmap.c:sendpacket_open_netmap() line 411: enp1s0f1 tx first=0 last=0  num=4
DEBUG1 in netmap.c:sendpacket_open_netmap() line 414: TX0 0x0x7fca2928e000 head=0 cur=0 tail=511
DEBUG1 in netmap.c:sendpacket_open_netmap() line 414: TX1 0x0x7fca29297000 head=0 cur=0 tail=511
DEBUG1 in netmap.c:sendpacket_open_netmap() line 414: TX2 0x0x7fca292a0000 head=0 cur=0 tail=511
DEBUG1 in netmap.c:sendpacket_open_netmap() line 414: TX3 0x0x7fca292a9000 head=0 cur=0 tail=511
DEBUG1 in netmap.c:sendpacket_open_netmap() line 414: TX4 0x0x7fca29251000 head=0 cur=4 tail=4
DEBUG1 in netmap.c:nm_do_ioctl() line 130: SIOCGIFFLAGS flags are 0x11431143
failed!
 Switching network driver for enp1s0f1 to normal mode... 
Fatal Error in sendpacket.c:sendpacket_open() line 551:
 failed to open device enp1s0f1: nm_do_ioctl: No such file or directory

duskmoon314 avatar Jun 19 '23 12:06 duskmoon314