«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (9): 162-170  DOI: 10.19678/j.issn.1000-3428.0063200
0

引用本文  

冯一飞, 丁楠, 叶钧超, 等. 领域专用低延迟高带宽TCP/IP卸载引擎设计与实现[J]. 计算机工程, 2022, 48(9), 162-170. DOI: 10.19678/j.issn.1000-3428.0063200.
FENG Yifei, DING Nan, YE Junchao, et al. Design and Implementation of Domain-Specific Low-Latency and High-Bandwidth TCP/IP Offload Engine[J]. Computer Engineering, 2022, 48(9), 162-170. DOI: 10.19678/j.issn.1000-3428.0063200.

基金项目

国家自然科学基金(61972180)

作者简介

冯一飞(1997—),男,硕士研究生,主研方向为软件定义的高效计算机系统、软硬件协同设计;
丁楠,硕士研究生;
叶钧超,硕士研究生;
柴志雷,教授、博士

文章历史

收稿日期:2021-11-10
修回日期:2021-12-13
领域专用低延迟高带宽TCP/IP卸载引擎设计与实现
冯一飞1 , 丁楠2 , 叶钧超2 , 柴志雷2,3     
1. 江南大学 物联网工程学院,江苏 无锡 214122;
2. 江南大学 人工智能与计算机学院,江苏 无锡 214122;
3. 江苏省模式识别与计算智能工程实验室,江苏 无锡 214122
摘要:针对量化高频交易应用场景对数据传输低延迟高带宽的需求,定制一种领域专用的TCP/IP协议栈,并将其卸载到专用硬件加速模块上。采用模块化设计实现专用硬件逻辑,并与FAST协议硬件加速模块共同构成完整的低延迟高带宽高频交易系统。通过调整最大报文长度,实现64 Byte数据对齐,提升内核与高带宽内存(HBM)间的读写速率,并对内存结构进行优化,实现主机端与HBM间的4通道并行读写管理。对各功能模块进行数据流优化,最终构建全流水线架构。模块间统一使用AXI4-Stream接口连接,并绕过内存进行数据传输,实现传输性能的提升。实验结果表明,TCP/IP卸载引擎在Xilinx Alevo U50数据中心加速卡上可获得38.28 Gb/s的网络吞吐率,基础网络通信穿刺延迟最低为468.4 ns,在叠加FAST解码协议后延迟为677.9 ns,与传统软件处理网络堆栈(Intel i9-9900x+9802BF)的方式相比,TCP/IP引擎的吞吐率提升1倍,延迟降低为1/12,且延迟稳定,波动范围在10 ns左右,在满足量化高频交易场景需要的同时,有效减轻了CPU的负载。
关键词领域专用    传输控制协议/互联网协议卸载引擎    高带宽低延迟    可编程逻辑门阵列    开放运算语言    
Design and Implementation of Domain-Specific Low-Latency and High-Bandwidth TCP/IP Offload Engine
FENG Yifei1 , DING Nan2 , YE Junchao2 , CHAI Zhilei2,3     
1. School of Internet of Things Engineering, Jiangnan University, Wuxi, Jiangsu 214122, China;
2. School of Artificial Intelligence and Computer Science, Jiangnan University, Wuxi, Jiangsu 214122, China;
3. Jiangsu Provincial Engineering Laboratory of Pattern Recognition and Computational Intelligence, Wuxi, Jiangsu 214122, China
Abstract: In response to the low-latency and high-bandwidth requirements for data transmission in quantitative high-frequency trading application scenarios, a domain-specific Transmission Control Protocol/Internet Protocol (TCP/IP) protocol stack has been customized and offloaded to a dedicated hardware acceleration module.A modular design is adopted to realize the special hardware logic, and together with the fast protocol hardware acceleration module, a complete high-frequency trading system with low delay and high bandwidth is built.By adjusting the Maximum Segment Size(MSS), 64 Byte data alignment is achieved, the read/write speed between the kernel and High Bandwidth Memory(HBM) is improved, and the memory structure is optimized to realize a 4-channel parallel read/write management between the host and the HBM.The data flow of each functional module and the data for verification and calculation are optimized, and finally a full pipeline architecture is built.The AXI4-Stream interface is used to connect the modules, by passing the memory for data transmission and improving the transmission performance.The experimental results show that the TCP/IP offload engine can obtain a network throughput of 38.28 Gb/s on Xilinx Alevo U50 data center accelerator card, with the lowest basic network communication puncturing delay of 468.4 ns, and the delay of 677.9 ns after the fast decoding protocol is superimposed. Compared with the traditional software processing network stack (Intel i9-9900x+9802BF), the throughput of the TCP/IP engine is increased by one time, the delay is reduced to 1/12, and the delay is stable, with a fluctuation range of approximately 10 ns.While meeting the needs of quantifying high-frequency trading scenarios, it effectively reduces the payload on the CPU.
Key words: domain-specific    Transmission Control Protocal/Interner Protocal(TCP/IP) offload engine    low-latency and high bandwidth    Field Programmable Gate Array(FPGA)    Open Computing Language(OpenCL)    

开放科学(资源服务)标志码(OSID):

0 概述

随着网络带宽飞速增长,网络传输占用的CPU资源正逐年上升。以24核计算型服务器为例,网络传输在25 GB网络环境下占用CPU资源的25%;当升级到100 GB网络时,CPU资源将被100%占用,导致算力资源严重缺乏[1-2]。此外,传统软件处理网络堆栈的方式存在吞吐率低、毫秒级别的套接字机制和软件处理延迟等问题,且由于CPU的主频动态调整机制、操作系统的进程调度等因素,导致延迟具有不稳定性[3],使得基于CPU的软件方案难以应用于高频通信传输等对延迟敏感的场景[4]

在后摩尔时代,CPU频率已趋于稳定,计算能力增速远低于网络传输速率的增速,且差距持续增大[5],预计至2025年,算力差距将大于60 Gb/s[6]。因此,将网络协议等计算任务卸载到现场可编程门阵列(Field Programmable Gate Array,FPGA)等硬件的需求愈发急迫。随着市场规模不断扩大,各种应用场景不断出现,且在特定场景中不需要完整的传输控制协议/互联网协议(Transmission Control Protocal/Interner Protocal,TCP/IP)协议栈,这为采用纯硬件提供了可行性。如在量化高频交易场景下[7],仅需TCP协议中数据收发、重排等基础功能即可满足通信功能需求。因此,领域专用TCP/IP协议与硬件加速相结合成为解决特定场景带宽和延迟问题的有效手段。

文献[8]提出一种针对高频交易的基础网络实现方案,使用高级合成(High-Level Synthesis,HLS)开发语言对UDP协议进行实现,在配合交易算法的情况下,能使延迟小于870 ns。文献[9]提出一种基于SDAccel开发的系统,使用HLS实现了10 Gb/s TCP协议和IP协议的功能。文献[10]针对量化高频交易中的订单查询功能,使用VHDL开发语言进行实现,最低延迟为253 ns。文献[11]提出一种基于总线的市场数据解码引擎设计,针对不同的市场数据模板,使用HLS实现一种自动构建解码引擎的结构,平均延迟为1.3 μs。

传统的FPGA开发方式以Verilog等HDL硬件开发语言为主,存在修改不便且开发周期长的问题。本文在Vitis开发架构下[12]结合使用开放运算语言(Open Computing Language,OpenCL)和高层次综合HLS进行开发,以大幅缩短开发周期,便于开发人员修改。同时,针对量化高频交易场景,在满足功能的条件下优化性能。

1 量化高频交易

近年来,量化高频交易(Quantitative High-Frequency Trading,QHFT)在不断改变金融市场结构。作为一种新型投资策略,量化高频交易通过快速买卖股票获取利润,持有时间通常以秒或毫秒为单位[13]。量化高频交易在美国股票市场的占比很大,截止2019年,高频交易占美国股票订单量的83%,占美国股票交易总额的70%以上[14],欧洲市场规模类似[15],国内市场起步相对较晚,但也展现出勃勃生机[16]

1.1 量化高频交易困境

以微秒为单位的量化高频交易的主要困境在于网络通信部分,在瞬息万变的金融交易市场中,行情商获取的行情信息延时越低,意味着有越多的交易机会和更大的决策空间[17]。传统软件处理网络的方式存在高延迟、高占用、带宽利用率低、延迟不稳定等问题,而采用纯硬件实现网络通信功能具有低延迟、高带宽、固定延迟等特点,符合行情商的期望。

1.2 基于FPGA的网络解决方案

应交易所要求,行情商的服务器架构如图 1所示,其中:主端口进行正常的TCP/IP连接,镜像端口只进行数据的监听与接收。由于交易所与行情商间的网络通信传输内容单一、方向固定,且按照固定频率发送,因此仅需基础TCP通信功能即能满足通信需求。与完整协议栈相比,TCP协议的通信灵活性下降,可靠性不变,但通信效率得到极大提升。针对量化高频交易应用场景,本文提出一种领域专用的TCP/IP卸载引擎设计,在满足功能的前提下简化TCP协议,将通信延迟极度降低的同时保持稳定的带宽,实现效能的最大化。

Download:
图 1 行情商服务器架构 Fig. 1 Server architecture of quotes suppliers
2 领域专用TCP/IP协议的设计与实现

TCP/IP协议是因特网的基础,包含应用层、运输层、网络层、数据链路层和物理层5个部分[18-20],其架构如图 2所示。其中,5层协议将网络接口层细分为数据链路层和物理层,其余与4层协议一致。

Download:
图 2 TCP/IP协议的架构 Fig. 2 Architecture of TCP/IP protocol

本文采用模块化设计原则,将TCP/IP协议中不同的功能分离成不同的模块。FPGA端分为CMAC内核、TCP/IP内核和用户自定义内核3部分,具体架构如图 3所示。CMAC内核将接收到的光信号转换为电信号数据并传输给TCP/IP内核,TCP/IP内核将数据报解析后发送至用户自定义内核处理。

Download:
图 3 FPGA端的整体架构 Fig. 3 Overall architecture of FPGA end
2.1 CMAC内核

CMAC内核包含1个10 GB/25 GB高速以太网子系统(High Speed Ethernet Subsystem,HSES)[21]的IP核模块。该IP核模块采用IEEE 802.3标准,包含完整的以太网MAC及物理编码子层/物理介质连接(Physical Coding Sublayer/Physical Medium Attachment,PCS/PMA)功能,可以在每块FPGA开发板上进行单独配置,极大提升网络协议在不同FPGA开发板间的可移植性。该IP模块将整个计算平台基础架构与GT引脚相连,GT引脚指向QSFP28网络接口,与外部网络进行数据通信。CMAC内核可以根据实际应用需求,配置为10 GB和4×10 GB两种模式。CMAC内核和TCP/IP内核间通过AXI4-Stream接口相连,用于接收和发送网络数据包,CMAC内核的具体架构如图 4所示。

Download:
图 4 CMAC内核的架构 Fig. 4 Architecture of CMAC kernel
2.2 TCP/IP内核

TCP/IP内核包含TCP卸载引擎(TCP Offload Engine,TOE)模块、UDP模块、IP模块、ICMP模块和ARP模块,所有模块均使用HLS进行实现,模块之间使用64位AXI4-Stream接口连接。该内核支持最大64个并发TCP连接,每个连接提供32 KB的buffer作为发送和接收的缓冲区。TCP/IP内核的整体架构如图 5所示。

Download:
图 5 TCP/IP内核的架构 Fig. 5 Architecture of TCP/IP kernel

图 5可知,TCP/IP内核的各功能模块均封装为单独的IP核,可以依据应用场景、板卡资源等因素进行选择性配置。针对量化高频交易等特殊应用场景,本文开发出一种类TCP协议解决此类问题。与CMAC内核相同,TCP/IP内核暴露出固定的接口,供开发人员调用。

IP模块包含IP接收和IP发送2个部分,支持IPV4协议,可以通过主机端设置固定的IP地址、子网掩码和网关地址。IP接收部分会首先判别协议类型,丢弃IP和ARP以外的数据包,同时将ARP数据包转发至ARP模块。之后对IP帧包进行首部校验和检查以及上层协议类型检查,将数据部分转发至对应上层模块。发送模块同样对ARP和IP模块进行分开处理,并计算IP帧的首部校验,将数据部分与头部封装后发送给CMAC内核。

ARP模块包含ARP请求的发送和接收功能以及ARP响应的发送和接收功能。ARP映射表放在BRAM内,最多能同时保存128组映射关系。在发出ARP请求后,会在映射表中保留500 ms,若仍未收到ARP响应,则会被删除并标记为未答复的请求。

ICMP模块包含接收回送请求报文和发送回送回答报文的功能,会对接收到的ICMP帧进行校验、检测和计算,并封装为回送回答报文,传输至IP发送部分。

UDP模块包含报文的接收和发送功能,通过主机端来设置目的IP地址、目的端口和源端口。UDP模块在作为接收端时支持最大64 KB可编程监听端口,对于无效数据将直接舍弃,且能够进行校验和计算,将解析后的数据传输给自定义模块;在作为发送端时,会先添加伪首部计算校验和,之后封装为UDP帧,传输给IP协议。

2.3 TOE模块

针对不同的需求,TOE模块开发出以下2种TCP变体协议模块:

1)通用TOE模块。针对量化高频交易中主端口设计,建立正常的握手连接、支持发送和接收功能,实现TCP拥塞控制,包括拥塞避免、快速重传等;

2)镜像TOE模块。针对量化高频交易中交换机的镜像端口开发,只实现TCP数据报的接收功能和数据重排功能,并将解析出的数据部分传输给上层用户自定义内核。2种模块均为每个TCP连接提供了32 KB大小的buffer作为数据缓冲区。镜像TOE模块能够接收的最大报文长度为MSS字节,不支持对巨型帧的接收。

通用TOE模块分为接收部分、发送部分、计时器部分、状态控制部分、缓冲查找部分和缓冲存储部分,具体结构如图 6所示。

Download:
图 6 通用TOE模块结构 Fig. 6 Structure of general TOE module

图 6可知,接收部分会先对TCP数据报进行解析,解析后的数据报依据TCP首部分为以下5种:

1)仅SYN标志位有效的数据报,为客户端发送的连接请求。

2)SYN和ACK标志位有效的数据报,为服务器发送的确认报文。

3)ACK标志位有效但不携带数据的数据报,为客户端的确认报文。

4)ACK标志位有效且携带数据的数据报,为数据报文。

5)FIN和ACK标志位有效,为连接释放报文。依据分类启动对应的状态机模块。

数据发送部分会在等待连接缓存中存放的数据达到MSS字节后,就将其组装为1个TCP报文段发送出去。初始窗口大小定义为10 MSS字节,当触发拥塞控制机制后,将会被介绍到MSS字节,直到所有的数据报被确认。

镜像TOE模块分为接收模块、发送模块和数据缓冲排序模块3个部分。具体结构如图 7所示,该模块是针对镜像端口的设计。

Download:
图 7 镜像TOE模块结构 Fig. 7 Structure of mirror TOE module

图 7可知,在接收到TCP数据报后,由于镜像接口不需要也无法进行握手协议的建立,镜像TOE模块会直接对其进行解析,若不携带数据部分,则直接舍弃。在缓冲区,数据部分将被按照序列号保存为5组数据,并被进行排序设计。发送模块与UDP协议类似,先添加伪首部计算校验和,之后封装为TCP协议数据报传输给IP模块。镜像TOE模块设计也可用于FPGA片间通信。

2.4 用户自定义内核

在用户自定义内核中,用户能够依据应用场景需求,设计对应硬件加速模块,通过预设的接口,处理从网络中接收到的数据,同时将处理完的数据通过网络发送出去。该内核与TCP/IP内核中的UDP模块和TOE模块通过AXI4-Stream接口相连,同时通过XDMA与主机端进行数据交互。用户自定义内核的整体架构如图 8所示,该模块提供了一个量化高频交易中FAST解码协议的硬件实现,并作为对整体网络通信的功能性验证。依据上海证券交易所的FAST协议规范,设计实现3 201逐笔成交模板和5 801逐笔委托模板中无运算符、常量、复制、缺省和自增5种操作,接收从镜像TOE模块传输来的数据,并进行处理,将结果传输回主机端,方便后续数据的金融决策计算。

Download:
图 8 用户自定义内核的整体架构 Fig. 8 Overall architecture of user defined kernel
3 基于OpenCL的整体平台设计与优化 3.1 基于OpenCL的FPGA开发

Vitis是目前最先进的FPGA开发框架之一[22],用户可以通过调用OpenCL API来管理Xilinx运行时库(Xilinx Runtime Library,XRT)与硬件加速器部分的交互。Vitis提供3种对FPGA内核的调度模式:顺序执行模型、流水线模型和自由运行模型[23]。由于TCP/IP协议使用监听机制,因此本文采用自由运行模型的调度机制,当FPGA从主机或其他内核接收流式数据时,便会对数据进行处理,当没有数据时,则会自动停止运行。

3.2 数据位宽优化

在整体设计中,为保持网络4×10 Gb/s的传输速率,主要瓶颈在于网络内核模块和内存之间的数据交互。在TCP/IP内核中,数据部分会暂时存储在内存中,起到重新传输或缓冲目的。从理论上来说,若想达到4×10 Gb/s的带宽效率,则需要至少40 Gb/s的内存带宽。Vitis开发架构针对64 Byte对齐的顺序内存访问提供了优化,若使用未对齐的内存访问,则会显著减少内存带宽,因为在这种情况下,网络将触发自动对齐的内存访问。对于每个TCP/IP连接,在建立时均会分配一个初始内存地址,并在初始内存地址的偏移量中存储即将到来的数据报。初始内存地址在连接建立时确定,有很大几率不是64 Byte对齐。同时,在默认的TCP/IP设置中,MSS为1 460 Byte,并非64 Byte的倍数。结合应用场景下实际网络的传输情况,网络设备通常倾向于发送较短数据报,以最大程度提高网络利用率。因此针对上述2个问题,本文将初始内存地址默认为0,同时将MSS降低为1 408 Byte,这是比1 460小且为64 Byte的最大倍数。每个连接的偏移内存均固定为1 408 Byte,故定义初始内存地址的物理偏移量为64 Byte的整数倍,以此降低网络内核模块和内存之间的读取延迟。

3.3 AXI4-Stream接口的使用

Vitis开发架构支持使用AXI4-Stream流接口来完成内核之间的数据传输,本设计中各个模块间均使用AXI4-Stream接口。使用流接口进行开发的优势在于内核之间可以直接进行数据流式传输,相当于申请一个无限深度的FIFO,而不必通过全局内存进行数据传输,能够显著提升传输性能。在Vitis开放框架下,必须使用AXI4-Stream接口才能使用自由运行模型,各模块在接收到数据的同时,便可进行处理,不需要主机端的控制信号,从而提升数据传输处理效率。

3.4 并行设计优化

并行优化设计主要通过数据流优化、数据展开等来提升整体设计的并行度。数据流优化即对规模较大的组合逻辑进行分级处理,在各级之间添加寄存器暂存中间数据,通过消耗一定的寄存器资源实现任务级流水,以达到更高的吞吐量和更低的延迟。TCP/IP各层协议间以及每层协议内的数据均没有数据依赖性,因此可以进行流水线设计。以IP接收模块的实现为例,流水化设计如图 9所示。

Download:
图 9 内核数据流水化模型 Fig. 9 Kernel data pipeline model

图 9可知,该模块可以简化为接收数据、校验和计算、解析数据和转发数据4个部分,假设每部分的时间消耗为1个时钟周期,未使用数据流优化时,每组计算消耗4个时钟周期,在使用数据流优化之后,除去首次延迟外,每组计算只消耗1个时钟周期。其他模块也采用相同的流水型设计,以最大程度地缩短整体平台的执行时间。

数据展开通过增加并行度来缩短数据延迟。以TCP/IP协议中常用的校验和计算为例,数据以64 Byte流输入,将其全展开,分为4个16 Byte的数据,并分别进行累加和移位运算,减少校验和计算的时间开销,内核数据展开模型如图 10所示。由图 10可知,当未使用数据展开时,执行校验和计算需要11个时钟周期完成;在使用数据展开后,只需2个时钟周期便可完成,可见数据展开能够大幅缩短数据延迟。

Download:
图 10 内核数据展开模型 Fig. 10 Kernel data unroll model
3.5 内存架构优化

在Vitis框架下,主机端和FPGA端通过全局内存进行数据交互。在默认情况下,Vitis自动把全部计算单元(Computing Unit,CU)连接到同一全局内存,这导致每次只有一个内核可以和全局内存进行读写数据,这限制了整体平台的性能。本文对内存架构进行优化,将CU链接至不同的HBM伪通道(Pseudo Channels,PC)单元,同时设置CU和内存到同一块超级逻辑区域(Super Logic Regions,SLR)[24]上,以最大化带宽的使用。以用户自定义内核为例,该模块有4个返回值,通过将其分配在和SLR 0相连的HBM 0的4个PC单元中,可将传输速率提升为之前的4倍。内存架构的优化设计如图 11所示。由图 11可知,虽然每PC单元的传输性能为14.3 Gb/s,低于DDR通道的传输性能19.2 Gb/s,但是可以通过内存架构的优化,实现对多PC的访问连接,从而达到提高总体传输效率的目的。此方法在Xilinx Alevo系列和Intel Stratix V系列板卡上均有较好的适用性。

Download:
图 11 内存架构的优化设计 Fig. 11 Optimized design of memory architecture
3.6 整体功能设计

图 12所示为本文TCP/IP引擎结构,其主要分为主机端和FPGA端2大部分。其中:主机端负责与OpenCL程序外部的交互、与FPGA端的数据交互及内核部分的调度与管理;FPGA端负责TCP/IP协议及后续数据加速模块的实现。FPGA端包含CMAC内核、TCP/IP内核以及用户自定义内核3个模块。其中,在TCP/IP内核中,用户可以通过量化高频交易中的不同场景进行自由配置。在上述3个模块间使用AXI4-Stream接口进行数据交互,通过使用数据对齐来降低数据模块和内存之间的数据延迟。针对TCP/IP协议各功能模块及校验和计算间无数据关联性的特点,采用数据流优化和数据展开优化形成流水线并行架构,同时对内存架构进行优化,降低内核和主机端间的数据传输延迟。

Download:
图 12 本文TCP/IP卸载引擎结构 Fig. 12 Structure of TCP/IP offload engine in this paper
4 实验与结果分析 4.1 实验环境

本文的软件环境为Centos Linux release 7.7.1908,Vitis的版本为2021.1,XRT版本为202110.2。硬件环境为2张Xilinx Alveo U50数据中心FPGA加速卡、Intel i9-9900x的CPU及华为S5720-28X-LI-AC交换机。该款FPGA加速卡拥有872 KB的LUTs、8 GB的HBM和1个QSFP28网络接口。其中,QSFP28网络接口支持10 GB、25 GB、40 GB、100 GB、4×10 GB和4×25 GB的网络配置。使用PCIE Gen 3×16和服务器连接,支持Vitis开发平台通过Gen 3×16 XDMA进行开发。FPGA加速卡的资源配置如表 1所示。

下载CSV 表 1 FPGA加速卡的资源配置 Table 1 Resource configuration of FPGA accelerator card
4.2 实验结果

本文整体实验平台搭建如图 13所示。由图 13可知,在FPGA平台中例化3组MAC层和IP层IP核,即3个IP地址,并分别和UDP、通用TOE、镜像TOE这3个模块直连,各模块间可同时使用10 GB SFP+光口与交换机通信。本设计全局使用300 MHz时钟,内核的延迟数通过在硬件内部构件(Intergrated Logic Analyzers,ILA)进行统计,和时钟相乘获得延迟时间。

Download:
图 13 实验平台的架构 Fig. 13 Architecture of experiment platform

整体平台的资源消耗如表 2所示,LUTS消耗超过5成,DSP的使用率很低。其中基础网络平台部分的LUTS和FIFO的资源占用率都未超过10%,为后续加速程序开发留出充足的资源。

下载CSV 表 2 计算平台的FPGA消耗 Table 2 FPGA consumption of computing platform

本文网络计算平台在UDP、通用TOE和镜像TOE这3种通信协议下的通信延迟如图 14所示。测试使用100 Byte的数据,由Host端按照UDP协议和TCP协议发出,发送至UDP通信协议和通用TOE通信协议对应的IP地址,同时设置交换机镜像接口并将数据发送至镜像TOE模块。在FPGA端,UDP和镜像TOE协议的延迟几乎一致,在量化高频交易应用场景下有极大的使用空间。

Download:
图 14 3种通信协议的通信延迟 Fig. 14 Communication delay of three communication protocols

将MAC中的输出端口和接收端口通过Loopback IP核回环起来,测试数据包的生成和吞吐量的测试也在FPGA端完成。理想的吞吐量T可以通过式(1)计算获得:

$ T=10\times \frac{P}{P+H} $ (1)

其中:P为发送的数据包长度;H为首部长度。根据式(1)可得,采用较大的P可以提高网络的吞吐量。UDP协议下的首部总长度为28 Byte,TCP协议下的首部总长度至少为50 Byte,因此使用UDP协议在理论上可以获得更高的吞吐率。图 15显示了不同通信协议下P与吞吐率间的关系。

Download:
图 15 4种通信协议的吞吐量对比 Fig. 15 Comparison of throughput of four communication protocols

图 15可知,UDP协议的吞吐量最高,可以达到9.57 Gb/s,两种TOE模式也分别能达到9.36 Gb/s和9.42 Gb/s,QSFP28光口的本质为4路SFP+接口的叠加,因此3种模式可以分别接入不同的GT实现并行运行,最大吞吐量可达38.28 Gb/s。

4.3 存储速率的测试与分析

本文针对HBM和DDR通道进行速率测试,分别测试了主机端PCIE与HBM的速率,以及FPGA上每个内核与HBM和DDR的速率,测试方式参照Xilinx的Xbtest架构,统一使用256 MB大小的数据包,测试结果如表 3所示。

下载CSV 表 3 内存读写速率对比 Table 3 Comparison of memory read and write rates

表 3可知,主机端至HBM的速率最低,因此在设计加速程序时,除必要数据外,应尽量减少FPGA和主机端间的数据传输。虽然HBM上单个PC的传输速率低于DDR,但是同时访问4个PC的速率远大于DDR的访问速率。通过对内存架构进行优化,将内核中不同数据块进行分离,每个输出都使用单独的AXI口与不同的PC相连,实现对多PC的访问,以大幅提升访存速度。

4.4 整体通信功能的验证与分析

为验证TCP/IP引擎设计的整体功能完备程度,以及对量化高频交易的支持度,本文从主机端发送不同数量1 408 Byte大小的上交所逐笔成交PCAP数据包,使用ILA测试镜像TOE模块下,从数据接收到FAST协议解析的平均时间延迟,同时测试Linux环境下使用10 GB网卡接收数据包并解析的平均时间延迟,结果如图 16所示。由图 16可知,Linux搭配网卡的平均延迟在120 μs~200 μs之间,受CPU的波动影响较大,TOE模式下平均延迟稳定在9.5 μs左右,时间固定、无波动,此外,TOE模式下的延迟缩短到软件方案的1/12。

Download:
图 16 通信延迟对比 Fig. 16 Comparison of communication delay

本文对在Xilinx Alveo U50数据中心上实现的网络通信和FAST解码协议的穿透延迟进行了测算,包含从MAC层进入,经过IP层和镜像TOE的解析,传输至FAST协议模块解码的数据处理总延迟。各部分的延迟如表 4所示。由表 4可知,针对FAST解码协议的通信延迟最低可至677.9 ns。在镜像TOE模块下,网络部分的延迟最低为468.4 ns,可以满足高频通信应用场景的需求。

下载CSV 表 4 FAST协议穿透延迟测试结果 Table 4 Penetration delay test result of FAST protocol 
4.5 与其他方法的对比

表 5所示为不同方法的对比,方法1[4]、方法2[5]、方法3[8]、方法4[9]、方法5[14]皆在FPGA上实现了TCP/IP功能。本文在Vitis框架下,使用HLS进行开发,通过数据位宽优化、内核存储优化以及数据流优化,实现了TCP/IP引擎。与使用Verilog/VHDL等开发语言的实现方案相比,本文方法开发周期短,便于修改,开发人员可以依据经济、政治等因素快速在自定义模块中对量化高频交易政策作出调整,同时本文方法的最大吞吐率达38.28 Gb/s,最低通信延迟为468.4 ns,取得了效能的最优解。

下载CSV 表 5 不同方法的对比 Table 5 Comparison of different methods
5 结束语

本文提出一种领域专用低延迟高带宽TCP/IP协议栈,并在TCP/IP协议卸载引擎架构的基础上将其嵌入Vitis开发框架中。采用模块化设计,各模块使用相同规范的接口,开发人员只需按照接口规范封装自定义模块即可实现对网络功能的自主配置和调用。通过优化数据位宽设置固定MSS,优化内核和HBM间的存储效率,使用AXI4-Stream接口优化内核间的传输效率。此外,使用数据流优化和数据展开方式形成流水线型架构,使整体性能达到最优,并针对高频交易场景设计一种镜像TOE模式。实验结果表明,与传统Linux+NIC相比,该方法传输效率提升了12倍,且获得了更稳定的传输波动。下一步将着重于完善TCP协议的功能,增加最大连接数及对巨型帧的支持,并针对更多应用场景开发专用型TOE模块,从而达到TCP协议的传输效率最大化。

参考文献
[1]
YAN Y, BELDACHI A F, NEJABATI R, et al. P4-enabled smart NIC: enabling sliceable and service-driven optical data centres[J]. Journal of Lightwave Technology, 2020, 38(9): 2688-2694. DOI:10.1109/JLT.2020.2966517
[2]
SHANTHARAMA P, THYAGATURU A S, REISSLEIN M. Hardware-accelerated platforms and infrastructures for network functions: a survey of enabling technologies and research studies[J]. IEEE Access, 8: 132021-132085. DOI:10.1109/ACCESS.2020.3008250
[3]
马潇潇, 杨帆, 王展, 等. 智能网卡综述[J]. 计算机研究与发展, 2022, 59(1): 1-21.
MA X X, YANG F, WANG Z, et al. Survey on smart network interface card[J]. Journal of Computer Research and Development, 2022, 59(1): 1-21. (in Chinese)
[4]
DING L, KANG P, YIN W B, et al. Hardware TCP offload engine based on 10-Gbps ethernet for low-latency network communication[C]//Proceedings of International Conference on Field-Programmable Technology. Washington D.C., USA: IEEE Press, 2017: 269-272.
[5]
李肖瑶. 基于FPGA的高性能网络功能加速平台[D]. 武汉: 华中科技大学, 2018.
LI X Y. FPGA-based high performance network function accelerating platform[D]. Wuhan: Huazhong University of Science and Technology, 2018. (in Chinese)
[6]
QIU Y M, KANG Q, LIU M, et al. Clara: performance clarity for SmartNIC offloading[C]//Proceedings of the 19th ACM Workshop on Hot Topics in Networks. New York, USA: ACM Press, 2020: 13-17.
[7]
KLAISOONGNOEN M, BROWN N, BROWN O. I feel the need for speed: exploiting latest generation FPGAs in providing new capabilities for high frequency trading[C]//Proceedings of the 11th International Symposium on Highly Efficient Accelerators and Reconfigurable Technologies. New York, USA: Association for Computing Machinery, 2021: 1-12.
[8]
BOUTROS A, GRADY B, ABBAS M, et al. Build fast, trade fast: FPGA-based high-frequency trading using high-level synthesis[C]//Proceedings of International Conference on ReConFigurable Computing and FPGAs. Washington D.C., USA: IEEE Press, 2017: 1-6.
[9]
ESKANDARI N, TARAFDAR N, LY-MA D, et al. A modular heterogeneous stack for deploying FPGAs and CPUs in the data center[C]//Proceedings of the 2019 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. New York, USA: ACM Press, 2019: 12-19.
[10]
DVOŘÁK M, KOŘENEK J. Low latency book handling in FPGA for high frequency trading[C]//Proceedings of the 17th International Symposium on Design and Diagnostics of Electronic Circuits & Systems. Washington D.C., USA: IEEE Press, 2014: 175-178.
[11]
TANG Q, SU M J, JIANG L, et al. A scalable architecture for low-latency market-data processing on FPGA[C]//Proceedings of IEEE Symposium on Computers and Communication. Washington D.C., USA: IEEE Press, 2016: 597-603.
[12]
李景欣. 基于Vitis的FPGA目标检测算法加速器设计[D]. 大连: 大连理工大学, 2021.
LI J X. Accelerator design of FPGA target detection algorithm based on vitis[D]. Dalian: Dalian University of Technology, 2021. (in Chinese)
[13]
PUŠ V, KEKELY L, KOŘENEK J. Low-latency modular packet header parser for FPGA[C]//Proceedings of ACM/IEEE Symposium on Architectures for Networking and Communications Systems. Washington D.C., USA: IEEE Press, 2012: 77-78.
[14]
HU J X, WANG J F, LI R G. Low-latency ultra-wideband high-speed transmission protocol based on FPGA[J]. Journal of Physics: Conference Series, 2020, 1621(1): 66-76.
[15]
BANSOD R, VIRK R, RAVAL M. Low latency, high throughput trade surveillance system using in-memory data grid[C]//Proceedings of the 12th ACM International Conference on Distributed and Event-based Systems. New York, USA: ACM, 2018: 250-253.
[16]
王琉. 国内证券高速实时行情平台设计与实现[D]. 上海: 上海交通大学, 2017.
WANG L. The desigh and implementation of real-time domestic market data platform[D]. Shanghai: Shanghai Jiao Tong University, 2017. (in Chinese)
[17]
COOKE R A, FAHMY S A. Characterizing latency overheads in the deployment of FPGA accelerators[C]//Proceedings of the 30th International Conference on Field-Programmable Logic and Applications. Washington D.C., USA: IEEE Press, 2020: 347-352.
[18]
谢希仁. 计算机网络[M]. 北京: 电子工业出版社, 2017.
[19]
CHOUDHARY A, PORWAL D, PARMAR A. FPGA based solution for Ethernet controller as alternative for TCP/UDP software stack[C]//Proceedings of the 6th Edition of International Conference on Wireless Networks & Embedded Systems. Washington D.C., USA: IEEE Press, 2017: 63-66.
[20]
D'SOUZA J, KAUR M J, MOHAMAD H A, et al. Transmission Control Protocol (TCP) delay analysis in real time network[C]//Proceedings of Advances in Science and Engineering Technology International Conferences. Washington D.C., USA: IEEE Press, 2018: 1-6.
[21]
Xilinx Corporation. 10G/25G High speed ethernet subsystem for v3.3 product guide[EB/OL]. [2021-10-01]. https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/xxv_ethernet/v3_3/pg210-25g-ethernet.pdf.
[22]
Xilinx Corporation. Vitis unified platform application acceleration[EB/OL]. [2021-10-01]. https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_1/ug1393-vitis-application-acceleration.pdf.
[23]
Xilinx Corporation. Vitis high-level synthesis user guide[EB/OL]. [2021-10-01]. https://www.xilinx.com/support/documentation/sw_manuals/xilinx2020_2/ug1399-vitis-hls.pdf.
[24]
Xilinx Corporation. Zynq UltraScale+ MPSoC software developer guide[EB/OL]. [2021-10-01]. https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_2/ug1137-zynq-ultrascale-mpsoc-swdev.pdf.