網絡技術:PVST+ 和快速 PVST+


STP 生成樹協議

在交換機之間配置冗余鏈路是很好的做法,因為一旦某個鏈路出現了故障,冗余鏈路可以防止整個網絡的崩潰。但是網絡傳播的數據幀會在所有冗余鏈路上同時被泛洪開來,這會導致網絡環路和從而導致如下的問題:

  1. MAC 數據庫不穩定:當出現環路時,交換機的 MAC 地址表可能會使用廣播幀不斷更新;
  2. 廣播風暴:由於廣播流量是從交換機的每個端口轉發出去,所有相連的設備都必須處理環路網絡中洪泛的廣播流量;
  3. 幀的多重傳輸:單播幀的多個副本傳送到相同的目的站點。

路由選擇協議可以防止在網絡層形成網絡環路,然而對於因交換機之間形成的環路無能為力。生成樹協議 STP 可以防止在第 2 層交換式網絡中形成環路,STP 會特意阻塞可能導致環路的冗余路徑,以確保網絡中所有目的地之間只有一條邏輯路徑。端口處於阻塞狀態時,用戶數據將無法進入或流出該端口。不過,STP 用來防止環路的 BPDU(網橋協議數據單元)幀仍可繼續通行。一旦需要啟用此類路徑來抵消網絡電纜或交換機故障的影響,STP 就會重新計算路徑,將必要的端口解除阻塞,使冗余路徑進入活動狀態。

根網橋

以下是 STP 協議的一些術語:

  • 根橋:根橋是指擁有最佳橋 ID 的網橋,網絡中所有其他決策都需要基於與根橋的關系進行選擇。
  • BPDU:指網絡中所有交換機都需要相互交換的、用於根交換機選舉的信息。
  • 橋 ID:STP 使用橋 ID 跟蹤網絡中的所有交換機,由橋優先級和橋MAC地址共同決定。
  • 非根橋:除了根橋外的所有網橋,非根橋會與所有的網橋交換 BPDU,更新 STP 拓撲數據庫以防止環路。
  • 端口開銷:存在多條鏈路時,端口開銷用於確定最佳路徑,取決於鏈路的帶寬。

具有最低 BID 的交換機將作為根網橋,一開始所有交換機自稱為根網橋,最終交換機互相交換 BPDU 達成一致。具體而言,每台交換機都會將包含其 BID 和根 ID 的 BPDU 幀轉發到廣播域中的鄰接交換機。接收方交換機將其當前根 ID 與接收到的幀中標識的根 ID 進行比較。如果接收到的根 ID 較小,則接收方交換機使用較小的根 ID 更新其根 ID,然后將含有較小根 ID 的新 BPDU 幀轉發給其他鄰接交換機,最終具有最小 BID 的交換機被確定為生成樹實例的根網橋。
為生成樹實例選出根網橋后,STA 便開始確定到根網橋的最佳路徑。交換機發送 BPDU 包括根路徑開銷,算法是將從交換機到根網橋的路徑上沿途的每個端口開銷加在一起。端口開銷由端口的運行速度決定:

鏈路速度 開銷
10 Gbit/s 2
1 Gbit/s 4
100 Mbit/s 19
10 Mbit/s 100

端口角色

STA 確定到每台交換機的最佳路徑之后,會為相關交換機端口分配端口角色。端口角色描述了網絡中端口與根網橋的關系,以及端口是否能轉發流量。

端口角色 說明
根端口 在所有非根網橋交換機上最接近根網橋的交換機端口
指定端口 允許轉發流量的非根端口,若網段的一端是根端口則另一端是指定端口,根網橋上的所有端口都是指定端口
替代端口和備用端口 替代端口和備用端口處於丟棄或阻塞模式
禁用端口 禁用端口是關閉的交換機端口

端口狀態

交換機完成啟動后,生成樹便立即確定。如果交換機端口直接從阻塞狀態轉換到轉發狀態,而轉換過程中沒有關於完整拓撲的信息,那么端口會臨時形成數據環路。為此 STP引入了 5 種端口狀態:

端口狀態 說明
阻塞狀態 該端口是替代端口,不參與幀轉發
偵聽狀態 偵聽到根網橋的路徑
學習狀態 學習 MAC 地址,填充 MAC 地址表
轉發狀態 轉發數據幀並且發送和接收BPDU幀
禁用狀態 端口不參與生成樹,不會轉發幀

PVST+ 和快速 PVST+

最初的 802.1D 標准定義 STP 協議整個交換網絡只有一個生成樹實例,它有着如下 2 個缺點:

  1. 無法進行負載共享,一條上行鏈路必須阻塞所有 VLAN。
  2. CPU 閑置,只需要計算一個生成樹實例,計算該實例后 CPU 閑置。

思科開發了 PVST+,使得交換機上的一個中繼端口可以阻止某個 VLAN 並轉發其他 VLAN,以此實施第 2 層負載均衡。與傳統 STP 相比,PVST+ 環境中的交換機需要消耗更多的 CPU 進程和 BPDU帶寬,這是因為 PVST+ 將為每個 VLAN 運行一個單獨的
STP 實例。
快速 PVST+ 的工作方式和 PVST+ 差不多,不同在於快速 PVST+ 定義的端口狀態包括 3 種:丟棄、學習和轉發。如果端口被配置為替代端口或備用端口,則該端口可以立即轉換到轉發狀態,而無須等待網絡收斂。

配置 PVST+ 和快速 PVST+

實驗拓撲


地址分配表

設備 接口 IP 地址 子網掩碼 默認網關
S1 VLAN 99 172.31.99.1 255.255.255.0 不適用
S2 VLAN 99 172.31.99.2 255.255.255.0 不適用
S3 VLAN 99 172.31.99.3 255.255.255.0 不適用
PC1 NIC 172.31.10.21 255.255.255.0 172.31.10.254
PC2 NIC 172.31.20.22 255.255.255.0 172.31.20.254
PC3 NIC 172.31.30.23 255.255.255.0 172.31.30.254

交換機端口分配

端口 作業 網絡
S1 F0/6 VLAN 30 172.17.30.0/24
S2 F0/18 VLAN 20 172.17.20.0/24
S3 F0/11 VLAN 10 172.17.10.0/24

配置 VLAN

使用相應的命令,在所有交換機上創建 VLAN 10、20、30、40、50、60、70、80 和 99。

S1(config)# vlan 10
S1(config-vlan)# vlan 20
S1(config-vlan)# vlan 30
S1(config-vlan)# vlan 40
S1(config-vlan)# vlan 50
S1(config-vlan)# vlan 60
S1(config-vlan)# vlan 70
S1(config-vlan)# vlan 80
S1(config-vlan)# vlan 99

S2(config)# vlan 10
S2(config-vlan)# vlan 20
S2(config-vlan)# vlan 30
S2(config-vlan)# vlan 40
S2(config-vlan)# vlan 50
S2(config-vlan)# vlan 60
S2(config-vlan)# vlan 70
S2(config-vlan)# vlan 80
S2(config-vlan)# vlan 99

S3(config)# vlan 10
S3(config-vlan)# vlan 20
S3(config-vlan)# vlan 30
S3(config-vlan)# vlan 40
S3(config-vlan)# vlan 50
S3(config-vlan)# vlan 60
S3(config-vlan)# vlan 70
S3(config-vlan)# vlan 80
S3(config-vlan)# vlan 99

為交換機端口分配 VLAN,進入對應的接口配置為接入模式划分 vlan。

S1(config)# interface f0/6
S1(config-if)# switchport mode access
S1(config-if)# switchport access vlan 30
S1(config-if)# no shutdown

S2(config)# interface f0/18
S2(config-if)# switchport mode access
S2(config-if)# switchport access vlan 20
S3(config-if)# no shutdown

S3(config)# interface f0/11
S3(config-if)# switchport mode access
S3(config-if)# switchport access vlan 10
S3(config-if)# no shutdown


使用相應的命令將每台交換機上的端口 F0/1 至 F0/4 配置為中繼端口,並將這些中繼端口分配給本地 VLAN 99。

S1(config)# interface range f0/1-4
S1(config-if-range)# switchport mode trunk
S1(config-if-range)# switchport trunk native vlan 99

S2(config)# interface range f0/1-4
S2(config-if-range)# switchport mode trunk
S2(config-if-range)# switchport trunk native vlan 99

S3(config)# interface range f0/1-4
S3(config-if-range)# switchport mode trunk
S3(config-if-range)# switchport trunk native vlan 99

為 3 台交換機的 vlan 99 配置 IP 地址:

S1(config)# interface vlan99
S1(config-if)# ip address 172.31.99.1 255.255.255.0

S2(config)# interface vlan 99
S2(config-if)# ip address 172.31.99.2 255.255.255.0

S3(config)# interface vlan 99
S3(config-if)# ip address 172.31.99.3 255.255.255.0

配置生成樹和負載均衡

使用 spanning-tree mode 命令配置交換機,以使其將 PVST 用作 STP 模式。

S1(config)# spanning-tree mode pvst

S2(config)# spanning-tree mode pvst

S3(config)# spanning-tree mode pvst

如果要配置快速 PVST+,則 spanning-tree mode 命令的模式為 rapid-pvst。

S1(config)# spanning-tree mode rapid-pvst

S2(config)# spanning-tree mode rapid-pvst

S3(config)# spanning-tree mode rapid-pvst

將 S1 配置為 VLAN 1、10、30、50 和 70 的主根,將 S3 配置為 VLAN 20、40、60、80 和 99 的主根。將 S2 配置為所有 VLAN 的次根,以此實現負載均衡。

S1(config)# spanning-tree vlan 1,10,30,50,70 root primary

S2(config)# spanning-tree vlan 1,10,20,30,40,50,60,70,80,99 root secondary

S3(config)# spanning-tree vlan 20,40,60,80,99 root primary

使用 show spanning-tree 命令驗證配置.

S1# show spanning-tree

S2# show spanning-tree

S3# show spanning-tree



配置 PortFast 和 BPDU 防護

當端口配置 PortFast 時端口會從阻塞狀態直接切換為轉發狀態,從而跳過監聽和學習狀態,使得效率提高。

S1(config)# interface f0/6
S1(config-if-range)# spanning-tree portfast

S2(config)# interface f0/18
S2(config-if-range)# spanning-tree portfast

S3(config)# interface f0/11
S3(config-if-range)# spanning-tree portfast

由於配置的 PortFast 不應該收到 BPDU,此時如果就有可能產生環路,因此可以啟用 BPDU 防護,在收到 BPDU 時把端口設置為錯誤禁用狀態來保護。

S1(config)# interface f0/6
S1(config-if)# spanning-tree bpduguard enable

S2(config)# interface f0/18
S2(config-if)# spanning-tree bpduguard enable

S3(config)# interface f0/11
S3(config-if)# spanning-tree bpduguard enable

參考資料

《思科網絡技術學院教程(第6版):擴展網絡》,[加] Bob Vachon,[美] Allan Johnson 著,思科系統公司 譯,人民郵電出版社
《CCNA 學習指南(第 7 版)》,[美] Todd Lammle 著,袁國忠 徐宏 譯,人民郵電出版社


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM