DPDK開發環境搭建(學會了步驟適合各版本)


一、版本的選擇

首先要說明的是,對於生產來說DPDK版本不是越高越好,如何選擇合適的版本?

1、要選擇長期支持的版本LTS(Long Term Support)

clipboard

2、根據當前開發的系統環境選擇

可以在以下文檔里從高至低查看不同版本的System Requirements章節,它對kernel、glibc等限制有詳細說明。

http://core.dpdk.org/doc/archives/

我開發是在CentOS7.3 64位,最后選用dpdk-18.11版本。如果你的軟件需要同時在不同系統運行,選對版本后續能省不少事。

image

二、虛擬機配置要求

我使用vmware虛擬機,調研了幾款虛擬機發現在windows下只能vmware能模擬出多隊列的網卡,如果有發現其他虛擬機能模擬請給我留言。

1、核心:我配置4個。至少有2個以上核心,方便后續程序做線程孤立和綁定。

2、內存:我一般配置3G,為了配置hugepage,多分點比較好。可根據實際情況配置。

3、網卡:需要支持dpdk,我選擇vmnet3,它支持多隊列。端口至少2個以上,且要求驅動為dpdk支持的,

三、dpdk的安裝

1、下載源碼

http://fast.dpdk.org/rel/dpdk-18.11.7.tar.xz

2、設置環境變量(18.11版本不需要)

舊版本安裝時需要在dpdk根目錄執行t以下命令,如果重新登錄需要再執行一次,18.11版本不需要,安裝腳本里寫好了,這里只是記錄以下。

64位系統:

export RTE_SDK=`pwd`

export RTE_TARGET=x86_64-native-linuxapp-gcc

32位系統:

export RTE_SDK=`pwd` 

export RTE_TARGET=i686-default-linuxapp-gcc

3、利用setup.sh進行配置

cd dpdk-stable-18.11.7/usertools

source ./dpdk-setup.sh

1)編譯dpdk

clipboard

編譯完提示以下信息:查資料顯示沒有指定安裝路徑,我們只是編譯而不是install就不用理會。

clipboard

2)插入IGB UIO模塊

clipboard

3)設置大頁內存

clipboard

默認設置的是2M的大頁內存,這里輸入1024,表示申請2G的大頁內存。由於虛擬機里只有一個node,這里只需要設置node0

clipboard

查看配置的大頁內存

clipboard

clipboard

4)查看網卡/加解密設備信息,這里我們只有網卡信息

clipboard

clipboard

若報以下錯誤,是因為沒有安裝lspci導致,安裝解決:yum install pciutils -y

Traceback (mostrecent call last):
  File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 576, in <module>
    main()
  File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 572, in main
    get_nic_details()
  File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 248, inget_nic_details
    dev_lines =check_output(["lspci", "-Dvmmn"]).splitlines()
  File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 125, in check_output
    stderr=stderr).communicate()[0]
  File "/usr/lib64/python2.7/             subprocess.py", line 711, in__init__
    errread, errwrite)
  File"/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2]No such file or directory

5)綁定設備

clipboard

clipboard

輸入pci的地址, 輸入0000冒號后面的幾位輸入就行了,這里將03:00.0和0b:00.0綁定。但我遇到過需要完整輸入才能綁定的情況,如果綁定失敗就都試試。

注:綁定的時候可以能有個錯誤的提示如下;

922192514909

因為是你當前的對應的網卡端口處於up狀態,所以你要執行ifconfig xxx down命令將其關閉,關閉后再重新執行一下上面的綁定操作。注意為了跑測試用例至少要綁定兩個端口

再次查看,發現已經綁定到dpdk驅動了。

clipboard

6)運行testpmd測試程序

clipboard

輸入0xf代表程序運行在0~3核心

clipboard

如果提示以下錯誤,是因為大頁內存分配不夠,嘗試分配多一些再試,若還不行重啟虛擬機再試試。

testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=171456, size=2176, socket=0 testpmd: preferred mempool ops selected: ring_mp_mc EAL: Error - exiting with code: 1 Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate memory

start開始抓包, 用發包工具對網卡發包(我在windows下使用xcap對虛網卡發包)

clipboard

stop停止抓包,並查看收發情況

clipboard

這說明dpdk收到了1000個包,同時轉發出去了1000個包,已正常運行。


免責聲明!

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



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