基于DPDK和LX2160A的高效数据包捕获方法研究与应用

2020-11-26 20:19杨勇
电子技术与软件工程 2020年21期
关键词:网络接口网卡报文

杨勇

(中兴通讯股份有限公司 广东省深圳市 518057)

1 概述

随着5G 通信网络基础设施规模部署,大流量、高速率、低延时等特点的业务将会日渐上线。为了承载更多5G 业务流量和用户需求,通信运营服务商对通信网络设备提出了更严格的要求,即要求支持高可用、高带宽、海量连接数、低时延等特点。另外在聚焦5G 技术的优化设计时,要注重资源利用率、吞吐率等的提升与研究,逐渐转变传统的设计理念[2]。面对高带宽数据处理需求,这些设备的CPU 须具备高效数据包捕获处理能力。

数据平面开发套件DPDK,区别于 Linux 操作系统通用性设计目标,DPDK 致力于提供快速数据包处理的函数库与用户态网卡等驱动集合,聚焦于网络应用数据包的高性能捕获处理。恩智浦LX2160A 多核CPU 处理器是Layerscape 系列中性能最高的成员,尤其适合于极具挑战性的高性能网络应用。

本文主要研究基于DPDK 和LX2160A 的数据包捕获应用方案。本文先是通过仔细研究DPDK 的技术特点和价值。接着详细介绍了LX2160A 芯片技术特征,用于高效数据包捕获的数据通道加速架构及其关键组成部件和DPAA2 虚拟对象概念,还有在具体实践应用时需使用的接口文件。然后本文给出基于DPDK 和LX2160A 高效数据包捕获的设计方法,以及在三层网络设备的数据包捕获应用的测试方法;最后用测试结果表明,本文所述的数据包捕获方法效果好,具备可行性和可用性。

2 DPDK的技术特点与价值

2.1 DPDK主要的技术特点

(1)巨页[3]:报文捕获与发送时,使用内存大页HUGEPAGE,显著降低TLB miss,同时借助内存多通道交错访问,显著提升内存访问效率。

(2)用户态驱动[4]:使用应用程序空间下驱动程序,大幅避免了不必要的内存拷贝和系统调用,有利于快速迭代优化。

(3)CPU 亲和性与独占特性:将指定线程绑定到特定CPU 核上运行,避免线程在不同vcpu 间频繁切换,保证更多的cache 命中,也可以避免操作系统调度的性能消耗。

(4)无锁队列:提供内存池和无锁环形缓存管理,加快报文数据交换效率。

(5)软件调优:使用cache 缓存行对齐处理和预取数据,实现多元数据批量操作。

以上这些技术特点,也是针对传统的内核态数据包捕获过程的瓶颈点做了改进。影响数据包捕获性能的主要原因有内存访问、系统开销和TCP/IP 协议栈的处理三个方面[5]。操作系统传统的内核态包捕获过程,先是网卡收到报文,触发收报中断;接着CPU 将数据包从网卡缓存空间拷贝至内核内存空间,经过内核协议栈处理后,再将数据包拷贝到用户态内存空间。在此数据包处理过程中,消耗大量CPU 资源用来处理中断、内存拷贝以及系统调用[6]。

2.2 DPDK的价值探讨

DPDK 最初是英特尔等几家公司开发的高性能包处理软件框架,在X86 平台下使用,几乎支持所有Intel 网卡,起到了抬高Intel 硬件产品身价的作用。在2017年,DPDK 项目正式成为Linux基金会旗下的项目。在Linux 基金会的管理下,DPDK 提供一个更加中立的环境,促进对DPDK 爱好者之间的协作交流,实现跨多个CPU 架构更快地处理数据包和网卡(NIC)适配。目前,DPDK不仅支持Intel 硬件产品,正在支持越来越多的厂商硬件产品,包括Intel、Nxp、Cavium、网讯等硬件厂商产品。

DPDK 包含库在内的数据平面开发套件,能够满足多种CPU架构上运行的数据包捕获处理要求,还能对业务负载进行加速。通过快速地数据包处理,DPDK 在网络设备和虚拟化设备中得到广泛应用。

3 LX2160A芯片包处理架构与应用方案

3.1 主要技术特征

拥有16 个Cortex-A72 CPU,运行频率高达2.2GHz;支持最多16 个以太网端口;支持的以太网速率包括每秒1、2.5、10、25、40、50 和100GB;支持114Gbps L2 以太网交换机。

3.2 DPAA2关键部件的作用

(1)Mgmt Complex(简称MC):DPAA2 硬件资源对象不直接呈现给应用程序使用,而是被虚拟化成多种DPAA2 逻辑对象供应用程序使用。MC 建立DPAA2 硬件资源对象和DPAA2 逻辑对象的映射关系,封装访问DPAA2 逻辑对象的API 接口,供应用程序使用DPAA2 逻辑对象。

(2)WRIOP:负责管理DPAA2 对象的读写访问接口、数据包解析以及查询匹配等转发处理。

(3)QBMan:用于收发包队列管理以及收发报缓存管理。

(4)Accelerators:这是加速器引擎,包括加密和安全加速器、模式匹配加速器、数据压缩/解压缩加速器以及DMA 控制器等。

(5)AIOP:这是可编程的多核微引擎,可应用于高效分组报文处理。

在数据包捕获应用场景,MC、WRIOP 和QBMan,是必选对象;Accelerators 和AIOP 是可选对象,主要用于数据面业务功能设计。

3.3 常用的DPAA2数据包处理对象[7][8]

(1)DPMAC:作为虚拟MAC 接口,用于访问物理MAC 接口。

(2)DPNI:作为虚拟网络接口,应用程序包处理直接配置该类型网络接口,支持基本的网络协议处理以及业务卸载等功能。

(3)DPSW:支持数据通道的二层交换功能,能够实现不同网络接口之间数据包交换处理以及镜像处理等。

(4)DPBP:负责数据通道缓存管理和队列管理。

(5)DPIO:作为数据通道基本网络接口,MC 通过DPIO 访问QBMan 资源。

DPAA2 对象有很多,以上对象是用户态数据捕获应用时需要使用的对象。

3.4 DPAA2包捕获应用初始化

在使用DPAA2 包捕获应用时,需要完成一些必要的初始化操作,操作如下:

(1)加载MC 固件,作为访问DPAA2 对象的驱动。

(2)配置Data Path Configuration(DPC)文件,完成MC 工作参数配置以及单板网络接口工作模式、协商模式以及带宽等配置。

(3)配置Data Path Layout(DPL)文件,定义MC 需要创建的DPAA2 工作对象,包括Data Path Resource Container(DPRC)、DPNI 以及包含关系等。

(4)在完成MC 固件加载和DPL 文件配置后,通过操作复位寄存器便可启动MC。

(5)Virtual Function I/O(VFIO)映射,安全的把设备I/O、中断、DMA 等展现到用户空间,在用户空间完成设备驱动的框架。

上述几步操作可在系统BOOT 启动阶段执行,到了应用程序运行阶段,还可以根据需要动态修改DPAA2 对象属性。

4 DPDK的数据包处理应用

4.1 实践应用背景

本文所述的实践应用,要处理多种报文类型的数据报文。经过业务架构和软件架构设计,依据业务类别将要处理的数据报文分成3 类,分别是系统管理面、协议控制面和数据面的报文,每类报文所需最大带宽为10G。这3 类数据报文分别走不同的物理链路达到CPU 网卡接口,使得这3 类数据报文都能够得到高优先级处理,简化并发处理场景的软件架构复杂度,系统数据报吞吐量也得到了极具提升。本文在围绕LX2160A CPU 设计的硬件板卡上,设计基于DPDK 的高性能数据包捕获应用方案。

4.2 使用的LX2160A芯片硬件资源

基于上述应用背景,系统方案规划LX2160A 芯片出3 个10G以太网接口,连接3 条不同的物理链路,用于收发不同报文类别的数据报文。软件架构方案设计3 个收发报线程,分别独立部署于3个vcpu 核,设置亲和性和排他属性。

4.3 数据包捕获与应用

总结数据包捕获处理主要步骤如下:

(1)初始化DPAA2 包处理对象,见3.4 节描述。

(2)使用rte_eal_init 函数接口,初始化EAL 环境,完成包处理线程创建、亲和性设置以及内存访问通道等设置。

(3)使用rte_pktmbuf_pool_create 等函数接口,初始化DPDK Mbuf、Mempool 内存池。

(4)使用rte_eth_rx_queue_setup 函数接口初始化收包队列;使用rte_eth_tx_queue_setup 函数接口,初始化发包队列。

(5)使用rte_eth_dev_configure 等函数接口,初始化网络接口。

(6)使用rte_eal_remote_launch 函数接口,挂接APP 数据包处理接口。

(7)使用rte_eth_rx_burst 函数接口,从网络接口接收数据包;使用rte_eth_tx_burst 函数接口,从网络接口发送数据包。

经过以上几个步骤的操作,便可以实现从指定网络接口循环收发数据包。对于一些业务处理性能要求很高的网络设备,数据包捕获、解析以及业务应用处理往往是并行处理的软件架构[9],实现高效数据包处理。本文研究的数据包捕获与应用的项目便是采用数据包捕获与业务处理分离的软件架构。在捕获数据包之后,根据包文特征传递给特定的业务应用处理。

4.4 测试小结

按照上述方案完成软件设计后,通过如下操作,测试本文提出方案的实践效果。

(1)连接测试的网络接口:在基于LX2160A CPU 构建的三层网络设备板卡上,采用DPDK 数据包处理框架,从16 个MAC 中选择一个作为测试网络接口;使用一个数据测试仪接口与该接口相连。

(2)构建测试数据流量:选择一种较为常见的电信运营商集采测试场景的业务配置,配置OSPF 路由协议,建立测试路径;在测试仪构造10G 流量的1024 字节长度的数据流。

(3)分析数据包处理性能:CPU 收到收到数据报文后,更换接收报文的以太帧帧头的MAC 信息,然后从接收MAC 接口发送给测试仪,观察测试仪收发报文数量一致,符合应用要求。

5 结束语

基于LX2160A 的硬件环境进行收发流验证,验证结果表明:不带业务负载时,接收数据包的性能近乎于线速;带业务负载时,对比BPF[10]数据包捕获方案,基于DPDK 的数据包捕获性能提升近十倍;数据包捕获后会交付给业务模块,该交互处理逻辑还有优化空间,优化后数据包吞吐量还将会有明显提高。

基于LX2160A 这种具备丰富核资源且带有网络加速功能的硬件架构环境,将数据包捕获和业务负载分配到不同的CPU 硬件核,实现数据包捕获和工作负载处理并发处理,从而简化硬件成本、简化软件架构复杂度和加快产品上市时间。

猜你喜欢
网络接口网卡报文
在DDS 中间件上实现双冗余网卡切换的方法
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
Server 2016网卡组合模式
双冗余网络接口自动切换测试模块的设计与实现
浅析CTC与GSM-R系统网络接口及路由配置改进措施
ATS与列车通信报文分析
网络设置管理
读编往来