当前位置:网站首页>生成树协议STP(Spanning Tree Protocol)

生成树协议STP(Spanning Tree Protocol)

2022-08-10 12:16:00 愤愤的卷毛

 为了提高网络的可靠性,在交换网络中通常会使用冗余链路。然而,在冗余链路中会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等的问题,进而影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)是一种由交换机运行的、用来解决交换网络中环路问题的数据链路层协议。

1.广播风暴

    3台交换机SWA、SWB、SWC以下图的方式连接在一起,假设主机A想要给主机B发送数据,首先会发送一个ARP请求来获取主机B的MAC地址。但是由于ARP的Request包属于一个广播帧,当SWB接收到主机A发送来的广播帧时,会将该广播帧发送给所有的端口;SWA收到SWB发来的广播帧时,同样也会发送给所有端口;以此类推。这时,在SWA、SWB、SWC中就会循环往复地收发广播帧,耗费交换机资源,导致业务瘫痪。


 

 

 2.Mac地址表的不稳定

环路除了会带来广播风暴的问题,还会带来MAC地址表的震荡。当SWB第一次收到主机1发送过来的广播帧时,源MAC地址为:A的地址,源端口为E0/0/1。由于广播帧在三台交换机中循环往复的收发,当SWC将广播帧发给SWB时,SWB收到的广播帧的MAC地址依旧没变,A的但是此时的源端口却变成了SWC的E0/0/2端口。这就是MAC地址震荡。


 

 环路除了带来以上的问题弊端之外,还是可以为我们带来有利的。环路能够提高网络连接的可靠性。即使某两台交换机之间的链路因故障而中断了,整个网络仍然会保持其连通性,而这在无环网络中是无法做到的。

3.数据帧的重复拷贝

由于在环路网络中所以不破换的话就会出现同一数据帧的重复拷贝 —同一数据不同进入设备,使设备不停的记录

为了解决上述的的三个问题我们需要打破交换网络中的环路(针对交换网络的所有环路中,关闭其中的某个接口)找到环路中应该被关闭的接口(接口阻塞)。这就是STP协议的基本原理:在一个具有物理环路的交换网络中,交换机通过运行STP协议,自动生成一个没有环路的工作拓扑。该无环工作拓扑也成为STP树,当网络拓扑发生变化时,STP树也会自动地发生相应的改变。简言之,有环的物理拓扑提高了网络连接的可靠性,而无环的工作拓扑避免了广播风暴、MAC地址表震荡。这就是STP生成树协议的意义所在

stp协议中的名词注解:

桥(Bridge):早期的交换机一般只有两个转发端口,所以那时的交换机常常被称为“网桥”,或简称成“桥”。后来“桥”这个术语一直沿用至今,但并不是指只有两个转发端口的交换机了,而是泛指具有任意多端口的交换机。目前“桥”和“交换机”这两个术语是可以混用的。

桥的MAC地址(Bridge MAC Address):我们知道一个桥有多个转发端口,每个端口有一个MAC地址。通常,我们把端口编号最小的那个端口的MAC地址作为整个桥的MAC地址。

桥ID(Bridge Identifier,BID):一个桥(交换机)的桥ID由两部分组成,即:桥优先级 + 桥的MAC地址;其中桥优先级的值可以人为设定,默认值为0x8000(相当于十进制的32768)。取值范围是0~65535。

端口ID(Port Identifier,PID):一个桥(交换机)的某个端口的端口ID由两部分组成,即:端口优先级 + 端口编号;端口优先级的值是可以人为设定的。不同厂商的设备对于两部分所占用的字节数可能有所不同。

BPDU(Bridge Protocol Data Unit,网桥协议数据单元)

网桥协议数据单元/BPDU:stp协议中的数据帧也就是生成树选举的时候各个设备之间传输的信息.

BPDU有两种类型:Configuration BPDU和TCN BPDU。

 

1:Configuration BPDU(用于生成树的选举与重收敛)

Configuration BPDU中所携带的信息

Message type: 代表着BPDU 的类型  (0X00  配置  0X80 拓扑TC)

Flags :标记位,在802.1D 中,标识BPDU 是拓扑变更还是拓扑变更确认BPDU

Root  ID :根标识符,用于标记一颗树的树根。与根网桥的BID 一致。

Bridge ID :网桥标识符, BID , 用于标识本设备在本生成树的唯一性。

Port ID :端口标识符, PID ,用于标识设备上某接口的唯一性。

Cost of path : 路径开销。在华为设备中,称作 root path cost (RPC)根路径开销

hello时间: 默认为2s ,BPDU 发送的间隔。

Max-age : 最大时间,可以理解为hello包的超时时间。默认时间为20s

Forward delay : 转发延时,状态切换时间,默认为15s

Message age :在思科中默认为300s,就是对应的MAC地址条目的老化时间;华为中,代表着该BPDU传递的跳数

(默认值为0,每经过一台交换机 值+1)

Max-hop :默认为20 ,收到BPDU之后 将message age中的时间与max-hop进行比较,若小于,则正常使用该

BPDU ,若大于,则忽略BPDU。

BID:    使用8字节构成,组成方式: BID优先级字段(4个bit)+扩展系统ID(12个bit)+Mac地址(6个字节)

BID 的使用: 1.比较BID 优先级  2.比较MAC地址  

BID优先级: 4位,默认值为32768 ,范围0-65535(实际范围0-61440),越小越优。BID优先级单位4096.调整

BID优先级时 值必须为4096的倍数。

扩展系统ID: 8位,在802.1D和802.1W 无意义,在802.1S中有用的

Mac地址: 为交换机 背板地址池中所有MAC地址中最小的,MAC地址越小越优。

PID:端口标识符  2个字节构成,组成部分:PID优先级(4个bit构成)+端口标识符(12个bit构成)使用方法:1.比较PID优先级  2.Port number

PID优先级:默认值为128,范围0-255(实际范围0-240),单位16

Port number :标识唯一性

RPC:根路径开销

COST: 开销值

不同带宽的链路使用不同的cost (该cost值是内部编码的),非线性过程。

2:TCN BPDU(通知交换网络中出现了网络的拓扑变更)

TCN BPDU的结构和内容非常简单,它只有协议标识、版本号和类型。其中类型字段的值是0x80。是在网络结构出现变化时所发送的信息

端口角色:

1.根端口 (RP),存在于非根网桥之上,一个非根网桥仅有一个,用于接收来自于根的BPDU

2.指定端口(DP),在一条链路中有且仅有一个,用于转发BPDU

3.阻塞端口(NDP)被逡辑上关闭的接口

端口状态:

1.disable ---关闭状态  1.关闭生成树协议  2.接口物理关闭  

2.blocking---阻塞状态   ,不能发送BPDU ,可以接收BPDU ,不能发送和接收数据

3.listening ---监听状态,可以发送并接收BPDU,不能发送和接收数据;(进行生成树选丼的)

4.learning ---学习状态,可以发送并接收BPDU,不能发送和接收数据;(学习MAC地址表)---目的:限制未知单播帧的泛洪  

5.forwarding---转发状态,可以发送并接收 BPDU和数据

802.1D生成树收敛时间:30s或50s

因为时间差的问题可能会出现断开有些端口而传输到整个树中时加入新的端口进行错误的选举所以stp在初始开始生成时首先首先会从Disabled状态进入到Blocking状态。在Blocking状态,端口只能接收和分析BPDU,但不能发送BPDU。如果端口被选为根端口或指定端口,则会进入Listening状态,此时端口接收并发送BPDU,这种状态会持续一个Forward Delay的时间长度。来确保生成树选举不会出错

在RSTP快速生成树 中,端口的状态只有3种:Discarding、Learning、Forwarding。

stp树的选举顺序

在STP树的生成过程是:首先选举根桥(Root Bridge),然后确定根端口(Root Port,RP)和指定端口(Designated Port,DP),最后阻塞备用端口(Alternate Port,AP)。

1、选举根桥

       根桥是STP树的根节点,要生成一课STP树首先要确定出一个根桥。当运行STP协议的交换机(简称为STP交换机)会相互交换STP协议帧,这些协议帧的载荷数据被成为BPDU(Bridge Protocol Data Unit,网桥协议数据单元)。STP交换机初始启动之后,都会认为自己是根桥。并在发送给其他交换机的BPDU中宣告自己是根桥。当交换机从网络中收到其他设备发送过来的BPDU时,会比较BPDU中指定的根桥BID和自己的BID,交换机不断地交互BPDU同时进行比较,直至最终选举出一台BID值最小的交换机作为根桥。

2、确定根端口

      根桥确定后,其它没有成为根桥的交换机都被成为非根桥(或非根交换机)。一台非根桥设备上可能会有多个端口与网络相连,为了保证从某台非根桥设备到根桥的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被成为“根端口”的端口,由根端口来作为非根桥设备与根桥设备之间进行报文交互的端口。一台非根桥设备上最多只能有一个根端口。

非根桥在选举根端口时分别依据该端口的根路径开销、对端BID、对端PID和本端PID。一个运行STP协议的网络中,我们将某个交换机的端口到根桥的累计路径开销(即从该端口到根桥经过的所有链路的路径开销的和)称为这个端口的根路径开销(Root Path Cost,RPC)。链路的路径开销(Path Cost)与端口速率有关,端口转发速率越大,则路径开销越小。
 

3、确定指定端口

根端口保证了交换机与根桥之间工作路径的唯一性和最优性。为了防止工作环路的存在,网络中每个网段与根桥之间的工作路径也必须是唯一且最优的。当一个网段有两条及以上的路径通往根桥时,与该网段相连的交换机就必须确定出一个唯一的指定端口。指定端口也是通过比较RPC来确定的,RPC较小的端口将成为指定端口。如果RPC相同,则需要比较BID、PID等。

4、阻塞备用端口

在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为备用端口。STP会对这些端口进行逻辑阻塞。所谓逻辑阻塞是指这些备用端口不能转发终端计算机产生并发送的帧,这些帧也被称为用户数据帧。不过,备用端口可以接受并处理STP协议帧。根端口和指定端口既可以发送和接收STP协议帧,又可以转发用户数据。

生成树选举:

1.选举 根网桥 (标识一颗树,在一个生成树中有且仅有一个)选丼规则: 最小的BID(先比较BID优先级,再比较MAC地址)

2.选举端口角色

选举根端口:

1.接口最小的开销值(RPC+PC)

2.最小的BID(发送方的)

3.最小的PID(发送方的)

选举指定端口:

1.本设备根端口的最小开销值  

2.最小的BID(本交换机)

3.最小的PID(本设备)

生成树的类型:

STP(标准生成树,又称为802.1D)  

 RSTP(快速生成树,又称为802.1W)  

 MSTP(多生成树协议,又称为802.1S)

生成树的配置:

生成树配置:

选择生成树类型:

 

修改BID优先级:方法一:

 

方法二: 设置主 备根

 

修改cost值:

 

修改PID优先级:

 

查看生成树:

 

查看生成树端口状态:

 

802.1D(标准生成树)特性:

1.连接终端的接口,启用之后进入转发状态需要30s,可以加速。(在cisco中使用portfast , 华为中可以使用边缘端口)

节约时间: 30 s 查看:

 

2.上行链路状态切换  ,切换时间为30s ,思科中可以使用uplink-fast 进行加速(节约30s)

3.骨干链路故障切换,思科中默认为50s(20+15+15;思科中可以使用backbone-fast进行加速,节约时间20s)。

华为切换时间默认为30s

802.1D 生成树的重收敛:

 

802.1D总结:

1.收敛时间比较慢 (30s或50s)

2.不支持负载分担

3.不支持上行链路加速

802.1W : RSTP  快速生成树

802.1W 基于PA机制进行收敛(请求   同意),可以在2-3 s之内完成收敛。基于BPDU flags字段内容进行分布式收敛。

 

端口状态:

Discarding  ---丢弃状态( disable   blocking  listening  ),可以发送并接收BPDU,但是不能发送接收数据

learning ---学习状态,可以发送并接收BPDU,不能发送和接收数据;(学习MAC地址表)---目的:限制未知单播帧的泛洪  

forwarding---转发状态,可以发送并接收 BPDU和数据

端口角色:根端口

指定端口

替代端口:阻塞,同一个交换机上使用阻塞端口替代根端口(替换时间0s,相当于自动集成uplink-fast)

备份端口:阻塞,同一个交换机上针对同一条链路备份指定端口(备份端口切换时间30s,因为出现备份端口一定存在 hub,hub是半双工的,不能使用802.1W的机制。)

边缘端口: 边缘端口 、非边缘端口 ,一般在连接终端的接口上实施(access)

 

作用:

1.自动启用端口加速(节约30s)

2.若收到 proposal 置位的BPUD,边缘端口不会同步

3.若收到了TC位置位的配置BPDU,不通过边缘端口转发

4.若启用边缘端口的接口收到了BPDU,则边缘端口特性失效

5.若收到TC位置位的BPDU,边缘端口学习到的MAC地址时间不变化(依然为300s)

链路类型: 802.1W中存在两种链路类型   1.point-to-point  点对点类型 2.shared   共享型强制链路类型为point-to-point :

 

802.1W特性(以及与802.1D区别):

1.收敛机制:PA机制

2.端口状态:3个

3.端口角色:4

4.支持边缘端口(但默认不启用的)

5.自动集成上行链路加速(节约30s)

6.自动集成骨干链路加速 (节约50s)

7.在802.1W中所有的交换机都有发送BPDU的能力,BPDU超时时间为6s

配置: 与802.1D一致

802.1S : MST  多生成树  

Instance 实例  多生成树配置:

1.域名 name  

2.reversion  leave  版本等级  

3.instance 实例映射

mstp配置:

启用MSTP  

 

MSTP 配置

 

修改instance 1 的BID 优先级

 

修改instance 1 的PID 或COST值

 

查看:

 

查看接口状态:

 

生成树的弹性(特性):

1.portfast  (边缘端口)

2.uplink fast (上行链路加速 )

3.backbone fast  (骨干链路加速)

4.BPDU 防护 思科中BPDU guard 华为  BPDU    ----若启用了BPDU防护的接口收到BPDU ,则会导致接口 down(error-down)

默认在华为BPDU 防护只能全局设置,并且仅仅针对边缘端口在思科中BPDU guard 可以针对接口也可以针对全局

 

查看错误日志信息

 

恢复由于BPDU 防护导致接口shutdown(error-down)

1.手工(先物理关闭接口 再重新开启)

2.自动(开启自动恢复)

 

查看:

 

5.BPDU-fitter  BPDU 过滤 ,开启之后,该接口不发送也不接收BPDU信息,若接收到了BPDU ,则直接忽略可以全局启用也可以接口启用,全局启用同样仅仅针对边缘端口,接口启用无所谓全局做法:

 

接口:

 

6.root-protection  根防护

一般建议在连接新交换机的接口上启用,若该接口收到了优质根的BPDU信息,则接口进入discarding

 

查看:

 

 

7.loop-protection 环路防护  

防止当出现单向链路故障时,导致生成树出现转发环路,所以可以在阻塞端口上启用loop-protection ,使阻塞接口可以发送BPDU ,进行链路双向检测

 

原网站

版权声明
本文为[愤愤的卷毛]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_70734745/article/details/126256751