基于FPGA的万兆以太网TCP/IP协议处理架构
周伟
苏州盛科通信股份有限公司 江苏苏州 215215
摘要:本文针对目前万兆网络流量服务器数据处理所面临的瓶颈问题,提出了一种基于FPGA的万兆以太网TCP/IP协议处理架构,将数据平面与控制平面相结合,让各功能模块协同操作,并结合高速的I/O处理和存储器处理,实现了完整的 TCP/IP 协议栈,有效解决了目前服 务器处理万兆网络流量的瓶颈问题。
关键词:FPGA,万兆以太网,TCP/IP协议
0引言
随着互联网技术的快速发展,各行对于大容量、高速率、多功能的以太网功能模块的需求日益增长。特别是随着万兆以太网技术的逐渐成熟、成本逐渐降低,万兆以太网接口已成为核心网的主流设备接口。但是由于TCP/IP协议处理速度的限制以及对服务器CPU资源的高要求,使得万兆以太网技术进步发展的瓶颈。本设计基于硬件FPGA芯片的TCP/IP协议栈处理架构,可以更好地适用于TOE网卡,以最少的CPU资源来获得高速网络数据流[1]。
1 FPGA的优势
基于FPGA的万兆以太网TCP/IP协议处理架构是一种利用现场可编程门阵列(FPGA)技术来处理万兆以太网数据流的架构。它主要用于网络设备中,如交换机、路由器和防火墙等,以提供高性能和低延迟的数据包处理能力。
首先,FPGA的可编程性使得这种架构具有灵活性和可定制性。根据不同的应用需求,可以通过重新编程FPGA来实现不同的协议处理功能,甚至可以在运行时动态的修改协议处理逻辑。这种灵活性使得基于FPGA的架构能够适应不断变化的网络环境和应用需求。
其次,FPGA的并行处理能力和硬件加速特性使得基于FPGA的架构能够实现高性能的数据包处理。相比于基于通用处理器的软件实现,基于FPGA的架构可以实现更高的数据包处理速度和更低的处理延迟,从而提供更好的网络性能[2]。
总之,基于FPGA的万兆以太网TCP/IP协议处理架构是一种利用FPGA技术来实现高性能、低延迟的网络数据包处理的架构,它具有灵活性、可定制性和高性能的优势。
2基于FPGA的万兆以太网TCP/IP协议处理架构设计
2.1系统设计
基于FPGA的万兆以太网TCP/IP协议处理架构主要包括Xilinx的万兆以太网子系统IP 核、包头检测与验证模块、数据卸载与应答模块、数据存储模块、组包发送模块、包重传模块、数据包输出与检验和计算模块、PCIe事务处理模块、上层核心控制模块和下层核心控制模块等功能模块。以Verilog语言实现的硬件逻辑电路模块和IP核所设计的万兆以 太网TCP/IP协议处理架构如图1所示。
整个系统的架构分为数据部分和控制部分,其中数据部分只需要根据控制部分所给予的控制信息,对网络数据进行接收、解包、分析和处理;控制部分则根据数据部分所提供的网络数据包的包头信息,并依据TCP/IP协议标准进行数据的控制和调度。利用该系统架构进行网络数据的接收和处理时候,可以将万兆网络数据流经由万兆以太网子系统IP核转化为64bit AXI4- Stream数据流,并经过检测和验证之后交予控制部分,由控制部分对各种网络数据进行进一步的处理[3]。
2.2功能模块设计
对于基于FPGA的万兆以太网TCP/IP协议处理架构功能模块的设计主要包括万兆以太网IP核、上层核心控制模块(TCP/UDP)、下层核心控制模块(ICMP/ARP)、包头检测与验证模块、数据卸载应答模块、数据组包发送模块、数据缓存模块、数据包输出与校验和计算模块、PCIE事务处理模块、包重传模块等功能模块。下面以上层核心控制模块(TCP/UDP)、下层核心控制模块(ICMP/ARP)、数据缓存模块、包重传模块为例进行分析。
2.2.1上层核心控制模块(TCP/UDP)
上层核心控制模块是基于FPGA的万兆以太网TCP/IP协议处理架构中的重要组成部分,负责实现TCP(传输控制协议)和UDP(用户数据报协议)的核心功能。上层核心控制模块通常包括连接管理、数据传输、流量控制、拥塞控制、数据传输、错误检测与处理等功能,上层核心控制模块实现了TCP和UDP协议在基于FPGA的万兆以太网系统中的关键功能,提供了可靠的数据传输、连接管理和拥塞控制等功能,以支持高性能和低延迟的网络通信[4]。用户按照万兆MAC用户接口时序发送网络数据包,并进行网络数据包的发送、提取。
2.2.2下层核心控制模块(ICMP/ARP)
下层核心控制模块是基于FPGA的万兆以太网TCP/IP协议处理架构中的另一个重要组成部分,负责实现ICMP(Internet控制消息协议)和ARP(地址解析协议)的核心功能。下层核心控制模块主要包括ICMP协议处理、ARP协议处理、ARP表管理、ARP请求与应答、错误处理与通知、网络广播和组播支持、接口管理与数据传输等功能模块。下层核心控制模块实现了ICMP和ARP协议在基于FPGA的万兆以太网系统中的关键功能,提供了网络控制消息的处理、地址解析和网络广播等功能,以支持高效的网络通信和数据包转发。
2.2.3数据缓存模块
万兆网络数据接口64 bit/6.4 ns,PCIE接口为128 bit/8 ns,两者在数据突发速率、数据位宽、数据时钟等方面存在着显著差异,因此需要利于数据缓存模块进行网络数据的缓存、位宽转换和速率匹配,具体结构如图2所示。
2.2.4包重传模块
包重传模块是基于FPGA的万兆以太网TCP/IP协议处理架构中的一个重要组件,用于实现丢包检测和重传机制,确保数据包的可靠传输,主要包括丢包检测、重传触发、重传策略、重传队列管理、重传计时器、重传控制、与核心控制模块的协作等功能。通过包重传模块的功能,基于FPGA的万兆以太网TCP/IP协议处理架构可以实现数据包的丢失检测和重传,提供可靠的数据传输机制,确保在不稳定的网络环境下的数据可靠性和完整性。
3结语
综上所述,基于FPGA的万兆以太网TCP/IP协议处理架构可以实现高性能、低延迟的网络数据包处理和传输。同时,由于FPGA的可编程性,使得基于FPGA的万兆以太网TCP/IP协议处理架构,实现以太网接口、IP协议栈、TCP协议栈和应用层协议等TCP/IP协议的各个功能模块时,可以并行处理多个数据包,从而提供高吞吐量和低延迟。
参考文献:
[1] 杨阳,周思远,王舒鹏.基于FPGA的TCP/IP协议卸载引擎设计[J].电子制作,2023,31(1):48-53
[2] 鲁睿其,欧先锋. 基于FPGA的TCP/IP协议数据传输研究[J]. 成都工业学院学报,2017,20(4):1-5.
[3] 王亮. 基于FPGA的网络协议信息隐藏技术研究[D]. 江苏:江苏科技大学,2012.
[4] 张立,李少康,李高益. 基于FPGA+ARM的多路光栅数据采集系统设计[J]. 电子测试,2021(3):9-11,53.
作者简介:周伟(1980.8-),男,汉族,安徽无为人,硕士,中级工程师,研究方向为以太网通信,