1. 程式人生 > >Cisco交換機 ——STP

Cisco交換機 ——STP

文章目錄

生成樹協議

目的就是為了消除由網橋或者交換機所組建的二層網路產生的環路

STP使用生成樹演算法建立拓撲資料庫,再找出並禁用冗餘鏈路,在運行了STP的情況下,幀只會被轉發到STP選定的最佳鏈路

冗餘鏈路的存在會造成廣播風暴、多幀複製、MAC地址表抖動的後果

生成樹協議有多個版本,這裡我們首先介紹IEEE802.1dCisco交換機預設使用的就是這個版本

生成樹術語

  • 根網橋
    • 根網橋就是網橋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
    • S2S3之間選擇網橋ID比較小的交換機的埠作為DP,則S3的埠會被選舉為DP,然後S2左邊的埠被阻斷

生成樹協議型別

  • IEEE 802.1d
    • 上面所說的一直都是它,這種型別的STP標準,速度非常慢,但佔用的網橋資源很少,也被稱為公用生成樹(CST)
  • PVST+
    • 是思科專用的改進版STP,為每個VLAN提供一個生成樹例項,速度和CST一樣慢,但是可以有多個根網橋,提高了網路鏈路的效率,同時也佔用了更多的網橋資源
  • IEEE 802.1w
    • 亦稱為快速生成樹協議RSTP,它改進了BPDU的交換方式,為極大地提高網路匯聚速度鋪平了道路,但像CST一樣只允許每個網路中有一個根網橋
    • RSTP佔用的網橋資源介於CSTPVST+之間
  • 快速PVST+
    • 思科專用的改進版RSTP,使用PVST+,其匯聚速度極快,資料傳輸路徑最佳

1、公用生成樹

這種型別的生成樹協議只會產生一個根網橋,也就是所有的VLAN共用一個根網橋,而其他的每個網橋都將確定一條前往根網橋最佳的路徑

但這種解決方案並不是對所有VLAN都是最佳的,因此思科就開發出了自己的CSTPVST+ --> 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代表指定埠

SASD的鏈路選舉指定埠時,我們優先考慮到達根網橋的路徑成本,故而選擇了SA的埠作為該鏈路中的指定埠

SASB之間的鏈路同理

修改和驗證網橋ID

很簡單的一個拓撲圖:

各網橋資訊以及根網橋S2,思科預設執行的是PVSt+

s2VLAN1的根網橋,觀察一下就可以看到,各網橋的優先順序都是32769,這是因為計算實際的優先順序值的時候,需要將優先順序值與sys-id-ext相加,交換機預設優先順序值是32768sys-id-ext值是1,因此最終的優先順序值是32769

sys-id-extPVST+中的擴充套件系統ID欄位

S2的兩個段口都是指定埠Desg,這些資訊在show spanning-tree的結果中都是可以看到的

我們檢視S1的結果,可以看到其到達根網橋的成本是19,因為我們使用的是fast Ethernet100Mbit/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