DPDK安裝配置(附腳本)及示例程序運(yùn)行

去年曾經(jīng)寫過(guò)一篇在虛擬機(jī)里配置DPDK的文章,當(dāng)時(shí)DPDK還沒有支持ubuntu16.04,而且當(dāng)時(shí)還不會(huì)shell編程,總體來(lái)說(shuō)還是比較幼稚的柑司。今天整理了一下寫了這篇ubuntu16.04實(shí)體機(jī)下的DPDK配置博文。

DPDK是因特爾推出的數(shù)據(jù)平面開發(fā)組件锅劝,主要是提供了一個(gè)高效的用戶態(tài)網(wǎng)卡驅(qū)動(dòng)攒驰,改以往網(wǎng)卡驅(qū)動(dòng)采用的中斷方式,為綁定線程輪詢網(wǎng)卡的高效模式故爵,可以大幅提高吞吐率玻粪。DPDK最新版的壓縮包可以去官網(wǎng)下載,http://dpdk.org/download. 我這里用的環(huán)境是ubuntu16.04,DPDK版本是16.11.1

在安裝DPDK之前我們需要安裝另一個(gè)linux下另一個(gè)跟網(wǎng)絡(luò)數(shù)據(jù)包相關(guān)的函數(shù)庫(kù)——libpcap奶段,命令行抓包軟件tcpdump也是基于這個(gè)庫(kù)實(shí)現(xiàn)的。

1. 安裝libpcap

去官網(wǎng) http://www.tcpdump.org/#latest-releases 下載libpcap的壓縮包剥纷。我下的是libpcap-1.8.1.
先安裝依賴庫(kù)m4痹籍、bison、flex:

sudo apt-get install m4 bison flex

在特權(quán)用戶下晦鞋,安裝libpcap:

cd libpcap-1.8.1
./configure
make
make install

安裝成功蹲缠,但是后面安裝DPDK的時(shí)候卻提示找不到libpcap.so.1,因?yàn)閘ibpcap.so.1默認(rèn)安裝到了/usr/local/lib下悠垛,我們做一個(gè)符號(hào)鏈接到/usr/lib/下即可线定。

sudo ln -s /usr/local/lib/libpcap.so.1 /usr/lib/libpcap.so.1

2. 安裝DPDK

將壓縮包解壓縮,按照下面的步驟安裝:

注意确买,以下操作中有些涉及特權(quán)級(jí)的斤讥,如果operation denied,加上sudo即可

2.1. 配置并編譯DPDK,架構(gòu)為64位x86linux系統(tǒng)湾趾,gcc編譯
make config T=x86_64-native-linuxapp-gcc
sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config
make
編譯.png

編譯過(guò)程如上圖所示芭商,其中如果有錯(cuò),多數(shù)是由于依賴項(xiàng)搀缠,安裝上依賴項(xiàng)就可以了铛楣。

2.2. 預(yù)配置大頁(yè)存儲(chǔ)

掛載了一個(gè)NUMA節(jié)點(diǎn)node0,最后一句命令的意思是在node0上預(yù)留了64個(gè)2MB的大頁(yè)艺普,即64*2048kB=128MB的內(nèi)存

mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo 64 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

查看網(wǎng)卡信息

ifconfig
網(wǎng)卡信息.png

從圖中看出簸州,兩個(gè)網(wǎng)卡分別為enp3s0和wlp2s0。

2.3. 加載模塊和綁定網(wǎng)卡
ifconfig enp3s0 down//先把有線網(wǎng)卡關(guān)掉歧譬,不然下一步會(huì)報(bào)錯(cuò)的岸浑。
modprobe uio  
insmod build/kmod/igb_uio.ko//插入uio和igb_uio模塊

這一步有可能會(huì)報(bào)錯(cuò),不能插入該模塊瑰步,網(wǎng)上查原因是因?yàn)閘inux 4.3.X以后的內(nèi)核機(jī)制造成的助琐,需要重啟電腦進(jìn)入bios,關(guān)閉secure boot即可面氓。

python tools/dpdk-devbind.py --bind=igb_uio enp3s0//綁定igb_uio驅(qū)動(dòng)到enp3s0

使用dpdk自帶腳本查看狀態(tài)

python tools/dpdk-devbind.py --status  
網(wǎng)卡綁定.png

從圖中可以看到0000:03:00.0網(wǎng)卡綁定的是igb_uio驅(qū)動(dòng)兵钮,網(wǎng)卡綁定成功。

由于每次運(yùn)行DPDK都需要分配大頁(yè)和綁定網(wǎng)卡驅(qū)動(dòng)舌界,很麻煩掘譬,可以編寫一個(gè)shell腳本,每次運(yùn)行直接配置完成呻拌。
腳本內(nèi)容如下:

#!/bin/bash
DEVICE="enp3s0"
DRIVER="igb_uio"

while getopts ":hd:r:" optname
do
  case "$optname" in
    "h")
      echo "   `basename ${0}`:usage:[-d device_name] [-r driver_name]"
      echo "   where device_name can be one in: {enp3s0,wlp2s0},driver_name can be one in: {igb_uio,rte_kni}"
      exit 1
      ;;
    "d")
      DEVICE=$OPTARG
      ;;
    "r")
      DRIVER=$OPTARG
      ;;
    *)
    # Should not occur
      echo "Unknown error while processing options"
      ;;
  esac
done

mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo 64 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
ifconfig $DEVICE down
modprobe uio
insmod build/kmod/$DRIVER.ko
./tools/dpdk-devbind.py --bind=$DRIVER $DEVICE

另外葱轩,再寫一個(gè)類似的反向的腳本,如果想要將網(wǎng)卡恢復(fù)正常驅(qū)動(dòng)使用的時(shí)候可以恢復(fù):

#!/bin/bash

DEVICE="0000:03:00.0"
DRIVER="alx"

while getopts ":hd:r:" optname
do
  case "$optname" in
    "h")
      echo "   `basename ${0}`:usage:[-d device_name] [-r driver_name]"
      echo "   where device_name can be one in: {0000:02:00.0,0000:03:00.0},driver_name can be one in: {alx,iwlwifi}"
      exit 1
      ;;
    "d")
      DEVICE=$OPTARG
      ;;
    "r")
      DRIVER=$OPTARG
      ;;
    *)
    # Should not occur
      echo "Unknown error while processing options"
      ;;
  esac
done


./tools/dpdk-devbind.py --bind=$DRIVER $DEVICE

上面的網(wǎng)卡分別是enp3s0和wlp2s0,它們自身的驅(qū)動(dòng)分別是alx和iwlwifi靴拱,根據(jù)實(shí)際修改垃喊。另外DPDK有些網(wǎng)卡是不支持的,需要去官網(wǎng)查看哪些網(wǎng)卡不支持袜炕。

運(yùn)行如下圖:

配置.png
恢復(fù).png

3. 運(yùn)行示例程序:

注意本谜,這里演示用的是pcap的vdev,所以不需要綁定網(wǎng)卡偎窘,不然會(huì)報(bào)錯(cuò)找不到設(shè)備乌助。當(dāng)然vdev也可以按照官方教程里給的跑dpdk的vdev

./build/app/testpmd -c 7 -n 3 --vdev=eth_pcap0,iface=enp3s0 --vdev=eth_pcap1,iface=enp3s0 -- -i --nb-cores=2 --nb-ports=2 --total-num-mbufs=2048

//參數(shù)分別為-c <核數(shù),二進(jìn)制表示,7即111陌知,三個(gè)核> -n<存儲(chǔ)通道數(shù)> --vdev<虛擬設(shè)備名他托,自己給發(fā)包網(wǎng)卡起的名字>,iface<真實(shí)設(shè)備id> -- 端口數(shù),buff數(shù)

運(yùn)行截圖:

示例程序運(yùn)行1.png

在testpmd輸入start開始轉(zhuǎn)發(fā)流

示例程序運(yùn)行2.png

輸入stop仆葡,停止并顯示這期間的流量赏参。quit退出程序。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沿盅,一起剝皮案震驚了整個(gè)濱河市登刺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嗡呼,老刑警劉巖纸俭,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異南窗,居然都是意外死亡揍很,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門万伤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窒悔,“玉大人,你說(shuō)我怎么就攤上這事敌买〖蛑椋” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵虹钮,是天一觀的道長(zhǎng)聋庵。 經(jīng)常有香客問我,道長(zhǎng)芙粱,這世上最難降的妖魔是什么祭玉? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮春畔,結(jié)果婚禮上脱货,老公的妹妹穿的比我還像新娘岛都。我一直安慰自己,他們只是感情好振峻,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布臼疫。 她就那樣靜靜地躺著,像睡著了一般扣孟。 火紅的嫁衣襯著肌膚如雪烫堤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天哈打,我揣著相機(jī)與錄音,去河邊找鬼讯壶。 笑死料仗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伏蚊。 我是一名探鬼主播立轧,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼躏吊!你這毒婦竟也來(lái)了氛改?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤比伏,失蹤者是張志新(化名)和其女友劉穎胜卤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赁项,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡葛躏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悠菜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舰攒。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖悔醋,靈堂內(nèi)的尸體忽然破棺而出摩窃,到底是詐尸還是另有隱情,我是刑警寧澤芬骄,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布猾愿,位于F島的核電站,受9級(jí)特大地震影響账阻,放射性物質(zhì)發(fā)生泄漏匪蟀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一宰僧、第九天 我趴在偏房一處隱蔽的房頂上張望材彪。 院中可真熱鬧观挎,春花似錦、人聲如沸段化。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)显熏。三九已至雄嚣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喘蟆,已是汗流浹背缓升。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蕴轨,地道東北人港谊。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像橙弱,于是被迫代替她去往敵國(guó)和親歧寺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1. 簡(jiǎn)介 本文檔包含DPDK軟件安裝和配置的相關(guān)說(shuō)明棘脐。旨在幫助用戶快速啟動(dòng)和運(yùn)行軟件斜筐。文檔主要描述了在Linux...
    半天妖閱讀 17,902評(píng)論 0 22
  • Ubuntu的發(fā)音 Ubuntu屈梁,源于非洲祖魯人和科薩人的語(yǔ)言蕴潦,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 99,201評(píng)論 9 467
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,146評(píng)論 2 34
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理俘闯,服務(wù)發(fā)現(xiàn)潭苞,斷路器,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,756評(píng)論 25 707