将脚本之家设为“星标⭐”
第一时间收到文章更新
文末包邮送书!!!
我们的活动在互联网上每天都会形成海量的数据。我们晓得这是一个“很大”的数字,但你晓得究竟有多大吗?
据简略计算,目前互联网上每晚新增的数据量超过1.15EB。而预测到2025年,这一数字会下降到491EB。假如看不下来这个数字有多大,这么看下这个单位换算公式:1EB=1*1024*1024*1024GB。
由于物联网也在超快地发展,无处不在的IoT设备会形成更多的数据,所以互联网数据会呈指数级下降。这么无论是云估算、大数据剖析应用,还是AI处理,网路传输能够及时“吞”下激增的数据,就决定了服务的能力。
但目前承载互联网服务的主流操作系统Linux却存在网路性能困局,问题出在那里呢?
1
Linux网路的困局
当Linux在20世纪90年代初设计开发Linux内核时,还未能意料到未来30年全球互联网的规模,所以也不可能按现今的数据流量去做设计。而Linux内核的基本结构也保持到现今。
为此问题就在于Linux内核网路合同栈的实现,相对于当下的数据吞吐量需求,有以下三个诱因会形成网路传输困局:
▮应用程序和网路合同栈在交换数据时,会频繁地在用户态与内核态之间切换linux内核设计及实现,致使延时形成;
▮数据要在用户空间缓存与内核空间缓存之间往来复制,花费时间;
▮内核合同栈须要对数据进行封装和解析工作,占用CPU时钟。
内核合同栈方案的数据流
办法总比困难多,《Linux高性能网路解读:从DPDK、RDMA到XDP》一书就针对上述问题给出了包括软件与硬件的解决办法。本书的作者是业内资深专家linux系统下载,他在书中以理论结合实践,说明了DPDK、RDMA、XDP实现Linux高性能网路以及保障传输安全的方案。
2
DPDK:低成本的高性能网路技术
DPDK(DataPlaneDevelopmentKit,数据平面开发工具包)是在用户态运行的一组软件库和驱动程序。它的一大优点是可以在所有主要CPU体系上加速网路数据包的处理,这样一来,现有硬件无须升级,只要在内核改装相应驱动就可以提高网路性能,是一种低成本的实现方案。
DPDK技术原理是绕开Linux内核合同栈直接访问网卡硬件,进而提升网路数据包的处理速率和吞吐量。DPDK将网卡的数据包直接映射到用户空间,之后使用高效的数据包处理库进行数据包的处理和转发,最后再将数据包发送回网卡。
在数据中心、云估算、虚拟化、网络安全等应用场景中,DPDK可以提升网路应用的性能和吞吐量、降低网路延后、提高网路应用的响应速率和稳定性,还可以支持多种网路合同和数据包格式,具有挺好的灵活性和可扩充性。
DPDK为处理数据包实现了一个“运行到完成”(runtocompletion)的模型,在执行数据平面处理逻辑之前,必须先分配所有资源,之后以逻辑核上执行单元(线程)的方式运行。该模型不支持调度器,以寻址的形式访问所有设备。
DPDK的核心是一组库,右图是核心组件以及它们之间的依赖关系。
DPDK核心组件
《Linux高性能网路解读:从DPDK、RDMA到XDP》详细说明了DPDK的显存管理与优化、DPDK的编译与运行方式linux查看端口占用,介绍了测试和剖析高性能网卡的工具与技巧,是手把手式的贴心教程。这对于述说内核驱动开发来说,是相当友好的学习体验。
接出来,我们了解一种软硬件结合的解决方案。
3
RDMA:软硬兼施的高性能网路技术
RDMA(RemoteDirectMemoryAccess,远程直接显存访问)提供了一种消息服务,应用程序可基于该服务直接读写远程计算机上的虚拟显存。
RDMA相对于DPDK技术,除了绕开了软件合同栈,最大的优点是将数据封装和解析工作放到了网卡里,由硬件来实现。这样就减少了CPU的负载,非常适宜高性能估算场景,诸如分布式神经网路估算。
它的工作原理是通过操作系统的通讯机制构建通道,由应用程序在用户态直接操作硬件,数据无须流经内核,进而实现高效的网路传输性能。
下边我们从数据在两台主机之间的传输过程来了解一下RDMA的工作方法:
▮发送端网卡从本机显存用户空间复制数据到硬件缓冲区,并添加合同头,完成封装工作;
▮发送端网卡将数据通过网线或光纤将数据发往对端;
▮接收端网卡收到数据后,进行合同解封装,之后将数据从硬件缓冲区复制到本机用户空间显存中。
RDMA方案的数据流
由上述可知,采用RDMA方案可以稳定获得网卡最大速度传输能力,而不会由于CPU负载变化导致传输效能波动。但在布署组网时,必须采购支持RDMA的特殊网卡。
《Linux高性能网路解读:从DPDK、RDMA到XDP》对RDMA组网方案与性能评估测试有详尽说明,对于提供高性能估算服务的企业极具参考价值。
4
XDP:高效传输的保障
DPDK在传输数据时采用了操作系统内核旁路方法,这纵然提高了效率,但也丧失了操作系统安全机制提供的防护。这样就存在数据被查获、盗取的风险,因而须要有对数据的保护举措,同时保证高效传输。
XDP(eXpressDataPath,快速数据通路)是一种BPF的程序/代码,可以理解为挂载在BPF处理流程内的挂钩方式。它还能在网路数据抵达网卡时就对其处理,而不过多占用CPU估算资源。
BPF提供了在内核风波与应用程序风波发生时执行一段程序的机制。这促使内核可编程,XDP即基于BPF特点为数据高速传输提供了保障。目前,XDP早已是Linux内核的一部份,与现有的内核网路合同栈完全兼容,两者可以协同工作。
XDP的典型处理流程如下:
▮从网卡收到数据包,提取数据报头信息;
▮读取或更新一些元数据;
▮按照须要更改或则重画数据包;
▮按照策略决定是丢包、重传,还是重定向至内核合同栈等。
典型的XDP程序的执行流程
XDP拥有众多优点。第一,它由Linux内核社区维护,常年使用有保障,也无须额外安装组件;第二,它可以与内核协同,可复用内核安全模型;第三,BPF就能辨识并拒绝执行不安全指令;第四,它不会独占CPU,节省估算资源。
所以,在规划高性能网路施行方案时,须要将DPDK等技术与XDP相结合,尽可能地在性能与稳定、安全之间取得最佳平衡。
5
结语
对于企业来说,在规划和施行网路方案时,一定要从自身业务特性出发,切勿巨额投资以后却是高射炮打蚊虫的疗效。这也须要技术团队对Linux网路技术原理有透彻理解,之后才会选择最适宜的技术方案。
比如,业务发展稳定且已布署大量Linux服务器的企业,为了提高网路效能,可以选择DPDK、XDP技术。对于意欲涉足AI业务的新兴企业来说,就要考虑充分解放算力,获得最优传输效能,可以选择RDMA技术路线。而拥有众多复杂服务的云估算厂商,则要混和布署多种网路传输方案,同时保持稳定和速度。
《Linux高性能网路解读:从DPDK、RDMA到XDP》就为实现上述需求提供了挺好的指引。从对DPDK、RDMA、XDP技术的原理说明,到深入代码级别的分析,再以实例展示使用方式。企业据此就可以举办网路环境评估、技术选型参考、规划施行等工作。
在数据还将指数级暴增的未来,互联网企业都要未雨绸缪,及时调整网路环境,清除网路传输困局,在未来博得先机!
▲点击链接
,即可订购书籍
福利来喽~
#留言有礼#谈谈你是怎样处理海量数据的?或则一些宝贵的学习经验,来留言区一起聊一聊~
>>>活动参与
活动截至之前我们会抽取辛运小金鱼获得《Linux高性能网路解读:从DPDK、RDMA到XDP》纸质书籍一本,包邮到家。
非常声明:
1、一位用户1个月内只能有1次得奖机会linux内核设计及实现,让更多粉丝受惠活动才更有意义
2、每一位用户只有1次留言机会,不容许重复留言~
请你们记住这三个1哦
>>>活动时间
活动截至时间:2023年04月13日16:00整
对奖截至时间:2023年04月14日16:00整