STP
1.协议简述
STP(Spanning Tree Protoco),可应用于计算机网络中树形拓扑结构建立,主要作用是防止根网桥网络中的冗余链路形成环路工作。但某些特定因素会导致STP失败,要排除故障可能非常困难,这取决于网络设计。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。 ---------From.百度百科
要了解STP生成树协议,首先要知道生成树网络中的信息沟通问题-BPDU
2.BPDU
交换机之间沟通是使用数据帧,网桥之间沟通是通过BPDU(Bridge Protocol Data Unit)桥协议数据单元,跨层封装到二层,
BPDU的数据帧默认不属于任何一个VLAN,故在存在VLAN的设备上,该数据帧基于Native VLAN发送。
-
配置BPDU:
拓扑收敛完成之后,仅根网桥周期(2S)发送;在没有根网桥时,所有设备仅发送BPDU;—用于选举根网桥、发布拓扑信息、周期保活链路 -
TCN BPDU(拓扑变更信息):
TCN包中不包含任何具体信息,不会导致网络重新收敛当一台交换机的阻塞端口链路被断开,那么将标记为中7位 置为1,标识拓扑已经改变,该BPDU将发送到根网桥处,根网桥使用标记位 第0位,来确认;
若没有收到ACK,那么2S周期发送TCN;根网桥确认之后,将使用BPDU告诉所有的非根网桥,刷新CAM表,默认CAM的保存周期为300s
-
次优BPDU
当非根网桥上的根端口断开,此时接收不到根网桥的BPDU了,同时本地断开的不为阻塞端口,那么本地会将自己定义为根网桥,发出BPDU,由于该BPDU次于根网桥,所以称为次优BPDU次优BPDU,包含本地拓扑信息,同时也为配置BPDU,但不为根网桥发出的BPDU
3.STP生成树协议发展
所有的生成树协议都基于IEEE 802.1D,所以我们详细的介绍802.1D,之后的生成树PVST、PVST+、RSTP/802.1W、802.1S/MSTP都是对之前的优化
(1).IEEE 802.1D
802.1D在计算过程中,选出4中角色
-
根网桥(树根、核心)
在一颗生成树实例中有且仅有1台,没有根网桥之前,所有的交换机默认本地为根网桥,发出BPDU进行根网桥的选举根网桥的选举:
比较BPDU中的BID(桥ID) = 网桥优先级 + MAC地址 越小越优先比较所有设备的优先级,0-65535 默认为32768,越小越优
优先级相同的情况下比较MAC地址,数值小优
CISCO用Extend System ID来标识VLAN信息 -
根端口
在每台非根网桥上有且仅有一个,本地离根网桥最近的接口,该接口用于接收来自根的BPDU,同时该接口也用于收发用户的数据;根端口的选举:
PID = 端口ID = 接口优先级 0-255 默认为 128 +接口编号
1.入方向最小COST值
2.比较该接口对端(上级)的设备的BID,小优
3.比较该接口对端(上级)设备的PID,小优
4.比较本地PID -
指定端口
在每根网线上有且仅有一个,用于转发来自根的BPDU,同时转发用户流量,根端口的对端肯定是指定端口,根网桥上所有接口均为指定端口
1.比较从该接口发出BPDU的COST值
2.比较本地BID,小优
3.比较本地PID,小优
4.直接阻塞端口 -
非指定端口(阻塞端口)
当以上端口角色全部完成,剩余的所有的存在的端口为非指定端口,逻辑阻塞,可以接收,不能转发COST值:
10M = 100
100M = 19
1000M = 4
10000M = 2
> 10000M = 1
实例分析
接口状态
-
Down:接口指示灯未亮起,网线刚刚连接,不能收发BPDU
-
Listening(侦听):接口指示灯为橙色,进行BPDU收发,选举各种角色,时长为15S
当指定端口和根端口进入到下一个状态,非指定端口进入阻塞状态,指示灯一致保持为橙色
-
Learning(学习):接口指示灯为橙色,根端口和指定端口学习各个接口下放连接PC的MAC地址;生成MAC表;15S时长结束后进入下一个状态
-
Forwarding(转发):接口指示灯为绿色,收敛完成,可以正常转发用户的数据,在30S内接口是转发用户数据;
-
Blocking(阻塞状态):非指定端口在侦听完成之后,进入的状态,指示灯一直保持为橙色
收敛时间
- 初次收敛为30S = listening + learning
- 结构突变时
- 存在直连检测时:当本地根端口断开,且本地只剩下阻塞端口能接受到BPDU,该接口直接进入侦听和学习状态,30S转换为根端口
- 当不存在直连检测时:阻塞端口需要50S转换为根端口 = 20S hold time + 30S 收敛
802.1D优缺点分析
- 收敛速度慢,所有的VLAN一颗树,当交换机发生拓扑变更时接口跳转50S,所有的接口都要参与生成树的建立
- 链路利用率低 备份路劲在最佳路径存在时一直闲置;
(2).PVST
CISCO私有,基于vlan的生成树
原理:
-
在每个vlan中存在一颗树,通常将不同生成树的根放置于不同汇聚层位置,来实现链路利用率的提高.
-
每个vlan发出一个BPDU;各个vlan进行各自的802.1D计算
-
为了区分不同的vlan发出的BPDU,网桥优先级(4096的倍数)+vlanid
优缺点分析
- 收敛慢
- cisco私有
- 树多,带宽和设备硬件资源均占用(cisco设备存在一个专用的芯片来进行生成树的运行)
- 仅支持接口封装为ISL的Trunk干道
(3).PVST+
在PVST的基础上进行升级,目前大多数cisco设备默认使用的STP协议
1.支持802.1q,trunk干道封装模式
2.可以做部分加速
-
修改优先级
Switch(config)#spanning-tree vlan 2 priority ? <0-61440> bridge priority in increments of 4096
-
可直接设备备份(secondary)和主根(primary)
Switch(config)#spanning-tree vlan 2 root ? primary Configure this switch as primary root for this spanning tree secondary Configure switch as secondary root 该命令不一定完全生效 主根命令是本地优先级下调2个4096 备份根命令是本地优先级下调1个4096
-
可修改接口优先级或者COST值
修改接口优先级: Switch(config-if)#spanning-tree vlan 2 port-priority ? <0-240> port priority in increments of 16 修改COST值: CORE(config-if)#spanning-tree vlan 2 cost ? <1-200000000> Change an interface's per VLAN spanning tree path cost
-
端口加速
连接PC的接口,开启端口加速后;一旦连线,直接为转发状态; Switch(config)#interface f0/1 Switch(config-if)#spanning-tree portfast
-
全局开启端口加速
全局下开启端口加速,对Trunk干道不生效 Switch(config)#spanning-tree portfast default
-
上行链路加速
只能在接入层设备配置
配置之后,该交换机的网桥优先级和接口COST值会加大,意义在于存在阻塞端口的设备才会存在直连检测,而阻塞端口最好在接入层设备上;故加大优先级和COST值,在于放弃成为根网桥,尽量成为阻塞端口Switch(config)#spanning-tree uplinkfast
-
骨干加速
当阻塞端口接收到次优BPDU,那么该接口取消20s hold time,直接进入30s收敛,所有设备均可配置Switch(config)#spanning-tree backbonefast
优缺点分析
- 树多
- cisco私有
- 加速不够彻底
(4).快速生成树(RSTP/802.1W)
不再依赖计时器 而是一个状态的工作完成之后,直接进入下一个状态
RSTP:为cisco私有的快速生成树协议;RSTP可以兼容802.1W
802.1W:为非CISCO产品大多数默认的协议
- 802.1W是对802.1D的提速,依然整个交换网络一棵树
- RSTP为CISCO的快速生成树,是对PVST+的提速,每个VLAN一棵树
这两种协议均为快速收敛,1-2s完成收敛,提速的原理一致,区别在于CISCO有基于VLAN的运算芯片
RSTP的状态规范把原来的5种状态缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:
- 如果不转发用户流量,也不学习MAC地址,那么端口的状态就是Discarding状态。
- 如果不转发用户流量但是学习MAC地址,那么端口的状态就是Learning状态
- 如果既转发用户流量又学习MAC地址,那么端口就为Forwarding状态
在PacketTracer7.0中,存在两种生成树PVST/PVST+,和RSTP
干涉选举同PVST+一致
Switch(config)#spanning-tree mode ?
pvst Per-Vlan spanning tree mode
rapid-pvst Per-Vlan rapid spanning tree mode
注:默认接口为半双工(10M)时,接口类型为共享,全双工接口为点到点类型;
在共享接口下依然运行慢速生成,只有点到点接口可以快速收敛
Switch(config-if)#spanning-tree link-type ?
point-to-point Consider the interface as point-to-point
shared Consider the interface as shared
优缺点分析
- RSTP-树太多
- 802.1W-一个数->链路利用率低
(5).分组式生成树(MSTP/802.1S)
快速生成树协议,将多个VLAN放置于同一个组内,一个组一颗树
使用该协议时,整个网络所有设备必须均运行MSTP,同时所有设备的分组设置必须完全一致;
MSTP/802.1S
原理
将多个VLAN放置在一个组里,为每个组生成一棵树,树型算法为802.1W;将不同组的根网桥放置于不同的汇聚层设备处,可以实现流量的分载,提高链路利用率;
不同组发出的BPDU,使用BPDU,使用网桥优先级区分,优先级+组ID
vlan分组:
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#instance 1 vlan 1-50 将vlan1-50划 分到组1
Switch(config-mst)#instance 2 vlan 51-100 将vlan51-100划分到组2
定义根网桥,备份根网桥的位置:
Switch(config)#spanning-tree mst 1 root primary 降2个4096
Switch(config)#spanning-tree mst 2 root secondary 降1个4096
修改参选接口的参数:
Switch(config)#interface e0/0
Switch(config-if)#spanning-tree mst 1 ?
cost Change the interface spanning tree path cost for an instance
port-priority Change the spanning tree port priority for an instance