基于ZYNQ 的万兆以太网流信息统计架构
2023-03-10蔡鸥刘一清
蔡鸥,刘一清
(华东师范大学通信与电子工程学院,上海 200241)
随着互联网技术的不断进步,网络速率不断提升,万兆以太网接口已经成为了核心网的主流设备接口[1-4],更高的吞吐量带来了更严峻的安全挑战[5]。为了减少高吞吐量的万兆以太网链路中的数据异常以及网络攻击带来的损失,需要对链路中的网络流的信息有极深的了解,知道每一包数据的来源和目的,知道链路的数据量和数据速率,对流量历史数据进行整理[6-7],以此对该条链路进行全面可靠的管理。此时,高性能的万兆以太网流信息统计架构就显得尤为重要。
ZYNQ-Ultrascale+是Xilinx 公司推出的MPSoC(Multi-ProcessorSystem onChip)芯片,其内部可分为PL(Programmable Logic)以及PS(Procressing System)两部分。PL 端集成了现场可编程阵列(Field-Programmable Gate Array,FPGA),而在PS 端包含多核ARM Cortex-A53 处理器。这种结构保证了PL 和PS之间的高速连接,可以快速处理万兆以太网数据并进行反馈[8-10]。
该架构采用了ZYNQ-Ultrascale+器件来管理万兆以太网的数据包,能够处理达到万兆线速的网络数据包,并且具有低延时、高吞吐的特点[11-12]。
1 系统设计
所设计万兆以太网流信息统计架构如图1 所示,分为PS 和PL 两个部分。其中,PL 部分主要包括了Xilinx 的万兆以太网子系统IP 核(10G Ethernet Subsystem)、包头检测与校验模块(Packet Detection and Checking)、包头卸载模块(Packet Offload)、流表控制模块(Flow Table Control)、流表建立模块(Flow Table Establish)、流表统计模块(Flow Table Statistics)、网络包数据统计模块(Packet Data Statistics)以及组包模块(Packet Buliding)。PS 部分主要包含了流表信息计算与分析模块(Flow Table Calculation and Analysis)以及网络包数据分析模块(Packet Data Analysis)。
图1 总体结构图
该架构中有两个光口,其中一个光口OP1 接入到网络链路的镜像端口,通过镜像端口输入该网络链路的所有网络数据,通过Xilinx 的万兆以太网子系统IP 核将数据解析成为AXI4-Stream 类型的数据,再通过后续的包头检测与校验模块验证网络数据包的合法性,包头卸载模块将数据包的包头信息和数据信息进行分离,同时将包头中的五元组信息——协议、源IP 地址、目的IP 地址、源端口、目的端口组装成为流信息,将所有相同五元组信息视为同一个流,来进行后续流信息的统计与管理。网络流信息大大减少了网络数据,方便了后续处理[13]。流信息通过流表控制模块进行匹配,如果是未记录的流则新建流表表项,如果是已记录的流则进行流表的更新统计。更新的流表以及网络数据包的数据部分交由PS 部分的流表信息计算与分析模块以及网络包数据分析模块对以太网流信息进行统计分析,包括计算数据速率,统计流表表项,统计网络数据总量,各个协议的吞吐量等。
另一个光口OP2 连接至管理网络链路中,用户可以通过OP2 控制流信息的统计方式以及查看OP1以太网链路的统计结。
2 功能模块设计
2.1 万兆以太网子系统IP核
该架构使用的万兆以太网子系统IP 核为Xilinx公司推出的10G以太网MAC(Media Access Controller)层和物理层的解析方案,该IP 核支持IEEE 802.3 标准以太网协议,其中还定义了PCS(Physical Coding Sublayer)子层的64B/65B 编解码。该IP 核的物理层主要完成了数据的编解码、串化和解串、信号的放大、调制和整型;MAC 层主要完成了帧定界、同步、寻址、错误检测、冲突处理等任务[14]。
通过使用万兆以太网子系统IP 核,可以将10GBASE-R 标准的以太网数据流与内部可处理的64 位AXI4-Stream 数据格式进行转换[15],具体的数据时序如图2 所示。当有外部万兆以太网数据包进入到ZYNQ 芯片,IP 核会将tvalid 信号拉高来表示有数据到来,有效的以太网数据将会在tdata[63:0]信号上传输,同时tkeep[7:0]信号会在数据传输过程中持续全部拉高。当一帧以太网数据全部传输完成,则会在最后一个时钟拉高tlast 信号,同时tkeep[7:0]信号的每一位会根据最后tdata 信号的有效位相应拉高。如最后一个时钟只有tdata[7:0]的数据有效,则只有tkeep[0]拉高,其他位均拉低。
图2 AXI4-Stream数据时序
2.2 包头检测与校验模块
该模块主要将IP 核输入的AXI4-Stream 格式的以太网数据进行协议检测,并且根据相应的协议进行网络层校验。网络层的具体校验过程为:将其中校验和置0,将所有IP 首部以16 位为单位组成的数字二进制相加,并且将全部相加得到的高16 位数字加到低16 位上,将最后得到的数字二进制取反即可得到传输正确的校验和[16]。该模块主要保证了进行统计的是传输有效的以太网数据包。
2.3 包头卸载模块
该模块主要将传输正确的以太网数据包的包头信息以及数据部分分离。其中包头信息包括了MAC 层头部的源MAC 地址、目的MAC 地址以及网络层头部的源IP 地址、目的IP 地址、源端口、目的端口;数据部分指的是以太网数据包应用层以上的数据。经过包头卸载模块,将分离出来的五元组作为同一个流的判断标准交给流表控制模块进行判断,将分离的数据部分交给网络包数据统计模块进行统计。
2.4 流表控制模块
该模块主要将包头卸载模块中的五元组信息,与现有的五元组流表进行匹配。五元组中只要有一个元素不匹配即为一条新的流,每一条流代表的即是一台主机的一个端口发送至另一台主机相同端口的所有数据的集合。为了提高匹配的速率,减小统计延时,采用了并行子块的方式,将3 200 条流表分成了100 个子块进行匹配。每个子块最高存储32 条流表,并且采用横向存储的方式,具体的存储顺序为子块0→子块1→……→子块0→子块1→……,保证了每个子块的匹配深度大致相同,进一步提高匹配的效率。通过匹配流的五元组信息,如果是新的流则后续交给流表建立模块进行流表更新,如果是已有的流,则交给流表统计模块进行该流的包数统计。
2.5 流表建立模块
该模块完成了新流的建立以及流表的更新,新流的数据格式如图3 所示,其中源MAC 地址和目的MAC 地址为48 位,不作为流表统计的匹配元素。8位协议、16 位源端口、16 位目的端口、32 位源IP 地址和32 位目的IP 地址作为匹配的关键元素。24 位时间戳是在器件上电之后该流进入流表控制模块的最新时间,单位为秒,时间戳是用来判断是否要主动删除过久没有数据包的流。包数则是用来统计该流总共的以太网数据包数。
图3 流数据格式
2.6 流表统计模块
该模块主要将流表控制模块的匹配流进行包数统计。这里主要将已存在流的包数进行计数并且更新最新流的时间戳,同时也对流表中过期的流进行删除,流表中表项的生存时间设置为7 天,7 天之内没有任何该流的数据包到来则认为该流过期,进行删除。
2.7 网络包数据统计模块
该模块主要将包头卸载模块的网络数据部分进行缓存并统计该包数据的字节数。其中缓存部分用DDR4 存储器进行,DDR4 的读写速率为2 666 Mb/s,同时缓存1 000 包的网络数据,并可交由网络包数据分析模块进行后续处理。
2.8 流表信息计算与分析模块
该模块主要将建立的流表进行计算与分析。经过流表建立模块和流表统计模块后获得最新的流表,可以在PS 部分进行数据整合以及分析,具体分析结果包括某一条流的包数,特定协议的流的个数,TCP 的同步、握手包包数,接收数据最多的目的IP 地址,发送数据最多的源IP 地址以及系统时间等等。
2.9 网络包数据分析模块
该模块主要对以太网数据包数据部分进行分析,可以计算出网络数据包的实时速率,以及系统上电以来的数据总数,并且可以对部分应用层协议进行初步解析,包括DNS、HTTP、HTTPS,可以解析出域名网址、请求类型等参数。
2.10 组包模块
该模块主要将流表信息计算与分析模块以及网络包数据分析模块的结果合并为数据流,并且加上管理主机的MAC 地址、IP 地址、端口,同时再进行校验和计算,以此构建成AXI4-Stream 格式的合法以太网数据包交付给后续万兆以太网子系统IP 核通过OP1 来发送给管理链路,供管理人员进行查看。
3 应用案例
接下来以实际的“万兆以太网监控系统”为例来介绍设计的架构如何进行应用。图4 展示了监控系统的应用示意图,包含了两台通信主机、一台万兆以太网监控系统、一台管理主机。其中监控系统采用的就是所设计的基于ZYNQ 的万兆以太网流信息统计架构。所用的核心芯片型号为ZYNQ-Ultrascale+系列的XCZU7EG 芯片。监控系统主要管理通信主机1 至通信主机2 之间的网络链路,通过OP1 进行以太网数据输入,再通过所述架构的工作,从OP2 将管理结果传输至管理主机进行查看,完成了对于以太网链路的监控,确保了以太网环境的可控性。
图4 万兆以太网监控系统应用示意图
通信主机1 与通信主机2 的网络链路正常进行数据交互,并将所有以太网数据复制一份至监控系统的OP1。当OP1 监测到以太网数据,监控系统内部根据所述架构中PL 部分的万兆以太网子系统IP核、包头检测与校验模块、包头卸载模块将合法的以太网数据包解析成为五元组信息以及数据信息。五元组信息通过流表控制模块、流表建立模块、流表统计模块构建实时的流表最后交由PS 部分的流表信息计算与分析模块分析出感兴趣的结果。数据信息通过网络包数据统计模块统计包的字节数再交由PS 部分的网络包数据分析模块计算出数据速率。最后,将所有计算结果通过组包模块、万兆以太网子系统IP 核封装成标准以太网数据包由OP2 发送至管理主机。
4 测试及验证
图5 上边为测试系统实物图,包含了(从左往右)两台通信主机、一台万兆以太网监控系统、一台本地管理主机、一台远程管理主机。其中万兆以太网监控系统如图5 所示,下边正插在本地管理主机上。
图5 测试系统实物图
4.1 协议统计测试
协议统计测试主要测试在通信主机1 与通信主机2 正常通信时,流量统计架构能否将各个协议的字节数和包数统计出来。
为了保证统计的万兆以太网数据可控[17-18],可以直接观察统计架构的正确性,人为控制通信主机1发送如图6 所示的各个协议数据包,并按照ARP、ICMP、TCP、UDP 的包数为1∶1∶1∶4 的比例进行发送,其中TCP、UDP 的数据总量的比例也接近1∶4。可以看到最后的统计结果与发送数据的预期一致,说明了流量统计架构的可行性,并且能够支持ARP、ICMP、TCP、UDP 等协议包的管理监测。
图6 协议统计测试结果
4.2 流表统计测试
流表统计测试主要测试通信主机1 与通信主机2 正常通信时,流量统计架构能否准确地分辨每一条流,并对不同流进行统计。
如图7 所示,通信主机1 发送源IP 地址、目的IP地址、源端口固定,但目的端口从5 600 递增的以太网数据包各10 包,可以看到最后的统计结果,将流的五元组以及包数准确地统计出来,支持了3 100 条数据记录,统计延迟仅为703 μs,可以支持高吞吐量的以太网数据链路。
图7 流表统计测试结果
4.3 应用层分析测试
应用层分析测试主要测试流量统计架构对于应用层数据各个参数的分析结果。测试结果如图8 所示,可以看到,流量统计架构解析除了HTTP 协议的请求类型、主机域名、状态代码等信息。说明流量统计架构能够对以太网数据的应用层的数据部分进行分析。
图8 应用层分析测试结果
5 结束语
为了解决高流量数据通路的管理问题,提出了一种基于ZYNQ 的万兆以太网流量统计架构,通过将万兆以太网数据包进行卸载分离,并行处理包头信息和数据信息,交给后续模块进行统计分析。将所述架构应用于“万兆以太网监控系统”,经测试该监控系统功能完善,并且能够支持多种协议统计以及高吞吐链路统计。