InfiniBand可以运行哪些协议?
博客Steven.Lee 发表于:13年01月31日 14:00 [转载] DOIT.com.cn
这不是一篇介绍infiniband是什么的文章,而仅仅站在Oracle RAC和Exadata的角度上阐述infiniband。 如果您不知道infiniband是什么,请点击这里。
很多人可能不知道,绝大多数高性能计算机内部或者集群之间都是使用infiniband互联的。在国家超算中心,在亚马逊的云计算中心都有它的身影。为什么infiniband会如此受欢迎呢?原因无非有两个: 一是目前infiniband本身能提供比传统以太网更高的带宽, 二是通常infiniband的开销比以太网要小,对于节点间通信大量数据传输比以太网效率要更高。当然Oracle也是这一技术的主导者, 其中RDS本身就是Oracle的一个开源项目。常见的运行在infiniband之上协议有哪些呢?下面就简单介绍一下Oracle DB可能会用到的几个:
IPoIB协议:
Internet Protocol over InfiniBand 简称IPoIB 。传统的TCP/IP栈的影响实在太大了,几乎所有的网络应用都是基于此开发的,IPoIB实际是infiniband为了兼容以太网不得不做的一种折中,毕竟谁也不愿意使用不兼容大规模已有设备的产品。IPoIB基于TCP/IP协议,对于用户应用程序是透明的,并且可以提供更大的带宽, 也就是原先使用TCP/IP协议栈的应用不需要任何修改就能使用IPoIB。例如如果使用infiniband做RAC的私网,默认使用的就是IPoIB。下图左侧是传统以太网tcp/ip协议栈的拓扑结构,右侧是infiniband使用IPoIB协议的拓扑结构。
RDS协议:
Reliable Datagram Sockets (RDS)实际是由Oracle公司研发的运行在infiniband之上,直接基于IPC的协议。之所以出现这么一种协议,根本的原因在于传统的 TCP/IP栈本身过于低效,对于高速互联开销太大,导致传输的效率太低。RDS相比IPoIB, CPU的消耗量减少了50%, 相比传统的UDP协议,网络延迟减少了一半。下图左侧是使用IPoIB协议的infiniband设备的拓扑图,右侧是使用RDS协议的 infiniband设备的拓扑结构。默认情况下,RDS协议不会被使用,需要进行额外的relink。另外即使relink RDS库以后,RAC节点间的CSS通信也是无法使用RDS协议的,节点间心跳维持以及监控总是使用IPoIB。下图左侧infiniband使用IPoIB协议的拓扑结构,右侧是infiband使用RDS协议的拓扑结构。