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 後面.
首先前往http://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 以及虛擬化系列文章.
http://weixin.qq.com/r/Cjh4YKPEi-70recD920Y (二維碼自動識別)
推薦閱讀:
※搭建外匯平台的流程是什麼?
※我的自學經歷
※PHP學習資料大放送
※解讀ThoughtWorks技術雷達的正確姿勢
※外包公司的選擇與外包客戶的選擇-甲方乙方的坑
TAG:軟體開發 |