STP的选举之发波原理
- 设备启动之后,经过选举会分别显示出它们的等级(最强,次强,最弱)
- 选出等级之后,两两设备开始互相发波,等级强的设备会将弱的设备的光顶回去
- 此时两两设备之间的波就是单方向的,即强设备向弱设备发波
- 发波的口被称为指定端口(DP)
- 收波的口被称为根端口(RP),并且一个设备只有可以收波的口,因为S3有两个收波的口,但是S3上面的收到最强的波来自S1,所以6口也为根端口。
- 剩余的4口就是阻塞端口(BP)。
STP的基本概念
802.1d,生成树协议,延迟需要到30~50s。
桥ID
桥ID(Bridge ID,BID),决定波的强弱。每一个设备都有一个唯一的桥ID。
- IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)(默认32768)与桥MAC地址构成。
- 优先级越小越优先,值必须是4096的倍数。
- 每一台运行STP的交换机都拥有一个唯一的BID。
- BID桥优先级占据高16bit,其余的低48bit是桥MAC地址。
- 在STP网络中,BID最小的设备会被选举为根桥。
先比优先级,优先级越小越优先,如果优先级相同,则比MAC地址,MAC地址越小越优先。综上比出,BID最小的设备就是根桥。
根桥
- STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。
- 根桥是一个STP交换网络中的“树根”。
- STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。
- 在STP网络中,桥ID最小的设备会被选举为根桥。
- 在BID的比较过程中,首先比较桥优先级,优先级的值越小,则越优先,拥有最小优先级值的交换机会成为根桥;如果优先级相等,那么再比较MAC地址,拥有最小MAC地址的交换机会成为根桥。
COST开销
- 每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。
- 接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。
- 接口带宽越大,则Cost值越小。
- 用户也可以根据需要通过命令调整接口的Cost。
- 一般选举出根桥之后,带宽相同则比较桥ID,带宽不同则比较开销。
RPC
- 在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC。
- 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。
- 从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络。根桥的根路径开销是0。
Port ID
- 运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口(一般用于交换机之间两条线互联)。
- 接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号。
- 端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍
- 运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。缺省情况下,端口优先级是128。
- 一般比较I的是发送方的ID。
BPDU
- 为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU中。
- BPDU有两种类型:配置BPDU和TCNBPDU。
- 配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
- TCNBPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
配置BPDU的报文格式
配置BPDU的比较原则
对于STP而言,最重要的工作就是在交换网络中计算出一个无环拓扑。在拓扑计算的过程中,一个非常重要的内容就是配置BPDU的比较。在配置BPDU中,有四个字段非常关键,它们是“根桥ID”、“根路径开销”、“网桥ID”以及“接口ID”,这四个字段便是交换机进行配置BPDU比较的关键内容。
STP按照如下顺序选择最优的配置BPDU:
- 最小的根桥ID
- 最小的RPC
- 最小的网桥ID
- 最小的接口ID
在这四条原则中(每条原则都对应配置BPDU中的相应字段),第一条原则主要用于在网络中选举根桥,后面的原则主要用于选举根接口及指定接口。
STP的计算过程
在交换网络中选举出一个根桥
- 选举过程:
- STP交换机初始启动之后,都会认为自己是根桥,并在发送给其他交换机的BPDU中宣告自己为根桥。因此,此时BPDU中的根桥ID为各自设备的网桥ID。
- 当交换机收到网络中其他设备发送来的BPDU后,会比较BPDU中的根桥ID和自己的BID。
- 交换机不断交互BPDU,同时对BID进行比较,最终选举一台BID最小的交换机作为根桥,其他的则为非根桥。
在每台非根桥上选举出一个根接口
- 什么是根端口?
- 一个非根桥设备上会有多个端口与网络相连,为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被称为“根端口”的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口。
- 在选举出根桥后,根桥仍然持续发送BPDU,而非根桥将持续不断的收到根桥发送的BPDU。因此,在所有非根桥上选举一个距离根桥“最近”的端口(根端口),在网络收敛后,根端口将不断的收到来自根桥的BPDU。
- 即:根端口保证了交换机与根桥之间工作路径的唯一性和最优性。
- 选举过程:
- 交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“RootID、RPC、BID、PID”等关键字段,端口会针对这些字段进行PK。
- 首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。
- 当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。
- 当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口。
- 当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。
在每条链路上选举出一个指定接口
- 每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU。
- 选举过程:
- 指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID。
非指定端口被阻塞
- 确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为预备端口,即阻塞端口。
STP的接口状态
- 侦听状态下保持15s,为了选出哪些端口为指定和根端口。选出来的端口开始进入学习状态。
- 学习状态下保持15s,开始学习MAC地址。
[Huaiwei]display stp brief[Huaiwei]display stp brief
STP的接口状态迁移
拓扑变化
直连链路故障
- 直连链路故障,备用端口会经过30s后恢复转发状态。
非直连链路故障
- 非直连故障会导致50s左右的恢复时间。
拓扑变化导致MAC地址表错误
- 拓扑变更以及MAC地址表项更新的具体过程如下:
- SW3感知到网络拓扑发生变化后,会不间断地向SWB发送TCNBPDU报文。
- SW2收到SW3发来的TCNBPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCNBPDU报文。
- SW2向根桥转发TCNBPDU报文。
- SW1把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300s修改为Forward Delay的时间(默认为15s)。
- 最多等待15s之后,SW2中的错误MAC地址表项会被自动清除。此后,SW2就能重新开始MAC表项的学习及转发操作。