Infiniband与RDMA原理简介

Infiniband介绍

参考:InfiniBand Trade Association

一、基本概念

1、与传统网络区别
    传统网络是以“网络”为中心的。操作系统是资源的拥有者并将资源抽象为服务,应用访问资源需要要向操作系统请求相应的服务(网络、存储等);infiniband是以应用为中心的(application centric),它从应用的视角去分析解决IO问题及如何设计网络。其基本思想是提供简单易用的消息服务:控制消息与数据消息。应用可以直接访问消息服务而不需要经过操作系统,这是由于IB使用了旁路技术(stack by pass)。消息服务通过创建Channel使应用可以交互,用户态、内核态都可以访问Channel。IB的本质是在不相连的虚机地址空间创建私有的、受保护的Channel,将Channel的末端提供给应用,供应用传递消息。

2、两种重要的能力
    直接访问网卡network interface(NIC)、两个应用之间直接访问对方内存。这两个能力不依赖OS的地址翻译能力和网络处理能力

3、IO Channel

  • 作用:IB是通过创建Channel来提供消息服务的,Channel为个完全不相连的虚拟地址(或不同Server之间)提供连接;

  • 创建:物理的IO channel是由HCA创建的,一个HCA可以支持 2**24 个QP channel;

  • 地址转换:应用通过内存注册来获取所需的虚拟地址到物理地址的转换,HCA用地址转换表将virtual address转换为物理地址,即具体的地址转换是由HCA完成的。地址转换表的所有权仍然是操作系统。

4、QP(Queue Pair)

  • Channel的末端(endpoint)名字,是IO Channel的一个逻辑抽象,是应用直接访问HCA(host channel adapter)的入口,通过将QP map to virtual address来实现应用直接访问QP(使用QP就是 channel IO的概念);

  • QP由发送队列(Send Queue)和接收队列(Receive Queue)组成,每一个QP代表了Channel的一端;QP是应用访问IB消息服务的入口,若应用需要多个连接那么需要创建多个QP;

  • 通过将QP直接映射到应用的虚拟地址空间,实现应用直接访问QP而不需要经过操作系统,这就是旁路技术(OS by pass)

  • 网卡负责将应用的虚拟地址转换为物理地址

  • 内核态和用户态都可以访问QP;

5、地址转换
    物理的IO Channel是由HCA创建的,QP是物理Channel暴露给应用的一个逻辑端口。HCA占用了一段PCIE的地址。内存注册之后,网卡通过地址转换表将虚拟地址转换为物理地址,但是操作系统拥有该地址转换表,这保证了不同应用之间的隔离及虚拟地址空间的保护。
    RDMA是通过交换虚拟地址和key来实现的,组合实现虚拟地址保护,防止第三方访问

6、消息的收发:
    IB请求被称为WR(Work Request),其描述了传递的消息属性(例如opcode、remote_addr、rkey),消息最大为2GB。应用发送/接收的是一个完整的消息,但消息通过网卡发送数据时时会发生分片,分片的大小是可调整的(默认多少?),可以用来优化带宽。接收端收到后完成拼接,全部接收完后再通知应用;传统TCP基于bytes的流试服务,网卡收完放在匿名buffer中通知应用,应用拷贝到自己内存(需要消耗2倍内存带宽);IB是网卡收完通知应用直接可用,免去了内存拷贝和收取的消耗;

7、IB提供的消息传递服务:
        1)通道语义SEND/RECEIVE:适合小数据传输(例如小于8k),适合控制消息
        2)内存语义RDMA_READ/RDAM_WRIT:适合大数据传输(如大于8k),做数据传输
        3)原子操作语义
        4)多播服务

8、一个写流程(对远端的虚拟内存操作是远端网卡完成的):

准备好数据

发送SEND 通知对端数据准备好,同时将传递给对端

发起RDMA read

读完,发送SEND 请求通知发送端已经读完


二、Infiniband协议

1、 协议栈

Infiniband与RDMA原理简介_第1张图片

  • SW Transport Interface:定义了应用访问IB服务的方法,使应用直接访问IB服务,避免了对操作系统的依赖:

    • 维护work queue

    • 消息地址转换

    • 提供完成及消息机制(completion、event)

  • Transport:传输Channel(QP)的消息:

    • 消息封装

    • 提供服务类型:可靠/不可靠、面向连接的/非连接的、数据报服务

    • 实现RDMA协议:send/receive, write/read, atomic

    • 实现端到端的可靠性、正确性,确保可靠的发送。发生错误后会尝试自我修复,如果无法修复则返回给应用。

    • 发生完成指接收端已经被告知消息到达。且只有在消息被放入应用的虚拟地址时才会通知应用,传输与接收应用无感知。

SW Transport Interface与Transport共同提供了RDMA传输服务(RDMA Message Transport Service)。RoCE也采用了这两层协议,与IB的区别在于网络、链路和物理层。

  • Link:实现了无损流控(Lossless flow control)。硬件会动态跟踪buffer的使用率,确保传输前有空间接收,否则不传输。这种在传输前的流控避免了缓存溢出

2、上层协议

Infiniband与RDMA原理简介_第2张图片
IB是一个工业级的互通标准,不与任何的系统或平台绑定,没有具体的API,其只规定了API的语义行为。Open Fabrics Alliance 等一些商业的组织提供了一系列的软件栈。提供了丰富的上层协议(ULP),比如 SDP(socket direct protocol),SRP,iSER,IPoIB,NFS-RDMA, Lustre Support,RDS, MPI(for HPC)

三、Infiniband的价值

1、节约资源:内存带宽、CPU。在同等性能下,需要更少的服务器及更少的电力、冷却资源等,节约成本。
2、满足对资源的灵活应用,来适配不同应用的需求:可以灵活的为存储、管理网络分配带宽;
3、一种底层网络解决多种上层需求(管理,存储,IPC):queue pair可以作为虚拟的硬件lane分配给应用(或虚机),解决了预分配硬件资源带来的不灵活性,共享网卡降低硬件投入;采用高速网卡减少物理链接(不考虑高可用的前提下)
4、低延迟满足分布式系统对性能的需求;

你可能感兴趣的:(RDMA,网络协议,RDMA)