跳转至

Abstract

In datacenters, lossless network is very attractive as it can achieve ultra-low latency. In commodity Ethernet, lossless forwarding is achieved by hop-by-hop Priority-based Flow Control (PFC). To avoid buffer overflow, PFC-enabled switches need to reserve some buffer as headroom, which is for absorbing in-flight packets during the delay for backpressure messages to take effect. However, with the growing link speed in production networks, the buffer becomes increasingly insufficient, and the headroom can occupy a considerable fraction of buffer. As a result, the remaining buffer for absorbing normal traffic bursts is significantly squeezed, leading to frequent PFC messages that degrade the network performance. However, the current static and queue-independent headroom allocation scheme is inherently inefficient in solving this problem. In light of this, we propose Dynamic and Shared Headroom allocation scheme (DSH), which dynamically allocates headroom to congested queues and enables the allocated headroom to be shared among different queues. By statistical multiplexing, DSH needs much less headroom to ensure lossless forwarding. Furthermore, DSH can be implemented on switching chips with moderate modifications. Extensive simulations show that DSH can absorb 4× more bursts without triggering PFC messages and reduce the flow completion time by up to ∼31%.

Index Terms—Priority-based Flow Control, Bursty Traffic, Buffer Management
  • 在数据中心,无损网络非常有吸引力,因为它可以实现超低延迟。 在商用以太网中,无损转发是通过逐跳基于优先级的流量控制(PFC)来实现的。 为了避免缓冲区溢出,启用 PFC 的交换机需要保留一些 缓冲区(buffer) 作为余量,用于在 反压消息(backpressure messages) 生效的延迟期间吸收 正在传输的数据包(in-flight packets) 。 然而,随着生产网络中链路速度的不断增长,缓冲区变得越来越不足,并且 头部空间 可能会占用缓冲区的相当一部分。 结果,用于吸收正常流量突发的剩余缓冲区被“挤压”,导致频繁的 PFC 消息降低网络性能。
  • 然而,当前的静态且与队列无关的余量分配方案在解决这个问题方面本质上是低效的。 鉴于此,我们提出动态共享余量分配方案(DSH),该方案动态地将余量分配给拥塞队列,并使分配的余量在不同队列之间共享。 通过统计复用,DSH 需要更少的头部空间来确保无损转发。 此外,DSH可以在适当修改的交换芯片上实现。 广泛的模拟表明,DSH 可以在不触发 PFC 消息的情况下吸收 4 倍以上的突发,并将流完成时间减少高达~31%。
索引术语——基于优先级的流量控制、突发流量、缓冲区管理
(1) "为了避免缓冲区溢出,启用 PFC 的交换机需要保留一些缓冲区作为余量,用于在反压消息生效的延迟期间吸收正在传输的数据包"
Ask:当前“PFC交换机缓冲区”机制
  1. PFC机制总体解读 PFC(Priority Flow Control)是一种以太网交换机上的流控制机制,用于解决网络拥塞和流量管理的问题。PFC主要用于数据中心网络中,特别是在使用Ethernet的数据中心中,以确保对延迟敏感的流量(如存储流量)的低延迟传输。

PFC的核心思想是通过对交换机==端口上的不同优先级进行流控制==,防止低优先级流量影响高优先级流量。为了实现这一目标,PFC使用了交换机上的缓冲区机制。

PFC的缓冲区机制的关键点包括: 1. 缓冲区划分: 交换机上的缓冲区被划分为不同的队列,每个队列对应一种优先级高优先级的队列通常会被分配更多的缓冲区空间,以确保对高优先级流量的快速响应。 2. 流控制: 当==网络拥塞或交换机缓冲区即将溢出==时,PFC可以通过发送==控制帧来暂停或恢复特定优先级的流量==。这样可以 防止低优先级的流量压制高优先级 的流量。 3. IEEE 802.1Qbb标准: PFC的实现通常遵循IEEE 802.1Qbb标准,该标准定义了用于以太网交换机的优先级流控制机制。 4. 配置: PFC的配置涉及到交换机和连接到交换机的设备的设置。管理员可以配置每个端口上的不同优先级,以及何时启用或禁用PFC。

总体而言,PFC通过使用缓冲区机制,确保了在网络拥塞情况下对高优先级流量的优先处理,从而提高了网络的性能和可靠性。这在要求低延迟的数据中心环境中尤为重要。

  1. PFC关于缓冲区“余量”的详细介绍 上述描述指的是在启用PFC(Priority Flow Control)的情况下,为了防止缓冲区溢出,交换机需要在缓冲区中预留一些空间作为备用(余量)。这个备用空间的目的是在:启动了PFC的反压(backpressure)机制后,有足够的缓冲区空间用于在一段时间内吸收正在传输的数据包,从而缓解潜在的网络拥塞。

具体解读如下: 1. 缓冲区溢出: 缓冲区溢出是指当交换机接收到的数据包超过其缓冲区的容量时,导致无法存储更多的数据包,从而可能导致数据包丢失。 2. PFC的反压机制: 当网络拥塞或交换机缓冲区使用率过高时,PFC可以发送控制帧通知发送端停止发送特定优先级的数据包,从而减缓流量,避免进一步加剧拥塞。这种反压机制的作用是保护高优先级流量免受低优先级流量的影响。 3. 余量空间: 为了确保在启用了PFC并发生反压的情况下,交换机仍有足够的缓冲区空间用于吸收正在传输的数据包,需要在缓冲区中预留一些备用空间。这个==备用空间可以在反压消息生效的延迟期间==,即在发送反压消息和发送端停止发送之间的时间段内暂时存储部分数据包,以免造成数据包丢失。 总体来说,这种设计旨在平衡网络的性能和可靠性。通过预留一些缓冲区空间作为余量,交换机在启用PFC的情况下能够更有效地应对拥塞,保护高优先级的流量免受低优先级流量的干扰。

(2) "并且净空空间可能会占用缓冲区的相当一部分"

Ask:什么是“净空空间” 1. headroom: 这句话的意思是,随着生产网络中链路速度的增长,缓冲区变得越来越不足,而缓冲区中的"headroom"(头部余量)可能占据相当大的一部分。 让我更详细地解释: 1. 链路速度增长: 随着生产网络中使用的链路速度增加,数据的传输速率也随之增加。这可能是由于网络需求的增加、技术的进步或者其他因素导致的。 2. 缓冲区不足: 缓冲区是用于存储网络设备接收到的数据包的临时存储空间。然而,当链路速度增加时,可能会导致缓冲区容量相对不足,因为数据包的到达速率超过了网络设备处理或传输的速率。 3. 头部余量占比大: "headroom" 或 "头部余量" 指的是==在缓冲区中==为应对网络波动而预留的一部分额外空间。这个额外的空间可以用于暂时存储突发性的数据包,以防止发生丢包或网络拥塞。当说头部余量占据缓冲区相当大的一部分时,意味着为了应对网络的不确定性,网络设备在缓冲区中预留了较多的额外空间,这可能导致缓冲区的有效利用率降低。 综合起来,这句话表达的观点是,随着链路速度的增加,缓冲区容量可能不足以应对高速传输的数据流,而为了应对不确定性,网络设备可能需要预留大量的头部余量,这可能导致缓冲区的一部分空间不能被充分利用。这可能会引发一系列与网络性能和拥塞管理相关的问题。

  1. headroom与buffer的关系: 在网络通信中,"headroom"(头部余量)和"buffer"(缓冲区)是两个概念,它们之间存在一定的关系。下面我将详细解释它们之间的关系:
  2. 缓冲区(Buffer):
    • 定义: 缓冲区是一种用于==存储数据的临时存储区域==。在网络设备(如路由器、交换机)中,缓冲区用于存储从一个接口收到的数据包,这些数据包在被处理或传输到下一个接口之前需要暂时存储。
    • 作用: 缓冲区的主要作用是处理 传输速率不匹配 的情况。当数据包以较快的速度进入网络设备,而设备的处理或输出速度相对较慢时,缓冲区可以暂时存储 这些数据包,以防止丢包或网络拥塞。
  3. 头部余量(Headroom):
    • 定义: 头部余量是指在缓冲区中为了应对网络不确定性而==预留的一部分额外空间==。这部分空间通常被用于存储突发性的数据包,以防止由于网络波动而导致的丢包或拥塞。
    • 作用: 头部余量的存在使得网络设备能够更好地应对突发性的网络流量,提高了网络的抗干扰性和鲁棒性。
  4. 关系:

    • 预留空间: 头部余量实际上是缓冲区中的一部分预留空间。这个额外的空间可以看作是缓冲区容量中的一部分,专门用于存储头部余量,以确保在网络不确定性的情况下能够更好地处理数据流。
    • 有效利用: 头部余量的存在可能会导致缓冲区容量的一部分空间未被充分利用。这是因为为了保证网络设备在不确定的情况下具有足够的灵活性,一定程度上牺牲了缓冲区的有效利用率。 总的来说,头部余量和缓冲区都是为了优化网络性能而采取的策略,缓冲区用于存储数据,而头部余量是缓冲区中专门为应对不确定性而预留的额外空间。在==设计网络时,需要权衡缓冲区大小和头部余量的分配,以便在高效利用缓冲区的同时确保网络的稳定性和可靠性。==
  5. 我的理解:buffer是流量数据的“备胎”;headroom是buffer的“备胎” ✅

  6. 缓冲区buffer中除了headroom之外还有哪些东西? 在网络设备的缓冲区中,除了头部余量(headroom),还可能包含以下内容:

    1. 数据包存储区: 缓冲区的主要作用是存储网络设备接收到的数据包。这些数据包在到达设备后,需要暂时存储以等待处理或传输到下一个接口。
    2. 控制信息: 缓冲区中可能包含与数据包相关的控制信息,例如时间戳、数据包的优先级、来源地址等。这些信息有助于设备在处理和转发数据包时执行适当的操作。
    3. 缓存: 有些缓冲区还可能包含缓存数据,用于存储最近或频繁访问的数据,以提高数据访问速度。
    4. 队列: 缓冲区通常被划分为不同的队列,每个队列可能用于存储不同优先级的数据包。这有助于实现对不同服务质量(QoS)要求的支持。
    5. 临时存储空间: 缓冲区还可以用于存储一些需要被临时保留的数据,例如由于网络拥塞而导致的数据包延迟传输。
  7. review《RDMA》中提及的headroom,串联一下:

    During this time, the upstream port will continue to transmit packets. Thus, the ingress port must reserve buffer space for each priority to absorb packets that arrive during this “gray period”. This reserved buffer is called headroom. The size of the headroom is decided by the MTU size, the PFC reaction time of the egress port, and most importantly, the propagation delay between the sender and the receiver

在这段时间内,上行端口将继续传输数据包。因此,入口端口必须为每个优先级预留缓冲区空间,以吸收在这个 “灰色期间” 内到达的数据包。这个预留的缓冲区被称为头部余量。头部余量的大小由最大传输单元(MTU)大小、出口端口的PFC响应时间,最重要的是发送端和接收端之间的传播延迟决定。

  1. 面对流量过多的情况,PFC的缓存区中起主力的是不是headroom 是的,PFC(Priority Flow Control)在面对==流量过多的情况时,headroom(头部余量)通常会起到主要的作用==。在PFC中,不同优先级的数据流通过交换机时,可以使用PFC机制来防止缓冲区溢出,以保护高优先级流量不受低优先级流量的影响。

头部余量是为了处理特定时间段内突发流量而在缓冲区中预留的额外空间。在PFC的上下文中,头部余量可以用于临时存储高优先级流量,以防止在网络拥塞的情况下丢失这些关键数据包。当PFC生效时,会发送控制帧通知发送端停止发送特定优先级的流量,从而在这个“灰色期间”内,头部余量的空间可以用于缓存来自高优先级流量的数据包,以免发生缓冲区溢出。

因此,可以说在PFC中,头部余量是应对流量过多情况的关键因素,确保高优先级流量的可靠传输。这种机制有助于维持网络的性能和服务质量,特别是在对延迟敏感的应用中,如实时音视频或远程直接内存访问(RDMA)等。

  1. “gray period”时,其他元件在干什么? 在文中提到的 "灰色期间" 内,指的是在启用PFC(Priority Flow Control)机制的情况下,当发生流量控制,暂时停止了特定优先级的流量传输的时间段。在这个时间段内,缓冲区中的其他元件可能会执行以下一些操作: [1] 低优先级数据的缓存: 在PFC生效期间,低优先级的流量会被暂停或限制。缓冲区中可能会继续存储这些低优先级的数据包,等待 PFC 解除时再进行传输。 [2] 控制信息处理: 缓冲区中可能包含与数据包传输和流控制相关的控制信息。这些信息可能包括 PFC 控制帧、优先级信息、时间戳等。 [3] 队列管理: 缓冲区通常会划分为不同的队列,每个队列对应不同的优先级。在 "灰色期间" 内,队列管理可能继续进行,以确保数据包的有序传输。 [4] 头部余量的利用: 头部余量是为了应对网络不确定性而预留的额外空间。在 "灰色期间" 内,头部余量可能被用于存储临时的高优先级数据包,以充分利用这段时间,保护高优先级流量的传输。 [5] 错误处理: 缓冲区中可能包含有关数据包传输的错误信息。在 "灰色期间" 内,网络设备可能会执行错误处理和纠正操作,以确保后续的数据传输不受影响。

  2. PFC 门限配置: 通过配置 PFC 缓存门限可以有效解决因缓冲空间不足和入流量队列数量过大, 导致发送数据缓冲区尾丢弃等问题。

我们先来了解一下接口的缓冲空间设置。接口的缓冲空间分为以下几种:

step1: Guaranteed存储空间: 固定缓冲区,为每一个优先级队列和端口提供最小的缓存保证。 系统会根据用户的配置给队列预留指定大小的空间,即便该队列没有报文存储需求,其他队列也不能抢占。给队列预留的空间均分给每个端口的,即使某端口的某队列没有报文存储需求,其他端口也不能抢占。

step2: Shared存储空间: 共享缓冲区,当==端口或优先级的==固定缓冲区不够用==时, 使用 Shared 存储空间,==系统会根据用户配置以及实际需要收发报文的数量决定每个队列实际可占用的缓冲区的大小。如果某个队列没有报文存储需求,则其他队列会抢占该队列的配额。对于某个队列的缓冲区,所有端口接收或发送的报文==采用抢占的方式,先到先得,如果资源耗尽,则后到达的报文将被丢弃。==

step3: Headroom存储空间: Headroom 缓冲区,当端口PFC功能生效并触发PFC反压帧门限后,本端设备发送PFC PAUSE帧到对端设备让对端停止流量发送的过程中,已经在途的这部分流量的缓存空间,设备需要这些缓冲空间来保证 PFC 流程的不丢包。

PFC 目前提供以下门限设置:

Headroom 缓存门限: Headroom 存储空间中某 802.1p优先级报文的最大使用cell资源。当达到使用的 cell 资源后,该接口会丢弃收到的报文。

反压帧触发门限: Shared 存储空间中某 802.1p 优先级报文在该存储空间使用 cell 资源上限。达到上限后,会触发 PFC 功能发送 PAUSE 帧。 反压帧触发门限又分为动态反压帧触发门限和静态反压帧触发门限:1)动态反压帧触发门限:设置某 802.1p 优先级报文触发 PFC PAUSE 帧的可用 cell 资源的百分比。2)静态反压帧触发门限:设置某 802.1p 优先级报文触发 PFC PAUSE 帧的可用 cell 资源门限为一个固定值。

反压帧停止门限与触发门限间的偏移量:当某 802.1p优先级报文使用的 cell 资源减小了一个固定值时, 停止发送 PFC PAUSE 帧, 使对端设备恢复流量发送。

PFC预留门限: Guaranteed存储空间中为某 802.1p优先级报文预留的cell资源。

Headroom最大可用的 cell 资源:配置某缓存池(pool,产品具体支持的poolID与产品型号有关,请以设备的实际情况为准) 中,分配给Headroom存储空间的cell资源的大小。

(3) "当前的静态且与队列无关的余量分配方案"

Ask:复习上述机制与队列机制 1. 当前使用的低效头部余量分配方案评价:

  1. 静态和独立于队列的头部余量分配方案: 描述的是一种头部余量分配方案,其分配是静态的,即不随着网络流量和拥塞情况的变化而动态调整。同时,该方案与队列之间的关系是独立的,意味着不考虑不同队列的不同特性和需求。
  2. 固有的低效性: 使用 "inherently inefficient" 表示这种方案的固有低效性,即这种方法在解决问题时本质上不是高效的。可能存在以下一些问题:
  3. 不适应动态变化: 由于是静态分配,该方案可能无法灵活地应对网络流量的动态变化,导致在某些情况下浪费了头部余量,而在其他情况下可能不足。
  4. 未考虑队列特性: 不考虑队列之间的差异可能导致资源分配不足或不合理,因为不同队列可能具有不同的优先级或流量模式,需要更灵活的分配策略。

问题的背景: 该句提到这种低效性是在解决某个问题时出现的。这个问题的具体性质可能在文本的前后部分有所描述,但在这句话中没有详细说明。

(4) 动态共享余量分配方案(DSH)

Need:简要搜索了解这个方案