RDMA(遠程直接數據存取),以其對業務帶來的高性能、低延時優勢,在數據中心尤其是AI、HPC、大數據等場景得到了廣泛應用。為保障RDMA的穩定運行,基礎網絡需要提供端到端無損零丟包及超低延時的能力,這也催生了PFC、ECN等網絡流控技術在RDMA網絡中的部署。在RDMA網絡中,如何合理設置MMU(緩存管理單元)水線是保證RDMA網絡無損和低延時的關鍵。本文將以RDMA網絡作為切入點,結合實際部署經驗,分析MMU水線設置的一些思路。
什么是RDMA?
RDMA(Remote Direct Memory Access),通俗的說就是遠程的DMA技術,是為了解決網絡傳輸中服務器端數據處理的延遲而產生的。
▲ 傳統模式與RDMA模式工作機制對比
如上圖,在傳統模式下,兩臺服務器上的應用之間傳輸數據,過程是這樣的:
● 首先要把數據從應用緩存拷貝到Kernel中的TCP協議棧緩存;
● 然后再拷貝到驅動層;
● 最后拷貝到網卡緩存。
多次內存拷貝需要CPU多次介入,導致處理延時大,達到數十微秒。同時整個過程中CPU過多參與,大量消耗CPU性能,影響正常的數據計算。
在RDMA 模式下,應用數據可以繞過Kernel協議棧直接向網卡寫數據,帶來的顯著好處有:
● 處理延時由數十微秒降低到1微秒內;
● 整個過程幾乎不需要CPU參與,節省性能;
● 傳輸帶寬更高。
RDMA對于網絡的訴求
RDMA在高性能計算、大數據分析、IO高并發等場景中應用越來越廣泛。諸如iSICI, SAN, Ceph, MPI, Hadoop, Spark, Tensorflow等應用軟件都開始部署RDMA技術。而對于支撐端到端傳輸的基礎網絡而言,低延時(微秒級)、無損(lossless)則是最重要的指標。
低延時
網絡轉發延時主要產生在設備節點(這里忽略了光電傳輸延時和數據串行延時),設備轉發延時包括以下三部分:
● 存儲轉發延時:芯片轉發流水線處理延遲,每個hop會產生1微秒左右的芯片處理延時(業界也有嘗試使用cut-through模式,單跳延遲可以降低到0.3微秒左右);
● Buffer緩存延時:當網絡擁塞時,報文會被緩存起來等待轉發。這時Buffer越大,緩存報文的時間就越長,產生的時延也會更高。對于RDMA網絡,Buffer并不是越大越好,需要合理選擇;
● 重傳延時:在RDMA網絡里會有其他技術保證不丟包,這部分不做分析。
無損
RDMA在無損狀態下可以滿速率傳輸,而一旦發生丟包重傳,性能會急劇下降。在傳統網絡模式下,要想實現不丟包最主要的手段就是依賴大緩存,但如前文所說,這又與低延時矛盾了。因此,在RDMA網絡環境中,需要實現的是較小Buffer下的不丟包。
在這個限制條件下,RDMA實現無損主要是依賴基于PFC和ECN的網絡流控技術。
PFC
PFC(Priority-based Flow Control),基于優先級的流量控制。是一種基于隊列的反壓機制,通過發送Pause幀通知上游設備暫停發包來防止緩存溢出丟包。
▲ PFC工作機制示意圖
PFC允許單獨暫停和重啟其中任意一條虛擬通道,同時不影響其它虛擬通道的流量。如上圖所示,當隊列7的Buffer消耗達到設置的PFC流控水線,會觸發PFC的反壓:
● 本端交換機觸發發出PFC Pause幀,并反向發送給上游設備;
● 收到Pause幀的上游設備會暫停該隊列報文的發送,同時將報文緩存在Buffer中;
● 如果上游設備的Buffer也達到閾值,會繼續觸發Pause幀向上游反壓;
● 最終通過降低該優先級隊列的發送速率來避免數據丟包;
● 當Buffer占用降低到恢復水線時,會發送PFC解除報文。
RDMA無損網絡的關鍵技術:ECN
ECN(Explicit Congestion Notification):顯示擁塞通知。ECN是一個非常古老的技術,只是之前使用的并不普遍,該協議機制作用于主機與主機之間。
ECN是報文在網絡設備出口(Egress port)發生擁塞并觸發ECN水線時,使用IP報文頭的ECN字段標記數據包,表明該報文遇到網絡擁塞。一旦接收服務器發現報文的ECN被標記,立刻產生CNP(擁塞通知報文),并將它發送給源端服務器,CNP消息里包含了導致擁塞的Flow信息。源端服務器收到后,通過降低相應流發送速率,緩解網絡設備擁塞,從而避免發生丟包。
評論