华为M-LAG跨设备链路聚合技术理论讲解
目錄
為什么會出現M-LAG
M-LAG基本概念
M-LAG建立過程
M-LAG的協議兼容性
M-LAG的防環機制
M-LAG正常工作流量轉發
單播流量轉發
組播流量轉發
廣播流量轉發
M-LAG故障場景流量轉發
上行鏈路故障
下行鏈路故障
M-LAG主設備故障
Peer-link故障
M-LAG二次故障(Peer-Link故障+M-LAG設備故障)
V-STP
V-STP方式(推薦方式)
根橋方式
M-LAG技術的應用
M-LAG(Muntichassis Link Aggregation Group)跨設備鏈路聚合組,將不同設備上的不同端口組成一個聚合組,達到跟普通LAG一樣的功能,主要應用場景是“雙歸接入”場景,即用戶側雙歸接入到兩臺設備上
對于下游設備來說,認為上游設備是一臺設備
為什么會出現M-LAG
實現雙歸接入的傳統技術有:堆疊、Smart-Link等技術
堆疊的多臺設備使用同一個控制面,單點故障可能影響到整個系統
Smart-Link等技術使用的是主備方式接入,鏈路利用率不搞
M-LAG和堆疊的區別
堆疊是設備級別的多虛一,管理平面共用一個
MC-LAG協議級別的多虛一,管理平面是獨立的
什么是協議級別的多虛一
即僅僅是在LACP這個協議上,將多個設備的接口認為是一臺設備的接口,只有LACP協議這樣認為,除此之外,這兩臺設備都是獨立工作的
M-LAG基本概念
DFS-Group(Dynamic Fabric Service Group)動態交換服務組
通過DFS-Group對部署了M-LAG的設備進行配對,實現多臺設備間的鏈路聚合
動態交換服務組的ID只能為1,綁定M-LAG的ID可以是1~2048
主備設備之間要確保M-LAG的ID是一致的
M-LAG雙歸設備之間的接口狀態、表項等信息的同步需要依賴DFS Group協議進行同步
DFS 主/備設備
部署了M-LAG 并且狀態為主/備的設備(也稱為M-LAG主/備設備)
通過DFS Group協議協商
此處的主備交換機都會轉發數據
正常情況下,主/備設備轉發行為沒有區別,其主備接口都可以進行負載分擔轉發
僅在故障場景下,主備設備的行為會有差別
雙主檢測鏈路(心跳鏈路-Keepalive鏈路)
是一條三層互通鏈路,用于在M-LAG主備設備之間發送雙主檢測報文
正常情況下雙主檢測鏈路不會參與M-LAG的任何轉發行為
只有在故障發生的情況下用于檢查是否出現雙主的情況
鏈路配置的兩種方式
HB DFS主/備設備
通過心跳鏈路報文協商的狀態為主/備的設備(在心跳口上發送DFS報文進行主備協商)
正常情況下,對M-LAG的轉發行為不會產生影響,僅用于二次故障場景
Peer-link鏈路
Peer-link鏈路是部署MC-LAG的兩臺設備之間必須存在的一條直連二層鏈路
此鏈路必須做鏈路聚合,此鏈路用于協商報文以及傳輸部分流量
Peer-link接口
peer-link鏈路兩端直連的接口均為peer-link接口(Peer-Link接口默認放行所有Vlan)
接口配置為peer-link接口后,該接口上不能再配置其它業務。
Peer-Link接口ID只能為1
M-LAG成員口:
DFS主/備設備上連接用戶側的Eth-Trunk接口
M-LAG成員接口也分主備(接口的主備主要在組播場景下的轉發行為有區別)
用戶側Switch
可以是交換機,也可以是主機
使用ETH-trunk(標準的LACP協議)接入雙活系統,組成雙歸接入
M-LAG主/備設備同時轉發用戶側流量
雙活網關
在DFS主備設備上配置網關,作為用戶側的網關
主備設備上的網關配置相同的IP地址和MAC地址,實現雙活網關
此雙活網關也可以通過VRRP來實現
VRRP用來選舉主備,此時需要雙網關,為什么還要做VRRP
因為Peer-link默認拒絕放行VRRP的報文
并且對于設備來說,M-LAG的成員接口是一個邏輯接口,從本接口收到的VRRP報文不會再發送出去,即成員口不會將收到的VRRP報文在轉發出去
此時主備都互相收不到對方的VRRP報文,不會進行VRRP主備協商
當將DFS主備交換機的VRRP的虛擬地址配置為一樣時,由于主備之間不會選舉主從
即兩個都是主,也可以達到雙活網關的效果
最早是通過VRRP來做雙活的,但是現在更推薦配置相同IP、MAC的方式來實現雙活網關的效果
M-LAG建立過程
4步建立M-LAG+1步雙主檢測
DFS Group Hello報文(設備信息報文)
攜帶自己的DFS Group ID、協議版本號、系統MAC等信息
DFS Group ID相同的設備配對成功
DFS Group設備信息報文
攜帶DFS Group優先級(優先級默認為100)、系統MAC等信息
確定DFS主、備設備
M-LAG設備信息報文
攜帶了M-LAG成員接口的配置信息
確定M-LAG成員接口的主備狀態
M-LAG同步報文
同步的信息包括設備名、系統MAC、軟件版本、M-LAG成員端口狀態、STP BPDU信息、MAC表項、ARP表項、IGMP表項等
保證任意一臺設備故障都不影響流量的轉發,保證正常的業務不中斷
注意事項
同步的MAC地址表和ARP表等其它表項時不是直接將表項同步過去,而是將生成表項的報文傳遞給對端(將生成表項的源報文封裝在M-LAG的同步報文中傳遞給對方,對方根據源報文生成表項)
例如:
主/備設備通過端口收到的ARP生成表項后,將此ARP報文封裝在DFS-Group同步報文通過Peer-link鏈路傳遞給備/主設備
備/主設備解封裝DFSS-Group同步報文,得到ARP報文信息,根據此ARP報文信息再生成表項
此做法更容易實現版本之間的兼容性(即傳遞的是因)
雙主檢測
正常情況1s發送一次DAD報文進行檢測
一旦感知故障100ms發送3次DAD報文進行檢測(加速檢測)
除了DAD報文,其余報文都在二層的Peer-Link鏈路上傳輸
M-LAG的協議兼容性
前提須知
M-LAG協議報文攜帶的DATA部分是按照TLV格式封裝的,方便擴展
協議不兼容問題
M-LAG升級一般都是逐臺升級(保證業務不中斷)
在設備進行M-LAG升級過程中必然會出現版本不一致的情況
在設備升級過程中,備用設備升級到了新版,主設備還在舊版
如何解決兼容性問題,使其盡少丟包
解決的工作原理
如圖所示,SWA和SWB組成一個M-LAG系統。
版本均為V1R5C10,現在要將兩臺設備升級為V2R1C00版本。
假設V2R1C00版本新增了一個同步LACP SystemID的功能
在V1R5C10版本,兩端設備LACP System ID必須手動配置為一致
而在V2R1C00版本中,主設備會將自己的LACP SystemID封裝在同步報文中,備設備收到后,會使用該System ID替換自己的SystemID,防止了手動配置錯誤的情況發生
那么升級過程如下:
1.SWB換包重啟,M-LAG由雙歸變成單歸,SWA獨立承擔報文轉發
2.SWB升級完成后,以V2R1C00版本啟動,發送HELLO報文重新配對
由于新增了一個功能,SWB發送的HELLO報文中新增了TLV(這里以新增TLV為例,實際新增功能并不一定會在HELLO報文中新增TLV)
3.SWA收到SWB的報文后,只處理可以識別的TLV,并向SWB發送Hello報文
4.SWB收到SWA發送的HELLO報文后,發現HELLO報文中攜帶的版本號比自己低
于是不會校驗是否有該新增的TLV,兩者可以正常協商(新增的TLV功能暫時不生效)
5.協商完成后,SWB開始發送LACP System ID的同步報文,這是一個新增的報文類型
SWA是仍然是老版本,不會處理,直接忽略
6.SWB接收不到SWA發送的同步LACP SystemID的報文,也不會有任何處理。
兩設備繼續保持手動配置System ID狀態,LACP功能也就繼續保持以前的工作狀態
7.開始升級SWA,同之前類似,雙歸切換為單歸,SWB獨立承擔報文轉發
8.SWA升級完,最終兩邊版本一致
此時兩臺設備可以交互LACP System ID的同步報文
此時可以將之前手工配置的System ID刪除,全部切換完自動協商形式
M-LAG的防環機制
對于廣播流量
對廣播泛洪流量進行單向隔離(類似堆疊的單向隔離機制)
單向隔離機制生效的前提
當協商出主備后,通過M-LAG同步報文來判斷接入設備是否已經雙活接入
如果設備已經雙活接入,則M-LAG兩臺設備下發對應M-LAG成員口的單向隔離配置
如果成員端口已經斷了一邊,變為單歸接入,此時就不用去下發單向隔離配置了
M-LAG同步報文是如何具體判斷出接入設備是雙活接入的呢?
M-LAG同步報文攜帶了成員端口狀態,通過Peer-Link互發M-LAG報文
當感受到同一個M-LAG的成員口在不同的設備上Up起來了
M-LAG設備就知道這個M-LAG組是雙活接入
注意事項
單向隔離機制主備都會隔離(看廣播流量從那邊上來,從備用上來,主就會隔離,從主上來,備就會隔離)
上圖是廣播流量從主設備上來,備設備被單向隔離了
單向隔離機制實現原理
檢測到雙活接入后,會下發全局ACL配置(配置如下)
允許通過 源端口為Peer-link接口,目的端口為M-LAG成員口的三層單播報文
拒絕通過 源端口為Peer-link接口,目的端口為M-LAG成員口的所有報文
即:通過匹配ACL規則,隔離由Peer-Link接口發往M-LAG成員口的廣播等泛洪流量
當檢測到為單歸時,會撤銷ACL全局配置
M-LAG正常工作流量轉發
單播流量轉發
自用戶側發往網絡側的已知單播流量由M-LAG主備設備形成逐流負載分擔,共同進行流量的轉發;自網絡側發往用戶側的已知單播流量同樣由M-LAG主備設備形成逐流負載分擔,共同進行流量的轉發。
在用戶側通過Eth-Trunk負載分擔算法將流量分到DFS主、備設備,實現負載分擔
組播流量轉發
組播接入二層網絡——通過單向隔離機制來防止接收重復的組播流量
接入二層網絡故障,單向隔離機制就會取消掉
組播接入三層網絡——通過PIM協議來獲取組播流量
三層網絡中,對于組播接收者,要保證組播接收者只能收到一份組播流量(同組播源、組播組的流量只能是一份)
如何解決組播組成員收到重復流量的問題
按照以下規則由M-LAG主備設備在本地查找組播表后將流量負載分擔給組播組成員
若組播組地址最后一位為奇數(例如225.1.1.1或FF1E::B),則由M-LAG成員端口狀態為主的設備轉發至組播組成員
若組播組地址最后一位為偶數(例如225.1.1.2或FF1E::A),則由M-LAG成員端口狀態為備的設備轉發至組播組成員
注意事項:
M-LAG主備設備不會發送剪枝報文,對于組播流量主備設備都收的到,只是轉發給組成員是會進行篩選
一般主設備的成員端口狀態也為主,但是不一定一直為主(正常情況下是主,發生障后就不一定為主了)
組播三層組網中,當上行鏈路故障,一部分組播成員收不到組播流量,如何解決
通過在主備之間加入三層鏈路,運行PIM,可以避免單上行
獨立三層PIM鏈路的其它作用
當DFS主設備(端口狀態為主)上行鏈路故障后,當下發奇數組播流量時,DFS主設備是收不到的
DFS備設備收到了此奇數組播流量,但是由于其端口狀態為備,不轉發奇數組播流量
此時就需要通過PIM獨立三層口將奇數組播流量轉發給DFS主,然后再由其下發給組播組成員
所以對于組播三層網絡,建議加上獨立的三層PIM鏈路,增強其可靠性
廣播流量轉發
網絡上的的廣播流量,單向隔離
M-LAG故障場景流量轉發
M-LAG作為一種跨設備鏈路聚合的技術,把鏈路可靠性從單板級提高到了設備級。如果出現故障(不管是鏈路故障、設備故障還是peer-link故障),M-LAG都能夠保證正常的業務不受影響
上行鏈路故障
若主/備上行鏈路故障,不會影響雙主檢測(雙主檢測還是1s一次)
主備設備能夠正常轉發數據
只不過下游通過主/備設備的流量均經過Peer-Link鏈路進行轉發
下行鏈路故障
M-LAG主備狀態不會發生變化,不會引發雙主檢測,但是成員端口狀態可能會發生變化
如果M-LAG成員端口狀態為主的鏈路出現故障
發生故障的M-LAG成員口所在的鏈路狀態變為Down,雙歸場景變為單歸場景
故障M-LAG成員口的MAC地址指向peer-link接口(將成員端口的MAC表項復制到Peer-Link口),將流量通過Peer-Link引到M-LAG備用設備
成員端口狀態為備端口其狀態轉為主,流量切換到該鏈路上進行轉發
對于組播源在網絡側,組播成員在接入側的組播流量
當M-LAG主設備的M-LAG成員口故障時
通過M-LAG同步報文通知對端設備進行組播表項刷新
M-LAG主備設備不再按照組播地址奇偶進行負載分擔
而是所有組播流量都由端口狀態Up的M-LAG備設備進行轉發,反之亦然
在故障M-LAG成員口恢復后
M-LAG成員口狀態不再回切
由備升主的M-LAG成員口狀態仍為主
原主M-LAG成員口在故障恢復后狀態為備
M-LAG主設備故障
如果是M-LAG主設備故障
M-LAG主設備側Eth-Trunk鏈路狀態變為Down,M-LAG的主備狀態會發生變化
M-LAG備設備將升級為主,其設備側Eth-Trunk鏈路狀態仍為Up,流量轉發狀態不變,繼續轉發流量,雙歸場景變為單歸場景。
如果是M-LAG備設備發生故障
M-LAG備設備側Eth-Trunk鏈路狀態變為Down,M-LAG的主備狀態不會發生變化
M-LAG主設備側Eth-Trunk鏈路狀態仍為Up,流量轉發狀態不變,繼續轉發流量,雙歸場景變為單歸場景。
當M-LAG設備故障恢復時
peer-link先UP,DFS狀態重新協商,M-LAG成員口恢復UP,流量恢復負載分擔
M-LAG主設備恢復后設備狀態仍然為主,M-LAG備設備恢復后設備狀態仍然為備。
Peer-link故障
peer-link故障會引發雙主現象
雙歸設備一旦感知peer-link口down,即立刻發起一次雙主檢測過程(100ms發3次DAD)
M-LAG應用在普通以太網絡、VXLAN網絡或IP網絡的雙歸接入
peer-link故障但雙主檢測心跳狀態正常時
會觸發M-LAG備設備上除邏輯端口、管理網口、peer-link接口和堆疊口以外的其他接口處于Error-Down狀態。
M-LAG應用在TRILL網絡的雙歸接入
peer-link故障但雙主檢測心跳狀態正常時,會觸發M-LAG備設備上的M-LAG接口處于Error-Down狀態。
Peer-Link故障恢復時
處于Error Down狀態的其它接口將立即自動恢復為Up狀態。
處于Error Down狀態的M-LAG接口默認將在240s后自動恢復為Up狀態
M-LAG二次故障(Peer-Link故障+M-LAG設備故障)
當Peer-link鏈路故障后,如果M-LAG備設備再次發生故障,此時不會對流量轉發行為產生影響,仍由DFS狀態為主的設備進行流量轉發。
當Peer-link鏈路故障后,如果M-LAG主設備再次發生故障,將導致系統無法轉發流量
此時需要通過二次故障增強功能來解決
若M-LAG已使能二次故障增強功能
則DFS狀態為備的設備會借助M-LAG雙主檢測機制感知到DFS主設備故障(在一定周期內接收不到任何的M-LAG雙主檢測心跳報文會認為主故障)
此時DFS備設備將升級為DFS主設備并恢復設備上處于ERROR DOWN狀態的端口為Up狀態,繼續轉發流量。
若原DFS狀態為主的設備故障恢復后但peer-link故障仍故障
若配了置LACP M-LAG的系統ID在一定時間內切換為本設備的LACP系統ID
則在LACP協商時接入側僅選擇上行鏈路中的一條鏈路為活動鏈路,實際流量轉發正常。
若配置的LACP M-LAG的系統ID為缺省情況,即系統ID不回切
M-LAG兩臺設備均使用同一系統ID來與接入側設備協商,鏈路均能被選中成為活動鏈路。
該場景下,由于peer-link鏈路仍然故障,M-LAG兩端無法同步對端的優先級、系統MAC等信息,形成M-LAG兩臺設備雙主的情況,可能導致流量異常。
此時,可以借助心跳鏈路報文中攜帶必要的DFS Group協商主備的必要信息(如DFS Group優先級、系統MAC等)來協商M-LAG兩臺設備的HB DFS主備信息
觸發HB DFS狀態為備的設備上某些端口處于ERROR DOWN狀態,HB DFS狀態為主的設備繼續工作。
V-STP
V-STP方式(推薦方式)
V-STP(Virtua Spannning Tree Protocol)是二層拓撲管理特性,可以將兩臺設備的STP虛擬成一臺設備的STP協議,對外呈現為一臺設備進行STP協議計算
為什么要使用V-STP
需要給下游交換機營造出是一臺設備的感覺,如果DFS主備設備都發各自的BPDU
下游交換機就會從一個邏輯接口上收到兩份不同的BPDU,會認為自己連接了兩臺設備
正常情況下,一個物理接口收到的BPDU就是上游設備的那一個BPDU
V-STP具體實現原理
M-LAG主備設備配置了V-STP使能之后,在M-LAG主備協商成功后
STP同步M-LAG主備的橋MAC信息和實例優先級信息
M-LAG備設備使用M-LAG主設備同步過來的橋MAC信息和實例優先級信息進行STP計算和收發報文,保證虛擬化成一臺設備后的STP計算參數。
主要應用場景
V-STP只能用于M-LAG組網
可以解決多級M-LAG互聯場景和組成M-LAG的設備作為非根橋場景的需求。
注意事項
配置V-STP功能時,需要保證組成M-LAG的兩臺設備上STP/RSTP定時器配置一致
否則可能導致網絡拓撲震蕩。
根橋方式
通過配置根橋(V-STP出現之前使用此種方式)的方式也可以實現V-STP的功能
根橋方式如何具體實現
M-LAG主設備和備設備均作為STP網絡中的根橋且配置相同的橋ID
將兩臺設備模擬成同一個根橋,M-LAG主備設備在二層網絡中不受其他組網變化的影響,保證正常的工作(保證了主備交換機的端口不被阻塞)
注意事項
如果M-LAG設備是在接入層的,我們一般不會把接入層設備設置為根橋
如果上層網絡是純三層網絡,此時把主備交換機是否設置為根橋意義也不大
以上兩種情況我們會使用V-STP方式,現網中也是推薦使用V-STP方式
例如:現在Vxlan追求的是純三層網絡,使用V-STP效果更好
M-LAG技術的應用
N-LAG雙歸接入二層網絡
M-LAG雙歸接入Vxlan網絡
在DFS主備設備上配置Vxlan隧道(通過Eth-Trunk子接口配置)
多級M-LAG
在網絡規模較大場景下, 可以通過配置多級M-LAG來保證鏈路可靠性
多級M-LAG應用場景,不能使用手動配置根橋的方式來進行STP破環,需要通過VSTP協議來同步M-LAG雙歸設備的STP協議狀態信息。
總結
以上是生活随笔為你收集整理的华为M-LAG跨设备链路聚合技术理论讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: figma:使用mac上的字体 | 转换
- 下一篇: “火星人”马斯克推论:世界很大可能性是被