zoukankan      html  css  js  c++  java
  • pktgen-dpdk 实战

    官方手册:http://pktgen-dpdk.readthedocs.io/en/latest/getting_started.html

    过程

    1. 开机(重启)
    2. 把DPDK那一套流程走一遍(环境变量设置、设置userspace I/O态、挂载大页、绑定网卡)
    3. 按照官方手册上编译。pktgen就是基于dpdk开发的应用,所以只要能成功编译dpdk就可以编译pktgen。官方手册上一些依赖项可以跳过不看。

    我用到的指令:

    export RTE_SDK=/home/chang/dpdk
    export RTE_TARGET=x86_64-native-linuxapp-gcc
    
    # 编译DPDK
    cd $RTE_SDK
    make install T=x86_64-native-linuxapp-gcc
    
    # 设置userspace I/O态、挂载大页、绑定网卡
    cd /home/chang/dpdk/usertools
    ./dpdk-setup.py
    
    # 编译pktgen
    cd ~
    git clone git://dpdk.org/apps/pktgen-dpdk
    cd pktgen-dpdk
    make
    

    4.接下来要做的是修改配置文件。在/pktgen-dpdk/cfg

    # 备份
    cp default.cfg backup 
    vim default.cfg
    

    这是官方给我们的示例 default.cfg

    description = 'A Pktgen default simple configuration'
    
    # Setup configuration
    setup = {
        'exec': (
            'sudo',
            '-E'
            ),
    
    	'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'
    		),
    		
    	'opts': (
    		'-b igb_uio'
    		)
    	}
    
    # Run command and options
    run = {
        'exec': (
            'sudo',
            '-E'
            ),
    
        # Application name and use app_path to help locate the app
        'app_name': 'pktgen',
    
        # using (sdk) or (target) for specific variables
        # add (app_name) of the application
        # Each path is tested for the application
        'app_path': (
            './app/%(target)s/%(app_name)s',
            '%(sdk)s/%(target)s/app/%(app_name)s',
            ),
    
    	'dpdk': (
    		'-l 14,15-22',
    		'-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'
    		),
    		
    	'app': (
    		'-T',
    		'-P',
    		'--crc-strip',
    		'-m [15:16].0',
    		'-m [17:18].1',
    		'-m [19:20].2',
    		'-m [21:22].3'
    		),
    	
    	'misc': (
    		'-f', 'themes/black-yellow.theme'
    		)
    	}
    

    需要修改的地方有三处:

    1. 网卡设备的PCI号,可以用dpdk的usertools查看。
    2. DPDK EAL 的 command line arguments。改成与你系统对应的参数。参照DPDK的文档。
    3. pktgen 的 command line arguments,参照pktgen的文档。

    贴上我的版本作为参考:

    # 只贴有修改的部分
    # ……
    'devices': (
    		'02:01.0 02:02.0' # 只绑定了两个网卡到DPDK做实验
    		),
    # ……
    
    	'dpdk': (
    		'-l 0-3',
    		'-n 4',
    		'--proc-type auto',
    		'--log-level 7',
    		#'--socket-mem 2048,2048',
    		'--socket-mem 2048', # 只有一个socket
    		'--file-prefix pg',
    		),
    
    # .......
    
    	'app': (
    		'-T',
    		'-P',
    		'--crc-strip',
    		'-m [1].0', # 查看官方手册了解 -m 用法,用于提供lcore到port的映射
    		'-m [2].1'
    		#'-m [19:20].2', 
    		#'-m [21:22].3'
    		),
    
    

    修改完后即可执行。

    cd pktgen-dpdk
    ./tools/run.py -s default
    ./tools/run.py default
    

    执行情况

    (我终于第一次看到DPDK的超过120Mbit/s的转发速率到底是啥样子的了……)

    参考

    https://blog.csdn.net/jonlylinux/article/details/76474542

  • 相关阅读:
    Block编程
    自己写Web服务器(续)
    C# 2.0对现有语法的改进
    使用CDN
    优化网站设计(一):减少请求数
    MongoDB Shell的使用
    memcache 和appfabric
    go语言中几个有趣的特性以及对go的看法
    bpm流程平台
    Socket编程 (异步通讯) (Tcp,Udp)Part2
  • 原文地址:https://www.cnblogs.com/ZCplayground/p/9329133.html
Copyright © 2011-2022 走看看