什么是RDMA
在計(jì)算機(jī)運(yùn)算領(lǐng)域灭袁,遠(yuǎn)程直接內(nèi)存訪問(wèn)(英語(yǔ):remote direct memory access,RDMA)是一種直接存儲(chǔ)器訪問(wèn)技術(shù)理朋,它將數(shù)據(jù)直接從一臺(tái)計(jì)算機(jī)的內(nèi)存?zhèn)鬏數(shù)搅硪慌_(tái)計(jì)算機(jī)眯娱,無(wú)需雙方操作系統(tǒng)的介入。這允許高通量弟灼、低延遲的網(wǎng)絡(luò)通信级解,尤其適合在大規(guī)模并行計(jì)算機(jī)集群中使用。
RDMA實(shí)現(xiàn)
常見(jiàn)網(wǎng)絡(luò)環(huán)境
介紹RDMA網(wǎng)絡(luò)實(shí)現(xiàn)之前田绑,先介紹一下常見(jiàn)的幾種網(wǎng)絡(luò)環(huán)境:以太網(wǎng)(ethernet)勤哗、IB網(wǎng)(Infiniband)、光纖通道(Fibre Channel)掩驱。
- Infiniband
InfiniBand(直譯為“無(wú)限帶寬”技術(shù)芒划,縮寫(xiě)為IB)是一個(gè)用于高性能計(jì)算的計(jì)算機(jī)網(wǎng)絡(luò)通信標(biāo)準(zhǔn),它具有極高的吞吐量和極低的延遲欧穴,用于計(jì)算機(jī)與計(jì)算機(jī)之間的數(shù)據(jù)互連民逼。InfiniBand也用作服務(wù)器與存儲(chǔ)系統(tǒng)之間的直接或交換互連,以及存儲(chǔ)系統(tǒng)之間的互連涮帘。[1]
- Ethernet
以太網(wǎng)(英語(yǔ):Ethernet)是一種計(jì)算機(jī)局域網(wǎng)技術(shù)拼苍。IEEE組織的IEEE 802.3標(biāo)準(zhǔn)制定了以太網(wǎng)的技術(shù)標(biāo)準(zhǔn),它規(guī)定了包括物理層的連線调缨、電子信號(hào)和介質(zhì)訪問(wèn)層協(xié)議的內(nèi)容疮鲫。以太網(wǎng)是當(dāng)前應(yīng)用最普遍的局域網(wǎng)技術(shù),取代了其他局域網(wǎng)標(biāo)準(zhǔn)如令牌環(huán)弦叶、FDDI和ARCNET俊犯。
- Fibre Channel
網(wǎng)狀通道(Fibre Channel,簡(jiǎn)稱(chēng)FC)是一種高速網(wǎng)絡(luò)互聯(lián)技術(shù)(通常的運(yùn)行速率有2Gbps湾蔓、4Gbps瘫析、8Gbps和16Gbps),主要用于連接計(jì)算機(jī)存儲(chǔ)設(shè)備默责。
以太網(wǎng)設(shè)計(jì)的初衷是為了實(shí)現(xiàn)不同系統(tǒng)的互聯(lián)贬循,是一種network,優(yōu)先考慮交融性與分布式桃序;IB主要解決的問(wèn)題是在一個(gè)系統(tǒng)內(nèi)部把多個(gè)設(shè)備整合起來(lái)杖虾,像一臺(tái)設(shè)備一樣工作,優(yōu)先考慮的是高速與低延遲媒熊。
RDMA的三種實(shí)現(xiàn)
目前奇适,大致有三類(lèi)RDMA網(wǎng)絡(luò)坟比,分別是Infiniband、RoCE嚷往、iWARP葛账。其中,Infiniband是一種專(zhuān)為RDMA設(shè)計(jì)的網(wǎng)絡(luò)皮仁,從硬件級(jí)別保證可靠傳輸 籍琳, 而RoCE 和 iWARP都是基于以太網(wǎng)的RDMA技術(shù),支持相應(yīng)的verbs接口贷祈。
從圖中不難發(fā)現(xiàn)趋急,RoCE協(xié)議存在RoCEv1和RoCEv2兩個(gè)版本,主要區(qū)別RoCEv1是基于以太網(wǎng)鏈路層實(shí)現(xiàn)的RDMA協(xié)議(交換機(jī)需要支持PFC等流控技術(shù)势誊,在物理層保證可靠傳輸)呜达,而RoCEv2是以太網(wǎng)TCP/IP協(xié)議中UDP層實(shí)現(xiàn)。從性能上粟耻,很明顯Infiniband網(wǎng)絡(luò)最好查近,但網(wǎng)卡和交換機(jī)是價(jià)格也很高,然而RoCEv2和iWARP僅需使用特殊的網(wǎng)卡就可以了勋颖,價(jià)格也相對(duì)便宜很多嗦嗡。
RDMA這種技術(shù)以前只能運(yùn)行在IB網(wǎng)絡(luò)下,為了將這種技術(shù)用在以太網(wǎng)環(huán)境下饭玲,就逐步發(fā)展出了RoCE/iWarp兩種協(xié)議侥祭。
- RoCE目前主要是由Mellonax主導(dǎo),和TCP協(xié)議無(wú)關(guān)茄厘,性能更好矮冬。
- iWarp主要由Chelsio主導(dǎo),下層會(huì)依賴(lài)TCP協(xié)議次哈,性能和可擴(kuò)性行都差一些胎署,優(yōu)點(diǎn)是考慮了對(duì)廣域網(wǎng)的支持。
目前來(lái)看RoCE比iWarp前景更好窑滞,實(shí)際使用也更廣泛琼牧。
RDMA vs DPDK
DPDK是Intel主導(dǎo),提供了基于用戶(hù)態(tài)的數(shù)據(jù)鏈路層的功能哀卫,可以在上面構(gòu)建出基于用戶(hù)態(tài)的網(wǎng)絡(luò)棧巨坊。
- 核心共同點(diǎn):二者均為kernel bypass技術(shù),消除內(nèi)核態(tài)到用戶(hù)態(tài)的內(nèi)存拷貝此改。
- 核心差異點(diǎn):DPDK將協(xié)議棧上移到用戶(hù)態(tài)趾撵,RDMA將協(xié)議棧下沉到網(wǎng)卡硬件。
更多細(xì)致的差異對(duì)比共啃,可以參考此文
發(fā)展出DPDK/RDMA以及多種實(shí)現(xiàn)占调,根本原因在于網(wǎng)絡(luò)硬件發(fā)展很快暂题,而占據(jù)主導(dǎo)的TCP協(xié)議當(dāng)初是為了低速網(wǎng)絡(luò)環(huán)境設(shè)計(jì)的。
Kubernetes with RDMA Network
三種主要容器網(wǎng)絡(luò)模式
- Virtual bridge
- Multiplexing
-
Hardware switching
img
RDMA設(shè)備與k8s集成
要在Kubernetes中使用rdma設(shè)備究珊,首先是通過(guò)device plugin插件機(jī)制薪者,讓k8s能夠識(shí)別和使用rdma設(shè)備。其次苦银,rdma網(wǎng)卡基本上都支持SR-IOV技術(shù)啸胧,利用基于該技術(shù)的Kubernetes CNI插件赶站,可以構(gòu)建出完整的容器網(wǎng)絡(luò)幔虏。
當(dāng)前支持RDMA的網(wǎng)卡主要是intel與mellanox兩個(gè)廠家,各自均提供有對(duì)應(yīng)k8s device plugin與SR-IOV網(wǎng)絡(luò)cni插件贝椿。
- intel
https://github.com/intel/sriov-network-device-plugin
https://github.com/intel/sriov-cni
- mellanox
https://github.com/Mellanox/k8s-rdma-sriov-dev-plugin
https://github.com/Mellanox/sriov-cni
pod多網(wǎng)絡(luò)
在HPC場(chǎng)景下想括,pod之間除了高性能網(wǎng)絡(luò)之外,也可以有額外的網(wǎng)絡(luò)烙博,由此引入pod多網(wǎng)卡訴求瑟蜈,intel提供了一種解決方案multus(https://github.com/intel/multus-cni),該插件主要通過(guò)代理其它c(diǎn)ni插件以實(shí)現(xiàn)渣窜,遵循k8s多網(wǎng)卡規(guī)范(https://github.com/K8sNetworkPlumbingWG/multi-net-spec)铺根。
利用multus插件,結(jié)合常規(guī)cni插件與SR-IOV cni插件乔宿,即可實(shí)現(xiàn)下圖所示的pod網(wǎng)絡(luò)