更新於 2023/07/01閱讀時間約 7 分鐘

RSTP 介紹與應用 (上) 為什麼要有redundant protocol?

本次要介紹Rapid Spanning Tree Protocol (RSTP) 這個protocol的重點與核心,後續將說明應用上的topology。
首先介紹protocol的目的 : 最大的目的就是redundant 簡單講就是Topology(拓樸)中,有一些重要的path想做到有backup path的機制 情況例如:可能是機器損毀,或是線路損毀時,如果在建置Topology時就有預留bakcup 的路徑,此時這個備用路徑就會替代原本的路徑,做到recover的效果。
想到backup path,第一個最簡單的想法就是在topology中,再多一個path可以到達我想要的目的地,這樣應該就行了? 但在網路的環境中,隨意的將拓樸接成loop,這樣只會造成brocast storm,且無法做出redundant的效果。 什麼是loop?,舉兩個例子這樣都算Loop,簡單說就是Topology中接完所有的path後,是相連它後不是一個線性的,是有可能會繞回來的就是loop,此狀況就會造成brocast storm。
左圖與右圖都是Loop的舉例
左圖與右圖都是Loop的舉例

RSTP的第一步會做什麼?與STP的差異在哪裡?

第一步決定Root 與 Port role
在每一台Switch 開啟了RSTP功能時,正在建置這些link時,這些Switch便會透過P/A handshark相互溝通,RSTP是透過每台Switch與相鄰的Switch,互相交換BPDU做P/A handshark,並依照封包中的參數定義,相互比較後,Switch將會選出相對應的角色root or non root 與 相對應的port role。
簡單的說就是自己跟隔壁的鄰居相互傳訊息溝通比較,來依照結果選出角色。 note:P/A handshark 必須在point to point 的狀況下 而整個Topology之中只會有一個Root,除非當原本的Root可能因各種因素掛掉後,才會再選出新的Root。 STP則是在一開始會有20秒的時間也是透過發封包的方式,決定出root跟每個人的port role。

要如何選出Root?

oBirde prority的參數這個值越小的Swtich,則能成為這個Topology中的Root,default的值為32768,這個值一般是可調整的,但也要看你所使用的廠牌的Swtich是否支援調整,就算它不能調整,RSTP也有機制可以選出Root,它會去比較這些開啟RSTP的Swtich中,誰的MAC值最小,最小的機器就會當Root。 note:而所有的設備都會有唯一的MAC address。所以一定會選得出Root。

RSTP Port role有哪些?

總共只有5個Port role 分別為 1.Root Port(RP) 通往Root方向的port 2.Designated port(DP) 傳遞一般data的port 3.Alternate port(AP) 備援Root port的port 4.Backup port(BP) –備援Designated port的port 5.Edge port(EP)–純粹就做Forwarding的Port,不參與RSTP的選角與Topology Change

Port role是怎麼決定的?

在RSTP封包中,帶很多內容,某些參數是用來決定port role的,在Standard的定義中,有定義出要先比較哪些參數,這部分在RSTP 介紹與應用 (下)時為大家做介紹。

RSTP Port status 有哪些?

在STP時有分為Disabled、Blocking、Listening、Learning、Forwarding 然而在RSTP中,僅有Discarding、Learning、Forwarding 這些Prot status,會做哪些事情,將在RSTP 介紹與應用 (下)時為大家做介紹。
RSTP Port status

RSTP Topology Change 的目的為何?

首先Switch中有MAC table(學習SA),這個東西的目的是要記錄這個封包是從哪個Port進到機器中,若下次有人要往這個MAC位址送封包,Swtich就可以知道應該往哪個Port送出封包,封包才會抵達他想要去的目的地。

而Topology change何時會觸發?
Topology Change的目的,就是要通知其目前topology中其他swtich目前有path改變了,收到topology通知的Switch就會清除mac table。 舉例來說,可能path link down了,原path的機器故障了,有新機器接上topology了,這些狀況都會需要傳送出Topology Change。
左圖為原本的topology,右圖為redudant後的結果
沒有丟出Topology Change會有什麼影響?
如果沒有丟出Topology change的通知讓其他Switch清除MAC table,那這個網路環境將需要等到MAC table aging time out的時間到了(通常是300秒),A device想要送給B device的封包這時候才會到,這是一件非常嚴重的事情! 等於有300秒兩者間的通訊是斷線的!
如果下圖方右圖有丟出Topology change時,則至少這個A到B的封包會透過Flooding的方式到達,至少不需要掉包直到MAC table aging time out。 實際情形還是要看環境大小,但多半也就接近1秒的等級就能reocver。
這也是為什麼RSTP可以達到recover的機制,而至於為什麼它比STP快? 因為STP做出topology change的機制時,還需要經過Listening與Learning,這兩種status是不會傳送封包的,而且需要30秒。 當然RSTP除了這種需要recover時要丟出Topology change的機制,它還有Detection的機制,透過time out的方式,這部分在RSTP 介紹與應用 (下)時為大家做介紹。
左圖為一開始都可以收到封包的狀況,右圖 為沒有送出Topology change的狀況

RSTP Edge port 與 Link Type

Oper edge , not Oper edge ; Auto edge 為何不同的設定,port的status從Discarding轉Forwading為何不同? 哪種設定比較適合我的topology? 這部分也將在RSTP 介紹與應用 (下)時為大家做介紹。

RSTP可以跟STP相容嗎?

RSTP是可以向下相容STP的,當RSTP port運作時,若相鄰的Switch是運作STP,對方丟出的STP封包,RSTP是看得懂的,並且可以向下與之相容。 而相容的細節也在RSTP 介紹與應用 (下)時為大家做介紹。
本次的介紹主要就是以RSTP幾個核心的重點概念為主,剩下更細節的部分運作,或是一些topology的應用,在下次的(下)集介紹在為各位分享。
艾克森推薦如果你是想要對網路知識有一些了解,不訪先從ethernet開始 後續或許可以慢慢的了解其他L2的其他的protocol 這次就不給推薦分數了~
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.