QCN/DCTCP/DCQCN
一、DCQCN:
DCQCN全称为Data Center Quantized Congestion Notification,是目前在RoCEv2网络中使用最广泛的拥塞控制算法,它融合了QCN算法和DCTCP算法,DCQCN只需要可以支持WRED和ECN的数据中心交换机(市面上大多数交换机都支持),其他的协议功能在端节点主机的NICs上实现。DCQCN可以提供较好的公平性,实现高带宽利用率,保证低的队列缓存占用率和较少的队列缓存抖动情况。
- 交换机(CP,congestion point)
CP算法与DCTCP相同,如果交换机发现出端口队列超出阈值,在转发报文时就会按照一定概率给报文携带ECN拥塞标记(ECN字段置为11),以标示网络中存在拥塞。标记的过程由WRED(Weighted Random Early Detection)功能完成。
WRED是指按照一定的丢弃策略随机丢弃队列中的报文。它可以区分报文的服务等级,为不同的业务报文设置不同的丢弃策略。WRED在丢弃策略中设置了报文丢包的高/低门限以及最大丢弃概率,(该丢弃概率就是交换机对到达报文标记ECN的概率)。并规定:
- 当实际队列长度低于报文丢包的低门限值时,不丢弃报文,丢弃概率为0%。
2.当实际队列长度高于报文丢包的高门限值时,丢弃所有新入队列的报文,丢弃概率为100%。
3.当实际队列长度处于报文丢包的低门限值与高门限值之间时,随机丢弃新到来的报文。随着队列中报文长度的增加,丢弃概率线性增长,但不超过设置的最大丢弃概率。
图:报文被标记的概率与队列长度关系
- 接收端(NP,notification point)
接收端NP收到报文后,发现报文中携带ECN拥塞标记(ECN字段为11),则知道网络中存在拥塞,因此向源端服务器发送CNP拥塞通知报文(Congestion Notification Packets),以通知源端服务器进行流量降速。
NP算法说明了CNPs应该什么时间以及如何产生:如果某个流的被标记数据包到达,并且在过去的N微秒的时间内没有相应CNP被发送,此时NP立刻发送一个CNP。NIC每N微秒最多处理一个被标记的数据包并为该流产生一个CNP报文。
- 发送端(RP,reaction point)
当发送端RP收到一个CNP时,RP将减小当前速率Rc,并更新速率降低因子α,和DCTCP类似,并将目标速率设为当前速率,更新速率过程如下:
RT = Rc
Rc = Rc * ( 1 -α/2 )
α = ( 1-g )*α+g
如果RP在K微秒内没有收到CNP拥塞通知,那么将再次更新α,此时α = ( 1