RDMA网络学习笔记(1)
目录
1 网络发展
现状:25G网络全面商用,100G网络批量上线,200G网络即将到来。
2 协议
iWARP: Internet Wide Area RDMA Protocol. 2007年OpenFabric联盟(主要成员包括IBM, EMC, Intel等)公布的标准。IETF规范。
RoCE: RDMA over Converged(融合的) Ethernet. 2010年Infiniband行业协会 (Mellanox/Broadcom)推出的规范。在以太网上实现的RDMA。2014年提出RoCEv2,使用UDP封装,网络层遵循Eth+IP,传输层使用IB,完全融合现有以太网基础设施。 RoCE网络需要支持DCB的网络交换机,以支持PFC(Priority Flow Control)流控。PFC 机制根据拥塞状态发送PAUSE,逐级反压进行流控。
Items | RocE | RoCEv2 | iWARP |
---|---|---|---|
RDMA NIC Required | Y | Y | Y |
Network Layer | IB | UDP/IP | TCP/IP |
Transport Protocol | IB | IB | iWARP |
RDMA verbs support | Y | Y | Y |
Switch Required | DCB | DCB | Not Required |
Congestion(拥塞) Management | QCN | ECN/CNP | TCP/IP, RFC 3168 ECN |
Routable | N | Y | Y |
RoCE/RoCEv2 Vendor: Emulex, Mellanox, Broadcom, Qlogic iWARP Vendor: Intel, Chelsio
目前主流RDMA为RoCEv2。
3 单网卡多协议多队列
内核态TCP/IP, 用户态TCP/IP,以及RDMA传输并存。并通过TCP/IP走控制命令,通过RDMA 传输数据,既简化逻辑,同时满足性能需求。
通过NIC FLOW DIRECTOR技术,NIC把数据包直接推送到对应的Queue,实现不同驱动、完全无锁的数据处理。Ref: https://doc.dpdk.org/guides-20.02/howto/flow_bifurcation.html
4 存储网络组件目标
- 低延时:RDMA网络RoundTrip控制在10us;
- 低消耗:硬件Offload,降低CPU消耗; TSP, LRO, FPGA;
- 高并发:网卡分流,无锁多队列,完全并发;
- 运维友好:升级;
- 内存管理:零拷贝,大页;
- 编解码:控制链路Protobuf,数据链路RawData;
- 全链路用户态处理,Polling机制,Run To Completion线程模型;
- How To Reduce CPU ?
- 容错:多交换机,多链接,网络黑洞检测与链路切换。
5 开源软件
- DPDK驱动
- 协议栈
- Seastar
- mTcp
- f-stack
6 实现基本原理
6.1 Queue Pair
Queue Pair包括RQ和SQ,是主机内存,分别描述接收和发送操作描述。
发送时,APP把发送数据描述信息按照规范,写入SQ,网卡按照SQ内描述信息,执行对应操作。
接收时,网卡根据RQ描述,把数据帧写入RQ描述对应的内存。
除此之外,还有一个CQ,Completion Queue,RQ/SQ操作结束时,网卡写入CQ,告知APP操作完成。
6.2 Packet
ROCEv2定义了UDP传输RDMA包的包头。参见<Infiniband Architecture Specification Volume 1>, <Supplement to Infiniband Architecture Specification Volume 1: ROCEv2>.
6.3 Memory Register
APP分配一段虚拟空间连续的内存(物理位置可能离散)。生成对应内存空间信息,如基地址,空间范围,操作权限,Local Ley,Remote Key。Local Key供本地网卡访问内存,Remote Key供远端网卡访问内存。
6.4 Connection Pool
X个节点,每个节点Y个进程。Fullmesh需要(X-1) * N * N QP。通过Connection QP共享,能节省较多资源,只需要N-1个QP。
6.5 Congestion Control
拥塞控制.
6.6 Multi path
6.7 Qos
Tag, Priority.
7 References
- RFC 5681, 6582, 3042
- https://en.wikipedia.org/wiki/RDMA_over_Converged_Ethernet
- https://www.snia.org/sites/default/files/SNIA_ESF_Benefits_of_RDMA_In_Accelerating_Ethernet_Storage_Connectivity_Final_1_0.pdf
- https://support.mellanox.com/s/article/roce-v2-considerations
- https://higherlogicdownload.s3.amazonaws.com/HPE/MigratedAttachments/B7D5EBDE-1C7F-4F78-84E7-9C0D19DE9E95-2-HPE%20FlexFabric%20RDMA%20VRD.pdf
- https://docs.nvidia.com/networking/pages/viewpage.action?pageId=39284930
- https://www.eet-china.com/mp/a124264.html
- https://github.com/ipdk-io/ipdk
- AWS Nitro System
- AWS Nitro SRD
- https://lwn.net/Articles/542629/
- https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/