mtcp-stack / mtcp

mTCP: A Highly Scalable User-level TCP Stack for Multicore Systems
Other
1.99k stars 436 forks source link

Run both the client and server on the same ubuntu system, is it possible? #318

Open terapackets opened 3 years ago

terapackets commented 3 years ago

Hi @ajamshed and experts!

I am trying to run the epwget and epserver in "mtcp/apps/example" on my Ubuntu 18.04, it has an 10Gbps Intel NIC (X540-AT2 (rev 01)) with two ports (dpdk0 and dpdk1). I would like to use one port for server and the other for client.

dpdk0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.200.1.2  netmask 255.255.0.0  broadcast 10.200.255.255
        ether a0:36:9f:54:25:24  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 74  bytes 6216 (6.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

dpdk1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.200.2.2  netmask 255.255.0.0  broadcast 10.200.255.255
        ether a0:36:9f:54:25:26  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

The server runs fine:

# ./epserver -p . -f epserver.conf 
---------------------------------------------------------------------------------
Loading mtcp configuration from : epserver.conf
Loading interface setting
EAL: Detected 6 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Auto-detected process type: PRIMARY
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
path=/sys/kernel/mm/hugepages/hugepages-1048576kB/free_hugepages|
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:01:00.1 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:1528 net_ixgbe
Total number of attached devices: 1
Interface name: dpdk1
EAL: Auto-detected process type: PRIMARY
Configurations:
Number of CPU cores available: 1
Number of CPU cores to use: 1
Maximum number of concurrency per core: 10000
Maximum number of preallocated buffers per core: 10000
Receive buffer size: 8192
Send buffer size: 8192
TCP timeout seconds: 30
TCP timewait seconds: 0
NICs to print statistics: dpdk1
---------------------------------------------------------------------------------
Interfaces:
name: dpdk1, ifindex: 0, hwaddr: A0:36:9F:54:25:26, ipaddr: 10.200.2.2, netmask: 255.255.0.0
Number of NIC queues: 1
---------------------------------------------------------------------------------
Loading routing configurations from : config/route.conf
fopen: No such file or directory
Skip loading static routing table
Routes:
Destination: 10.200.0.0/16, Mask: 255.255.0.0, Masked: 10.200.0.0, Route: ifdx-0
---------------------------------------------------------------------------------
Loading ARP table from : config/arp.conf
fopen: No such file or directory
Skip loading static ARP table
ARP Table:
(blank)
---------------------------------------------------------------------------------
Initializing port 0... Ethdev port_id=0 tx_queue_id=0, new added offloads 0x8011 must be within pre-queue offload capabilities 0x0 in rte_eth_tx_queue_setup()

done: 

Checking link status................................................done
Port 0 Link Up - speed 10000 Mbps - full-duplex
[mtcp_create_context:1279] Failed initialize new mtcp context. Requested cpu id 4 exceed the number of cores 1 configured to use.
[mtcp_create_context:1279] Failed initialize new mtcp context. Requested cpu id 5 exceed the number of cores 1 configured to use.
[mtcp_create_context:1279] Failed initialize new mtcp context. Requested cpu id 1 exceed the number of cores 1 configured to use.
[mtcp_create_context:1279] Failed initialize new mtcp context. Requested cpu id 3 exceed the number of cores 1 configured to use.
[mtcp_create_context:1279] Failed initialize new mtcp context. Requested cpu id 2 exceed the number of cores 1 configured to use.
CPU 0: initialization finished.
[mtcp_create_context:1359] CPU 0 is now the master thread.
[CPU 0] dpdk1 flows:      0, RX:       0(pps) (err:     0),  0.00(Gbps), TX:       0(pps),  0.00(Gbps)
[ ALL ] dpdk1 flows:      0, RX:       0(pps) (err:     0),  0.00(Gbps), TX:       0(pps),  0.00(Gbps)
[CPU 0] dpdk1 flows:      0, RX:       0(pps) (err:     0),  0.00(Gbps), TX:       0(pps),  0.00(Gbps)
[ ALL ] dpdk1 flows:      0, RX:       0(pps) (err:     0),  0.00(Gbps), TX:       0(pps),  0.00(Gbps)
[CPU 0] dpdk1 flows:      0, RX:       0(pps) (err:     0),  0.00(Gbps), TX:       0(pps),  0.00(Gbps)
[ ALL ] dpdk1 flows:      0, RX:       0(pps) (err:     0),  0.00(Gbp

But when I ran client, I got error

# ./epwget  10.200.2.2 1 -f epwget.conf
Application configuration:
URL: /
# of total_flows: 1
# of cores: 1
Concurrency: 0
---------------------------------------------------------------------------------
Loading mtcp configuration from : epwget.conf
Loading interface setting
EAL: Detected 6 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Auto-detected process type: SECONDARY
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket_30502_3b6d6e2779bb
EAL: Probing VFIO support...
EAL: PCI device 0000:01:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:1528 net_ixgbe
EAL: Cannot find resource for device
[ SetNetEnv: 361] No Ethernet port!

This looks strange since I have assigned dpdk0 to epwget and dpdk1 to epserver in the conf files.

Any one has an idea?

Thanks in advance