第十三章 STP协议

第十三章 STP协议

专栏总目录
第一章 计算机网络概述
第二章 OSI参考模型与TCPIP模型
第三章 局域网基本原理
第四章 广域网基本原理
第五章 IP基本原理
第六章 TCP与UDP
第七章 路由器、交换机及其操作系统介绍
第八章 命令行操作基础
第九章 网络设备文件管理
第十章 网络设备调试
第十一章 以太网交换机工作原理
第十二章 配置Vlan
第十三章 STP协议
第十四章 交换机端口安全技术
第十五章 链路聚合
第十六章 IP子网划分
第十七章 DNS
第十八章 文件传输协议
第十九章 DHCP
第二十章 IPv6
第二十一章 IP路由原理
第二十二章 VLNA间路由
第二十三章 静态路由
第二十四章 路由协议概述
第二十五章 RIP
第二十六章 OSPF
第二十七章 ACL
第二十八章 NAT
第二十九章 HDLC&PPP
第三十章 3G+WLAN
第三十一章 H3CNE综合实验


一、写在开始

本文将简单介绍一种具备消除环路、链路备份的一种技术。

二、生成树背景

二层环路带来的影响

广播风暴

前文我们提到过广播风暴,这里我们再此强调一下,所谓的广播风暴就是指广播帧在广播域中传播,但是这样会造成网络带宽的浪费以及会降低设备性能。。

在这里插入图片描述

假设现在SW1和SW2为了保障业务稳定,担心一根线路不够可靠所以额外增加了一根线路。
当设备收到广播帧后必然会从接口到该接口外的其他接口广播出去,前提是都处于同一个广播域的时候。
那么此时当PC3发出一个广播帧的时候,SW1会除接收到该广播帧的端口外的其他接口泛洪出去,当SW2收到以后也会除接收到该广播帧的接口外其他接口泛洪出去,那必然会造成几个现象:

  1. SW1的g0/2口的广播帧到SW2必然会从SW2的g0/3广播回来。
  2. SW1的g0/3口的广播帧到SW2必然会从SW2的g0/2广播回来。
  3. SW1收到SW2的广播帧后再广播回SW2这样只会循环往复下去。
  4. 必然会造成网络资源的浪费,降低了设备的性能。
MAC地址震荡/MAC地址漂移

我们前面文章还说过MAC地址学习过程,以太网交换机会将接口收到的以太网数据帧中源MAC地址和对应的接口、VLAN记录到MAC地址表中。
按照上面所说的情况,SW1和SW2来回传递广播帧的时候,SW1本身mac地址表记录PC3的广播帧的时候是在g0/1接口上的,然后SW2收到广播帧到后也会对应的记录MAC地址表中,然后广播回SW1的时候,SW1因为收到广播帧的接口和之前MAC地址记录表中接口不一致从而就会刷新MAC地址表,然后再广播回SW2的其他接口,从而SW2的MAC地址表也会再刷新,这种现象会循环往复下去,这一现象我们称为 “MAC地址震荡” / “MAC地址漂移”

生成树协议的作用

为了避免上述情况发生,这个时候就想到了一种解决方式

  1. 通过阻断冗余链路来消除桥接网络中可能存在的路径回环
  2. 当前路径发生故障时,激活冗余备份链路,恢复网络连通性

三、STP

STP是什么?

STP(Spanning Tree Protocol,生成树协议)是用于在局域网中消除数据链路层物理环路的协议。
通过在桥之间交换BPDU(Bridge Protocol Data Unit,桥协议数据单元),来保证设备完成生成树的计算过程 。
STP作用那节提到了该协议通过阻塞冗余端口来实现的,下面就会一一介绍他们计算所用到的一些参数信息。

BPDU

定义:

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

分类:

  1. 配置BPDU:用于传递STP的配置信息(选举的时候使用)
  2. TCN BPDU:用于通告拓扑变更信息(网络拓扑改变或者报错使用)

配置BPDU:

配置BPDU包含以下重要信息,用于完成生成树计算

  • 根桥ID(RootID)
  • 根路径开销(RootPathCost)
  • 指定桥ID(DesignatedBridgeID)
  • 指定端口ID( DesignatedPortID )

各台设备的各个端口在初始时生成以自己为根桥(Root Bridge)的配置消息,向外发送自己的配置消息
网络收敛后,根桥向外发送配置BPDU,其他的设备对该配置BPDU进行转发

STP 的工作原理

在这里插入图片描述

简单来说:

如上图所示,当我们出现环路的时候,生成树协议会根据一定的规则临时阻塞一个接口(不同于关闭接口,只是接收、发送数据),当其他链路故障以后就会再恢复这个阻塞的接口从而避免单点故障造成无法通信。

详细来说:

  1. 开启STP协议后,所有交换机都以自己为根桥,默认情况下所有的端口每隔2s发送一次BPDU报文。如果收到其它端口比自己更好的BPDU,则本地端口停止发送BPDU。
  2. 在此过程中开始选举ROOT,比较两者BID(由优先级+MAC地址组成),先比较两者优先级,得出两者优先级相同;再比较MAC地址,得出MAC地址更小,所以选举出小的为根交换机。
  3. 然后开始选举RP:先比较到达根网桥所经过的所有交换机的出接口cost值的总和,得出两端口cost总和相同;再比较对端交换机的BID,得出两端口BID的值相同;最后比较对端port id(由接口优先级和接口号组成),得出端口的port id小的为根端口。
  4. 然后开始选举DP,先比较链路两端的交换机到达根网桥所经过的所有交换机的出接口的cost值的总和,得出两端口的cost值总和相同;再比较该条链路两端的交换机BID,得出两端口交换机BID值相同;最后比较对端接口的port id,得出端口port id小的选举为指定端口。
  5. 最后将非RP和DP的端口切换为AP,阻塞。

STP选举过程:

在这里插入图片描述

文章中提到的网桥都指的是交换机,由于交换机是由网桥演变过来的,而当年生成树协议研制出时候还不存在交换机,故出现选举名词为网桥(Root bridge)。

  1. 在所有交换机中选举出一台作为根网桥(即交换机)
  2. 每台非根网桥(即交换机)选举出一个根端口(Root Port)
  3. 每个物理段选举出一个指定端口(Designated Port)
  4. 剩下没有角色的端口就是闭塞端口(Blocked Port)

根桥的选举

规则:桥ID小的桥被选举为根桥
桥ID由桥优先级(BridgePriority)和桥MAC地址(BridgeMacAddress)组成
优先级默认32768,必须是4096的倍数,因为由2字节标识优先级但实质上只有前4位标识优先级后12位为拓展id,只有在特殊情况使用,这也是优先级为什么是4096的原因,因为二进制转换过来只能是这个范围,前四位分别置位1分别标识的4096、8192等。

端口角色的确定

规则:

  1. 根桥上的所有端口为指定端口( Designated Port )
  2. 在非根桥上选举根路径开销( RootPathCost)最小的端口为根端口(Root Port)
  3. 每个物理段选出根路径开销最小的桥作为指定桥( Designated Bridge),连接指定桥的端口为指定端口
  4. 不是根端口和指定端口的其余端口被STP置为阻塞状态

根路径开销

根路径开销( RootPathCost)是到达根的路径上所有链路开销(Cost)的代数和

规则:

  1. 非根桥进行根端口选举时,根路径开销最小的端口为根端口
  2. 物理段根路径开销最小的端口为指定端口

通过桥ID决定端口角色

规则:

  1. 在根路径开销相同时,对端桥ID小的桥相连端口为根端口
  2. 在根路径开销相同时,所连物理段上桥ID小的桥端口为指定端口

通过端口ID决定端口角色

端口ID:端口优先级(默认128)+端口序号组成

规则:

  1. 在根路径开销、对端桥ID都相同的情况下,对端设备端口ID小的端口为根端口
  2. 在根路径开销、物理段上桥ID都相同的情况下,物理段上端口ID小的端口为指定端口

选举总结:

  1. 首先设备会选择根网桥
  • 根据桥ID选举越小越优先
  1. 非根网桥上会选举一个根端口
  • 去往根桥的路径开销总和小的端口优先(若相同往下比较)
  • 对端网桥的桥ID小的端口优先(若相同往下比较)
  • 对端的端口ID小的端口优先
  1. 每个物理段选举一个指定端口
  • 去往根网桥开销小的优先
  • 物理段上桥ID小的优先
  • 物理段上端口ID小的优先

端口状态

端口角色端口状态端口行为
未启用STP功能的端口、关闭的端口Disable不收发BPDU报文,接收或转发数据
非指定端口或根端口Blocking接收但不发送BPDU,不接收或转发数据
Listening接收并发送BPDU,不接收或转发数据,持续15S
Learning接收并发送BPDU,不接收或转发数据,持续15S
指定端口或根端口Forwarding接收并发送BPDU,接收并转发数据

端口状态迁移

端口被选为指定端口或根端口后,需要从Blocking状态经Listening和Learning状态才能到Forwarding状态,其中Listening和Learning过度都需要等待一次Forwarding Delay时间。
默认的Forwarding Delay时间是15秒

Blocking==>Listening(等待Forwarding Delay时间)==>Learning(等待Forwarding Delay时间)==>Forwarding

STP计时器

Hello time:2S,配置BPDU的发送周期
Max age:20S,判断链路故障的时间,10个hello time周期
Forwarding delay:15S,状态切换延迟

STP拓扑变更机制

  1. Max age超时或有接口变更为转发状态,判断为拓扑发展变更,向根网桥发起TCN BPDU
  2. 收到TCN BPDU的交换机继续向根网桥进行转发TCN BPDU
  3. 根网桥收到TCN BPDU后,向所有端口发起TC置位的配置BPDU
  4. 交换机收到TC置位BPDU后,MAC地址表的老化时间由原来的300S缩短到15S

所以准确来说,STP协议中链路故障到切换至少等待50S(20S老化+30S的状态切换其中MAC地址老化时间是同步计算的)

生成树的不足

端口从阻塞状态进入转发状态必须经历两倍的Forwarding Delay时间
如果网络中的拓扑结构变化频繁,网络会频繁地失去连通性

如果我现在有台电脑网卡不够稳定,由于每次连接都要等待两倍的Forwarding Delay时间,接口不稳定的情况下导致频繁掉出又连接,而每次连接都要等待两倍的Forwarding Delay时间,这样能够通信的可能性就格外低。

一图看懂选举流程

在这里插入图片描述

根据右上角的顺序,一次进行选举即可理解选举过程

四、RSTP

RSTP是什么?

RSTP(Rapid Spanning Tree Protocol,快速生成树协议)是STP协议的优化版
RSTP具备STP的所有功能
RSTP可以实现快速收敛(优点)
在某些情况下,端口进入转发状态的延时大大缩短,从而缩短了网络最终达到拓扑稳定所需要的时间。 (优点)

RSTP的改进

STP行为RSTP行为
端口被选为根端口默认情况下,2倍的Forwarding Delay的时间延迟存在阻塞的备份根端口情况下,仅有数毫秒延迟
端口被选为指定端口默认情况下,2倍的Forwarding Delay的时间延迟1. 在指定端口是非边缘端口的情况下,延迟取决因素较多。
2. 在指定端口是边缘端口的情况下,指定端口可以直接进入转发状态,没有延迟。

RSTP的小结:

  1. 端口状态由STP原来的5中减少到3种
    丢弃(Discarding)、学习(Learning)、学习(Learning)
    初级课程不详细展开介绍,简单了解即可
  2. 端口角色增加到四种
     根端口和指定端口不变
     闭塞端口细分为2种:
     替代端口(Alternata port):根端口的备份、
     备份端口(Backup port)指定端口的备份
  3. 边缘端口机制
     当链路激活,边缘端口立即进入转发状态,不参与STP计算
     边缘端口UP/DOWN不会触发拓扑变更
     通常把连接PC的端口配置为边缘端口

STP、RSTP的问题

  1. Trunk链路上实际上运行着多个VLAN
  2. 所有VLAN共用一棵生成树
  3. 无法实现不同VLAN在多条Trunk链路上的负载分担

在这里插入图片描述

不同VLAN的数据都会被阻塞,这样的话原本更加捷径道路反而绕行浪费链路带宽的缺点

五、PVST

本篇文章实验不会演示PVST,目前只要简单了解一下这种思想即可

PVST是什么?

PVST(Per VLAN Spanning Tree )
每个VLAN上运行一个STP或RSTP协议,不同VLAN之间的生成树完全独立。
在多条Trunk链路上实现单VLAN级负载分担

在这里插入图片描述

提示

PVST模式与其他模式的兼容性如下:

  • 对于Access端口:PVST模式在任意VLAN中都能与其他模式互相兼容。
  • 对于Trunk端口或Hybrid端口:PVST模式仅在VLAN 1中能与其他模式互相兼容。

PVST的缺点

进行PVST组网时,若网络中所有设备的生成树维护量(开启生成树协议的VLAN数×开启生成树协议的端口数)达到一定数量,会导致CPU负荷过重,不能正常处理报文,引起网络震荡。

六、MSTP

MSTP是什么?

简单来说:MSTP就是PVST的思想,但是PVST的缺点就是每个VLAN单独一棵树,MSTP是可以实现多个VLAN共同维护一课树

MSTP(Multiple Spanning Tree Protocol,多生成树协议)
将多个VLAN捆绑到一个实例,每个实例生成独立的生成树
在多条Trunk链路上实现VLAN级负载分担

在这里插入图片描述

四种生成树协议特性的比较

MSTP、PVST具有RSTP的快速收敛,同时又具有负载分担机制
MSTP兼容STP和RSTP

特性列表STPRSTPPVSTMSTP
解决环路故障并实现冗余备份YYYY
快速收敛NYYY
形成多棵生成树实现负载分担NNYY

四种生成树协议的端口状态对比

STP:

Blocking ——> Listening ——> Learning ——> Forwarding
 Listening —>Learning 阶段有个Forwarding Delay时间
 Learning —>Forwarding阶段有个Forwarding Delay时间

RSTP/PVST/MSTP

Discarding—>Learning—>Forwarding
 Discarding—>Learning阶段有个Forwarding Delay时间
 Learning—>Forwarding阶段有个Forwarding Delay时间

七、生成树协议的配置

基本配置

#开启设备STP特性
[Switch] stp global enable

#关闭端口的STP特性
[Switch-Ethernet1/0/1] undo stp enable

#配置STP的工作模式 
[Switch] stp mode { stp | rstp | pvst | mstp }

可选配置

#配置当前设备的优先级 
[Switch] stp [ instance instance-id ] priority priority

#配置当前接口的优先级
[Switch-Ethernet1/0/1]stp [ instance instance-id ] port priority 

#配置端口为边缘端口 
[Switch-Ethernet1/0/1] stp edged-port

八、STP监控与维护

#查看生成树的状态和统计信息
<h3c>display stp 

在这里插入图片描述

#查看STP状态信息,包括根桥、端口状态等
<h3c>display stp brief

在这里插入图片描述

九、实验

实验文档请参考我的另外一篇文章: H3CNE-RS 初级网络工程的STP(生成树协议)的简单配置实验

十、小结

本文简单介绍了STP产生的原因(为了消除路径回环的影响),STP协议如何选举根桥和阻塞冗余端口来消除环路然后又介绍了RSTP、PVST和MSTP工作原理,以及生成树协议配置命令


结束语

如果您认为本文对您有帮助,请帮忙在文末关注、点赞、收藏、文头点击订阅专栏,因为有了热度才能帮助更多人学习到看到本文,关于本文如果有问题可以在评论区留言,回复效率可能会低但是一定会积极恢复哦!~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

网工路上的绊脚石

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

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

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

打赏作者

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

抵扣说明:

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

余额充值