我们先小结一下前期的收获:
摩尔定律被硅芯片物理极限限制->多核技术推动虚拟化大规模应用->数据中心网络大规模虚拟机入网;
Wi-Fi技术驱动移动办公普及->园区网络大规模用户移动漫游;
虚拟机与园区网络漫游终端普及->需要将网络划分为柔性切片,虚机或园区用户接入网络时自动划分至所属切片->VXLAN技术
VXLAN没有控制平面->EVPN+SDN作为控制平面;
合理设计网络,避免VXLAN硬件规格限制;
可见,SDN网络的出现,演进和成熟,是典型的IaaS层面需求引发的网络革命。
那么,让我们将眼光上移,从数据中心的IaaS层移到PaaS层——
数据中心的本质,是运行大规模分布式计算或存储的场所。
想一想,我们常见的计算和存储PaaS框架有哪些?
Hadoop, Tensorflow, Ceph, Gluster……
这些分布式计算与存储框架,所相似的一点是,需要频繁成块访问远端计算机的内存。
传统的远程访问,需要通过Linux或Windows的Socket机制。这种机制每发送一个数据包,均需要将数据包从用户态内存空间,拷贝到网卡驱动所在的内核态内存空间,再进行发送。而接受数据包,则需要将数据包从网卡驱动所在的内存空间拷贝至用户态应用程序的内存空间。
显然,在大规模分布式计算与存储时,这是难以接受的。
所以,工程师们在网卡上引入了RDMA(Remote Direct Memory Access)机制,使得应用程序可以直接通过RDMA命令字,让远端服务器网卡直接从RAM中取指定地址的数据;
RDMA的API,与传统Linux/Windows Socket的API有所不同,它叫做RDMA Verb。以发送数据包的RDMA Verb为例,它的函数原型如下:
int ibv_post_send(struct ibv_qp *qp, struct ibv_send_wr *wr, struct ibv_send_wr **bad_wr)
让我们看看结构体ibv_send_wr的定义:
我们看到,红框中是远端的地址。也就是说,RDMA在代码API级别,提供了直接访问远端地址的机制。
RDMA与传统Socket机制,数据流向对比如下图所示:
可见,RDMA绕过了内核中断机制,大大降低了远程访问的时延,降低了CPU占用。
注意到图中RDMA的通道,它与网络是两个不同的通道。这意味着什么呢?
明天,我们为大家详解这一细节。