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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM