dpdk-pktgen进行发包,dpdk-testpmd和dpdk-pdump进行收包并保存为pcap文件
使用dpdk-pktgen進行發包,dpdk-testpmd和dpdk-pdump進行收包并保存為pcap文件
**發包虛擬機版本號:**Ubuntu 16.04,dpdk 19.11.11,pktgen19.12.0
**收包虛擬機版本號:**Ubuntu16.04,dpdk 18.11.11
本文不介紹dpdk的安裝,可以參考dpdk官方文檔和相關博客進行相應的安裝
1.啟動發包方的dpdk
啟動dpdk總共需要三步:(1)掛載大頁內存(2)掛載驅動,綁定網卡(3)預先導出命令RTE_SDK和RTE_TARGET
直接使用命令
./dpdk-start.shdpdk-start.sh腳本(need adjust下方的需要修改)如下所示:
#!/bin/bash//need adjust //0000:02:06.0是我自己虛擬機中將要綁定到dpdk上的網卡 //0000:02:06.0查看步驟見下文 export PCI_IF="0000:02:06.0" //end need adjustif [ `whoami` != 'root' ]; thenecho "Please run this as root..., don't worry about it..."exit 1 fiif [ ! -d /mnt/huge ]; then mkdir /mnt/huge chmod 777 /mnt/huge/ fimount -t hugetlbfs nodev /mnt/huge echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepagesecho "Setting env..." //need adjust //RTE_SDK代表dpdk的安裝目錄,下方是我自己的dpdk的安裝目錄,可自行修改 //RTE_TARGE代表dpdk目標環境目錄,下方是我自己的dpdk的目標環境目錄,可自行修改 export RTE_SDK=/home/p4/dpdk/dpdk-stable-19.11.11 export RTE_TARGET=x86_64-native-linuxapp-gcc //end need adjustmodprobe uio //need adjust insmod /home/p4/dpdk/dpdk-stable-19.11.11/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko dpdkdevbind=/home/p4/dpdk/dpdk-stable-19.11.11/usertools/dpdk-devbind.py //end need adjust $dpdkdevbind --force -u $PCI_IF $dpdkdevbind -b igb_uio $PCI_IF $dpdkdevbind -secho "dpdk-down..."在退出dpdk時,使用命令
./dpdk-down.shdpdk-down.sh腳本如下所示
#!/bin/bash//need adjust export PCI_IF="0000:02:06.0" rmmod /home/p4/dpdk/dpdk-stable-19.11.11/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko dpdkdevbind=/home/p4/dpdk/dpdk-stable-19.11.11/usertools/dpdk-devbind.py //end need adjust $dpdkdevbind --force -u $PCI_IF $dpdkdevbind -b e1000 $PCI_IF $dpdkdevbind -s0000:02:06.0查看步驟
(1)使用cd命令進入到dpdk安裝目錄下的usertools目錄下
(2)使用以下命令進行查看
./dpdk-devbind.py --status2.啟動pktgen
(1)進入到pktgen安裝目錄下的/app/x86_64-native-linuxapp-gcc/app中
(2) 輸入以下命令執行pktgen
./pktgen -l 0-1 -n 3 -- -P -m "[1].0"簡單解釋下相關命令——其中**–**前面的為EAL命令選項,后面的為pktgen命令選項,具體可查看官網文檔,附上鏈接https://pktgen-dpdk.readthedocs.io/en/latest/running.html
-l 代表使用的邏輯核,此例代表使用邏輯核0,1
-n 代表使用的內存通道數,此例代表使用3個內存通道
-P 代表在所有端口上啟用混雜模式。
-m 代表用于將端口映射到邏輯內核的矩陣,此例表示邏輯核1處理端口0的發送和接收
(3) 輸入下列命令進行發包
set 0 dst ip xxx.xxx.xxx.xxx//設置包的目的ip地址 set 0 dst mac xx:xx:xx:xx//設置包的目的mac地址 set 0 count 100//設置發包數量為100,這個測試pktgen發包性能時可以不用輸入 start 0//代表開始發包 quit 0//代表停止發包3.在接收方虛擬機中啟動dpdk
同第一步
4.在接收方編譯啟動testpmd
(1) 進入dpdk安裝目錄下的/app/testpmd目錄中
(2) 打開終端,進入root用戶下,導入環境變量
//need adjust //RTE_SDK代表dpdk的安裝目錄,下方是我自己的dpdk的安裝目錄,可自行修改 //RTE_TARGE代表dpdk目標環境目錄,下方是我自己的dpdk的目標環境目錄,可自行修改 export RTE_SDK=/home/p4/dpdk/dpdk-stable-18.11.11 export RTE_TARGET=x86_64-native-linuxapp-gcc //end(3) 使用make命令進行編譯
(4) 啟動testpmd進行收包
./testpmd -c 0x3 -n 2 -- -i**–**前面的為EAL命令選項,后面的為testpmd命令選項
官方文檔鏈接–http://doc.dpdk.org/guides-18.11/testpmd_app_ug/run_app.html
-c 代表使用的邏輯核,此例代表使用的是邏輯核0,1
-i 代表使用交互模式
(5) 進入testpmd交互模式,輸入命令
> start > show port stats all//呈現各個端口的收發包情況5.在接收方虛擬機中編譯啟動pdump
(1) 進入dpdk安裝目錄下的/app/pdump目錄中
(2) 打開終端,進入root用戶下,導入環境變量
//need adjust //RTE_SDK代表dpdk的安裝目錄,下方是我自己的dpdk的安裝目錄,可自行修改 //RTE_TARGE代表dpdk目標環境目錄,下方是我自己的dpdk的目標環境目錄,可自行修改 export RTE_SDK=/home/p4/dpdk/dpdk-stable-18.11.11 export RTE_TARGET=x86_64-native-linuxapp-gcc //end need adjust(3) 使用make命令進行編譯
(4) 輸入命令進行收包,并將包存為pcap文件
./build/app/dpdk-pdump -- --pdump 'port=0,queue=*,rx-dev=/home/p4/capture16.pcap'**–**前面的為EAL命令選項,后面的為pdump命令選項
官方文檔鏈接–http://doc.dpdk.org/guides-18.11/tools/pdump.html
(5)可以在/home/p4/目錄下使用wireshark查看capture16.pcap文件
總結
以上是生活随笔為你收集整理的dpdk-pktgen进行发包,dpdk-testpmd和dpdk-pdump进行收包并保存为pcap文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同步博客
- 下一篇: 简述 npm 发包流程