二、CCNP-生成树协议STP-802.1D

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

根端口需要发送的端口编号

发表回复