BPDU报文中携带的Root Identifier、Root Path Cost、Bridge Identifier、Port Identifier字段构成了消息优先级向量{ 根桥ID,根路径开销,发送设备BID,发送端口PID }。设备通过交互并比较消息优先级向量中各字段的值确定根桥、根端口、指定端口。
BID 由桥优先级(Bridge Priority)与桥MAC地址构成,高16位是桥优先级,其余的低48位是MAC地址。
根路径开销RPC(Root Path Cost)就是某端口到根桥所经过的各个桥上的各端口路径开销的累加值。路径开销(Path Cost)是一个 端口变量,是生成树协议用于选择链路的参考值。生成树协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树形网络结构。
PID 由两部分构成的,高8位是端口优先级,低8位是端口号,端口号优先级取值范围为0-255,默认的优先级为128。 最新的中高端交换机,有说 高4位是端口优先级,后12位是端口号,由于中高端交换机的端口会超过255个,故需要增加端口的位数。不管怎么样PID都是有端口优先级和端口编号两部分组成。
一、确定交换机角色
交换机角色有两种,1.根交换机 2.非根交换机。一个生成树中只有一个根交换机,一至多个非根交换机。
根桥的选举
:
最小BID原则:BID最小的设备被选举为根桥。
STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(BridgeID 简称为BID)。桥ID由16位的桥优先级(Bridge Priority) 和
48位的MAC地址构成。
在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768,步长为4096。
优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
注意
:根桥 就是指的根交换机,非根桥就是指的非根交换机。
二、确定端口角色
1.根端口选举
根端口的特点:
只存在于非根交换机上,每一个非根交换机上,有且只有1个根端口。
选举规则:
最小RPC原则:非根桥设备上,根路径开销RPC最小的端口被选举为根端口。
最小发送设备BID原则:非根桥设备上如果有两个及以上端口的根路径开销相同,则收到BPDU报文中“发送设备BID”最小的端口被
选举为根端口。
最小发送设备PID原则:根路径开销相同,对端设备BID相同的情况下,比较对端设备的PID,越小越优先,
注意最小PID原则在什么情况下起作用,如下图。
2.指定端口选举
指定端口的特点:
每一个链路上,有且只有1个指定端口。
选举规则:
根交换机上每个端口到根交换机的根路径开销都是0,根交换机上没有根端口,根交换机上的端口都为指定端口。
距离根网桥(根交换机的)的根路径开销成本较小的,越优先。
端口所在的交换机网桥ID较小的(和选举根端口时,比较对端设备网桥ID不同),越优先。
最小PID原则:根路径开销相同的情况下,阻塞PID值较大的端口,PID小的端口被选举为指定端口,注意最小PID原则在什么情况下起作用。
和选举根端口的,最小发生设备PID原则不同,这里的最小PID原则看的是本机上的端口ID(比较指定端口一般上两步就可以比较出来了,这里暂时没有遇到过,选举指定端口时需要比较PID的情况)。
3.非指定端口选举
非指定端口 也叫阻塞端口,判断出来根端口,指定端口,那么剩余的就是阻塞端口了。
阻塞端口特点是,只接收对端接口发送过来的BPDU报文。如果对端端口发送过来的其他报文,包括广播报文,那么在阻塞端口侧抓包也可以抓取到相应报文,但是阻塞端口对收到的这些报文进行了丢弃。也就是说不会让这些报文通过阻塞端口进入到阻塞端口所在的交换机内,进而进行转发。从而在逻辑上破除的环路问题。
同时如果阻塞端口所在的交换机在转发或广播数据帧时,也不会将数据转发或广播到本机上的阻塞端口,此时在阻塞端口是抓取不到任何报文。
三、确定端口状态
以华为S3700为例:
STP模式中有以下五种状态:
禁用:强制关闭,没有启用stp协议。
阻塞:只接收BPDU,不能发送BPDU.
侦听:比较BPDU,确定交换机角色和端口角色
学习:基于端口上接收的 数据帧,学习MAC地址表
转发:端口的最终的完美状态,可以发送和接收用户数据
RSTP和MSTP模式中,对端口状态进行了简化:
Discarding(丢弃),相当于STP中的禁用、侦听、阻塞,也就是不转发用户数据。
Learning(学习),和STP中的学习状态相同。
Forwarding(转发),和STP中的转发状态相同。
根端口和指定端口的最终状态为:
转发状态(Forwarding)
阻塞端口的最终状态为
:丢弃状态(Discarding)
常用查询命令
[Huawei]dis stp \\显示stp信息,不指定实例就是默认查 instance 0 ,命令等同于[Huawei]dis stp instance 0
CIST Bridge:指的就是本机的网桥ID,网桥ID是以本交换机上所有接口的最小mac地址与网桥优先级组成。
CIST root/ERPC:指的是总根的网桥ID,和到总根的开销。
CIST RegRoot/IRPC:指的是域根的网桥ID,以及到域根的开销。
CIST Root PortID:指的是该交换机在CIST生成树上的根端口的端口ID。
MSTP的实例0具有特殊的作用:称为CIST(Common Internal Spanning Tree),即公共与内部生成树,其他的实例称为MSTI(Multiple Spanning Tree Instance)。
总根是一个全局概念,对于所有互连的运行STP/RSTP/MSTP的交换机只能有一个总根,也即是CIST的根;而域根是一个局部概念,是相对于某个域的某个实例而言。
[Huawei]dis stp brief \显示stp的端口及端口的角色及状态
ROOT:表示根端口
ALTE:表示阻塞端口
DESI:表示指定端口
DISCARDING:表示丢弃
FORWARDING:表示转发
LEARNING:表示学习
实验
拓扑实例一
首先选举根网桥:
根据命令查出了,各个交换机上各自的BID,如上图。三台交换机的网桥优先级都是32768,仅跟据网桥优先级无法确定根网桥,然后再
比较MAC地址,LSW3的MAC地址最小。故LSW3是根网桥
。
其次选举根端口:
由于根网桥是LSW3,那么可以确定 LSW3上的E0/0/1和E0/0/2都是指定端口。需要比较的是以下红圈中的端口。
先看LSW1,由于LSW1是非根交换机,其上有且只有一个根端口。根据 最小RPC原则,发现LSW1的 E0/0/1和E0/0/2的路径成本是相同的都是200000,比较不出来。然后 根据 最小发送设备BID原则,需要比较LSW2和LSW3的BID。LSW3的BID小,则LSW1的E0/0/2为根端口
。
同理看LSW2,由于LSW1也是非根交换机。其上有且只有一个根端口。根据 最小RPC原则,发现LSW2的 E0/0/1和E0/0/2的路径成本是相同的都是200000,比较不出来。然后 根据 最小发送设备BID原则,需要比较LSW1和LSW3的BID。LSW3的BID小,则LSW2的E0/0/2为根端口
。
剩下的就是指定端口和非指定端口了
最后选举指定端口:
每一个链路上,有且只有一个指定端口。
LSW1-E0/0/1和 LSW2-E0/0/1处于同一个链路上,其中一个必为指定端口,而另一个则为阻塞端口。(因为这是一个物理环路,且开启了STP协议功能,所以一定有阻塞端口,不然会产生广播风暴)
首先根据根路径成本开销,可知LSW1-E0/0/1 和 LSW1-E0/0/1 的根路径成本都是200000,比较不出来。
然后根据端口所在交换机的BID进行比较,发现LSW2-E0/0/1的BID较小。所以 LSW2-E0/0/1是指定端口,那么LSW1-E0/0/1就只能是阻塞端口了。
在 LSW1、LSW2、LSW3上分别查看端口角色,来验证是否和上面分析的一致。
拓扑实例二
首先 选举根交换机
根据最小BID规则,可知LSW4是根交换机。
其次 选举根端口
根端口只存在于非根交换机上,每个非根交换机上有且只有1个。
先看LSW2交换机,其上的E0/0/1、E0/0/2端口,到根交换机的根路径成本都是200000,故根据最小RPC原则比较不出。
再根据最小发送设备BID原则,和E0/0/1链接的对端交换机LSW1,和E0/0/2链接的对端交换机LSW4
比较LSW1、LSW4谁的BID最小。显然根交换机LSW4的BID最小。故LSW2的E0/0/2为根端口。
在LSW1上使用最小RPC原则,也是选举不出根端口,再根据最小发送设备BID原则,可知 LSW1上的E0/0/2是根端口。
在LSW3上使用最小RPC原则,也是选举不出根端口,再根据最小发送设备BID原则,可知 LSW4上的E0/0/2是根端口。
然后 选举指定端口
每一个链路上,有且只有1个指定端口;故和根端口直连的对端端口 一定是指定端口(即LSW3的E0/0/1)。因为每条链路上必须有一
个指定端口。
根交换机上的端口都是指定端口;
故此时,还需要确定的端口就是以下红圈中的了。
首先 看上图中 红圈标记的两端口的 根成本路径,如下可知 LSW2的E0/0/1路径成本为200000。而LSW1两条到根网桥的线路的根路径成本都是400000。所以不管怎么, LSW2的E0/0/1的路径成本小。就不用再根据BID,PID进行比较了。故LSW2的E0/0/1是指定端口。那么剩余的LSW1 E0/0/1就只能是阻塞端口了。
最终的拓扑图上的端口角色如下:
拓扑实例三
首先 选举根交换机
根据最小BID规则,可知LSW4是根交换机。
其次 选举根端口
根端口只存在于非根交换机上,每个非根交换机上有且只有1个。
先看LSW2交换机,其上的E0/0/1、E0/0/2、E0/0/3端口,到根交换机的根路径成本都是200000,故根据最小RPC原则比较不出。
再根据最小发送设备BID原则,和E0/0/1链接的对端交换机LSW1,和E0/0/2链接的对端交换机LSW3,和E0/0/3链接的对端交换机LSW4。
比较LSW1、LSW3、LSW4谁的BID最小。显然根交换机LSW4的BID最小。故LSW2的E0/0/3为根端口。
在LSW3上最小RPC原则,也是选举不出根端口,再根据最小发送设备BID原则,可知 LSW3上的E0/0/3是根端口。
在LSW4上最小RPC原则,也是选举不出根端口,再根据最小发送设备BID原则,可知 LSW4上的E0/0/3是根端口。
最后 选举指定端口。
由于LSW4是根交换机,故其上的E0/0/1、E0/0/2、E0/0/3端口 都是指定端口。
此时需要比较的是以下红圈中的三条链路上的6个端口。
由于每一个链路上,有且只有1个指定端口。
三条链路一一分析,先看哪一条链路都行。
下面先看LSW1和LSW2的直连链路,先看两端口的根路径成本,如下图可知,两者相等。都是200000。
然后再用端口所在交换机的BID进行比较,发现LSW2的BID较小。故LSW2的E0/0/1是指定端口。
用同样的方法,
比较LSW1和LSW3直连链路,根路径成本也是相等。故再按端口所在交换机的BID进行比较,发现LSW3的BID较小。故LSW3的E0/0/1是指定端口。
比较LSW2和LSW3直连链路,根路径成本也是相等。故再按端口所在交换机的BID进行比较,发现LSW3的BID较小。故LSW3的E0/0/2是指定端口。
那么剩余的LSW1的E0/0/1、E0/0/2 和 LSW2的E0/0/2端口都是非指定端口(也叫阻塞端口)。
最终整个拓扑图的端口角色如下:
通过命令分别查看是否和上面的分析的一致
这三个阻塞端口分别实现了,在逻辑上阻断每一条物理环路。
拓扑实例四
首先 选举根交换机
根据最小BID规则,可知LSW4是根交换机。
其次 选举根端口
根端口只存在于非根交换机上,每个非根交换机上有且只有1个。
先看LSW2交换机,其上的E0/0/1、E0/0/4、E0/0/2、E0/0/3端口,到根交换机的根路径成本都是200000,故根据最小RPC原则比较不
出。
再根据最小发送设备BID原则,和E0/0/1、E0/0/4链接的对端交换机LSW1,和E0/0/2、E0/0/3链接的对端交换机LSW4,
比较LSW1、LSW4谁的BID最小。显然根交换机LSW4的BID最小。故从LSW2中的E0/0/2、E0/0/3中选举根端口。
此时就用到最小发送设备PID原则了,显然LSW4中的E0/0/1的PID比LSW4中的E0/0/3的PID小。故LSW2中的E0/0/2是根端口。
同样的比较方式:
在LSW1上最小RPC原则,也是选举不出根端口,再根据最小发送设备BID原则,确定从LSW1的 E0/0/2、E0/0/4选举根端口,最后再根据最小最小发送设备PID原则,可知LSW1的 E0/0/2为根端口。
在LSW3上最小RPC原则,也是选举不出根端口,再根据最小发送设备BID原则,确定从LSW3的 E0/0/2、E0/0/4选举根端口,最后再根据最小发送设备PID原则,可知LSW3的 E0/0/2为根端口。
然后选举指定端口
根交换机上的端口都是指定端口,故LSW4的E0/0/1、E0/0/3、E0/0/2、E0/0/4 端口都是指定端口
又根据每条链路上有且只有1个指定端口。故LSW2-E0/0/3 至 LSW4-E0/0/3 这条链路上的LSW2的E0/0/3只能是阻塞端口了(因为
LSW2的E0/0/2是根端口)。同理可知 LSW3的E0/0/4也是阻塞端口。LSW1的E0/0/2为根端口,故LSW3的E0/0/1只能是指定端口。
所以只有以下红圈中的端口需要确定了。
接下来 ,一条一条链路的分析,先看LSW1-E0/0/4 至 LSW1-E0/0/3 这条链路。经最小RPC原则,可知, LSW1-E0/0/3的根路径成本小,故而LSW1的E0/0/3为指定端口。而LSW1-E0/0/4只能为阻塞端口了。
再看LSW1-E0/0/1 至 LSW2-E0/0/1 这条链路。经最小RPC原则,可知, LSW2-E0/0/1的根路径成本小,故而LSW2的E0/0/1为指定端口。而LSW1-E0/0/1只能为阻塞端口了。
再看LSW1-E0/0/3 至 LSW2-E0/0/4 这条链路。经最小RPC原则,可知, LSW2-E0/0/4的根路径成本小,故而LSW2的E0/0/4为指定端口。而LSW1-E0/0/3只能为阻塞端口了。
故最终的拓扑端口角色如下:
拓扑图实例五
虽然,三台交换机没有形成物理环路,那么只要开启的STP协议功能,当两台交换机上电后,同样会进行 1.选举根交换机 2.选举根端口 3.选举指定端口
选举根交换机:谁的网桥ID最小,谁是根交换机,故LSW8是根交换机。
然后选举根端口:根端口 只能在非根交换机上存在,有且只有一个。即每个非根交换机上有且只有1个。
根据最小RPC原则: 确定不了LSW7上的 E0/0/1,还是 E0/0/2是根端口,需要更加最小发送设备BID来确定,可知 LSW7的E0/0/1是根端口。
由于LSW9上只有一个端口,故这个端口就是此交换机的根端口。
选举指定端口:
根交换机上的端口都是指定端口。故 LSW8的E0/0/1是指定端口。
又由于每条链路上有且只有1个指定端口,故LSW7上的 E0/0/2是指定端口。
由于没有物理环路,也就没有 多余的端口用作 阻塞端口的角色。