曾經我很天真的以爲MST,只是把多個VLAN捆綁成INSTANCE,省去了PVST每個VLAN都跑生成樹的麻煩,後來才知道,絕不僅僅是這樣。
首先說說MSTP的結構,
MSTP採用二級結構。分region跑STP,在同一個region需要滿足:instance(instance是從1-4094)和vlan映射表一致,name一致,revision一致,共三個條件。在每個region內的STP我們稱爲IST。在整個MSTP拓撲中,可以擁有多個region,在region之間跑的生成樹稱爲CST,協議是RSTP(- -)。每個region有一個根橋稱爲regional root,整個系統有一個總根橋。
這裏出現了一個很神奇的東西:instance 0
稱爲CIST實例,vlan映射表是 所有沒有被映射到任何實例的vlan(就是1-4094中,沒有被使用的)
所謂CIST就是CST+IST,簡而言之就是整個網絡。爲什麼要有這個呢?我個人認爲,我們在計算CST的生成樹時,把一個region看成一個交換機,然後再看CST的根橋,根端口,指定端口,再計算出端口角色。但是計算機運算無法把一個region邏輯上看成一個交換機,它還是要從整個CIST着手計算,所以有了實例0的出現,但是它只是爲了計算CST的生成樹,和IST沒什麼聯繫(雖然我們還是可以看到IST的端口出現在實例0中Orz...)。具體計算過程我覺得相當複雜,所以我推薦僅僅把它看做CST的生成樹就好了,寫作instance 0我就當它是RSTP。
下面談談端口角色和類型
端口角色用大家喜聞樂見的:根、指定、替代、備份,多了一些特有的端口角色:主端口和域邊界端口
端口類型:Shr和Shr Bound(RSTP) 參照cisco,其實也就是共享和邊界
端口角色前面4個不說了,主端口指的是某個域的邊界端口,同時在CST的RSTP中的根端口,在instance 0中cisco顯示爲Role=Mstr,Type=Shr Bound(RSTP)。
域邊界端口這個容易理解了,就是域的邊界端口嘛,即CST中的端口,在instance 0中cisco顯示爲,Role=在CST中的RSTP中該是什麼就是什麼,Type=Shr Bound(RSTP)
PS:主端口當然也是域邊界端口。
轉發流程簡單說一下
交換機收到同一區域的包(大概是檢查region.name,region.revision,stp.type等等一致),通過IST轉發,也就是region內同一VLAN內廣播。
交換機收到非同一區域的包(最直接的region.name不同),會向域邊界端口轉發。