昨天,我们对RDMA的机制做了一个基本的介绍。
RDMA的本质,是对于大规模分布式计算存储的场景,让网卡绕开CPU,配合远端服务器直接存取内存,加速服务器之间的交互,降低时延,把宝贵的CPU资源用于高价值的计算与逻辑控制上。
再让我们复习一下这张图:
大家可以看出,RDMA和网络的通道是不同的。这是因为,在早期,RDMA并不能在以太网上承载,而需要依赖于一种叫做Infiniband的网络技术。
Infiniband的字面意思是“无穷大的带宽”。它是基于信用令牌机制的,只有下游接收端处理完数据包,空出缓存资源,将令牌给上游发送端,上游发送端才能发送下一个数据包。这可以保证数据包的传输是可靠的,不会由于拥塞而丢包。
熟悉早期网络技术的同学一定能意识到,这和802.5 Token Ring机制极为相似,也有着Token Ring机制的同样缺陷——价格高昂。
事实上,由于Infiniband技术在成本及开放性等方面的原因,目前只有Mellanox一家供应商提供完整的Infiniband解决方案,这不得不使得期望利用Infiniband技术进行大规模RDMA组网的用户产生疑虑。
因此,基于以太网的RoCE (RDMA Over Converged Ethernet)技术,从2018年开始风靡。它可以利用以太网卡进行RDMA。Intel与Mellanox的主流以太网卡都支持这一技术。
RoCE有两个版本:RoCE v1和RoCE v2。
RoCE v1是通过以太网的0x8915类型识别,也就是说,它并不是IP协议。这使得RoCE只能在较小的范围内应用。
为了解决这一限制,工程师们制定了RoCE v2。它与RoCE v1并不兼容,而是利用UDP端口4791进行通讯。这使得RoCE可以穿越三层交换机、路由器或防火墙,大大提升了RoCE的应用范围。
那么,是不是只需要网卡支持RoCE,就可以在以太网上高效率地运行RDMA呢?
明天,我们将为大家回答这一答案。