当前位置: X-MOL 学术J. Instrum. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Achieving reliable UDP transmission at 10 Gb/s using BSD socket for data acquisition systems
Journal of Instrumentation ( IF 1.3 ) Pub Date : 2020-09-10 , DOI: 10.1088/1748-0221/15/09/t09005
M.J. Christensen 1 , T. Richter 2
Affiliation  

User Datagram Protocol (UDP) is a commonly used protocol for data transmission in small embedded systems. UDP as such is unreliable and packet losses can occur. The achievable data rates can suffer if optimal packet sizes are not used. The alternative, Transmission Control Protocol (TCP) guarantees the ordered delivery of data and automatically adjusts transmission to match the capability of the transmission link. Nevertheless UDP is often favored over TCP due to its simplicity, small memory and instruction footprints. Both UDP and TCP are implemented in all larger operating systems and commercial embedded frameworks. In addition UDP also supported on a variety of small hardware platforms such as Digital Signal Processors (DSP) Field Programmable Gate Arrays (FPGA). This is not so common for TCP. This paper describes how high speed UDP based data transmission with very low packet error ratios was achieved. The near-reliable communications link is used in a data acquisition (DAQ) system for the next generation of extremely intense neutron source, European Spallation Source. This paper presents measurements of UDP performance and reliability as achieved by employing several optimizations. The measurements were performed on Xeon E5 based CentOS (Linux) servers. The measured data rates are very close to the 10 Gb/s line rate, and zero packet loss was achieved. The performance was obtained utilizing a single processor core as transmitter and a single core as receiver. The results show that support for transmitting large data packets is a key parameter for good performance. Optimizations for throughput are: MTU, packet sizes, tuning Linux kernel parameters, thread affinity, core locality and efficient timers.

中文翻译:

使用用于数据采集系统的 BSD 套接字实现 10 Gb/s 的可靠 UDP 传输

用户数据报协议(UDP)是小型嵌入式系统中常用的数据传输协议。UDP 本身是不可靠的,可能会发生数据包丢失。如果不使用最佳数据包大小,可实现的数据速率可能会受到影响。作为替代方案,传输控制协议 (TCP) 保证数据的有序传递并自动调整传输以匹配传输链路的能力。尽管如此,UDP 通常比 TCP 更受青睐,因为它简单、内存小和指令占用空间小。UDP 和 TCP 都在所有较大的操作系统和商业嵌入式框架中实现。此外,UDP 还支持各种小型硬件平台,例如数字信号处理器 (DSP) 现场可编程门阵列 (FPGA)。这对于 TCP 来说并不常见。本文描述了如何以非常低的数据包错误率实现基于 UDP 的高速数据传输。近乎可靠的通信链路用于下一代极强中子源欧洲散裂源的数据采集 (DAQ) 系统。本文介绍了通过采用多种优化实现的 UDP 性能和可靠性的测量。测量是在基于至强 E5 的 CentOS (Linux) 服务器上进行的。测得的数据速率非常接近 10 Gb/s 线路速率,并且实现了零丢包。性能是通过使用单个处理器内核作为发送器和单个内核作为接收器获得的。结果表明,支持传输大数据包是获得良好性能的关键参数。吞吐量的优化包括:MTU、数据包大小、
更新日期:2020-09-10
down
wechat
bug