Pktgen入门

来源:互联网 发布:linux epoll wait 编辑:程序博客网 时间:2024/06/06 04:20
Pktgen入门
  这一节介绍如何编译运行pktgen, 运行环境是ubuntu, 需要检查系统是否支持大页内存
  本人使用的时centos 7
  总结一点: 其实只要能编译运行dpdk后,就能直接编译运行pktgen了。pktgen本来就是基于dpdk开发的
  就是一个dpdk的应用程序,把它想成dpdk的helloworld就行
 
系统要求
    请参考 DPDK入门指南 的 系统要求
    其实也没啥要求的。搞一台台式机,随便安装个linux发行版,centos,unbutu,fedora都行

设置大页内存
    内核2.6.33以上
    make menuconfig检查一下HUGETLBFS内核选项保证打开
    $ grep -i huge /boot/config-2.6.35-24-generic
    CONFIG_HUGETLBFS=y
    CONFIG_HUGETLB_PAGE=y
    具体参考dpdk的大页内存使用
    
    在系统启动时,申请大页内存
    $ sudo vi /etc/sysctl.conf
    Add to the bottom of the file:
    vm.nr_hugepages=256
    
    在系统启动时,挂载大页内存
    $ sudo vi /etc/fstab
    Add to the bottom of the file:
    huge /mnt/huge hugetlbfs defaults 0 0

    $ sudo mkdir /mnt/huge
    $ sudo chmod 777 /mnt/huge

BIOS设置
    打开HPET High Precision Event Timer
    打开hyper-threading
    具体参考dpdk的 enabling additional BIOS functionality
    其实都是附加功能,本人直接跳过了
    
终端显示
    pktgen显示需要132列,42行
    pktgen使用VT100控制代码进行显示,必须支持
    本人安装了centos,都支持,跳过
    
下载源码
    去官网下载dpdk的源码和pktgen的源码
    git clone http://dpdk.org/git/dpdk
    git clone http://dpdk.org/git/apps/pktgen-dpdk
    安装点工具
    $ sudo apt-get install linux-headers-3.5.0-32-generic
    $ sudo apt-get install libpcap-dev
    本人的centos都有,跳过

编译DPDK和PKTGEN

    设置环境变量
    export RTE_SDK=<DPDKInstallDir>   DPDK的解压目录
    export RTE_TARGET=x86_64-native-linuxapp-gcc  编译后存放的目录
    
    编译DPDK
    $ cd $RTE_SDK
    $ make install T=x86_64-native-linuxapp-gcc
    T=xxx-yyy-zzz都有特殊含义的,此处只了解,作为回忆,具体去看 DPDK入门指南吧
    
    编译Pktgen
    $ cd <PktgenInstallDir>
    $ make
    
设置环境
    设置环境变量
    export RTE_SDK=<DPDKInstallDir>
    export RTE_TARGET=x86_64-native-linuxapp-gcc
    
    在PktgenInstallDir/tools下面有个run.py的脚本,其实下面还有个run.sh,都可以的
    MD看到py就想起了piyan,估计intel那家伙对py也情有独钟......
    可以用来配置pktgen的运行环境,包括设置大页内存,加载驱动,绑定网卡为igb_uio
    $ cd <PktgenInstallDir>/tools
    $ ./run.py -s default  # setup system using the cfg/default.cfg file
    注意设置 cfg/default.cfg 为你的系统的配置
    
    run.py还可以用来运行pktgen, 把 -s (-setup)删了
    $ cd <PktgenInstallDir>/tools
    $ run.py default
    
    下面是官网给出的default.cfg

# Setup configuration
setup = {
 'devices': [
     '81:00.0 81:00.1 81:00.2 81:00.3',
     '85:00.0 85:00.1 85:00.2 85:00.3',
     '83:00.0'
     ],

 'opts': [
     '-b igb_uio'
     ]
 }

# Run command and options
run = {
 'dpdk': [
     '-l 1,1-5,10-13',
     '-n 4',
     '--proc-type auto',
     '--log-level 7',
     '--socket-mem 2048,2048',
     '--file-prefix pg'
     ],

 'blacklist': [
     #'-b 81:00.0 -b 81:00.1 -b 81:00.2 -b 81:00.3',
     #'-b 85:00.0 -b 85:00.1 -b 85:00.2 -b 85:00.3',
     '-b 81:00.0 -b 81:00.1',
     '-b 85:00.0 -b 85:00.1',
     '-b 83:00.0'
     ],

 'pktgen': [
     '-T',
     '-P',
     '--crc-strip',
     '-m [2:3].0',
     '-m [4:5].1',
     '-m [10:11].2',
     '-m [12:13].3',
     ],

 'misc': [
     '-f themes/black-yellow.theme'
    ]
}

我们来修改一下,符合自己系统的
# 设备应该是网卡设备,这些号是PCIE ID 号
# 去dpdk的目录 下面 ./usertools/dpdk-devbind.py -s
#0000:02:05.0 '82545EM Gigabit Ethernet Controller (Copper)' unused=igb_uio
#0000:02:06.0 '82545EM Gigabit Ethernet Controller (Copper)' unused=igb_uio
#0000:02:07.0 '82545EM Gigabit Ethernet Controller (Copper)' unused=igb_uio
#0000:02:08.0 '82545EM Gigabit Ethernet Controller (Copper)' unused=igb_uio
# Setup configuration
setup = {
 'devices': [
     '-b 0000:02:05.0 -b 0000:02:06.0',
     '-b 0000:02:07.0',
     '-b 0000:02:08.0'
     ],

 'opts': [
     '-b igb_uio'
     ]
 }

# 其实就是设置DPDK应用程序的环境, 关键是下面的,设置跟pktgen相关的运行参数
 
# Run command and options
run = {
 'dpdk': [
     #-l 0-3 下标从0开始
     '-c f',                  
     #内存通道
     '-n 4',                  
     '--proc-type auto',
     '--log-level 7',
     #'--socket-mem 512,512',
     '--socket-mem 512',      #问题1: 这样就可以了,不知道为什么,而且使用 -m 1024也是可以的,
                               虚拟机里面我的CPU是两个啊,因该算的是实际卡槽的cpu, 并不是虚拟的物理核心,核心数,或者逻辑核心
     '--file-prefix rte',
     '--huge-dir=/mnt/huge'   #问题2: 建议把这加上,反正我的系统不加,有时会跑到/dev/hugepages下面去了,目前没去找为什么
     ],

 'blacklist': [
     #黑名单,不加载
     #'-b 0000:02:05.0 -b 0000:02:06.0',
     #'-b 0000:02:07.0',
     #'-b 0000:02:08.0'
     ],

 'pktgen': [
     '-T',
     '-P',
     #或者用-p f 掩码
     '--crc-strip',
     '-m [1].0',
     '-m [2].1',
     '-m [3].2',
     '-m [4].3',
     ],

 'misc': [
     '-f themes/black-yellow.theme'
    ]
}    
    
这样就能跑起来了
/ Ports 0-3 of 4   <Main Page>  Copyright (c) <2010-2016>, Intel Corporation
  Flags:Port      :   P--------------:0   P--------------:1   P--------------:2   P--------------:3
Link State        :        <UP-1000-FD>        <UP-1000-FD>        <UP-1000-FD>        <UP-1000-FD>     ----TotalRate----
Pkts/s Max/Rx     :               56/56               56/56               56/56               55/55               223/223
       Max/Tx     :                 0/0                 0/0                 0/0                 0/0                   0/0
MBits/s Rx/Tx     :                 0/0                 0/0                 0/0                 0/0                   0/0
Broadcast         :                   0                   0                   0                   0
Multicast         :                  61                  58                  51                   0
  64 Bytes        :                  28                  28                  24                   0
  65-127          :                  42                  40                  39                   0
  128-255         :                  14                  14                  14                   0
  256-511         :                  18                  17                  15                   0
  512-1023        :                   0                   0                   0                   0
  1024-1518       :                   2                   2                   2                   0
Runts/Jumbos      :                 0/0                 0/0                 0/0                 0/0
Errors Rx/Tx      :                 0/0                 0/0                 0/0                 0/0
Total Rx Pkts     :                  56                  56                  56                  55
      Tx Pkts     :                   0                   0                   0                   0
      Rx MBs      :                   0                   0                   0                   0
      Tx MBs      :                   0                   0                   0                   0
ARP/ICMP Pkts     :                28/0                28/0                24/0                 0/0
                  :
Pattern Type      :             abcd...             abcd...             abcd...             abcd...
Tx Count/% Rate   :       Forever /100%       Forever /100%       Forever /100%       Forever /100%
PktSize/Tx Burst  :           64 /   32           64 /   32           64 /   32           64 /   32
Src/Dest Port     :         1234 / 5678         1234 / 5678         1234 / 5678         1234 / 5678
Pkt Type:VLAN ID  :     IPv4 / TCP:0001     IPv4 / TCP:0001     IPv4 / TCP:0001     IPv4 / TCP:0001
Dst  IP Address   :         192.168.1.1         192.168.0.1         192.168.3.1         192.168.2.1
Src  IP Address   :      192.168.0.1/24      192.168.1.1/24      192.168.2.1/24      192.168.3.1/24
Dst MAC Address   :   00:0c:29:a1:0a:5f   00:0c:29:a1:0a:55   00:0c:29:a1:0a:73   00:0c:29:a1:0a:69
Src MAC Address   :   00:0c:29:a1:0a:55   00:0c:29:a1:0a:5f   00:0c:29:a1:0a:69   00:0c:29:a1:0a:73
VendID/PCI Addr   :   8086:100f/02:05.0   8086:100f/02:06.0   8086:100f/02:07.0   8086:100f/02:08.0
Pktgen:/> Ver: 3.3.3 (DPDK 17.02.1)  Powered by Intel? DPDK ------------------
Pktgen:/>
Pktgen:/> 

原创粉丝点击