生成树的产生背景

在局域网中,我们通常有多个交换机互联组成
为了避免广播风暴,我们要确保网络中不能出现路径环路
于是引入了STP(生成树协议),通过阻塞端口来避免环路的产生

STP的作用


用来解决二层环路
通过阻塞冗余链路来消除网络中可能存在的环路
且如果链路出现中断,那么冗余链路又会重新激活
恢复网络连通性

生成树协议

STP

STP(Spanning Tree Protocol)生成树协议
协议标准为IEEE制定的802.1D
通过传输BPDU报文(Bridge Protocol Data Unit 桥协议数据单元),来保证设备完成生成树的计算过程
其中BPDU分为两类:配置BPDUTCN BPDU

配置 BPDU

Configuration BPDU
用来计算生成树和维护生成树拓扑的报文
传递的是STP的配置信息

TCN BPDU

当拓扑结构发送改变时候,会用此报文来通知相关设备拓扑发送变更
就是用于通告拓扑发送变更

生成树的选举机制

拓扑结构

1.首先在所有交换机中选出一台设备作为根网桥(Root Bridge),
在网络初始化的过程中,每个交换机默认自己都为根网桥Root Bridge,设备之间通过传递BPDU报文来比较桥ID(Bridge ID),在所有的交换机中选举出一台根网桥

Bridge ID

桥ID,也可以叫BID,用来标识交换机身份
优先级MAC地址组成
在华三设备中,默认优先级都为327684096的倍数
默认情况下,桥ID越小的优先级越高
如果优先级相同,则比较MAC地址大小,MAC地址越小,优先成为根网桥。
根端口
2.在每个非根网桥交换机中选举出一个根端口(Root Port),
先判断到达根网桥的路径开销,开销最小的优先选择
如果开销相同则比较BID的大小,同样还是小的优先
其中默认端口ID小的优先

Cost开销

Cost
指的是路径消耗的代价和成本,带宽越大,开销越小
非根桥进行根端口选举时,根路径开销最小的端口为根端口
物理段进行指定桥选举时,路径开销最小的桥为指定桥

3.在每个物理端口上选出一个指定端口(Designated Port)
这个阶段和根端口的选举类似
到达根网桥开销小的优先选择
本地BID小的优先选择
端口ID小的优先选择
注意,根网桥上的所有端口都是指定端口
阻塞端口
4.剩下没有角色的端口就是阻塞端口(Blocked Port)

生成树端口状态

五种状态

  • Disabled: 表示该端口处于失效状态,不接收和发送任何报文。这种状态可以是由于端口的物理状态(比如端口物理层没有 up)导致的,也可能是手工将端口关闭。
  • Blocking: 处于这个状态的端口不能够参与转发数据报文,但是可以接收配置消息,并交给 CPU 进行处理。不过不能发送配置消息,也不进行地址学习。
  • Listening: 处于这个状态的端口也不参与数据转发,不进行地址学习;但是可以接收并发送配置消息。
  • Learning: 处于这个状态的端口同样不能转发数据,但是开始地址学习,并可以接收、处理和发送配置消息。
  • Forwarding: 一旦端口进入该状态,就可以转发任何数据了,同时也进行地址学习和配置消息的接收、处理和发送。
    其中ListeningLearning阶段是不稳定状态,端口状态随时可能会改变

生成树计时器

Hello time:2秒,配置BPDU的发送周期
Max age[最大生成时间]:20秒,判断链路故障时间,10个hello time周期
Forwarding delay[转发延迟]:15秒,状态切换延迟
转发延时
从一个状态进入另一个状态,中间有15秒的延时

生成树的配置

/*开启STP*/
[H3C] stp global enable
/*关闭接口STP*/
[H3C-Ethernet1/0/1] undo stp enable
/*配置STP的工作模式*/
[H3C] stp mode [ stp | rstp | pvst | mstp ]
/*配置当前设备的优先级*/
[H3C] stp [ instance [ID] ] priority [priority]
/*配置接口为边缘端口*/
[H3C-Ethernet1/0/1] stp edged-port
/*查看生成树状态*/
[H3C]display stp 
/*查看各接口状态*/
[H3C]display stp brief

维护

生成树存在的缺陷

  1. 收敛速度慢,故障切换时间过长
  2. 网络中大量的主机频繁上下线,会导致TCN BDPU以及TC配置BPDU大量发送,从而阻塞网络,浪费资源。

RSTP快速生成树

RSTP(Rapid Spanning Tree Protocol)
快速生成树是生成树的优化版
IEEE802.1W定义了RSTP
端口状态减少到三种
端口角色增加到四种
新增了边缘端口机制
两者区别

RSTP端口角色

根端口和指定端口与STP保持不变
阻塞端口细分两种:
代替端口[Alternata port] 根端口的备份端口
备份端口[Backup port] 指定端口的备份端口
在选举当前根端口和指定端口时,同时再选举备份端口,可以有效快速的解决某一台设备故障,或某一条线路故障,端口的切换,省去STP中繁琐的选举过程(30S)。

RSTP边缘端口机制

解决网络中大量主机频繁上下线
当链路激活时,边缘端口会立即成为Forwarding[转发]状态,不参与STP计算。
其中,边缘端口的UP/DOWN不会触发STP的拓扑变更机制。
一般用在连接PC的端口,配置为边缘端口

STP、RSTP的不足

交换机跑的Trunk链路上有多个VLAN
STP和RSTP都用的一个生成树
无法实现不同VLAN在多条Trunk链路上的负载分摊
会浪费链路资源,如下图所示:
多VLAN情况

PVST

PVST (Per VLAN Spanning Tree)
每个VLAN上运行一个独立的STP,不同STP计算结果不同,可实现基于VLAN的流量负载均衡
多VLAN

MSTP

MSPT(Multiple Spanning Tree Protocol)多生成树协议
IEEE802.1s定义了MSTP
将多个VLAN捆绑到一个实例里(域概念),每个实例里面单独的跑生成树
这样就允许了多条Trunk链路上实现VLAN负载均衡
MSTP

四种生成树的特性

对比图
MSTP、PVST具有RSTP的快速收敛、同时又具有负载分担的机制
MSTP兼容STP和RSTP,在实际运用中较多

四种生成树端口状态

对比图

关于生成树,这里暂时只需要了解STP,我们后续会详细讲解RSTP与MSTP,在这只做概述了解