Copyright © 2012杭州華三通信技術有限公司 版權所有,保留一切權利。 非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部, 並不得以任何形式傳播。本文檔中的信息可能變動,恕不另行通知。 |
在二層交換網絡中,一旦存在環路就會造成報文在環路內不斷循環和增生,產生廣播風暴,從而占用所有的有效帶寬,使網絡變得不可用。
在這種環境下生成樹協議應運而生,生成樹協議是一種二層管理協議,它通過有選擇性地阻塞網絡冗餘鏈路來達到消除網絡二層環路的目的,同時具備鏈路的備份功能。
生成樹協議和其他協議一樣,是隨著網絡的不斷發展而不斷更新換代的。最初被廣泛應用的是IEEE 802.1D-1998 STP(Spanning Tree Protocol,生成樹協議),隨後以它為基礎產生了IEEE 802.1w RSTP(Rapid Spanning Tree Protocol,快速生成樹協議)、PVST(Per VLAN Spanning Tree,每VLAN生成樹)協議和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成樹協議)。
STP包含了兩個含義,狹義的STP是指IEEE 802.1D-1998中定義的STP協議,廣義的STP是指包括IEEE 802.1D-1998定義的STP協議以及各種在它的基礎上經過改進的生成樹協議。本文中的STP均指狹義的STP。
STP的基本思想十分簡單。自然界中生長的樹是不會出現環路的,如果網絡也能夠像一棵樹一樣生長就不會出現環路。於是,STP中定義了根橋(Root Bridge)、根端口(Root Port)、指定端口(Designated Port)、路徑開銷(Path Cost)等概念,目的就在於通過構造一棵樹的方法達到裁剪冗餘環路的目的,同時實現鏈路備份和路徑最優化。用於構造這棵樹的算法稱為生成樹算法(Spanning Tree Algorithm)。
要實現這些功能,網橋之間必須要進行一些信息的交互,這些信息交互單元就稱為BPDU(Bridge Protocol Data Unit,橋協議數據單元),也稱為配置消息。本文中將把生成樹協議的協議報文均簡稱為BPDU。STP BPDU是一種二層報文,目的MAC是多播地址01-80-C2-00-00-00,所有支持STP的網橋都會接收並處理收到的BPDU報文。該報文的數據區裏攜帶了用於生成樹計算的所有有用信息。
STP的工作過程是:首先進行根橋的選舉。選舉的依據是網橋優先級和網橋MAC地址組合成的橋ID,橋ID最小的網橋將成為網絡中的根橋,它的所有端口都連接到下遊橋,所以端口角色都成為指定端口。接下來,連接根橋的下遊網橋將各自選擇一條 “最粗壯”的樹枝作為到根橋的路徑,相應端口的角色就成為根端口。循環這個過程到網絡的邊緣,指定端口和根端口確定之後一棵樹就生成了。生成樹經過一段時間(默認值是30秒左右)穩定之後,指定端口和根端口進入轉發狀態,其他端口進入阻塞狀態。STP BPDU會定時從各個網橋的指定端口發出,以維護鏈路的狀態。如果網絡拓撲發生變化,生成樹就會重新計算,端口狀態也會隨之改變。這就是生成樹的基本原理。
隨著應用的深入和網絡技術的發展,STP的缺點在應用中也被暴露了出來。STP的缺陷主要表現在收斂速度上。
當拓撲發生變化,新的配置消息要經過一定的時延才能傳播到整個網絡,這個時延稱為Forward Delay,協議默認值是15秒。在所有網橋收到這個變化的消息之前,若舊拓撲結構中處於轉發的端口還沒有發現自己應該在新的拓撲中停止轉發,則可能存在臨時環路。為了解決臨時環路的問題,STP使用了一種定時器策略,即在端口從阻塞狀態到轉發狀態中間加上一個隻學習MAC地址但不參與轉發的中間狀態,兩次狀態切換的時間長度都是Forward Delay,這樣就可以保證在拓撲變化的時候不會產生臨時環路。但是,這個看似良好的解決方案實際上帶來的卻是至少兩倍Forward Delay的收斂時間,這在某些實時業務(如語音視頻)中是不能接受的。
為了解決STP的收斂速度缺陷,2001年IEEE定義了基於IEEE 802.1w(已經合入IEEE 802.1D-2004)標準的快速生成樹協議RSTP。RSTP在STP基礎上做了三點重要改進,加快了收斂速度(最快可在1秒以內):
(1) 為根端口和指定端口設置了快速切換用的替換端口(Alternate Port)和備份端口(Backup Port)兩種角色。當根端口失效的情況下,替換端口就會快速轉換為新的根端口並無時延地進入轉發狀態;當指定端口失效的情況下,備份端口就會快速轉換為新的指定端口並進入轉發狀態。
(2) 在隻連接了兩個交換端口的點對點鏈路中,指定端口隻需與下遊網橋進行一次握手就可以無時延地進入轉發狀態。如果是連接了三個以上網橋的共享鏈路,下遊網橋是不會響應上遊指定端口發出的握手請求的,隻能等待兩倍Forward Delay時間進入轉發狀態。
(3) 直接與終端相連而不與其他網橋相連的端口定義為邊緣端口(Edge Port)。邊緣端口可以直接進入轉發狀態,不需要任何延時。由於網橋無法知道端口是否是直接與終端相連,所以需要人工配置。
RSTP相對於STP的確有很多改進,並且向下兼容STP,可以混合組網。但是,RSTP和STP一樣同屬於SST(Single Spanning Tree,單生成樹),有它自身的諸多缺陷,主要表現在三個方麵:
(1) 由於整個交換網絡隻有一棵生成樹,在網絡規模比較大的時候會導致較長的收斂時間。
(2) 因為RSTP是單生成樹協議,所有VLAN共享一棵生成樹,為了保證VLAN內部可以正常通信,網絡內每個VLAN都必須沿著生成樹的路徑方向連續分布,否則將會出現有的VLAN由於內部鏈路被阻塞而被分隔開,從而導致VLAN內部無法通信的問題。
(3) 當某條鏈路被阻塞後將不承載任何流量,無法實現負載均衡,造成了帶寬的極大浪費。
這些缺陷都是單生成樹無法克服的,於是支持VLAN的PVST和MSTP出現了。
在每個VLAN中生成一棵樹,是一種直接簡單的解決RSTP缺陷的方法。基於此思想,PVST協議應運而生,它能夠保證每一個VLAN都不存在環路。
PVST協議可以簡單理解為在每個VLAN上運行一個RSTP,不同VLAN之間的生成樹完全獨立。根據端口類型的不同,PVST收發的BPDU的格式也有所不同:
· 對於Access端口,PVST協議收發標準的RSTP BPDU。
· 對於Trunk和Hybrid端口,在所有允許通過的VLAN內收發各自的PVST BPDU,同時在其中的VLAN 1內收發標準的RSTP BPDU。
PVST BPDU 和RSTP BPD的內容相同,僅以太網的封裝格式不同。
PVST協議在VLAN間實現了數據的負載均衡,有效地提高了鏈路帶寬的利用率,同時也帶來了新問題,主要有以下缺點:
(1) 由於每個VLAN都需要生成一棵樹,PVST BPDU的通信量將正比於Trunk端口允許通過的VLAN數量。
(2) 在VLAN數量比較多時,維護多棵生成樹的計算量和資源占用量將急劇增長。特別是當允許通過很多VLAN的Trunk端口狀態變化時,所有生成樹的狀態都要重新計算,網絡設備的CPU將不堪重負。
上述缺點限製了運行PVST的VLAN端口數量,對PVST的部署產生較大影響,這些缺點在MSTP中得到了解決。
MSTP是IEEE 802.1s(已經合入IEEE 802.1Q-2011)中定義的一種新型生成樹協議,相對於之前的生成樹協議,優勢非常明顯。MSTP的特點如下:
· MSTP引入“域”的概念,把一個交換網絡劃分成多個域。每個域內形成多棵生成樹,生成樹之間彼此獨立;在域間,MSTP利用CIST保證全網絡拓撲結構的無環路存在。
· MSTP引入“實例(Instance)”的概念,將多個VLAN映射到一個實例中,以節省通信開銷和資源占用率。MSTP各個實例拓撲的計算是獨立的(每個實例對應一棵單獨的生成樹),在這些實例上就可以實現VLAN數據的負載分擔。
· PVST最多支持 4096個VLAN,而MSTP最多可支持65個實例,因此其所需資源和計算量都大大降低。
· MSTP BPDU中包含所有實例的信息,因此MSTP相比於PVST,報文數量大大降低。
· MSTP可以實現類似RSTP的端口狀態快速遷移機製。
· MSTP兼容STP和RSTP。
在圖1中的每台設備都運行MSTP。下麵將結合圖1解釋MSTP的一些基本概念。
圖1 MSTP基本概念示意圖
(1) MST域
MST域是由交換網絡中的多台設備以及它們之間的網段所構成。這些設備具有下列特點:都啟動了MSTP;具有相同的域名;具有相同的VLAN到生成樹實例映射配置;具有相同的MSTP修訂級別配置;這些設備之間在物理上有鏈路連通。例如,圖1中的區域A0就是一個MST域。
(2) VLAN映射表
VLAN映射表是MST域的一個屬性,用來描述VLAN和生成樹實例的映射關係。例如,圖1中MST域A0的VLAN映射表就是:VLAN 1映射到生成樹實例1,VLAN 2映射到生成樹實例2,其餘VLAN映射到CIST。
(3) IST
IST是域內實例0上的生成樹。IST和CST共同構成整個交換網絡的CIST。IST是CIST在MST域內的片段。圖1中,CIST在每個MST域內都有一個片段,這個片段就是各個域內的IST。
(4) CST
CST是連接交換網絡內所有MST域的單生成樹。如果把每個MST域看作是一個“設備”,CST就是這些“設備”通過STP、RSTP計算生成的一棵生成樹。圖1中紅色線條描繪的就是CST。
(5) CIST
CIST是連接一個交換網絡內所有設備的單生成樹,由IST和CST共同構成。圖1中,每個MST域內的IST加上MST域間的CST就構成整個網絡的CIST。
(6) MSTI
一個MST域內可以通過MSTP生成多棵生成樹,各棵生成樹之間彼此獨立。每棵生成樹都稱為一個MSTI。例如圖1中,每個域內可以存在多棵生成樹,每棵生成樹和相應的VLAN對應。這些生成樹就被稱為MSTI。
(7) 域邊界端口
域邊界端口是指位於MST域的邊緣,用於連接不同MST域、MST域和運行STP的區域、MST域和運行RSTP的區域的端口。
(8) 橋ID
由橋的優先級和MAC地址組成。
(9) 總根
總根是指CIST實例中橋ID最優的橋。
外部根路徑開銷指的是端口到總根的最短路徑開銷。
(11) 域根
MST域內的IST和每個MSTI的根橋都是一個域根。MST域內各棵生成樹的拓撲不同,域根也可能不同。
(12) 內部根路徑開銷
到域根的最短路徑開銷。
由指定橋的優先級和MAC地址組成。
由指定端口的優先級和端口號組成。
(15) 端口角色
在MSTP的計算過程中,端口角色有根端口、指定端口、Master端口、Alternate端口和Backup端口。端口在不同的生成樹實例中可以擔任不同的角色。端口角色示意如圖2所示。
· 根端口:負責向根橋方向轉發數據的端口。
· 指定端口:負責向下遊網段或設備轉發數據的端口。
· Master端口:連接MST域到總根的端口,位於整個域到總根的最短路徑上。Master端口在IST/CIST上的角色是根端口,而在其它MSTI上的角色則是Master端口。
· Alternate端口:根端口和Master端口的備份端口。當根端口或Master端口被阻塞後,Alternate端口將成為新的根端口或Master端口。
· Backup端口:當開啟了MSTP的同一台設備的兩個端口互相連接時就存在一個環路,此時設備會阻塞端口ID較小的端口,此阻塞端口稱為Backup端口,而另外一個端口則處於轉發狀態,成為指定端口。Backup端口是指定端口的備份端口,當指定端口被阻塞且無法發送協議報文後,Backup端口的報文超時後就會快速轉換為新的指定端口,並無時延的轉發數據。
(16) 端口狀態
MSTP中,同一端口在不同的MSTI中的端口狀態可以不同。
根據端口是否學習MAC地址和是否轉發用戶流量,可將端口狀態劃分為以下三種:
· Forwarding狀態:學習MAC地址,轉發用戶流量;
· Learning狀態:學習MAC地址,不轉發用戶流量;
· Discarding狀態:不學習MAC地址,不轉發用戶流量。
各台設備的各個端口在初始時會生成以自己為根橋的配置消息,總根和域根都是本橋ID,外部根路徑開銷和內部根路徑開銷全為0,指定橋ID為本橋ID,指定端口為本端口,接收BPDU報文的端口為0。
端口角色的選擇原則中涉及到多種優先級向量,這些優先級向量的含義以及計算方法的介紹,請參考“2.2.3 優先級向量計算”。隻要端口收到的消息優先級向量優於其端口優先級向量,就會引起所有優先級向量的重新計算,並且也會重新計算每個端口的角色。
端口角色的選擇原則如表1所示。
端口角色 | 選擇原則 |
根端口 | 端口的端口優先級向量優於其指定優先級向量,且設備的根優先級向量取自該端口的根路徑優先級向量 |
指定端口 | 端口的指定優先級向量優於其端口優先級向量 |
Master端口 | 域邊界根端口在MSTI實例上的角色就是Master端口 |
Alternate端口 | 端口的端口優先級向量優於其指定優先級向量,但設備的根優先級向量不是取自該端口的根路徑優先級向量 |
Backup端口 | 端口的端口優先級向量優於其指定優先級向量,但端口優先級向量中的指定橋ID為本設備的橋ID |
所有網橋的MSTP角色都是通過報文中攜帶的信息計算出來的,其中報文中攜帶的最重要的信息就是生成樹的優先級向量。下麵將分別介紹一下CIST優先級向量和MSTI優先級向量的計算方法。
在CIST中優先級向量由總根、外部根路徑開銷、域根、內部根路徑開銷、指定橋ID、指定端口ID和接收BPDU報文的端口ID組成。
為了方便後續描述,現做如下假設:
· 初始情況下,網橋B的端口PB對外發送報文中攜帶的信息如下:總根為RB,外部根路徑開銷為ERCB,域根為RRB,內部根路徑開銷為IRCB,指定橋ID為B,指定端口ID為PB,接收BPDU報文的端口ID為PB;
· 網橋B的端口PB收到網橋D的端口PD發送過來的報文中攜帶的信息如下:總根為RD,外部根路徑開銷為ERCD,域根為RRD,內部根路徑開銷為IRCD,指定橋ID為D,指定端口ID為PD,接收BPDU報文的端口ID為PB;
· 網橋B的端口PB收到的網橋D的端口PD發送過來的報文的優先級較高。
根據上述假設,下麵將逐一介紹各優先級向量的計算方法。
(1) 消息優先級向量
消息優先級向量是MSTP報文中所攜帶的優先級向量。根據假設,網橋B的端口PB收到的消息優先級向量即為:{RD : ERCD : RRD : IRCD : D : PD : PB}。如果網橋B和網橋D不在同一個域,那麼內部根路徑開銷對網橋B而言是毫無意義的,它會被賦值為0。
(2) 端口優先級向量
在初始情況下,端口優先級向量的信息是以自己為根。端口PB的端口優先級向量為:{RB : ERCB : RRB : IRCB : B : PB : PB}。
端口優先級向量是隨端口收到的消息優先級向量更新的:如果端口收到的消息優先級向量優於端口優先級向量,則將端口優先級向量更新為消息優先級向量;否則,端口優先級向量保持不變。由於端口PB收到的消息優先級向量優於端口優先級向量,所以端口優先級向量更新為:{RD : ERCD : RRD : IRCD : D : PD : PB}。
(3) 根路徑優先級向量
根路徑優先級向量由端口優先級向量計算所得:
· 如果端口的優先級向量來自不同域的網橋,根路徑優先級向量的外部根路徑開銷為端口的路徑開銷和端口優先級向量的外部根路徑開銷之和,根路徑優先級向量的域根為本橋的域根,內部根路徑開銷為0。假設網橋B的端口PB的路徑開銷為PCPB,則端口PB的根路徑優先級向量為:{RD : ERCD+ PCPB : B : 0 : D : PD : PB};
· 如果端口優先級向量來自同一域的網橋,根路徑優先級向量的內部路徑開銷為端口優先級向量的內部根路徑開銷和端口路徑開銷之和,計算後端口PB的根路徑優先級向量為:{RD : ERCD: RRD : IRCD + PCPB : D : PD : PB}。
(4) 橋優先級向量
橋優先級向量中總根ID、域根ID以及指定橋ID都是本橋ID,外部根路徑開銷和內部根路徑開銷為0,指定端口ID和接收端口ID也全為0。網橋B的橋優先級向量為:{B : 0 : B : 0 : B : 0 : 0}。
(5) 根優先級向量
根優先級向量是橋優先級向量和所有指定橋ID和本橋ID值不相同的根路徑優先級向量的最優值,如果本橋優先級向量比較優,那麼本橋就為CIST總根。假設網橋B的橋優先級向量最優,則網橋B的根優先級向量為:{B : 0 : B : 0 : B : 0 : 0}。
(6) 指定優先級向量
端口的指定優先級向量由根優先級向量計算所得,將根優先級向量的指定橋ID替換為本橋ID,指定端口ID替換為自己的端口ID。網橋B的端口PB的指定優先級向量為:{B : 0 : B : 0 : B : PB : 0}。
MSTI的各優先級向量計算的規則和CIST優先級向量計算規則是基本一致的,存在兩點區別:
· MSTI優先級向量中沒有總根和外部根路徑開銷,僅由域根、內部根路徑開銷、指定橋ID、指定端口ID和接收BPDU報文的端口ID組成。
· MSTI隻處理來自同一域的消息優先級向量。
下麵結合圖3的組網對CIST實例的計算過程進行簡要說明。假設,網橋的優先級為Switch A優於Switch B,Switch B優於Switch C,4、5、10分別為鏈路的路徑開銷。Switch A和Switch B屬於同一域,Switch C單獨一個域。
圖3 MSTP算法計算過程組網圖
圖3中各設備的初始情況下對外發送的報文中攜帶的消息優先級向量如表2所示。
設備 | 端口 | 報文中的消息優先級向量 |
Switch A | AP1 | {A:0:A:0:A:AP1:0} |
AP2 | {A:0:A:0:A:AP2:0} | |
Switch B | BP1 | {B:0:B:0:B:BP1:0} |
BP2 | {B:0:B:0:B:BP2:0} | |
Switch C | CP1 | {C:0:C:0:C:CP2:0} |
CP2 | {C:0:C:0:C:CP2:0} |
設備各端口的端口優先級向量與消息優先級向量在初始情況下是保持一致的。
在初始情況下各設備的端口都會被計算為指定端口且對外發送以自己為根橋的消息優先級向量。
Switch A的端口AP1和端口AP2會分別收到來自Switch B和Switch C的報文,Switch A會將端口AP1以及AP2的端口優先級向量和收到的來自其它交換機的消息優先級向量進行比較,由於AP1和AP2的端口優先級向量優於報文中攜帶的消息優先級向量,端口AP1和AP2端口角色不變仍為指定端口,設備Switch A為總根且為Switch A和Switch B所在域的域根。此後端口定時對外傳播以自己為根的消息。
端口優先級向量和消息優先級向量的比較、處理過程為:
· 逐一比較端口優先級向量和消息優先級向量中的各元素,元素值較小的優先級向量較優,當各 元素都相等時,端口優先級向量和消息優先級向量相等;
· 當消息優先級向量優於端口優先級向量或者消息優先級向量中的指定橋ID的橋MAC和指定端口ID分別和端口優先級向量中的指定橋ID的橋MAC和指定端口ID一致時,用消息優先級向量替換端口優先級向量。
Switch B的端口BP1收到來自Switch C的端口CP1的報文後,將消息優先級向量和端口優先級向量比較,由於端口優先級向量優於消息優先級向量,端口角色不更新。
Switch B的端口BP2收到來自Switch A的端口AP2的報文後,處理過程如下:
(1) 將端口的消息優先級向量和端口優先級向量進行比較。由於端口的消息優先級向量優於端口優先級向量,將端口的端口優先級向量更新為消息優先級向量{A:0:A:0:A:AP2:BP2};
(2) 計算端口的根路徑優先級向量。Switch A和Switch B在同一域內,端口的根路徑優先級向量為{A:0:A:10:A:AP2:BP2};
(3) 計算Switch B的根優先級向量。隻有端口BP2的根路徑優先級向量是來自其它設備,由於端口BP2的根路徑優先級向量優於Switch B的橋優先級向量,Switch B的根優先級向量為{A:0:A:10:A:AP2:BP2};
(4) 指定優先級向量計算。端口BP1的指定優先級向量為{A:0:A:10:B:BP1:BP2},端口BP2的指定優先級向量為{A:0:A:10:B:BP2:BP2}。
端口角色的確定:將端口BP1和BP2的指定優先級向量和端口優先級向量進行比較,由於BP1的指定優先級向量優於端口優先級向量,則BP1角色為指定端口,定時對外發送以Switch A為總根和域根的指定優先級向量{A:0:A:10:B:BP1:BP2};由於BP2的端口優先級向量優於指定優先級向量、且根優先級向量取自端口BP2的根路徑優先級向量,則BP2角色為根端口。
Switch C的端口CP1收到來自Switch B未更新前的消息優先級向量{B:0:B:0:B:BP1:CP1},端口CP2收到來自Switch A的消息優先級向量{A:0:A:0:A:AP1:CP2},經過分別比較,CP1和CP2的消息優先級向量均優於端口優先級向量,因此分別更新CP1和CP2的端口優先級向量為{B:0:B:0:B:BP1:CP1}和{A:0:A:0:A:AP1:CP2}。由於Switch C與Switch A和Switch B不在同一域,端口CP1的根路徑優先級向量為{B:5:C:0:B:BP1:CP1},端口CP2的根路徑優先級向量為{A:4:C:0:A:AP1:CP2},CP2的根路徑優先級向量優於CP1的根路徑優先級向量,則根優先級向量為{A:4:C:0:A:AP1:CP2}。端口CP1和CP2的指定優先級向量分別為{A:4:C:0:C:CP1:CP2}和{A:4:C:0:C:CP2:CP2},端口CP1被計算為指定端口,CP2被計算為根端口。
Switch C的端口CP1收到來自BP1更新後的消息優先級向量{A:0:A:10:B:BP1:CP1}後,經過比較CP1的消息優先級向量優於端口優先級向量,更新端口優先級向量為{A:0:A:10:B:BP1:CP1},端口CP1計算後的根路徑優先級向量為{A:5:C:0:B:BP1:CP1}。由於端口CP2收到的消息優先級向量沒有變化,根據前麵的計算,端口CP2的根路徑優先級向量保持為{A:4:C:0:A:AP1:CP2},CP2的根路徑優先級向量優於CP1的根路徑優先級向量,則根優先級向量為{A:4:C:0:A:AP1:CP2}。端口CP1和CP2的指定優先級向量分別為{A:4:C:0:C:CP1:CP2}和{A:4:C:0:C:CP2:CP2}。CP1的端口優先級向量優於其指定優先級向量、但根優先級向量不是取自端口CP1的根路徑優先級向量,故CP1角色為Alternate端口。CP2仍為根端口。
設備和端口的角色確定之後,整個樹形拓撲就建立完畢了。經過上述計算後的流量轉發線路如圖4所示。
生成樹的工作模式有以下四種:
· STP模式:設備的所有端口都將向外發送STP BPDU。
· RSTP模式:設備的所有端口都向外發送RSTP BPDU。當端口收到對端設備發來的STP BPDU時,會自動遷移到STP模式;如果收到的是MSTP BPDU,則不會進行遷移。
· MSTP模式:設備的所有端口都向外發送MSTP BPDU。當端口收到對端設備發來的STP BPDU時,會自動遷移到STP模式;如果收到的是RSTP BPDU,則不會進行遷移。
· PVST模式:設備的所有端口都向外發送PVST BPDU,每個VLAN維護一棵生成樹。
工作在RSTP/MSTP模式的設備可以自動遷移到STP模式下工作,但是工作在STP模式下的設備不能自動遷移到RSTP/MSTP模式,此時需要用戶執行mCheck操作來迫使工作模式發生遷移。假設在一個交換網絡中,運行MSTP(或RSTP)的設備的端口連接著運行STP的設備,該端口會自動遷移到STP模式下工作;但是此時如果運行STP的設備被拆離,該端口不能自動遷移到MSTP(或RSTP)模式下運行,仍然會工作在STP模式下。此時可以通過執行mCheck操作迫使其遷移到MSTP(或RSTP)模式下運行。
在STP模式和RSTP模式下可以配置多實例,MSTI各端口狀態和CIST保持一致。為了減小CPU的負擔,建議在STP和RSTP模式下最好不要配置多實例。
Comware STP支持3種Path Cost缺省值的計算方法:IEEE 802.1D-1998標準方法、IEEE 802.1t標準方法和Comware的私有計算方法。
IEEE 802.1D-1998和IEEE 802.1t標準的Path Cost缺省值的基本計算請參考協議文本,下麵主要介紹對標準協議的一些擴充以及Comware的私有計算方法。
(1) 對IEEE 802.1D-1998標準方法的擴充
對於聚合鏈路,IEEE 802.1D-1998並沒有具體的規定,它沒有區分聚合鏈路和單端口鏈路的優先級別的不同,因此對於IEEE 802.1D-1998中聚合鏈路STP的Path Cost值不用考慮聚合鏈路數。
(2) 對IEEE 802.1t標準方法的擴充
IEEE 802.1t Path Cost計算標準中,端口Path Cost值計算公式為:20,000,000,000 / Link Speed in Kbps,聚合鏈路速率為聚合鏈路中所有選中端口速率相加。
(3) Comware的私有計算方法
聚合鏈路速率為所有unblock端口速率相加。
協議中規定,端口收到的STP報文超時時間rcvdinfowhile小於等於3倍hello time,超過rcvdinfowhile後端口還未收到STP報文就會重新計算STP拓撲。在實際組網中,可能會出現由於設備負載較重端口不能及時收到STP報文導致rcvdinfowhile定時超時而引起網絡拓撲震蕩,為了解決該問題引入了超時因子。可以根據實際的組網情況設置超時因子,從而改變報文的超時時間,增強網絡的穩定性。
超時時間=超時因子×3×hello time。
STP可以通過計算來確定生成樹的根橋,用戶也可以通過交換機提供的命令來指定當前交換機為根橋。
當根橋出現故障或被關機時,備份根橋可以取代根橋成為生成樹的根橋;但是此時如果用戶設置了新的根橋,則備份根橋將不會成為根橋。如果用戶為生成樹配置了多個備份根橋,當根橋失效時,STP將選擇MAC地址最小的那個備份根橋作為根橋。當根橋和備份根橋都失效時,STP將通過協議計算來自動選舉根橋。
在MSTP或PVST中,交換機上可以基於MSTI或VLAN運行多個生成樹實例,用戶可以將當前交換機指定為生成樹實例的根橋或備份根橋。當前交換機在各棵生成樹實例中的根類型互相獨立,它可以作為一棵生成樹實例的根橋或備份根橋,同時也可以作為其他生成樹實例的根橋或備份根橋。在同一棵生成樹實例中,同一台交換機不能既作為根橋,又作為備份根橋。
對於接入層設備,接入端口一般直接與用戶終端(如PC機)或文件服務器相連,此時可以設置接入端口為邊緣端口以實現這些端口的快速遷移。正常情況下,邊緣端口不會收到生成樹協議的配置消息(BPDU報文),但是,如果有人偽造配置消息惡意攻擊交換機,當邊緣端口接收到配置消息時,係統會自動將這些端口設置為非邊緣端口,重新進行生成樹的計算,這將引起網絡拓撲的震蕩。BPDU保護功能可以防止這種網絡攻擊。
交換機上啟動了BPDU保護功能以後,如果邊緣端口收到了配置消息,係統就將這些端口關閉,同時通知網管。被關閉端口在一定時間之後可以自動恢複。推薦用戶在配置了邊緣端口的交換機上配置BPDU保護功能。
由於維護人員的錯誤配置或網絡中的惡意攻擊,網絡中的合法根橋有可能會收到優先級更高的配置消息,這樣當前根橋會失去根橋的地位,引起網絡拓撲結構的錯誤變動。假設原來的流量是經過高速鏈路轉發的,這種不合法的變動,會導致原來通過高速鏈路的流量被牽引到低速鏈路上,導致網絡擁塞。Root保護功能和角色限製功能可以防止這種情況的發生。
對於設置了Root保護功能的端口,端口角色隻能保持為指定端口。一旦這種端口上收到了優先級高的配置消息,這些端口的狀態將被設置為Discarding狀態,不再轉發報文。當在足夠長的時間內沒有收到更優的配置消息時,端口會恢複原來的狀態。
對於設置了角色限製功能的端口,端口角色被限製不能成為根端口。正常情況下這些端口被計算為指定端口,一旦端口上收到了優先級高的配置消息,這些端口的角色將被計算為Alternate端口、狀態將被設置為阻塞狀態,不再轉發報文。當在足夠長的時間內沒有收到更優的配置消息時,端口會恢複原來的角色和狀態。
角色限製功能在IEEE 802.1Q中定義,優先推薦使用。在MSTP中,此功能對所有實例都起作用;在PVST中,此功能對所有VLAN都起作用。
交換機各端口的端口狀態依靠不斷接收上遊交換機發送的BPDU來維持。但是由於鏈路擁塞或者單向鏈路故障,根端口會收不到上遊交換機的BPDU。此時下遊交換機會重新選擇根端口,原來的根端口經過計算後會變為指定端口,而原來的阻塞端口重新計算後會變為根端口且遷移到轉發狀態,從而交換網絡中會產生環路。環路保護功能和Dispute機製會抑製這種環路的產生。
在啟動了環路保護功能後,根端口、Alternate端口和Backup端口的角色一旦發生變化就會變為Discarding狀態,並一直保持在Discarding狀態,不轉發報文,從而不會在網絡中形成環路。
角色限製功能默認在所有端口生效,當端口收到這樣的報文——報文中攜帶指定端口角色和Learning/Forwarding狀態並且報文中的優先級向量低於接收端口的優先級向量,端口的Dispute機製生效,端口被設置為Discarding狀態,阻止網絡形成環路。
下麵結合圖5舉例說明Loop保護功能和Dispute機製。
圖5 Loop保護功能和Dispute機製
Switch A和Switch B都為Comware交換機。假設,Switch A為根交換機,Switch B的端口GigabitEthernet2/1角色為根端口,GigabitEthernet2/2角色為Alternate端口。如果端口GigabitEthernet2/1由於鏈路擁塞收不到Switch A的BPDU報文,經過一段時間後,Switch B重新計算角色,端口GigabitEthernet2/1被計算為指定端口且狀態為Forwarding,GigabitEthernet2/2被計算為根端口且狀態為Forwarding,此時Switch A與Switch B之間的兩條鏈路均可以轉發報文,隻要鏈路中存在廣播報文就會引起廣播風暴。
對於圖5的組網,在GigabitEthernet2/1啟動環路保護功能,當端口GigabitEthernet2/1在一定時間內收不到BPDU報文時,角色就會被計算為指定端口並被設置變為Discarding狀態,從而阻止環路的形成,端口GigabitEthernet2/2會遷移到轉發狀態,進行報文轉發。
對於圖5的組網,當端口GigabitEthernet2/1在一定時間內收不到BPDU報文時,角色就會被計算為指定端口並被設置變為Forwarding狀態,端口GigabitEthernet1/1收到端口GigabitEthernet2/1發送的報文時,Dispute機製會將端口GigabitEthernet1/1設置為Discarding狀態,從而阻止環路的形成。端口GigabitEthernet2/2會遷移到轉發狀態,進行報文轉發。
交換機在接收到TC-BPDU報文(網絡拓撲發生變化的通知報文)後,會執行轉發地址表項的刪除操作。在有人偽造TC-BPDU報文惡意攻擊交換機時,交換機短時間內會收到很多的TC-BPDU報文,頻繁的刪除操作給交換機帶來很大負擔,給網絡的穩定帶來隱患。
TC保護功能使能後,設備在收到TC-BPDU報文後的10秒內,允許收到TC-BPDU報文後立即進行地址表項刪除操作的次數可以由用戶控製(假設次數限製為X)。同時係統會監控在該時間段內收到的TC-BPDU報文數是否大於X,如果大於X,則設備在該時間超時後再進行一次地址表項刪除操作。這樣就可以避免頻繁地刪除轉發地址表項。
用戶接入網絡的拓撲改變會引起核心網絡的轉發地址更新,當用戶接入網絡的拓撲因某種原因而不穩定時,就會對核心網絡形成衝擊。為了避免這種情況,可以在與用戶接入網絡相連的核心網絡端口上使能TC-BPDU傳播限製功能,此後當該端口收到TC-BPDU時,不會再向其它端口傳播。
根據IEEE 802.1s的規定,相連交換機若實現MSTP域內MSTI的互通,它們的域配置(域名、修訂級別、VLAN與實例的映射關係)必須完全一致。MSTP在發送BPDU報文的時候,會把配置ID(配置ID由域名、修訂級別和配置摘要組成,其中配置摘要是由VLAN與實例的映射關係經過HMAC-MD5運算生成的16字節簽名)放到報文中傳輸,相連的交換機就是根據這些信息來判斷發送報文的交換機和自己是否處於同一個域內。
如果其它廠商的配置摘要計算方法和標準中列舉的參考例子不一致,那麼Comware交換機和其它廠商交換機即使域配置相同,各自計算出的配置摘要也會不相同,所以它們不會認為在一個域內,這樣就隻能實現CIST的互通,不能實現MSTI的互通。
Comware MSTP提供如下方法可以和配置摘要計算方法和標準協議不一致的廠商交換機實現域內MSTI的互通。
在保證相連Comware交換機域配置和其它廠商交換機域配置完全一致的前提下,可以通過命令在每一個和其它廠商交換機相連的端口上啟動配置摘要偵聽功能。對於啟動了配置摘要偵聽功能的端口,在接收到其它廠商交換機MSTP報文時,直接認為報文來自域內,同時記錄下報文中的配置摘要;在發送MSTP報文時,將之前記錄的配置摘要填充到發送的報文中,這就保證了其它廠商交換機接收到該報文時也認為它來自域內,這樣Comware MSTP和其它廠商交換機MSTP就可以在MSTI域內互通了。
配置摘要偵聽時,需要注意:
· 配置摘要偵聽功能一定要在Comware交換機和其它廠商交換機的域配置完全相同的條件下啟動,否則可能因為各交換機VLAN與實例映射關係不一致導致廣播風暴。
· 域內和其它廠商交換機相連的每一個端口都必須啟動配置摘要偵聽功能;在域的邊界端口上不能使能配置摘要偵聽功能。
· 不要直接更改啟動了配置摘要偵聽功能的Comware交換機及其相連的其它廠商交換機的域配置。請在更改域配置之前將配置摘要偵聽功能關閉,否則在更改域配置的過程中可能因為各交換機VLAN與實例映射關係不一致導致廣播風暴。
· 如果域內都是Comware交換機,則不必啟動配置摘要偵聽功能。
下麵結合圖6舉例說明配置摘要偵聽功能。
Switch A、Switch B為Comware交換機,Switch C為配置摘要計算方法非標準的其它廠商交換機,所有設備都啟用MSTP,並且域配置都相同。
在組網中,為了實現Switch A與Switch C以及Switch B與Switch C之間的域內互通,必須在Switch A的端口GigabitEthernet1/1和Switch B的端口GigabitEthernet1/2上啟動配置摘要偵聽功能。Switch A與Switch B由於都是Comware設備,不需要啟動配置摘要偵聽功能。
IEEE 802.1Q-2003 MSTP標準協議中規定,指定端口快速遷移的條件就是收到下遊根端口發送的攜帶agreement標誌報文,而根端口發送攜帶agreement標誌報文的前提又是收到上遊指定端口發送攜帶agreement標誌的報文。當交換機(如:RSTP交換機)的指定端口發送的報文中不攜帶agreement標誌時,該交換機作為上遊橋設備與Comware設備MSTP互通時,因為Comware設備根端口無法收到上遊指定端口發送的攜帶agreement標誌的報文,所以不向上遊橋指定端口回應agreement標誌報文,從而導致該交換機的指定端口無法快速遷移。可以通過在Comware設備的端口上啟動No Agreement Check特性來避免端口連接的上遊橋設備為RSTP交換機或者與MSTP實現存在私有性差異的廠商設備時,上遊橋設備不能快速遷移問題。
下麵結合圖7舉例說明No Agreement Check特性。
Switch A為根交換機並為RSTP交換機,Switch B的GigabitEthernet2/1為根端口。為了使Switch A的端口GigabitEthernet1/1能夠快速遷移,應該在Switch B的GigabitEthernet2/1上啟動No Agreement Check。
IEEE 802.1Q-2005 MSTP標準協議對指定端口快速遷移條件做了修訂,根端口發送攜帶agreement標誌報文不再依賴收到上遊指定端口發送攜帶agreement標誌的報文。因此當上遊橋設備為RSTP交換機時,上遊橋設備也能快速遷移。
本特性主要實現Comware設備與支持標準MSTP報文格式設備之間的互通。有了此特性,當標準協議報文格式設備和私有協議報文格式設備混合組網時,就能夠正確地進行網絡拓撲計算。
Comware設備在缺省配置下能自動識別接收的MSTP報文格式,其發送報文格式可以根據接收到的報文格式自動更改,按接收到的報文格式向外發送報文。也可按用戶在端口上的實際配置收發用戶指定格式的報文。Comware設備如果工作在RSTP或STP模式下與其它設備組網,在公共生成樹實例上也能正常互通。
在一般情況下,某個VLAN都會映射到一個MSTP的實例中,此VLAN中的端口在該實例上的轉發狀態由MSTP計算得出。在網絡拓撲比較複雜的情況下,某些VLAN的拓撲可能會被生成樹阻塞,造成該VLAN的業務流量不通,為了解決該問題引入了VLAN Ignore特性。當在該VLAN上啟動VLAN Ignore特性後,該VLAN中每個端口的實際轉發狀態不再遵從MSTP計算出的狀態,而是一直保持Forwarding的狀態。當該VLAN關閉VLAN Ignore特性後,該VLAN中每個端口的實際轉發狀態仍然會遵從MSTP計算出的狀態。
MSTP可以使得同一組網中的不同VLAN的報文按照不同的生成樹進行轉發,從而實現不同VLAN數據的負載分擔和冗餘備份。
圖8 MSTP典型組網圖
如圖8所示,Switch A和Switch B為彙聚層設備,Switch C和Switch D為接入層設備。為了合理均衡各條鏈路上的流量,可以在設備上按照下列思路進行配置:
· 所有設備屬於同一個MST域;
· VLAN 10的報文沿著實例1轉發,實例1的根橋為Switch A;
· VLAN 20的報文沿著實例2轉發,實例2的根橋為Switch B;
· VLAN 30的報文沿著實例3轉發,實例3的根橋為Switch A;
· VLAN 40的報文沿著實例4轉發,實例4的根橋為Switch B。
MSTP計算完成後,不同VLAN流量的轉發路徑如圖9所示,這樣可以大大減少各鏈路的負載。同時,每個VLAN都有一條冗餘備份鏈路,當前工作鏈路失效後,冗餘備份鏈路會馬上生效,大大減小由於鏈路故障而導致的流量丟失。
對於上述組網,也可以部署PVST協議來達到同樣負載分擔和鏈路備份的目的。配置如下:
· VLAN 10的根橋為Switch A;
· VLAN 20的根橋為Switch B;
· VLAN 30的根橋為Switch A;
· VLAN 40的根橋為Switch B。
· IEEE 802.1D-1998:Media Access Control (MAC) Bridges
· IEEE 802.1w:Media Access Control (MAC) Bridges-Amendment 2: Rapid Reconfiguration
· IEEE 802.1D-2004:Media Access Control (MAC) Bridges
· IEEE 802.1s:Virtual Bridged Local Area Networks-Amendment 3: Multiple Spanning Trees
· 802.1Q-2011:Media Access Control (MAC) Bridges and Virtual Bridge Local Area Networks