STP详解

STP的作用:

通过阻断冗余链路来消除桥接网络中可能存在的路径回环

当前活动路径发生故障时,激活冗余备份链路,恢复网络连通性

二层环路:广播风暴、重复的数据帧、mac地址表震荡、

STP (Spanning Tree Protocol,生成树协议)STP在IEEE制定的802.1D标准中定义是用于在局域网中消除数据链路层物理环路的协议

通过在桥之间交换BPDU (Bridge Protocol Data Unit,桥协议数据单元),来保证设备完成生成树的计算过程。

BPDU所包含的内容:

·根桥ID(RootID) 默认优先级32768(必须为4096的倍数,取值范围0-61440)由根桥的优先级(2B)和mac地址(6B)组成,总长度8B,桥ID小的桥被选举为根桥   

 

·根路径开销(RootPathCost)  到根桥的路径开销,开销最小的端口被选举为根端口,指定桥选举时,开销最小的桥被选举为指定桥。

·指定桥ID (DesignatedBridgelD) 根端口选举时,所连桥ID最小的端口被选举为根端口。指定桥选举时,桥ID最小的桥被选举为指定桥。

·指定端口ID( DesignatedPortlD ) 根端口选举时,所连端口ID最小的端口被选举为根端口。

 

桥的角色:根桥、指定桥

端口角色:根端口(RP)、指定端口(DP)、Alternate端口

BPDU分为:配置BPDU、TCN BPDU

配置BPDU:网桥通过交互配置BPDU获取STP计算所需要的参数。配置BPDU基于二层组播方式发送,目的地址为01-80-C2-00-00-00可变范围是后24bit。配置BPDU由根桥周期发出,发送周期为Hello Time(2s)。配置BPDU老化时间为Max Age(20s)bpdu最大存活时间  (10个hello time 周期)。Message   bpdu的消息,从根桥发出年龄默认为0,每经历一个交换机加1,最大40跳,默认20, 两个pc只能隔7个交换机

确定端口角色的标准:

根端口︰网桥上到根桥最近的端口

指定端口:端口的配置BPDU在其所属链路上是最优的

Alternate端口:端口的配置BPDU在其所属链路上不是最优的,且端口不是根端口

各台设备的各个端口在初始时生成以自己为根桥的配置信息,向外发送自己的配置信息。

网络收敛后,根桥向外发送配置BPDU,其他的设备对该配置BPDU进行转发。

根桥才能发送BPDU报文,非根桥根端口接收 ,指定端口转发

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

在选举过程中都是越小越优先

 

BPDU:

1)配置BPDU:用来进行生成树计算和维护生成树拓扑的报文;

2)TNC BPDU:当拓扑结构发生变化,用来通知相关设备网络拓扑结构发生变化的报文;

3)网桥之间通过配置BPDU进行根桥的选择以及端口角色的确定;

4)配置BPDU基于二层组播方式发送,目的地址为01-80-C2-00-00-00;

5)只有根桥会产生配置BPDU,非根桥只对配置BPDU进行中继,没有配置或没有运行STP协议的网桥将把配置BPDU当做普通数据帧进行转发;

6)网桥上的每个端口都将保存本端口最优配置BPDU,通过MAXAGE将配置BPDU删除;

7)配置BGPDU包含MAC地址、源MAC地址、帧长、逻辑链路以及载荷。

名词解释:

1)ROOT ID:根桥ID用于标识网络中的根桥;

2)ROOT PATH COST(RPC):根路径开销,指从发送该配置BPDU的网桥到根桥的最小路径开销,即最短路径上的所有链路开销的代数和;

3)NRIDGE ID:发送该配置BPDU的网桥ID,即该Physioal Segment的指定桥ID;

4)PORT ID:发送该配置BPDU的网桥的发送端口ID;PORT ID值由端口优先级确定;

5)根端口:比较RPC,当网桥从一个端口收到配置BPDU后,首先获取其中的RPC和接收端口的链路开销相加,得到此端口的RPC,每个端口以相同的方式进行计算,最终端口进行比较;

6)指定端口:比较端口发送的配置BPDU和接收的配置BPDU,如果发送的配置BPDU优于接口的收到的BPDU,表明在本Physical Sgement端口上拥有最优的配置BPDU,则该端口为指定端口;

7)ALTERNATE端口:该端口的配置BPDU在其所属Physical Segment上不是最优的,且端口不是根端口。

等路径开销算法:

当存在带宽相同的网络,此时就需要比较优先级向量中的(Designate Bridge ID、Designate Port ID)特殊情况下还需要比较接口接收端的Bridge Port ID。

收到低优先级配置BPDU时的处理:

在STP稳定运行期间,根桥以Hello time(2s)为周期发送配置BPDU其他网桥从根端口接收配置BPDU。

当网桥在指定端口收到一个低级当配置BPDU时,网桥会立即回应一个配置BPDU,这样可以保证新加入当网桥尽快地确认根桥和端口角色,加快收敛。

网桥可以快速回复配置BPDU是因为网桥都会保存现在最优地配置BPDU,该配置BPDU的生存周期为MAX Age。当配置BPDU生存周期超过时,网桥会重新认为自己是网络中的根桥,发送以自身为根的配置BPDU。

STP拓扑改变处理的过程:

1)当网桥感知到拓扑发生变化产生TCNBPDU从端口发出,通知根桥;

2)如果上游网桥不是根网桥,则上游网桥会将下一个要发送的配置BPDU中的TCA位置位,作为收到的TCN的确认,发送给下游网桥;

3)上游网桥从根端口发送TCNBPDU;

4)重复2)3)直到根桥收到TCNBPDU;

5)根桥收到TCNBPDU后,会将下一个要发送的配置BPDU的TCA位置位作为收到的TCN的确认,根桥还会将该配置BPDU中的TC位置位,用来通知网络中所有网桥网络拓扑发生了变化。

6)根桥在之后的MaxAge+Forward Delay(35s)时间内,将发送的配置BPDU中的TC置位,当网桥收到根桥发送的TC位的配置BPDU后,会将自己MAC地址老化时间由300s缩短为Forward Delay。

STP协议的不足:

STP为了避免临时环路的产生,每个端口在确认为根端口或者指定端口后,仍然需要等待30s的时间才能进入转发状态;

此外对于拓扑稳定的网络,经常需要重新进行STP计算,某些端口可能会长期处于阻塞状态而导致网络长时间的中断;

STP定义了TCNBPDU,可以使得网络拓扑变化时在50s之内实现收敛,TCNBPDU产生的条件是网桥由根端口转变为Forwarding状态,且网桥至少包含一个指定端口;

当网络中存在大量用户主机时,由于频繁地上下线导致交换机频繁发送TCNBPDU,导致网桥MAC地址老化时间长期保持为15s,MAC地址频繁刷新会导致网络产生大量未知单播造成的广播报文从而影响网络的带宽。

 

在STP的计算过程中,用到了以下三个重要的时间参数:

·     Forward Delay:用于确定状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新BPDU无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成暂时性的环路。为此,STP采用了一种状态迁移的机制,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的BPDU已经传遍整个网络。

 

·     Hello Time:用于设备检测链路是否存在故障。设备每隔Hello Time时间会向周围的设备发送hello报文,以确认链路是否存在故障。

·     Max Age:用于判断BPDU在设备内的保存时间是否“过时”,设备会将过时的BPDU丢弃。

 

每台非根网桥选举一个根端口

每个物理段上选举一个指定端口

剩下的就是阻塞状态

同时进行选举

RP根端口的选举:先比开销,再比对端桥ID,在比对端端口ID(默认128)0-240 步长16,再比本端

DP指定端口的选举:先比开销,再比桥ID,最后比端口ID

 

RP接受 DP转发 AP接受

 

指定端口的对端可能为根端口或者阻塞状态

根端口的对端一定为指定端口

指定桥:与我本机直连,且向我发送bpdu的设备为指定桥

指定端口:指定桥向我本机转发bpdu的端口为指定端口

拓扑发生改变

普通拓扑从中断到恢复需要等待MAC地址老化(300s),将近5分钟的时间

1

间接故障非根桥,没有ap需要50s,20s的老化时间(bpdu接收不到了),2个forwarding  delay

直接故障有ap需要30s

 

只有在stp

阻塞端口状态机为blocking状态

 

网桥发送TCN BPDU的条件为:

→有端口转变为Forwarding状态,且该网桥至少包含一个指定端口

→有端口从Forwarding状态或Learning状态转变为Blocking状态

 

STP协议的不足:

1.收敛时间长(缺省情况下一个端口从Blocking状态过渡到Forwarding状态至少需要30秒钟(两倍的Forward Delay) 。对于一个拓扑不稳定网络,会导致网络的长时间中断)

2.拓扑变化收敛机制不灵活(主机频繁上下线时,网络会产生大量TCN)

 

 

RSTP对于STP多了两个端口:BP(接收数据不转发)和AP

BP作为DP(指定)的备份

AP作为RP(根)的备份  (根端口快速切换机制)

 

 

·RSTP (Rapid Spanning Tree Protocol,快速生成树协议)是STP协议的优化版

·RSTP可以实现快速收敛

→在某些情况下,端口进入转发状态的延时大大缩短,从而缩短了网络最终达到拓扑稳定所需要的时间。

RSTP具备STP的所有功能,可以兼容STP运行

RSTP和STP有所不同

减少了端口状态Discarding、Learning、Forwarding

增加了端口角色根端口、指定端口、Alternate端口(替代端口)、Backup端口(备份端口)

BPDU格式及发送方式不同

RST BPDU格式和STP相比不同之处有:

Protocol Version ID变为2

BPDU Type变为2

使用了Flags字段的全部8位

增加Version 1 Length字段

 →当交换网络拓扑结构发生变化时,RSTP可以更快地恢复网络的连通性

 

STP行为

RSTP行为

 

端口被选为根端口

默认情况下,2倍的forwarding delay的时间延迟

存在阻塞的备份根端口情况下,仅有数毫秒延迟。

 

端口被选为指定端口

默认情况下,2倍的forwarding delay的时间延迟

在指定端口是非边缘端口的情况下,延迟取决因素较多。

在指定端口是边缘端口的情况下,指定端口可以直接进入转发状态没有延迟。

 

Rstp中ap可以收也可以发

RSTP中BPDU的处理:

网桥自行从指定端口发送RST BPDU,不需要等待来自根桥的RST BPDU。发送周期为Hello Time

RST BPDU老化时间为3个连续的HelloTime(6s)时长

 

收到低优先级RST BPDU的处理:

阻塞状态的端口可以立即对收到的低优先级的RST BPDU做出回应

 

 

STP中端口需要等待两个Forward Delay时长才能进入转发状态,如果想缩短收敛时间只能手工配置Forward Delay为较小的值,但是这样可能会影响网络的稳定性,引起临时的环路

RSTP提出了快速收敛机制,包括

→边缘端口机制

→根端口快速切换机制

→指定端口快速切换机制

 

边缘端口:

边缘端口指网桥上直接和终端相连的端口

边缘端口可以直接进入转发状态,不需要延时,并且不会触发拓扑改变

边缘端口收到BPDU后,会转变为非边缘端口(被攻击和新的终端加入会受到bpdu)

 

边缘端口也会发送bpdu,只是接收不处理

[swC]interface Ethernet 1/0/1

[swC-Ethernet1/0/1]stp edged-port

边缘端口的设置

 

根端口快速切换

如果旧的根端口已经进入阻塞状态,而且新根端口连接的对端网桥的指定端口处于Forwarding状态,则在新拓扑结构中的根端口可以立刻进入转发状态。

指定端口快速切换

指定端口可以通过与相连的网桥进行一次握手,快速进入转发状态。

→握手请求报文: Proposal→握手回应报文: Agreement

P/A机制条件:握手必须在点到点链路进行,如果不是点到点,下面有人回复Agreement,根桥就会进入转发状态,造成临时环路。

 

RSTP拓扑改变处理机制

拓扑改变触发条件:

→只有非边缘端口转变为Forwarding状态时,产生拓扑改变

拓扑改变处理:

→在两倍Hello时间内向所有其它指定端口和根端口发送TC置位BPDU报文。

→清除除接收到TC报文的端口之外的所有指定端口和根端口学习的MAC地址

 

RSTP拓扑改变处理:

不再使用TCN

收敛更快速

 

P/A协商机制: 只能工作在p2p全双工链路上

a. 当某个端口希望进入转发状态,首先会向对端交换机发起一个proposal

报文

b.对端交换机收到proposa/报文后,会进行同步操作;同步是指把所有除

了收到proposal报文的端口、边缘端口和己闭塞端口之外的所有端口临

时闭塞;同步操作的目的是为了防止临时环路

C.同步完成后,向对端回复一个agreement报文

d.对端收到agreement报文后,才会把该端口进入转发状态

e.被同步操作临时闭塞端口再继续向后进行P/A协商,直到整个拓扑收敛

 

下游端口如果是ap端口,pa握手不给予回应

p/a握手建议设备不超过七台

 

RSTP和STP的兼容运行:

RSTP的端口连续三次接收到版本为STP的BPDU,则端口协议将切换到STP协议

切换到STP协议的RSTP端口将丧失快速收敛特性。

出现STP与RSTP混用的情况,建议将STP设备放在网络边缘。

 

运行STP的网桥移除后,由RSTP模式切换到STP模式的端口仍将运行在STP模式(除非运行stp global mcheck)

 

STP\RSTP的问题:

举例三台交换机而言,Trunk链路上实际上运行着多个VLAN,所有VLAN共用一棵生成树,无法实现不同VLAN在多条中继链路上的负载分担

 

STP、RSTP的局限

所有VLAN共享一颗生成树

无法实现不同VLAN在多条Trunk链路上的负载分担

MSTP (Multiple Spanning Tree,多生成树协议)

基于实例计算出多颗生成树,实例间实现负载分担

每个mstp域内有四个参数要保持一致:域名,修订级别(默认0),vlan和实例的映射关系一致,stp的工作模式一致

Cst:公共的生成树(把每个域当成一个交换机,计算出一个整体的生成树)

Ist:内部生成树(每个域独立计算出的生成树结构)

Cist:公共的生成树和内部生成树结合起来就是整个大的生成树cist

总根:所有区域的总根

域根:每个IST的根网桥  cist域根    距离总根最近的端口

Master端口:区域的根端口;单域mstp不存在master端口,多域mstp中,根域不可能存在master端口,其他域只有一个master端口        

master端口

域边界端口:用于域和域之间的连接

master端口:距离总根最近的端口

Ist和cist又称为instance0

Stp保护    不能同时配置根保护和环路保护,不要再终端上配置环路保护

  

Bpdu保护  端口shut  30s

如果一个边缘端口接收到配置消息,将从边缘端口转换成非边缘端口,从而导致生成树重新计算

启动了BPDU保护功能后,如果边缘端口收到了配置消息,MSTP就将这些端口关闭

[H3C] stp bpdu-protection

根桥保护  30s

合法根桥收到优先级更高的配置消息,失去根桥的地位,引起网络拓扑结构的变动。

对于设置了根保护功能的端口,一旦该端口收到某实例优先级更高的配置消息,立即将该实例端口设置为listening侦听状态,不再转发报文     通常在DP端口配置  

[H3C-Ethernet1/0/1] stp root-protection

环路保护

由于链路拥塞或者单向链路故障,端口会收不到上游设备的BPDU报文,此时下游设备重新选择端口角色,会导致环路的产生

只能在根端口、阻塞端口上配置

配置了环路保护的端口,当接收不到上游设备发送的BPDU报文时,环路保护生效。

如果该端口参与了STP计算,则不论其角色如何,该端口在所有实例都将处于Discarding状态

[H3C-Ethernet1/0/1] stp loop-protection

TC保护

在有伪造的TC-BPDU报文恶意攻击设备时,设备短时间内会收到很多的TC-BPDU报文,频繁的删除操作给设备带来很大负担,给网络的稳定带来很大隐患。

Tc保护机制:

+设置设备在收到TC-BPDU报文后的10秒内,进行地址表项删除操作的最多次数6次

+监控在该时间段内收到的TC-BPDU报文数是否大于门限值。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值