如何在DPDK盒子上使用TRex
使用步驟
1. 接線
使用HDMI線連接盒子與顯示器,將其中一個(gè)網(wǎng)絡(luò)端口(下文以ETH0為例)接入有線網(wǎng),并將電源插入電源接口,將USB外接鍵盤插入盒子的USB接口。DPDK盒子及接口示意圖如圖1所示。
2. 啟動(dòng)登錄
接通電源后,待盒子里的系統(tǒng)啟動(dòng)完畢,輸入用戶名和密碼:
用戶名: test 密碼:tester
3. 登陸后獲取根用戶權(quán)限: sudo bash,這里會(huì)提示需要輸入密碼,密碼同上:tester
4. 安裝igb網(wǎng)卡驅(qū)動(dòng)
a. 使用其他電腦設(shè)備將igb 驅(qū)動(dòng)下載保存至USB存儲(chǔ)設(shè)備,并將其拷貝至盒子[1]。
進(jìn)入頁面后下載對(duì)應(yīng)版本的壓縮包文件。
b. 安裝:
tar –xvzf igb-xxxx.tar.gz cd /igb-xxxx/src make install5. 將接入有線網(wǎng)的端口綁到igb驅(qū)動(dòng)上
a. 查看端口狀態(tài)信息,如圖2所示:
cd dpdk ./usertools/dpdk-devbind.py -s圖2 端口狀態(tài)信息(綁定igb_uio驅(qū)動(dòng))
b. 綁定igb驅(qū)動(dòng):
./usertools/dpdk-devbind.py -b igb 02:00.0從圖3可以看到,02:00.0口被綁到了igb上,接口名為eth0
圖3 端口狀態(tài)信息(綁定igb驅(qū)動(dòng))
6.為eth0設(shè)置動(dòng)態(tài)分配IP地址:
dhclient eth07.設(shè)置網(wǎng)絡(luò)代理
export http_proxy=xxx export https_proxy=xxx8.從Github上下載 TRex
git clone https : //github . com/cisco-system-traffic-generator/trex-core . git9.安裝TRex必需的庫:
yum install zlib-devel(如果提示由于網(wǎng)絡(luò)問題yum install 失敗, 編輯/etc/yum.conf, 加上一行設(shè)置代理: proxy= xxx)
10.不論實(shí)際使用1個(gè)還是多個(gè)端口,TRex需要至少兩個(gè)端口,因此需要將綁到igb驅(qū)動(dòng)的eth0綁回到原來的igb_uio(內(nèi)核空間的驅(qū)動(dòng))上:
cd dpdk ./usertools/dpdk-devbind.py -b igb_uio 02:00.011.編輯TRex的配置文件:
vi /etc/trex_cfg.yaml(注意yaml文件的縮進(jìn)格式)在/trex-core/scripts/cfg下有一些配置文件示例可供參考。
也可使用TRex中的腳本dpdk_setup_ports.py來創(chuàng)建一個(gè)簡單的文件,內(nèi)容如圖4所示。
圖4 配置文件示例
12.配置并編譯TRex
cd /trex-core/linux_dpdk ./b configure ./b build13.啟動(dòng) TRex 服務(wù)器端,結(jié)果如圖5所示:
cd /trex-core/scripts ./t-rex-64 -i -c 2(盒子的兩個(gè)端口都需要有連接,不然會(huì)報(bào)錯(cuò))圖5 啟動(dòng)TRex服務(wù)器端結(jié)果示意圖
14.啟動(dòng)TRex客戶端
cd /trex-core/scripts ./trex-console(由于當(dāng)前終端被服務(wù)器端占有,切換新的終端用來啟動(dòng)TRex客戶端:CTRL+ALT+F2,CTRL+ALT+F1可切換回TRex服務(wù)器端)
- trex> help(幫助命令,顯示所支持的命令,如:發(fā)包命令start,停止發(fā)包stop,圖形化顯示命令tui)
- trex> start -h (對(duì)于每條命令,加上-h或--help可以顯示具體的幫助信息)
TRex客戶端發(fā)包示例命令:
trex> start -f stl/bench.py -t size=64,vm=cached --port 0 -m 100%(如果將ETH0和ETH1用網(wǎng)線互連,則該命令可實(shí)現(xiàn)從port 0發(fā)送64 bytes長度的數(shù)據(jù)包到port 1,結(jié)果如圖6和圖7所示。)
其中,-f表示加載的發(fā)包腳本文件,這里指定了文件stl/bench.py;
-t表示發(fā)包腳本bench.py可傳遞的參數(shù),這里指定了數(shù)據(jù)包長度size=64,Virtual OS模式vm=cached;
-p或 --port表示發(fā)包端口,這里指定從0號(hào)端口發(fā)包;
-m 或 --multiplier表示發(fā)包速率,這里指定用線速的100%發(fā)包。
圖6 TRex啟動(dòng)客戶端后客戶端結(jié)果示意圖
圖7 TRex啟動(dòng)客戶端后服務(wù)器端結(jié)果示意圖
15.編輯自己的發(fā)包腳本
步驟14指定發(fā)包腳本為bench.py,而用戶可以參照示例根據(jù)需求編輯自己的發(fā)包腳本。scripts/stl目錄下包含多種發(fā)包腳本示例
接下來,以stl/udp_1pkt_simple.py為例稍作介紹。
其中register()和get_streams()兩個(gè)函數(shù)是必須定義的。
STLPktBuilder()是構(gòu)造數(shù)據(jù)包的函數(shù),會(huì)構(gòu)造出pkt數(shù)據(jù)包,并以mode模式進(jìn)行發(fā)包。Trex采用scapy構(gòu)造數(shù)據(jù)包,因此數(shù)據(jù)包pkt的構(gòu)造與scapy一致,通過layer的疊加從而達(dá)到構(gòu)造數(shù)據(jù)包的目的。
STLTXCont()是連續(xù)發(fā)包模式,可攜帶參數(shù)指定發(fā)包速率,默認(rèn)是10 pps。此外,還有STLTXSingleBurst()和STLTXMultiBurst()兩種模式。
注::
[1] 從外接USB設(shè)備拷貝文件:
- 插入U(xiǎn)SB設(shè)備后,可以使用 dmesg 命令找到設(shè)備的路徑。
- 以/dev/sdb1 為例,掛載該設(shè)備: mount /dev/sdb1 /mnt
- 加載后用常規(guī)的命令將文件拷貝至任意路徑 (cp, mv等)
- 拷貝完畢后,取消USB設(shè)備掛載并拔除: umount /mnt
[2] TRex 官方手冊(cè):?https : //trex-tgn . cisco . com/trex/doc/trex_manual . html#
[3] 如何解決 hugepage相關(guān)報(bào)錯(cuò):
在TRex的dpdk-setup_ports.py 腳本中,有hugepage配置函數(shù)config_hugepages()
由于盒子本身的空間不夠會(huì)導(dǎo)致hugepage配置失敗,該函數(shù)會(huì)報(bào)錯(cuò)。 可以將 “wanted_count = 2048” 中的數(shù)字改小, 如:“wanted_count = 512”, 從而使hugepage配置成功。
原文鏈接:https://blog.csdn.net/weixin_37097605/article/details/101514437
更多DPDK學(xué)習(xí)資料有需要的可以自行添加進(jìn)入學(xué)習(xí)交流君 羊?793599096?免費(fèi)獲取,或自行報(bào)名學(xué)習(xí),免費(fèi)訂閱,永久學(xué)習(xí),關(guān)注我持續(xù)更新哦!!!
學(xué)習(xí)地址:http://ke.qq.com/course/5066203?flowToken=1043717
總結(jié)
以上是生活随笔為你收集整理的如何在DPDK盒子上使用TRex的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《数据库系统概论》| 第四章 数据库安全
- 下一篇: google资源