[RoCE]網絡QoS總結


 1.什么是QoS

QoS是一種機制,它給一個網絡流賦予一個優先級,並且管理它的最低需求(guarantees),極限能力(limitations)和它相比其他網絡流的優先級服務。這是通過一個2/3階段的過程將用戶層的優先級映射到一個硬件層流量類(hardware Traffic Class)上實現的。流量類被賦予QoS屬性(緩存分配,流控制,排隊,調度,隨機早期檢測,顯式擁塞通知等等),並且不同的流按照這些對應的屬性被服務。

2.為什么RoCE網絡需要QoS

 RDMA最初設計用在運行高性能計算應用的infiniband網絡中。Infiniband網絡在協議規定上是無損網絡,不會產生丟包現象。高性能計算應用通常會針對網絡性能優化,因此擁有更友好的網絡流量。進而,高性能計算網絡對於QoS配置的需求也就更低。在另一方面,數據中心網絡面對的是任意變化的流量場景,不同的網絡流需要協調服務等級以提高網絡效率。這產生更高的QoS要求來解決不同的問題。

3.為了實現每個流有不同的優先級,硬件層如何對流量分類

在IP/Ethernet數據包頭部中,有兩種方式來對網絡包進行分類:

  • 使用VLAN頭部的PCP域
  • 使用IP頭部的DSCP域

4. 應用層如何對流量分類

為了滿足不同應用需要不同等級的網絡流服務,verbs接口和rdma_cm接口都向應用層提供了設置網絡流優先級的QoS屬性API。

類似於tcp/ip套接字中的setsockopt可以設置QoS參數。

5. 應用層對流量的分類是怎么映射到硬件層上的分類

通常是要經過一個兩階段或者三階段的過程來完成,但這在不同的庫接口(verbs和rdma_cm)以及不同版本的RoCE協議下也是不同的。

首先,針對不同協議來看:

  • RoCEv1:這個協議是將RDMA數據段封裝到以太網數據段內,再加上以太網的頭部,因此屬於二層數據包,為了對它進行分類的話,只能使用VLAN頭部中的PCP域來設置優先級值,因此還需要額外開啟VLAN功能。當開啟VLAN之后,在不同的庫中映射過程如下:
    • verbs:
      • 應用在創建QP時,對QP屬性中的SL(service level)字段進行設置優先級。
      • 在硬件驅動中,會自動將SL轉換成VLAN頭部中的PCP域代表的值UP,轉換方式:UP = SL & 7,該值只有8種可選值
      • 網絡流會根據UP值映射到對應的TC上
    • rdma_cm:
      • 應用通過rdma_set_option函數來設置ToS值,該值只有4種有效值:0,8,24,16,
      • 然后在內核中,將ToS轉換成sk_prio,該值也只有4種有效值:0,2,4,6,映射方式固定
      • 最后在硬件驅動中,將sk_prio轉換成UP,映射方式可以用戶自定義
      • 網絡流會根據UP值映射到對應的TC上
  • RoCEv2: 這個協議是將RDMA數據段先封裝到UDP數據段內,加上UDP頭部,再加上IP頭部,最后在加上以太網頭部,屬於三層數據包,為了對它進行分類的話,既可以使用以太網VLAN中的PCP域,也可以使用IP頭部的DSCP域。對於PCP域的映射過程和上面一致,下面僅解釋DSCP域的映射過程:
    • verbs:
      • 應用在創建QP時,對QP屬性中GRH中的traffic_class字段進行設置優先級。
      • 在硬件驅動中,IP頭部的ToS字段會直接被賦值為traffic_class,而DSCP只是ToS中的高6位,因此traffic_class到優先級的轉換是:traffic_class=有效優先級值 * 4
      • 最終根據DSCP值到TC的映射表來將網絡流映射到對應的TC上
    • rdma_cm:
      • 應用通過rdma_set_optin函數來設置ToS值
      • 在硬件驅動中,根據設置的ToS到DSCP值的映射表,將ToS轉換成DSCP值
      • 最終根據DSCP值到TC的映射表來將網絡流映射到對應的TC上

6.映射完成之后硬件是怎么針對優先級對網絡流進行調度的 

根據應用對網絡流設置的優先級,最終將網絡流映射到不同的TC上,而這些TC可以人為配置調度策略,網卡根據不同的調度策略來從不同的TC中向鏈路上發送數據。

一個流量類(TC)可以被賦予不同的服務質量屬性,分別有:

  • 嚴格優先級(Strict Priority)
  • 最小帶寬保證(Enhanced Transmission Selection, ETS)
  • 速率限制(Rate Limit)

6.1 嚴格優先級

具有嚴格優先級的TC比其他非嚴格優先級的流具有更高的優先級,在同是嚴格優先級的TC中,數字越大優先級越高。網卡總是先服務高優先級TC,僅當最高優先級的TC沒有數據傳輸時才會去服務下一個最高優先級TC。使用嚴格優先級TC可以改善對於低延遲低帶寬的網絡流,但是不適合傳輸巨型數據,因為會使得系統中其他的傳輸者飢餓。

6.2 最小帶寬保證(Enhanced Transmission Selection增強傳輸選擇, ETS)

ETS利用提供給一個特定的流量類負載小於它的最小分配的帶寬時剩余的時間周期,將這個可用的剩余時間差提供給其它流量類。

服務完嚴格優先級的TCs之后,鏈路上剩余的帶寬會根據各自最小帶寬保證比例分配給其它的TC。

6.3 速率限制

速率限制對一個TC定義了一個最大帶寬值,這與ETS不同。

7.額外補充知識

管理sk_prio到UP映射的工具是:tc_wrap.py

管理UP到TC映射的工具是:mlnx_qos 

管理不同TC調度算法的工具是:mlnx_qos

在啟用不同的分類方式時需要對交換機和網卡設置trust mode值:pcp, dscp 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM