精华内容
下载资源
问答
  • 2020-02-11 12:17:18

    一、缓冲区膨胀

    • 虽然存储单元的价格昂贵(高端路由器也是如此),但是现在的网络设备中仍包含大量 的内存和几百万字节的包缓冲区。然而,这样庞大的内存(与传统的网络设备相比)会导致 像TCP这样的协议性能下降。这一问题被称为缓冲区膨胀[GllⅡDHGSO7]。它主要存在于 家用网关的上行端以及家庭或小型办公室的接人点处,与排队等待而产生的大量延迟有关。 标准TCP协议的拥塞控制算法会在链路的瓶颈处将缓冲区填满。而由于拥塞的信号(一个数 据包丢失)需经很长时间才能反馈到发送端,此时在发送端和接收端之间缓存了大量数据, TCP协议也不能很好地运作。
    • 吁WNPlO]中指出,在美国包括电缆和DSL在内,上传带宽范围是256Kb/s - 4Mb/s, 在商用路由器上的缓冲区大小应该在16kB至256RB之间。下图显示了在几种缓冲区大 小下延迟和数据传输速率的关系,可以证明之前结论的正确性

    • 上图展示了针对不同缓冲区大小( 1kB - 2MB)数据在队列等待所产生的延迟情 况。如果缓冲区大小为几百kB或者更多,那么家庭网络上传带宽速率(一般在250kb/s至 圃 10Mb/s之间)会引起几百秒的延迟。为了给用户带来更好的体验,一般的交互式应用程序需 要把单向延迟控制在150ms以下[G¨4]。因此,如果缓冲区被一个或多个大的上传文件所 占满(如BT共享文件),会严重影响交互式应用性能
    • 不是所有的网络设备中都存在缓冲区膨胀的问题。实际上,主要间题是缓冲区端用户接 人设备过满。有很多方法可以解决这一问题,包括修改协议(如像Ⅵgas这样的基于延迟的 拥塞控制方式,但是它可能会因为网络抖动而产生相反效果[DHGSO7])、使用缓冲区大小可 动态改变的接人设备(吁wNPlO]中提到),或将两者结合。接下来介绍一种综合的方法,它不仅可以解决缓冲区膨胀的间题,而且还有一些其他的好处0

    二、积极队列管理和ECN

    • 到现在为止, TCP能够推断出拥塞产生的唯一方法就是发生丢包现象。特别是路由器 (最有可能产生拥塞)通常不会通知连接两端的主机, TCP即将产生拥塞。而是当缓存没有 多余的可用空间时,只好将新到达的数据包丢弃(称为“尾部丢弃”)。然后依照先进先出(FIFO)的方法继续转发那些先前到达的数据包。当网络路由器像这样被动工作时(指它们 在超负荷的时候仅仅丢弃数据包,而不会提供它们已经处于拥塞状态的任何反馈信息), TCP 除了事后再做出反应以外无能为力。然而,如果路由器可以更积极地管理它们的等待队列 (也就是说使用更精确复杂的调度算法和缓存管理策略),也许这种情况就能得到改善。若可 以将拥塞状态报告给端节点,效果会更好
    • 应用FIFO和尾部丢弃以外的调度算法和缓存管理策略被认为是积极的,路由器用来管 理队列的相应方法称为积极队列管理(AQM)机制。 [RFC2309]中提到了AQM机制的潜在 优势。若可以通过将路由器和交换机的状态传输给端系统来实现AQM时,它将更具利用价 值。这些在[RFC3168]中有详细描述, [RFC3540]利用相关实验描述了扩展安全性的AQMo 这些RFC都描述了显式拥塞通知( Explicit Congestion Notification, ECN),它对经过路由器 的数据包进行标记(设置IP头中的两个ECN标志位),以此得到拥塞状况
    • 随机早期检测(RED)网关[FJ93]机制能够探测拥塞情况的发生,并且控制数据包标 记。这些网关实现了一种衡量平均占用时间的队列管理方法。如果占用队列的时间超过最小 值( minthresh),并且小于最大值( maxthresh),那么这个数据包将被标记上一个不断增长的 概率值。如果平均队列占用时间超过了maxthresh,数据包将被标记一个可配置的最大的概 率值(MaxP), MaxP可以设置为1.00 RED也可以将数据包丢弃而不是标记它们。

    • 当数据包被接收时,其中的拥塞标记表明这个包经过了一个拥塞的路由器。当然,发送 端(而不是接收端)才真正需要这些信息,以此降低发送速率。因此,接收端通过向发送端 返回一个ACk数据包来通知拥塞状况o
    • ECN机制主要在IP层进行操作,也可以应用于TCP协议之外的其他传输层协议。当一 个包含ECN功能的路由器经过长时间的拥塞,接收到一个IP数据包后,它会查看IP头中的 ECN传输能力(ECT)标识(在IP头中由两位ECN标志位定义)。如果有效,负责发送数据包的传输层协议将开启ECN功能,此时,路由器会在IP头设置一个已发生拥塞(CE)标识 (将ECN位都置为1 ),然后继续向下转发数据报。若拥塞情况不会持续很长时问(例如由于 队列溢出导致最新的一个数据包被丢弃),路由器不会将CE标识置位。因为即使是一个单独 的CE标识,传输协议也会做出反应
    • 如果TCP接收端发现接收到的数据包的CE标识被置位,那么它必须将该标识发送回发 送端([RFC5562]中的实验表明,也可以将ECN添加到SYN+ACK报文段中发送)。因为 接收端经常会通过ACk数据包(不可靠的)向发送端返回信息,所以拥塞标识很有可能会丢 失。出于对这种情况的考虑, TCP实现了一个小型的可靠连接协议,通过这个协议可以将标 识返回给发送端o TCP接收端接收到CE标识被置位的数据包之后,它会将每一个ACK数据包的“ ECN回显” (ECN-Echo)位字段置位,直到接收到一个从发送端发来的CWR位字 段设置为1的数据包。cwR位字段被置位说明拥塞窗口(也就是发送速率)已经降低。

    • TCP发送端接收到含有ECN ̄Echo标识的ACK数据包时,会与探测到单个数据包丢失 时一样调整cwnd值。同时发送端还会重新设置后续数据包的CWR位字段。常规的拥塞处 理方式为:调用快速重传和快速恢复算法(当然,数据包不会进行重传),这样就可以使TCP 在丢包之前降低发送速率。值得注意的是, TCP的处理不应该过度。特别是它不能对同一个 数据进行多次响应。否则, ECN TCP相对于其他来说会处于不利地位
    • 在Windows Vista及之后的版本中,激活ECN功能需要使用以下命令:

    • 在Linux系统中,如果布尔型Sysctl变量net.ipv4.tcp_eCn的值非零,则ECN功能被激 活。这种基于Linux的改变默认设置的方法正在广泛使用。在Mac OS lO.5及更新的版本中, 变量net.inet.tcp.ecn_initiate_Out和net.inet.tcp.ecn_negotiate_in分别控制向外传输和向内传 输的ECN功能的开启。当然,没有路由器和交换机的协作, ECN的实用性在任何情况下都 圃 会受到限制o AQM在整个全球互联网络中发挥作用还需要时间

    更多相关内容
  • 针对无线异构链路环境中传统TCP拥塞控制机制效率较低的问题,本文提出一种基于ECN的多级反馈算法。该算法在ECN的基础上可以根据RTT动态地给网络划分等级并进行概率反馈,改变了ECN的二元特性,有效提高了无线数据...
  • 【RoCE】拥塞控制机制(ECN, DC-QCN)

    千次阅读 2021-09-15 10:31:56
    原文[RoCE]拥塞控制机制(ECN, DC-QCN) - blackwall - 博客园1.网络拥塞问题 在网络交换机中,当入口流量大于出口流量的带宽时会发生网络拥塞。典型的例子是多个发送方同时向同一个目的地发送网络数据。交换机的缓存...

    1.网络拥塞问题

    在网络交换机中,当入口流量大于出口流量的带宽时会发生网络拥塞。典型的例子是多个发送方同时向同一个目的地发送网络数据。交换机的缓存可以处理暂时的拥塞,但是当拥塞太久时,交换机的缓存就会过载。当交换机缓存过载时,下一个收到的新的数据包就会被丢弃。丢包会降低应用性能,因为重传和传输协议的复杂性会带来延迟。无损网络实现了流控制机制,它可以在缓存溢出前暂停入口流量,阻止了丢包现象。然而,流控制本身会造成拥塞传播的问题。

    为了理解拥塞传播问题,考虑下面的图示。假设交换机1上的端口A到E都在向端口G发送网络数据包,以至于端口G以100%的能力来接收数据并且转发。假设,毗邻的交换机2端口F也在向交换机1的端口G发送数据,速率是整个链路带宽的20%。因为端口G的出口已经满载了,端口F将会重传数据包直到被流控制机制暂停。此时,端口G将会出现拥塞,然而此时没有负效应,因为所有的端口都会被端口G尽快的服务。

    现在考虑交换机2上的一个端口X,以链路带宽的20%速度向交换机1上的端口Y发送数据。端口G这个拥塞源并不处于端口X到端口Y的路径上。这种情况下,你也许会认为端口F只使用了交换机间链路的20%带宽,剩余的80%带宽对于端口X是可用的。然而并非如此,因为来自端口F的流量最终触发流控制机制使得交换机间的链路处于暂停发送,并且将来自端口X的流量降为20%而不是潜在可用的80%带宽。

    2.拥塞控制

    拥塞控制用来减少有损网络中的丢包现象或者无损网络中的拥塞传播现象。它也减少交换机缓存的占用,进而减少了延迟和改善突发流量的容忍度。使用的方法是限制导致拥塞根本原因的端口(A-F)的网络流注入速率,因此其他端口(X)发来的网络流就不会被影响。通过限制端口A-F的注入速率为端口G可以处理的速率,端口A-F不应该观察到明显的性能下降(毕竟,它们的数据包无论如何也要等待),然而从端口X到端口Y发送的数据包应该能够正常的转发,因为流控制机制不会发送暂停帧(拥塞控制目的是保持交换机的缓存占用率低,因此流控制机制就不会被触发)。当前的RoCE拥塞控制依赖显式拥塞通知(Explicit Congestion Notification, ECN)来运行。

    3.Explicit Congestion Notification(ECN)

    ECN最初在RFC 3168文档为TCP/IP协议所定义,它通过在IP头部嵌入一个拥塞指示器和在TCP头部嵌入一个拥塞确认实现。兼容ECN的交换机和路由器会在检测到拥塞时对网络数据包打标记。IP头部的拥塞指示也可以用于RoCEv2的拥塞控制。下面是IP头部的前四个帧的格式:

    下面是整个IP头部的帧格式:

    4.RoCEv2 的拥塞管理

    RoCEv2标准定义了RoCEv2拥塞管理(RCM)。RCM提供了避免拥塞热点和优化链路吞吐量的能力。启用了RCM后,链路上早期的拥塞会被汇报给网络流的源,然后网络流的源会降低它们的注入速率,因此防止了链路上的缓存饱和与增加排队延迟带来的负面效果。拥塞管理与共存的TCP/UDP/IP流量也是相关的。然而,假设对RoCEv2和其他流量使用了不同优先级,每个优先级都有一个带宽分配,拥塞和拥塞反映(指网络源针对拥塞采取的动作)效果不应该互相影响。

    为了发出拥塞信号,RCM依赖于RFC 3168中定义的ECN机制。一旦RoCEv2流量出现了拥塞,网络设备在数据包的IP头部对ECN域进行标记。这个拥塞指示器被目的终端节点按照BTH(Base Transport Header,存在于IB数据段中)中的FECN拥塞指示标识来解释意义。换句话说,当被ECN标记过的数据包到达它们原本要到达的目的地时,拥塞通知就会被反馈给源节点,源节点再通过对有问题的QP进行网络数据包的速率限制来回应拥塞通知。

    RCM是一个可选的规范行为。实现了RCM的RoCEv2主机通道适配器应该按照下面的规则来运行:

    • 当收到一个有效的RoCEv2数据包时,它的IP.ECN域的值如果是'11'(二进制),那么这个主机通道适配器应该产生一个RoCEv2的CNP,送回给所收到的包的源节点(格式规定如下)。这个主机通道适配器应该对多个被ECN标记为同一个QP的的数据包发送一个单个CNP即可。
    • 当收到一个RoCEv2的CNP时,主机通道适配器应该对RoCEv2 CNP中标记的QP实施减缓注入速率。这个速率变化总量由一个可配置的速率减缓参数来决定。
    • 当被ECN标记的QP自从最近收到的RoCEv2 CNP包开始经过了一个可配置的暂停时长或者超过一个已经发送的可配置的字节数之后,主机通道支配器应该增加该QP的网络注入速率。

    RoCEv2的CNP包格式如下:

    5.拥塞控制环路

    RoCEv2的拥塞控制环路如下:

    1.注入端必须在IP头部设置ECN值,可选的值如下(ECT是ECN-Capable Transport):定义在RFC 3168

    注入端网卡设置IP头部的ECN值为ECT(0)(‘10’),注意,ECT(1)和ECT(0)不可交换。

    2.RoCEv2数据包注入到网络中。

    3.路由器在发生拥塞的队列上接收到数据包时,不是马上丢弃,也许会先检查ECN域确定是否开启了ECN功能,如果是,就在IP头部打开CE位。

    4.在发生拥塞的情况下,正常转发的数据包从网络中到达接收方。

    5.接收方会对开启CE位且类型为RoCE的数据包进行过滤,触发事件,然后再将数据包释放到正常处理流程中。

    6-7.为了避免由于产生流量的负载,接收方应该将针对每个QP产生的拥塞通知聚集起来。 在若干微秒内将一个CN数据包发送回注入方QP上。数据包中的ECN位设置为'01'来验证该数据包没有被IP路由器丢掉。IBA的BTH头部将会按照上述的格式来定义。

    8.CNP包从接收方回注到网络中。

    9.IP路由器将IB的CNP包视为一个普通的IP数据包。

    10.CNP包到达源注入方节点。注入方节点对ECN位为'01'且类型为RoCE的数据包进行过滤,然后对指示的网络流应用速率限制算法。

    6.量化拥塞通知(Quantized Congestion Notification,QCN)

    量化拥塞通知IEEE标准(802.Qau)以有限带宽时延的以太网网络为长期保活的网络流提供了拥塞控制。这是IEEE数据中心桥接(DCB)协议套件中的一部分,还包括ETS,PFC,和DCBX。QCN在二层以太网络上制定,并且是针对硬件实现的。QCN适用所有的以太网帧和所有的传输,并且主机端和交换机端的行为也在标准中详细规定。QCN的配置和信息提取可以适用mlnx_qcn命令。

    7.DC-QCN算法

    DC-QCN算法是基于数据中心TCP(DCTCP)和量化通知算法的结合,并且和微软研究院协同开发的。最初的算法在SIGCOMM'15论文"Congestion control for large scale RDMA deployments"中提出。DC-QCN算法依赖于交换机端的ECN标记。ECN是商用数据中心交换机的普遍特点。在数据包IP头部中的查分服务域中的两个比特位用来提示拥塞。一旦交换机端出现了拥塞,这两个比特位就被置为"11"(CE)。

    标记拥塞是队列长度的概率函数,如下图所示。队列长度的两个门限值定义了标记概率。当队列长度低于门限值下限时,ECN位不会被标记。当队列长度超过门限值上限时,所有从该队列传输的网络包都会被进行ECN标记。当队列长度处于两个门限值之间时,数据包会以与队列长度线性增长的概率被进行ECN标记。

    带有ECN标记的数据包被传播到接收方的网卡上。接收方网卡创建一个CNP并把它发送给ECN所标记的数据包的发送方。CNP数据包包括被标记的QP的信息。当CNP被发送方网卡收到时,它会基于下面描述的算法来降低指定QP的传输速率。

    DC-QCN降速算法通过下面的图表来描述。简而言之,如果QP基于内部定时器和发送字节计数器,算法会持续的增加发送速率,一旦收到CNP包,就会对指定QP进行降速。除此之外,它还维持一个叫做α的参数,它反映了网络中的拥塞度,用于降速计算。

    该算法通过三个并行的流程来定义:

    • α更新(测量拥塞度)
    • 降速
    • 提速

    7.1 α更新

    时间被切分为可配置的时间间隙。每个时间间隙指示是否有CNP在该时间间隙内到达。α参数是一个不断变化的平均值,它是CNP到达的时间间隙的比例(如果同一个时间间隙内不止一个CNP到达,与只有一个CNP到达效果一样)。每个时间间隙结束时,α通过后面的式子更新:new_α = g * old_α + (1 - g) * CNP_arrived, 这里g是一个介于0和1的常量参数,CNP_arrived是一个比特位的域,用来指示在上个时间间隙内是否有CNP到达。

    7.2 降速

    时间被切分为可配置的时间间隙(不同于α更新的间隙)。如果CNP在上个时间间隙到达(在同一个时间间隙内不止一个CNP到达时,后面的CNP不会产生指示),QP的速率通过后面的式子来减少:new_rate = old_rate * (1 - α / 2),同时将用于提速的几个参数重置。

    7.3 提速

    提速逻辑和QCN定义的非常相似。该逻辑划分为三个顺序的阶段:快速恢复,积极增加(保持探测),超积极增加(保持探测)。

    从一个阶段移向下一个阶段是通过在该阶段中统计到的提速事件数量参数定义的。在一个阶段中提速事件的数量超过预定义的门限值后,逻辑移向下一个阶段。降速事件会重置所有和提速相关的计数器,并且返回到快速恢复阶段。除此之外,一旦提速后,在降速之前,当前的速度会被保存在一个叫target_rate的参数中。

    自从上次提速后,在经过预定义的时间间隙或者预定义的发送字节数过程后,如果没有出现降速事件,就会出现提速事件。

    处于快速恢复阶段时,面对每个提速事件,速度按照到target_rate的距离的一半来增加(也就是对数接近,current_rate = (current_rate + target_rate) / 2)。这允许在快速恢复阶段的开始能快速恢复到拥塞出现的速度,然后在速度接近拥塞发生的速度时,更谨慎的增加速度。

    在后面两个阶段中,一旦出现提速事件,速度都是按照一个常量值来增加。这可以在带宽释放的时候获得吞吐量。

    8.总结

    这次记录了RoCEv2网络中对于拥塞控制的检测,预防和应对方法。ECN检测和标记是现代数据中心商用交换机普遍具有的功能,它保存在IP头部的查分服务代码点中的两个比特位中。启用ECN功能后,在网络上出现拥塞后,交换机会对ECN域打上CE值,由接收方产生CNP来通知发送方网络拥塞事件。发送方收到CNP指示的事件通知后,根据DC-QCN算法中对当前速度处于快速恢复,积极增加和超积极增加三个阶段中对应的动作来对注入速率进行控制,从而解决网络中的拥塞情况。

    原文 [RoCE]拥塞控制机制(ECN, DC-QCN) - blackwall - 博客园1.网络拥塞问题 在网络交换机中,当入口流量大于出口流量的带宽时会发生网络拥塞。典型的例子是多个发送方同时向同一个目的地发送网络数据。交换机的缓存可以处理暂时的拥塞,但是当拥塞太久时,交换机的缓存就会https://www.cnblogs.com/burningTheStar/p/8566746.html 

    展开全文
  • 以下三种算法,严格来说并不能算是拥塞控制算法。因为我们认为的拥塞控制算法通常是传输层进行的拥塞控制。 互联网TCP拥塞控制算法的基本设计理念是必须端端执行。这个网络被认为是一个“黑匣子”。TCP源无法从网络...

    以下三种算法,严格来说并不能算是拥塞控制算法。因为我们认为的拥塞控制算法通常是传输层进行的拥塞控制。

    互联网TCP拥塞控制算法的基本设计理念是必须端端执行。这个网络被认为是一个“黑匣子”。TCP源无法从网络中接收到任何显式的拥塞反馈。当一个拥塞控制算法不需要任何来自下层的支持,我们会认为他严格遵循层分离和模块化原则。

    因此,为了确定它可以传输的速率,源必须通过逐步增加输入负载(通过缓慢的启动和拥塞避免阶段)来探测路径,直到隐式反馈,如超时或重复确认,即已达到网络容量的信号。或者有些算法通过ACK数量、RTT估计、带宽估计等来进行探测。

    八、SACK

    SACK针对NewReno算法的一些问题进行了改进。
    New Reno算法每个RTT只能恢复一个丢失段,虽然相比于Reno他能够恢复,但是恢复的效率慢。
    在这里插入图片描述
    在这里插入图片描述
    为了实现告诉发送方乱序到底的段,SACK在选项中加入了多个TCP options。每个TCP option表示一个乱序到达的区间,长度为10。共标注了乱序到达的左边界和右边界加一。

    发送方收到后,会维持一个计分板(scoreBoard),标注这些乱序到达的段,并重发没有到达的段。
    在这里插入图片描述除此之外,发送方会维护一个pipe,来动态维护管道中的outstanding的数量平衡,即与拥塞窗口的大小相等。

    在这里插入图片描述发送方考虑以下五种情况:

    1. 收到冗余ACK且无SACK选项
    2. 收到冗余ACK且有SACK选项
    3. 收到PACK且无SACK选项:处于拥塞避免阶段,新段被确认,说明该段和该段被重传的段,都从管道中走出,所以pipe-2
    4. 收到PACK且有SACK选项
    5. 收到RACK

    在这里插入图片描述
    以下是SACK基本原理:
    在这里插入图片描述
    缺点:部署SACK的代价。

    九、ECN

    参考链接:ECN算法视频教程

    ECN是有网络辅助信息的拥塞控制。

    以往我们都是根据一些网络事件(比如三个冗余ACK或者超时)来判断拥塞,进而进行调节。而网络提供信息给端系统则更快。

    在这里插入图片描述
    改变了IP协议的数据报,
    CE:代表网络中发生了拥塞
    ECT:表示ECN使能。
    Not ECT:表示不支持ECN

    TCP数据段,
    CWR置为1:表示拥塞窗口减半,
    ECE置为1:表示目标主机发现拥塞
    在这里插入图片描述

    在这里插入图片描述
    接收方发送时,ECE置为1,指示发送方降速并cwd置为1。

    在这里插入图片描述
    发送方接收到后,将cwd置为1,并且回复一个cwd=1的数据段,表示我已经将cwd置为一了。
    接收方收到后,不再将ECN置为一。

    在这里插入图片描述
    缺点:

    1. 安全性:在某路由器时强制更改数据包
    2. 如何进行增速等问题。

    十、RED

    参考链接:RED算法

    在网络层进行全局拥塞控制(所以我们确切地不认为他是链路层的拥塞控制算法):为避免发生网路中的全局同步现象,路由器采用随机早期检测(RED算法)

    使路由器的队列维持两个参数,即队列长队最小门限min和最大门限max,每当一个分组到达的时候,RED就计算平均队列长度。然后分情况对待到来的分组:

    1. 平均队列长度小于最小门限——把新到达的分组放入队列排队。
    2. 平均队列长度在最小门限与最大门限之间——则按照某一概率将分组丢弃。
    3. 平均队列长度大于最大门限——丢弃新到达的分组。
    展开全文
  • [RoCE]拥塞控制机制(ECN, DC-QCN)

    千次阅读 2018-03-14 21:25:00
    1.网络拥塞问题 在网络交换机中,当入口流量大于出口流量的带宽时会发生网络拥塞。典型的例子是多个发送方同时向同一个目的...无损网络实现了流控制机制,它可以在缓存溢出前暂停入口流量,阻止了丢包现象。然而,...

    1.网络拥塞问题

    在网络交换机中,当入口流量大于出口流量的带宽时会发生网络拥塞。典型的例子是多个发送方同时向同一个目的地发送网络数据。交换机的缓存可以处理暂时的拥塞,但是当拥塞太久时,交换机的缓存就会过载。当交换机缓存过载时,下一个收到的新的数据包就会被丢弃。丢包会降低应用性能,因为重传和传输协议的复杂性会带来延迟。无损网络实现了流控制机制,它可以在缓存溢出前暂停入口流量,阻止了丢包现象。然而,流控制本身会造成拥塞传播的问题。

    为了理解拥塞传播问题,考虑下面的图示。假设交换机1上的端口A到E都在向端口G发送网络数据包,以至于端口G以100%的能力来接收数据并且转发。假设,毗邻的交换机2端口F也在向交换机1的端口G发送数据,速率是整个链路带宽的20%。因为端口G的出口已经满载了,端口F将会重传数据包直到被流控制机制暂停。此时,端口G将会出现拥塞,然而此时没有负效应,因为所有的端口都会被端口G尽快的服务。

    现在考虑交换机2上的一个端口X,以链路带宽的20%速度向交换机1上的端口Y发送数据。端口G这个拥塞源并不处于端口X到端口Y的路径上。这种情况下,你也许会认为端口F只使用了交换机间链路的20%带宽,剩余的80%带宽对于端口X是可用的。然而并非如此,因为来自端口F的流量最终触发流控制机制使得交换机间的链路处于暂停发送,并且将来自端口X的流量降为20%而不是潜在可用的80%带宽。

    2.拥塞控制

    拥塞控制用来减少有损网络中的丢包现象或者无损网络中的拥塞传播现象。它也减少交换机缓存的占用,进而减少了延迟和改善突发流量的容忍度。使用的方法是限制导致拥塞根本原因的端口(A-F)的网络流注入速率,因此其他端口(X)发来的网络流就不会被影响。通过限制端口A-F的注入速率为端口G可以处理的速率,端口A-F不应该观察到明显的性能下降(毕竟,它们的数据包无论如何也要等待),然而从端口X到端口Y发送的数据包应该能够正常的转发,因为流控制机制不会发送暂停帧(拥塞控制目的是保持交换机的缓存占用率低,因此流控制机制就不会被触发)。当前的RoCE拥塞控制依赖显式拥塞通知(Explicit Congestion Notification, ECN)来运行。

    3.Explicit Congestion Notification(ECN)

    ECN最初在RFC 3168文档为TCP/IP协议所定义,它通过在IP头部嵌入一个拥塞指示器和在TCP头部嵌入一个拥塞确认实现。兼容ECN的交换机和路由器会在检测到拥塞时对网络数据包打标记。IP头部的拥塞指示也可以用于RoCEv2的拥塞控制。下面是IP头部的前四个帧的格式:

    下面是整个IP头部的帧格式:

    4.RoCEv2 的拥塞管理

    RoCEv2标准定义了RoCEv2拥塞管理(RCM)。RCM提供了避免拥塞热点和优化链路吞吐量的能力。启用了RCM后,链路上早期的拥塞会被汇报给网络流的源,然后网络流的源会降低它们的注入速率,因此防止了链路上的缓存饱和与增加排队延迟带来的负面效果。拥塞管理与共存的TCP/UDP/IP流量也是相关的。然而,假设对RoCEv2和其他流量使用了不同优先级,每个优先级都有一个带宽分配,拥塞和拥塞反映(指网络源针对拥塞采取的动作)效果不应该互相影响。

    为了发出拥塞信号,RCM依赖于RFC 3168中定义的ECN机制。一旦RoCEv2流量出现了拥塞,网络设备在数据包的IP头部对ECN域进行标记。这个拥塞指示器被目的终端节点按照BTH(Base Transport Header,存在于IB数据段中)中的FECN拥塞指示标识来解释意义。换句话说,当被ECN标记过的数据包到达它们原本要到达的目的地时,拥塞通知就会被反馈给源节点,源节点再通过对有问题的QP进行网络数据包的速率限制来回应拥塞通知。

    RCM是一个可选的规范行为。实现了RCM的RoCEv2主机通道适配器应该按照下面的规则来运行:

    • 当收到一个有效的RoCEv2数据包时,它的IP.ECN域的值如果是'11'(二进制),那么这个主机通道适配器应该产生一个RoCEv2的CNP,送回给所收到的包的源节点(格式规定如下)。这个主机通道适配器应该对多个被ECN标记为同一个QP的的数据包发送一个单个CNP即可。
    • 当收到一个RoCEv2的CNP时,主机通道适配器应该对RoCEv2 CNP中标记的QP实施减缓注入速率。这个速率变化总量由一个可配置的速率减缓参数来决定。
    • 当被ECN标记的QP自从最近收到的RoCEv2 CNP包开始经过了一个可配置的暂停时长或者超过一个已经发送的可配置的字节数之后,主机通道支配器应该增加该QP的网络注入速率。

    RoCEv2的CNP包格式如下:

    5.拥塞控制环路

    RoCEv2的拥塞控制环路如下:

    1.注入端必须在IP头部设置ECN值,可选的值如下(ECT是ECN-Capable Transport):定义在RFC 3168

    注入端网卡设置IP头部的ECN值为ECT(0)(‘10’),注意,ECT(1)和ECT(0)不可交换。

    2.RoCEv2数据包注入到网络中。

    3.路由器在发生拥塞的队列上接收到数据包时,不是马上丢弃,也许会先检查ECN域确定是否开启了ECN功能,如果是,就在IP头部打开CE位。

    4.在发生拥塞的情况下,正常转发的数据包从网络中到达接收方。

    5.接收方会对开启CE位且类型为RoCE的数据包进行过滤,触发事件,然后再将数据包释放到正常处理流程中。

    6-7.为了避免由于产生流量的负载,接收方应该将针对每个QP产生的拥塞通知聚集起来。 在若干微秒内将一个CN数据包发送回注入方QP上。数据包中的ECN位设置为'01'来验证该数据包没有被IP路由器丢掉。IBA的BTH头部将会按照上述的格式来定义。

    8.CNP包从接收方回注到网络中。

    9.IP路由器将IB的CNP包视为一个普通的IP数据包。

    10.CNP包到达源注入方节点。注入方节点对ECN位为'01'且类型为RoCE的数据包进行过滤,然后对指示的网络流应用速率限制算法。

    6.量化拥塞通知(Quantized Congestion Notification,QCN)

    量化拥塞通知IEEE标准(802.Qau)以有限带宽时延的以太网网络为长期保活的网络流提供了拥塞控制。这是IEEE数据中心桥接(DCB)协议套件中的一部分,还包括ETS,PFC,和DCBX。QCN在二层以太网络上制定,并且是针对硬件实现的。QCN适用所有的以太网帧和所有的传输,并且主机端和交换机端的行为也在标准中详细规定。QCN的配置和信息提取可以适用mlnx_qcn命令。

    7.DC-QCN算法

    DC-QCN算法是基于数据中心TCP(DCTCP)和量化通知算法的结合,并且和微软研究院协同开发的。最初的算法在SIGCOMM'15论文"Congestion control for large scale RDMA deployments"中提出。DC-QCN算法依赖于交换机端的ECN标记。ECN是商用数据中心交换机的普遍特点。在数据包IP头部中的查分服务域中的两个比特位用来提示拥塞。一旦交换机端出现了拥塞,这两个比特位就被置为"11"(CE)。

    标记拥塞是队列长度的概率函数,如下图所示。队列长度的两个门限值定义了标记概率。当队列长度低于门限值下限时,ECN位不会被标记。当队列长度超过门限值上限时,所有从该队列传输的网络包都会被进行ECN标记。当队列长度处于两个门限值之间时,数据包会以与队列长度线性增长的概率被进行ECN标记。

    带有ECN标记的数据包被传播到接收方的网卡上。接收方网卡创建一个CNP并把它发送给ECN所标记的数据包的发送方。CNP数据包包括被标记的QP的信息。当CNP被发送方网卡收到时,它会基于下面描述的算法来降低指定QP的传输速率。DC-QCN降速算法通过下面的图表来描述。简而言之,如果QP基于内部定时器和发送字节计数器,算法会持续的增加发送速率,一旦收到CNP包,就会对指定QP进行降速。除此之外,它还维持一个叫做α的参数,它反映了网络中的拥塞度,用于降速计算。

    该算法通过三个并行的流程来定义:

    • α更新(测量拥塞度)
    • 降速
    • 提速

    7.1 α更新

    时间被切分为可配置的时间间隙。每个时间间隙指示是否有CNP在该时间间隙内到达。α参数是一个不断变化的平均值,它是CNP到达的时间间隙的比例(如果同一个时间间隙内不止一个CNP到达,与只有一个CNP到达效果一样)。每个时间间隙结束时,α通过后面的式子更新:new_α = g * old_α + (1 - g) * CNP_arrived, 这里g是一个介于0和1的常量参数,CNP_arrived是一个比特位的域,用来指示在上个时间间隙内是否有CNP到达。

    7.2 降速

    时间被切分为可配置的时间间隙(不同于α更新的间隙)。如果CNP在上个时间间隙到达(在同一个时间间隙内不止一个CNP到达时,后面的CNP不会产生指示),QP的速率通过后面的式子来减少:new_rate = old_rate * (1 - α / 2),同时将用于提速的几个参数重置。

    7.3 提速

    提速逻辑和QCN定义的非常相似。该逻辑划分为三个顺序的阶段:快速恢复,积极增加(保持探测),超积极增加(保持探测)。

    从一个阶段移向下一个阶段是通过在该阶段中统计到的提速事件数量参数定义的。在一个阶段中提速事件的数量超过预定义的门限值后,逻辑移向下一个阶段。降速事件会重置所有和提速相关的计数器,并且返回到快速恢复阶段。除此之外,一旦提速后,在降速之前,当前的速度会被保存在一个叫target_rate的参数中。

    自从上次提速后,在经过预定义的时间间隙或者预定义的发送字节数过程后,如果没有出现降速事件,就会出现提速事件。

    处于快速恢复阶段时,面对每个提速事件,速度按照到target_rate的距离的一半来增加(也就是对数接近,current_rate = (current_rate + target_rate) / 2)。这允许在快速恢复阶段的开始能快速恢复到拥塞出现的速度,然后在速度接近拥塞发生的速度时,更谨慎的增加速度。

    在后面两个阶段中,一旦出现提速事件,速度都是按照一个常量值来增加。这可以在带宽释放的时候获得吞吐量。

    8.总结

    这次记录了RoCEv2网络中对于拥塞控制的检测,预防和应对方法。ECN检测和标记是现代数据中心商用交换机普遍具有的功能,它保存在IP头部的查分服务代码点中的两个比特位中。启用ECN功能后,在网络上出现拥塞后,交换机会对ECN域打上CE值,由接收方产生CNP来通知发送方网络拥塞事件。发送方收到CNP指示的事件通知后,根据DC-QCN算法中对当前速度处于快速恢复,积极增加和超积极增加三个阶段中对应的动作来对注入速率进行控制,从而解决网络中的拥塞情况。



     

    转载于:https://www.cnblogs.com/burningTheStar/p/8566746.html

    展开全文
  • 开启 DCTCP,使用 ECN 进行拥塞控制,需要主机和交换机的配合。主机要开启 ECN 功能,能处理 ECN 信号;交换机要能在拥塞队列过长时进行 ECN 标记。部署前还需要先清空系统中可能存在的残留qos规则、进程等。
  • ECn的路径问题

    2020-02-07 01:04:44
    ECn的路径问题,孙凯光,王燕,文章研究了互联网络中的路径问题。我们给出了ECn中任意两点的所有内点不相连的最短路径,并且证明了ECn在内点不相连的最短路径方面
  • 目前TCP中多数的拥塞控制算法都是通过缓慢增加拥塞窗口直到检测到丢包来进行慢启动的,这就会导致数据包在路由器缓存队列堆积,当路由器没有复杂的调度和缓存管理策略的时候,路由器一般简单的按照先进先出(FIFO)...
  • 数据中心网络中一种基于ECN的TCP慢启动拥塞控制策略
  • 显式拥塞通知ECN剖析

    万次阅读 2012-02-16 13:53:49
    “Instead of inferring congestion from the lost packets, Explicit Congestion Notification (ECN) was suggested for routers to explicitly mark packets when they arrive to a congested point in the
  • 通过排队延时代替droptail网关中分组丢弃的方法监测拥塞,并设置往返时间(RTT)估值作为拥塞探测的单门限,如果某分组排队延时超过该门限,则根据显式拥塞指示(ECN)机制标记该分组以通知TCP源端采取相应措施响应...
  • 前面介绍的拥塞控制方法都是通过检测丢包、利用一些ACK或SACK报文探测、 ECN算法(如果可用)、重传计时器的超时来触发的。ECN算法允许一个TCP发送 端向网络报告拥塞状况,而不用检测丢包。但是这要求网络中每一个...
  • 传输层拥塞控制

    2021-07-09 16:50:28
    一、拥塞控制原理 拥塞控制方法 端到端拥塞控制 没有来自网络的显示反馈 端系统系统延迟和丢失时间推断是否有拥塞 TCP采用这种方法 网络辅助的拥塞控制 路由器提供给端系统以反馈信息 单个bit位置,显示有...
  • Day7的第二篇Study blog。 偷博仔,day day up! 欣赏一下 《?...一、TCP:拥塞控制原理 拥塞没有一个Authoritative(权威的)定义。 拥塞: (congestion)  非正式的定义:“太多的数据需要网络传输,超
  • 鉴于此,对基于TCP/IP协议的网络拥塞控制方法进行分析。在TCP拥塞控制中主要采用TCP Tahoe,TCP Reno,TCP New Reno以及TCP Sack四种方法,其中TCP New Reno对快速恢复算法进行了改进,通过对TCP协议中的Reno进行...
  • 1,TCP慢启动TCP在连接过程的三次握手完成后,开始传数据,并不是一开始向网络通道中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞;而是根据初始的cwnd大小逐步增加发送的数据量,cwnd...
  • ==> 检测拥塞发生的方法:   (1)丢包   (2)时延测量   (3)ECN显式通知 TCP 的拥塞控制 的四个核心算法是: 慢启动、拥塞避免、快速重传、快速恢复。 ==> 何时发生慢启动:   (1)新建的连接,初始...
  • 为提升计算机的网络性能,更好地避免拥塞现象的发生,需要对其进行必要的技术控制。...而IP拥塞控制方法则分为FIFO,FQ和WFQ,RED以及ECN四种类型,通过队列调度管理方式实现了对网络拥塞的有效管理。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,969
精华内容 787
关键字:

ecn拥塞控制