愛情有備胎,數據中心有MC-LAG

先談談情懷

最近咱51CTO開放了關注功能,非常高興有這麼多的朋友關注薑汁啤酒的 - "新西蘭資深網工的日常",在這裏先謝謝大家的關心與認可。
郭德綱在德雲社曾經說過,臺下觀衆都是衣食父母,唯有盡力演好相聲、抖好包袱,讓大家開心纔是最真誠的回饋方式。而在51cto,對於那些已經關注薑汁啤酒,或即將關注薑汁啤酒的朋友們,我也應該更加努力,給大家貢獻更好更有質量的技術文章。
爲此,藉助2018狗年春節到來之際特定準備了《數據中心網絡系列技術》系列教程文章,同大家分享。

連載文章技術主題

此數據中心技術連載內容如下:

  1. MC-LAG
  2. Virtual-Chassis 和Virtual-Chassis Fabric
  3. IP Fabric
  4. VXLAN
  5. E***
  6. 數據中心互聯技術
  7. 案例:Facebook數據中心架構簡介

這些文章會在接下來一段時間爲大家一一呈上。今天爲第一篇:MC-LAG

進入正題。第一篇:MC-LAG

引言

無論是傳統的企業網,或如今的數據中心。
都有一個共通的需求:高可用性。
同時也存在一個共同的問題:潛在的網絡單點故障。

常見網絡冗餘方式如下圖:

愛情有備胎,數據中心有MC-LAG

大致分析以上各種常見冗餘的利弊。

圖1: 很明顯,無冗餘,單點鏈路故障,單點設備故障。風險係數極高。
圖2:設備接入交換機到匯聚之間存在捆綁鏈路。但相對圖1,此方案進步了不少,尤其是解決了單點鏈路故障的問題。
但其他問題依然存在,若接入層交換機或者中間的匯聚交換機因爲設備故障掛掉,那有再多的捆綁鏈路都無濟於事。
圖3:升級設計,不就是怕交換機設備故障麼,我接入交換機上堆疊,上聯兩個匯聚節點。看似很完美。

可仔細分析,圖3的設計的確解決了設備單點故障的問題。但觀察拓撲圖,多鏈路多設備冗餘帶來的副作用就是潛在網絡環路風險的問題。
即兩臺匯聚和下聯接入之間的三角區存在潛在的環路風險。
總有藝高人膽大的:不怕,我上spanning-tree,再不濟我可以用路由協議跑三層。我就不信搞不定這個環路。

那請問,無論是用spanning-tree還是三層路由協議,如何能夠充分使用上聯的兩條鏈路做到流量的負載均衡呢?STP默認會block掉一個端口,路由協議會參考不同的metric值選路。

開個腦洞,有沒有一種網絡技術,把原來設備一對一的鏈路捆綁擴展到一臺設備對多臺設備的鏈路捆綁呢?
大家知道,捆綁鏈路(aggregation link 或 port-channel)天然基於hash算法負載均衡,如果上述假設成立的話,我們就可以把接入層交換機分別到不同匯聚的鏈路,捆起來並形成一個虛擬接口,而且流量還能完美的負載均衡到上聯的兩臺匯聚設備。
答案是必須有,要不然我實在寫不下去了。:-p
此技術就是今天我們要討論的主角-MC-LAG

MC-LAG閃亮登場

MC-LAG,全名Multi-Chassis Link Aggregation Group,或者在Cisco裏面叫做Virtual Port-channel (VPC)。
顧名思義,多設備間的鏈路聚合組。
部署MC-LAG後,我們可以實現所謂“腳踩兩隻船”的效果,即一臺接入設備可以同時通過鏈路捆綁接入上游兩臺物理設備。

MC-LAG使用場景

那什麼情況下使用MC-LAG比較理想呢:
在數據中心機房內,一臺服務器多個物理網卡上聯機架交換機時,可以使用MC-LAG實現服務器到多個交換機的鏈路二層互聯。
在普通企業網絡中,接入層交換機到多個上聯匯聚交換機的二層互聯。或者甚至匯聚交換機到上聯核心亦可以使用MC-LAG。

愛情有備胎,數據中心有MC-LAG

兩臺MC-LAG鄰居如何一起協商鏈路捆綁

打底:一對一基於LACP協商的普通鏈路捆綁簡介

在開始討論MC-LAG如何協商之前,讓我們先看看普通的鏈路聚合協議 - IEEE 802.3ad定義的鏈路聚合。
普通的鏈路聚合,例如Cisco的Port-channel或者Juniper的LAG,均是兩臺設備之間通過LACP協議協商參數並達成一致以後,捆綁鏈路方纔可使用。
如下圖所示:
愛情有備胎,數據中心有MC-LAG
那在普通LACP協商期間,兩臺設備都協商了什麼參數?
讓我們來看看一個Juniper QFX交換機LACP端口輸出內容:


   LACP info:        Role     System             System       Port     Port    Port 
                         priority         identifier   priority   number     key 

  xe-0/0/0       Actor        127  02:05:86:71:c8:00       127       1     2
  xe-0/0/0     Partner        127  02:05:86:71:94:00       127       1     2
  xe-0/0/1       Actor        127  02:05:86:71:c8:00       127       2     2
  xe-0/0/1     Partner        127  02:05:86:71:94:00       127       2     2

上述輸出看出LACP的幾個常見參數:
系統優先級(System Priority):默認127,用於確定LACP協商期間,鏈路兩端的設備誰主導這次協商,越低越好。如果優先級相同,靠MAC地址來確定。
系統ID(System ID):由系統MAC地址生成。
管理Key(Admin key):同一組LACP鏈路捆綁端口均要求相同的admin-key。
端口號:系統端口ID。


以上參數大家平時在創建鏈路聚合的時候,不需要人爲配置,因爲設備會自動協商。
以Cisco爲例,你只需要選擇channel-group xxx mode active就行了。
而Juniper也很簡單:set interfaces aexxx aggregated-ether-options lacp active
(注:xxx指代你想要的捆綁鏈路接口號。)
一旦雙方都配置完成,鏈路捆綁就起來了,easy!

MC-LAG協商機制

看完普通的鏈路兩端一對一模式,當切換到鏈路兩端二對一的MC-LAG模式下,情況就比較複雜了。
如下圖:
愛情有備胎,數據中心有MC-LAG
首先,一對一的情況下,不管你捆綁多少條鏈路,鏈路一端都是在同一臺設備內。這一臺設備可以知曉所有端口信息並和對端協商。
但是,MC-LAG可不一樣,它是兩臺鄰居設備嘗試和一臺遠端設備協商鏈路捆綁。
介於此,就類似於HSRP、VRRP協議,你需要在冗餘設備兩側指定相關參數,兩端參數一致才能通過最後的協商。

MC-LAG 鄰居需手工配置的參數(以下參數MC-LAG鄰居之間配置相同):
MC-AE-ID:MC-LAG捆綁號。
MC-AE 模式:有active-standby和active-active模式,一般使用active-active模式。
LACP的狀態:與傳統基於LACP的鏈路捆綁方式相同,MC-LAG裏面需要指定LACP的狀態是Active還是Passive。Active負責發起協商,Passive被動模式等待協商。
LACP Admin-key:指定管理key,一般可以與鏈路捆綁的端口號相同,例如接口ae1,那麼Admin-key就是1。
LACP system-ID:系統ID,MAC地址格式,也需要手工指定。

MC-LAG 鄰居需手工配置的參數(以下參數MC-LAG鄰居之間需要單獨指定):
MC-AE Status-control:確定兩個MC-LAG鄰居誰是主設備,誰是備份設備。主MC-LAG設備主導與鏈路對端設備的協商過程。
MC-AE Chassis ID:MC-LAG的設備號,分別爲0和1。鄰居設備兩端各配置一個號碼。


看完這麼多密密麻麻參數,是不是在聯想一個問題?參數這麼多,兩臺MC-LAG鄰居之間如何溝通呢?
做網絡的,都熟悉老套路了,接下來的劇情就會是,出現一個協議,用於兩者之間溝通。
沒錯,套路如下:

設備間控制協議:ICCP (Inter-Chassis Control Protocol)

ICCP,一個基於TCP 端口號33012的協議,用於MC-LAG的兩臺鄰居設備之間溝通並同步例如學習到的ARP信息以及MAC地址信息等。

爲了支持ICCP協議的TCP協商,我們還需要在兩臺MC-LAG鄰居設備上配置一個Keeplive的心跳線IP作爲ICCP互聯地址。
類似於HSRP或VRRP,ICCP也需要在兩臺設備之間選擇出一個Active活動設備和一個backup,Active活動設備用於整個MC-LAG協商,如何定義Active和backup我們在後續配置中會介紹到。


咋看之下,ICCP這個協議就如人的左右腦之間的橋樑,負責同步兩臺設備之間的狀態。但若由於某些原因,例如支持ICCP的IP地址接口down掉了,兩臺設備豈不是直接如馬航的飛機一樣,莫名其妙失聯了?
其後果可能導致兩臺鄰居設備均宣告自己是Active山寨寨主,並拆掉原來協商的LACP捆綁鏈路,這勢必會導致重大網絡故障。
能否在設備其他IP地址的地方再建立一條備用的心跳線鏈路,當主要的ICCP心跳線切斷以後,備用的還能檢測到對方狀態,豈不是更好?
所以,以Juniper爲例的公司,它就利用帶外管理接口IP地址爲輔助心跳線來作爲ICCP的雙保險。
如下圖所示:
愛情有備胎,數據中心有MC-LAG

備胎中的備胎:設備間備用保護鏈路 IC-PL(InterChassis-LinkProtection Link )

大家知道,基於LACP的鏈路捆綁天然就有負載均衡的效果。設備在發送數據包時就會隨機選擇一條鏈路。
那假設,其中一條鏈路斷掉了。作爲普通的一對一的鏈路捆綁設備,它很容易就把流量從一條鏈路切換到另外一條,畢竟都在同一個設備內。切換起來毫秒級。
同樣的場景,如果放到MC-LAG上會是什麼情況呢?
愛情有備胎,數據中心有MC-LAG
看到上面的圖示,相信大家就很容易理解爲什麼需要IC-PL鏈路了。
1.若沒有IC-PL鏈路,當MC-LAG下的一條捆綁鏈路down掉以後,MC-LAG成員無法找到替換路徑把本該發往鏈路遠端設備的流量轉發出去。如圖左所示。
2.而配置IC-PL鏈路以後,當同樣的情況出現時,MC-LAG成員就會在ICCP的協調下自動轉發流量到IC-PL鏈路上,並通過MC-LAG鄰居最終把流量發送到遠端設備。

IC-PL限制條件:(很重要,這也是爲神馬IC-PL不會導致網絡環路。)

在ICCP的管制下, IC-PL存在如下限制條件。(很重要哦)
1.在MC-LAG捆綁鏈路沒有任何故障的情況下,IC-PL只傳輸MC-LAG鄰居設備自身產生的廣播,組播數據包。
例如兩臺MC-LAG設備之間的VRRP可以穿透IC-PL。建立在ICCP心跳線網段上的OSPF hello數據包可以穿透,因爲是組播包。但是DBD數據包卻無法發送給鄰居,結果導致OSPF鄰居會永遠的卡在 Exstart狀態上。同理,其他單播報文也無法穿透。

  1. 若MC-LAG的其中一條捆綁鏈路出現故障時,IC-PL會被開啓並用於傳輸其他數據包。換而言之,IC-PL就是所謂的“備胎中的備胎”,主鏈路掛了以後,根據ICCP的管控馬上開始轉發數據。

配置MC-LAG

講了這麼多理論,讓我們來個實際點的例子看看如何正確配置MC-LAG
此案例採用GNS3模擬器外加3臺vQFX Juniper 數據中心交換機搭建而成,拓撲如下:
愛情有備胎,數據中心有MC-LAG

爲方便大家入手,先看SWC03這一個單點交換機的配置:

SWC03 接口配置

#全局定義鏈路捆綁的虛擬接口數(Juniper自身特性)
set chassis aggregated-devices ethernet device-count 5 #可以允許最多5個AE接口

#去往主機的接口和VLAN:
set vlans vlan-10 vlan-id 10
set interfaces xe-0/0/2 unit 0 family ethernet-switching interface-mode access
set interfaces xe-0/0/2 unit 0 family ethernet-switching vlan members 10  #去往主機PC1,端口爲access,vlan號爲10。

#配置LACP接口成員信息
set interfaces xe-0/0/0 description "To SWC01"
set interfaces xe-0/0/0 ether-options 802.3ad ae0   #指定xe-0/0/0 加入ae0的鏈路捆綁
set interfaces xe-0/0/1 description "To SWC02"
set interfaces xe-0/0/1 ether-options 802.3ad ae0  #指定xe-0/0/1 加入ae0的鏈路捆綁
set interfaces xe-0/0/2 description "To PC1"

#設定LACP參數:
set interfaces ae0 aggregated-ether-options lacp active  #主動發起協商
set interfaces ae0 aggregated-ether-options lacp periodic slow #設定hello time 爲30秒。
set interfaces ae0 unit 0 family ethernet-switching interface-mode trunk  #trunk 模式,允許PC客戶機器VLAN10 穿過。
set interfaces ae0 unit 0 family ethernet-switching vlan members 10

以上配置就是普通基於LACP的鏈路捆綁,對SWC03而言,它根本不清楚對端是普通鏈路捆綁還是MC-LAG。
重點看看SWC01的配置

SWC01配置

#全局定義鏈路捆綁的虛擬接口數(Juniper自身特性)
set chassis aggregated-devices ethernet device-count 5 #可以允許最多5個AE接口

#去往主機的接口和VLAN:
set vlans VLAN10 vlan-id 10
set interfaces xe-0/0/2 description "To PC2"
set interfaces xe-0/0/2 unit 0 family ethernet-switching interface-mode access
set interfaces xe-0/0/2 unit 0 family ethernet-switching vlan members 10

#配置ICCP協議和對於的VLAN,IP地址接口。
set vlans iccp vlan-id 100
set vlans iccp l3-interface irb.100

set interfaces irb unit 100 family inet address 100.1.1.1/24

set interfaces em0 unit 0 family inet address 192.168.240.2/24
#此爲帶外管理接口,用於ICCP備份鏈路

set interfaces xe-0/0/0 description "To SWC02" 
set interfaces xe-0/0/0 unit 0 family ethernet-switching interface-mode trunk
set interfaces xe-0/0/0 unit 0 family ethernet-switching vlan members 10 
set interfaces xe-0/0/0 unit 0 family ethernet-switching vlan members 100
 #此物理接口將會用於ICCP和IP-CL接口。在實際工程中,建議ICCP接口與IP-CL接口分離,並使用一個或者多個萬兆鏈路作爲IP-CL,畢竟這是備份數據鏈路,所以需要高帶寬做保證。

set protocols iccp local-ip-addr 100.1.1.1 #指定本地ICCP 地址
set protocols iccp peer 100.1.1.2 redundancy-group-id-list 1 
set protocols iccp peer 100.1.1.2 backup-liveness-detection backup-peer-ip 192.168.240.3
#使用帶外管理IP作爲ICCP備份鏈路,192.168.240.3 爲SWC02的帶外IP地址。
set protocols iccp peer 100.1.1.2 liveness-detection minimum-interval 3000 #配置BFD用於快速檢測ICCP鏈路狀態,最短建議8秒以上。
set protocols iccp peer 100.1.1.2 liveness-detection multiplier 3

#配置IC-PL對端IP(SWC02)和IC-PL接口,
set multi-chassis multi-chassis-protection 100.1.1.2 interface xe-0/0/0  #

#配置帶外管理接口
#配置MC-LAG接口:
set interfaces xe-0/0/3 description "To SWC03"
set interfaces xe-0/0/3 ether-options 802.3ad ae0

set interfaces ae0 aggregated-ether-options lacp active #指定LACP主動協商模式
set interfaces ae0 aggregated-ether-options lacp periodic slow #與SWC03相同,指定30秒的hello timer。
set interfaces ae0 aggregated-ether-options lacp system-id 01:01:01:01:01:01 #定義系統Id,需要與SWC02的相同,重要!!!
set interfaces ae0 aggregated-ether-options lacp admin-key 1 #定義admin-key,需要與SWC02的相同,重要!!!
set interfaces ae0 aggregated-ether-options mc-ae mc-ae-id 1 #定義MC-LAG號碼,需要與SWC02的相同,重要!!!
set interfaces ae0 aggregated-ether-options mc-ae redundancy-group 1  #定義冗餘組爲1。
set interfaces ae0 aggregated-ether-options mc-ae chassis-id 0 #定義設備號,SWC1=0,SWC2=1
set interfaces ae0 aggregated-ether-options mc-ae mode active-active #定義主動模式
set interfaces ae0 aggregated-ether-options mc-ae status-control active  #定義SWC1爲MC-LAG兩臺設備中的主設備,負責主導協商過程。

set interfaces ae0 unit 0 family ethernet-switching interface-mode trunk
set interfaces ae0 unit 0 family ethernet-switching vlan members 10
#最後,在這個去往SWC03的AE0上,同樣放行業務VLAN 10.

SWC02配置

#SWC02的配置除了其中某些參數不同之外,其他參數與SWC01類似,在這裏就不一一贅述了。

set chassis aggregated-devices ethernet device-count 5  

set vlans VLAN10 vlan-id 10
set vlans iccp vlan-id 100
set vlans iccp l3-interface irb.100

set protocols iccp local-ip-addr 100.1.1.2
set protocols iccp peer 100.1.1.1 redundancy-group-id-list 1
set protocols iccp peer 100.1.1.1 backup-liveness-detection backup-peer-ip 192.168.240.2
set protocols iccp peer 100.1.1.1 liveness-detection minimum-interval 3000
set protocols iccp peer 100.1.1.1 liveness-detection multiplier 3

set multi-chassis multi-chassis-protection 100.1.1.1 interface xe-0/0/0

set interfaces xe-0/0/0 description "To SWC01"
set interfaces xe-0/0/0 unit 0 family ethernet-switching interface-mode trunk
set interfaces xe-0/0/0 unit 0 family ethernet-switching vlan members 10
set interfaces xe-0/0/0 unit 0 family ethernet-switching vlan members 100

set interfaces xe-0/0/2 description "To PC3"
set interfaces xe-0/0/2 unit 0 family ethernet-switching interface-mode access
set interfaces xe-0/0/2 unit 0 family ethernet-switching vlan members 10

set interfaces xe-0/0/3 description "To SWC03"
set interfaces xe-0/0/3 ether-options 802.3ad ae0

set interfaces ae0 aggregated-ether-options lacp active
set interfaces ae0 aggregated-ether-options lacp periodic slow
set interfaces ae0 aggregated-ether-options lacp system-id 01:01:01:01:01:01
set interfaces ae0 aggregated-ether-options lacp admin-key 1
set interfaces ae0 aggregated-ether-options mc-ae mc-ae-id 1
set interfaces ae0 aggregated-ether-options mc-ae redundancy-group 1
set interfaces ae0 aggregated-ether-options mc-ae chassis-id 1
set interfaces ae0 aggregated-ether-options mc-ae mode active-active
set interfaces ae0 aggregated-ether-options mc-ae status-control standby
set interfaces ae0 unit 0 family ethernet-switching interface-mode trunk
set interfaces ae0 unit 0 family ethernet-switching vlan members 10

set interfaces em0 unit 0 family inet address 192.168.240.3/24

驗證結果

配置完成以後,讓我們先看看從SWC03的角度LACP如下:

SWC03

root@SWC03> show lacp interfaces extensive 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      xe-0/0/0       Actor    No    No   Yes  Yes  Yes   Yes     Slow    Active
      xe-0/0/0     Partner    No    No   Yes  Yes  Yes   Yes     Slow    Active
      xe-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Slow    Active
      xe-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Slow    Active
    LACP protocol:        Receive State  Transmit State          Mux State 
      xe-0/0/0                  Current   Slow periodic Collecting distributing
      xe-0/0/1                  Current   Slow periodic Collecting distributing
        LACP info:        Role     System             System       Port     Port    Port 
                             priority         identifier   priority   number     key 

      xe-0/0/0       Actor        127  02:05:86:71:33:00       127       1     1
      xe-0/0/0     Partner        127  01:01:01:01:01:01       127       3     1
      xe-0/0/1       Actor        127  02:05:86:71:33:00       127       2     1
      xe-0/0/1     Partner        127  01:01:01:01:01:01       127   32771     1

{master:0}
root@SWC03> 

很完美,它的兩個接口均參與了LACP鏈路捆綁,而且大家注意觀察,xe-0/0/0和xe-0/0/1的Partner對端部分顯示的System-id是配置的1:1:1:1:1:1,Port-key也是上述配置的1。這些參數都是我們之前預先人爲設定好的。

SWC01輸出結果

#先看看ICCP的協商結果:
root@SWC01> show iccp 

Redundancy Group Information for peer 100.1.1.2
  TCP Connection       : Established
  Liveliness Detection : Up
##SWC01與SWC02建立了TCP ICCP連接,狀態是Established.
Backup liveness peer status: Up
  Redundancy Group ID          Status
    1                           Up   
#SWC01和SWC02通過帶外管理網絡成功建立備份鏈接。
Client Application: lacpd
  Redundancy Group IDs Joined: 1 

Client Application: l2ald_iccpd_client
  Redundancy Group IDs Joined: 1 
#闡明瞭LACP是ICCP的客戶端,正在使用ICCP提供的服務。

#MC-LAG 協商狀態,並指明瞭IC-PL接口。
root@SWC01> show interfaces mc-ae 
 Member Link                  : ae0
 Current State Machine's State: mcae active state
 Local Status                 : active
 Local State                  : up
 Peer Status                  : active
 Peer State                   : up
     Logical Interface        : ae0.0
     Topology Type            : bridge
     Local State              : up
     Peer State               : up
     Peer Ip/MCP/State        : 100.1.1.2 xe-0/0/0.0 up #

#LACP協商狀態
root@SWC01> show lacp interfaces extensive 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      xe-0/0/3       Actor    No    No   Yes  Yes  Yes   Yes     Slow    Active
      xe-0/0/3     Partner    No    No   Yes  Yes  Yes   Yes     Slow    Active
    LACP protocol:        Receive State  Transmit State          Mux State 
      xe-0/0/3                  Current   Slow periodic Collecting distributing
        LACP info:        Role     System             System       Port     Port    Port 
                             priority         identifier   priority   number     key 

      xe-0/0/3       Actor        127  01:01:01:01:01:01       127       3     1
      xe-0/0/3     Partner        127  02:05:86:71:33:00       127       1     1

#最後,以上輸出顯示,SWC01的xe-0/0/3成功建立MC-LAG鏈路捆綁,並且能夠看到SWC03的MAC地址組成的System-ID。

SWC02輸出結果

root@SWC02> show iccp 

Redundancy Group Information for peer 100.1.1.1
  TCP Connection       : Established
  Liveliness Detection : Up

Backup liveness peer status: Up
  Redundancy Group ID          Status
    1                           Up   

Client Application: lacpd
  Redundancy Group IDs Joined: 1 

Client Application: l2ald_iccpd_client
  Redundancy Group IDs Joined: 1 

{master:0}
root@SWC02> show interfaces mc-ae 
 Member Link                  : ae0
 Current State Machine's State: mcae active state
 Local Status                 : active
 Local State                  : up
 Peer Status                  : active
 Peer State                   : up
     Logical Interface        : ae0.0
     Topology Type            : bridge
     Local State              : up
     Peer State               : up
     Peer Ip/MCP/State        : 100.1.1.1 xe-0/0/0.0 up

{master:0}
root@SWC02> show lacp interfaces 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      xe-0/0/3       Actor    No    No   Yes  Yes  Yes   Yes     Slow    Active
      xe-0/0/3     Partner    No    No   Yes  Yes  Yes   Yes     Slow    Active
    LACP protocol:        Receive State  Transmit State          Mux State 
      xe-0/0/3                  Current   Slow periodic Collecting distributing

{master:0}
root@SWC02> 

PC客戶端ping 測試

讓我們從PC1 分別ping PC2和PC3

PC1> ping 10.1.1.2
84 bytes from 10.1.1.2 icmp_seq=1 ttl=64 time=160.089 ms
84 bytes from 10.1.1.2 icmp_seq=2 ttl=64 time=74.891 ms

PC1> ping 10.1.1.3
84 bytes from 10.1.1.3 icmp_seq=1 ttl=64 time=159.707 ms

PC1> show arp
00:50:79:66:68:01  10.1.1.2 expires in 2 seconds
00:50:79:66:68:02  10.1.1.3 expires in 115 seconds

mac-addres-table研究

完成ping測試以後,讓我們最後看看三臺交換機各自的MAC地址信息:

SWC01

root@SWC01> show ethernet-switching table 

MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC
           SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC)

Ethernet switching table : 3 entries, 3 learned
Routing instance : default-switch
    Vlan                MAC                 MAC         Age    Logical                NH        RTR 
    name                address             flags              interface              Index     ID
    VLAN10              00:50:79:66:68:00   DLR           -   ae0.0                  0         0       
    VLAN10              00:50:79:66:68:01   DL            -   xe-0/0/2.0             0         0       
    VLAN10              00:50:79:66:68:02   DR            -   xe-0/0/0.0             0         0  

#解析:SWC01存在三臺PC機器的MAC地址,耐人尋味的主要是MAC Flag標誌位。
通過上述的MAC Flag解釋表,可以看出。DLR意味着:動態學習,本地學習,遠端PE同步的MAC地址?
這個遠端PE MAC地址有點意思,它其實是指SWC02也存在這麼一個MAC地址,而爲什麼SWC01會知道SWC02也有這麼一個MAC呢,那就是ICCP的功效。

ICCP除了同步LACP等狀態外,更重要的是它也在兩個MC-LAG鄰居間同步例如ARP表,MAC地址表等。

SWC02

root@SWC02> show ethernet-switching table 

MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC
           SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC)

Ethernet switching table : 3 entries, 3 learned
Routing instance : default-switch
    Vlan                MAC                 MAC         Age    Logical                NH        RTR 
    name                address             flags              interface              Index     ID
    VLAN10              00:50:79:66:68:00   DLR           -   ae0.0                  0         0       
    VLAN10              00:50:79:66:68:01   DR            -   xe-0/0/0.0             0         0       
    VLAN10              00:50:79:66:68:02   DL            -   xe-0/0/2.0             0         0    '

SWC03

root@SWC03> show ethernet-switching table 

MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC
           SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC)

Ethernet switching table : 3 entries, 3 learned
Routing instance : default-switch
    Vlan                MAC                 MAC         Age    Logical                NH        RTR 
    name                address             flags              interface              Index     ID
    vlan-10             00:50:79:66:68:00   D             -   xe-0/0/2.0             0         0       
    vlan-10             00:50:79:66:68:01   D             -   ae0.0                  0         0       
    vlan-10             00:50:79:66:68:02   D             -   ae0.0                  0         0       

#回到SWC03的MAC地址表,就顯得很標準和普通了,它的MACFlag標誌位就寫着“動態獲取”,而不存在L和R的標誌。

總結

在這篇文章中,我們一起討論了何爲MC-LAG,以及MC-LAG的組成部分,最後展示瞭如何配置MC-LAG.
總結如下:
1.MC-LAG是基於兩臺設備與遠端設備同時建立一個捆綁鏈路。
2.MC-LAG使用ICCP協議保證捆綁鏈路的協商過程。
3.IC-PL不轉發單播數據包,只轉發MC-LAG成員產生的組播包和廣播包。
4.IC-PL接口爲備份數據傳輸接口,一旦某個捆綁鏈路掛掉,IC-PL馬上開始轉發數據包。
5.配置MC-LAG時,需要在MC-LAG鄰居上手工配置LACP協商參數。

留給大家的操作空間:
其實還有其他MC-LAG內容因爲篇幅問題沒有涉及到,例如:
1) 如何在MC-LAG上開啓三層路由。
2) 如何在IC-PL上運行動態路由協議,而不至於遇到OSPF那樣卡在Exstart狀態。

這些想象空間就留給你去慢慢品玩了,若有問題請隨時留言,大家一起共同進步。

號外,號外,徵集網絡運維痛點

愛情有備胎,數據中心有MC-LAG
最近在籌劃網絡運維中遇到的各種技術問題的相關文章,但是因爲我個人想象空間實在有限,無法涵蓋所有各種可能遇到的場景。
看在薑汁啤酒碼字這麼辛苦,沒有功勞也有點苦勞的面子上,歡迎大家留言告訴我你在網絡運維過程中,都遇到了哪些技術問題,簡單也好,疑難雜症也好,歡迎給我留言。

薑汁啤酒會根據反饋,認真研究,並總結成文,奉送給大家。

謝謝!

往期文章列表:

網絡***肆虐-給你的網絡設備來套防彈衣吧!
Facebook Open/R,新一代路由平臺與網工的未來
如何藉助Anycast技術拯救運維工程師的睡眠?
技術移民直通車要發車了-快來秒殺你的車票
IT設備的救命稻草-如何正確構建OOB帶外網絡
踢走絆腳石,MTU解析與常見問題彙總-上篇
TCP-MSS, PMTU 詳解- MTU工具解析與常見問題彙總-下篇
思路很重要!不同廠商Spanning-tree對接案例思考
回車恐懼症?13個 JUNOS 技巧助你輕鬆無憂配置網絡
一個網工的十年奮鬥史 - 工作篇
一個網工的十年奮鬥史 - 移民篇
海外IT工程師工作福利揭祕 一個網工的十年奮鬥史(末篇)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章