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.
翻译:用户数据协议 (UDP) 是用于小型嵌入系统中数据传输的常用协议。 UDP 本身不可靠,并且可能发生包损。 如果不使用最佳的包尺寸, 则可以降低可实现的数据率。 替代的“ 传输控制协议 ” 保证按订单发送数据, 并自动调整传输以适应传输链路的能力。 然而, UDP 通常由于简单、 内存和教学脚印, 通常优于 TCP 。 UDP 和 TCP 在所有大型操作系统和商业嵌入框架中都得到了实施。 此外, UDP 也支持了各种小型硬件平台, 如数字信号处理器(DSP) 外地可编程门阵列参数(FPGA) 。对于 TCP 来说,这并非常见的。 本文描述了以非常低的包误差率率高速数据传输 UDP 数据。 近似于数据获取系统( DAQQQ) 用于下一代极其密集的中速中继源源源源, 欧洲Spall 源。 本文还介绍了通过几次优化的系统测算的功能和可靠性。 运行中继系统 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 为 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 运行 。