锐捷网络交换机支持基于动态的方式进行Buffer资源的分配,对共享缓存的设置分为11档,动态水线alpha值=队列可申请缓存量/剩余共享缓存量。队列的α值越大,其在共享缓存中可使用的百分数占比也就越高。
共享水线α值与可使用率对应关系
我们不妨分析一下:
队列的α值设置越小,其最大可申请的共享缓存占比就越小。当端口拥塞时就会越早触发PFC流控,PFC流控生效后队列降速,可以很好地保证网络不丢包。
但从性能的角度看,过早触发PFC流控,会导致RDMA网络吞吐下降。因此我们在MMU水线设置时需要选取一个平衡值。
PFC水线到底设置多少,是一个非常复杂的问题,理论上不存在一个固定的值。实际部署时,需要我们具体分析业务模型,并搭建测试环境进行水线调优,找到匹配业务的最佳水线。
Headroom设置
Headroom:顾名思义,就是头部空间的意思,是在PFC触发后,到PFC真正生效这一段时间,用来缓存队列报文的。Headroom设置多大合适?这里与4个因素有关:
PG检测到触发XOFF水线,到构造PFC帧发出的时间(这里主要跟配置的检测精度以及平均队列算法相关,固定配置是固定值)
上游收到PFC Pause帧,到停止队列转发的时间(主要跟芯片处理性能有关系,交换芯片实际上是固定值)
PFC Pause帧在链路上的传输时间(跟AOC线缆/光纤距离成正比)
队列暂停发送后链路中报文的传输时间(跟AOC线缆/光纤距离成正比)
因此Headroom所需要的缓存大小,我们可以根据组网的架构,以及流量模型测算得出。以100米光纤线 + 100G光模块,缓存64字节小包,计算出所需的Headroom大小是408个cell(cell是缓存管理的最小单元,一个报文会占用1个或者多个cell),实际测试数据也吻合。当然,考虑一定的冗余性,Headroom设置建议比理论值稍大。
RDMA网络实践
锐捷网络在研发中心搭建了模拟真实业务的RDMA网络,架构如下:
锐捷网络RDMA组网架构
组网模型:大核心三级组网架构,核心采用高密100G线卡;
POD内:Spine采用提供64个100G接口的 BOX设备,Leaf采用提供48个25G接口+8个100G接口的BOX设备;
Leaf作为服务器网关,支持和服务器间基于PFC流控(识别报文的DSCP并进行PG映射),同时支持拥塞ECN标记;
RDMA仅运行于POD内部,不存在跨POD的RDMA流量,因此核心无需感知RDMA流量;
为了避免拥塞丢包,需要在Leaf与Spine之间部署PFC流控技术,同时Spine设备也需要支持基于拥塞的ECN标记;
Leaf和Spine设备支持PFC流控帧统计、ECN标记统计、拥塞丢包统计、基于队列的拥塞统计等,并支持将统计信息通过gRPC同步到远端gRPC服务器。