IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> DPDK之一-原理与优势 -> 正文阅读

[系统运维]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环境已经安装成功,接下来可以进行相关开发。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:31:28  更:2022-04-29 12:32:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:10:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码