网络大提速,RDMA,IB,iWrap
本章第一节介绍的存储设备方面的创新解决了CPU访问存储设备的性能问题。但在实际的业务当中,数据的传输除了在节点内部的CPU与存储设备间外,节点之间也存在数据传输的需求。本节我们就介绍在网络传输方面是如何提速的。
在介绍新的网络技术之前,我们看看传统网络是如何传输数据的,比如我们常见的以太网。当节点0向节点1发送数据时,其整个数据处理的流程如下图所示,可以看到其过程还是比较复杂的。
在节点0,应用程序首先需要将其缓冲区中的数据通过系统调用的方式拷贝到操作系统内核TCP/IP协议栈当中,内核进一步将数据拷贝到网卡中。节点0的网卡将数据发出后,节点1的网卡会收到数据,然后数据首先从网卡拷贝到内核的TCP/IP协议栈,然后再从内核拷贝到应用程序缓冲区。可以看到,在整个数据的传输过程中存在多次数据拷贝的过程,这将极大的增加数据传输的延时。
为了减少数据传输过程中的数据拷贝,有一种称为RDMA的技术被提出。RDMA可以使节点0通过网络直接访问节点1的内存,并且跳过内核与用户态应用程序的内存拷贝,这样极大的降低了数据传输延时。我们可以用下图示意RDMA数据传输的过程。