? ? ? 可靠傳輸技術旨在通過多種方法確保數據包在傳輸過程中不會丟失或損壞,同時保證數據包按發送順序到達接收端,其要求在鏈路發生丟包或網絡發生擁塞等情況下能夠完全保證數據包的正確性同時盡可能地提高傳輸速率。RoCE v2協議實現可靠傳輸的技術手段共有三種,分別為:丟包重傳機制、流量控制及擁塞管理。接下來將就這三種技術手段進行詳細分析。
(1)丟包重傳機制
為了簡化設計同時降低成本,RoCE v2協議使用了后退N幀(go-back-N)重傳算法處理數據傳輸過程中產生的丟包。后退N幀重傳算法的工作流程如圖1所示。
圖1?后退N幀重傳算法工作流程圖
在RoCE v2協議數據包發送過程中,基礎傳輸報文頭(Base Transformation Head,BTH)中包含一個唯一包序列編號(Packet Serial Number,PSN),同時接收端也會為每條鏈路維護一個期望包序列編號(expect Packet Serial Number,ePSN),每當接收端接收到一個數據包,對比其包頭中的PSN與本地ePSN,來判斷鏈路上是否存在數據包丟失或數據包亂序等現象。如圖1所示,再一次傳輸過程中PSN為2的數據包丟失,當接收端在接收到PSN為3的數據包后感知到丟包,立即發送包含PSN為2的NACK包,當發送端收到該NACK包后,無論在這之前已經正常發送了多少數據包,都會從丟失的PSN開始重新發送數據。這樣的丟包重傳機制將導致在丟包率較高的網絡環境下,會反復重傳大量數據包,性能會隨著丟包率的提升急速下滑。這也就是為什么要求RoCE v2工作在二三層無損網絡下。
(2)流量控制及擁塞管理
為了保證二層網絡無損,需要進行嚴格的流量控制和擁塞管理。流量控制指通過調整發送端的發送速率,確保接收端能夠處理并接收所有數據包。RoCE v2使用了IEEE 802.11Qbb中提出的基于優先級的流量控制算法(PFC)。
在PFC算法中,將網絡接口分為八個虛擬通道,如圖2所示,每個網卡的邏輯端口被分為八個隊列并分別對應一條鏈路上八個不同優先級。在通信過程中,數據包將根據優先級被分配到八個虛擬隊列上。同時PFC算法為每一個優先級的隊列設置了相同或不同的ON/OFF閾值,當接收端某個隊列的緩沖區深度超過這些閾值時,意味著下游出口或程序可能出現擁塞。PFC會向上游相應的端口發送一個暫停幀,該暫停幀指向特定優先級的流量。當發送設備接收到該暫停幀后,它將在一段時間內停止通過該優先級的虛擬通道發送數據。
圖2 PFC算法對應八個虛擬通道示意圖
通過對上述過程的分析可以發現,在多交換機的大型數據中心中,某個交換機的入口流量大于出口流量,就會造成擁塞。此時,擁塞會逐步向更上游傳遞。同時,由于PFC流控機制的顆粒度是優先級通道,可能導致流量分配不公平等問題。為了解決這一問題,RoCE v2協議引入了擁塞控制算法,以緩解鏈路擁塞,而PFC算法則僅作為兜底機制,盡可能減少其被觸發的可能性。
目前RoCE v2協議使用較多的擁塞控制算法為基于顯式擁塞通知(ECN)的DCQCN擁塞控制算法。其工作流程如圖3所示。
圖3 DCQCN擁塞控制算法
在DCQCN工作流程中,發送端網卡被稱為響應單元(RP),接收端網卡被稱為通知單元(NP)。發送端網卡將每個發送的數據包IP首部中的ECN字段標記為2bit的10,表示支持ECN擁塞控制,此時當交換機的隊列超過某一閾值時,開始以一定的概率對到來的報文標記ECN字段為2bit的11。當接收端網卡接收到ECN字段為11的數據包后,發現網絡中存在擁塞,則會發送擁塞通知數據包(CNP)到發送端,此時發送端將進入降速及升速流程。
相關視頻感興趣者,請搜B站用戶名: 專注與守望
或鏈接:
https://space.bilibili.com/585132944/upload/video