一文讀懂無損網絡
根據OpenAI的數據分析,自2012年起,最新的AI模型訓練所需要的計算量每3-4個月就要翻一倍。在過去5年,GPU算力增長了近90倍,而網絡帶寬僅增長了10倍。隨著AI訓練集群規模的增大,以及單節點算力的增長,AI訓練逐漸從計算約束轉換為網絡通信約束。
另一方面,存儲介質SSD(固態硬盤)的訪問性能相比于分布式存儲HDD(機械硬盤)已經提升了100倍,采用NVMe接口協議的SSD,訪問性能可以提升10000倍。網絡時延占比已經從原來小于5%提升到65%。網絡時延也已經成為影響存儲效率的重要因素。
傳統TCP/IP協議在接收/發送報文時,內核需要做多次上下文切換,每次切換需要耗費5us-10us左右,需要至少三次的數據拷貝,需要耗費算力進行協議封裝。RDMA網絡相比TCP提供更高的單流通信帶寬。RDMA網絡的內核旁路和內存零拷貝特性,大大縮短了協議棧的通信處理時延以及數據搬移時延。RDMA允許用戶態的應用程序直接讀取和寫入遠程內存,無需CPU接入多次拷貝內存,并可繞過內核直接向網卡寫數據,實現了高吞吐量、超低時延和低CPU開銷。
最新版的RDMA協議RoCEv2 運行在UDP上,沒有滑動窗口、確認應答等機制,一旦丟包,需要依靠上層應用檢查并重傳,這大大降低了RDMA傳輸效率。當網絡的丟包率>10-3時,將導致RDMA有效吞吐急劇下降;2%的丟包將使RDMA吞吐率下降為0。要使得RDMA吞吐不受影響,丟包率必須保證在十萬分之一以下,最好為無丟包。總而言之,RDMA的高效率依賴于無損網絡。
網絡擁塞原因
要實現無損網絡,實際上就是要解決網絡上的擁塞問題。
造成網絡擁塞主要有如下原因:
1)上下行非對稱設計。網絡設計通常采用非對稱的方式,上下行鏈路帶寬不一致(收斂比)。以交換機為例,當下聯的服務器上行發包總速率超過上行鏈路總帶寬時,上行口就會出現擁塞。
2)ECMP。數據中心多采用Fabric架構,并采用ECMP來構建多條等價負載均衡的鏈路,通過設置HASH因子并HASH選擇一條鏈路來轉發,該過程沒有考慮所選鏈路本身是否有擁塞,所選擇的鏈路流量飽和時,就會發生網絡擁塞。
3)TCP Incast。當服務器向一組節點發起請求時,集群中的節點會同時收到該請求,并且幾乎同時做出響應,從而產生了“微突發流”,如果交換機上連接服務器的出端口緩存不足就會造成擁塞。
無損網絡的特征
“0丟包”、“低時延”、“高吞吐”是無損網絡三大核心特征。
這三個指標相互影響:
- 0丟包:會抑制鏈路帶寬,導致低吞吐,同時會增加大流的傳輸時延;
- 低時延:降低交換機隊列排隊,導致低吞吐;
- 高吞吐:保持鏈路高利用率,導致交換機的擁塞排隊,導致小流的“高時延”。
構建無損網絡可以從兩個方面入手,一個是網絡自身的優化,另一個是網絡與應用系統的融合優化。后者包括網算一體、網絡與存儲相融合等等,不在此文范圍內。本文側重前一個方面。
網絡自身的優化目標是使整網吞吐最高、時延最低,包括三個層次:
1)流的控制(Flow control):用于解決發送端與接收端速率匹配,做到無丟包;
2)擁塞控制(Congestion control):用于解決網絡擁塞時對流量的速率控制問題,做到滿吞吐與低時延;
3)流量調度(Traffic scheduling):用于解決業務流量與網絡鏈路的負載均衡問題,做到不同業務流量的服務質量保障。
無損網絡的流控技術
流控技術是保障網絡零丟包的基礎技術。由流量接收方控制數據傳輸的速率。
IEEE802.3 Annex 318 約定的PAUSE幀是以太網中實現流控的基本協議。當接收設備接收能力小于上游設備時,會主動發PAUSE幀給上游設備,要求上游設備在一段時間內暫停流量的發送。PAUSE幀只能阻止上游設備發送普通的數據幀,不能阻止發送MAC控制幀。
PAUSE幀的目的MAC地址是保留的MAC地址0180-C200-0001,源MAC是發送PAUSE幀的設備MAC地址。MAC Control Opcode域的值為0x0001。PAUSE幀是MAC控制幀的一種。接收端設備出現擁塞的情況下,本段源端口通常會連續收到多個PAUSE幀。只要接收端設備的擁塞狀態沒有解除,相關的端口就會一直發送PAUSE。基于以太PAUSE機制的流控雖然可以預防丟包,但是會導致一條鏈路上的所有報文停止發送。為了解決這個問題,IEEE在802.1qbb中引入了優先級流控功能PFC(基于優先級的流量控制)也稱Per Priority Pause或CBFC(Class Based Flow Control)
PFC允許在一條以太鏈路上創建8個虛擬通道,并為每一個虛擬通道指定優先級,允許單獨暫停和重啟其中任意一條虛擬通道,同時允許其他虛擬通道的流量無中斷通過。當隊列已使用的緩存降低到PFC門限值以下時,則向上游發送PFC反壓停止報文,通知上游重新發包,從而最終實現報文的零丟包傳輸。
無損網絡的擁塞控制
擁塞控制是對進入網絡的數據總量進行控制,使網絡流量保持在可接受水平的一種控制方法。
ECN(Explicit Congestion Notification)技術:當流量接收端感知到網絡上的擁塞后,通過協議報文通知發送端,使流量發送端降低報文發送速率,從而從早期避免擁塞而導致的丟包,從而最大限度利用網絡性能。
DCQCN(Data Center Quantized Congestion Notification):目前在RoCEv2網絡種使用最廣泛的擁塞控制算法。融合了QCN算法和DCTCP算法,需要數據中心交換機支持WRED和ECN。DCQCN可以提供較好的公平性,實現高帶寬利用率,保證低的隊列緩存占用率和較少的隊列緩存抖動情況。
DCQCN算法由三個部分組成:交換機(CP,Congestion Point)、接收端提示點NP(Notification Point)、發送端反饋點RP(Reaction Point)。交換機發現出端口隊列超出閾值,在轉發報文時會按照一定概率給報文攜帶ECN擁塞標記(ECN字段設置為11),以標示網絡中存在的擁塞。標記過程由WRED(Weighted Random Early Detection)功能完成。RP根據收到的ECN擁塞標記向RP發送反壓信息。
圖1:DCQCN算法示意圖
ECN overlay:ECN Overlay將ECN(Explicit Congestion Notification)功能應用到VXLAN中,Overlay網絡擁塞可以被及時感知,讓流量接收端通知發送端進行降速,緩解網絡擁塞。
iQCN(intelligent Quantized Congestion Notification):通過讓轉發設備智能補償發送CNP通知報文,解決流量發送端網絡未及時收到CNP報文而迅速升速帶來的網絡擁塞加劇的問題。具備iQCN功能的CP(Congestion Point)對收到的CNP報文進行記錄,維護包含CNP報文信息和時間戳的流表。CP會對本設備的端口擁塞程度進行持續監測,端口擁塞較為嚴重時,比較CNP報文的時間間隔與網卡升速時間:若發現從NP收到的CNP報文的時間間隔小于RP的網卡升速時間,判斷網卡可以正常降速,CP正常轉發CNP報文;若發現從NP收到CNP報文的時間間隔大于RP的網卡升速時間,判斷網卡不能及時降速且存在升速風險,CP將會主動補償發送CNP報文。
無損網絡的流量調度技術
流量調度技術指的是網絡節點在轉發流量時,將負載(流量)分攤到多條鏈路上進行轉發。網絡中常用的負載分擔機制包括等價多路徑路由ECMP和鏈路聚合LAG。
ECMP(Equal-Cost Multi-Path routing)負載分擔:實現了等價多路徑負載均衡和鏈路備份的目的。ECMP應用于多條鏈路到達同一目的地址的網絡環境中,當多條路由優先級和度量都相同時,可以實現負載分擔;當多條路由優先級和度量不相同時,可以實現路由備份。后者,發往目的地址的數據包只能利用其中的一條鏈路,其他鏈路處于備份狀態或無效狀態,并且在動態路由環境下切換需要一定時間。ECMP負載分擔時,路由器將數據包的五元組(源地址、目的地址、源端口、目的端口、協議)作為哈希因子,通過HASH算法生成HASH-KEY,在負載分擔鏈路中選取一條成員鏈路對數據包進行轉發。正常情況下,路由器采用主路由轉發數據。當主鏈路出現故障時,主路由變為非激活狀態,路由器選擇備份路由中優先級最高的路由轉發數據。當主鏈路恢復正常時,由于主路由的優先級最高,路由器重新選擇主路由來發送數據。
LAG(Link Aggregation Group)負載分擔:將多個物理接口捆綁為一個邏輯接口,達到增加鏈路帶寬的目的。這個邏輯接口稱為聚合接口或Eth-Trunk接口。在使用Eth-Trunk轉發數據時,由于聚合組兩端設備之間有多條物理鏈路,有可能產生同一數據流的第一個數據幀在一條物理鏈路上傳輸,第二個數據幀在另外一條物理鏈路上傳輸,有可能產生數據包亂序的情況。通過采用逐流負載分擔的機制,將數據幀中的地址通過HASH算法生成HASH-KEY值,關聯Eth-Trunk轉發表中對應的出接口,不同的MAC或IP地址HASH得出的HASH-KEY不同,出接口也不同,保證了同一數據流的幀在同一條陸離鏈路轉發,又實現了流量在聚合組內各物理鏈路上的負載分擔。
小 結
RDMA的高效運行依賴于無損網絡。“0丟包”、“低時延”、“高吞吐”是無損網絡三大核心特征。流量控制、擁塞控制、流量調度是無損網絡的三大核心技術。通過無損網絡的建設,算力、網絡、存儲才能相互匹配,協同發揮更大的作用。