RoCE网络中的QoS功能

作者&投稿:公京 (若有异议请与网页底部的电邮联系)
~ 引自 http://hustcat.github.io/qos-in-roce/

  TCP/IP协议栈满足不了现代IDC工作负载(workloads)的需求,主要有2个原因:(1)内核处理收发包需要消耗大量的CPU;(2)TCP不能满足应用对低延迟的需求:一方面,内核协议栈会带来数十ms的延迟;另一方面,TCP的拥塞控制算法、超时重传机制都会增加延迟。

  RDMA在NIC内部实现传输协议,所以没有第一个问题;同时,通过 zero-copy 、 kernel bypass 避免了内核层面的延迟。

  与TCP不同的是,RDMA需要一个无损(lossless)的网络。例如,交换机不能因为缓冲区溢出而丢包。为此,RoCE使用 PFC(Priority-based Flow Control) 带进行流控。一旦交换机的port的接收队列超过一定阀值(shreshold)时,就会向对端发送 PFC pause frame ,通知发送端停止继续发包。一旦接收队列低于另一个阀值时,就会发送一个 pause with zero duration ,通知发送端恢复发包。

  PFC对数据流进行分类(class),不同种类的数据流设置不同的优先级。比如将RoCE的数据流和TCP/IP等其它数据流设置不同的优先级。详细参考 Considerations for Global Pause, PFC and QoS with Mellanox Switches and Adapters

对于IP/Ethernet,有2种方式对网络流量分类:

详细介绍参考 Understanding QoS Configuration for RoCE 。

  对于RoCE,有2个机制用于流控: Flow Control (PFC) 和 Congestion Control (DCQCN) ,这两个机制可以同时,也可以分开工作。

  PFC是一个链路层协议,只能针对port进行流控,粒度较粗。一旦发生拥塞,会导致整个端口停止pause。这是不合理的,参考 Understanding RoCEv2 Congestion Management 。为此,RoCE引入 Congestion Control 。

DC-QCN 是RoCE使用的拥塞控制协议,它基于 Explicit Congestion Notification (ECN) 。后面会详细介绍。

前面介绍有2种方式对网络流量进行分类,所以,PFC也有2种实现。

基于 VLAN tag 的Priority code point (PCP,3-bits)定义了8个 Priority .

In case of L2 network, PFC uses the priority bits within the VLAN tag (IEEE 802.1p) to differentiate up to eight types of flows that can be subject to flow control (each one independently).

HowTo Run RoCE and TCP over L2 Enabled with PFC .

例如:

参考 HowTo Set Egress Priority VLAN on Linux .

  基于VLAN的PFC机制有2个主要问题:(1)交换机需要工作在trunk模式;(2)没有标准的方式实现 VLAN PCP 跨L3网络传输(VLAN是一个L2协议)。

   DSCP-based PFC 通过使用IP头部的 DSCP 字段解决了上面2个问题。

DSCP-based PFC requires both NICs and switches to classify and queue packets based on the DSCP value instead of the VLAN tag.

The type of service (ToS) field in the IPv4 header has had various purposes over the years, and has been defined in different ways by five RFCs.[1] The modern redefinition of the ToS field is a six-bit Differentiated Services Code Point (DSCP) field[2] and a two-bit Explicit Congestion Notification (ECN) field.[3] While Differentiated Services is somewhat backwards compatible with ToS, ECN is not.

详细介绍参考:

RDMA的PFC机制可能会导致一些问题:

  尽管PFC可以避免 buffer overflow 导致的丢包,但是,其它一些原因,比如FCS错误,也可能导致网络丢包。RDMA的 go-back-0 算法,每次出现丢包,都会导致整个message的所有packet都会重传,从而导致 livelock 。TCP有SACK算法,由于RDMA传输层在NIC实现,受限于硬件资源,NIC很难实现SACK算法。可以使用 go-back-N 算法来避免这个问题。

  当PFC机制与Ethernet的广播机制工作时,可能导致出现 PFC Deadlock 。简单来说,就是PFC机制会导致相应的port停止发包,而Ethernet的广播包可能引起新的 PFC pause 依赖(比如port对端的server down掉),从而引起循环依赖。广播和多播对于 loseless 是非常危险的,建议不要将其归于 loseless classes 。

  由于 PFC pause 是传递的,所以很容易引起 pause frame storm 。比如,NIC因为bug导致接收缓冲区填满,NIC会一直对外发送 pause frame 。需要在NIC端和交换机端使用 watchdog 机制来防止 pause storm 。

  由于NIC的资源有限,它将大部分数据结构,比如 QPC(Queue Pair Context) 和 WQE (Work Queue Element) 都放在host memory。而NIC只会缓存部分数据对象,一旦出现 cache miss ,NIC的处理速度就会下降。

  ECN是一个端到端的拥塞通知机制,而不需要丢包。ECN是可选的特性,它需要端点开启ECN支持,同时底层的网络也需要支持。

  传统的TCP/IP网络,通过丢包来表明网络拥塞, router/switch/server 都会这么做。而对于支持ECN的路由器,当发生网络拥塞时,会设置IP头部的ECN(2bits)标志位,而接收端会给发送端返回拥塞的通知( echo of the congestion indication ),然后发送端降低发送速率。

  由于发送速率由传输层(TCP)控制,所以,ECN需要TCP和IP层同时配合。

rfc3168 定义了 ECN for TCP/IP 。

IP头部 有2个bit的ECN标志位:

如果端点支持ECN,就数据包中的标志位设置为 ECT(0) 或者 ECT(1) 。

  为了支持ECN,TCP使用了 TCP头部 的3个标志位: Nonce Sum (NS) , ECN-Echo (ECE) 和 Congestion Window Reduced (CWR) 。

   RoCEv2 引入了ECN机制来实现拥塞控制,即 RoCEv2 Congestion Management (RCM) 。通过RCM,一旦网络发生拥塞,就会通知发送端降低发送速率。与TCP类似,RoCEv2使用传输层头部 Base Transport Header (BTH) 的 FECN 标志位来标识拥塞。

  实现RCM的RoCEv2 HCAs必须遵循下面的规则:

  (1) 如果收到IP.ECN为 11 的包,HCA生成一个 RoCEv2 CNP(Congestion Notification Packet) 包,返回给发送端;
  (2) 如果收到 RoCEv2 CNP 包,则降低对应QP的发送速率;
  (3) 从上一次收到 RoCEv2 CNP 后,经过配置的时间或者字节数,HCA可以增加对应QP的发送速率。

参考 Congestion Control Loop 。

参考 How To Configure RoCE over a Lossless Fabric (PFC + ECN) End-to-End Using ConnectX-4 and Spectrum (Trust L2) 。


谁能帮我解出这段代码啊??
这个代码已经没有可读性了. 有一次我把图片用流读的时候读出来的效果就是这样的.估计是机器码.不用研究它,浪费时间嘛.

把一块边长为6的正方形的顶点A折叠至CD边上的点E,若DE=...
为什么OCE和DEP相似a 回答 角DEP和角CEO互余,CEO和COE互余 又都有一个直角,相似 追问 懂了 回答 设BQ=m,QO=3-m,三角形DEP和FQO再次相似得到m的值,m=5\/3,再作QR⊥AD于R,PR=5\/3 ,RQ=6,勾股定理PQ=根号下(349\/9 ) 所以这个数 。。。挺恶心。。 追问 我刚想出来你就回了。。一线三等角是吧,...

二次接线图电气符号问题。
电气常用文字符号及二次接线图的识别_百度文库 http:\/\/wenku.baidu.com\/link?url=XA4KryfzPKS1CA5U8VwOkjf6eGyqO1yV1Q6VZG6N0SRg9TmOCEZCK8LziIG3d9e7IKMY5fZdFC4At7W8y3Er-vdK4ovBARDXpX9nZJRRcpa

正方形ABCD中,O是AC与BD的交点,∠DAC的平分线AP交CD于P,∠BDC的角平 ...
DQ平分∠ODC⇒CD\/OD=CQ\/QO ⇒BD\/CD=AP\/BQ

好看的动漫终于灭绝了
《悲惨世界 ~ 少女柯塞特》 6MWYw-ocE 《向日葵》第2季 mo2e*+ 54 《MAJOR棒球大联盟》第3季 ?Q5@,)&8 《拯救德尔托拉》 Ea&BIe ; 《爱之天使-安琪莉可-闪光的明日》 C4Z-[@_c 《京四郎与永远的天空》 ?;6s08LD 《神圣10月》 ,-nq08JZk) 《蓝龙》 :9fj\\ogy 《...

新宾满族自治县13430261435: 路由器的qos功能是做什么用的 -
危风妥布: qos简单的说就是网络传输的服务质量,就是对网络带宽的具体管理和划分. 具体什么功能呢,在windows中是会保留一部分预留带宽为自动更新和一些后台传输的程序使用. 在路由器中是这样的,可以按照协议和ip进行qos的质量划分: 例如网吧玩网络游戏的是主要客户,那么就把主要的带宽划分给游戏使用的协议和端口. 象qq这种使用udp协议的就分配少量带宽,还有人总喜欢下载,也可以限制,这就是划分p2p协议的带宽了,这样就算网吧有人下载也不会影响玩网路游戏的主要群体了.

新宾满族自治县13430261435: 网络中Qos是指什么? -
危风妥布: QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术. 在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如Web应用,或E-mail设置等.但是对关键应用和多媒体应用就十分必要.当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行.在RFC 3644上有对QoS的说明.

新宾满族自治县13430261435: Qos功能有什么用? -
危风妥布: QOS的功能: QoS的英文全称为"Quality of Service",中文名为"服务质量".QoS是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术. 在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比...

新宾满族自治县13430261435: 路由器里的QoS是什么意思? -
危风妥布: QoS的英文全称为"Quality of Service",中文名为"服务质量".QoS是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术.现在的路由器一般均支持QoS. 路由器上的QoS可以通过下面几种手段获得: 通过大带宽得到 在...

新宾满族自治县13430261435: 路由器qos是什么,怎么关闭 -
危风妥布: QOS就是服务质量的功能,可以优化网络资源的分配,可以关闭, 关闭以后,若是多人同时上网的情形下,若有人下载或者在线看电影,容易出现网速变慢、网络卡、掉线的情况 .

新宾满族自治县13430261435: 路由器qos的作用是什么? -
危风妥布: QoS是服务质量的意思,在早期的路由器上大多数都有这个功能.它主要是分配带宽的. 早期的网络带宽比较小,当多个终端连接的时候就可能出现争用带宽的情况.QoS可以给不同的终端分配最大及最小带宽,从而保证不同的终端具有一定的带宽. 现在的宽带带宽都比较大,很少使用路由器的这一功能.

新宾满族自治县13430261435: Qos功能有什么用? -
危风妥布: 在传统的IP网络中,所有的报文都被无区别的等同对待,每个转发设备对所有的报文均采用先入先出(FIFO)的策略进行处理,它尽最大的努力(Best-Effort)将报文送到目的地,但对报文传送的可靠性、传...

新宾满族自治县13430261435: 路由器QOS功能的原理和工作方式是怎样的? -
危风妥布: 一、QOS用来解决带宽解决网络延迟和阻塞等问题的一种技术,一般里面包含优先级别、弹性带宽管理等等,主要用来解决各种网络的攻击和病毒,保护网络的正常运行,它主要有以下几个方面的功能: 1、端口优先:可针对源端口、目的端口...

新宾满族自治县13430261435: QoS是什么东西,路由器用了有什么好处 -
危风妥布: 流量工程术语服务质量(英文QualityofService,QoS),QoS是一种控制机制,它提供了针对不同用户或者不同数据流采用相应不同的优先级,或者是根据应用程序的要求,保证数据流的性能达到一定的水准.QoS的保证对于容量有限的网络来说...

新宾满族自治县13430261435: QOS是什么?什么是V - LAN划分? -
危风妥布: 什么是QoS? QoS(Quality of Service),中文名为"服务质量".它是指网络提供更高优先服务的一种能力,包括专用带宽、抖动控制和延迟(用于实时和交互式流量情形)、丢包率的改进以及不同WAN、LAN 和 MAN 技术下的指定网络流量等,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网