Oracle认为Linux远程直接内存访问(RDMA)实现需要高可用性和负载平衡等功能,并希望通过在内核编程以实现这一目标。
正如Oracle Linux内核开发人员Sudhakar Dindukurti在本文中所解释的那样,问题在于性能和安全性考虑因素意味着RDMA适配器将硬件与“特定端口和路径”联系起来。
另一方面,标准网络接口卡可以选择使用哪个netdev
(网络设备)来发送分组。故障转移和负载平衡是本机的。
Dindukurti的工作旨在将此功能引入InfiniBand和RoCE(RDMA over Converged Ethernet)NIC,并将其从Oracle的Unbreakable Enterprise Kernel(UEK)上游移至Linux源代码。
其弹性RDMA over IP(RDMAIP)创建高可用性连接,使用主动 - 主动绑定在适配器端口之间创建绑定组。如果端口丢失,则流量将移至组中的其他端口。这是使用Oracle的可靠数据报套接字(RDS)完成的,该套件自2009年以来一直在Linux内核中使用。
RDMA的通道绑定,看起来很容易。
将其扩展为Resilient RDMAIP涉及一个新进程,它允许系统发送数据包以删除节点,如Oracle的帖子详细说明:
在负载平衡方案中,所有绑定组的接口都有自己的IP地址,而“使用者”(即应用程序或操作系统进程)决定了如何最好地选择要使用的接口。
故障转移更容易,因为RDMAIP发现接口断开。模块将故障接口的IP地址移动到组中的另一个IP地址,RDMA Communication Manager(RDMA CM)事件通知相关内核进程更改其使用的地址。
故障恢复的处理方式相同:RDMAIP模块将流量移回已恢复的地址,并发送另一个RDMA CM消息。
为了让这个Linux内核就绪,Dindukurti写道,Resilient RDMAIP模块需要与网络堆栈实现更紧密地耦合。这将允许RDMA内核使用者创建活动绑定组,并提供API以公开绑定组及其接口。
领取专属 10元无门槛券
私享最新 技术干货