dpdk運行及多進程運行,相關問題解決,pktgen, tcpdump應用

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字節。
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章