1. 程式人生 > >DPDK Pktgen+Docker搭建VNF環境及驗證

DPDK Pktgen+Docker搭建VNF環境及驗證

作者簡介:文殊博,北京郵電大學未來網路理論與應用實驗室(FNL)研究生

一、簡介及參考文獻

​本文主要是搭建一個基於DPDK的VNF開發實驗環境,利用docker和vhost-user擺脫DPDK的硬體約束,方便在一臺機器上進行VNF的開發和測試。但是,DPDK的PMD對不同網絡卡的特性支援差異很大,所以不能完全以這種環境下的執行結果為準。接下來會先介紹環境的配置過程然後搭建一個簡單的拓撲,最後會對DPDK的testpmd應用中最簡單的iofwd轉發引擎中關鍵部分進行簡單說明。

  • NFV(Network Funciton Virtualization, 網路功能虛擬化)旨在通過標準化裝置替代現存的專用IT裝置,以降低CapEX和OpEX並提供更高的靈活性。更詳細內容的可以檢視ETSI釋出的
    NFV白皮書
    或OPNFV提供的相關內容
  • DPDK是intel開發的開源高效能資料平面開發工具集。它提供了在通用處理器上進行快速包處理的庫和驅動,這種特性非常適合NFV。更詳細內容的內容可以檢視DPDK官方文件
  • pktgen即packet generator,以下都特指pktgen-dpdk。這是一款基於DPDK的強大的流量產生工具。更詳細的內容可以檢視pktgen官方文件
  • Docker是一款簡單易用的容器管理工具。由於容器本身啟停快、體積小等、
  • 特點,容器化也成為了NFV的趨勢之一。更詳細內容可以檢視Docker官方文件
  • vhost-user是實現在使用者態的vhost,相比virtio和vhost需要核心支撐,vhost-user可以完全工作在使用者態。vhost-user通過socket檔案和共享記憶體來完成資料的傳遞。更詳細內容可以檢視QEMU關於
    vhost-user的介紹

二、環境配置

2.1 DPDK的安裝

  1. 下載DPDK原始碼,並配置安裝所需環境變數。

    123456789wget http://fast.dpdk.org/rel/dpdk-17.05.2.tar.xztar-xvf dpdk-17.05.2.tar.xzcd dpdk-stable-17.05.2#設定DPDK庫目錄位置echo export RTE_SDK=$(pwd)>>~/.bashrc#設定DPDK目標環境#注意!這裡的x86_64-native-linuxapp-gcc應替換為實際執行環境echo export RTE_TARGET
    =x86_64-native-linuxapp-gcc>>~/.bashrcsource~/.bashrc
  2. 配置DPDK

    1 vim config/common_base

    這裡由於要是用Vhost-user驅動,修改使得檔案中CONFIG_RTE_LIBRTE_VHOST=y。如果需要連線其他驅動的網絡卡,也要確認其他驅動相關設定正確。

  3. 安裝DPDK

    123make configT=$RTE_TARGETmakeT=$RTE_TARGET-j8make installT=$RTE_TARGET-j8

2.2 hugepages的配置

    本實驗中由於我們需要使用virtio-user這種連線方式,由於實現時的一些限制導致使用vhost-user時同時最多隻能使用8個hugepages無論2M還是1G大小的hugepagesize。所以這裡必須使用1G大小的hugepagesize同時最多分配8個。
    1 2 3 4 5 6 7 8 9 10 11 sudo vim/etc/default/grub #找到其中一項為 GRUB_CMDLINE_LINUX_DEFAULT= ,不論後面的引號內包含任何內容,在原本內容之後新增 default_hugepagesz=1GB hugepagesz=1G hugepages=8(這裡分配了8個1G的hugepages) sudo update-grub #之後需要重啟一下 reboot #檢視分配情況 grep Huge/proc/meminfo #分配成功後進行掛載 mkdir-p/dev/hugepages mount-thugetlbfs none/dev/hugepages #之後每次重啟後都要再執行後兩句

    2.3 Pktgen的安裝

      pktgen的安裝依賴於DPDK,安裝前確保RTE_SDK和RTE_TARGET環境變數設定正確。
      1234567#安裝依賴sudo apt-get install-ylibpcap-dev lua5.3wget http

      相關推薦

      DPDK Pktgen+Docker搭建VNF環境驗證

      作者簡介:文殊博,北京郵電大學未來網路理論與應用實驗室(FNL)研究生 一、簡介及參考文獻 ​本文主要是搭建一個基於DPDK的VNF開發實驗環境,利用docker和vhost-user擺脫DPDK的硬體約束,方便在一臺機器上進行VNF的開發和測試。

      vue.js:搭建開發環境構建項目

      ini cnpm 直接 人在 mod 不發送 package 3.0 mage 發環境的搭建 安裝node.js 直接下一步就好, 註意安裝的位置 Node.js官網:https://nodejs.org/en/ 驗證Node.js是否安裝好,在windows下,wi

      搭建caffe環境訓練模型

      visio macosx gpu .sh 編寫 共享庫 image ins bash Mac OS搭建caffe環境 一、相關軟件安裝 1、 安裝CUDA8 (1) 安裝xcode及命令行 (2) 安裝CUDA的dmg包 (3) 配置環境變量並

      vue.js2.0:如何搭建開發環境構建項目

      包管理器 webp data- header 開發環境 mage all ins 點擊 1,安裝node.js Node.js官網:https://nodejs.org/en/ 進入Node.js官網,選擇下載並安裝Node.js。安裝過程只需要點擊“下一步”即可, 如下圖

      Redis集群~windows下搭建Sentinel環境它對主從模式的實際意義

      sent bsp windows 意義 HR 主從模式 nbsp OS AS Redis集群~windows下搭建Sentinel環境及它對主從模式的實際意義 學習了:https://www.cnblogs.com/lori/p/5825691.html 哨兵機制; Re

      docker搭建 LNMP 環境

      更換 n) nec 示例 名稱 chmod onf local 想要 一、準備鏡像安裝完docker後,更換完鏡像源(docker的安裝十分簡單自行百度即可)打開/etc/docker目錄下的daemon.json添加以下內容 {"registry-mirror

      MongoDB復制集搭建簡單講解驗證

      oca serve aac 復制 color water 介紹 集成 mongod 一.MongoDB復制集搭建介紹 二.復制集搭建搭建環境:Centos 7mongodb-linux-x86_64-3.2.12.tgz 1.解壓安裝mongodb到/usr/local/m

      eclipse搭建struts2環境所遇到的問題

      頭文件 exceptio 訪問 ble standard filters patch ner direct 最近幾天一直在搭建struts2框架,本身struts2框架的搭建是非常簡單的,但不知道為什麽最近就是總是報錯,報了一大串的錯 首先就是每次在類的根路徑下創建stru

      [step by step]利用docker搭建Tensorflow環境(tensorboard + tensorflow+gpu)

      前言 本篇文章搭建環境的作業系統是ubuntu14,windows搭建docker的方式與ubuntu有所區別,win的使用者可以點選原文中的參考連線進行docker的搭建。掛載tensorboard的方法是一樣的,可供大家參考 搭建docker 官方文件 https://do

      docker 搭建php環境映象

      1,下載centos docker pull centos 2,啟動centos映象的一個容器 docker run -it centos /bin/bash 3,進入容器更新yum(要檢視centos的版本更新相應的,本人的為centos7) 更新yum源 rpm -Uvh https

      使用docker搭建LAMP環境

      環境:Centos7.4[[email protected] ~]# cat /etc/redhat-releaseCentOS Linux release 7.4.1708 (Core) Get the most up-to-date version of Dockerhttps://get.d

      Linux下搭建go環境安裝beego,建立一個名為“Hello"的應用程式

      【一】搭建 go 環境 1.在官網上下載 go1.9.2.linux-amd64.tar.gz 國內下載地址:http://www.golangtc.com/download) 2.將其移動到 /usr/local/ sudo mv /home/go1.9.2.linux-amd64 /

      使用docker搭建開發環境

      我的主力機是windows,windows下面有太多提升效率的軟體.但是開發的時候不得不使用linux.就單單開發而言.我還是喜歡使用linux.所以就造成了我得在windows下面使用虛擬機器.這是最開始的辦法.後面得知有vagrant這個東西之後,用了一陣子感覺還不錯.但

      使用SpringBoot搭建SpringSecurity環境驗證

      Security作用描述源自:https://www.cnblogs.com/jaylon/p/4905769.html實操:搭配環境一.首先需要建立IDEA建立一個SpringBoot專案,需要選擇上Security   二.建立完畢後測試一下是否可以執行(建立完專案後會有

      10分鐘搭建Vue環境安裝腳手架(Vue入門篇)

      Vue理念(題外話) 1、Node安裝 2、基於node.js,安裝淘寶映象 國內直接使用 npm 的官方映象是非常慢的,這裡推薦使用淘寶 NPM 映象。 新建一個資料夾,開啟資料夾,在資料夾中按住鍵盤的 shift鍵 + 滑鼠

      docker搭建python環境並打包映象然後使用映象啟動python程式和flask程式

      搭建python環境 雙擊開啟docker 然後下載映象: docker pull ubuntu進入ubuntu容器互動系統: docker run -i -t ubuntu /bin/ba

      docker搭建python環境並打包映象(快捷但不規範操作)

      sudo docker pull ubuntu 進入ubuntu容器互動系統: -t 是啟動終端 -i是允許進行互動 這時候敲python命令會發現沒有python sudo docker run -i -t ubuntu /bin/bash 因為

      Redis叢集~windows下搭建Sentinel環境它對主從模式的實際意義

       回到目錄 關於redis-sentinel出現的原因 Redis叢集的主從模式有個最大的弊端,就是當主master掛了之前,它的slave從伺服器無法提升為主,而在redis-sentinel出現之後,有效的解決了這個問題,它相當於是一個投票者或者哨兵,它時刻監視著redis叢集的各個伺服器,當主mas

      docker搭建開發環境模板

      個人習慣用的辦公環境還是windows,資源還是比較豐富。但又需要考慮linux的開發環境。 考慮到docker容器比虛擬機器有太多的優勢。服務秒開,資源佔用低,分發簡單。建立多個虛擬機器開銷太大,所以在windows中用vmware建立了centos7的虛擬機器,然後在c

      Ubuntu16.04下搭建開發環境編譯tiny4412 Android系統

      1.安裝ssh伺服器(可通過網路遠端登入系統,如putty、xshell) sudo apt-get install openssh-server 2.安裝ftp伺服器(預設已安裝)  windows 可使用leapFTP工具登入 sudo apt-get in