什么是SRD
SRD(Scalabale Reliable Datagram),意为可扩展的可靠数据包,是亚马逊在AWS Nitro卡上为HPC/ML应用实现的一种高吞吐、低延迟的网络传输协议。
SRD特点
- 不保留数据包顺序,交给上层消息传递层处理
- 通过尽可能多的网络路径发包,利用ECMP标准,发端控制数据包封装来控制ECMP路径选择,实现多路径的负载平衡
- 自有拥塞控制算法,基于每个连接动态速率限制,结合RTT(Round Trip Time)飞行时间来检测拥塞,可快速从丢包或链路故障中恢复
- 由于无序发包以及不支持分段,SRD传输时所需要的QP(队列对)显著减少
为什么不用TCP
TCP是IP网络中可靠数据传输的主要手段,但是它不适合对延迟敏感的应用:数据中心中,理想情况下TCP的往返延迟为25us左右,如果发生拥塞或链路故障,TCP需要的等待时长会上升至50ms。带来这些延迟的主要原因是TCP丢包之后的重传机制。
为什么不用RoCE
RoCE(RDMA over Converged Ethernet)是IB的一种以太网实现,允许在以太网上运行InfiniBand传输,支持内核旁路和传输卸载。RoCE的缺点是可扩展性差,因为RoCEv2需要优先级流量控制(PFC),这在大规模网络中是难以实现的,它会造成队头阻塞、拥塞扩散和偶尔的死锁,即使使用PFC,RoCE在拥塞(类似于TCP)和次优拥塞控制下仍会遭受ECMP冲突。
SRD与RDMA异同