Cisco Packet Tracer实验(四)

生成树协议(Spanning Tree Protocol)

交换机在目的地址未知或接收到广播帧时是要进行广播的。如果交换机之间存在回路/环路,那么就会产生广播循环风暴,从而严重影响网络性能。

交换机中运行的STP协议避免 交换机之间发生广播循环风暴

只使用交换机,构建如下拓扑:

这是初始时的状态。我们可以看到交换机之间有回路,这会造成广播帧循环传送即形成广播风暴,严重影响网络性能。

随后,交换机将自动通过生成树协议(STP) 对多余的线路进行自动阻塞(blocking),以形成一棵以Switch4为根(具体哪个是根交换机有相关的策略)的具有唯一路径树即生成树。

经过一段时间,随着STP协议成功构建了生成树后,Switch5的两个接口当前物理上是连接的,但逻辑是不通的,处于Blocking状态(桔色)如下图所示。

在网络运行期间,假设某个时候 Switch7 与 Switch6 之间的物理连接出现问题(将 Switch7 与 Switch6 的连线剪掉),则该生成树将自动发生变化。Switch7 上方先前 Blocking 的那个接口现在活动了(绿色),但下方那个接口仍处于 Blocking 状态(桔色)。如下图所示:

交换机的STP协议即生成树协议始终自动保证交换机之间不会出现回路,从而形成广播风暴。

再详细讲讲:

STP(Spanning Tree Protocol)是一个用于局域网中消除环路的协议。它的标准是IEEE 802.1D。STP通过将部分冗余链路强制为阻塞状态,其他链路处于转发状态,将环形网络结构修剪成无环路的树形网络结构,可实现消除环路。当处于转发状态的链路不可用时,STP重新配置网络,并激活合适的备用链路状态,恢复网络连通性。

一、STP的工作原理

1、每个网络设备(交换机)都有一个桥优先级(Bridge Priority)和一个桥ID(Bridge ID)

2、每个设备通过发送BPDU(Bridge Protocol Data Unit)消息来与其他设备进行通信。

3、每个设备根据接收到的BPDU消息来确定根桥和最短路径。

4、设备选择根桥,并将自己的端口设置为根端口和非根端口

通过协议计算(依赖于BPDU报文),从逻辑上阻塞端口,从而实现防环,当链路一旦出现故障时,阻塞端口重新恢复转发。STP适用于较小规模的网络,但它的收敛速度较慢,对网络中的拓扑变化反应不够迅速。

二、STP基本概念

1、桥ID(Bridge ID)

每台交换机在出厂的时候都有一个不一样的标识,就是桥MAC,在STP里面使用了桥ID来标识不同的交换机,每一台交换机运行了STP就有一个对应的桥ID,桥ID由两部分组成,一个2字节的桥优先级,默认32768(可以管理员自行修改)。一个6字节的桥MAC,通常为默认VLAN1的MAC地址。

2、根桥(Root Bridge)

STP要在整个二层网络中计算出一棵无环的树,树就形成了,网络中的无环拓扑也就形成了。其中最重要的就是树根,树根明确了,"树枝"才能沿着网络拓扑进行延伸。STP的根桥就是这棵树的树根。当STP启动后,第一件事就是在网络中选举出根桥。在一个二层网络中,根桥只有一个,其余设备都是非根桥。当网络的拓扑发生变化时,根桥也可能发生变化。

3、根路径开销

非根桥到达根桥可能有多条路径,每条路径都有一个总开销值,也就是根路径开销(RPC),**这个值是通过这条路径所有出端口的开销值累加而来的。STP不会计算入端口的开销,**只在数据通过端口发出时,才计算这个端口的开销。对于根桥来说,根路径开销是0。

STP上的交换机每一个接口都有对应的一个开销值,用于表示数据通过该端口发送时的开销,开销值越小表示带宽越高,技术发展到现在有2个公有标准,华为华三自己一个私有版本。

4、端口ID

运行STP的交换机使用端口ID 标识每个端口,端口ID主要用于选举指定端口。端口ID长度为16比特,其中前4比特是端口优先级 ,后12比特是端口编号。在进行比较时,先比较端口优先级,优先级小的端口优先;在优先级相同时,再比较端口编号,编号小的端口优先。通常情况下,端口编号无法改变,可通过设置端口优先级来影响生成树的选路。

5、BPDU(桥协议数据单元)

交换机毕竟是一个独立的个体,想要把一个二层网络 (二层网络就是OSI模型中的数据链路层。)里面的交换机形成一颗大树一样的树状结构,那就少不了需要相互"沟通",来了解整个二层网络的结构拓扑,正是依赖BPDU,**它包含了STP协议里面相关的所有信息,通过这些信息来完成生成树的计算,**这里要注意,BPDU发送的是组播帧,目的地址为0180-C200-0000,运行了STP交换机会产生、发送、接收、处理BPDU,其余未运行的则不参与。

选举要求:

根桥ID:优先级+mac地址

1、比较优先级:

默认为32768,数值越小越优先,可调整,只能为4096的倍数。

2、比较mac地址,数值越小越优先:

如果设备收到比本身差的BPDU报文,直接丢弃,如果设备收到比本身优的BPDU报文,将其放入端口存储并且转发出去

全网泛洪的BPDU报文的根桥ID一致时说明交换网络中已经选出根桥交换机。

2、选举根端口

根端口(RP): 转发数据的端口,**用于接收最优的BPDU报文,只在非根桥交换机上有且只有一个。**非根桥交换机与根桥交换机直连接口都为RP端口。

选举要素:

根路径开销:

选择根路径开销(RPC)最小的端口;

如果RPC相同,那就选对端桥ID(BID)最小的端口;

如果对端桥ID相同,那就选对端端口ID(PID)最小的端口;

跟接口的带宽有关,根路径开销越小越优先。

3、选举指定端口

根端口确保了交换机到根桥的路径是唯一的,也是最优的。**网络中的每条链路与根桥之间的路径也要是唯一且最优的。当一条链路中有两条或两条以上的路径到达根桥,就必须确定出一个唯一的指定端口,防止出现二层环路。**指定端口不但是这条链路内所有端口中到达根桥的最优接口,还会向链路内发送BPDU。

选举要素:

1、发送者桥ID设备在转发BPDU报文,都会将本身的桥ID字段填充到发送者桥ID中。

2、比较规则与根桥ID比较规则完全一致。

虽然选举指定端口的范围和根端口不同,但是选举的原则是一致的。指定端口的选举同样会按照以下过程进行:

4、阻塞端口

在确定了根端口和指定端口后,交换机上剩下的非根端口和非指定端口都叫做备用端口**。备用端口是打破环路的关键,STP会对这些备用端口进行逻辑阻塞。**逻辑阻塞,是指端口不会接收或发送任何数据,但是会监听BPDU。当网络的一些端口出现故障时,STP会让备用端口开始转发数据,用来恢复网络的正常通信。

选举要素:

端口ID:优先级+端口编号。

优先级: 默认为128,数值越小越优先,可调整,只能调整为16的倍数。

端口ID:数值越小越优先。

四、STP端口状态机和时间参数

STP不但定义了3种端口角色:根端口、指定端口、备用端口, 还定义了5种端口状态:禁用状态、阻塞状态、侦听状态、学习状态、转发状态。

disable: 说明端口未启用STP协议;

blocking: 阻塞状态,属于AP端口正常状态,进行根桥的选举;

**listening:**侦听状态,进行端口角色的确定;

**learning:**学习状态,学习mac地址表;

**forwarding :**转发状态,转发数据,学习mac地址。

STP定义了3个重要的时间参数

**Hello Time(Hello 时间):**STP交换机发送配置BPDU的时间间隔,默认是2秒。如果要修改时间参数,那么必须在根桥上修改才有效。

**Forward Delay(转发延迟):**接口从侦听状态进入学习状态,或从学习状态进入转发状态的延迟时间,默认值是15秒。避免在STP树的生成过程中可能出现的临时环路,或短暂的数据帧泛洪现象,分别在侦听和学习的端口状态各停留一个转发延迟时间。对于STP而言,一个阻塞端口选举为根接口或指定接口后,进入转发状态至少需要经历30秒的时间。

**Max Age(最大生存时间):**BPDU的最大生存时间,也称为BPDU的老化时间,Max Age的值由根桥指定,默认值是20秒。如果端口在20秒内收到BPDU,最大生存时间会重新计时;如果端口一直没收到BPDU,那么BPDU将会老化,设备会重新在端口上选择最优BPDU,也就是重新进行根接口的选举。

由于时间参数的设计,一个STP接口从阻塞状态进入到转发状态,可能需要30 ~ 50秒的时间,这段时间内,网络无法正常使用。

相关推荐
网络安全-杰克3 分钟前
网络安全概论
网络·web安全·php
怀澈1228 分钟前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
耗同学一米八38 分钟前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题二
运维·网络·mariadb
skywalk81631 小时前
树莓派2 安装raspberry os 并修改成固定ip
linux·服务器·网络·debian·树莓派·raspberry
C++忠实粉丝1 小时前
计算机网络socket编程(3)_UDP网络编程实现简单聊天室
linux·网络·c++·网络协议·计算机网络·udp
黑客Ela1 小时前
网络安全中常用浏览器插件、拓展
网络·安全·web安全·网络安全·php
qdprobot2 小时前
ESP32桌面天气摆件加文心一言AI大模型对话Mixly图形化编程STEAM创客教育
网络·人工智能·百度·文心一言·arduino
hakesashou3 小时前
Python中常用的函数介绍
java·网络·python
C++忠实粉丝3 小时前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
九州ip动态3 小时前
做网络推广及游戏注册为什么要换IP
网络·tcp/ip·游戏