ifconfig -a
問題:解決是缺sudo
wlw@ubuntu:~/dpdk/dpdk-stable-18.02.2/usertools$ ./../examples/helloworld/build/helloworld
rte_virtio_pmd_init(): IOPL call failed - cannot use virtio PMD
EAL: Detected 40 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: No free hugepages reported in hugepages-2048kB
EAL: FATAL: Cannot get hugepage information.
EAL: Cannot get hugepage information.
PANIC in main():
Cannot init EAL
5: [./../examples/helloworld/build/helloworld(_start+0x29) [0x44d7e9]]
4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7f1327250830]]
3: [./../examples/helloworld/build/helloworld() [0x44a21f]]
2: [./../examples/helloworld/build/helloworld(__rte_panic+0xc3) [0x442d33]]
1: [./../examples/helloworld/build/helloworld(rte_dump_stack+0x2b) [0x4ace8b]]
Aborted (core dumped)
wlw@ubuntu:~/dpdk/dpdk-stable-18.02.2/usertools$ ifconfig -a
enp61s0f0 Link encap:Ethernet HWaddr 48:bd:3d:2e:92:8c
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:41801 errors:0 dropped:1903 overruns:0 frame:20971
TX packets:81886 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7302032 (7.3 MB) TX bytes:8841978 (8.8 MB)
ens1f0 Link encap:Ethernet HWaddr 48:bd:3d:35:3b:29
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
ens1f1 Link encap:Ethernet HWaddr 48:bd:3d:35:3b:2b
inet addr:192.168.1.196 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
ens3f0 Link encap:Ethernet HWaddr 38:ad:8e:ea:e6:3b
inet addr:192.168.102.178 Bcast:192.168.102.255 Mask:255.255.255.0
inet6 addr: fe80::3aad:8eff:feea:e63b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1900673 errors:0 dropped:0 overruns:0 frame:0
TX packets:1930426 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:513011866 (513.0 MB) TX bytes:569777099 (569.7 MB)
Memory:a8800000-a8ffffff
ens3f1 Link encap:Ethernet HWaddr 38:ad:8e:ea:e6:3c
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Memory:a8000000-a87fffff
ens3f2 Link encap:Ethernet HWaddr 38:ad:8e:ea:e6:3d
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Memory:a7800000-a7ffffff
ens3f3 Link encap:Ethernet HWaddr 38:ad:8e:ea:e6:3e
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Memory:a7000000-a77fffff
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:28523 errors:0 dropped:0 overruns:0 frame:0
TX packets:28523 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:9693747 (9.6 MB) TX bytes:9693747 (9.6 MB)
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
virbr0-nic Link encap:Ethernet HWaddr 52:54:00:11:25:3d
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlw@ubuntu:~/dpdk/dpdk-stable-18.02.2/usertools$
wlw@ubuntu:~/dpdk/dpdk-stable-18.02.2/usertools$ sudo ./../examples/helloworld/build/helloworld
EAL: Detected 40 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Multi-process socket /var/run/.rte_unix
EAL: Probing VFIO support...
EAL: PCI device 0000:19:00.0 on NUMA socket 0
EAL: probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:19:00.1 on NUMA socket 0
EAL: probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:19:00.2 on NUMA socket 0
EAL: probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:19:00.3 on NUMA socket 0
EAL: probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:3d:00.0 on NUMA socket 0
EAL: probe driver: 8086:37d3 net_i40e
EAL: PCI device 0000:3d:00.1 on NUMA socket 0
EAL: probe driver: 8086:37d3 net_i40e
PMD: Global register is changed during support QinQ parser
PMD: Global register is changed during configure hash input set
PMD: Global register is changed during configure fdir mask
PMD: Global register is changed during configure hash mask
PMD: Global register is changed during support QinQ cloud filter
PMD: Global register is changed during disable FDIR flexible payload
EAL: PCI device 0000:5f:00.0 on NUMA socket 0
EAL: probe driver: 8086:10fb net_ixgbe
EAL: PCI device 0000:5f:00.1 on NUMA socket 0
EAL: probe driver: 8086:10fb net_ixgbe
hello from core 1
hello from core 2
hello from core 3
hello from core 4
hello from core 5
hello from core 6
hello from core 7
hello from core 8
hello from core 9
hello from core 10
hello from core 11
hello from core 12
hello from core 13
hello from core 14
hello from core 15
hello from core 16
hello from core 17
hello from core 18
hello from core 19
hello from core 21
hello from core 22
hello from core 20
hello from core 23
hello from core 24
hello from core 25
hello from core 26
hello from core 27
hello from core 28
hello from core 29
hello from core 30
hello from core 31
hello from core 32
hello from core 33
hello from core 34
hello from core 35
hello from core 36
hello from core 37
hello from core 38
hello from core 39
hello from core 0
wlw@ubuntu:~/dpdk/dpdk-stable-18.02.2/usertools$
dpdk中ctrl+z問題:
dpdk你調試是時候注意別按到 ctrl+z,屬於程序異常退出,異常退出端口占用,沒法繼續使用。
二層轉發實例:
export RTE_SDK=/home/wlw/dpdk/dpdk-stable-18.02.2/
export RTE_TARGET=x86_64-native-linuxapp-gcc
sudo ./examples/l2fwd/build/l2fwd -c 3 -n 2 -- -q 1 -p 1
-p PORTMASK
PORTMASK:一個十六進制位掩碼錶示分配的端口數量。
-q NQ
NQ:表示分配給每個邏輯內核的收發隊列數量。
-T t
t: 表示打印統計數據到屏幕上的時間間隔,默認爲10秒。
dpdk多進程:
兩種方式(一個是主dpdk進程/從dpdk進程方式,在相同網卡上運行;二是兩個dpdk進程分別在不同的網卡上運行。)
今天成功驗證了dpdk多進程的運行。
sudo ./build/l2fwd -c 1 -n 2 --proc-type auto \
--socket-mem 512 --file-prefix pg1 \
-w 0000:3d:00.0 \
-- -q 1 -p 1
因爲dpdk的多進程運行有兩個模式,一個是主進程,從進程,在--proc-type裏指定,可以主,從,通信,例子是multi_process ;
一個是兩個進程,分別運行,該域賦值auto。
socket-mem這個是指定運行在cpu上的內存的。普通的單進程也要指定,只是這裏是獨立分開的概念
file-prefix 這裏指定huge,也是獨立分開的概念。
-w 這個厲害了,他後面接的是網卡的pci,他這個參數可以多次出現,比如綁定三個網卡,那你就-w三次就OK了。
linux上的應用pktgen發包(與pktgen-dpdk發包不同)
modprobe pktgen
cd /proc/net/pktgen/
echo rem_device_all>kpktgend_0
echo add_device enp61s0f0>kpktgend_0
echo count 1000>enp61s0f0
echo clone_skb 1000>enp61s0f0
echo pkt_size 1000>enp61s0f0
echo dst 10.11.11.11>enp61s0f0
echo dst_mac 48:bd:3d:2e:91:66>enp61s0f0
echo start>pgctrl
echo stop>pgctrl
linux上的tcpdump應用
sudo tcpdump -i enp61s0f0 -vv -s 1600 port 1001 -x
-i:指定監聽的網絡接口。
-vv:輸出詳細的報文信息。
-x/X:告訴tcpdump命令,需要把協議頭和包內容都原原本本的顯示出來(tcpdump會以16進制和ASCII的形式顯示),
這在進行協議分析時是絕對的利器。
-s: snaplen snaplen表示從一個包中截取的字節數。0表示包不截斷,抓完整的數據包。默認的話tcpdump只顯示部分數據包,默認68字節。