Cisco交換機 ——STP
文章目錄
生成樹協議
目的就是為了消除由網橋或者交換機所組建的二層網路產生的環路
STP
使用生成樹演算法建立拓撲資料庫,再找出並禁用冗餘鏈路,在運行了STP
的情況下,幀只會被轉發到STP
選定的最佳鏈路
冗餘鏈路的存在會造成廣播風暴、多幀複製、MAC地址表抖動的後果
生成樹協議有多個版本,這裡我們首先介紹IEEE
版802.1d
,Cisco
交換機預設使用的就是這個版本
生成樹術語
- 根網橋
- 根網橋就是網橋
ID
最小(最佳)的網橋,在STP
網路中,交換機選舉一個根網橋,根網橋是網路的核心,其他所有決策都是從根網橋的角度做出的,在選舉出根網橋之後,其他所有的網橋都必須確定前往根網橋的最佳路徑,而這條最佳路徑連線的埠稱為根埠(根網橋上的所有埠都是根埠)
- 根網橋就是網橋
- 非根網橋
- 顧名思義,指的是除根網橋外的其他所有網橋
- 非根網橋與其他所有網橋交換
BPDU
,並更新STP
拓撲資料結庫,這有助於避免環路,並能在鏈路出現故障時採取補救措施(因為他們之間一直都保持通訊,如果發生了故障可以在通訊週期的獲得發生故障的資訊)
- BPDU
- 所有交換機都彼此交換資訊,並根據這些資訊來配置網路
- 每臺交換機都將其傳送給鄰居的
BPDU
引數同從其他鄰居那裡收到的BPDU
引數進行比較,BPDU
包含提供它的網橋的ID
BPDU
幀格式
- 網橋ID
STP
使用網橋ID
跟蹤網路中的所有交換機- 網橋
ID
由網橋優先順序和MAC
地址共同決定 - 網橋
ID
最小的網橋將成為根網橋 - 選舉出根網橋後,其他的每臺交換機都必須確定前往根網橋的最佳路徑
- 大多數網路都將受益於將特定網橋或交換機指定為根網橋(這句話從書上抄的,我也不太明白是啥意思,受益??有什麼可受益的??)
- 要讓特定網橋成為根網橋,可以將其優先順序設定成很低的一個值
- 埠成本
- 兩臺交換機之間有多條鏈路時,將根據埠成本確定最佳路徑
- 鏈路的成本取決於頻寬
- 每個網橋都根據路徑成本確定前往根網橋的最佳路徑
- 路徑成本
- 在交換機和根網橋之間可能隔著一臺或多臺其他的交換機,因此從這臺交換機前往根網橋時,可能存在多條路徑
- 將對前往根網橋的每條路徑進行分析,計算路徑成本,計算方式為:
- 將路徑中各個埠的成本相加
1、埠角色
- **根埠 **
- 從根端口出發前往根網橋的路徑成本最低,如果有多條前往根網橋的路徑,將根據頻寬計算每條路徑的成本,並將成本最低的路徑對應的埠作為根埠
- 如果有多條鏈路連線到同一臺上遊裝置,且經由該上游裝置前往根網橋的路徑成本最低,則將這樣的埠作為根埠,即它連線的上游裝置埠的編號最小
- 根網橋上的每個埠都是根埠,其他的交換機都有且只有一個根埠
- 指定埠
- 指定埠的確定方式是,從該端口出發,前往特定網段的路徑成本最低
- 指定埠將被標記為轉發埠,而對於給定網段,只能有一個轉發埠
- 非指定埠
- 前往給定網段時,從非指定端口出發的路徑成本比從指定端口出發高
- 基本上除了根埠和指定埠之外,其他的埠都是非指定埠
- 非指定埠處於阻斷或丟棄模式,即不進行資料包的轉發
- 轉發埠
- 轉發埠對幀進行轉發,要麼是根埠,要麼是指定埠
- 阻斷埠
- 該型別埠不轉發幀,以免形成環路
- 阻斷埠不斷**偵聽(只是進行偵聽而已)**來自鄰居交換機的
BPDU
幀,其他幀統統被丟棄,且轉發任何幀
- 替代埠
- 這是
802.1w
(思科快速生成樹協議)中的術語,相當於802.1d
中的阻斷埠 - 替代埠位於這樣的交換機上,即該交換機連線的
LAN
網段中還有多臺交換機,且其中一臺交換機有指定埠
- 這是
- 備用埠
- 這是
802.1w
(思科快速生成樹協議)中的術語,相當於802.1d
中的阻斷埠 - 備用埠與指定埠連線到同一個
LAN
段
- 這是
2、埠狀態
在執行IEEE 802.1d STP
的網橋和交換機上,埠有以下5種狀態
- 禁用
- 處於管理性禁用狀態的埠不參與幀轉發和
STP
,處於禁用狀態的埠和down
掉的埠的效果是一樣的
- 處於管理性禁用狀態的埠不參與幀轉發和
- 阻斷
- 阻斷埠不轉發資料幀,只是偵聽
BPDU
而已 - 將埠置於阻斷狀態旨在避免環路,在交換機剛啟動的時候,所有的埠都是處於阻斷狀態的
- 阻斷埠不轉發資料幀,只是偵聽
- 偵聽
- 埠偵聽
BPDU
,確保它對資料幀進行轉發時不會導致環路 - 處於偵聽狀態的埠時刻準備著轉發資料幀,但不填充
MAC
地址表
- 埠偵聽
- 學習
- 交換機埠偵聽
BPDU
並獲悉交換型網路中的所有路徑 - 處於學習狀態的埠填充
MAC
地址表,但不轉發資料幀 - 轉發延遲指的是埠從偵聽模式切換到學習模式或從學習模式切換到轉發模式所需的時間,預設為15秒,這種設定可使用命令
show spanning-tree
來檢視
- 交換機埠偵聽
- 轉發
- 埠收發資料幀
- 學習階段結束後,如果埠為指定埠或根埠,它將切換到轉發狀態
3、會聚
會聚指的是所有網橋和交換機的埠都處於轉發或者阻斷模式
在會聚完畢之前,不會轉發任何資料,在此期間,任何主機都無法通過交換機傳輸資料
在802.1d
中,從阻斷模式過渡到轉發模式預設需要50
秒鐘
因此有其他STP
版本代替802.1d
4、鏈路成本
其實就是一個表
鏈路速度 | 埠成本 |
---|---|
10Mbit/s | 100 |
100Mbit/s | 19 |
1000Mbit/s | 4 |
10000Mbit/s | 2 |
STP工作過程
其實是很簡單的
- 選舉根網橋
RB
- 網橋的
ID
是由優先順序和MAC
共同決定的,從上圖中我們可以看到,他們的優先順序是相等的,然後我們就去比較他們的MAC
地址的值,明顯S1
最小,因此**S1
被選舉為根網橋**
- 網橋的
- 選舉根埠
RP
- 每臺交換機都會確定一個根埠,即唯一一條qi前往根網橋de的路徑,選擇路徑的標準就是路徑成本最低
- 很明顯,選擇直接與根網橋相連的埠作為根埠是最合理的
- 選舉網段中的指定埠
DP
- 在
S2
和S3
之間選擇網橋ID
比較小的交換機的埠作為DP
,則S3
的埠會被選舉為DP
,然後S2
左邊的埠被阻斷
- 在
生成樹協議型別
IEEE 802.1d
- 上面所說的一直都是它,這種型別的
STP
標準,速度非常慢,但佔用的網橋資源很少,也被稱為公用生成樹(CST)
- 上面所說的一直都是它,這種型別的
PVST+
- 是思科專用的改進版
STP
,為每個VLAN
提供一個生成樹例項,速度和CST
一樣慢,但是可以有多個根網橋,提高了網路鏈路的效率,同時也佔用了更多的網橋資源
- 是思科專用的改進版
IEEE 802.1w
- 亦稱為快速生成樹協議
RSTP
,它改進了BPDU
的交換方式,為極大地提高網路匯聚速度鋪平了道路,但像CST
一樣只允許每個網路中有一個根網橋 RSTP
佔用的網橋資源介於CST
和PVST+
之間
- 亦稱為快速生成樹協議
- 快速
PVST+
- 思科專用的改進版
RSTP
,使用PVST+
,其匯聚速度極快,資料傳輸路徑最佳
- 思科專用的改進版
1、公用生成樹
這種型別的生成樹協議只會產生一個根網橋,也就是所有的VLAN
共用一個根網橋,而其他的每個網橋都將確定一條前往根網橋最佳的路徑
但這種解決方案並不是對所有VLAN
都是最佳的,因此思科就開發出了自己的CST
,PVST+
--> Per-VLAN Spanning Tree
2、PVST+
思科專用CST
擴充套件,它讓每一個VLAN
都擁有一個屬於自己的根網橋
為了支援PVST+
,在BPDU
中新增了一個欄位,該欄位包含擴充套件的系統ID
,讓PVST+
能夠為每個STP
例項選擇根網橋,這樣一來,在所有欄位總長度不變的情況下,網橋優先順序欄位就縮短了,從16
位變成了4
位,其中12
位用來作為系統ID欄位
這樣以來,網橋優先順序的增量就變成了4096
(2^12),使用show spanning-tree
可以看到系統ID欄位的值
預設會聚時間和CST
一樣,都是50
秒,的確是有點長,因此出現了新的生成樹協議IEEE 802.1w
3、802.1w
快速生成樹協議調整了CST
的埠狀態,由5
中改成了3
種,這樣一來,狀態間的切換就方便了很多
示例:
三個角色的選舉方法只有三步:
- 根據網橋
ID
選舉出根網橋 - 找出前往根網橋的最佳路徑,以確定根埠
- 根據網橋
ID
確定指定埠- 注意,在為網段選擇指定埠時,優先考慮路徑成本,如果路徑成本相同,再考慮網橋ID
注意:已經當選為根埠的埠不會參與指定埠的選舉
再來看一個示例:
上面這張拓撲圖會聚完成之後的結果是這樣的:(其中的F
代表指定埠)
在SA
和SD
的鏈路選舉指定埠時,我們優先考慮到達根網橋的路徑成本,故而選擇了SA
的埠作為該鏈路中的指定埠
SA
和SB
之間的鏈路同理
修改和驗證網橋ID
很簡單的一個拓撲圖:
各網橋資訊以及根網橋S2,思科預設執行的是PVSt+
s2
是VLAN1
的根網橋,觀察一下就可以看到,各網橋的優先順序都是32769
,這是因為計算實際的優先順序值的時候,需要將優先順序值與sys-id-ext
相加,交換機預設優先順序值是32768
,sys-id-ext
值是1
,因此最終的優先順序值是32769
sys-id-ext
是PVST+
中的擴充套件系統ID欄位
S2
的兩個段口都是指定埠Desg
,這些資訊在show spanning-tree
的結果中都是可以看到的
我們檢視S1
的結果,可以看到其到達根網橋的成本是19
,因為我們使用的是fast Ethernet
(100Mbit/s
),根埠是Fa0/1
我們可以使用show cdp neighbors
來檢視交換機的鄰居交換機的資訊
使用spanning-tree vlan 2 priority ?
命令為交換機設定其在某一VLAN
中的優先順序值,在PVST+
中,交換機的優先順序因該是4096
的倍數
另一種方式是直接指定根網橋,spanning-tree vlan 2 root primary
最後說一下如何在cisco
交換機中啟用RSTP
,這個只需要一條命令即可:
spanning-tree mode rapid-pvst