blog.didiyun.com

Pktgen-DPDK 简介

Pktgen(Packet Gen-erator)是一个基于软件的流量生成器,由 DPDK 快速数据包处理框架提供支持。

Pktgen 的一些功能是:

  • 它能够生成具有 64 字节帧的 10Gbit 线速流量。
  • 它可以以线速充当发送器或接收器。
  • 它有一个运行时环境来配置启动和停止流量。
  • 它可以显示多个端口的实时指标。
  • 它可以通过迭代源或目标 MAC,IP 地址或端口来按顺序生成数据包。
  • 它可以处理 UDP、TCP、ARP、ICMP、GRE、MPLS 和 Queue-in-Queue 的数据包。
  • 它可以通过 TCP 连接远程控制。
  • 它可以通过 Lua 进行配置,并且可以运行命令脚本来设置可重复的测试用例。
  • kernel.debug 安装

    yum install -y kernel-devel
    cd /lib/modules/3.10.0-693.21.1.el7.x86_64/
    rm -fr build
    ln -s /usr/src/kernels/3.10.0-693.21.1.el7.x86_64/ build

    DPDK 安装

    以 dpdk17.11.4 为例

    代码下载: wget http://fast.dpdk.org/rel/dpdk-17.11.4.tar.xz

    解压缩 tar -Jxvf dpdk-17.11.4.tar.xz

    cd ./dpdk-stable-17.11.4

    export RTE_SDK=`pwd`

    export RTE_TARGET=x86_64-native-linuxapp-gcc

    export EXTRA_CFLAGS=’-O2 -g’

    make install T=x86_64-native-linuxapp-gcc

    Pktgen-DPDK 安装

    以 pktgen-dpdk-3.4.9 为例

    代码下载: wget http://git.dpdk.org/apps/pktgen-dpdk/snapshot/pktgen-3.4.9.tar.gz

    解压缩 tar -zxvf pktgen-3.4.9.tar.gz

    cd ./pktgen-3.4.9

    配置大页个数
    echo 512 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

    安装 dpdk 工具
    yum install -y dpdk-tools

    启动 igb_uio 驱动
    modprobe uio
    insmod ./dpdk-17.11.4/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

    绑定 igb_uio ( 需要在控制台下执行 )
    .dpdk-devbind -b igb_uio 0000:00:03.0 (网卡pci可用 dpdk-devbind.py -s 查看)

    启动 Pktgen

    cd ./pktgen-3.4.9( 必须在此目录下执行 )

    ./app/x86_64-native-linuxapp-gcc/pktgen -c 0x3 -n 4 –proc-type auto –socket-mem 1024 — -T -P -m “[1:1].0”

    参数解释( 详细可用 -h 参数查看 )

    -c cpu 核的掩码信息 16进制0x3表示使用第一个和第二个核
    -n 通道个数
    –proc-type 进程类型 一般默认 auto
    –socket-mem pktgen使用的内存若有多个numa用 ‘,’ 隔开
    -T 彩色输出
    -P 所有端口开启混杂模式
    -m 网口0的首发队列配置

    程序内部命令( 详细可用 help 命令查看 )

    port 发包,收包是默认动作

    start

    port 停止发包

    设置源目的 mac 地址

    set src|dst mac

    设置源目的 ip 地址

    set [src|dst] ip

    设置发包类型

    set type ipv4|ipv6|vlan|arp

    设置协议类型
    set proto udp|tcp|icmp

    设置包大小

    set size

    设置最大发送速率的百分比(默认全速全速)