導航:首頁 > 源碼編譯 > dpdk20編譯安裝

dpdk20編譯安裝

發布時間:2023-05-24 20:55:15

⑴ 只有一個網卡可以安裝dpdk嗎

dpdk需要至少兩塊網卡,eth0和eth1用於dpdk使用,eth2用於跟主機通信

⑵ DPDK編程指南(翻譯)( 三十一)

DPDK 需要一個構建系統用於編譯等操作。 本節介紹 DPDK 框架中使用的約束和機制。

這個框架有兩個使用場景:

以下提供了如何構建DPDK二進制文件。

安裝之後,將創建一個構建目錄結構。 每個構件目錄包含文件、庫和應用程序。

構建目錄特定於配置的體系結構、執行環境、工具鏈。 可以存在幾個構建目錄共享源碼,但是配置不一樣的情況。

例如,要使用配置模板 config/defconfig_x86_64-linuxapp 創建一個名為 my_sdk_build_dir 的構建目錄,我們使用如下命令

這會創建一個新的 new my_sdk_build_dir 目錄,之後,我們可以使用如下的命令進行編譯:

相當於:

目錄 my_sdk_build_dir 的內容是:

請參閱 Development Kit Root Makefile Help 獲取更詳細的信息。

由於DPDK本質上是一個開發工具包,所以最終用戶的第一個目標就搜此是使用這個SDK創建新的應用程序。 要編譯應用程序,用戶必須設置 RTE_SDK 和 RTE_TARGET 環境變數。

對於一個新的應用程序,用戶必須創建新的 Makefile 並包含指定的 .mk 文件,如 ${RTE_SDK}/mk/rte.vars.mk 和 ${RTE_SDK}/mk/rte.app.mk。 這部分內容描述請參考 Building Your Own Application .

根據 Makefile 所選定的目標(架構、機器、執行環境、工具鏈)或環境變數,應用程序和庫將使用適當的h頭文件進行編譯,並和適當的a庫鏈接。 這些文件位於 ${RTE_SDK}/arch-machine-execenv-toolchain,由 ${RTE_BIN_SDK} 內部引用。

為了編譯應用程序猛襪,用戶只需要調用make命令。編譯結果將置於 /path/to/my_app/build 目錄。

示例應用程序在example目錄中提供。

在DPDK中,Makefiles始終遵循相同的方案:

根據Makefile最後包含的 .mk 文件,Makefile將具有不同的角色。 注意到,並不能在同一個Makefile文件中同時編譯庫和應用程序。 因此,用戶必須創建兩個獨立的Makefile文件,最好是置於兩個不同的目錄中。

無論如何,rte.vars.mk 文件必須包含用戶Makefile。

這些 Makefiles 生成一個二進制應用程序。

創建一個 .a 庫。

app/dpdk-pmdinfogen

dpdk-pmdinfogen 掃描各種總所周知的符號名稱對象文件。這些目標文件由各種宏定義,用於導出關於pmd文件的硬體支持和使用的重要信息。 例如宏定義:

創建以下的符號:

將被 dpdk-pmdinfogen 掃描。使用這個虛擬系,可以從目標文件中導出其他相關位信息,並用於產生硬體支持描述, 然後 dpdk-pmdinfogen 按照以下格式編碼成 json 格式的字元串:

然後可以通過外部工具搜索這些字元串,以確定給定庫或應用程序的硬體支持。

一些變數可以用來配置構建系統的行為。在文件 Development Kit Root Makefile Help 及 External Application/Library Makefile Help 中有描述。

這避免了根據編譯器(icc或gcc)使用不同世知迅的情況。而且,這個變數可以從命令行覆蓋,這允許繞過標志用於測試目的。

⑶ 在虛擬機編譯運行dpvs

修改:PKG_CONFIG_PATH應該謹唯悄是*.pc所在目錄,祥渣如下設置即可。
export PKG_CONFIG_PATH=/root/dpvs/dpdk/dpdklib/lib/x86_64-linux-gnu/pkgconfig

修改:安裝libnuma-dev即可。apt install libnuma-dev

修改:src/Makefile 中加上 -Wno-address-of-packed-member
CFLAGS += -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wno-address-of-packed-member -mcmodel=medium

修改:src/Makefile 中加上 -Wno-packed-not-aligned
CFLAGS += -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wno-address-of-packed-member -Wno-packed-not-aligned -mcmodel=medium

修改:注山困釋掉下面兩行

修改:安裝 apt-get install libpopt-dev

修改:修改dpip的makefile,添加CFLAGS += $(DEFS) -Wno-address-of-packed-member

⑷ DPDK PKTGEN使用

PKTGEN有兩種形式,一種是直接由linux系統自帶的內核模塊進行發包(也就是略過協議棧,直接控制發包),另一種是依賴於dpdk的pktgen也就是本文主要講的,需要進行稍微復雜的編譯

modprobe pktgen
在/proc/net/pktgen看到以下文件:
kpktgend_0 kpktgend_1 kpktgend_2 kpktgend_3 pgctrl
其中kpktgen_*的多少是根據你的CPU的個數決定的,如我的機子的CPU數目為4,則有四個此文件皮宴。
通卜跡過命令cat /proc/net/pktgen/pgctrl可以型握並查看pktgen的版本等信息:

註:也有使用insmod的,和modprobe的區別是:比如需要安裝b模塊,但是b依賴於a模塊,因此使用insmod安裝就需要先安裝a模塊再安裝b模塊;如果使用modprobe的話,就可以直接安裝b模塊,默認將安裝a模塊
基本上設置完成後就可以進行測試,要查看是否有流量,可以使用ifstat,tcpmp工具查看,使用應用層的抓包工具是無法看到的

關鍵參數介紹

參數中,最復雜的是 -m <string>
-m <string> 配置埠到邏輯核的映射關系,使用類似BNF類語法.映射的邏輯核要與 [EAL options]中的邏輯核要一致。

運行命令 ./app/x86_64-native-linuxapp-gcc/pktgen -l 0-2 -n 3 -- -P -m "[1].0, [2].1"

官方的default.cfg內容如下:

需要修改的地方有三處:

修改完後即可執行。

圖中port1和port2已經有明顯區別,收包數相差100個包
用pkggen再發1000個包

⑸ DPDK實驗環境搭建

事情是是是是是這樣的!
我要用DPDK,但是我覺得搞兩台伺服器連埠發包,太麻煩,雖然實際上,可能並不麻煩。。。。但我就是想在單台伺服器上做。

docker+DPDK+OVS 這種方式來做測試。

然後呢就在網上找了個教程,和我的需求真的是一模一樣。。但是按照那個教程做的過程中啊,出了一些問題。記錄一下~

教程鏈接: https://blog.csdn.net/me_blue/article/details/78589592
其中安裝部分按照教程里的做就可以了。

安裝完dpdk和ovs之後創建網橋以及下發流表用的腳本可以在我的github上獲取。 https://github.com/LinanJ/DPDK-OVS-

在這個實驗中,把pktgen和testpmd放在兩個容器中,然後進行測試。創建容器都沒問題,問題是在啟動pktgen的時候,總是報內存的錯誤,要麼是內存沒有,要麼是內存不足!!!

重點來了,朋友們,教程里的socket_mem部分是兩個1024對吧。那是因為人家有連個NUMA節點,你有么???

我是沒有的。。所以,就會報錯,說是socket1上沒有內存。。顯然沒有。所以啊,如果你只有一個numa節點,那麼你在pktgen上和testpmd上的命令應該是這樣的:

dpdk掛載的就是紅線框的這兩條

這樣就可以了。

⑹ 怎麼使用dpdk的steup.sh安裝

怎旁擾么使用dpdk的steup.sh安裝
setup.exe是安裝程序,用於安裝許多程序。屬Setup Executable(安裝可執行文件)。
一般正規的軟體或Windows系統都是通過旦明Setup.exe來執行安裝的。
也有偽裝成正規程序的Setup.exe的病毒。
也有用Installation.exe執行應用程序或驅動程序安裝的。
Windows系統真正setup.exe的位置在C:\WINDOWS\system32路徑下。
如果setup.exe沒有在上面描述的位置,那麼請使用修復工具修復,由於部分殺毒軟體進行查殺後未對setup.exe的進行系統修復,所以會出現setup.exe錯誤情運遲旦況。
安裝了殺毒軟體就可以監控到的偽裝成正常程序的Setup.exe,並加以查殺,沒提示一般說明是正常程序。

⑺ dpdk-pktgen簡單使用

這一步之前,DPDK環境已塔好,pktgen已編譯成功,網卡已綁定成功等一系列初始化工作已完成。

命令行參數:-P 和 -m 這兩個參數是必要的!

./app/build/pktgen [EAL options] -- \

                            [-h] [-P] [-G] [-T] [-f cmd_file] \

                            [-l log_file] [-s P:PCAP_file] [-m ]

  -s P:  file    PCAP packet stream file, 'P' is the port number  -f filename  Command file (.pkt) to execute or a Lua script (.lua) file 

-l          filename  Write log to filename 寫日誌

-P         Enable PROMISCUOUS mode on all ports 開啟混雜模式,必須要的參數 

-g          address  Optional IP address and port number default is (localhost:0x5606)

If -g is used that enable socket support as a server application

-G          Enable socket support using default server values localhost:0x5606 

-N          Enable NUMA support 

-T          Enable the color output 輸出顏色 

--crc-strip  Strip CRC on all ports

-h Display the help information

參數中,最復雜的是 -m <string>

-m  <string> 配置埠到邏輯核的映射關系,使用類似BNF類語法.映射的邏輯核要與 [EAL options]中的邏輯核要一致。

如下,也可以用 {} 來代替 [].

[EAL options]里的參數與DPDK基本一樣,主要是配置邏輯核掩碼和內存通道數。這里不詳解。以上是命令行參數,下面介紹運漏姿行時參數。

詳細可參考官網中的資料: pktgen運行時參數

Pktgen:/> help #有幫助提示

這里只介紹最常用的命嫌銀令,最常用的配置就是MAC,IPv4|IPv6|ARP,TCP|UDP|ICMP,SPORT|DPORT,PROTO,SEQ等

這些配置可以用 set命令來完成。

除了set命令,常用的還有顯示主頁面,page 0  | page main

載入和保存 .lua腳本的配置信息  load | save <path-to-file>

啟動/結束發包:start | stop <portlist>.

其實不用刻意去記命令怎麼使用,按兩次Tab鍵會有命令使用的提示。我現在用的是版本是3.1.2,最新版已到了3.5.0,所以一些配置命令會有些不一樣,比如配置ip時,<portlist>的順序就不一樣。以上配置是基於最新版來的,如果在實際中發現按上面的命令不對,請先確認是否為最新版.其實只要大致記住一些命令就行,實際使用時可以按兩次Tab鍵就會有提示,也可以把配置保存成.lua文件,下一次運行時候,直接載入就不用再配置了。由於對lua腳本不太熟,關於lua腳本的使用,等使用熟悉了再來深入討論一些功能。最後,放一張運行時候的圖來壓壓驚。。。芹搜宴

運行命令:./app/app/x86_64-native-linuxapp-gcc/pktgen -l 1-4 -n 4 -- -P -T -m "[1:2].0,[3:4].1"

祝大家生活愉快。

⑻ 編譯和運行DPDK示常式序

DPDK(Data Plane Development Kit)是數據平面開發工具包,由用於加速在各種CPU架構上運行的數據包處理的庫組成。

在Linux上部署DPDK的方法請參考:
在Linux(CentOS)上部署DPDK------命令行方式

該章節的內容參照自官網的 DPDK build sample apps

當DPDK的target環境創建好後(例如 x86_64-native-linuxapp-gcc ), x86_64-native-linuxapp-gcc 目錄中會包含編譯應用程序的庫和頭文件。

在編譯DPDK應用程序之前,首先需要指定兩個環境變數:

在DPDK的 examples 路徑下面有許多示例應用,這里以其中的 helloworld 為例進行編譯:

DPDK的 examples 路徑下面的應用均可以通過這種方式編譯,也可以直接在 examples 路徑下面運行 make ,將這些應用全都編譯好。

在運行應用程序之前,需要確保:

DPDK應用程序與DPDK target環境的環境抽象層EAL(Environmental Abstraction Layer )庫相關聯,該庫提供了一些通用於每個DPDK應用程序的選項。

EAL的詳細配置請參照: DPDK EAL參數

可按照下列參數運行 ./helloworld :

其中 -l 命令指定cpu cores list是EAL必須的配置;若沒有指定 --socket-mem ,則默認會按照預留的hugepages size來分配。

⑼ dpdk源碼中未定義的宏是如何在編譯時期生成的

它不可能「生成」,磨輪還是需要你指定的,具體對於這些宏如虛肢何指定 要看它編譯命令,但是一般編譯器可以通過編譯環境、差游世命令行參數等方式來定義宏

閱讀全文

與dpdk20編譯安裝相關的資料

熱點內容
PHP商城源代碼csdn 瀏覽:632
怎麼把電腦里文件夾挪出來 瀏覽:693
java流程處理 瀏覽:683
ftp創建本地文件夾 瀏覽:659
腰椎第一節壓縮 瀏覽:738
xp去掉加密屬性 瀏覽:117
2345怎麼壓縮文件 瀏覽:982
迷你奪寶新演算法 瀏覽:407
伺服器如何防止木馬控制 瀏覽:715
壓縮空氣用電磁閥 瀏覽:742
微信為什麼不能設置加密認證 瀏覽:672
鄧倫參加密室逃脫視頻 瀏覽:391
音頻壓縮編碼標准 瀏覽:300
常提到的app是表示什麼 瀏覽:261
天津程序員傳銷 瀏覽:349
下班之後的程序員 瀏覽:73
檢測支持ssl加密演算法 瀏覽:344
衢州發布新聞什麼APP 瀏覽:85
中國移動長沙dns伺服器地址 瀏覽:252
wifi密碼加密了怎麼破解嗎 瀏覽:599