STP原理与防护

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cong_xue/article/details/78639584

STP

1.作用:解决二层网络中存在的环路,并且当网络出现故障的时候,通过阻塞相应的物理链路来实现网络的畅通

2.STP中的基本概念:

网桥的角色:根桥和非跟桥

端口角色:根端口,指定端口,和阻塞端口

3.ID:用于在STP中唯一的表示一台网桥,分为两部分,前面是桥优先级,后面是桥mac地址,桥优先级是16位,桥mac地址是48位,在进行根桥选举的时候,先比较桥优先级,优先级值小的最优,如果优先级值相同,那么在比较桥mac地址,桥mac地址小的为优。

4.配置BPDU:在STP中,网桥通过交换配置BPDU,来进行STP的计算,并且获取STP计算所需要的数据,发送周期是hello time(2s),每一个端口的配置BPDU的老化时间是max age(20s),基于二层组播的方式发送,发送的二层目的组播地址是01-80-c2-00-00-00,只能由根桥发送配置BPDU,其余的网桥都是传递配置BPDU报文。

5.配置BPDU的格式:目的mac|源mac|L/T|LLC Header|payload

其中的payload字段是BPDU的数据,包含protocol id 固定值0x0000,表示是生成树协议

Protocol version id协议的版本号,stp版本号是0x00

BPDU type:BPDU的类型,配置BPDU是0x00,tcn bpdu是0x80

Flags:有8位组成的,最低位是tc位,最高位是tca位,stp中只使用了最低位和最高位,在RSTP中使用了全部的位数。

STP向量(包含root id、root path cost、bridge id、port id)

Message age:从根桥生成配置BPDU开始,到当前时间为止,配置BPDU的存活时间。

Max age:老化时间

Hello time:根桥发送配置BPDU的时间间隔,却省市两秒钟

Forward delay:listening到learning,learning到forwarding的时间。

6.STP的计算过程:先选举根桥,选举出根桥之后,选举根端口,每一台非根桥上有且只有一个根端口,最后选举指定端口,在每一个物理段上都有一个指定端口。

7.STP中的端口状态

Disables(未开启stp或是端口down),不发送配置BPDU,不进行mac地址学习,不收发数据

Blocking(处于阻塞状态的端口),不发送配置BPDU但是接收配置BPDU,不进行mac地址的学习,不收发数据

Listening(中间的不稳定状态),接收和发送配置BPDU,不进行mac地址学习,不接收和发送数据。

Learning(中间的不稳定状态),接收和发送配置BPDU,进行mac地址的学习,不接收和发送数据。

Forwarding(处于转发状态的端口),接收和发送配置BPDU,进行mac地址的学习,接收和发送数据。

8.Forward Delay延迟,从listening状态到learning状态,或是从leaning状态到Forwarding状态所需要的时间,默认是15s。

9.STP拓扑改变的处理过程:在拓扑发生改变的时候,不考虑任何机制的情况下,需要等待端口的配置BPDU老化,新的端口需要从blocking状态转变为Forwarding状态,但是原来的mac地址表还存在,转发还是按照原来的mac地址表进行转发,所以只有当mac地址表刷新之后,才能使整个网络恢复,所以一共需要350s左右。所以在STP中,使用TCN BPDU来缩短网络恢复所需要的时间,过程是,网桥感知到链路发生故障,产生TCN BPDU并从根端口发送出去,上游网桥接收到TCN BPDU之后,如果上游网桥不是根桥,那么在下一个要发送的配置BPDU报文中,将tca位置位,通告下游网桥表示自己接收到tcn bpdu,并且继续从根端口发送tcn bpdu,直到根桥接收到tcn bpdu,根桥收到TCN bpdu之后,在下一个发送的配置BPDU中的tca位置位,作为对TCN bpdu的确认,并且将TC位置位,通知所有的网桥,拓扑发生改变。根桥在收到tcn bpdu之后的max age+Forward delay时间内(因为要等待端口的配置BPDU老化,并且要让端口哦才能够listening状态进入到learning状态,进行mac地址的学习),所有接收到tc位置位的网桥将自己的mac地址的老化时间缩短为15s。并且网桥发送tcn bpdu的周期是hello time,所以当网桥发送一个tcn bpdu之后,在两秒之内,如果收到了对端的确认,那么就不会再次发送,如果没有收到对端的确认,那么还会再次发送。

10.TCN BPDU的发送条件:有端口转变为Forwarding状态,并且此网桥上已经存在了至少一个指定端口,第二种条件是:有端口从Forwarding状态转变为learning状态和Blocking状态。

11.拓扑改变时延分析:当根桥产生故障之后,需要等待端口保存的配置BPDU的老化,并且需要进行新一轮的STP的计算所以需要20+15+15=50s的时间。当和根桥连接的链路断开之后,非跟桥发现根桥丢失,会立即发送以自己为根桥的配置bpdu,当另一非跟桥接收到之后,会发送高优先级的配置bpdu,所以原本的阻塞端口会在30秒之后变为根端口。

RSTP:对于STP而言,增加了端口角色,减少了端口状态

1.端口角色变为:根端口、指定端口、阻塞端口、备份端口。

2.端口状态变为:discarding状态、learning状态、forwarding状态

3.Protocol Version id字段变为2,BPDU type变为2,使用了flags字段的全部8位,增加了version 1 length字段。

4.Flags字段:第七位:TCA位 第六位:Agreement位 第五位:Forwarding位 第四位:Learning位 第三位和第二位组合用于端口角色标志位,第一位:proposal位,第零位:tc位。

5.STP中如果一个物理段上出现了一个低优先级的配置BPDU,那么由这个物理链路上的指定端口发送更高优先级的配置bpdu从而不会引起STP的重新计算,在RSTP中,如果收到了低优先级的RST BPDU,那么有阻塞端口发送高优先级的RST BPDU报文。并且在RSTP中,网桥自行从指定端口发送RST BPDU,不用等待跟桥的RST BPDU,发送周期是Hello time,老化时间是6s(3倍的hello time)。

6.RSTP中的快速收敛机制:根端口快速转发机制,指定端口快速转发机制,边缘端口机制。

根端口快速转发机制:当旧的根端口失效,新的根端口对端的指定端口处于转发状态,那么新的根端口不需要经过Forward Delay延时。可以直接进入转发状态。

指定端口快速切换机制:也就是P/A机制,当网桥上出现新的指定端口(原本至少存在一个指定端口),可以通过与对端网桥的一次握手来实现指定端口的快速切换,一开始新的指定端口处于discarding状态,发送p位置位的RST BPDU报文,对端收到之后,发现接收到这个报文的端口是根端口,那么进行同步,阻塞除了边缘端口之外的所有端口,完成同步之后,回复agreement位置位的报文,对端收到之后,指定端口快速进入转发状态。依次将其余的处于阻塞状态的端口再通过机制恢复。

7.RSTP拓扑改变的出发条件是:只有在边缘端口转变为Forwarding状态的时候,才是产生拓扑改变。

拓扑改变处理:在两倍的hello time的时间内向所有其他的指定端口和根端口发送tc位置位的BPDU报文,清除除接收到tc报文的端口之外的指定端口和根端口学习到的mac地址。

8.RSTP和STP的兼容:当一个RSTP的端口连续三次接收到STP版本的报文的时候,就会转变为运行STP协议。但是当运行STP的网桥移除之后,原本有RSTP变为STP的网桥也不会自动恢复RSTP。

MSTP

1.STP和RSTP的局限性:在STP中没有快速收敛机制,所以导致网络恢复缓慢,所以就出现了RSTP,但是在RSTP中因为所有的数据流都只能共享一颗生成树,无法实现不同数据流之间的负载分担,所以这时候MSTP就可以为每一个实例生成一颗生成树,每一个实例对应多个vlan,每一个vlan只能对应一个实例。

2.MSTP的基本概念:MST域:拥有相同MST配置标识的网桥的集合,例如:域名,修订级别,vlan和实例的对应关系,修订级别默认为0

CST:公共生成树,连接网络中所有MST域的生成树

IST:内部生成树,网络中MST域内的生成树

CIST:公共和内部生成树,是网络中所有的CST和IST

MSTI:多生成树实例,就是每一个实例对应的生成树,默认实例为0

3.MSTP中的端口角色:增加了Master端口,IST根桥在CIST上的根端口,也就是在一个IST上 的那个根桥,连接其他IST桥的端口。

4.MSTP和RSTP的相互操作:RSTP桥将MSTP域看作是一个桥ID为域根ID的RSTP桥

5.MSTP中的P/A机制:上游发送的BPDU中Proposal位置位并且Agreement位也要置位,下游收到P、A位都置位的BPDU之后,在将端口同步之后,回应Agreement BPDU报文也就是BPDU报文中的Agreement位置位,使得上游的指定端口快速进入转发状态。

STP的保护机制:

1.BPDU保护:因为在配置生成树的时候,会将连接终端的端口设置为边缘端口,这样边缘端口可以立即进入转发状态,而不参与生成树的计算,并且只接收BPDU并不转发BPDU,但是当边缘端口接收到BPDU之后,会立即转变为非边缘端口,这样就导致生成树的重新计算,所以配置了BPDU保护之后,如果边缘端口接收到了配置消息,MSTP就将这些端口关闭。在全局视图下配置:STP bpdu-protection

2.根桥保护:当网络中的生成树已经收敛完成,如果在出现更高优先级的网桥,这样会导致合法的根桥失去地位,对于设置了根保护的端口,如果这个端口收到了优先级更高的BPDU报文,那么立即将这些端口设置为侦听状态,不在转发报文,一般是配置在可以接收到更高优先级的BPDU报文的端口,在接口下配置:stp root-protection

3.环路保护:由于链路拥塞,或是单向故障,导致接口保存的BPDU老化,这样就会重新选举端口角色,产生临时环路,配置了环路保护机制的端口,当接收不到上游发送的BPDU之后,环路保护生效,如果该端口参与了STP计算,那么无论该端口处于什么状态,该端口在所有实例中的状态都将变为Discarding状态。在端口下配置:stp loop-protection一般配置在上游端口。

4.TC保护,当网桥接收到TC位置位的报文之后,刷新自己的mac地址表,如果有人恶意攻击,则会造成频繁的刷新mac地址表,通过配置TC保护,可以限制设备在一定时间内进行mac地址表删除的最多次数。全局视图下:stp tc-protection

没有更多推荐了,返回首页