手机wap网站模板 带后台深圳网络推广专员
STP的基本概念
概述
- STP是一个用于局域网中消除环路的协议。
- 运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
- STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。
- 由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。
桥ID
- 在STP中,每一台交换机都有一个标示符,叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768,可以修改但是修改值必须为4096的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
- 如图,需要在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为4096,再比较三台交换机的MAC地址,谁小谁优先,最终选择SW1为根桥。
根桥
- STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。
- 根桥是一个STP交换网络中的“树根”。
- STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。
- 在STP网络中,桥ID最小的设备会被选举为根桥。
- 在BID的比较过程中,首先比较桥优先级,优先级的值越小,则越优先,拥有最小优先级值的交换机会成为根桥;如果优先级相等,那么再比较MAC地址,拥有最小MAC地址的交换机会成为根桥。
Cost
- 交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。
- 华为交换机支持多种STP的路径开销计算标准,提供多厂商场景下最大程度的兼容性。缺省情况下,华为交换机使用IEEE 802.1t标准来计算路径开销。
- 用户也可以根据需要通过命令调整接口的Cost。
RPC(根路径开销)
- 在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC。
- 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。
- 在本例中,SW3从GE0/0/1接口到达根桥的RPC等于接口1的Cost加上接口2的Cost。
Port ID
运行STP交换机的每个端口都有一个端口ID,端口ID由高4 bit端口优先级和低12 bit端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确定端口角色。
BPDU
- 为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU中。
- BPDU有两种类型:配置BPDU和TCN BPDU。
- 配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
- TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
配置BPDU报文格式
配置BPDU比较原则
STP的计算过程
STP 中定义了三种端口角色:指定端口,根端口和预备端口。
- 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
- 根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
- 如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。
选举根桥
- STP在交换网络中开始工作后,每个交换机都会向网络中发送配置BPDU。配置BPDU中包含交换机自己的桥ID。
- 网络中拥有最小桥ID的交换机成为根桥。
- 在一个连续的STP交换网络中只会存在一个根桥。
- 根桥的角色是可抢占的。
- 为了确保交换网络的稳定,建议提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小值0。
选举根端口
- 每一台非根桥交换机都会在自己的接口中选举出一个根接口。
- 非根桥交换机上有且只会有一个根接口。
- 当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置BPDU的接口。
- 可以形象地理解为,根接口是每台非根桥上“朝向”根桥的接口。
根端口选举规则:
- 选择RPC(根路径开销)最低的端口。
- 若有多个端口的RPC相等,选择对端桥ID最低的端口。
- 若有多个端口的对端桥ID相等,选择对端端口ID最低的端口。
- 若有多个端口的对端端口相等,选择本端端口ID最低的端口。
选举指定端口
网络中的每个链路与根桥之间的工作路径必须是唯一的且最优的。当一个链路有两条及以上的路径通往根桥时(该链路连接了不同的交换机,或者该链路连接了同一台交换机的不同端口),与该链路相连的交换机(可能不止一台)就必须确定出一个唯一的指定端口。因此,每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU,一般情况下,根桥的所有接口都是指定接口。
指定端口的选举规则:
- 选择RPC(根路径开销)最低的端口。
- 若有多个端口的RPC相等,选择桥ID最低的端口。
- 若有多个端口的桥ID相等,选择端口ID最低的端口。
堵塞预备端口
- 一台交换机上,既不是根接口,又不是指定接口的接口被称为预备接口。
- STP操作的最后一步是阻塞网络中的预备接口。这一步完成后,网络中的二层环路就此消除。
STP端口状态机
1.禁用(Disable) :不收发BPDU、不学习MAC地址、不转发业务数据。
2.阻塞(Blocking) :收BPDU、不发BPDU、不学习MAC地址、不转发业务数据。
3.侦听(Listening) :收发BPDU、不学习MAC地址、不转发业务数据。
就是进行端口角色的选举,需要等待一个转发延迟的时间(15s)
4.学习(Learning) :收发BPDU、学习MAC地址、不转发业务数据。
就是防止大量未知单播数据帧的泛洪,需要等待一个转发延迟的时间(15s)
5.转发(Forwarding):收发BPDU、学习MAC地址、转发业务数据。
STP拓扑变化
根桥故障
• 根桥故障:
▫ 在稳定的 STP 网络,非根桥会定期收到来自根桥的 BPDU 报文。
▫ 如果根桥发生了故障,停止发送 BPDU ,下游交换机就无法收到来自根桥的 BPDU 报文。
▫ 如果下游交换机一直收不到 BPDU 报文, Max Age 计时器(缺省 : 20s )就会超时,从而导致已经收到的 BPDU 报文失效,此时,非根桥会互相发送配置 BPDU ,重新选举新的根桥。
• 端口状态:
▫ SW3 的预备端口, 20s 后会从 Blocking 状态进入到 Listening 状态,再进入 Learning 状态,最终进入到 Forwarding 状态,进行用户流量的转发。
• 收敛时间:
▫ 根桥故障会导致50s左右的恢复时间 ,等于 Max Age 加上 2 倍的 Forward Delay 收敛时间。
直连链路故障
• 直连链路故障:
▫ 当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。
▫ 当网络稳定时,交换机 SW2 检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态。
• 端口状态:
▫ 备用端口会从 Blocking 状态,迁移到 Listening-Learning-Forwarding 状态。
▫ 收敛时间:
▫ 直连链路故障,备用端口会经过30s后恢复转发状态 。
非直连链路故障
• 非直连故障
▫ 在稳定的 STP 网络,非根桥会定期收到来自根桥的 BPDU 报文。
▫ 若 SW1 与 SW2 之间的链路发生了某种故障(非物理故障),因此 SW2 一直收不到来自根桥 SW1 的 BPDU 报文, Max Age 计时器(缺省 : 20 s )就会超时,从而导致已经收到的 BPDU 报文失效。
▫ 此时,非根桥 SW2 会认为根桥失效,并且认为自己是根桥,从而发送自己的配置 BPDU 给 SW3 ,通知 SW3 自己是新的根桥。
▫ 在此期间, SW3 的 预备 端口一直收不到包含根桥 ID 的 BPDU , Max Age 计时器超时后,端口进入到 Listening 状态,开始向 SW2 “转发”从上游发来的包含根桥 ID 的 BPDU 。
▫ 因此, Max Age 定时器超时后, SW2 和 SW3 几乎同时收到对方发来的 BPDU ,再进行 STP 重新计算, SW2 发现 SW3 发来的 BPDU 更优,就放弃宣称自己是根桥并重新确定端口角色。
• 端口状态:
▫ SW3 预备 端口 20s 后会从 Blocking 状态进入到 Listening 状态,再进入 Learning 状态,最终进入到 Forwarding 状态,进行用户流量的转发。
• 收敛时间:
非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。
拓扑改变导致MAC地址表错误
• 在交换网络中,交换机依赖 MAC 地址表转发数据帧。缺省情况下, MAC 地址表项的老化时间是 300 秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时 MAC 地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新 MAC 地址表项。
• 本例中, SW2 中的 MAC 地址表项定义了通过端口 GigabitEthernet 0/0/1 可以到达主机 A ,通过端口 GigabitEthernet 0/0/3 可以到达主机 B 。由于 SW3 的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机 A 到主机 B 的帧仍然不能到达目的地。这是因为 MAC 地址表项老化时间是 300 秒,主机 A 发往主机 B 的帧到达 SW2 后, SW2 会继续通过端口 GigabitEthernet 0/0/3 转发该数据帧。

• 拓扑变化过程中,根桥通过 TCN BPDU 报文获知生成树拓扑里发生了故障。根桥生成 TC 用来通知其他交换机加速老化现有的 MAC 地址表项。
• 拓扑变更以及 MAC 地址表项更新的具体过程如下:
▫ SW3 感知到网络拓扑发生变化后, 会不间断地向SW2发送TCN BPDU报文 。
▫ SW2 收到 SW3 发来的 TCN BPDU 报文后, 会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCN BPDU报文 。
▫ SW2 向根桥转发 TCN BPDU 报文。
▫ SW1 把配置 BPDU 报文中的 Flags 的 TC 位设置为 1 后发送, 通知下游设备把MAC地址表项的老化时间由默认的300 s修改为Forward Delay的时间(默认为15 s) 。
▫ 最多等待 15 s 之后, SW2 中的错误 MAC 地址表项会被自动清除。此后, SW2 就能重新开始 MAC 表项的学习及转发操作。