栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 adjust

if [ `whoami` != 'root' ]; then
    echo "Please run this as root..., don't worry about it..."
    exit 1
fi

if [ ! -d /mnt/huge ]; then
mkdir /mnt/huge
chmod 777 /mnt/huge/
fi

mount -t hugetlbfs nodev /mnt/huge
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

echo "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 adjust

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


echo "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文件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/841091.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号