Microsoft--sigcomm'15
核心思想:避免RDMA網(wǎng)絡(luò)中的丟包,替代PFC流控方案,建立流模型調(diào)節(jié)交換機(jī)緩存閾值(用于標(biāo)記ECN)
簡介:
高帶寬(40Gbps+)、低時延(10us- per hop)的數(shù)據(jù)中心網(wǎng)絡(luò)需求。TCP/IP協(xié)議棧的運(yùn)行模式需要大量的CPU開銷,時延也相當(dāng)高。RDMA將網(wǎng)絡(luò)協(xié)議棧實現(xiàn)在網(wǎng)卡(NIC)上,通過Bypass的方式降低CPU開銷,直接與對端內(nèi)存進(jìn)行交互。關(guān)鍵問題是如何為RDMA網(wǎng)絡(luò)營造一個無損環(huán)境,如何在網(wǎng)卡上設(shè)計和實現(xiàn)擁塞控制協(xié)議避免丟包。
最初RDMA是部署在IB網(wǎng)絡(luò)中的,IB網(wǎng)絡(luò)的L2鏈路層使用逐跳、基于身份令牌的流控機(jī)制避免由于緩存溢出引發(fā)的丟包。所以L4傳輸層設(shè)計就相對簡單,效率很高。但I(xiàn)B網(wǎng)絡(luò)與數(shù)據(jù)中心中已有的以太網(wǎng)絡(luò)不兼容,DC中同時運(yùn)行兩種網(wǎng)絡(luò)的管理成本太高,于是基于Ethernet的RoCE(為了可路由)和基于UDP的RoCEv2(為了ECMP)產(chǎn)生了。若要達(dá)到與IB高效的性能,需保證RoCEv2運(yùn)行在無損網(wǎng)絡(luò)中,即不丟包。RoCE采用PFC粗粒度的流控機(jī)制,通過暫停發(fā)包的指令避免緩存溢出。PFC是基于端口(每個端口有8條虛擬優(yōu)先級鏈路)的,不能區(qū)分流,容易造成擁塞擴(kuò)散的現(xiàn)象,降低吞吐量。
所以,擁塞控制機(jī)制必須滿足這些條件:(1)運(yùn)行在數(shù)據(jù)中心三層路由網(wǎng)絡(luò)中,實現(xiàn)無損網(wǎng)絡(luò)(2)在終端主機(jī)上的CPU開銷足夠低(3)在非擁塞環(huán)境下快啟動。
目前已有方案:QCN不支持三層網(wǎng)絡(luò)。DCTCP和iWarp是慢啟動。DCTCP和TCP-Bolt是在軟件中實現(xiàn)的,CPU開銷很大。
DCQCN:只需要交換機(jī)支持RED和ECN即可。協(xié)議實現(xiàn)在網(wǎng)卡上。可以保證快速公平收斂,高帶寬利用率,低延遲。
conventional:常規(guī)的,慣例的
設(shè)計DCQCN的必要性:TCP/IP協(xié)議棧不能提供超低時延和超低CPU開銷;目前PFC方案的弊端;以及解決方案的弊端
(1)測量比較TCP與RDMA的吞吐量、時延和CPU利用率
方案:TCP:修改iperf,開啟LSO,RSS,使用16條線程,零拷貝操作? ? ? RDMA:使用自定義的工具測試IB read操作傳送數(shù)據(jù),一條線程占滿一條鏈路。
(2)PFC的限制和弊端
PFC:通過監(jiān)控ingress queue以及向上一跳發(fā)送PAUSE幀的方式避免交換機(jī)緩沖區(qū)和NIC緩沖區(qū)出現(xiàn)緩存溢出,從而避免丟包。
問題:PFC是針對端口和優(yōu)先級進(jìn)行流控的,不能識別流,會造成HOL問題,對單條流性能造成影響。不公平性。級聯(lián)性。
解決方案:添加8條優(yōu)先級。但隨著發(fā)送端數(shù)量的增多,網(wǎng)絡(luò)規(guī)模的擴(kuò)大,可擴(kuò)展性不高。并且處于同一優(yōu)先級的不同流仍會遭受HOL問題。
(3)PFC改進(jìn)方案的不足之處
改進(jìn)方案:使用流級擁塞控制機(jī)制。
QCN:二層流控機(jī)制。依據(jù)mac地址和流id確定某條流,根據(jù)排隊長度依概率判定是否擁塞,向發(fā)送該擁塞報文的源端發(fā)送擁塞通知。源端在周期內(nèi)若收到擁塞通知,則降低發(fā)送速率,否則增加發(fā)送速率。
問題:QCN是通過二層mac地址標(biāo)識流的,在IP網(wǎng)絡(luò)中不可行,mac地址會變,交換機(jī)不知道該向誰發(fā)送擁塞通知包。
解決方案:擴(kuò)展QCN支持三層流控。需要做的是修改NIC和交換機(jī)以支持用五元組標(biāo)識流。修改交換機(jī)需要修改ASIC芯片,周期長,可實現(xiàn)性低。
DCQCN算法
不改交換機(jī),在NIC上實現(xiàn),考慮CPU開銷。在性能方面上,要求公平帶寬分配的快速收斂,避免震蕩,維持短隊長,確保高鏈路利用率。
CP算法(Congestion Point):在交換機(jī)上。與DCTCP機(jī)制相同,利用RED功能依據(jù)隊列長度按照概率分布給數(shù)據(jù)包打上ECN標(biāo)簽。本方案中改進(jìn)了DCTCP的參數(shù)設(shè)置模型。
NP算法(Notification Point):在接收端。決定了在收到ECN包后什么時間和怎樣構(gòu)造CNP(congestion notification packet)的問題。在某一時間周期內(nèi),最多只發(fā)送一個CNP包。N=50us。
RP算法(Reaction Point):在發(fā)送端。當(dāng)收到CNP包時,怎么調(diào)節(jié)速率。當(dāng)收到CNP包后,依照equation 1 調(diào)節(jié);在連續(xù)K時間內(nèi),未收到CNP包,根據(jù)當(dāng)前計時器(每T個時間單元為1,保證快恢復(fù))和計數(shù)器(每B個字節(jié)為1)的值,按照equation 2 快速增加速率。

緩存區(qū)設(shè)置:Tflight,Tpfc,Tecn
需求:PFC的觸發(fā)要晚于ECN,早于緩存溢出,避免丟包和吞吐量下降
討論的前提:交換機(jī)為共享緩存模式,有32個全雙工的40Gbps端口,12MB的共享內(nèi)存,支持PFC的8條優(yōu)先級隊列
Tflight:用于存儲PAUSE包發(fā)送時和生效時到達(dá)的數(shù)據(jù)包的內(nèi)存大小。根據(jù)BDP,每個端口,每個優(yōu)先級所需要的內(nèi)存空間為22.4KB。
Tpfc:可理解為觸發(fā)PFC的ingress 隊列中可以占用的最大內(nèi)存區(qū)域。每個端口的每個優(yōu)先級隊列的Tpfc值要小于等于24.47KB。而觸發(fā)PFC的條件一定要比它小。當(dāng)隊列內(nèi)存占用降低到Tpfc減去兩個MTU的值時,會自動發(fā)送RESUME信號,恢復(fù)發(fā)包。
Tecn:觸發(fā)ECN標(biāo)記的最小egress queue占用的內(nèi)存空間。該值的設(shè)置一定要使ECN先于PFC觸發(fā)。最壞情況下,所有的egress queue的包都來自于同一條ingress queue,為保證ecn先于pfc觸發(fā),則Tecn應(yīng)小于0.85KB,小于一個MTU長度,不可行。這種想法過于靜態(tài),由于交換機(jī)內(nèi)緩存資源是共享的,所以Tpfc的設(shè)置應(yīng)取決于剩余的可用資源。如下公式:


DCQCN分析:建立流模型決定參數(shù)設(shè)置
建立了當(dāng)前速率,目標(biāo)速率,速率增長步長,速率調(diào)節(jié)參數(shù)α,等一系列參數(shù)。
實驗結(jié)果:搭建實驗床驗證流模型和參數(shù)設(shè)置的有效性
DCQCN是基于速率調(diào)整的擁塞控制方案,DCTCP、iWarp和TCP-Bolt都是基于窗口的擁塞控制算法。
下一步研究方向:將機(jī)器學(xué)習(xí)應(yīng)用到DCQCN算法中調(diào)節(jié)參數(shù)設(shè)置