日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dpdk-pktgen进行发包,dpdk-testpmd和dpdk-pdump进行收包并保存为pcap文件

發布時間:2023/12/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.sh

dpdk-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.sh

dpdk-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 -s

0000:02:06.0查看步驟

(1)使用cd命令進入到dpdk安裝目錄下的usertools目錄下

(2)使用以下命令進行查看

./dpdk-devbind.py --status

2.啟動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文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。