shenango / caladan

Interference-aware CPU scheduling that enables performance isolation and high CPU utilization for datacenter servers
Apache License 2.0
117 stars 50 forks source link

cannot send udp packets #17

Open zhangxz18 opened 1 year ago

zhangxz18 commented 1 year ago

I'm trying to complie and run Caladan with an easy udp-send application. The application is modified from apps/bench/netbench_udp.cc by just calling udp_send() in the RunExperiment() function. I run the app in server A, and run tcpdump in the server B. However, server B cannot capture any packet from server A. Any idea on how to resolve the problem? Thank you for your time and effort.

Environment CPU: Intel(R) Xeon(R) CPU E5-2620 NIC: Intel XL710 Ubuntu 20.04.1 with kernel 5.15.0 The NIC binds to vfio-pci. The two NICs in the two servers are connected directly.

More details I have read the packet from rte_mbuf in tx_burst, the packet is valid. The eth_rte_tx_burst return a right value. I write another app with pure dpdk. I construct an identical packet, and send it by the rte_eth_tx_burst. Server B can receive the packet.

The configuration file

host_addr 192.168.40.233
host_netmask 255.255.255.0
host_gateway 192.168.40.1
host_mac 3c:fd:fe:9e:81:98
runtime_kthreads 4
runtime_guaranteed_kthreads 4
runtime_spinning_kthreads 4
runtime_priority lc
runtime_qdelay_us 10

the output

$ sudo ./iokerneld simple noht
CPU 03| <5> cpu: detected 12 cores, 2 nodes
CPU 03| <5> time: detected 2397 ticks / us
[  0.003655] CPU 03| <5> sched: CPU configuration...
        node 0: [0][2][4][6][8][10]
        node 1: [1][3][5][7][9][11]
[  0.003687] CPU 03| <5> sched: dataplane on 2, control on 0

=====  Processor information  =====
Linux arch_perfmon flag  : yes
Hybrid processor         : no
IBRS and IBPB supported  : yes
STIBP supported          : yes
Spec arch caps supported : no
Max CPUID level          : 15
IBRS enabled in the kernel   : no
STIBP enabled in the kernel  : no
Socket 0: 2 memory controllers detected with total number of 5 channels. 2 QPI ports detected. 0 M2M (mesh to memory) blocks detected. 1 Home Agents detected. 0 M3UPI blocks detected.
Socket 1: 2 memory controllers detected with total number of 5 channels. 2 QPI ports detected. 0 M2M (mesh to memory) blocks detected. 1 Home Agents detected. 0 M3UPI blocks detected.
[  0.189100] CPU 00| <5> control: spawning control thread
EAL: Detected CPU lcores: 12
EAL: Detected NUMA nodes: 2
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: VFIO support initialized
EAL: Using IOMMU type 1 (Type 1)
EAL: Probe PCI driver: net_i40e (8086:1583) device: 0000:06:00.0 (socket 0)
TELEMETRY: No legacy callbacks, legacy socket not created
[  0.796731] CPU 02| <5> dpdk: driver: net_i40e port 0 MAC: 3c fd fe 9e 81 98
[  0.797045] CPU 02| <5> main: core 2 running dataplane. [Ctrl+C to quit]
[  4.456723] CPU 02| <3> tx: transmitted 1 packets on port 0
[  5.456809] CPU 02| <3> tx: transmitted 1 packets on port 0
[  6.456958] CPU 02| <3> tx: transmitted 1 packets on port 0
[  7.457047] CPU 02| <3> tx: transmitted 1 packets on port 0
...