來源:太平洋電腦網
看也許大家會問為什么我們需要RDMA?為什么我們需要無損網絡?這些先進的技術究竟能給我們帶來什么好處?
只從網絡層面來看可能無法得出令人滿意的答案,下面分別從前端業(yè)務和后端應用,簡單列舉幾個例子,相信大家可以從中解開疑惑。
首先想說的是互聯(lián)網中大量的在線業(yè)務,例如在線搜索、購物、直播等,它需要以非常快的速度對高頻率的用戶請求做出應答,數(shù)據(jù)中心內任何一個環(huán)節(jié)導致延遲,都會對終端用戶的訪問體驗造成極大的影響,從而影響其流量、口碑、活躍用戶等。
還有在機器學習和AI的技術趨勢下,對計算能力的需求是呈幾何級數(shù)上升的,為了滿足日益復雜的神經網絡和深度學習模型,數(shù)據(jù)中心會存在大量的分布式計算集群,但大量并行程序的通訊延遲,則會極大影響整個計算過程的效率。
另外為了解決數(shù)據(jù)中心內爆炸式增長的數(shù)據(jù)存儲和讀取效率問題,利用以太網融合組網的分布式存儲越來越受到歡迎。但因為存儲網絡中數(shù)據(jù)流以大象流為主,所以一旦因擁塞造成丟包,將會引發(fā)大象流重傳,不僅降低效率,還會加重擁塞。
所以從前端用戶的體驗和后端應用的效率來看,眼下對于數(shù)據(jù)中心網絡的要求是:延遲越低越好,效率越高越好。
為了降低數(shù)據(jù)中心內部網絡延遲,提高處理效率,RDMA技術應運而生,通過允許用戶態(tài)的應用程序直接讀取和寫入遠程內存,而無需CPU介入多次拷貝內存,并可繞過內核直接向網卡寫數(shù)據(jù),實現(xiàn)了高吞吐量、超低時延和低CPU開銷的效果。
當前RDMA在以太網上的傳輸協(xié)議是RoCEv2,RoCEv2是基于無連接協(xié)議的UDP協(xié)議,相比面向連接的TCP協(xié)議,UDP協(xié)議更加快速、占用CPU資源更少,但其不像TCP協(xié)議那樣有滑動窗口、確認應答等機制來實現(xiàn)可靠傳輸,一旦出現(xiàn)丟包,依靠上層應用檢查到了再做重傳,會大大降低RDMA的傳輸效率。
所以要想發(fā)揮出RDMA真正的性能,突破數(shù)據(jù)中心大規(guī)模分布式系統(tǒng)的網絡性能瓶頸,勢必要為RDMA搭建一套不丟包的無損網絡環(huán)境,而實現(xiàn)不丟包的關鍵就是解決網絡擁塞。
一、為什么會產生擁塞
產生擁塞的原因有很多,下面列舉了在數(shù)據(jù)中心場景里比較關鍵也是比較常見的三點原因:
1.收斂比
進行數(shù)據(jù)中心網絡架構設計時,從成本和收益兩方面來考慮,多數(shù)會采取非對稱帶寬設計,即上下行鏈路帶寬不一致,交換機的收斂比簡單說就是總的輸入帶寬除以總的輸出帶寬。以銳捷萬兆交換機RG-S6220-48XS6QXS-H為例,下行可供服務器輸入的帶寬是48*10G=480G,上行輸出的帶寬是6*40G=240G,整機收斂比為2:1。而25G交換機RG-S6510-48VS8CQ,下行可供服務器輸入的帶寬是48*25G=1200G,上行輸出的帶寬是8*100G=800G,整機收斂比是1.5:1。
也就是說,當下聯(lián)的服務器上行發(fā)包總速率超過上行鏈路總帶寬時,就會在上行口出現(xiàn)擁塞。
2.ECMP
當前數(shù)據(jù)中心網絡多采用Fabric架構,并采用ECMP來構建多條等價負載均衡的鏈路,通過設置擾動因子并HASH選擇一條鏈路來轉發(fā)是簡單的,但這個過程中卻沒有考慮到所選鏈路本身是否有擁塞。ECMP并沒有擁塞感知的機制,只是將流分散到不同的鏈路上轉發(fā),對于已經產生擁塞的鏈路來說,很可能加劇鏈路的擁塞。
3.TCP Incast
TCP Incast是Many-to-One的通信模式,在數(shù)據(jù)中心云化的大趨勢下這種通信模式常常發(fā)生,尤其是那些以Scale-Out方式實現(xiàn)的分布式存儲和計算應用,包括Hadoop、MapReduce、HDFS等。
例如,當一個Parent Server向一組節(jié)點(服務器集群或存儲集群)發(fā)起一個請求時,集群中的節(jié)點都會同時收到該請求,并且?guī)缀跬瑫r做出響應,很多節(jié)點同時向一臺機器(Parent Server)發(fā)送TCP數(shù)據(jù)流,從而產生了一個“微突發(fā)流”,使得交換機上連接Parent Server的出端口緩存不足,造成擁塞。
TCP Incast流量模型
正如前面所說,RDMA和TCP不同,它需要一個無損網絡。對于普通的微突發(fā)流量,交換機的Buffer緩沖區(qū)可以起到一定作用,在緩沖區(qū)將突發(fā)的報文進行列隊等待,但由于增加交換機Buffer容量的成本非常高,所以它所能起到的作用是有限的,一旦緩沖區(qū)列隊的報文過多,仍舊會產生丟包。
為了實現(xiàn)端到端的無損轉發(fā),避免因為交換機中的Buffer緩沖區(qū)溢出而引發(fā)的數(shù)據(jù)包丟失,交換機必須引入其他機制,如流量控制,通過對鏈路上流量的控制,減少對交換機Buffer的壓力,來規(guī)避丟包的產生。
二、PFC如何實現(xiàn)流控
IEEE 802.1Qbb(Priority-based Flow Control,基于優(yōu)先級的流量控制)簡稱PFC,是IEEE數(shù)據(jù)中心橋接(Data Center Bridge)協(xié)議族中的一個技術,是流量控制的增強版。