文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一文读懂Linux网络新基石——XDP技术

2024-11-30 04:30

关注

Labs 导读

随着1000Mbps/10Gbps/40Gbps高速率网卡的普及,Linux内核协议栈在海量数据、低时延的场景下显得力不从心,其复杂冗余的包处理逻辑,使得性能瓶颈变的尤为突出。故而针对内核协议栈的各种优化接踵而来,但实际效果却不明显,于是乎kernel bypass技术应运而生,而DPDK就是其高性能网络应用开发解决方案中的佼佼者,并逐渐成为了独树一帜的成熟技术体系。但是DPDK并不能与Linux Kernel的技术生态很好的结合,与现有操作系统集成的难度较大。

Part 01、  XDP概述 

XDP(eXpress Data Path,快速数据面)是近些年兴起的网络数据面技术,为Linux内核提供高性能、可编程的网络数据包处理框架。本质上是Linux Kernel中的一个eBPF Hook(钩子),可以动态挂载,使得ebpf程序能够在数据报文到达网络驱动层时提前进行针对性的高速处理。XDP可以与内核协同工作,既可以绕过繁琐的TCP/IP协议栈,也可以复用TCP/IP协议栈以及内核基础设施。由于其较早的收包路径,对于快速识别丢弃报文具有很高的性能,广泛应用于DDoS防御、防火墙、负载均衡等领域。

而AF_XDP作为一种内核的协议族可以与XDP进行交互,实现XDP收包重定向至AF_XDP指定的UMEM,使得用户态应用可以通过AF_XDP Socket完成数据帧的读取和写入。

Part 02、  XDP架构设计 

XDP系统主要有五个组成部分:

1️⃣XDP driver hook

即网卡驱动中的一个XDP程序的挂载点,运行于网络设备驱动中,由于其驻留在内核空间,无需上下文切换,更加安全、快速,每当网卡接收到一个数据包就会执行这个XDP程序。XDP程序可以对数据包进行逐层解析、按规则进行过滤,或者对数据包进行封装、解封装、转发等。根据不同的工作模式其挂载点也不同,如下图所示,根据网卡支持情况有三处挂载点(蓝色方框内):

图片

2️⃣eBPF虚拟机

XDP程序通过Clang编译成BPF字节码,而BPF字节码加载到内核中是运行在eBPF虚拟机上,eBPF VM支持XDP程序的动态加载和卸载。

3️⃣BPF maps

内核中的key/value存储,作为图中各系统的主要通信通道,类似于进程间通信的共享内存访问。用户态程序可以在BPF Maps中预定义规则,XDP程序可以匹配Maps中的规则对数据包进行过滤等;XDP程序也可以将数据包统计信息等存入Maps,用户态程序可访问Maps获取数据包统计信息。

4️⃣eBPF verifier

由于eBPF代码直接运行在内核地址空间,此它能直接访问(破坏)任何内存。为防止这种情况发生,Verifier(程序校验器)需要在XDP字节码加载到内核之前对字节码进行安全检查。

5️⃣XDP Action

XDP程序对于报文的处理有如下几种方式:

下图基于XDP/AF_XDP系统数据流示例图。实线为数据面流向,虚线的控制面流向。

网卡收到包之后,会先执行挂载的XDP eBPF程序,用户态应用在此之前通过bpf map下放规则,XDP收到数据包之后读取bpf map中的规则实现数据包的过滤分发,即xdp action处理,是DROP,重定向到AF_XDP,还是PASS到内核协议栈。

从图中可以看出,不同eBPF程序之间可以通过BPF maps进行通信,并且内核态也可以通过BPF map与用户态应用进行交互,从而实现数据共享。

Part 03、  VPP的扩展性  

XDP专为高性能而设计,相较与DPDK来说,具有以下优点:

缺点:

适用案例:

➢ 软件路由(XDP routing)

Linux内核实现了一个功能完全的路由表,生态系统功能丰富,结合XDP包处理框架实现了一个完美的路由功能。其性能与常规的Linux内核网络栈相比提升了2.5 - 3倍左右。

➢ ACL/DDoS防御

XDP可以直接在应用服务器上部署包过滤程序来防御此类攻击,无须修改应用代码。如果应用部署在虚拟机里,XDP程序还可以部署在宿主机上,保护机器上所有的虚拟机。其性能单核可以轻松处理10Gbps的最小包Dos流量。这种DDOS防御的部署更加灵活。

相比iptables相对较晚的hook点,XDP的丢包速率要比iptables高4倍左右。

➢ 负载均衡(load balancing)

其原理是通过对包头进行哈希,以此选择目标应用服务器,然后将数据包进行封装,发送给应用服务器,应用解封,处理请求,会包给客户端。在次过程中,XDP服务哈希,封包发送。通过bpf map进行配置,其性能比Linux内核IPVS高4倍左右。

Part 04、未来展望  

ebpf/XDP作为Linux网络革新技术正在悄悄的改变着Linux网络发展模式,当前,XDP技术被OVS、Cilium、Polycube等用于网络快速路径的新选择,DPDK也相应的做了AF_XDP PMD。XDP程序在CPU可用来处理的最早时间点被执行,尤其适合DDoS防御、防火墙、负载均衡。基于XDP+eBPF的的ACL解决方案也有望改善目前的性能瓶颈,有望取代iptables解决方案。

XDP作为一个安全、快速、可编程、集成到操作系统内核的包处理框架。XDP性能虽然与基于kernel bypass的DPDK仍有差距,但优异的可扩展性,可编程性等提供了非常有竞争力的优势。相比于kernel bypass这种非此即彼、完全绕开内核的方式,我们相信XDP有更广阔的的应用前景。

来源:移动Labs内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯