无损RoCE网络概念
RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。RDMA 将用户应用中的数据直接传入服务器的存储区,通过网络将数据从一个系统快速传输到远程系统的存储器中,消除了传输过程中多次数据复制和文本交换的操作,降低了 CPU 的负载。基于RDMA的RoCE技术能在以太网上部署,相比IB网络节省了很大的资源和复杂度。RoCE的协议分两个版本:
- RoCE v1 协议:基于以太网承载 RDMA,只能部署于二层网络。
- RoCE v2 协议:基于 UDP/IP 协议承载 RDMA,可部署于三层网络。
当前 RDMA普遍使用 RoCEv2 协议。然而,由于 RDMA 起初是基于无损的 InfiniBand 网络设计的,RoCEv2 协议缺乏完善的丢包保护机制,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。因此,以太网交换机需要支持无损网络的部署才能支持 RoCEv2 协议及其相关应用,PFC和ECN搭建无损网络常见的技术。
PFC和ECN
PFC和ECN分别属于流量控制和拥塞控制技术,区别是:
- 流量控制是由接收端来控制数据传输速率,防止发送端过快的发送速率引起接收方拥塞丢包
- 拥塞控制是一个全网设备协同的过程,所有主机和网络中的转发设备均参与控制网络中的数据流量,以达到网络无丢包、低时延、高吞吐的目的,在现网中,流量控制和拥塞控制需要配合应用才能真正解决网络拥塞
PFC概念
PFC(Priority-based Flow Control )基于优先级的流量控制 能够逐跳提供基于优先级的流量控制。设备在进行报文转发时,根据报文的优先级进入对应映射关系的队列中进行调度转发。当某一优先级报文发送速率超过接收速率,导致接收方可用数据缓冲空间不足时,设备通过 PFC PAUSE 帧反馈给上一跳设备,上一跳设备收到 PAUSE 帧报文后停止发送本优先级报文,直到再收到 PFC XON 帧或经过一定的老化时间后才能恢复流量发送。通过使用 PFC 功能,使得某种类型的流量拥塞不会影响其他类型流量的正常转发,从而达到同一链路上不同类型的报文互不影响。
ECN概念
ECN(Explicit Congestion Notification,显示拥塞通知)设备发生拥塞时,通过对 报文 IP 头中 ECN 域的标识,由接收端向发送端发出降低发送速率的 CNP(Congestion Notification Packet,拥塞通知报文),实现端到端的拥塞管理,减缓拥塞扩散恶化。ECN 定义了一种基于 IP 层及传输层的流量控制及端到端拥塞通知机制。ECN 功能利用 IP 报文头中的 DS 域来标记报文传输路径上的拥塞状态。支持该功能的终端设备可以通过报文内容判断出传输路径上发生了拥塞,从而调整报文的发送方式,避免拥塞加剧。
流量控制和拥塞控制过程
以图中拓扑为例,介绍流量控制和拥塞控制的工作过程。
如果switch2的端口2发生了拥塞时,端口1接收的报文进入到某个队列因不能及时转发,处理能力慢于接收能力,如果此时switch2的端口1未配置PFC,可能会因为队列缓存不足导致丢包,而开启了PFC功能后,端口1会发送对应的PFC pause包给上一级switch1,switch1接收到pause包之后会暂停发送报文,此时暂停的报文会存放到HeadRoom缓存中,如果网络的拥堵没有恢复,触发了缓存门限,switch1也会向上游设备发送PFC pause包,主机A收到了pause包之后,暂停报文发送,如果没有开启ECN,则队列会因缓存不足导致丢包,而开启ECN后按照拥塞控制算法,控制发包的方式,降低发送速率。通过PFC和ECN的结合保证网络不会因为丢包导致网络瘫痪。
思考
虽然PFC和ECN的结合保障不丢包,但是也因引入新的问题:
1. PFC和ECN技术结合构建无损网络会导致网络吞吐降低或时延增加,如何有效的平衡吞吐和时延需要结合业务处理,在实际应用中需要找到合适的PFC水位线
2. 在网络比较复杂的情况可能导致PFC storm问题,网络性能急剧下降,阿里为了解决此问题直接放弃PFC,从降低因丢包导致的网络性能不足的思路着手
3. PFC可能出现死锁,尽管很多厂商已支持解决死锁的问题,但是都是事后处理,无法从根本上解决此问题