intel dpdk 在虚拟机 VMware 中安装部署

声明:此文档只做学习交流使用,请勿用作其他商业用途

author:朝阳_tony

E-mail : linzhaolover@gmail.com

Create Date: 2013-12-28 23:38:47 Saturday

Last Change: 2014-1-1 22:33:42 Wednesday

转载请注明出处:http://blog.csdn.net/linzhaolover

intel DPDK交流群希望大家加入互相学习,QQ群号:289784125

此文请结合intel dpdk源码去阅读,基于dpdk-1.5.1 版本源码讲解,源码可以去http://dpdk.org/dev网页中下载;更多官方文档请访问http://dpdk.org/

假如你没有intel的网卡,没有相应的linux系统,只是想简单的使用了解一下dpdk,那么你可以选择在vmware中部署一套简单的dpdk环境;

1、在vmware中安装配置适合dpdk运行的虚拟机;

1)、虚拟机的配置要求,

vcpu = 2   最少两个cpu,因为dpdk是需要绑定core,一个是没办正常运行dpdk的,如你电脑运行,最好多配置几个;

memory=1024   也就是1G ,当然越多越好,因为要配置hugepage,还是多分点吧;

系统,我装的是rhel6.1 ,当然你可以选择更高版本,但不能选择低版本,怕不支持;http://blog.csdn.net/linzhaolover/article/details/8223568这有 RHEL6.3 6.4 6.5的下载地址;

系统的在装好后要更新一下kernel,我目前虚拟机里使用的是 linux-3.3.2,你最好选择3.0 至3.8之间的,这之间的kernel有些人用过,是可以跑起dpdk的;

网卡, 给两个吧,

vmware装虚拟机系统我在这就不多说了,网上有很多的教程;

2)、添加dpdk支持的网卡

同学们虚拟网卡,大家就不要吝啬了,至少添加两块intel 网卡吧;因为一块会报错误;

dpdk是intel出的,目前似乎只支持intel的网卡,在装好虚拟机好,我们看一下当前虚拟机的网卡是什么样的;用lspci命令查看;

[cpp]view plaincopy

# lspci  | grep Ethernet

02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

02:05.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

vmware安装虚拟机,默认的网卡是amd的,我们该怎样正确添加intel的网卡呢??????

好吧,先将虚拟机shutdown;

再添加一块网卡,这时别急,先不启动虚拟机;我们还需要去修改一下当前虚拟机的配置文件,

我的配置文件时在E:\Users\adm\Documents\Virtual Machines\Red Hat Enterprise Linux 5\Red Hat 6.vmx

你在安装虚拟机时,应该选择了其工作目录,自己将鼠标放在VMware左侧栏你创建的虚拟机名字处,就会自动显示它的工作目录的了;

用记事本打开配置文件,然后添加一行

[cpp]view plaincopy

ethernet2.virtualDev ="e1000"

由于我的是添加的第3块网卡了,如果从0开始数,刚好是eth2,添加后的样子是

[cpp]view plaincopy

ethernet2.virtualDev ="e1000"

ethernet2.present ="TRUE"

e1000是intel的网卡中的一个千兆网卡;

好了,在重新启动虚拟机,查看一下网卡,多了一个82545em 的网卡,

[cpp]view plaincopy

# lspci  | grep Ethernet

02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

02:05.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

02:06.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)

2、部署dpdk

1)、下载源码

在开启虚拟机后,从dpdk官网下载最新的code

[cpp]view plaincopy

git clone git://dpdk.org/dpdk

2)、设置环境变量

进入dpdk目录;编辑一个环境变量文件,然后source;

[cpp]view plaincopy

export RTE_SDK=`pwd`

#export RTE_TARGET=x86_64-default-linuxapp-gcc

export RTE_TARGET=i686-default-linuxapp-gcc

由于我的是32虚拟机,所以我选择i686,将x86_64那行环境变量注释掉;

我将上面3行放在dpdkrc文件中,然后用source启用这几个环境变量;

[cpp]view plaincopy

source  dpkdrc

注意,你以后如果从新登陆终端,进入这个目录,都要source一下这个文件,才能正常运行dpdk的程序;

3)、用dpdk的脚本运行dpdk;

运行脚本进行dpdk测试;

然后再运行脚本

[cpp]view plaincopy

./tools/setup.sh

[html]view plaincopy

----------------------------------------------------------

Step 1: Select the DPDK environment to build

----------------------------------------------------------

[1] i686-default-linuxapp-gcc

[2] i686-default-linuxapp-icc

[3] x86_64-default-linuxapp-gcc

[4] x86_64-default-linuxapp-icc

选择    1

我的是32位系统,所以我选择    1   , 采用gcc编译32位源码;如果你是64位虚拟机,请选择  3

[cpp]view plaincopy

----------------------------------------------------------

Step 2: Setup linuxapp environment

----------------------------------------------------------

[5] Insert IGB UIO module

[6] Insert KNI module

[7] Setup hugepage mappingsfornon-NUMA systems

[8] Setup hugepage mappingsforNUMA systems

[9] Display current Ethernet device settings

[10] Bind Ethernet device to IGB UIO module

编译ok后,

选择  5

进行igb_uio.ko驱动的安装,这个驱动在编译后是,在i686-default-linuxapp-gcc/kmod/ 目录中;其实在安装igb_uio.ko之前,脚本先安装了uio模块,uio是一种用户态驱动的实现机制,dpdk有些东西时基于uio实现的;有兴趣的可以了解一下uio的驱动使用http://blog.csdn.net/wenwuge_topsec/article/details/9628409

选择 7

设置hugepage,

[cpp]view plaincopy

Removing currently reserved hugepages

.echo_tmp: line 2: /sys/devices/system/node/node?/hugepages/hugepages-2048kB/nr_hugepages: 没有那个文件或目录

Unmounting /mnt/huge and removing directory

Input the number of 2MB pages

Example: to have 128MB of hugepages available, enter'64'to

reserve 64 * 2MB pages

Number of pages: 64

Reserving hugepages

Creating /mnt/huge and mounting as hugetlbfs

提示没有nr_hugepage文件,我没有理它,暂且不知道起原因;

有让你输入预留内存大小的 我输入的是  64  ,   64  乘以 2M  可以128M 做个简单的测试够了,

选 9

看一下你当前的设备

[cpp]view plaincopy

Option: 9

Network devicesusingIGB_UIO driver

====================================

Network devicesusingkernel driver

===================================

0000:02:01.0'79c970 [PCnet32 LANCE]'if=eth0 drv=pcnet32 unused= *Active*

0000:02:05.0'79c970 [PCnet32 LANCE]'if=eth1 drv=pcnet32 unused= *Active*

0000:02:06.0'82545EM Gigabit Ethernet Controller (Copper)'if=eth2 drv=e1000 unused=igb_uio

Other network devices

=====================

我有3块虚拟网卡,只有最后一个是intel的网卡,看他已经提示当前的网卡驱动而是 e1000而没有用igb_uio , 接下来就是让你去绑定它;

选择10

进行 网卡bind

[cpp]view plaincopy

Option: 10

Network devicesusingIGB_UIO driver

====================================

Network devicesusingkernel driver

===================================

0000:02:01.0'79c970 [PCnet32 LANCE]'if=eth0 drv=pcnet32 unused= *Active*

0000:02:05.0'79c970 [PCnet32 LANCE]'if=eth1 drv=pcnet32 unused= *Active*

0000:02:06.0'82545EM Gigabit Ethernet Controller (Copper)'if=eth2 drv=e1000 unused=igb_uio

Other network devices

=====================

Enter PCI address of device to bind to IGB UIO driver: 02:06.0

OK

让你输入pci的地址, 你只要将0000:02:06.0  中的,0000冒号后面的几位输入就行了,  如  02:06.0   记得标点也要输入啊,

注意绑定的时候可以能有个错误的提示如下;

[cpp]view plaincopy

Enter PCI address of device to bind to IGB UIO driver: 02:06.0 02:07.0

Routing table indicates that interface 0000:02:06.0 is active. Not modifying

OK

is active ,可能是你当前的对应的网卡处于up状态,所以你要执行down命令将其关闭;

例如我的网卡是eth2;

[cpp]view plaincopy

ifconfig eth2 down

关闭后再重新执行一下上面的绑定操作;

再选择 9

就看一下当前的网卡状态;

[cpp]view plaincopy

Option: 9

Network devicesusingIGB_UIO driver

====================================

0000:02:06.0'82545EM Gigabit Ethernet Controller (Copper)'drv=igb_uio unused=e1000

Network devicesusingkernel driver

===================================

0000:02:01.0'79c970 [PCnet32 LANCE]'if=eth0 drv=pcnet32 unused= *Active*

0000:02:05.0'79c970 [PCnet32 LANCE]'if=eth1 drv=pcnet32 unused= *Active*

Other network devices

=====================

看  drv=igb_uio  驱动已经帮过去了,现在intel网卡的去的是igb_uio;

选择  12

测试一下dpdk程序

[cpp]view plaincopy

Option: 12

Enter hex bitmask of cores to execute testpmd app on

Example: to execute app on cores 0 to 7, enter 0xff

bitmask: 0x3

由于我的虚拟机只有2个cpu ,所以按照16进制掩码就选择了 0x3  ,回车运行一下试试 ;

再输入  start发一下包

[cpp]view plaincopy

Interactive-mode selected

Configuring Port 0 (socket -1)

Checking link statuses...

Port 0 Link Up - speed 1000 Mbps - full-duplex

Done

testpmd>

testpmd> start

Warning! Cannot handle an odd number of ports with the current port topology. Configuration must be changed to have an even number of ports, or relaunch application with --port-topology=chained

io packet forwarding - CRC stripping disabled - packets/burst=16

nb forwarding cores=1 - nb forwarding ports=1

RX queues=1 - RX desc=128 - RX free threshold=0

RX threshold registers: pthresh=8 hthresh=8 wthresh=4

TX queues=1 - TX desc=512 - TX free threshold=0

TX threshold registers: pthresh=36 hthresh=0 wthresh=0

TX RS bit threshold=0 - TXQ flags=0x0

有警告,是什么意思,????????

2014年1月1日22:32:10 星期三

上面这个错误,经由同样学习dpdk 的同学frank解决了,是因为我只添加了1块intel的网卡,你在再添加一块就ok了

输入stop 停止;

[cpp]view plaincopy

Telling cores to stop...

Waitingforlcores to finish...

---------------------- Forward statisticsforport 0  ----------------------

RX-packets: 0              RX-dropped: 0             RX-total: 0

TX-packets: 0              TX-dropped: 0             TX-total: 0

----------------------------------------------------------------------------

+++++++++++++++ Accumulated forward statisticsforall ports+++++++++++++++

RX-packets: 0              RX-dropped: 0             RX-total: 0

TX-packets: 0              TX-dropped: 0             TX-total: 0

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Done.

为什么没有数据包呢?????????     谁知道,告诉我一下;

2014年1月1日22:38:16  星期三

上面没有数据的问题解决了,O(∩_∩)O~,原始是我将网卡模式添加时用的NAT模式,给修改成了HOSTONLY模式,哎,但我还是有疑问,只两个模式有什么重要区别吗????

[cpp]view plaincopy

---------------------- Forward statisticsforport 0  ----------------------

RX-packets: 8890           RX-dropped: 0             RX-total: 8890

TX-packets: 8894           TX-dropped: 0             TX-total: 8894

----------------------------------------------------------------------------

---------------------- Forward statisticsforport 1  ----------------------

RX-packets: 8895           RX-dropped: 0             RX-total: 8895

TX-packets: 8889           TX-dropped: 0             TX-total: 8889

----------------------------------------------------------------------------

+++++++++++++++ Accumulated forward statisticsforall ports+++++++++++++++

RX-packets: 17785          RX-dropped: 0             RX-total: 17785

TX-packets: 17783          TX-dropped: 0             TX-total: 17783

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容