2.1 Spanning-tree基本概念
二层环境中环路
接入层和汇聚层之间的二层环境,存在单链路故障以及单点故障。
增加链路可以解决单链路和单点故障问题。
引入了二层环路,广播风暴会引起灾难性后果(MAC地址泛洪、广播风暴、MAC地址混乱等)。
生成树协议通过一序列选取,将一些端口BLOCK,避免环路。
如果中间是三层,则可以隔绝广播。
2.1.1 协议标准
RSTP:快速生成树协议;
MSTP:适用于大型园区网;
2.1.2 端口状态
定义状态是为了可靠的过度到FORWARDING。
BLOCK状态能收到BPDU,但是不能发。
- 过度依赖于计时器
- BLOCK状态,不断侦听BPDU包,20秒没收,到BPDU包,则进入LISTENING状态;
- 这时可以收发BPDU,且15秒(可以获取全网BPDU)还是指定端口,则进入LEARNING状态;
- 开始学习MAC地址,构建MAC地址表,持续15秒,学习MAC地址,如果15秒后还是指定端口,则进入FORWARDING状态。
2.2 STP选取过程
- 每台交换机上运行生成树协议,,交换BPDU报文,网桥协议数据单元:
- 计算各种端口角色的选取结果,找到非指定端口,BLOCK该端口,打破环路。
- 在每一个广播域/交换网络选择根桥,根桥相当于树根;
- 非根桥设备上选择根端口,即朝向根的端口;
- 每段(网络连接segment)选择一个指定端口;
- 最后剩下的为非指定端口,即BLOCK端口。
- 根据桥ID选择根桥,8字节标识符,运行SPANNING-TREE的交换机都会有一个唯一的8B标识符(优先级是可以调整的,桥MAC地址是无法改变的)。
- 桥ID中的桥MAC地址不是端口地址,而是交换机的背板MAC地址,可以通过show interface中第一个MAC地址。
过滤后看第一个
- 桥ID会被填充在BPDU里面,泛洪,这样大家就都会知道。
- 通过比较,桥ID最低的为根桥。
- 中继Relay:一旦收敛完成后,只有根桥才会发BPDU,其他则是不断从根端口收到指定BPDU,并从指定端口转发BPDU。
- BPDU包含配置型BPDU和TCN类BPDU,通过TYPE字段区分。
- 配置型BPDU:正常情况下发送,初始和选择时也发;
- TCN类BPDU:网络拓扑发生变化时,发送;
- 根ID,一旦选择根桥后,BPDU中的根ID就是根桥的ID,不会变;
- 路径开销:接口COST,根据带宽不同而不同,从根发出来是0,下一个转发时,则加上收到BPDU接口的COST值,一直向下累加。当一个设备从两个接口收到BPDU时,则分别将收到的BPDU中的COST加上各自收到接口的COST值,两个对比,取小的做根端口;
- 网桥ID:发送BPDU的桥ID,中间转发时,根ID不会变,但是网桥ID是会变的,填充的是转发的设备网桥ID;
- 端口ID:端口默认优先级为128,发送的端口的ID;
- 消息寿命:类似TTL跳数,每经过一个网桥都减1;
- 最大寿命:多上时间内没收到BPDU时,则认为该链路故障;
- 转发延迟:从BLOCK到FORWOARDING,有个间隔。
- 所有的选举都是根据BPDU字段选取的。
- 如SW3,看两个端口到达根桥的COST,选择最低的COST作为根端口(收到的BPDU的COST加上两个收到BPDU接口的COST,然后比较最小值)。
- 当SW3收到的COST一样时,则比较BPDU中的网桥ID。如果网桥ID也一样,则比较发送者的端口ID(端口号是不可能一致的)。
- 查看接口COST,show spanning-tree interfase 接口,如本次为19
如此处为19。
- 此处是默认值,可以修改接口COST值。
- 命令:进入接口后,spanning-tree cost 新的COST值,即可。
- 还可以通过修改带宽达到修改COST的目的,不建议,修改bandwidth会影响其他协议的运行。
- 命令:进入接口后,bandwidth 10000,单位是KB,此处是修改为10MB。
- 根桥上面的端口都是指定端口,不可以被阻塞。
- SW3发给SW2的COST值比SW2发给SW3的值大。
注意,根桥的角色是可以抢占。比如优先级相同时,MAC地址最小的是根桥,稳定后,来了个新的交换机,他的MAC地址更新,新的会抢位置,抢占根桥位置。
所以严格来说,STP不是一个非常可靠的协议,根的不稳定,有可能因为根的震荡导致BLOCK变动。
2.3 STP拓扑变更
A监测到链路故障或者拓扑变化,触发发送拓扑变更消息TCN。
发送TCN状态的条件。
A挂了,
B监测到了故障,B从根端口向外发送BPDU,通知根桥出现拓扑变更。
C从指定端口收到TCN,C根端口发送BPDU,同时返回ACK给B,告知收到。
根桥收到后应答,
根桥发送TC标志置位的BPDU,20+15S。
所有交换机收到消息后,设置老化表15S,迅速老化,有助于更新CAM表。
总结
2.4 示例
2.4.1 示例1
根桥:优先级相同,然后比较MAC地址,SW1最小,所以SW1是根桥;
根端口:朝着根桥的方向,即SW2和SW3连向根桥的端口;
指定端口:根桥的端口都是指定端口,剩下的链路比开销
剩下的BLOCK
2.4.2 示例2
相对第一个链路COST发生了变化,
根端口选举时,朝着SW1的方向,计算COST值
选择指定端口
剩下阻塞
2.4.3 示例3
链路带宽一样的情况下,SW4的根端口比较需要发送借助桥ID。
2.4.4 示例4
根端口需要发送的端口编号