VIA(Virtual Interface Architecture): 这个只是一个标准,基本上不要了解太多。
楼主的问题可以细分成2个层次考虑。一个是网络环境,二是具体的协议和实现。
一、网络环境
IB(InfiniBand): 是一种网络环境,做对比的是以太网, IB往往用于高性能集群环境中。以前IB还是有优势,但是随着100Gb/400Gb以太网的快速发展,IB的优势越来越弱。此外以太网在数据中心占据了统治地位,因此IB的市场份额只会越来越少。
二、协议和实现
RDMA这种技术以前只能运行在IB网络下,为了将这种技术用在以太网环境下,就逐步发展出了RoCE/iWarp两种协议。
RoCE目前主要是由Mellonax主导,和TCP协议无关,性能更好。iWarp主要由Chelsio主导,下层会依赖TCP协议,性能和可扩性行都差一些,优点是考虑了对广域网的支持。
目前来看RoCE比iWarp前景更好,实际使用也更广泛。
DPDK是Intel主导,提供了基于用户态的数据链路层的功能,可以在上面构建出基于用户态的网络栈。实际使用中一个显然的缺点是只有poll功能,没有陷入中断来减少对CPU的消耗。
发展出这么多协议和实现,根本原因在于网络硬件发展很快,而占据主导的TCP协议当初是为了低速网络环境设计的。