文章目录
- 生成树术语
- STP工作过程
- 生成树协议类型
- 修改和验证网桥`ID`
欢迎扫码关注微信公众号
生成树协议
目的就是为了消除由网桥或者交换机所组建的二层网络产生的环路
STP
使用生成树算法创建拓扑数据库,再找出并禁用冗余链路,在运行了STP
的情况下,帧只会被转发到STP
选定的最佳链路
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQyuGPq0-1597374528673)(https://i.imgur.com/yaRFOzQ.png)]
冗余链路的存在会造成广播风暴、多帧复制、MAC地址表抖动的后果
生成树协议有多个版本,这里我们首先介绍IEEE
版802.1d
,Cisco
交换机默认使用的就是这个版本
生成树术语
- 根网桥
- 根网桥就是网桥
ID
最小(最佳)的网桥,在STP
网络中,交换机选举一个根网桥,根网桥是网络的核心,其他所有决策都是从根网桥的角度做出的,在选举出根网桥之后,其他所有的网桥都必须确定前往根网桥的最佳路径,而这条最佳路径连接的端口称为根端口(根网桥上的所有端口都是根端口)
- 根网桥就是网桥
- 非根网桥
- 顾名思义,指的是除根网桥外的其他所有网桥
- 非根网桥与其他所有网桥交换
BPDU
,并更新STP
拓扑数据结库,这有助于避免环路,并能在链路出现故障时采取补救措施(因为他们之间一直都保持通信,如果发生了故障可以在通信周期的获得发生故障的信息)
- BPDU
- 所有交换机都彼此交换信息,并根据这些信息来配置网络
- 每台交换机都将其发送给邻居的
BPDU
参数同从其他邻居那里收到的BPDU
参数进行比较,BPDU
包含提供它的网桥的ID
-
BPDU
帧格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MnnBW8cI-1597374528676)(https://i.imgur.com/iZ45pg7.png)]
- 网桥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工作过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q61E2PZE-1597374528678)(https://i.imgur.com/uhQ2sSv.png)]
其实是很简单的
- 选举根网桥
RB
- 网桥的
ID
是由优先级和MAC
共同决定的,从上图中我们可以看到,他们的优先级是相等的,然后我们就去比较他们的MAC
地址的值,明显S1
最小,因此**S1
被选举为根网桥**
- 网桥的
- 选举根端口
RP
- 每台交换机都会确定一个根端口,即唯一一条qi前往根网桥de的路径,选择路径的标准就是路径成本最低
- 很明显,选择直接与根网桥相连的端口作为根端口是最合理的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fKJL8LCU-1597374528680)(https://i.imgur.com/jtURx7o.png)]
- 选举网段中的指定端口
DP
- 在
S2
和S3
之间选择网桥ID
比较小的交换机的端口作为DP
,则S3
的端口会被选举为DP
,然后S2
左边的端口被阻断
- 在
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZfH4tkRz-1597374528680)(https://i.imgur.com/G9FmdDu.png)]
生成树协议类型
-
IEEE 802.1d
- 上面所说的一直都是它,这种类型的
STP
标准,速度非常慢,但占用的网桥资源很少,也被称为公用生成树(CST)
-
PVST+
- 是思科专用的改进版
STP
,为每个VLAN
提供一个生成树实例,速度和CST
一样慢,但是可以有多个根网桥,提高了网络链路的效率,同时也占用了更多的网桥资源
-
IEEE 802.1w
- 亦称为快速生成树协议
RSTP
,它改进了BPDU
的交换方式,为极大地提高网络汇聚速度铺平了道路,但像CST
一样只允许每个网络中有一个根网桥 -
RSTP
占用的网桥资源介于CST
和PVST+
之间
- 快速
PVST+
- 思科专用的改进版
RSTP
,使用PVST+
,其汇聚速度极快,数据传输路径最佳
1、公用生成树
这种类型的生成树协议只会产生一个根网桥,也就是所有的VLAN
共用一个根网桥,而其他的每个网桥都将确定一条前往根网桥最佳的路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pVIFUTXc-1597374528681)(https://i.imgur.com/lieZPBZ.png)]
但这种解决方案并不是对所有VLAN
都是最佳的,因此思科就开发出了自己的CST
,PVST+
--> Per-VLAN Spanning Tree
2、PVST+
思科专用CST
扩展,它让每一个VLAN
都拥有一个属于自己的根网桥
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nNg4GwUN-1597374528682)(https://i.imgur.com/HRHZqPa.png)]
为了支持PVST+
,在BPDU
中新增了一个字段,该字段包含扩展的系统ID
,让PVST+
能够为每个STP
实例选择根网桥,这样一来,在所有字段总长度不变的情况下,网桥优先级字段就缩短了,从16
位变成了4
位,其中12
位用来作为系统ID字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2OFDijv-1597374528687)(https://i.imgur.com/2vP5fKY.png)]
这样以来,网桥优先级的增量就变成了4096
(2^12),使用show spanning-tree
可以看到系统ID字段的值
默认会聚时间和CST
一样,都是50
秒,的确是有点长,因此出现了新的生成树协议IEEE 802.1w
3、802.1w
快速生成树协议调整了CST
的端口状态,由5
中改成了3
种,这样一来,状态间的切换就方便了很多
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNomly1I-1597374528688)(https://i.imgur.com/0zBbAKF.png)]
示例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TRPtjZW9-1597374528689)(https://i.imgur.com/9TMduaO.png)]
三个角色的选举方法只有三步:
- 根据网桥
ID
选举出根网桥 - 找出前往根网桥的最佳路径,以确定根端口
- 根据网桥
ID
确定指定端口
- 注意,在为网段选择指定端口时,优先考虑路径成本,如果路径成本相同,再考虑网桥ID
注意:已经当选为根端口的端口不会参与指定端口的选举
再来看一个示例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-By7GRXLE-1597374528690)(https://i.imgur.com/mmsZ2AU.png)]
上面这张拓扑图会聚完成之后的结果是这样的:(其中的F
代表指定端口)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oXTiO0rX-1597374528691)(https://i.imgur.com/cWuJDBV.png)]
在SA
和SD
的链路选举指定端口时,我们优先考虑到达根网桥的路径成本,故而选择了SA
的端口作为该链路中的指定端口
SA
和SB
之间的链路同理
修改和验证网桥ID
很简单的一个拓扑图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w4Obs4Hi-1597374528691)(https://i.imgur.com/88g4SP2.png)]
各网桥信息以及根网桥S2,思科默认运行的是PVSt+
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aFFunGzd-1597374528692)(https://i.imgur.com/LgTQm5f.png)]
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