您现在的位置是:首页 >学无止境 >HCIA-10.生成树 STP 3/3网站首页学无止境

HCIA-10.生成树 STP 3/3

清风吹雨泡泡 2025-12-18 00:01:02
简介HCIA-10.生成树 STP 3/3

2.8STP的计算过程

2.8.1、根桥

2.8.2、根端口(RP - root port)

2.1、非根桥交换机去往根桥最近的接口

(非根桥交换机,每一个接口累加计算开销,计算开销最小的接口就是根接口)

RP端口就是接收最好BPDU的接口;

每一个非根交换机只有一个根端口。

2.8.3、指定端口(DP - destination port)

3.1、DP端口就是发送最好BPDU的接口

根桥的端口都是DP端口。

3.2、就是链路上去往根桥最近的接口

2.8.4、阻塞端口

没有成为DP且没有成为RP的端口就是阻塞端口;

被阻塞的接口不能转发数据,逻辑上是down的;

阻塞端口只能接收BPDU,不能发送BPDU。

2.9STP的端口状态过程

1、禁用

Disable

不收发BPDU

不学习MAC地址

不转发业务数据

2、阻塞

Blocking

收BPDU、不发BPDU

不学习MAC地址

不转发业务数据

3、侦听

Listening

收发BPDU

不学习MAC地址

不转发业务数据

4、学习

Learning

收发BPDU

学习MAC地址

不转发业务数据

5、转发

Forwarding

收发BPDU

学习MAC地址

转发业务数据

1、禁用

Disable

2、阻塞

Blocking

3、侦听

Listening

就是进行端口角色的选举

需要等待一个转发延迟的时间(15s)

4、学习

Learning

就是防止大量未知单播数据帧的泛洪

需要等待一个转发延迟的时间(15s)

5、转发

Forwarding

因为listeninglearning状态等待的转发延迟时间,所以在设备联通的状态下,需要等待30s时间网络才可用。

例:

1、PC1访问PC3,发出报文后,L1、L2、L3交换机将进行泛洪操作。

2、假设L3交换机已经学习到了PC3的MAC地址,则L3交换机不需要再向外进行泛洪操作。

3、在实际情况中,L3可能连接了其它交换机和PC。如果没有listening和learning状态,PC3将继续大量泛洪造成浪费。

2.10STP的接口状态迁移

1接口初始化或激活,自动进入阻塞状态

2接口被选举为根接口或指定接口,自动进入侦听状态

3转发延迟计时器超时且接口依然为根接口或指定接口

4接口不再是根接口或指定接口或指定状态

5接口被禁用或者链路失效

图中所示为STP的端口状态迁移机制,运行STP协议的设备上端口状态有5种:

Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。

Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。

Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。

Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。

Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

2.11STP故障

2.11.1、直连故障

A1、非AP端口直连故障(DPRP端口失效):需要30s的收敛时间。

例子:S2-S1的直连端口(RPAP)失效

故障发生:

S2的端口2(RP)连接到 S1的链路突然断开。

STP的反应:

S2检测到端口2失效,立即停止通过该端口转发数据。

S2开始重新计算生成树,寻找新的路径到达根网桥(S1)。

状态转换:

S2的备用端口3(DP)会从 DP 进入 RP。

同时,S3连接S2的阻塞端口会从 阻塞状态 进入 侦听状态(15秒)。

接着进入 学习状态(15秒),学习新的MAC地址。

最后进入 转发状态,开始正常转发数据。

总收敛时间:

由于需要经过 侦听 和 学习 两个状态,每个状态持续15秒,因此总收敛时间为 30秒。

A2AP端口直连故障:不需要恢复时间。

这是因为AP端口本身处于 阻塞状态,不参与数据转发。当AP端口失效时,网络拓扑没有实质性变化,因此不需要重新计算生成树。

例子:S3的替代端口(AP)失效

故障发生:

S3的端口3(AP)连接到 S2的链路突然断开。

STP的反应:

S3检测到端口3失效,但由于该端口是 阻塞状态,不参与数据转发,因此网络拓扑没有变化。

S3仍然通过其他端口(端口2,RP口)连接到网络,数据转发不受影响。

恢复时间:

由于AP端口本身不参与数据转发,其失效不会影响网络的正常运行,因此 不需要恢复时间。

STP的本质:

在逻辑上阻塞一条链路当作备份链路,如果主链路失效,则备份链路会继续转发数据。

2.11.2、非直连故障

A1、非AP端口非直连故障:需要50s的收敛时间,这包括:

20秒:BPDU的老化时间(Max Age)。

30秒:STP状态转换时间(15秒侦听 + 15秒学习)。

例子:HUB与S2之间的链路故障

故障发生:

HUB与S2之间的链路突然断开,但S2并未直接检测到故障(因为故障发生在HUB与S2之间,是非直连故障)。

BPDU老化:

S2的端口2(RP)原本通过HUB接收来自S1的BPDU。

由于链路断开,Switch B 无法收到新的BPDU。

S2会等待 20秒(Max Age),直到旧的BPDU过期。

STP重新计算:

当BPDU过期后,S2认为与根网桥(S1)的连接已失效。

S2开始重新计算生成树,寻找新的路径到达根网桥。

状态转换:

S2的备用端口3(DP)会从 DP 进入 RP。

同时,S3连接S2的阻塞端口会从 阻塞状态AP 进入DP状态,并开始 侦听状态(15秒)。

接着进入 学习状态(15秒),学习新的MAC地址。

最后进入 转发状态,开始正常转发数据。

总收敛时间:

20秒(BPDU老化) + 30秒(状态转换) = 50秒。

A2AP端口非直连故障:不需要恢复时间。

但如果AP端口需要切换为DP或RP,则需要额外的收敛时间:

AP切换为DP:需要 50秒 收敛时间(20秒BPDU老化 + 30秒状态转换)。

AP切换为RP:需要 30秒 收敛时间(仅状态转换)。

例子1:HUB与S3之间的链路故障

故障发生:

HUB与S3之间的链路突然断开,但S3并未直接检测到故障(因为故障发生在HUB与S3之间,是非直连故障)。

AP端口失效:

S3的端口3(AP)原本处于 阻塞状态,不参与数据转发。

由于AP端口失效,S3的网络拓扑没有实质性变化,因此 不需要恢复时间。

思考题:S3的AP口切换为DP或RP需要多长时间?

思路1:判断AP口连接的链路需不需要BPDU老化即可。

如果需要,则:如果S3的端口3(AP)需要切换为指定端口(DP),则需要等待 20秒(BPDU老化) + 30秒(状态转换) = 50秒。

如果不需要,则:如果Switch C 的端口1(AP)需要切换为根端口(RP),则只需要 30秒 的状态转换时间(15秒侦听 + 15秒学习)。

思路2:怎么判断需不需要BPDU老化?

S3端口3之所以是AP接口,是因为S3从S2的端口3接收到了最好的BPDU。那么当其端口2的链路断开时,不需要等待BPDU老化,只需要走最好的路线,直接从S2的端口3转发通信即可。所以只需要30秒即可。

2.12STP的拓扑改变

拓扑变更机制:

一开始STP认为所有端口进入转发状态或进入disable则认为拓扑发生了变更。

优化后的:

A1、当RP失效或进入转发状态会认为拓扑发生了变更;

A2、DP进到forwarding认为拓扑发生了变更,不同的是DP进入到disable(失效)认为拓扑没有发送变更;

A3、AP进入转发认为拓扑发生变更,AP进入disable(失效)不认为拓扑发生变更。

A1例如下:

A2A3中的DPAP进入disable状态,不认为拓扑发生变更的例如下:

2.13、非根桥设备拓扑变更流程

A1、非根桥设备判定拓扑发生了变更后:

A1.1、会生成TCN BPDU(拓扑改变通知),向去往根桥的上游设备通告。

A2、上游设备收到TCN BPDU后:

A2.1、回复一个TCA BPDU配置BPDU,告知已接收到TCN BPDU;

A2.2、同时,上游设备也会生成(复制)TCN BPDU,向根桥的上游设备通告;
A2.3、一直将TCN BPDU通告至根桥为止。

A3、根桥收到了TCN BPDU后:

A3.1、对收到 TCN BPDU 的一端,发送TCA 配置 BPDU 和 TC 配置 BPDU(告知全网设备拓扑发生了改变);

A3.2、对没有收到 TCN BPDU 的一端,发送 TC 配置 BPDU。

A4、非根桥设备收到TC配置BPDU后:

A4.1、为了防止原有MAC地址表项存在错误映射关系,需要将所有接口对应的MAC地址老化时间设置为一个转发延迟时间。

注:ENSP模拟器在拓扑变更后,不会老化MAC地址表项,所以会导致数据按照错误MAC地址表项转发,导致不通信。

3RSTPSTP的其它改进(HCIP内容)

3.1、配置BPDU的处理发生变化:

A1、拓扑稳定后,配置BPDU报文的发送方式进行了优化;

A2、使用更短的BPDU超时计时;

A3、对处理次等BPDU的方式进行了优化。

配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色。

RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度。

3.2、端口角色不同

通过接口角色的增补,简化了生成树协议的理解及部署。

RSTP的接口角色共有4种:根接口、指定接口、预备接口和备份接口。

从配置BPDU报文发送角度来看:

预备(Alternate)接口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的接口。

备份(Backup)接口就是由于学习到自己发送的配置BPDU报文而阻塞的接口。

从用户流量角度来看:

Alternate接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口。

Backup接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路。

3.3、边缘端口

如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。

边缘端口一般与用户终端设备直接连接,可以由Disabled状态直接转到Forwarding状态。

在STP中用户终端接入交换设备端口状态由Disabled状态转到Forwarding状态需要经过15s,那么用户在这段时间无法上网,如果网络频繁变化,用户上网状态非常不稳定,时断时续。

例:公司有1000台终端设备,每天早上9点员工陆续开机后网络会非常缓慢,直到1030左右才有所好转,就是因为上述的端口状态转换导致的。

边缘端口一般与用户终端设备直接连接,不与任何交换设备连接。边缘端口正常情况下接收不到配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用了一样。

但是,一旦边缘端口收到配置BPDU报文,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

3.4、端口状态不同

STP接口状态

RSTP接口状态

接口在拓扑中的角色

Forwarding

Forwarding

包括根接口、指定接口

Learning

Learning

包括根接口、指定接口

Listening

Discarding

包括根接口、指定接口

Blocking

Discarding

包括Alternate接口、Backup接口

Disabled

Discarding

包括Disable接口

RSTPSTP的所有改进,都是为了更快的收敛。

课外,网络演进的小简史:

1、最早的网络,STP+VRRP为了保证三大冗余:链路冗余、设备冗余、网关冗余,就是简单的设备堆积。

2、为了提升带宽,变成了:STP+VRRP+ETH-Trunk。

3、后来引入:堆叠+ETH-Trunk(ISLACK/CSS):设备升级和优化很难实现,需要先拆堆叠再重新组建(大量的窗口时间)。

4、M-lag:Vxlan,Evpn。

注:

学习过程中所说的STP是标准的STP;实验演示的STP是华为优化后的STP。

指令集:

指令

功能

stp disable

关闭生成树功能

stp enable

开启生成树功能

dis stp interface GigabitEthernet 0/0/2

查看STP接口的相关信息

stp pathcost-standard

修改STP开销计算标准

stp mode stp

设置STP的模式为STP (默认是MSTP模式)

stp timer forward-delay

设置转发延迟的时间,单位毫秒

dis stp brief

查看生成树的信息

undo in en

关闭日志显示

stp edged-port enable

将某端口设置为边缘端口,就不用等待30秒的转发问题了。

往往越复杂的、理论越多的协议,它的配置就一点点,两条或一条命令就结束了(如OSPF);而没有什么理论的知识点协议,它的配置会很多(如VPN)。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。