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的计算过程
- 指定端口是交换机向所连网段转发配置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拓扑变化
根桥故障
直连链路故障
非直连链路故障
非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。