DPDK在虚拟机上的安装和使用
来源:互联网 发布:营收数据分析 ppt模板 编辑:程序博客网 时间:2024/06/01 08:34
DPDK的安装与使用
最近从老板那里拿到一个将Intel DPDK移植到龙芯平台的任务,上网查了下资料关于它的资料真是少之又少,看来是个大坑啊,于是就自己摸索着来吧,这里感谢下朝阳_tony,他那里提供了许多许多关于DPDK详实的资料和心得。
虚拟机环境搭建
首先由于手头没有多网卡的linux x86的机器,所以很自然的想到了使用虚拟机安装DPDK。我给虚拟机分配了4GB的内存,4个处理器核,3块虚拟网卡,每个网卡都采用NAT模式。我这里用VMWare直接添加的网卡就是Intel的82545EM芯片,网络上有人说会添加AMD芯片,这里我比较幸运。如果手动添加Intel网卡方法是:
先找到虚拟机的配置文件,后缀为.vmx,在后面添加两行:
ethernet2.virtualDev=”e1000”
ethernet2.present=true
配置好虚拟机,我给它装上了Ubuntu14.01系统,然后就是下载DPDK了,这里我使用了Git,采用了官网的链接:
git clone http://dpdk.org/git/dpdk
DPDK的安装
我下载下来的版本是2.1,在DPDK的根目录下,在./tools/中,DPDK提供了一个简便的安装脚本setup.sh,通过它可以很方便的完成DPDK初始环境的配置,编译和加载。一般步骤是:
- 设置环境变量;
- 加载uio模块,并绑定网卡到uio;
- 分配巨页内存;
- 执行应用程序;
#! /bin/bashmake config T=x86_64-native-linuxapp-gccmakemkdir -p /mnt/hugemount -t hugetlbfs nodev /mnt/hugeecho 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepagesmodprobe uioinsmod build/kmod/igb_uio.koifconfig eth1 downifconfig eth2 down./tools/dpdk_nic_bind.py --bind=igb_uio 02:02.0./tools/dpdk_nic_bind.py --bind=igb_uio 02:03.0
这一切都执行完后,就可以执行一些DPDK自带的应用程序了,但是我这个DPDK版本如果直接执行testpmd会报Input/output error,具体错误的图片已经找不着了,经过一番搜寻发现是需要打一个补丁:
diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.cindex d1ca26e..c46a00f 100644--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c@@ -505,14 +505,11 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) } /* fall back to INTX */ case RTE_INTR_MODE_LEGACY:- if (pci_intx_mask_supported(dev)) {- dev_dbg(&dev->dev, "using INTX");- udev->info.irq_flags = IRQF_SHARED;- udev->info.irq = dev->irq;- udev->mode = RTE_INTR_MODE_LEGACY;- break;- }- dev_notice(&dev->dev, "PCI INTX mask not supported\n");+ dev_dbg(&dev->dev, "using INTX");+ udev->info.irq_flags = IRQF_SHARED;+ udev->info.irq = dev->irq;+ udev->mode = RTE_INTR_MODE_LEGACY;+ break; /* fall back to no IRQ */ case RTE_INTR_MODE_NONE: udev->mode = RTE_INTR_MODE_NONE;
然后再运行testpmd,就可以正常的得到结果了,结果如下:
- DPDK在虚拟机上的安装和使用
- DPDK-pktgen在虚拟机上安装
- 在虚拟机间 NFV 应用上使用采用 DPDK 的 Open vSwitch*
- 在虚拟机间 NFV 应用上使用采用 DPDK 的 Open vSwitch
- DPDK -- 使用 KVM 安装虚拟机
- 虚拟机使用脚本安装测试DPDK
- 在ubuntu7.10 Desktop上安装和使用Xen虚拟机
- 在VirtualBox虚拟机上安装和使用ipcop路由
- 在虚拟机上安装和使用Ubuntu日志
- intel dpdk 在虚拟机 VMware 中安装部署
- intel dpdk 在虚拟机 VMware 中安装部署
- 在虚拟机(VM)上安装使用FEDORA
- dpdk中文-使用虚拟机调试dpdk准备工作
- 在VMWare Workstation上使用RedHat Linux安装和配置Hadoop群集环境01_虚拟机的安装
- 在VMWare Workstation上使用RedHat Linux安装和配置Hadoop群集环境01_虚拟机的安装
- 在虚拟机中部署dpdk
- Solaris在虚拟机上的安装过程
- 在虚拟机上安装需要的APK
- 《Android源码设计模式解析与实战》读书笔记(十二)
- iOS -- 获取当前时间,以及出现的错误
- Spring - 注解的使用 和 继承的配置
- sip协议---------阿冬专栏!!!
- STM32后缀名说明
- DPDK在虚拟机上的安装和使用
- iOS崩溃调试的使用和技巧总结
- 值得注意的OpenCV数据类型问题
- Android版添加phonegap--融云即时通讯插件教程
- Warning: The string 'returncode' with parameter delimiters is not a parameter
- 明年工资新规定,8种人将淘汰,你在其中么
- tmux terminal multiplexer
- 51nod 1670:打怪兽 递推
- Joomla反序列化漏洞的查漏补缺