NPCC
NPCC(Network-based Proactive Congestion Control)是一种以网络设备为核心的主动拥塞控制技术,支持在网络设备上智能识别拥塞状态,主动发送CNP拥塞通知报文,准确控制服务器发送RoCEv2报文的速率,既可以确保拥塞时的及时降速,又可以避免拥塞已经缓解时的过度降速。
为什么需要NPCC?
目前RoCEv2(RDMA over Converged Ethernet version 2)网络应用最广泛的拥塞控制机制,是在网络设备上发现拥塞后,由网络设备向接收端服务器发送携带拥塞标记的报文,接收端服务器随后向发送端服务器发送CNP拥塞通知报文(Congestion Notification Packets,简称CNP报文),以通知发送端服务器降低发送报文的速率,从而缓解拥塞。
传统的拥塞控制机制
- 响应慢:发生拥塞的是网络设备,然而对拥塞进行反馈的是接收端,当网络规模较大时,过长的拥塞反馈路径可能让发送端不能及时降速,甚至提前升速导致拥塞加剧;
- 响应不准确:网络拥塞状态只能通过报文中的拥塞标记获得,接收端生成的CNP报文个数不能准确缓解拥塞。且在拥塞缓解过程中,转发设备仍然会持续进行拥塞标记,很容易造成吞吐过低。
NPCC功能支持在网络设备上智能识别拥塞状态,由网络设备主动向发送端服务器发送CNP报文,使发送端服务器及时降低发送报文的速率。不仅解决了拥塞反馈路径过长的问题,而且可以准确控制发送的CNP报文个数。既可以确保拥塞时的及时降速,又可以避免拥塞已经缓解时的过度降速。但由于启用NPCC功能的网络设备需要自行维护RoCEv2流表、计算CNP报文数目、构造和发送CNP报文,这个过程需要花费的时间相对较长,因此,在两端服务器距离较远的场景中使用NPCC更有收益。
NPCC的拥塞控制机制
NPCC是如何工作的?
NPCC工作原理
NPCC的工作原理如上图所示。
- 维护RoCEv2流表,获取路径信息。
开启NPCC功能的网络设备会根据报文的源IP地址、目的IP地址、Dest QP字段和端口索引信息建立和维护RoCEv2流表,以获知RoCEv2流的地址信息和转发路径。
- 检测队列拥塞状态,计算CNP报文数目。
网络设备对端口中开启了NPCC功能的队列的队列长度(即缓存占用量)进行检测,根据队列的拥塞状态智能计算主动发送的CNP报文数目:
- 队列长度上涨:队列浅时,发送少量CNP报文,防止拥塞状态误判断;队列深时,发送较多的CNP报文,快速缓解队列拥塞,降低转发时延。
- 队列长度下降:队列浅时,不发送CNP报文,防止过度降速造成吞吐下降;队列深时,发送少量的CNP报文,在尽量保证吞吐和时延性能的情况下缓解队列拥塞。
- 队列长度突发小抖动:认为出现了微突发场景,此时不发送CNP报文,防止出现过度降速。
- 构造CNP报文并转发。
网络设备根据计算出的CNP报文数目和RoCEv2流表中的地址信息构造CNP报文,并向发送端服务器主动发送CNP报文,服务器收到后降低RoCEv2报文的发送速率。
NPCC的应用
如下图所示,在数据中心互联的长距场景中,DeviceA和DeviceB作为数据中心互联的出口设备,当DeviceA的出端口发生拥塞时,DeviceA会向DC2的接收端服务器发送携带拥塞标记的报文,DC2的接收端服务器随后向DC1的发送端服务器发送CNP报文,DC1的发送端服务器接收到CNP报文后降低发送报文的速率。由于两个数据中心距离很远,消耗时间较长,因此无法达到及时降速的效果。
在DeviceA上开启NPCC功能后,当DeviceA的出端口发生拥塞时,由DeviceA直接向DC1的发送端服务器发送CNP报文,可以达到及时降速,缓解拥塞的效果。
数据中心互联的长距场景
- 作者: 冯媛媛
- 最近更新: 2024-02-26
- 浏览次数: 14602
- 平均得分: