[计算机网络] 生成树协议

生成树协议

为什么需要生成树协议

为了提高网络可靠性,交换网络中通常会使用冗余链路。

在这里插入图片描述

冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC 地址表不稳定等问题,进而会影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)可以在提高可靠性的同时又能避免环路带来的各种问题。

广播风暴

根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个未知目的MAC 地址的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴

  • 环路会引起广播风暴。

  • 网络中的主机会收到重复数据帧。

MAC地址表震荡

交换机是根据所接收到的数据帧的源地址和接收端口生成MAC 地址表项的。

环路会引起MAC 地址表震荡。

STP生成树

STP生成树原理

STP(Spanning Tree Protocol)是用于网络树型拓扑结构的建立,起到防止网络中的冗余链路形成环路。STP 通过阻塞端口来消除环路,并能够实现链路备份的目的(假死)

STP 的作用说明
消除环路通过阻断冗余链路来消除网络中可能存在的环路。
链路备份当活动路径发生故障时,激活备份链路,及时恢复网络连通性。

在这里插入图片描述

STP工作过程

每个STP 网络中,都会存在一个根桥(根交换机),其他交换机为非根桥(非根交换机)。根桥或者根交换机位于整个逻辑树的根部,是STP 网络的逻辑中心,非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU(包含交换机在参加生成树计算时的各种参数信息)。

STP 工作过程
1. 选举一个根桥(Root)
2. 每个非根交换机选举一个根端口(Root Port)
3. 每个网段(网线)选举一个指定端口(Designated Port)
4. 阻塞非根、指定端口

设备角色:

设备角色
根桥
非根桥

端口角色:

端口角色说明
指定端口 (Designated Port)指定端口是交换机向所连网段转发配置BPDU 的端口, 每条链路有且只能有一个指定端口。 一般情况下,根桥的每个端口总是指定端口。
根端口 (Root Port)根端口是非根交换机去往根桥路径最优的端口。 在一个运行STP 协议的交换机上最多只有一个根端口。 根桥上没有根端口。
预备端口 (Alternate Port)如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。 预备端口将被阻塞。
根桥选举

STP 中根桥的选举依据的是桥ID,STP 中的每个交换机都会有一个桥 ID(Bridge ID)。桥ID 由16 位的桥优先级(Bridge Priority)和48 位的MAC 地址构成。

在STP 网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC 地址,MAC 地址越小则越优先

交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU 报文就可以通过所有端口转发。对端交换机收到BPDU 报文后,会比较BPDU中的根桥ID 和自己的桥ID 。如果收到的BPDU 报文中的桥ID 优先级低,接收交换机会继续通告自己的配置BPDU 报文给邻居交换机。如果收到的BPDU 报文中的桥ID 优先级高,则交换机会修改自己的BPDU 报文的根桥ID 字段,宣告新的根桥。

根端口选举

非根交换机在选举根端口时分别依据该端口的根路径开销对端BID(Bridge ID)、对端PID(Port ID)和本端PID

交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP 中的开销值。

Port Cost(Dot1T )   :Config=auto / Active=200000

默认情况下端口的开销和端口的带宽有关带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU 端口的端口开销总和(即BPDU 的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC(Root Path Cost,根路径开销),并生成无环树状网络。根桥的根路径开销是0。

一般情况下,企业网络中会存在多厂商的交换设备,华为系列交换机支持多种STP 的路径开销计算标准,提供最大程度的兼容性。缺省情况下,华为系列交换机使用IEEE 802.1t 标准来计算路径开销。

运行STP 交换机的每个端口都有一个端口ID(PID),端口ID 由端口优先级和端口号构成,例如(128.2)

----[Port2(Ethernet0/0/2)][FORWARDING]----
 Port Protocol       :Enabled
 Port Role           :Root Port
 Port Priority       :128

端口优先级取值范围是0 到240,步长为16,即取值必须为16 的整数倍。缺省情况下,端口优先级是128。端口ID(Port ID) 可以用来确定端口角色。

每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判定的,即路径开销最小的端口就是根端口。端口收到一个BPDU 报文后,抽取该BPDU 报文中根路径开销字段的值,加上该端口本身的端口开销即为本端口路径开销。如果有两个或两个以上的端口计算得到的累计路径开销相同,那么选择收到发送者BID 最小的那个端口作为根端口。

如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID 最小的那个端口作为根端口。如果两个或两个以上的端口通过Hub 连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID 最小的作为根端口。

指定端口选举

非根交换机在选举指定端口时分别依据根路径开销、BID、PID

先比较累计路径开销,累计路径开销最小的端口就是指定端口。

如果累计路径开销相同,则比较端口所在交换机的桥ID,所在桥ID 最小的端口被选举为指定端口。

如果通过累计路径开销和所在桥ID 选举不出来,则比较端口ID,端口ID 最小的被选举为指定端口。

BPDU报文

BPDU(Bridge Protocol Data Unit,桥协议数据单元) 包含桥ID、路径开销、端口ID、计时器等参数。

BPDU有两种类型,分为配置BPDUTCN BPDU

  • 配置BPDU包含了桥ID、路径开销和端口ID 等参数。STP 协议通过在交换机之间传递配置BPDU 来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU 。在网络拓扑稳定以后,只有根桥主动发送配置BPDU ,其他交换机在收到上游传来的配置BPDU 后,才会发送自己的配置BPDU。

    配置BPDU 中包含了足够的信息来保证设备完成生成树计算,其中包含的重要信息如下:

    重要字段说明
    根桥ID (BID)由根桥的优先级和MAC 地址组成,每个STP 网络中有且仅有一个根桥。
    根路径开销 (RPC)到根桥的最短路径开销。
    指定桥ID (ROOT ID)由指定桥的优先级和MAC地址组成。
    指定端口ID (PID)由指定端口的优先级和端口号组成。
    Message Age配置BPDU 在网络中传播的生存期。
    Hello Time配置BPDU发送的周期。
    Forward Delay端口状态迁移的延时。
  • TCN BPDU 是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。

计时器

配置BPDU 报文每经过一个交换机,Message Age 都加1。

如果Message Age 大于Max Age(BPDU报文的老化时间),非根桥会丢弃该配置BPDU。

总结

STP 是为了解决二层环路产生的问题而诞生的,二层环路会产生广播风暴、MAC 地址表震荡、充斥大量重复帧。

STP 通过逻辑上的阻塞端口来消除环路。

从设备角色上看STP 分为:根桥和非根桥。

从端口角色上看STP 分为:指定端口(DP),根端口(RP)、预备端口(AP)

STP 根桥选举过程:

  • 每台交换机初始状态都认为自己是根桥并向其他交换机发送BPDU;
  • 交换机比较BPDU 中的BID(桥ID),先会比较优先级,数值越小越优先。优先级相同则会比较MAC 地址,越小越优先

根端口的选举过程:

  • 选择到根桥路径开销最小的为根端口,路径累计开销依据是带宽,带宽越高开销越小
  • 如果多个累计路径开销相同,选择收到发送者BID 最小的那个端口作为根端口。
  • 如果BID 还相同 ,比较对端端口PID 最小的哪个的端口为跟端口

指定端口的选举过程:

  • 根桥的端口都为指定端口;
  • 非根桥选举指定端口依据累计开销选举,累计开销小的为指定端口;
  • 若累计开销相同则会比较自己的桥ID,桥ID 小的为指定端口。

预备端口的选举过程:

  • 如果一个端口没有被选成根端口和指定端口,那么它就是预备端口,而且会被阻塞。被阻塞的端口不能转发数据,只能监听BPDU。

端口的状态转换

端口发生状态转发的场景:

  • 端口初始化或者赋予角色;

  • 端口被选为根端口或指定端口。

  • 端口不再是根端口或指定端口。

  • forward delay计时器超时。

  • 端口禁用或链路失效。

    在这里插入图片描述

    端口状态说明
    Forwarding 转发状态端口既可转发用户流量也可转发BPDU 报文, 只有根端口或指定端口才能进入Forwarding 状态。
    Learning 学习状态端口可根据收到的用户流量构建MAC 地址表,但不转发用户流量。 增加Learning 状态是为了防止临时环路。
    Listening 侦听状态端口可以转发BPDU报文,但不能转发用户流量。
    Blocking 阻塞状态端口仅仅能接收并处理BPDU ,不能转发BPDU ,也不能转发用户流量。 此状态是预备端口的最终状态。
    Disabled 禁用状态。端口既不处理和转发BPDU 报文,也不转发用户流量。

STP变换

根桥故障

​ 在稳定的STP 拓扑里,非根桥会定期收到来自根桥的BPDU 报文。如果根桥发生了故障,停止发送BPDU 报文,下游交换机就无法收到来自根桥的BPDU 报文。如果下游交换机一直收不到BPDU 报文,Max Age 定时器就会超时(Max Age的默认值为20 秒,从而导致已经收到的BPDU 报文失效,此时,非根交换机会互相发送配置BPDU 报文重新选举新的根桥。

根桥故障会导致50 秒左右的恢复时间,恢复时间约等于Max Age 加上两倍的Forward Delay 收敛时间。

如果故障解除,又会恢复原样

直连链路故障

交换机检测到直连链路物理故障后,会将预备端口转换为根端口。

交换机新的根端口会在30 秒后恢复到转发状态。

STP配置

STP模式

华为X7 系列交换机支持三种生成树协议模式。

stp mode { mstp | stp | rstp }命令用来配置交换机的生成树协议模式。

缺省情况下,华为X7 系列交换机工作在MSTP 模式。在使用STP 前,STP模式必须重新配置。

[SWA]stp mode ?
  mstp  Multiple Spanning Tree Protocol (MSTP) mode
  rstp  Rapid Spanning Tree Protocol (RSTP) mode
  stp   Spanning Tree Protocol (STP) mode

[SWA]stp mode stp
配置交换机优先级

基于企业业务对网络的需求,一般建议手动指定网络中配置高、性能好的交换机为根桥。

可以通过stp root primary命令指定生成树里的根桥。

stp priority <priority>命令用来配置设备优先级值。priority 值为整数,取值范围为0 到61440 ,步长为4096 。缺省情况下,交换设备的优先级取值是32768。

[SWA]stp priority 4096
配置路径开销

华为X7 系列交换机支持三种路径开销标准,以确保和友商设备保持兼容。缺省情况下,路径开销标准为IEEE 802.1t。

stp pathcost-standard { dot1d-1998 | dot1t | legacy }命令用来配置指定交换机上路径开销值的标准。

每个端口的路径开销也可以手动指定。此STP 路径开销控制方法须谨慎使用,手动指定端口的路径开销可能会生成次优生成树拓扑。

stp cost <cost>命令取决于路径开销计算方法:

  • 使用华为的私有计算方法时,cost 取值范围是1~200000。
  • 使用IEEE 802.1d 标准方法时,cost 取值范围是1~65535。
  • 使用IEEE 802.1t 标准方法时,cost 取值范围是1~200000000。
[SWA]stp pathcost-standard ?
  dot1d-1998  IEEE 802.1D-1998
  dot1t       IEEE 802.1T
  legacy      Legacy
[SWA]interface GigabitEthernet 0/0/1    
[SWA-GigabitEthernet0/0/1]stp cost 2000

EEE 802.1d 标准方法时,cost 取值范围是1~65535。

  • 使用IEEE 802.1t 标准方法时,cost 取值范围是1~200000000。
[SWA]stp pathcost-standard ?
  dot1d-1998  IEEE 802.1D-1998
  dot1t       IEEE 802.1T
  legacy      Legacy
[SWA]interface GigabitEthernet 0/0/1    
[SWA-GigabitEthernet0/0/1]stp cost 2000
  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Da1NtY0926

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值