目前,大多数传统的对延迟敏感的应用程序可以通过标准的数据包网络来满足,这些网络的端到端延迟在几十毫秒的范围内。然而,许多未来的服务和应用程序将需要超低延迟(Ultra-Low Latency, ULL)的端到端通信。这些应用程序包括:需要几微秒到几毫秒延迟的工业系统[1]、延迟上限为1毫秒的触觉互联网[2][3],以及需要小于10微秒延迟的自动驾驶汽车[4]。人们已经努力制定ULL通信技术的标准。
IEEE时间敏感网络(Time Sensitive Networking, TSN)标准处理链路层的ULL支持,而IETF确定性网络(Deterministic Networking, DetNet)标准则描述了网络层的支持。相关标准和研究已在综述[5]中介绍。对于5G标准,预计可以实现端到端延迟低于1毫秒,ULL通信服务将依赖于TSN和DetNet标准。在信息物理系统、物联网技术以及工业过程的高度自动化推动下,TSN标准的制定和实验工作取得了显著进展。论文[6]对TSN进行了回顾和进展分析,重点关注IEEE 802.1网络标准的优化。关于确定性网络解决方案的总体概述可以在[7]中找到。
其中一位作者多年来一直在研究多路径传输[8]、路径不对称性[9]以及使用软件定义网络(Software-Defined Networking, SDN)[10]进行的网络流量优化。SDN网络中的流量控制是一个具有吸引力的相对较新的问题,它能够满足时间敏感应用程序中对数据交换的严格延迟要求[11]。许多新的服务,如上述提到的服务,正在使用5G移动网络和运营商的固定线路网络进行实现。
为了验证当前为客户提供服务的特定应用程序发送的数据包是否满足所需的延迟要求,有必要测量该服务在源节点和目的节点之间路径上各个网络段的延迟。目前似乎还没有能够实现这种测量的解决方案,特别是因为数据包在传输过程中会经历多次封装和解封装。测量延迟可以指示是否应该将需求较低的流量重定向到其他网络段,以提高高需求流量传输路径的可用性。假设SDN控制器能够了解整个监控网络的延迟情况,并能够控制网络流量。在第5节中,我们提供了一个在5G-MPLS网络背景下,基于延迟测量的SDN控制示例应用。
为了正确分配和调度时间敏感应用程序的流量,不仅需要高精度地测量端到端延迟,还需要测量特定网络点之间的延迟传输。
网络流量延迟是通过在网络段上发送数据包并记录数据包的进入和离开时间来测量的。时间值可以来自软件层(网络堆栈记录数据包的时间),也可以来自具有硬件计时器的网卡。由于软件方法的不确定性,其抖动通常比硬件测量方法更高,因此只能在微秒级别而不是纳秒级别进行操作。记录的时间称为时间戳(timestamps),可以存储在软件层中或嵌入数据包内容中,并在端点之间传输。通常,探测数据包是专门生成的,并在网络中的活动节点之间交换。
延迟可以测量为数据包从NodeA到NodeB的传输时间,这称为单向延迟;或者从NodeA到NodeB再返回NodeA的时间,这称为双向延迟或往返延迟。前者提供更相关的信息,因为它不受数据包路由不对称性的影响;然而,除非远程节点被精确同步,否则会受到测量精度低和抖动高的影响。往返延迟测量在同一节点上记录时间戳,因此不需要额外的同步,但探测数据包可以通过不同的路径双向传输。
首先想到的工具是Ping[12],它使用反射的ICMP数据包来确定节点之间的双向延迟(图1)。Ping通常作为操作系统服务运行,使用最简单,不需要额外的硬件组件或配置;因此,它提供的测量结果可靠性最低。
精确时间协议(Precision Time Protocol, PTP - IEEE1588)[13]是一种网络层协议,用于同步网络接口的硬件时钟,进而可以用来对齐远程节点上的操作系统时钟。该协议定义了一系列带有时间戳的专用消息,节点必须交换这些消息以建立时间偏移。为了实现同步,必须在硬件级别生成时间戳;因此,网卡(NIC)和操作系统驱动程序必须支持这一功能。通过持续交换同步消息和计算时间偏移,可以补偿硬件时钟的漂移,并在纳秒级别保持节点同步。最初设计用于精确同步时钟的时间戳也可以用来提取网络路径引起的延迟。
与软件解决方案不同,专用硬件系统(如Spirent流量生成器)可以通过发送人工数据包流(例如IMIX[14])并从记录的带有硬件时间戳的数据包中提取各种指标(图1),从而深入分析网络性能。
在CPU上运行的操作系统生成的时间戳在将存储在操作系统内存中的网络数据包内容传输到传输介质时表现出较高的抖动和不确定性,导致显著的不准确性。
被称为SmartNICs的设备引入了在网络附近操作数据包内容的可能性[15]。它们提供了一个框架,用于在操作系统和传输介质之间的数据流中设计和嵌入用户定义的程序。目前主要应用于高性能计算(HPC)基础设施中,这些设备允许将计算密集型功能(如编码或加密)从CPU卸载,同时降低功耗并保持高吞吐量。
另一个关键因素是嵌入式处理组件与数据流之间的同步性。这意味着可以在不进行计算域之间的传输或缓冲的情况下与数据包内容进行交互,从而避免引入不确定性和增加延迟。高度集成导致了基于FPGA的网卡的引入,在这些网卡中,网络收发器嵌入在设备的可编程资源中,进一步减少了延迟。
基于FPGA的解决方案在门电路开发方面经常遇到困难,这需要具备低级硬件描述语言(HDL)专长的专家。一种名为P4(Programming Protocol-Independent Packet Processors)[16]的专用语言便于开发数据包处理程序,并广泛应用于SmartNIC中。然而,新的FPGA门电路开发技术(如高级综合)允许从C和C++源代码生成HDL组件,这些组件随后可以集成到FPGA上的处理流程中。类似的转换工具(如VitisNetP4)也支持P4作为输入语言。