本文節選自《DetectingTroubleshooting, and PreventingCongestion in Storage Networks 存儲網絡中擁塞處理》
MAC Address Learning
學習連接到遠程VTEP 的設備的MAC 地址有兩種常見方法。第一種方法使用基于組播的泛洪學習機制。第二種方法使用多協議邊界網關協議(MPBGP)以太網VPN(EVPN)。無論VTEP 如何學習MAC 地址,數據路徑保持不變,因此擁塞管理也保持不變。
Lossless Traffic over VXLAN
VXLAN 可根據IP 標頭中的DSCP 字段對流量進行分類,并將其分配到無損隊列,從而傳輸無損流量。前面有關第3 層PFC 的章節詳細介紹了這一方案。
根據以太網CoS 字段對流量進行分類以實現第2 層PFC 的分類方案不足以通過VXLAN 傳輸無損流量,因為IEEE 802.1Q VLAN 標頭不會在VXLAN 隧道中保留,因此會丟失CoS 值。
VXLAN Encapsulation
如圖7-25 所示,入口VTEP 會將原始IP 報頭中的DSCP 值復制到VXLAN 封裝數據包的外部報頭中。對于沒有IP 報頭的第2 層幀,外部數據包的DSCP 字段來自表7-1 中說明的CoS 到DSCP 映射。
VXLAN Decapsulation
如圖7-25 所示,出口VTEP 會將外部VXLAN 數據包中的DSCP 值復制到解封裝報頭的IP 報頭中。這被稱為統一模式,是Cisco Nexus 9000 交換機的默認行為。如果需要,DSCP 字段值可以從內部IP 包頭復制到解封裝數據包。這稱為管道模式。
Figure 7-25DSCP and ECN values during VXLAN encapsulation and decapsulation
Congestion Notification over VXLAN
在入口VTEP,入口數據包的ECN 值被復制到VXLAN 封裝數據包的外部報頭。在出口VTEP,ECN 值總是從外部VXLAN 數據包復制到解封裝報頭的IP 報頭,而不管是統一模式還是管道模式。
Flow Control and Congestion Notification with VXLAN
對于VXLAN 來說,無損流量有兩個考慮因素。首先是實現無損網絡功能的逐跳流量控制(PFC)。這是強制性的。第二個可選考慮因素是,當檢測到入口和出口VTEP 之間出現擁塞時,通知終端設備(ECN)。
請參見圖7-26。目標-1(源)向主機-1(目的)發送流量。通過將無損流量分類為CS3 的DSCP 值并將其分配到無損隊列,使用PFC 啟用了逐跳流量控制。由于入口VTEP-1 會將原始數據包中的DSCP 值復制到外層報頭,因此將CS3 標記的流量分配到脊柱交換機上的無損隊列可在流量被封裝到VXLAN 隧道時實現無損行為。
在出口VTEP-6 上,外部報頭中的DSCP 值會被復制到解封裝數據包中。因此,將CS3 標記的流量分配到所有設備上的無損隊列可實現無損行為。這與非VXLAN 環境或非路由第2 層網絡的行為相同。與VXLAN 的唯一區別在于如何將流量分類以分配到無損隊列。
Figure 7-26PFC and ECN with VXLAN
對于擁塞通知,入口VTEP-1 會將原始報頭中的ECN 值保留到封裝數據包中。如果骨干交換機(或VXLAN 隧道路徑中的任何交換機)發生擁塞,它會在外報頭中用CE 標志(b'11')標記有ECN 功能的數據包(b'01'或b'10')。骨干交換機可能不知道IP 數據包屬于VXLAN 隧道,也不知道數據包中還有另一個IP 報頭。
因此,它們只標記外部報頭。出口VTEP 會將外部報頭中的ECN 值復制到解封裝數據包中。當目的地收到這個CE 標記的數據包時,它會根據上層協議(如RCM)的功能做出反應。
Congestion Management in VXLAN
如上一節所述,將流量分類并分配到無損隊列可保持流量的無損行為。這種配置必須在所有設備上保持一致,以保持端到端的無損行為。
Note the following points:請注意以下幾點:
1. 了解擁塞:啟用PFC 后,擁塞會在VXLAN 中蔓延,如前幾節所述。當出口VTEP(或葉子交換機)的隊列開始填滿時,它會通過發送"暫停"幀來減緩不丟棄類中的入口流量。因此,骨干交換機會減慢該流量類中的所有流量,無論其是否采用VXLAN 封裝。回顧一下,對于PFC 來說,數據包中添加多少報頭并不重要。它只是使用DSCP 字段對流量進行分類和流量控制。擁塞擴散的最終狀態與圖7-8 中的解釋類似。
2. 檢測擁塞:擁塞檢測方法與前一節中的解釋類似。檢測命令應考慮到VTEP 上的DSCP-CoS 映射。
3. 擁塞故障排除:擁塞故障排除方法仍與前一節所述類似。在查找擁塞源的同時,要關注交換端口或接口上的流量類別。特別是在骨干交換機上,不要被IP 地址誤導,因為VXLAN 封裝數據包的外層報頭中包含入口和出口VTEP 的IP 地址。在同一VXLAN 隧道中傳輸多個流量(源IP 和目的IP)。因此,應重點監控無丟棄流量類的流量和暫停幀,而不是流量。
4. 擁塞預防:前面介紹的擁塞預防功能也適用于VXLAN。如果終端設備支持基于ECN 值的操作,那么無論VXLAN 底層網絡如何,它都能發揮同樣的作用。例如,RoCEv2 流量可通過VXLAN 傳輸,如果終端設備支持RCM,它也可與VXLAN 一起工作。
Summary
默認情況下,以太網通過丟棄幀(稱為有損以太網)來處理擁塞,并依靠上層協議(如TCP)重傳丟失的數據包。相反,無損以太網使用逐跳流量控制機制,通過發送暫停幀來減慢或停止傳輸。以太網鏈路上的所有流量都可以使用LLFC 進行流量控制。或者,PFC 可以選擇性地只對特定流量類別進行流量控制。PFC 允許在同一鏈路上傳輸無損和有損流量,為融合以太網網絡奠定了基礎。
此外,ETS 為不同流量類別提供最低帶寬保證,DCBX 簡化了終端設備和交換機的配置。通過使用OSI 模型第2 層以太網VLAN 標頭中的PCP/CoS 字段對流量進行分類,可以啟用PFC。這種第2 層PFC 適用于FCoE 和RoCE。另外,對于RoCEv2(可路由RoCE),可在第3 層使用IP 標頭中的DSCP 字段對流量進行分類,從而啟用PFC。
無損以太網網絡容易出現與光纖通道結構類似的擁塞,因為兩者都使用逐跳流量控制。由于慢排空、鏈路利用率過高、比特錯誤或缺乏足夠的緩沖區,擁塞也會在無損類中蔓延。同樣的擁塞檢測、故障排除和預防方法也適用于無損以太網網絡。但無損以太網交換機可能不會報告所有相關指標。
值得注意的例子是TxWait 和RxWait 指標,在撰寫本文時,Cisco Nexus 9000 交換機和UCS 服務器上還沒有提供這些指標。下一個辦法是使用暫停幀數來檢測擁塞情況。但是,由于這些指標不會以時間和日期戳存儲在交換機上,因此使用外部監控平臺可以簡化擁塞檢測和故障排除。
在使用融合以太網網絡時,有損類中的流量可能會影響無損類中的流量,這取決于問題是如何出現的。無論使用專用還是共享存儲網絡,都要監控每個端口級別和每個類別級別的流量利用率和擁塞指標。
利用暫停超時和PFC 看門狗可以實現無損以太網網絡擁塞恢復。這些功能可在超時間隔后無法發送到目的地時丟棄幀,從而幫助釋放緩沖區,使受害設備擺脫擁塞影響。
如果終端設備支持RoCEv2 擁塞管理,RoCEv2 網絡還能通過向終端設備發出網絡擁塞通知而獲益,從而降低發送方的流量速率。無論采用哪種預防機制,都不應將這些機制作為長期解決方案。監控網絡,找到根本原因,并盡快做出修正。
最后,請注意許多無損以太網網絡相對較新。隨著網絡的發展和/或成熟,擁塞會變得更加嚴重。由于光纖通道Fabric 已大規模使用了幾十年,因此必須從中吸取經驗教訓,并將這些知識應用到無損以太網網絡中,以主動預防擁塞問題。
審核編輯:劉清
-
以太網
+關注
關注
40文章
5419瀏覽量
171625 -
交換機
+關注
關注
21文章
2638瀏覽量
99549 -
DSCP
+關注
關注
0文章
2瀏覽量
1345 -
存儲網絡
+關注
關注
0文章
31瀏覽量
8100 -
VxLAN
+關注
關注
0文章
24瀏覽量
3846
原文標題:以太網存儲網絡的擁塞管理連載(七)
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論