黃米青
摘要:面對高性能計算、大數(shù)據(jù)分析和浪涌型IO高并發(fā)、低時延(集中式網(wǎng)盤)應(yīng)用,RDMA技術(shù)可以提供極低的延時和更高速的數(shù)據(jù)傳輸處理。RDMA技術(shù)要求的無損網(wǎng)絡(luò)通過在交換機上支持RoCE協(xié)議來實現(xiàn)。而RoCE協(xié)議中的PFC,ECN等水線設(shè)置可以通過靜態(tài)配置或者動態(tài)配置算法來實現(xiàn)低延時和無損傳輸,本文主要就這些水線參數(shù)的設(shè)置做理論推導分析,可以作為水線調(diào)參優(yōu)化的理論原則。
關(guān)鍵詞:RDMA;PFC;ECN
中圖分類號:TP393文獻標識碼:A
文章編號:1009-3044(2019)34-0050-03
1 概述
面對高性能計算、大數(shù)據(jù)分析和浪涌型IO高并發(fā)、低時延(集中式網(wǎng)盤)應(yīng)用,現(xiàn)有TCP/IP軟硬件架構(gòu)和應(yīng)用高CPU消耗的技術(shù)特征根本不能滿足應(yīng)用的需求。RDMA是一種遠端內(nèi)存直接訪問技術(shù)。RDMA最早專屬于Infiniband架構(gòu),隨著在網(wǎng)絡(luò)融合大趨勢下出現(xiàn)的RoCE和iWARP,這使高速、超低延時、極低CPU使用率的RDMA得以部署在目前使用最廣泛的以太網(wǎng)上。
基于InfiniBand的RDMA是在2000年發(fā)布規(guī)范,屬于原生RDMA。
基于TCP/IP的RDMA稱作iWARP,在2007年形成標準,主要包括MPA/DDP/RDMAP三層子協(xié)議。
基于Ethernet的RDMA叫作RoCE,在2010年發(fā)布協(xié)議,基于增強型以太網(wǎng)并將傳輸層換成IB傳輸層實現(xiàn)。RoCE(當前已發(fā)展到RoCEv2版本)是基于無連接協(xié)議的UDP協(xié)議,相比面向連接的TCP協(xié)議,UDP協(xié)議更加快速、占用CPU資源更少,但其不像TCP協(xié)議那樣有滑動窗口、確認應(yīng)答等機制來實現(xiàn)可靠傳輸,一旦出現(xiàn)丟包,RoCEv2需要依靠上層應(yīng)用檢查到了再做重傳,會大大降低RDMA的傳輸效率。
基于RDMA的要求,數(shù)據(jù)中心交換機要求具備如下特性:
1)零丟包,不造成重傳時延,保證分布式高性能應(yīng)用的高效穩(wěn)定。通過PFC和ECN水線設(shè)置實現(xiàn)零丟包特性。
2)低時延,特別是網(wǎng)絡(luò)中的動態(tài)時延包括內(nèi)部排隊時延和丟包重傳時延,這部分延時占了網(wǎng)絡(luò)整體時延的99%
3)高吞吐,滿足高性能服務(wù)器對帶寬的需求,減少報文排隊,確保分布式高性能應(yīng)用中大數(shù)據(jù)傳輸?shù)耐掏?。當前?shù)據(jù)中心交換機為了支持高性能服務(wù)器,帶寬已經(jīng)演進到25G/100G,未來1-2年內(nèi)還會繼續(xù)演進到50G/200G/400G。
2 RDMA應(yīng)用擬合模型
數(shù)據(jù)中心流行的CLOS網(wǎng)絡(luò)架構(gòu):Spine+Leaf網(wǎng)絡(luò)架構(gòu)。CLOS網(wǎng)絡(luò)通過等價多路徑實現(xiàn)無阻塞性和彈性,交換機之間采用三級網(wǎng)絡(luò)使其具有可擴展、簡單、標準和易于理解等優(yōu)點。除了支持Overlav層面技術(shù)之外,Spine+Leaf網(wǎng)絡(luò)架構(gòu)的另一個好處就是,它提供了更為可靠的組網(wǎng)連接,因為Spine層面與Leaf層面是全交叉連接,任一層中的單交換機故障都不會影響整個網(wǎng)絡(luò)結(jié)構(gòu)。這種架構(gòu)下不可避免會出現(xiàn)多打一的情況,而這造成網(wǎng)絡(luò)丟包最大的原因。而解決這種情況下的網(wǎng)絡(luò)丟包主要就是在交換機上實現(xiàn)PFC和ECN相關(guān)水線的合理配置。
PFC是DCB的一部分,它適用于DCB網(wǎng)絡(luò)中的全雙工的點到點鏈路。PFC是對IEEE 802.3定義的流控機制的增強,用于在一個鏈路上消除由于擁塞而導致的丟包。它的增強在于它是基于優(yōu)先級的。傳統(tǒng)的流控機制中,當某條鏈路出現(xiàn)擁塞時流控會阻止該鏈路上的所有流量。交換機的MMU水線主要有PG Guaranteed,PG Dymanic Pool(可通過α動態(tài)分配每個端口的水線),headroom值,其中headroom的就是在多打一的流量模型下,入口出現(xiàn)擁塞后為無損隊列設(shè)置的緩存空間,當緩存使用超過其中的headroom水線后,就會出現(xiàn)丟包。
RoCEv2定義了RoCEv2 Congestion Management (RCM),其中擁塞管理用的特性ECN(RFC 3168)是在交換機出口(egressport)發(fā)起的擁塞控制機制。當交換機的出口buffer達到設(shè)定的閾值(ECN門限)時,交換機會改變數(shù)據(jù)包頭中的ECN位來給數(shù)據(jù)打上ECN標簽,當帶ECN標簽的數(shù)據(jù)到達接收端以后,接收端會生成CNP(Congestion Notification Packet)并將它發(fā)送給發(fā)送端,CNP包含了導致?lián)砣膄low或QP的信息,當接收端收到CNP后,會采取措施降低發(fā)送速度??梢奅CN是基于TCP flow或RDMA QP的擁塞控制機制,它只對導致?lián)砣膄low或QP起作用,不會影響到其他的應(yīng)用,交換機的ECN水線主要是Queue Dynamic Pool(可通過α動態(tài)分配每個出口隊列的水線)。
網(wǎng)絡(luò)無損主要就是在使能ECN或者PFC的相關(guān)MMU水線通過合理配置,由于PFC有死鎖和風暴問題,因此在端口擁塞狀態(tài)下,在確保不丟包的情況下,ECN機制要先于PFC機制產(chǎn)生,需要合理設(shè)置ECN門限,使得ECN門限和PFC門限之間的緩存空間能夠容納ECN擁塞標記之后到源端降速之前這段時間發(fā)送過來的流量,盡可能地避免觸發(fā)網(wǎng)絡(luò)PFC流控。
以下是在多打一,多打多流并發(fā)模型下,推導下這幾個水線值應(yīng)該滿足哪些條件可以實現(xiàn)網(wǎng)絡(luò)無損傳輸。
2.1 Headroom水線配置
主要用于緩存設(shè)備觸發(fā)PFC,到PFC實際生效這段延時期間仍在發(fā)送的報文流量,影響的幾個因素主要有:
接收端設(shè)備觸發(fā)PFC流控是光纖線路上殘留的報文流量,和線路傳輸延時相關(guān),記為tl;
接收端設(shè)備觸發(fā)PFC生成PFC報文并準備發(fā)送的處理時間t2;
接收端設(shè)備發(fā)送PFC報文前等待未發(fā)送完成報文完成傳輸?shù)难訒rt3,延時和報文長度有關(guān),最大為出口mtu;