分享
基于XDP的高速流量采集技术研究_储苏红.pdf
下载文档

ID:2251282

大小:1.92MB

页数:7页

格式:PDF

时间:2023-05-04

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 XDP 高速 流量 采集 技术研究 储苏红
电子设计工程Electronic Design Engineering第31卷Vol.31第4期No.42023年2月Feb.2023收稿日期:2021-10-21稿件编号:202110106基金项目:中国科学院战略性科技先导专项课题(XDC02070100)作者简介:储苏红(1997),女,安徽安庆人,硕士研究生。研究方向:新媒体技术、网络通信技术。信息技术的快速发展推进了网络服务的广泛普及,越来越多的网络设备和应用程序造成流量爆发式增长,日益复杂的网络环境中存在着巨大的安全隐患。传统的安全设备如防火墙、漏洞扫描设备、网络监控程序等很难有效防范新型安全威胁1。网络回溯分析系统通过捕获留存网络流量可精准定位攻击的发生点,对网络威胁进行全方位、深层次、可反复回溯的检测分析2-3,从而更容易检测出潜在的攻击行为。在高速网络下实现高性能网络流量捕获是网络回溯分析系统的基本功能。针对已有的基于 DPDK的网络回溯分析系统,已经实现了较高性能的数据包捕获功能,然而在实际使用中经常遇到 DPDK 不基于XDP的高速流量采集技术研究储苏红1,2,刘 磊1,2(1.中国科学院声学研究所 国家网络新媒体工程技术研究中心,北京 100190;2.中国科学院大学,北京 100049)摘要:为了更好地适应网络回溯分析系统对高速网络下数据包捕获的要求,研究了基于 eXpressData Path(XDP)的高性能流量采集技术。通过使用零拷贝套接字AF_XDP旁路内核协议栈,直接将数据包从内核空间传输到用户空间,有效减少了用户空间和内核空间频繁上下文切换带来的系统开销,提高了数据包捕获性能。在 Linux平台上,基于 XDP技术实现了数据包的捕获功能,并与基于 Intel Data Plane Development Kit(DPDK)的流量采集方式进行实验对比。实验结果表明,XDP满足DPDK的流量采集性能要求,并且具有独立于硬件设备的优势。关键词:高性能数据包捕获;XDP技术;零拷贝;AF_XDP;DPDK技术中图分类号:TN915文献标识码:A文章编号:1674-6236(2023)04-0021-07DOI:10.14022/j.issn1674-6236.2023.04.005Research on highspeed traffic acquisition technology based on XDPCHU Suhong1,2,LIU Lei1,2(1.National Network New Media Engineering Research Center,Institute of Acoustics,Chinese Academy ofSciences,Beijing 100190,China;2.University of Chinese Academy of Sciences,Beijing 100049,China)Abstract:To keep up with the demands of precision packet capture on highspeed networks in networkretrospective analysis system,a highperformance traffic acquisition technology based on eXpress DataPath(XDP)is studied.The zerocopy socket AF_XDP is used to bypass the kernel protocol stack,directlypassing network traffic from the driver in the kernel up to userspace.Effectively reduce the systemoverhead caused by constant context switches between user space and kernel space,and improve theperformance of packet capture.The packet processing functionality is implemented based on XDP inLinux,and the performance tests are designed to compare it with packet capture mechanism based onIntel Date Plane Development Kit(DPDK).The experimental results show that XDP can reach the highperformance level of DPDK,and has the advantage of that no special hardware features are needed.Keywords:highperformance packet capture;XDP technology;zerocopy;AF_XDP;DPDK technology-21电子设计工程 2023年第4期支持原生网卡的问题,需要替换成支持 DPDK 的网卡或者加载 DPDK专用驱动程序才能使用。为了解决上述问题,需要研究新的高性能数据包捕获技术应用于网络回溯分析系统,使其能够达到现有的性能指标并解决硬件依赖性问题。该文对 XDP 的原理和数据包处理机制进行了深入分析和研究,实现了基于 Linux 平台的数据包采集功能。利用 Spirent网络测试仪和 DELL服务器分别对基于 XDP 和 DPDK 的网络流量采集性能进行测试。实验结果表明,XDP 在多队列下与 DPDK性能相似,并能与现有内核网络协议栈更好地配合。相比于 DPDK,XDP具有独立于硬件设备,支持任何带有 Linux驱动程序的网卡,无需满足特定网卡供应商的要求。1高性能报文采集技术传统 Linux 架构下,网卡队列接收到数据包后产生硬件中断,从而触发 CPU 中断,应用程序处理网络报文,整个过程中不断地进行中断处理、上下文切换,带来巨大的CPU开销,严重降低了网络应用程序的性能4。为了实现在高速网络下能够捕获数据包,目前研究人员已经设计出一些高性能数据包捕获架构。1.1Libpcap技术Libpcap(Library of Packet Capture)是由伯克利实验室开发的可用于 Unix、类 Unix(Linux、BSD 等)和Windows等多种操作系统的开源C/C+函数库,现已成为网络数据包捕获的标准接口5,很多常用的数据包捕获应用程序如Wireshark、Tcpdump、Snort等都是基于Libpcap实现的。Libpcap 捕获数据包流程:在网卡为混杂模式下,Libpcap 首先复制数据包进行前置处理。然后将复制的数据包传送到 BPF(Berkeley Packet Filter)过滤器,根据设置的规则对流量进行筛选,只将用户所需要的数据包继续传输到内核缓冲区,从而有效减少对无效数据包的处理开销。最后,应用程序通过系统调用读取内核缓冲区的数据包,以进行后续处理。如上所述,Libpcap从网卡捕获数据包传送到用户空间过程中同样需要经过内核协议栈进行处理,与传统 Linux构架下的数据包捕获方式类似。同样存在需要多次拷贝数据包和频繁进行上下文切换的问题,其性能并没有得到太多优化。1.2PF_RING技术PF_RING 是由 Luca Deri 为优化流量捕获过程中存在的多次数据拷贝和频繁触发硬件中断等问题而研发的高速数据包捕获库。PF_RING通过共享内存避免数据包从内核空间到用户空间的拷贝,并结合设备轮询(NAPI)技术,减少了 CPU 中断次数,极大地提高了数据包传输速率6。PR_RING实现机制:首先在内核中添加PF_RING协议簇和具有环形缓冲区的socket,提供两个标准接口供网卡向缓冲区写入数据包和应用程序,并从中读取数据包;网卡接收到数据包后,PF_RING将数据包拷贝到环形缓冲区,由于这块环形缓冲区内存由内核和用户空间共享,应用程序就可直接读取数据包,简化了拷贝过程7。但是通过 PF_RING 的数据包捕获过程中并没有实现零拷贝。另外,在一个时间点只有一个应用能够分发数据包,无法满足多队列的实现需求。1.3Netmap技术Netmap是由 Luigi Rizzo等人基于零复制技术开发实现的高性能I/O框架,不需要依赖特定硬件或修改应用程序就能以较高性能实现用户应用与网卡间的数据包传递,在 900 MHz单核 CPU 下就能实现10 G网卡下线速数据包转发8。在共享内存中,Netmap使用两对环形队列进行数据传输。网卡接收到数据包之后直接将其放入Netmap环形队列,应用程序检测到已有数据包传入就通过调用 Netmap API 直接获取环形队列里的数据,这个过程实现了零拷贝从而能有效提高数据传输性能9。另外,Netmap 也有较好的安全性保证。虽然使用共享内存方式实现了数据传输,但是内核和网卡寄存器的关键内存区域没有暴露给应用程序,因此不会因为运行应用程序而导致内核崩溃。然而 Netmap只能使用中断通知机制,并没有完全解决性能瓶颈。1.4DPDK技术DPDK是 Intel公司开发的用于多核 CPU的数据包处理套件,可提供丰富的数据包快速处理开发函数库和网卡驱动库,已成为目前主流的高性能网络报文处理架构10。DPDK使用内核旁路技术、用户空间程序完全控制网络硬件,大大减少了由于上下文切换、中断等事件引起的内核开销,具有较高的数据-22包捕获效率。DPDK架构图如图1所示。缓冲区管理:负责创建、释放报文缓存;内存池管理:负责分配管理内存中的对象池,能够快速分配、释放缓冲区;环管理:采用生产者消费者模式的无锁环形队列进行资源的分配与释放,也能实现核间或处理单元间的通信;轮询驱动模块:实现在轮询方式下进行网络报文收发,通过 UIO(Userspace I/O)驱动技术拦截中断,避免因中断产生的响应时延,极大提高了网卡收发性能;环境抽象层:提供一个通用接口获得对底层资源的访问,主要负责系统初始化、PCI设备初始化、内存资源以及驱动程序初始化工作11。图1DPDK架构图DPDK支持run-to-complete报文处理模型,应用程序执行之前需先分配好所有的资源,并作为执行单元运行在逻辑核上。数据面处理程序执行时,结合自身需求调用相应的DPDK API,然后运行网卡驱动程序,将数据包直接转发到用户空间,这个过程中实现了内核旁路。应用程序通过轮询报文到达标志位,监测是否有新的报文需要处理,通过轮询的方式极大地提高了报文处理能力。另外,DPDK 可以通过 HUGEPAGE 和 CPU Affinity机制来提高网络流量的处理性能。DPDK 在提供了极高的数据包处理性能的同时,也存在一定的缺陷。其采用的内核旁路技术完全绕开操作系统,因此操作系统提供的较为成熟的配置、部署和管理工具都将停止运行,应用程序隔离和安全机制也将被绕开,带来了重大的管理、维护和完全缺陷。另外,在实际使用中,网卡需要加载专门的DPDK驱动程序才能与硬件交互,目前DPDK只支持部分网卡,并非所有的网卡都能使用 DPDK 实现数据包捕获。2基于XDP的报文采集技术XDP 是 Linux 4.8中引入的一种新型内核组件,在网络数据路径上提供可编程、高性能的数据包处理12。XDP将高性能的数据包处理与操作系统内核进行集成,既保留了操作系统提供的管理接口和安全防护能力,又能加速基本路径中的数据包处理。XDP主要由四个组件构成:XDP驱动挂钩:位于网卡驱动程序中,是XDP程序的主要入口点,在网卡接收到数据包时执行;eBPF(extended BPF)虚拟机:eBPF 程序的执行环境,编译并执行XDP程序的字节码;BPF映射:键/值存储方式,用于与系

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开