• DPDK开发环境搭建(学会了步骤适合各版本)


    一、版本的选择

    首先要说明的是,对于生产来说DPDK版本不是越高越好,如何选择合适的版本?

    1、要选择长期支持的版本LTS(Long Term Support)

    clipboard

    2、根据当前开发的系统环境选择

    可以在以下文档里从高至低查看不同版本的System Requirements章节,它对kernel、glibc等限制有详细说明。

    http://core.dpdk.org/doc/archives/

    我开发是在CentOS7.3 64位,最后选用dpdk-18.11版本。如果你的软件需要同时在不同系统运行,选对版本后续能省不少事。

    image

    二、虚拟机配置要求

    我使用vmware虚拟机,调研了几款虚拟机发现在windows下只能vmware能模拟出多队列的网卡,如果有发现其他虚拟机能模拟请给我留言。

    1、核心:我配置4个。至少有2个以上核心,方便后续程序做线程孤立和绑定。

    2、内存:我一般配置3G,为了配置hugepage,多分点比较好。可根据实际情况配置。

    3、网卡:需要支持dpdk,我选择vmnet3,它支持多队列。端口至少2个以上,且要求驱动为dpdk支持的,

    三、dpdk的安装

    1、下载源码

    http://fast.dpdk.org/rel/dpdk-18.11.7.tar.xz

    2、设置环境变量(18.11版本不需要)

    旧版本安装时需要在dpdk根目录执行t以下命令,如果重新登录需要再执行一次,18.11版本不需要,安装脚本里写好了,这里只是记录以下。

    64位系统:

    export RTE_SDK=`pwd`

    export RTE_TARGET=x86_64-native-linuxapp-gcc

    32位系统:

    export RTE_SDK=`pwd` 

    export RTE_TARGET=i686-default-linuxapp-gcc

    3、利用setup.sh进行配置

    cd dpdk-stable-18.11.7/usertools

    source ./dpdk-setup.sh

    1)编译dpdk

    clipboard

    编译完提示以下信息:查资料显示没有指定安装路径,我们只是编译而不是install就不用理会。

    clipboard

    2)插入IGB UIO模块

    clipboard

    3)设置大页内存

    clipboard

    默认设置的是2M的大页内存,这里输入1024,表示申请2G的大页内存。由于虚拟机里只有一个node,这里只需要设置node0

    clipboard

    查看配置的大页内存

    clipboard

    clipboard

    4)查看网卡/加解密设备信息,这里我们只有网卡信息

    clipboard

    clipboard

    若报以下错误,是因为没有安装lspci导致,安装解决:yum install pciutils -y

    Traceback (mostrecent call last):
      File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 576, in <module>
        main()
      File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 572, in main
        get_nic_details()
      File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 248, inget_nic_details
        dev_lines =check_output(["lspci", "-Dvmmn"]).splitlines()
      File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 125, in check_output
        stderr=stderr).communicate()[0]
      File "/usr/lib64/python2.7/             subprocess.py", line 711, in__init__
        errread, errwrite)
      File"/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child
        raise child_exception
    OSError: [Errno 2]No such file or directory

    5)绑定设备

    clipboard

    clipboard

    输入pci的地址, 输入0000冒号后面的几位输入就行了,这里将03:00.0和0b:00.0绑定。但我遇到过需要完整输入才能绑定的情况,如果绑定失败就都试试。

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

    922192514909

    因为是你当前的对应的网卡端口处于up状态,所以你要执行ifconfig xxx down命令将其关闭,关闭后再重新执行一下上面的绑定操作。注意为了跑测试用例至少要绑定两个端口

    再次查看,发现已经绑定到dpdk驱动了。

    clipboard

    6)运行testpmd测试程序

    clipboard

    输入0xf代表程序运行在0~3核心

    clipboard

    如果提示以下错误,是因为大页内存分配不够,尝试分配多一些再试,若还不行重启虚拟机再试试。

    testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=171456, size=2176, socket=0 testpmd: preferred mempool ops selected: ring_mp_mc EAL: Error - exiting with code: 1 Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate memory

    start开始抓包, 用发包工具对网卡发包(我在windows下使用xcap对虚网卡发包)

    clipboard

    stop停止抓包,并查看收发情况

    clipboard

    这说明dpdk收到了1000个包,同时转发出去了1000个包,已正常运行。

  • 相关阅读:
    Jmeter参数化-用户定义的变量
    Jmeter进行文件下载
    Jmeter进行文件上传
    Jmeter进行HTTP接口测试
    Jmeter元件作用域及执行顺序
    activiti 汉化
    Spring boot web app项目
    spring boot整合activiti rest api详细教程
    Spring Boot自动配置原理
    spring bean注解使用详解
  • 原文地址:https://www.cnblogs.com/realjimmy/p/12812883.html
Copyright © 2020-2023  润新知