標籤:

VMware Player 搭建DPDK 實驗平台

VMware Player 搭建DPDK 實驗平台

DPDK 今年越來越稱為業內的熱點, 很多初次上手的同學總是煩惱不知道如何入手, 尤其是誤以為DPDK只能運行在高端的伺服器平台和多網卡設備上. 殊不知, 如果僅僅是以學習的話, 無需任何特殊的硬體平台, 只是需要一台稍微強勁些的PC(CPU i5, 內存8G以上) 就可以上手學習.

第一步: 安裝所需軟體

      • Linux/Windows 作為Host 環境
      • Vmware Player 12 作為hypervisor
      • 用Vmware Player 安裝debian sid stable

第二步: Vmware Player的虛擬設備配置

  • 首先是設置為4core,並啟動 vt-x. 這裡cpu數量必須小於host的cpu實際數量,
  • 其次是設置內存, 4G 是基本的要求,因為要打開1G 巨頁, 內存不要太小
  • 然後添加3個網卡, vmware palyer模擬的是intel 的82554EM,恰好DPDK支持這款網卡, 不過Vmware的模擬有一些問題,導致我們後面還需要打一個補丁,每個網卡都用NAT模式即可
  • 內核的啟動參數寫在 /etc/default/grub 的 GRUB_LINUX_CMD 後面.

  • 然後設置內核的啟動參數,最終更新grub設置
  • 第三步安裝運行DPDK
  • 首先前往dpdk.org 可以clone git repo 或者下載最新的發布

    然後在debian 下面安裝好 編譯器 toolschain, 就不贅述.

    首先要打一個補丁,

    補丁的地址 [dpdk-dev] igb_uio: fix vmware e1000 input/output error

    這個補丁是必須的, 否則會直接導致 應用crash.

    接下來就是編譯

    make config T=x86_64-native-linuxapp-gccsed -ri s,(PMD_PCAP=).*,1y, build/.configmake -j4mkdir -p /mnt/hugemount -t hugetlbfs nodev /mnt/hugeecho 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576/nr_hugepages

    第四步,綁定網卡

    然後就是進入 DPDK_ROOT/tools/

    對網卡綁定用戶態驅動框架 igb_uio

    modprobe uiocd DPDK_ROOT/build/kmodinsmod ./igb_uio.

    綁定2個網卡即可, 還有一個需要留下繼續使用內核驅動作為管理通道.

    綁定方法有兩種, 一種是運行 dpdk-devbind.py 另一種是運行 dpdk-setup.py

    對於初次使用的用戶建議使用第二種, 互動式界面比較容易理解

    運行以後首先選 22 ( bind ethernet device to igb_uio module),這個數字可能根據版本不同不一致,注意功能描述.

    綁定網卡是根據 網卡設備的 PCI-E Bus number: Device number: Function number ,簡稱BDF.

    如下圖, 我綁定igb_uio 到 02:05.0 這塊網卡. 輸入BDF即可完成

    這裡有一個關於debian網路配置的小細節: 在有三個網卡的情況下, 預設只有一塊bus number最高的網卡會自動配置好ip地址. 我們需要做一些小小的設置, 這樣三塊網卡可以全部自動配置好.

    在/etc/network/interface.d/ 目錄下根據網卡設備名分別創建3個文件.

    例如, 在我的系統中三個網卡設備名分別是en33,en37,en38,則對應有三個同名文件.

    裡面的內容為

    auto ens33iface ens33 inet dhcp

    其餘兩個只要替換對應設備名即可

    第五步編譯運行例子以及測試代碼

    首先回到 DPDK_ROOT

    第三步編譯結束之後, build 目錄下面是生成的二進位文件(包括可執行文件以及ko,

    然後copy 整個build 目錄到 一個新的目錄 下 DPDK_ROOT/x86_64-native-linuxapp-gcc

    export RTE_SDK=/opt/Code/dpdk #請自行腦補其它shell,自己的代碼路徑

    然後進入 DPDK_ROOT/build/app 可以先實驗幾個小的測試程序

    例如 ./test_pmd -- -i 進入交互模式 然後在控制台輸入

    show port stats all

    會有如下輸出

    我們可以看到我們綁定的兩塊網卡的一些基本狀態信息.

    則基本大功告成. 我們現在可以編譯正式的例子代碼

    進入 DPDK_ROOT/example 目錄, 挑選一個最為基本的例子l2fwd 就是二層包轉發.

    cd l2fwd ; make

    生成的二進位可執行文件位於 l2fwd目錄的build子目錄下

    ./l2fwd -c f -n 2 -- -p 3

    即可開始運行

    大家可以觀察 包轉發的包文數量的變化情況.

    至此,最基本的環境設置, 編譯運行已經完成. 萬里長征 邁出了第一本

    敬請關注鄙人公號, 後續將會繼續發布DPDK 以及虛擬化系列文章.

    weixin.qq.com/r/Cjh4YKP (二維碼自動識別)

    推薦閱讀:

    搭建外匯平台的流程是什麼?
    我的自學經歷
    PHP學習資料大放送
    解讀ThoughtWorks技術雷達的正確姿勢
    外包公司的選擇與外包客戶的選擇-甲方乙方的坑

    TAG:軟體開發 |