DPDK之一-原理与优势

1 DPDK原理

1.1 传统网络数据原理

Linux网络协议栈在处理数据包时,需要经过两个步骤:首先将数据从物理网卡拷贝到内核协议栈;第二步从内核空间将数据拷贝到用户空间。网络数据包经过两次拷贝才到达用户空间,由于拷贝是会造成系统中断导致性能瓶颈。
在这里插入图片描述

1.2 DPDK数据处理原理

DPDK是 Intel 针对芯片技术与高速网络接口技术飞速发展的应用场景而提出的数据平面加速理论框架(Intel Data Plane Development kit)。DPDK旨在对网络数据的高速处理,其中一个重要的技术就是零拷贝技术,将网络数据直接映射到内存空间。同时DPDK可以跳过内核空间,直接获取网卡数据到用户空间进行网络数据操作,大大的加快的网络数据处理速度。下图也是界定了DPDK的作用范围,主要是在物理网卡和内核空间中间,DPDK可以直接获取网卡数据到用户空间处理,同时也可以灵活的将网络数据写回内核走原来内核处理的流程。
在这里插入图片描述

2 DPDK技术

2.1 大页(hugepage)

大页技术主要优势在于增加单页的数据量,主要运用于需要较大内存的运用场景可以减少页面的切换,提升查询效率。高速网络的数据存储场景正是需要较大的数据缓存,因此大页技术可以很好的提升其效率。
在这里插入图片描述

2.2 用户IO(UIO)

将网卡数据直接转移到用户态空间运行,应用程序和设备解耦。此技术作为DPDK的基石,LinuxUIO技术可以将网卡数据直接转移到用户空间,进行网络数据的处理。 DPDK 应用程序初始化中将网卡硬件寄存器映射到用户态内存空间,因此,DPDK 的驱动程序可以运行在用户态,可以避免不必要的内存拷贝。

2.3 KNI技术

KNI也是驱动模块,用于DPDK与系统内核协议栈建立通道,用户可以将网络数据回灌到内核协议栈处理。

2.4 CPU亲缘性

CPU亲缘性主要是将进程与CPU进行一对一绑定。多核CPU设备用于系统调度导致进程在CPU之间调度。CPU亲缘性则避免了这种CPU的切换充分的放回多核的性能。
在这里插入图片描述

3 DPDK环境搭建

3.1 添加网卡

新增虚拟网卡,这里新增了一个NAT网卡和桥接网卡。
在这里插入图片描述
命令行查看网卡是否添加成功:
这里需要用-a主要是是因为还没有配置dhcp没有启动起来。

ifconfig -a

在这里插入图片描述
网络配置:
这里添加eth1和eth2网卡;

vi /etc/network/interfaces
auto eth1
iface eth1 inet dhcp

auto eth2
iface eth2 inet dhcp

重启网络,即可看到新的网卡和ip地址。

/etc/init.d/networking restart

在这里插入图片描述

3.2 修改网卡配置

主要是修改网卡名为多队列网卡:编辑虚拟机Ubuntu根目录下的:Ubuntu16.04.vmx文件
将ethernet2.virtualDev 由e1000换为vmxnet3
在这里插入图片描述

3.3 修改巨页大小

新增巨页大小,主要用于dpdk中巨页的使用。


vi /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2"

在这里插入图片描述
生效:

sudo update-grub

在这里插入图片描述
查看是否支持多队列网卡,主要用于后续亲缘性开发:

 cat /proc/interrupts

在这里插入图片描述

3.3 DPDK下载

下载dpdk源码:https://core.dpdk.org/download/

wget https://fast.dpdk.org/rel/dpdk-19.08.2.tar.xz
tar -xvf dpdk-19.08.2.tar.xz
chmod 777 -R ./dpdk-stable-19.08.2/
cd dpdk-stable-19.08.2/

在这里插入图片描述

3.4 运行DPDK

利用dpdk-setup.sh 配置dpdk环境

./usertools/dpdk-setup.sh 
#先选39选择编译器,然后开始编译
39
#再选43

#

在这里插入图片描述
生成一个x86_64-native-linux-gcc文件夹:
在这里插入图片描述
设置环境变量:

export RTE_SDK=/home/disk/dpdk-stable-19.08.2
export RTE_TARGET=x86_64-native-linux-gcc

设置dpdk环境:

#43 Insert IGB UIO module,加入IGB_UIO
#45 插入kni
#46 设置巨页512
#49 绑定UIO网卡
#

注意执行49之前需要将网卡关闭:

ifconfig eth0 down

Insert IGB UIO module
执行测试程序:
选择53测试程序。
在这里插入图片描述

show port info 0

在这里插入图片描述
到目前为止DPDK环境已经安装成功,接下来可以进行相关开发。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值