STP(spanning tree protocol),生成樹協議,用於在存在環路的網絡中構建樹形拓撲,避免環路,同時實現鏈路的冗餘備份。
STP定義了幾種重要的角色:
1、根橋(Root),樹的根
2、指定橋,就是設備上行連接的一個設備
3、根端口,連接指定橋的端口
4、指定端口,鏈接下行設備的端口
SW1
/ /
/ /
/ /
/ /
port A / /
SW2 SW3
port B| |
| |
| |
| |
port C | |
SW4 SW5
在上圖中,SW1是根橋,SW2是SW4的指定橋,port A是SW2的根端口,port B是SW2的指定端口,port C是SW4的根端口。
在網絡設備上使能了STP之後,設備之間通過發送和接收BPDU(Bridge Protocol Data Unit,就是STP的協議報文),構建樹形拓撲。
BPDU中主要攜帶以下幾個字段:
1、根橋ID,指明樹的根是哪一臺設備。每臺設備都可以設置自己的ID,ID最小的設備成爲樹的根。
2、到根橋的路徑開銷
3、指定橋ID
4、指定橋的指定端口
5、hello time(BPDU發送時間間隔)
6、max age(BPDU消息最大生存時間)
7、message age(BPDU消息當前存活的時間)
8、forward delay(端口角色變化的時延)
在生成樹構建過程中,每一臺設備都從使能了STP協議的端口向外發送BPDU報文,同時也會從各個端口收到其他設備發送過來的BPDU報文。設備會比較收到的各個BPDU報文,選出一個最好的,然後根據這個BPUD報文確定端口角色(是根端口還是指定端口,或者是blocking的端口),當網絡上的所有設備都完成這個過程之後,生成樹就構建好了。
那麼如何選擇最好的BPDU呢?是按照下面的優先級進行比較的:
1、BPDU中根橋ID最小的最好
2、如果根橋ID相同,根路徑開銷最小的最好
3、如果根路徑開銷也相同,指定橋ID最小的最好
4、如果指定橋ID也相同,那麼指定橋的指定端口最小的BPDU最好
構建好生成樹之後,各個設備仍然需要按照hello time間隔向往發送BPDU報文,來對生成樹進行保活。
對於一臺設備的一個端口,如果在定時器時間內沒有從該端口收到BPDU保活報文,那麼說明網絡拓撲已經發生了變化,該設備會重新進行生成樹計算,重新指定端口角色,從而使網絡重新生成一個新的生成樹。
爲了避免臨時環路,端口由blocking狀態轉換的forward狀態需要2倍的forward delay,這大大限制了STP的倒換性能。
STP協議的倒換時間可以控制在1s之內,不過這個倒換時間滿足不了實際應用,於是RSTP協議產生了。
RSTP(Rapid spanning tree protocol),快速生成樹協議,基本原理與STP相同,只不過在STP的基礎了做了三點改進:
1、分別爲根端口和指定端口定義了替換端口和備份端口,如果根端口被阻塞了,那麼替換端口可以無時延的轉換的轉發狀態(不用2倍的forward delay了),指定端口也是如此。
2、新定義了一個握手機制,上下行設備之間只需要一次簡單的握手就可以使設備之間的鏈路處於轉發狀態
3、邊緣端口可以無時延的轉換的轉發狀態
由於上面的改進,RSTP的倒換時間可以控制在毫秒級。
需要注意的時,不是所有的根端口都有替換端口,也不是所有的指定端口都有備份端口,這取決於實際的網絡環境,也就是說,不一定RSTP倒換的就會快。
待續。。。