一.STP概述
冗余链路存在的问题,常见的以太网,一般都会设计冗余链路,越是大规模的网络,对冗余的要求性越高,当网络具有冗余性的时候就会出现一些问题,广播风暴,多帧复制,MAC地址震荡等一系列突发状况:
1.广播风暴(也叫网络广播风暴):指一个数据包或帧被转发传送到本地网段上的每个节点的过程,大量这样的数据将导致通信链路拥塞,从而出现无法进行正常网络通信的反常现象。
2.多帧复制:一种数据传输过程中的现象,指在通信网络(如以太网)里,同一帧数据被多次复制并传输,可能是由网络设备故障、链路问题或传输错误等因素引起的
3.MAC地址震荡:指在网络交换设备中,MAC 地址中的端口映射关系频繁地改变,这种情况通常是由于网络拓扑频繁变化、链路故障恢复或网络环路等原因导致的,它会影响网络的正常通信和性能
下面是图片
二. STP协议基本概念
1.STP(Spanning Tree Protocol,生成树协议)就是把一个环形的网络架构改成一个树形的网络结构,将物理上存在环形网络,通过一种算法在逻辑上阻塞一些端口,将其修剪成一个逻辑上五环的树形结构
2.一个根网桥:STP完成收敛的过程,就是把环形结构修剪为树状结构的过程,而树形的网络结构要先找到树根。根网桥有且只有一个。作用是在STP完成收敛的时候,负责产生并定时向网络中发送配置BPDU,以维护STP网络中的拓扑信息和各项配置参数。而非根网桥会根据配置BPDU对自己保存的生成树信息进行更新,并对配置BPDU进行转发。
根网桥是一个STP网络的逻辑中心,但不一定是物理中心(注:实际情况下,逻辑中心和物理中心是合在一起的)
三.两种选举依据
1.STP运行STA(Spanning Tree Algorithm,生成树算法)完成收敛,通过STA区分出各网桥的角色个各端口的角色,进行形成无环的树形拓扑。
2.ID
交换机的身份识别基于ID(Identification),ID又分为网桥ID(Bridge ID,简称BID)和端口ID(PortID,简称PID)。
(1)网桥ID:
网桥ID是一个8字节的字段,前2字节被称为网桥优先级,后6字节是网桥的MAC地址,网桥ID先比较网桥优先级,优先级最小的优先,优先级相同的比较MAC地址,MAC地址最小的优先,优先的设备会被选举为根网桥
网桥优先级是用于衡量网桥在STA中优先级的十进制数取值范围为0~65535,默认是32768,网桥ID中的MAC地址是交换机自身的MAC地址。
(2)端口ID:
端口优先级的十进制数取值范围是0~255,默认值是128。
3.路径成本:是选择链路的参考值。STP认为路径成本越低,则链路越优,而其他路径成本相对高的冗余链路这被修剪掉。
四.3个选举步骤:
1.选举根网桥:
要将环形拓扑变成一个无环的树形拓扑,STP首先就要选举根网桥RB,就是为网络选出一个树根。选举的依据就是网桥D最小的交换机,参与选举的设备包括所有运行STP的交换机。相关设备交互各自的配置BPDU以比较谁的网桥ID值最小。先比较优先级,优先级小的被选举为根网桥;如果优先级相同,则MAC地址小的被选举为根网桥。
2.选举根端口:
选出根网桥之后,网络中的每台交换机必须和根网桥建立关联,因此,STP将开始选举根端口RP(Root Port)。根端口只存在于非根网桥上,所以需要在每个非根网桥上选举一个根端口。在根网桥上是没有根端口的。
(1)一台非根交换机上,根路径成本最低的端口为根端口。
(2)当根路径成本相同时,比较端口对端交换机(指定桥)的BI,哪个端口对端的BD小,则哪个端口作为本交换机的根端口。
(3)当指定桥的BID相同时,则比较对端端口的PD,哪个端口对端的PID小,则哪个端口作为
本交换机的根端口。
3.选举指定端口:
指定端口DP(Designated Port)通常用于在STP完成收敛后,向下游交换机或下游网络转发配置消息。指定端口的选举依据顺序如下。
(1)根路径成本较低。
(2)所在交换机的BID较小。
(3)PD较小。
五.4个常用比较规则
根网桥BID的作用是选举网桥,比较原则是更小者获选
根路径成本的作用是在非根网桥上选举根端口和指定端口,比较原则是根路径成本更小者获选
对端BID的作用是在非根端口上选举根端口,比较原则是根路径成本和同时,对端BID更小者获选
本端端口PID的作用是在非端口指定,比较原则是根路径成本和本端BID都相同时,本端PID更小者获选
六.5种端口状态
设备从通电到进入正常工作状态的过程中,端口会经历转发、学习、监听、阻塞和禁用等多个状态。另外在使用Wireshark软件分析STP报文时,也会看到这些端口状态,通过这些端口状态,可以分析STP交互的过程,有助于排除故障
以下是运行STP的设备上的端口状态
端口状态 | 作用 | 说明 |
转发 (Forwarding) | 既转发用户流量也处理和转发BPDU报文,也可以更新MAC地址表 | 只有根端口和指定端口才能进入转发状态 |
学习 (Learning) | 可以接收和发送BPDU报文,根据接收到的用户流量构建MAC地址表,但不转发用户流量 | 过渡状态,增强学习状态,防止临时环路 |
监听 (Listening) | 可以接收和发送BPDU报文,状态下将选择出根网桥,根据端口和指定端口 | 过渡状态 |
阻塞 (Blocking) | 仅仅接收并处理BPDU报文,不转发用户流量 | 被阻塞端口的最终状态 |
禁用 (Disabled) | 端口不仅不处理BPDU报文,也不转发用户流量 | 端口状态为Down |