Google AI/ML/HPC网络测量方案CSIG

摘要

随着数据中心中应用程序对网络延迟和带宽越来越敏感,例如AI/ML/HPC工作负载和基于RDMA的应用程序,在高动态变化的流量模式下,仅依赖端到端信号进行拥塞控制、流量调度已无法满足需求。

本文介绍了Google提出的网络测量方案:CSIG(Congestion Signaling,拥塞信号),一种用于网络拥塞控制、流量管理和网络调试的带内网络遥测协议。CSIG提供了一个简单、低开销和可扩展的数据包头机制,用于从网络路径上的瓶颈设备获取固定长度的摘要信息。这些摘要信息通过位于L2层的 CSIG tag字段在路径上的网络设备之间以比较和替换的方式进行收集。接收方可以通过L4层以上的 CSIG reflection报文头将这些信息反馈给发送方。

CSIG在前人工作(如交换机带内网络遥测(INT))基础上进行了扩展,该工作将多位信号纳入多个数据包中。与此同时,CSIG的端到端机制可通过固定大小的消息头传递信号,类似于显式拥塞通知(ECN),简单、实用且易部署。

本文首先对CSIG协议进行详细描述,阐述CSIG的应用场景和设计原则,并描述了CSIG信号(最小可用带宽、最大链路利用率和最大跳延迟)、以及计算这些信号的方法、信号如何在应用程序中发挥作用。此外,还将讨论如何传递有关链路瓶颈位置的属性,提供这个信号整合的框架。最后,讨论渐进部署、向后兼容性和CSIG在各种情景中的适用性细节。

引言

许多网络控制系统,包括拥塞控制、流量工程和网络运维,根据应用流所经历的拥塞情况做出决策。用于确定拥塞的信号通常是从端到端信号中隐性产生的,以比期望更大的时间尺度近似计算的,或者从网络中获得的。这些信号不准确或精细,可能导致应用程序性能不佳或网络使用效率低下。

CSIG(拥塞信号)提供了直接、实时、带内信号,网络控制回路可以利用这些信号来提高性能和效率。

数据中心部署了许多拥塞控制算法(CCA),包括Swift、BBR、DCTCP、DCQCN和HPCC++。这些CCA在使用拥塞信号和根据信号调整流量速率方面存在差异。

  • Swift使用精确的往返时延(RTT)测量来调节其拥塞窗口。
  • BBR使用流的传输速率和RTT测量的组合。
  • DCTCP和DCQCN依赖于来自交换机的显示拥塞通知(ECN),该通知指示队列是否超过阈值。
  • HPCC++利用沿流路径获得的逐跳队列深度和传输字节数来更新流量速率。

现有方案存在的问题
**尽管在何时降低传输速度方面取得了进展,但在增加流量速率方面,CCA仍然存在盲点。**例如,一个流的适当起始速率是多少?在没有拥塞的情况下,流应当快速增加到什么程度?在没有网络的明确信息的情况下,端到端的CCA不得不依赖于启发式算法,这可能导致低估或高估瓶颈带宽,从而导致更慢的流完成时间(FCT)或增加的往返时间或丢包率。

与此同时,应用程序对快速网络性能的需求正在增加:AI/ML应用程序正在推动快速网络传输,并避免使昂贵的张量处理单元(TPUs)和图形处理单元(GPUs)空闲。同样,存储解聚需要快速传输,以使远程存储设备在主机上显示为本地设备,并且时延足够低。

在本文档中,我们引入拥塞信号(CSIG)来明确通知主机,路径的瓶颈链路情况。CSIG有几个重要的使用场景,包括:

  • 作为拥塞控制算法在发送速率上做出决策的依据
    发送端的拥塞控制算法可以使用CSIG快速而安全地将发送速率加快到由瓶颈链路确定的最大可行速率,并且在存在或不存在拥塞的情况下都可以精确地对瓶颈节点做出快速反应。快速增加速率的动机源于充分利用数据中心的带宽,并降低大型传输的延迟。 CSIG可以通过多种方式帮助快速完成传输,例如,使ML集体通信的传输可以快速增加速率,最大限度地利用所有网络带宽,并用接近理想的传输完成时间,完成传输。

  • 流量管理,包括流量工程(TE),负载均衡和多路径也将从CSIG中受益。TE系统通过离线分钟级的处理过程,叠加网络流量统计、拓扑和路由信息来推测出拥塞流。使用CSIG,TE可以更及时地获得关于拥塞点和应用流路径拥塞信息。使用这种更精细的信息可以更有效、及时地为突发流量进行配置。类似地,启用CSIG的多路径传输流可以实时选择具有最大可用带宽的路径

  • 故障排除和性能优化。我们还设想CSIG有助于调试数据中心应用程序的网络级性能。大规模应用程序,包括ML训练工作负载,在传输层打开了数千个连接。当网络对于一个应用程序来说速度很慢时,几乎不可能在没有加入许多交换机和主机上的数据源的情况下识别出瓶颈跳。因为CSIG传递了路径瓶颈特征,它在确定网络中的瓶颈点上具有价值。了解这些瓶颈点可以导致更好的带宽配置,及时的修复过程和实时的控制,例如更好的负载均衡。

CSIG提供路径上瓶颈链路的简单的固定长度摘要,例如最大节点延迟、最小可用带宽和最大链路利用率。信息在路径上通过L2层协议从网络设备收集。然后,每个数据接收方通过L4层协议传输选项或有效载荷将收集到的信息返回给数据发送者。CSIG在网络设备上使用简单的比较和替换操作,使其能够与网络拓扑、链路速度和分组速率相适应。

CSIG借鉴了之前显式反馈方案,但更加强大。CSIG在数据报文中传递丰富的多位交换机遥测数据,借鉴了现有带内网络遥测技术INT的工作。同时,CSIG保留了类似于显式拥塞通知(ECN)的固定大小的头部和L4传输反射。

业界有三个重要的INT变体:

  • 第一个是被P4.org指定的INT变体P4-INT
  • IETF的IOAM(实时操作、管理和维护)标准RFC9378
  • 在HPCC部署中使用的Inband Flow Analyzer(IFA)规范I-D.kumar-ippm-ifa

它们在头部定义和封装机制上有所不同,但通常都在包的路径上每跳堆叠多个每交换机遥测数据。包的大小随着每个交换机上的度量值和转发设备数量的增加而增大。根据用例和头部定义,每个包的开销从20字节到100字节以上不等。庞大且可变大小的头部,给端到端MTU限制的转发或接收设备带来了挑战,同时数据包头解析也是个问题。

存在一系列努力来解决INT变体中遇到的挑战,包括:

  • 1)在合成非数据报文(也称为探针包)中传递INT数据
  • 2)在数据包中仅传递固定大小的INT指令(例如,指定每跳收集哪些数据),而节点生成单独的报告包来传递请求的每跳节点数据。尽管这些技术减少了每个数据包的开销,但它们并没有从根本上减少网络设备或数据收集器上的总字节数或每秒的开销。与此同时,TCP-INT在开发过程中用于在数据包中携带固定大小的最小/最大/总和聚合指标,同时还具有节点定位器。然而,它仅适用于TCP选项,因此不适用于各种现代AI/HPC传输,而且没有灵活的方法引入新的指标。CSIG的类型-值格式确保了常量大小的开销,并具有未来兼容性。协议大小固定,并且足够小,可以适应4字节或8字节的标签,从而在L2层协议中实现CSIG,使运营商在部署CSIG时不必担心隧道和加密的问题。

下面,我们将描述CSIG主机和网络设备端到端的设计。

设计原则

CSIG是为解决生产网络中的拥塞控制、流量管理和网络调试问题而生。CSIG的设计原则中,最重要的是简单性和易于部署。后面也会讨论在CSIG中所做具体设计选择背后的理论基础:

  • 业务感兴趣的简单信号:使用设备端口或队列等简单指标,以解决具体业务问题,是CSIG设计原则的核心。这种简单性不仅对应用程序很重要,而且还可以降低网络设备芯片的面积、功耗和成本,保证CSIG中的信号可以在ASIC中以线速实现。例如,在CSIG中避免使用用于跟踪交换机上每个流状态的信号,因为其很难实现和部署。CSIG也足够灵活,可以适应超出本文描述范围的新信号和业务场景。
  • 端到端的视角:CSIG的设计源于对应用程序和网络的端到端的需求和权衡。使CSIG对应用程序有用,并且易于部署。
  • 固定的少量报文开销:若包的大小在经过网络时不增加,则MTU不需要改变。引入的任何开销应该是固定且少量的,以最小化在交换机/ NIC流水线中的实现成本。低协议开销还意味着对于小数据报文而言带宽开销小,从而最小化对PPS负载和带宽效率的影响。我们对于哪些数据包和设备启用CSIG做出了很少的假设。设备实现必须能够在线速率下以最小的CPU参与,处理CSIG的数据包。保持开销小且固定允许在线速率下对每个数据包启用CSIG。这很重要,因为部署可能选择在每个数据包而非一小部分数据包上启用CSIG。
  • 在隧道和加密下易于工作:隧道在现代部署中广泛使用,例如流量工程系统和云流量经常使用隧道。CSIG被设计成在复杂的隧道部署环境中轻松的端到端信令。这与其他带内遥测方案不同,其他方案需要更多的ASIC来在隧道存在时在内、外头部之间重新定位元数据。此外,CSIG还支持加密数据包,包括PSP、IPSec和802.1AE MAC安全。
  • 增量部署能力:CSIG允许逐步部署,即该机制可以逐步部署到一些设备可能支持新协议,而其他设备可能不支持的域中。后续也将讨论异构网络中的互操作性,解决与遗留设备的向后兼容性问题。

CSIG 协议

CSIG协议在数据报文头定义了两个,以实现生产网络中的端到端拥塞信号传输。

  • CSIG tag:一种L2协议,端节点和中转设备参与。
  • CSIG reflection:一种灵活的L4+协议,只有端节点参与。

CSIG tag是CSIG规范的核心。它使端节点能够请求感兴趣的网络信号,并使中转设备能够通过指定的数据报文头向端节点提供这些信号。

然而,为了实现端到端的CSIG,CSIG tag可以与CSIG reflection协议结合使用,将感兴趣的信号暴露给需要这些信号的相关端侧节点或消费者。

下面描述CSIG tag和CSIG reflection的头部格式,然后描述CSIG数据包的生命周期,概述网络设备在CSIG环境中的不同角色,并说明了这两种数据包头部机制如何共同实现端到端信号传输。

CSIG tag格式

CSIG tag是在网络协议第2层报文头中固定大小的标签。

下面显示了CSIG tag在各种数据包封装中的位置。它始终是第2层头部的最后一个标签。

ARPA:dstmac / srcmac / csig-tag / ethertype / payload

802.1q:dstmac / srcmac / vlan-tag / csig-tag / ethertype / payload

802.1ad:dstmac / srcmac / vlan-tag / vlan-tag / csig-tag / ethertype / payload

802.1ad隧道:dstmac / srcmac / vlan-tag / vlan-tag / vlan-tag / vlan-tag / csig-tag / ethertype / payload

802.1ae:dstmac / srcmac / security-tag / vlan-tag / csig-tag / ethertype / payload

因此,CSIG tag的放置/偏移与第3层及以上的头部和有效负载无关。第2.5层的头部,如MPLS,也放置在CSIG tag之后,不会影响其偏移。

CSIG tag有两种变体:紧凑型扩展型。每种变体都有一个专用的TPID代码点,使设备能够推断使用的是哪种变体。每种变体都支持与生产部署相关的不同要求,并在解决方案空间中识别对比的权衡点。

紧凑型格式

从结构上讲,紧凑型的CSIG tag变体类似于单个VLAN标签,而扩展型的CSIG tag变体类似于双VLAN标签。这种结构的相似性是有意的,后面详细说明原因。

CSIG(Compact Signal)标签的紧凑格式如下所示,其中2B用于分配给CSIG tag协议ID(TPID),2B用于数据字段。

        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |             TPID              |  T  |R|    S    |      LM     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      |0-15|  TPID  : IEEE allocated Tag Protocol ID for 4 Byte CSIG tag
      |16-18| T     : Signal Type (0:min(ABW), 1: min(ABW/C), 2:max(PD))
      |19|    R     : Reserved
      |20-24| S     : Signal Value: Bucketed (32 configurable buckets)
      |25-31| LM    : Locator Metadata of bottleneck device / port

扩展型格式

CSIG tag的扩展格式如下所示,其中2B用于分配给标签协议ID(TPID),6B用于数据字段

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |             TPID              |               LM              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   T   |                  S                    |       R       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      |0-15|  TPID : IEEE allocated Tag Protocol ID for 8 Byte CSIG tag
      |16-31| LM   : Locator Metadata of bottleneck device / port
      |0-3|   T    : Signal Type (0:min(ABW), 1: min(ABW/C), 2:max(PD))
      |4-23|  S    : Signal Value: Uniformly quantized
      |24-31| R    : Reserved for future use

CSIG tag字段

信号类型(Signal Type)

信号类型字段T: 在紧凑格式中为3位,在扩展格式中为4位,表示CSIG tag中携带的信号类型。端侧主机设置信号类型T,并在每个感兴趣的数据包上请求。紧凑格式支持最多8种信号类型,扩展格式支持最多16种信号类型。CSIG草案明确定义了三种信号:min(ABW),min(ABW/C)和max(PD)。其他编码值保留用于将来的信号类型,并且可以在CSIG的将来版本中定义和使用。

  • min(ABW): min available bindwidth, 最小可用带宽
  • min(ABW/C): min available bindwidth/Capacity,最小可用带宽率
  • max(PD): max per-hop Delay, 最大每跳时延

一个数据报文最多只能携带一个拥塞信号。然而,终端主机可以通过在流的交替数据包或循环中请求不同的信号类型来获取同一5元组流的多个信号。因此,终端主机不需要将单个流与特定的信号类型绑定,单个流可以获得所有支持的CSIG信号。

信号值(Signal Value)

信号值字段S: 在紧凑格式中是5位,扩展格式中是20位,用于捕获信号类型T指定的信号值。终端主机在请求的信号类型T旁边设置初始的信号值S,网络中的传输设备根据其计算的端到端信号修改S。例如,对于最小聚合的信号,终端主机将S的初始值设置为信号的最大允许值或其编码的最大允许值,传输设备通过比较和替换来计算数据包路径上各个设备的信号的最小。

在紧凑格式中,5位信号值与32个完全可配置的bucketing配对。每个bucketing都配置有(低值,高值)范围。这个配置对于每个信号类型都是特定的,并且在信号类型之间可能有所不同。这样可以根据每个信号类型的具体需求来定制信号值的表示形式。例如,在可用带宽的典型用例中,对信号较低值(即,当ABW接近0时)具有更高的精度,而对信号较高值则精度设置低一些。这是因为较低的ABW值对应用业务控制决策更有用。例如,知道路径上有0 Gbps vs 1 Gbps可用带宽,比知道路径上有399 Gbps vs 400 Gbps可用带宽,对决策更有用。

附录A展示了如何定义该字段以提供这种非线性的值得范围到bucketing的编码。这种可配置的编码允许使用较少的位数捕获有更多有用的信号信息,这是紧凑CSIG格式的核心功能

在扩展格式中,信号值均匀地量化为20位值。量化单位可以根据每种信号类型的最小和最大值进行配置,具体取决于需要用给定位数表示的最小和最大值。更高的位宽允许实现更细粒度的信号和更少的配置。20位足以用高精度表示一系列值。例如,使用 8Mbps 表示 min(ABW),信号值字段可以表示最大为8Tbps的值。使用128ns的表示max(PD),信号值字段可以表示最大为128ms的值。

关于特定信号量的更多讨论在附录A中。

信号量化/bucketing参数在计算信号的传输设备上直接配置。终端主机不需要明确地请求或协商这些参数。为了正确计算沿数据包路径请求的信号,所有设备必须为每种信号类型配置相同的量化/bucketing参数

定位元数据(locator Metadata)

locator metadata字段(LM, 定位元数据),在紧凑格式中是7位,在扩展格式中是16位, 可选。它捕获与瓶颈端口或设备相关的元数据信息,其中瓶颈的概念针对各个信号类型而言。locator metadata可以包括与瓶颈有关的压缩属性,例如瓶颈端口的容量,数据中心拓扑中瓶颈设备的位置,瓶颈端口的方向-上行/下行。LM还可以包括瓶颈的扩展属性(例如端口ID,TTL)。

本文提供了locator metadata可能携带的信息类型的建议,但不需要支持所有特定集合的元数据,具体取决于生产环境。

端侧将LM初始化为默认值。不更新信号值S的传输设备不得更改该数据包上的LM。更新数据包上的S的传输设备必须更新数据包上的LM

CSIG Reflection 格式

CSIG reflection使信号数据字段可以在需要进行遥测或控制的地方消费。这种机制特别适用于发送方驱动的/基于源的遥测和控制。对于接收方驱动的传输和控制,可能不需要CSIG reflection,因为CSIG tag上的信号在接收方上是可用的。

下面提供有关如何实现CSIG reflection的建议,并提供其实现部署的框架。

CSIG reflection报文头与CSIG tag报文头分开,解耦,其实现在网络协议的第4层或更高层。头的位置和携带头的数据包的选择基于传输协议而定。例如,头可以携带在接收方发送回发送方的TCP ACK包上。

注意,存在ACK合并、蹭ACK、选择性确认(SACK)等问题可能会影响CSIG reflection的行为。更一般地说,前向和反向路径数据包之间可能没有一对一的映射。在传输层实现ACK合并的情况下,CSIG reflection头应反射已经被确认的数据包中接收到的最新的CSIG tag数据字段,或者反映这些被确认的数据包中CSIG tag数据字段的总结。

值得注意的是,由于信号类型是以每个数据包为粒度,一个合并的ACK可能确认携带不同信号类型的多个数据包。在这种情况下,反射头只能反射其中一个信号。发送方传输层应该选择数据包的信号类型,以确保它可以继续接收到所有感兴趣的信号。

CSIG reflection头可以包含所有的CSIG数据字段,即紧凑版本为2Bits,扩展版本为6Bits。然而,如果消费者只对一部分信号或locator metadata感兴趣,可以优化头部空间并只包含其中的一个子集。

CSIG reflection是一种仅限于终端主机的协议,传输设备不参与其中。因此,CSIG reflection头可以集成到通过PSP或IPSec进行端到端加密的数据包的部分中。

下面讨论了在不同传输方式的数据包头中实施CSIG reflection的位置。

TCP中的反射

通常,TCP中的反射是通过TCP选项实现的。可以通过一个新的TCP选项来实现CSIG reflection,该选项由唯一的标识符识别。

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Kind      |    Length     |       CSIG数据字段              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Kind:唯一编码,用于识别TCP CSIG选项
Length:选项负载中携带的CSIG数据字段的长度(以字节为单位)
CSIG数据字段:从接收方反射到发送方的值

非TCP传输中的反射

QUIC和PonyExpress等多个传输协议构建在UDP之上。可以通过在UDP载荷中包含CSIG数据字段来实现UDP的反射。对于单向的UDP流量,可能需要从接收方到发送方的反向连接来进行CSIG reflection。

以PonyExpress为例,它是一个在用户空间主机网络堆栈中实现的自定义传输。它支持一种灵活的第4层协议,随着添加新功能而定期更改。CSIG reflection可以作为这个协议中的附加字节来实现。

                            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
                           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                           |       Flags      | CSIG数据字段  |
                           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

为了简化操作并避免协商,CSIG reflection头可以携带在所有数据包上,而不管它们是否启用了CSIG。Flags字段中的Valid位可以设置为1,表示携带反射头中的有效数据字段。在某些部署中,由于多种原因,协商是不可避免的。

CSIG 操作-报文生命周期

本节介绍CSIG操作的数据包生命周期。

下面描述CSIG的端到端操作,并通过一个数据包的生命周期进行详细讲解。假设路径中的所有节点都支持CSIG,并省略了协商阶段的细节。

                         Forward Path
     --------------------------------------------------------->

     <---------------------------------------------------------
                            Reverse Path

+------+   +-----+   +------+  +------+  +------+  +-----+   +------+
| Host +---+ ToR +---+ Aggr +--+ Core +--+ Aggr +--+ ToR +---+ Host |
+------+   +-----+   +------+  +------+  +------+  +-----+   +------+

        C:   800G      100G      100G      100G      40G

      ABW:   100G       95G       70G       90G      20G
                                                     ---
    ABW/C:  12.5%       95%       70%       90%      50%
            -----
        D:   10us       3us      18us       5us      8us
                                 ----

CSIG数据包的生命周期。下划线表示对应信号类型的正向路径瓶颈

正向路径

发送端主机首先构造一个带有CSIG标记的数据包,初始化的标记数据字段。传输层确定这些数据包的初始值,包括请求的信号类型和其他数据字段的默认值。每个中转设备对CSIG标记执行比较和替换操作,可以更新标记上的信号值和locator metadata字段。当数据包在网络中传输时,CSIG标记的数据字段会累积请求信号的聚合。

反向路径

当带有CSIG标记的数据包到达接收端主机时,CSIG标记中的数据字段被提取并传递到接收端的传输层。传输层将数据包的数据字段存储下来以进行反射,或者对这些字段进行汇总。它在从接收端到发送端的反向路径上的数据包上反映这些数据字段,反射标头在此过程中不变。发送端从传入数据包的CSIG reflection标头中提取CSIG数据字段,并将其传递给发送端的传输层以供应用程序使用。因此,发送端的传输层在大约一个往返时间内了解流的所需信号。

多个信号

传输层在使CSIG方面发挥着重要作用。尽管CSIG数据字段是通过数据包传输的,但测量结果最终与特定路径的流/连接相关。如果发送方传输层希望为同一流获取多个信号,它可以选择每个数据包基于信号类型选择信号(例如,按照循环方式在该流的数据包之间选择),并在流的状态变量中内部跟踪所有请求的信号。这种方法使发送方传输可以利用所有支持的CSIG信号,以用于拥塞控制、负载平衡和多路径传输等用例。

设备角色

CSIG有三个参与实体,每个实体都有自己的角色和责任来实现端到端的拥塞信号传递。

发送主机

发送方主机负责构建与感兴趣CSIG标记的数据包,并按照传输规范在每个数据包上初始化CSIG标记的数据字段,以及解析接收到的输入数据包中的CSIG reflection头部,并提取用于发送方传输/应用程序的CSIG数据字段。只有发送方允许在数据包中插入CSIG标记。

转发设备

中间节点负责计算和跟踪每个端口和每个数据包的拥塞信号,如ABW和ABW/C,以及基于传入数据包上的TPID编码解析CSIG标记,以识别请求的信号类型,并根据请求的信号类型(最小/最大)对CSIG标记上的信号值和locator metadata字段进行比较和替换。

接收主机

接收方主机负责提取传入数据包上的CSIG标记,并将数据字段暴露给传输层和/或接收驱动的应用程序,以及在反向路径上传输的数据包上的传输层插入和填充CSIG reflection头部。

双向流的主机角色

请注意,对于双向流量,发送方和接收方针对流中的每个方向具体说明。对于主机A和B之间的双向流动,[i] A扮演发送方角色,B扮演接收方角色,数据包从A到B传输,类似地,[ii] B扮演发送方角色,A扮演接收方角色,数据包从B到A传输。在这种情况下,从A到B传输的数据包包含了既捕捉正向A->B路径上拥塞信号的CSIG tag,又捕捉了反向B->A路径的CSIG数据字段的CSIG reflection头部。同样,从B到A传输的数据包不仅包含捕捉正向B->A路径上拥塞信号的CSIG tag,还包含捕捉反向A->B路径的CSIG数据字段的CSIG reflection头部。

CSIG中的信号

如上所述,拥塞信号类型表示CSIG tag上每个数据包携带的拥塞信号类型。紧凑格式支持最多8种信号类型,扩展格式支持最多16种信号类型。在本节中,我们具体定义了三种信号,这些信号通过业务来驱动。

值得注意的是,未来扩展的信号是CSIG中的聚合函数,它们对于数据包路径上的每跳或每端口信号进行聚合。使用典型的最大/最小聚合定义捕捉不同路径瓶颈。然而,从结构上看,该格式支持任意的读、写、修改操作,包括最大、最小、计数和求和等聚合操作,允许未来的用例利用这种结构来实现新的信号

最小可用带宽(min(ABW))

最小可用带宽(min(ABW))捕捉了数据包路径上所有端口的最小绝对可用带宽(以bps为单位)。可用带宽在每个设备的出口端口上定义。

ABW可以使用多种算法变体来计算,每一种算法变体对硬件或软件实现复杂性、计算时间尺度和信号准确性都有影响。在其基本形式中,对于给定的出口端口p和时间间隔delta_t,可以如下计算ABW:

// delta_txbit is the number of bits that exited on the wire
utilization_bps[p] = (delta_txbit[p]) / delta_t;
// capacity_bps[p] captures the link speed of port p
abw_bps[p] = capacity_bps[p] - utilization_bps[p];

实现这些计算依赖于设备中至少以下一种功能:

  • 基于计时器的计算:大多数网络ASIC都维护着硬件计数器,用于跟踪每个出口端口的传出比特数。为了计算可用带宽,软件或硬件中的周期计时器线程会触发可用带宽的计算和更新,时间间隔为delta_t,其中delta_t是一个可配置的参数。
  • 每个数据包计算:在这种方法中,可用带宽是在通过出口管道处理每个数据包时计算和更新的,通常在硬件中,例如使用指数加权移动平均(EWMA)估计,其中权重是可配置的。delta_t在这种方法中不是一个显式的参数,而是通过EWMA权重隐式确定。
    变体,如折扣速率估算器(DRE)CONGA,使用了每个数据包的更新和基于计时器的方法的组合。

最小可用带宽率(min(ABW/C))

ABW/C表示给定链路上可用带宽与链路容量的比例或百分比。min(ABW/C)捕捉数据包所经过路径上的链路利用率瓶颈。这个信号在链路速度不均匀的路径中最相关,并与min(ABW)区别开来。min(ABW/C)等于max(U/C),其中U是出口端口的利用率(以bps为单位),C是出口端口的容量(以bps为单位),ABW是出口端口的可用带宽(以bps为单位)。

因此,

max(U/C) = max (1 - ABW/C) = 1 - min(ABW/C)

ABW/C可以通过以下方式从ABW计算得出:

abwc_frac[p] = abw_bps[p] / capacity_bps[p];

在具有异构链路速度的路径上,min(ABW)和min(ABW/C)瓶颈不一定是相同的端口。

min(ABW)和min(ABW/C)瓶颈有各自的值。

min(ABW)和min(ABW/C)共享以下要求:

  • 算法要求:确保计算准确性和性能,并处理各种通信模式(峰值、持续、间歇)。

  • 实时性:算法必须在合理时间范围内计算并更新ABW和ABW/C,以适应网络流量和链路变化。

  • 精度:算法必须以高精度计算和更新ABW和ABW/C,以提供准确的链路利用率信息。

  • 可配置性:算法参数和策略必须可配置,以允许适应网络的具体需求和特性。

  • 扩展性:算法必须具备扩展性,以处理大规模网络和高速链路的计算需求。

  • 有效性:算法必须在有限的计算和存储资源下运行,以确保高效和可扩展性。

  • 稳定性:算法必须具备稳定性,以在网络波动和传输环境不稳定的情况下提供准确的结果。

  • 可行性:算法必须可行,无论是在现有硬件设备中实现还是在未来的硬件设备中实现。

为了支持CSIG中的min(ABW)或min(ABW/C),设备应支持具有可配置delta_t的原始ABW计算,还可以支持其他算法,例如EWMA或DRE。该要求能够对计算可用带宽的时间尺度进行一致的解释。这种一致的解释允许端侧根据这个时间尺度来调整其控制决策,例如与流的往返时间相关。

CSIG不对具体的delta_t值设置严格要求,只要能够配置以覆盖网络中的RTT范围即可,例如{10微秒,100微秒,1毫秒,10毫秒,100毫秒,1秒等}。尽管人们可能期望包路径上的所有设备在相似的时间尺度上计算ABW,以提供一致的路径宽度视图,但CSIG并不会对一个数据包路径中设备选择的delta_t参数的一致性设置严格要求。信号精度和时间尺度的选择试具体使用情况而定,不受CSIG的强制约束。当CSIG上每个数据包携带的ABW或ABW/C在较短的时间尺度上时,端侧可以使用流的数据包间EWMA来计算较长时间尺度上的ABW或ABW/C。当在出口端口上的流遍历的RTT范围较大时,ABW计算在出口端口上设置为固定的时间尺度,而在每个中转设备上计算的ABW则可使用较长时间尺度,该技术就显得有用[【注2】]。

计算ABW或ABW/C值必须进行压缩以适应CSIG tag上的可用信号值位。设备必须支持32个完全可配置的ABW bucket和ABW/C bucket以进行紧凑的CSIG,并支持可配置的量化因子以进行扩展的CSIG中的均匀量化。在数据包路径上的所有设备必须使用相同的bucket/量化因子来正确计算沿路径的min(ABW)或min(ABW/C)。附录A提供了这些配置的示例。

每个中转设备执行比较和替换操作,即在通过bucket化/量化之后,如果数据包上的传入ABW或ABW/C信号值高于设备对于数据包的出口端口计算的本地ABW或ABW/C值,则更新CSIG tag上的信号值。【注3】。

注释说明
注1:CSIG定义了对delta_t值的一致性要求,以保证在网络中计算的ABW的一致性和可调性。
注2:CSIG允许端侧根据需要在不同的时间尺度上计算ABW,并支持不同时间尺度上的ABW之间的转换。
注3:最小化ABW或ABW/C可能会在拥塞点出发生。

min(ABW)和min(ABW/C)是网络设备上具有低实现复杂性的明确信号。为了简单起见,这些定义有意不区分可能共享出端口的QoS类别。对出端口上每个QoS类别的可用带宽进行定义和有意义的解释是很复杂的,因为它取决于与QoS相关的调度策略(严格优先级/WRR/不足WRR)、缓冲区分割配置和其他策略(例如AQM)。这里将QoS为基础的这些信号及其潜在用例作为未来的工作留下。

最大跳延迟(max(PD))

max(PD)是在数据包路径中的所有跳跃中数据包经历的最大一跳延迟。一跳延迟PD(per-hop Delay)是数据包在设备管道中花费的时间。它可能包括链路层延迟,或者仅包括在转发管道中观察到的延迟。

与每个端口的ABW和ABW/C不同,PD是数据包粒度的。它包括数据包经历的PHY、MAC和交换机管道延迟。管道延迟是最相关的组成部分,因为它捕捉了与拥塞相关的排队延迟。设备实现可以明确跟踪每个数据包的入站和出站时间戳,并在管道的最后阶段执行差分。对这些阶段的准确定义取决于设备的架构。例如,某些设备可以利用现有的尾端时间戳支持来实现这一目的。

要求

  • 算法要求

要支持CSIG中的max(PD),设备应该支持通过设备跟踪每个数据包经历的延迟。

  • 精度要求

希望在设备捕获的数据包延迟组成部分之间有最小的间隔。然而,CSIG对要求支持的PD的准确性没有设定严格要求。

  • 分桶/量化要求

计算出的延迟值必须被压缩以适应CSIG tag上可用的信号值位。设备必须支持32个完全可配置的延迟桶以适应紧凑的CSIG,并支持可配置的量化以进行扩展的CSIG中的均匀量化。沿着数据包路径的所有设备必须配置相同的桶/量子,以正确计算沿路径的max(PD)。

每个中转设备都执行比较和替换操作,即如果数据包上的传入延迟信号值高于设备对数据包的本地计算延迟值(在桶化/量化后),则更新CSIG tag上的信号值。

例如:

// 如果当前跳是瓶颈,更新数据包上的信号值
pkt->csig_tag->pd = min(pkt->csig_tag->pd, device->pkt->pd)
  • QoS要求

数据包在设备上经历的延迟是一个具有特定QoS的信号。这是因为数据包在通过设备的流水线时会受到QoS策略的影响,包括优先级设置、调度和缓冲。例如,高优先级数据包的延迟可能比低优先级数据包小。因此,对于数据包的延迟测量应包括应用QoS策略的流水线中的各个组成部分。

Locator metadata实现

locator metadata(LM)记录了有关瓶颈设备或端口的信息。在本节中,我们讨论支持CSIG中的LM的需求,并推荐一些常用的属性。

CSIG并不对LM内部格式(即如何将各个属性组织在可用的LM位之间)设置严格要求。然而,该LM内部格式必须在部署域中的设备之间保持一致,以便终端主机可以一致地解释这些位。可以针对每个信号类型设置LM格式。

设备应支持配置每个端口的LM值,以便将其写入CSIG tag。设备还可以根据信号类型提供更细粒度的LM配置能力。设备更新了信号值,则CSIG数据包必须使用与端口和信号类型对应的LM进行更新。

属性

locator metadata属性可以设计为捕获业务场景所需的精度,以便确定网络瓶颈。属性可以被编码,以适应在CSIG中可用的有限数量的LM位。

我们将属性列表分为紧凑属性和扩展属性。紧凑属性是由紧凑型CSIG中可用的有限位数的LM限制,仅捕捉有关瓶颈的必要的基本信息,以满足使用场景需求,即用于通知控制决策或遥测。扩展属性提供关于瓶颈的更高精度的信息,帮助直接确定瓶颈设备或端口。扩展属性通常需要更多位,因此更适合扩展型CSIG。

下面列出了属性的示例。

紧凑属性

  • 链路容量:瓶颈链路的容量。在典型部署中,链路速度是一个小的集合,可以使用<= 5位进行编码。
  • 瓶颈链路位置:瓶颈设备/端口所在的拓扑位置(或阶段)。例如,在一个5层闭合拓扑中,设备的位置可以使用3位进行编码。
  • 链路方向:端口在网络拓扑中的方向。例如,使用三个类别 - 上行链路、下行链路和侧链路 - 可以使用2位进行编码。

扩展属性

  • 端口ID:为部署域中的每个端口编码一个唯一的标识符。
  • 设备ID:为部署域中的每个设备编码一个唯一的标识符。
  • TTL(生存时间):捕捉瓶颈设备上的数据包的TTL值(Time to Live,指的是数据包在网络中允许存在的最长跳数),使用8位表示。终端主机可以使用此属性推断数据包瓶颈节点在多少跳。

LM属性和编码方案最终是有业务场景与部署决定。CSIG支持灵活的LM规范,以适应各种需求和未来应用。

实现CSIG的增量部署

大多数生产网络是异构的,管理网络中有不同代际设备。

在描述增量部署之前,我们引入了CSIG剥离的概念,这是在异构环境中部署CSIG的基础行动原语。

支持CSIG的设备在转发数据包之前必须能够删除CSIG tag。设备必须可以在每个出口端口上配置CSIG剥离。如果配置了端口剥离CSIG,则在该端口上出口的所有带有CSIG tag的数据包在转发之前必须移除该标签。

在接下来的几节中,我们将描述如何通过此功能实现增量部署。

CSIG支持级别

首先,我们根据设备的CSIG支持级别将设备分为三个简化的类别。在接下来的几节中,我们将描述CSIG如何与每个设备类别进行互操作。请注意,支持级别取决于标签的放置位置以及使用紧凑型还是扩展型CSIG tag格式。

丢弃

此类设备不能识别或解析带有CSIG tag的数据包。如果接收到此类数据包,它们将被简单地丢弃。

透传

此类设备能够识别和解析带有CSIG tag的数据包,并且可以透明地转发带有标签的数据包或经过剥离标签后的数据包到相邻设备(在中转设备的情况下)或到端侧主机传输层(在端侧主机的情况下)。然而,它们不支持更新标签上的CSIG数据字段。

一些本地不支持CSIG的设备可以根据可配置的TPID支持CSIG的透传模式。

完全支持

此类设备支持完整的CSIG协议,包括识别、解析、转发、剥离标签、信号计算和标签上的信号更新。然而,可能只支持一部分信号类型。

软件辅助支持

值得注意的是,在一些本地不支持CSIG的设备中,可以重用用于VLAN标签处理的资源,以使用软件和硬件能力组合来支持某些信号类型的CSIG。我们将这种支持级别称为软件辅助支持。

本地支持

本地支持CSIG的设备明确配备了实现CSIG协议所需的硬件能力。

CSIG域是一个部署域,其中所有网络设备对CSIG都具有完全支持或透传支持能力。

在既有部署中的互操作性

在本节中,我们首先定义了在既有部署中的CSIG互操作性的要求。然后,我们考虑了在上一节描述的支持级别的设备,并描述了如何配置这些设备以实现互操作性。需要注意的是,以下描述分别适用于紧凑型和扩展型的CSIG tag。

互操作性的要求

转发:最基本的要求是网络中不能因为设备不支持CSIG而丢弃带有CSIG tag的数据包。这意味着带有CSIG tag的数据包不能到达丢弃设备,或者在到达此类设备之前必须去除其CSIG tag。

协商:端口/流量应当确保路径(包括端侧和中转设备)具有CSIG功能,然后才能在数据包上启用CSIG标记。丢弃类别的设备不应要求任何更改以实现协商。这个要求是为了确保端到端的CSIG操作中数据字段的正确性,并与传统设备或软件栈进行互操作。

转发

为了实现CSIG的转发互操作性要求,可以进行CSIG tag去除,如下所示:

  • 当与给定出口端口连接的邻近设备是一个Discard设备且不能解析CSIG数据包时,必须配置该出口端口以剥离传出数据包上的标签,以确保该数据包在下游不会被丢弃。

  • 当设备仅支持Pass-through或不支持CSIG数据包上请求的信号类型时,可以配置该设备上的出口端口以剥离传出数据包上的标签,以确保CSIG不携带不准确的信息。在某些情况下,如果在某些跳点上丢失捕获信号是可接受的,在Pass-through设备上可以保持带有CSIG tag的数据包的传递。

  • 在CSIG域的边界上,连接到CSIG域外设备的设备端口必须剥离标签,以确保离开域的数据包不包含CSIG tag。只有连接到CSIG域内设备的出口端口应该在传出数据包上保留CSIG tag。

CSIG数据包和非CSIG数据包可以在褐色地带环境中一起使用。这个要求意味着端侧主机必须能够发送和接收CSIG数据包和非CSIG数据包。在发送主机上标记为CSIG tag的数据包可能在接收主机上没有标签。此外,紧凑型CSIG和扩展型CSIG数据包可以在同一网络上一起使用。

协商

支持发送和接收CSIG标记数据包可能需要对中转设备和端侧主机进行软件和/或硬件更改。在许多部署中,特别是那些需要硬件升级以支持CSIG(如交换机或网卡支持)的部署中,由于各种原因,版本落后者在很长一段时间内仍然存在,与这样的落后者实现互操作性是一个关键要求。如果不进行CSIG功能的协商,则不符合CSIG规范的设备可能会丢弃CSIG数据包。协商路径的CSIG能力对于确保CSIG协议在褐色部署中安全地端到端运行至关重要。

如果端侧主机具有Pass-through CSIG支持甚至更高,中转设备具有完全的CSIG支持(本地支持或软件辅助),则认为该路径具备CSIG能力。在网络流上发送带有CSIG tag的数据包之前,端侧主机必须协商路径的CSIG能力。我们讨论了一种协商路径CSIG能力的方法,其中包括两个部分:协商中转设备支持和协商端侧主机支持。

中转设备支持协商

在本节中,我们描述了一种简单的方法,用于与具有CSIG剥离的中转设备进行CSIG支持的协商。

CSIG剥离可以通过在数据包路径上的设备或之前从数据包头中删除CSIG标记来隐式实现协商。如果接收端主机收到带有CSIG标记的数据包,则表示所有位于数据包路径上的设备,包括中转设备和端侧主机,都具有所需的CSIG支持。如果接收端主机收到没有CSIG标记的数据包,则表示一个或多个设备不具有所需的CSIG支持,或者发送端在一开始就没有对数据包进行标记。可以通过空/无效的CSIG reflection 报头将此提示隐式报告给发送方,发送方可以确定数据包路径是否具备CSIG功能。

这种方法假设每个设备都知道其相邻设备中的CSIG支持级别,对于典型的私有SDN网络,通过配置是可行的。在没有集中化的情况下,可以定义诸如新的LLDP TLV之类的机制来广播设备上的CSIG,包括紧凑型与扩展型CSIG标记支持、支持的信号类型、透传与完全支持等。

端侧主机支持协商

发送端主机可能需要与远程端主机进行显式协商,以确保远程主机的主机网络堆栈具有所需的CSIG支持级别。理想情况下,这种显式的CSIG协商应该在初始连接握手期间或之前执行,在此之后在连接建立后启用/禁用数据包上的CSIG。还可能需要明确协商传输中是否使用CSIG Reflection,与路径CSIG能力的协商单独进行。例如,在TCP中,需要协商使用CSIG Reflection TCP选项。关于这种协商方案的详细信息,我们将在将来扩展协议时讨论。

通过软件后向兼容

没有本地CSIG支持的中转设备可以通过软件辅助方法参与CSIG协议。这允许试验部署在不必升级网络上的设备硬件的情况下享受CSIG的增量好处。

由于紧凑型和扩展型CSIG标记结构上类似于单VLAN标记和双VLAN标记,转发设备中的VLAN资源可以被重新用于支持CSIG更新。更具体地说,VLAN标记的可配置TPID可以被用来将CSIG标记视为VLAN标记,并且可以利用设备中的VLAN匹配/操作资源来支持更新标记中的CSIG数据字段

软件代理周期计算:对于诸如ABW和ABW/C之类的信号,可以在中转设备的CPU上运行软件代理,根据硬件计数器定期计算这些信号,并在数据平面中编程VLAN匹配/操作规则,根据计算得到的信号更新CSIG数据字段。由于匹配/操作规则在数据平面中,CSIG数据包可以以线速率处理,无需CPU参与。但是匹配/操作规则本身可以通过软件代理以较慢的速率进行更新

Compact CSIG旨在在常见的可用VLAN资源的限制下实现软件辅助的向后兼容性。通过软件实现向后兼容性是Compact CSIG设计的基本功能。

需要注意的是,在软件代理中可能无法跟踪每个数据包的信号类型,比如跳延迟(hop delay)。但是,如果希望对这些信号类型进行软件辅助支持,可以通过可用的硬件计数器和寄存器(如延迟直方图)实现信号的近似。

Greenfield 部署

在Greenfield部署中,CSIG域中的所有设备都原生支持CSIG协议。Expanded CSIG旨在利用Greenfield部署,其中不需要向后兼容性、协商和互操作性。它通过更高的信号位宽和locator metadata,提供了比Compact CSIG更好的信号精度。Expanded CSIG还可以支持多达16种信号类型。

Greenfield CSIG域中的设备必须支持在域边界处剥离CSIG以确保CSIG数据包不离开域。

设计原则

CSIG的设计选择是根据端到端的视角来制定的,关注应用程序的重要性,并在简单性和实用性方面做出权衡。在本节中,我们讨论了CSIG设计的理论基础以及它相对于现有技术的优势。

为什么选择在链路层?

CSIG选择在第2层封装CSIG tag,第2层的CSIG tag偏移不受第3层及以上层的头部和负载的影响,这意味着只需要支持一小组标签位置偏移来读取和更新头部。这使得CSIG的设备实现更简单。相比之下,在第3层或更高层实现的网络测量方案需要支持大量的数据包格式,因为该集合会随着每一层的格式/封装的交叉乘积而增长。这种复杂性迫使设备实现仅能支持一小部分数据包格式/封装,阻碍了这些方案的采用和部署。与之相比,CSIG标记更容易支持和部署,因为它位于第2层,并且尽管第3层及以上层存在不同的格式/封装,但具有固定的偏移。

选择第2层还使得与网络内的隧道和加密更简单兼容,这在数据中心部署中很常见。

  • CSIG标记与PSP加密包和IPSec加密包兼容,其中第4层头部和有效负载可以被加密。
  • CSIG标记通过第3层隧道传输,例如IP-in-IP、VxLAN、Geneve,在固定的偏移量处位于数据包头部。这样可以避免在封装和解封装数据包时需要复制和重新定位CSIG标记的需求,如果在第3层或更高层实施,这将是必要的。
  • CSIG标记被放置在第2层头部堆栈的最后一个头部,以确保与第2层和第2.5层隧道域的兼容性。CSIG标记在MACSec和其他第2层封装中的放置位置在第4.1节的表中显示。

大多数带内网络遥测方案不具备向后兼容性。然而,CSIG标记与VLAN标记的结构相似性使得其与许多没有原生CSIG支持的设备具备向后兼容性。这使得部署能够在不需要升级其网络硬件的情况下享受CSIG的好处。

此外,由于扩展的CSIG限制为8B,即双VLAN标记的大小,因此在读取和处理第3层及以上层的头部时,设备需要的数据包解析深度不受影响

总之,选择第2层作为CSIG标记的关键部分是CSIG简单高效的重要组成部分,因为它保持了设备实现的简单性,同时支持多种封装和向后兼容性。

CSIG tag与reflection分离

CSIG的设计将CSIG标记和CSIG reflection头部分为不同的层。这种解耦使得端侧主机能够开发不同的针对特定传输的CSIG reflection实现,同时共享底层的CSIG标记机制。这意味着中转设备的行为不会受到CSIG reflection创新的影响

此外,这种解耦还能够分别跟踪正向和反向路径的瓶颈。这很重要,因为拥塞控制算法通常只对正向路径上的拥塞做出反应,而不对反向路径上的拥塞做出反应。相比之下,将信令和反射混合到同一个头部的带内方案不提供正向和反向路径之间的区分

报文头固定大小

CSIG的固定大小头部在具有4k或9k MTU的数据包中所占的带宽开销不到0.2%。这意味着不需要分片或增加MTU大小来支持多个拥塞信号。此外,包括CSIG标记和反射头部对网络设备的包每秒传输率(PPS)的性能影响较小。

低开销使得可以在所有实时数据包、显式探针包或抽样数据包上启用CSIG。这是一个重要的能力,因为它允许直接量化数据包本身所经历的瓶颈,而不是依赖于探针。然而,对于需要这种可见性的部署来说,利用探针或抽样数据包上的CSIG仍然是一种选择。

CSIG的设计旨在执行比较和替换(或更一般地进行读取-修改-写入以供将来的扩展),带有固定大小的标头。因此,与在每个跳跃点追加信息的方案不同,CSIG不受网络路径中跳数(即网络直径)的限制。

信号设计

CSIG的信号设计侧重于简单的、由用例驱动的聚合信号。

CSIG允许单个数据包只携带一个拥塞信号。为了在最终主机上获取多个信号,它利用了最终主机可以在流的多个数据包中请求不同类型信号的事实。相比之下,其他方案往往会在每个数据包上负载大量信息,包括有关多个信号的元数据,这可能会限制功能。此外,CSIG标记的格式也是可扩展的,这意味着它可以适应未来的额外信号类型和locator metadata,而不损害CSIG设计的优势。

紧凑CSIG设计的一个独特特点是能够完全配置信号值bucketing,从而以有限的位数实现高效的信号表示例如,编码可以调整为在对应用程序更重要的值范围上提供更大的细粒度,在对应用程序不太重要的范围上提供更低的细粒度。同样,locator metadata可以通过携带与应用程序相关的少量压缩的网络瓶颈属性位来高效表示。而扩展CSIG则使用统一的信号量化以获得更高的精度,并提供更大的位宽来定义信号和locator metadata,从而提供更灵活性。

用户场景

CSIG的业务场景包括拥塞控制、流量管理和网络调试等。在CSIG出现之前,这些场景通常使用端到端测量的信号(例如丢包率和延迟)或来自网络设备的带外信号(例如端口利用率)。CSIG通过增加显式的带内测量,提供了性能、效率和调试能力的提升。

在此文档中,我们介绍了第5节中定义的三个信号的用例。信号的核心是对瓶颈的定义。随着时间的推移,我们认为会出现其他信号定义,这些信号将定义一个链路瓶颈,例如链路上的最大共享流数。对于这些新信号,locator metadata可以继续提供关于链路瓶颈的属性,例如端口容量。

拥塞控制

CCA(Congestion Control Algorithms)可以以至少两种不同的方式利用CSIG信号。首先,现有的CCA可以使用CSIG值来解决端到端信号的盲区,如丢包、延迟和传递速率。因为大多数生产网络都部署了一些形式的端到端拥塞控制,包括Swift和BBR。第二种使用CSIG的方式设计完全新的拥塞控制算法,这些算法以CSIG作为其主要信号。下面我们重点讨论第一类情况。

端到端CCA有多种形式,为了简单起见,我们以Swift CC作为基准来描述用例。Swift是一种基于延迟的拥塞控制,它使用由网卡硬件时间戳进行准确的往返时间(RTT)测量。这些信号可以应用于其他CCA,不限于Swift。

在无丢包网络和使用分组散布的网络中利用CSIG进行拥塞控制的解释和应用是未来研究的课题。

使用端到端拥塞控制中的最大每跳延迟

Swift中使用的端到端RTT测量包括流路径上所有跳跃的排队延迟,包括正向和反向路径。使用集中延迟信号的一个结果是,流在回应可能无法直接控制的延迟时会减小发送速率。此外,在流的路径上可能存在多个拥塞链路的部署中,希望按照沿流路径的最大每跳延迟max(PD)调节流的发送速率。将端到端测量的延迟替换为瓶颈延迟的Swift方程式如下:

// 当瓶颈跳跃延迟超过所选目标延迟时减小拥塞窗口
如果(max(PD)>目标延迟)则
  md = beta *(max(PD) -目标延迟)/ max(PD)
  cwnd =(1- md)* cwnd

Poseidon是文献中提出的一种拥塞控制算法,它通过减小拥塞窗口中的最大每跳延迟来减小其拥塞控制响应。通过在拥塞控制响应中增加瓶颈信息,POSEIDON流在存在反向路径拥塞和跨多个网络跳跃拥塞时实现更高的流量吞吐量。[POSEIDON]中的算法1详细介绍了在增加和减少拥塞窗口时使用最大每跳延迟的方法。

使用端到端拥塞控制中的最大链路利用率

端到端拥塞控制使用启发式算法确定拥塞窗口的增加量,例如在Swift的情况下,当测量的往返时间低于目标延迟时,Swift按每个往返时间增加一次拥塞窗口。BBR通过测量的传输速率的函数来增加速率。

这些启发式方法的问题在于它们无法完全正确地进行速率或窗口调整,要么过低要么过高。速率过低意味着即使瓶颈链路利用率低,传输仍然需要更长的时间才能完成,而过高则会导致不必要的排队延迟和丢包。

在下面的例子中,我们将最大利用率信号集成到Swift的拥塞窗口更新公式中,以便在瓶颈链路利用率低的情况下更快地自适应增加。拥塞窗口的演变如下所示:

// 根据利用率余量比例增加拥塞窗口
if (rtt < target_rtt) then
  fcwnd <-- fcwnd + additive_increment
            + kLambda . fcwnd . (1 - max(U/C))

例如,Swift中固定的加性增量(rate <-- rate + Additive Increment)意味着使用400 Mbps的加性增量,需要200个RTT才能获得80 Gbps的带宽。而使用瓶颈链路利用率的CSIG则只需要不到10个RTT就可以安全地增加到80 Gbps。

另外,E2E CC使用启发式方法确定新建立连接的初始传输速率。过慢的初始速率会导致传输时间过长,同时浪费可用带宽,而过快的初始速率会引起队列延迟和丢包。对于已经空闲了多个往返时间的连接开始的传输,也存在同样的困境。

当我们事先知道多路复用的程度较低,即在任何时刻只有少数几个流共存于链路上时,传输开始后立即利用瓶颈带宽可以快速完成传输。这对于传输在出现队列溢出时也能快速恢复任何丢失的数据包的传输特别有帮助。

以一个空的200Gbps网络为例,一个单一的传输可以在第二个RTT内完全使用200Gbps的带宽,因为第一个RTT中的CSIG反馈表明瓶颈链路上有200Gbps的可用带宽。

CSIG的min(ABW)瓶颈带宽允许传输以线速率安全启动。

CSIG通过携带瓶颈链路信号和瓶颈locator metadata来编码每个流的路径信息。这个路径级别的信息是直接从应用数据包中获取的,而不是通过合成探测进行的,并且可以直接归属于该流,对于流量工程和应用性能调试非常有价值。

在负载均衡和多路径工作中,CSIG传递了与流相关的瓶颈链路信号和瓶颈locator metadata,以实现路由决策和流量均衡。

数据中心的拓扑结构采用多样化的路径连接任意的源目的地对。传输使用的技术包括保护性负载平衡(PLB)和多路径(RFC8684),以在多条路径上分散流量。传输中的负载平衡和多路径使用端到端信号和启发式算法来选择使用哪些路径以及在每个路径中传输多少流量。

利用沿着多样化路径的瓶颈链路的CSIG信号,负载平衡和多路径方案可以选择低拥塞的高质量路径,并以拥塞感知的方式在它们之间分散流量。

locator metadata还可以用于区分拥塞和核心网络拥塞,从而调整负载平衡/多路径动作。例如,通过瓶颈和链路方向属性,可以确定最后一跳是否是瓶颈。当最后一跳是瓶颈时,流级别的负载平衡/多路径动作可能无效,并且实际上可能会加剧incasts(拥塞峰值)。这种情况下,可能需要应用层负载平衡或作业调度技术来分发流量。但是,当已知拥塞存在于核心网络时,流级别的负载平衡/多路径动作可以绕过拥塞区域,并提高性能。

流量工程通过在源目的地对之间划分合适带宽的路径。数据中心内的例子包括数据中心网络互连层(DCNI)。CSIG可以提供细粒度的路径级别信息,包括短时尺度的突发拥塞,以供流量工程系统使用。通过对空间和时间上跨流量进行汇总的CSIG信号,流量工程可以在数据中心级别选择路径和平衡流量,以适应突发流量,如机器学习。

应用程序通常抱怨网络速度慢,但很难确定造成问题的具体网络段。特别是对于规模较大的数据中心,其中的流量可以经过多达九跳节点。对于具有数千个流量和各种源目的地对的应用程序而言,找出瓶颈所在以及路径在何种时间尺度上构成瓶颈就像在海量数据中寻找针一样困难。

针对应用程序的网络流量,具有瓶颈定位器的CSIG信息可以快速准确地回答为什么流量慢和网络/路径瓶颈在哪里。

还可以在类似于PINGMESH的网状探测器系统上启用CSIG,以在任意两个服务器之间的端到端探测测量中增加链路瓶颈信息,以帮助故障排除。

关于安全性的考虑

只有可信的发送者主机才能构造、初始化和向经授权的流中插入CSIG tag。根据部署情况,授权可以在网络适配器或交换机上进行,类似于防火墙规则。可以在域边界处使用CSIG剥离作为围栏规则,以确保未经授权的CSIG tag不会穿越这些边界传播。

私有网络中的恶意或损坏的网络设备可能会插入任意的CSIG值,或者在中转节点的数据包中插入CSIG tag。我们期望有检查机制来识别和排除私有网络中的非功能性或恶意网络设备,因为它们可能比传播具有误导性的CSIG值更具有危害性。

结论

随着对数据中心敏感于延迟和带宽使用的应用程序的部署增加,例如AI/ML/HPC工作负载和基于RDMA的应用程序,在动态变化的流量模式下,仅依赖端到端信号是不够的。网络设备向终端主机提供简单而及时的信号可以增强和优化终端主机传输,充分利用数据中心的带宽。CSIG是一种在网络中分发拥塞信息的简单、实用和可部署的协议,它建立在先前工作的成功方面基础上,并以拥塞控制、流量管理和网络调试等使用案例为基础。

附录A

CSIG信号编码示例,以下表格演示了一个 3 位信号值的编码示例。请注意,这仅是一个示例。对于特定部署而言,对于不同用例,
其编码是特定于情景的。请注意,CSIG 标签支持紧凑格式和扩展格式中 5 位(20 位)信号值大小。

 值      min(ABW/C)    min(ABW)    max(PD)

------- ------------ ----------- ------------

  0x0     0%-1%        0-1Gbps     0-10us
  0x1     1%-5%        1-5Gbps     10-50us
  0x2     5%-10%       5-10Gbps    50-100us
  0x3     10%-20%      10-20Gbps   100-200us
  0x4     20%-50%      20-50Gbps   200-400us
  0x5     50%-75%      50-75Gbps   400-800us
  0x6     75%-90%      75-90Gbps   800-2000us
  0x7     90%-100%     >90 Gbps    >2000us

术语

  • ABW:可用带宽
  • AQM:主动队列管理
  • CCA:拥塞控制算法
  • Connection / Flow:一个5个元组的传输连接,例如TCP连接
  • CSIG:拥塞信号
  • CSIG data fields:CSIG tag中的字段,不包括TPID
  • CSIG packets:包含CSIG tag和可选的CSIG reflection头的数据包
  • CSIG-capable path:如果路径上的所有中转设备都支持CSIG协议,并且终端主机至少支持CSIG数据包的中转,则该路径被称为CSIG-capable
  • CSIG-tagged packets:包含CSIG tag的数据包
  • CSIG-domain:安全网络部署域,其中域中的所有设备都具有完全的CSIG支持或通过CSIG支持通过{.pilcrow}
  • PD: 每跳延迟
  • E2E: 端到端
  • IPSec: Internet协议安全
  • MTU: 最大传输单元
  • MSS: 最大段大小
  • NIC: 网络接口卡
  • Packet Path: 给定数据包的逐端口网络路径,指定为一系列设备接口{.pilcrow}
  • PSP: PSP安全协议
  • TPID: 标签协议ID
  • TE: 流量工程
  • Transit device: 在CSIG数据包路径中的任何交换机、路由器或中间盒{.pilcrow}
  • WRR: 加权轮询

原文链接

参考