生成树协议 - STP

目录

BPDU

STP选举机制

STP端口状态

STP计时器

STP拓扑变更机制


生成树协议(Spanning Tree Protocol),简写为STP。

STP是二层网络中用于消除环路的协议,通过阻塞冗余链路,使可用链路在拓扑上呈现出无环的树结构,消除网络中可能存在的环路。当前活动链路发生故障时,激活冗余链路,恢复网络连通性。

BPDU

桥协议数据单元,用于传递STP协议相关的报文。

分类

  • 配置BPDU

    • 传递STP配置信息,用来进行生成树的选举。

    • 网桥(交换机)通过交互配置BPDU,获取STP计算所需的参数。

    • 配置BPDU基于二层组播方式发送,组播地址是:01-80-C2-00-00-00。

    • 配置BPDU只由根桥周期性发出,发送周期(Hello Time)为2秒。

  • TCN BPDU

    • 通告拓扑变更信息。

    • 非根交换机发的拓扑变化通知,用于报错使用。

STP数据帧格式

  • Protocol ID

    • 协议ID,表明使用的协议。

  • Protocol Version ID

    • 协议版本标识符,STP协议中该值为0。

    • RSTP为2。

    • MSTP为3。

  • BPDU Type

    • BPDU类型。

    • STP的配置BPDU:0x00。

    • STP的TCN BPDU:0x80。

    • MSTP或者RSTP的BPDU:0x02。

  • Flags

    • 8个标记位。最左边(最高位)置位时,表示TCA;最右边(最低位)置位时,表示TC。中间的6位保留。

    • TC,根桥发出的用来描述拓扑变化信息的,其他交换机收到后会将MAC地址表老化时间由300秒缩短至15秒。

    • TCA,拓扑变化确认。交换机收到拓扑变化报文后回复,表示收到了。

    • 两者属于配置BPDU中因Flags置位不同而产生的两种消息。

  • Root ID

    • 网桥ID都是8个字节,前两个字节是网桥优先级,后6个字节是网桥MAC地址。

  • Root Path Cost

    • 根路径开销,本端口累计到根桥的开销。

  • Bridge ID

    • 发送者BID,本交换机的BID。

  • Port ID

    • 发送端口PID,发送该BPDU的端口ID。

  • Message Age

    • 该BPDU消息存在于交换机中的时间(老化时间)。

  • Max Age

    • 类似于保活时间,交换机间周期发送配置BPDU保活,每2秒发送一次,10次后还没收到回包(20秒),就判定对方宕机。MAX Age = 10 * Hello Time。

  • Hello Time

    • 发送两个相邻BPDU间的时间间隔,一般2秒。

  • Forward Delay

    • 控制Listening和Learning状态的持续时间。

STP选举机制

根桥的选举

在所有交换机中选出一台作为根网桥(Root Bridge),其他交换机都为非根网桥。

  • 选举规则

    1. Bridge id小的优先。

  • Bridge id

    • 桥ID,用来标识交换机的身份,简写为BID。

    • 格式:优先级 - MAC地址

    • 默认优先级为32768,优先级必须是4096的倍数。

根端口的选举

每台非根网桥选举出一个根端口(Root Port)。

  • 选举规则

    1. 到达根网桥开销值小的优先。

    2. 对端交换机BID小的优先。

    3. 端口ID小的优先。

  • 端口ID

    • 格式:优先级+端口号(交换机接口编号)。

    • 优先级取值为0 - 240,默认为128,端口优先级必须是16的倍数。

  • 开销

    • 即cost,代表路径耗费的代价和成本,带宽越大,开销越小。

指定端口的选举

每个物理段上选举出一个指定端口(Designated Port)。

  • 选举规则

    1. 到达根网桥开销小的优先。

    2. 本机BID小的优先。

    3. 端口ID小的优先。

闭塞端口的选举

上面的角色选举完成后,剩下的端口就是闭塞端口(Blocked Port)。

注意

  • 根桥和端口角色的选举同步进行,不存在先后关系。

  • 选举时间(STP计算的时间)为30秒。

STP端口状态

Disable

  • 禁用状态,被手动关闭的端口。

  • 不发送配置BPDU,不进行MAC地址表的学习,不收发数据。

  • 不接收来自根桥的配置BPDU。

Blocking

  • 阻塞状态,闭塞端口所在的状态。

  • 不发送配置BPDU,不进行MAC地址表的学习,不收发数据。

Listening

  • 监听状态,是一个过度状态,持续时间为15秒。

  • 发送配置BPDU,不进行MAC地址表的学习,不收发数据。

Learning

  • 学习状态,也是一个过度状态,持续时间为15秒。

  • 发送配置BPDU,进行MAC地址表的学习,不收发数据。

Forwarding

  • 转发状态。

  • 发送配置BPDU,进行MAC地址表的学习,收发数据。

当网络出现变化(有交换机故障),整个网络的角色将会重新计算,这个过程至少需要30秒(因为Listening和Learning两个状态)。

STP计时器

Hello Time

  • 配置BPDU的发送周期,2秒。

Max Age

  • 判断链路故障的时间,10 * Hello Time = 20秒。

Forwarding Delay

  • 状态切换延迟,15秒。

STP的收敛时间

  1. 初次收敛时间 --- 30秒

    • 存在故障接口的交换机能迅速接收到来自其他交换机转发的配置BPDU,只需要等待两个状态切换延迟就能收敛。

  2. 拓扑故障再收敛时间 --- 50秒

    • 存在故障接口的交换机不能接收来自其他交换机转发的配置BPDU,此情况下,需要等待一个Max Age和两个状态切换延迟才能收敛。

STP拓扑变更机制

STP协议收敛时间为30秒或50秒,当网络中出现故障时,等待STP收敛后就可以正常转发数据了吗?

当网络收敛完成,交换机的MAC地址表是否会有300秒的老化时间。在MAC地址表没刷新前,数据包按照之前的路径走,肯定不可能顺利到达目的地。STP也有解决该问题的方案。

处理方案

  1. 交换机感知到拓扑变更,交换机向根桥发送TCN BPDU。

    • Max Age超时、有接口状态变更,都判定为拓扑变更。

  2. 沿途的非根网桥收到TCN BPDU后,会继续向根桥转发。

  3. 根桥收到TCN BPDU后,在下一轮配置BPDU中将TC置位,通告拓扑变更。

  4. 所有交换机收到根桥TC置位的配置BPDU后,将MAC地址表老化时间由300秒缩短到15秒。并向根桥回复TCA置位的配置BPDU。

该机制和收敛同时进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值