[论文解读] Fakernet -- small and fast FPGA-based TCP and UDP communication
Fakernet 提供了一种轻量级、基于 FPGA 的 TCP 和 UDP 实现,适用于高速数据采集系统,采用 16 位字数据流架构,在 100 Mbps 链路上通过 TCP 实现 11.7 MB/s 的传输速率,且 FPGA 资源占用极少。它实现了前端板卡与以太网的直接连接,取代了专用总线和 PCIe 适配卡,通过利用标准网络协议栈,避免了特殊驱动程序的使用。
A common theme of data acquisition systems is the transport of data from digitising front-end modules to stable storage and online analysis. A good choice today is to base this on the ubiquitous, commercially and cheaply available Ethernet technology. A firmware building block to turn already the FPGA of front-end electronics into a TCP data source and UDP control interface using a data-flow architecture is presented. The overall performance targets are to be able to saturate a 1 Gbps network link with outbound data, while using few FPGA resources. The goal is to replace the use of custom data buses and protocols with ordinary Ethernet equipment. These objectives are achieved by being just-enough conforming, such that no special drivers are needed in the PC equipment interfacing with the here presented Fakernet system. An important design choice is to handle all packet-data internally as 16-bit words, thus reducing the clock-speed requirements. An advantageous circumstance is that even at 1 Gbps speeds, for local network segments, the round-trip times are usually well below 500 microseconds. Thus, less than 50 kiB of unacknowledged data needs to be in-flight, allowing to saturate a network link without TCP window scaling. The Fakernet system has so far been shown to saturate a 100 Mbps link at 11.7 MB/s of TCP output data, and able to do 32-bit control register accesses at over 450 kword/s.
研究动机与目标
- 通过用标准以太网替代专用前端总线和 PCIe 适配卡,降低数据采集系统的整体成本。
- 使基于 FPGA 的前端板卡仅通过最小化、高效的固件即可作为原生 TCP/UDP 端点运行。
- 在消耗极少 FPGA 资源的同时实现高吞吐量(达到 1 Gbps 链路的饱和),并避免使用复杂的协议特性。
- 通过符合 TCP 和 UDP 标准的‘适度合规’实现,确保与通用 PC 网络协议栈的互操作性。
- 通过使用标准以太网硬件和协议,避免使用自定义操作系统驱动程序和 DMA 编程。
提出的方法
- 系统采用 16 位字数据流架构,以降低时钟频率需求并减少 FPGA 资源使用。
- 使用 VHDL 实现了一个最小化、符合标准的 TCP 和 UDP 协议栈,仅聚焦于本地网络运行所必需的核心功能。
- 重传机制基于 RTT 超时和重复 ACK 触发,采用保守的退避策略以避免网络拥塞。
- 往返时间(RTT)通过基于计数器的滤波器进行测量,测量值在重传期间被丢弃。
- 设计中避免使用选择性 ACK 和窗口缩放,依赖本地网络带宽过量分配的假设。
- 系统使用标准以太网 PHY 芯片和连接器(如 RJ45),可与通用网络设备无缝集成。
实验结果
研究问题
- RQ1一个最小化、基于 FPGA 的 TCP/UDP 协议栈能否在仅消耗极少 FPGA 资源的前提下实现高吞吐量(例如,达到 100 Mbps 链路的饱和)?
- RQ2轻量级 TCP 实现如何在不使用完整拥塞控制机制的情况下,高效处理丢包和重传?
- RQ3通用 PC 网络协议栈与一个最小化、‘适度合规’的 TCP/UDP 实现之间的互操作性程度如何?
- RQ4在高速数据采集场景下,避免使用窗口缩放和选择性 ACK 会对性能产生何种影响?
- RQ5使用 16 位字处理是否能有效降低时钟频率和 FPGA 资源使用,同时不损害吞吐量?
主要发现
- Fakernet 在 100 Mbps 网络链路上实现了 11.7 MB/s 的稳定 TCP 吞吐量,且仅使用了极少的 FPGA 资源。
- 系统支持超过 450 kword/s 的 32 位控制寄存器访问,表明控制通信具有极低延迟。
- 该实现避免使用窗口缩放和选择性 ACK,依赖基于 RTT 的重传机制和重复 ACK 检测来恢复丢包。
- 在本地网络段中,往返时间(RTT)测量值约为 100 μs,无需窗口缩放即可实现高并发数据量。
- 重传策略确保,若接收方丢失跟踪,带宽消耗将降至极低水平(约 110 Hz),防止连接饿死。
- 该系统成功替代了专用总线和 PCIe 适配卡,实现了基于 FPGA 的前端板卡与以太网的直接连接,且无需特殊驱动程序。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。