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

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值