dpdk-pktgen进行发包,dpdk-testpmd和dpdk-pdump进行收包并保存为pcap文件
使用dpdk-pktgen進(jìn)行發(fā)包,dpdk-testpmd和dpdk-pdump進(jìn)行收包并保存為pcap文件
**發(fā)包虛擬機(jī)版本號(hào):**Ubuntu 16.04,dpdk 19.11.11,pktgen19.12.0
**收包虛擬機(jī)版本號(hào):**Ubuntu16.04,dpdk 18.11.11
本文不介紹dpdk的安裝,可以參考dpdk官方文檔和相關(guān)博客進(jìn)行相應(yīng)的安裝
1.啟動(dòng)發(fā)包方的dpdk
啟動(dòng)dpdk總共需要三步:(1)掛載大頁(yè)內(nèi)存(2)掛載驅(qū)動(dòng),綁定網(wǎng)卡(3)預(yù)先導(dǎo)出命令RTE_SDK和RTE_TARGET
直接使用命令
./dpdk-start.shdpdk-start.sh腳本(need adjust下方的需要修改)如下所示:
#!/bin/bash//need adjust //0000:02:06.0是我自己虛擬機(jī)中將要綁定到dpdk上的網(wǎng)卡 //0000:02:06.0查看步驟見(jiàn)下文 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目標(biāo)環(huán)境目錄,下方是我自己的dpdk的目標(biāo)環(huán)境目錄,可自行修改 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時(shí),使用命令
./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命令進(jìn)入到dpdk安裝目錄下的usertools目錄下
(2)使用以下命令進(jìn)行查看
./dpdk-devbind.py --status2.啟動(dòng)pktgen
(1)進(jìn)入到pktgen安裝目錄下的/app/x86_64-native-linuxapp-gcc/app中
(2) 輸入以下命令執(zhí)行pktgen
./pktgen -l 0-1 -n 3 -- -P -m "[1].0"簡(jiǎn)單解釋下相關(guān)命令——其中**–**前面的為EAL命令選項(xiàng),后面的為pktgen命令選項(xiàng),具體可查看官網(wǎng)文檔,附上鏈接https://pktgen-dpdk.readthedocs.io/en/latest/running.html
-l 代表使用的邏輯核,此例代表使用邏輯核0,1
-n 代表使用的內(nèi)存通道數(shù),此例代表使用3個(gè)內(nèi)存通道
-P 代表在所有端口上啟用混雜模式。
-m 代表用于將端口映射到邏輯內(nèi)核的矩陣,此例表示邏輯核1處理端口0的發(fā)送和接收
(3) 輸入下列命令進(jìn)行發(fā)包
set 0 dst ip xxx.xxx.xxx.xxx//設(shè)置包的目的ip地址 set 0 dst mac xx:xx:xx:xx//設(shè)置包的目的mac地址 set 0 count 100//設(shè)置發(fā)包數(shù)量為100,這個(gè)測(cè)試pktgen發(fā)包性能時(shí)可以不用輸入 start 0//代表開(kāi)始發(fā)包 quit 0//代表停止發(fā)包3.在接收方虛擬機(jī)中啟動(dòng)dpdk
同第一步
4.在接收方編譯啟動(dòng)testpmd
(1) 進(jìn)入dpdk安裝目錄下的/app/testpmd目錄中
(2) 打開(kāi)終端,進(jìn)入root用戶下,導(dǎo)入環(huán)境變量
//need adjust //RTE_SDK代表dpdk的安裝目錄,下方是我自己的dpdk的安裝目錄,可自行修改 //RTE_TARGE代表dpdk目標(biāo)環(huán)境目錄,下方是我自己的dpdk的目標(biāo)環(huán)境目錄,可自行修改 export RTE_SDK=/home/p4/dpdk/dpdk-stable-18.11.11 export RTE_TARGET=x86_64-native-linuxapp-gcc //end(3) 使用make命令進(jìn)行編譯
(4) 啟動(dòng)testpmd進(jìn)行收包
./testpmd -c 0x3 -n 2 -- -i**–**前面的為EAL命令選項(xiàng),后面的為testpmd命令選項(xiàng)
官方文檔鏈接–http://doc.dpdk.org/guides-18.11/testpmd_app_ug/run_app.html
-c 代表使用的邏輯核,此例代表使用的是邏輯核0,1
-i 代表使用交互模式
(5) 進(jìn)入testpmd交互模式,輸入命令
> start > show port stats all//呈現(xiàn)各個(gè)端口的收發(fā)包情況5.在接收方虛擬機(jī)中編譯啟動(dòng)pdump
(1) 進(jìn)入dpdk安裝目錄下的/app/pdump目錄中
(2) 打開(kāi)終端,進(jìn)入root用戶下,導(dǎo)入環(huán)境變量
//need adjust //RTE_SDK代表dpdk的安裝目錄,下方是我自己的dpdk的安裝目錄,可自行修改 //RTE_TARGE代表dpdk目標(biāo)環(huán)境目錄,下方是我自己的dpdk的目標(biāo)環(huán)境目錄,可自行修改 export RTE_SDK=/home/p4/dpdk/dpdk-stable-18.11.11 export RTE_TARGET=x86_64-native-linuxapp-gcc //end need adjust(3) 使用make命令進(jìn)行編譯
(4) 輸入命令進(jìn)行收包,并將包存為pcap文件
./build/app/dpdk-pdump -- --pdump 'port=0,queue=*,rx-dev=/home/p4/capture16.pcap'**–**前面的為EAL命令選項(xiàng),后面的為pdump命令選項(xiàng)
官方文檔鏈接–http://doc.dpdk.org/guides-18.11/tools/pdump.html
(5)可以在/home/p4/目錄下使用wireshark查看capture16.pcap文件
總結(jié)
以上是生活随笔為你收集整理的dpdk-pktgen进行发包,dpdk-testpmd和dpdk-pdump进行收包并保存为pcap文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 同步博客
- 下一篇: 简述 npm 发包流程