STP协议

    技术2022-05-20  48

    生成树协议的作用:(1)检测L2交换机之间的环路状况,通过阻塞掉某些端口以消除环路。(2)当网络中某些部分出现故障时,生成树算法会自动重配整个网络拓扑,启用原先作为冗余备份的链路。 STP协议封装在MAC帧中,目的MAC地址是一个组地址:01:80:C2:00:00:00 上面的拓扑结构会带来什么后果? 1.环路 比如PC A发送一个广播包,SW1收到后会从PORT B广播出去,对面的SW2会收到,然后又从另一个口发出去,这样SW1又从PORT A收到这个广播报文,然后转发,无限循环。 2.MAC地址表损坏 即使是单播,也有可能导致异常。SW1可以通过PORT A学到PC A的MAC地址,然后又可以通过PORT B学到,这样会导致SW1不停地修改自己的MAC地址表,引起MAC地址的抖动。 BPDU帧数据部分 说明: 在网络刚开始时,根桥BID=发送者BID 发送者BID:每个交换机都会有一个BID,在802.1d中,开始时每个网桥都发配置BPDU,当一台交换机发送收到的BPDU中的BID比自己更适合做根网桥时,就不再发送BPDU了。 桥ID=priority+桥MAC 发送者BID:port priority + Port Number Message Age:表示从根网桥发出以后所经过的跳桥,每经过一网桥就减1. Max age:存储BPDU最长的时间,超过这个时间端口接收不到BPDU,就会采取相应的措施。 Hellotime:根网桥发送BPDU的时间间隔,也是网络初始化时,每个网桥发送各自BPDU的时间间隔。 STP工作地过程: 1.网络初始时,该网络中所有网桥都认为自己是“根桥”,所以大家都开始发送配置BPDU,此时网桥是参与STP计算的,端口都处于listening状态,网桥收到BPDU以后,就和自己的BPDU比较,如果收到的这个BPDU比自己的BPDU“好”,那么这个端口就缓存该BPDU信息,自己也不再向外发送BPDU。 2.根桥选择出来后,接下来就要选择根端口。在网络中每个非根桥的网桥上,都只有一个根端口(距离根桥最近的端口),选择的最主要标准就是RootPathCost。 3.选择了根桥、根端口,接下来就是选择指定桥和指定端口,选择的原则和上述原则一样。 STP端口的五种状态: Disable(禁用):端口处于非激活状态,不参与生成树计算。 Blocking(阻塞):端口打开之后,在对网络进行监听之前,它首先会进入阻塞状态,在这一状态中,端口仅接收和处理BPDU,不转发数据帧。如果网络拓扑结构发生变化,导致端口不再是根端口或指定端口,这些端口就会返回到阻塞状态。 Listening(监听):过渡状态。可接收或发送BPDU。 Learing(学习):过渡状态。在监听状态,当转发延时(Forward delay)计时时间到(缺省为15秒)之后,端口进入学习状态,可接收或发送BPDU,可学习源MAC地址。 Forwarding(转发):在学习状态,当下一次转发延时计时时间到之后,源端口进入转发状态,这时端口可接收或发送BPDU,可学习源MAC地址,可发送或接收数据。 拓扑变化 产生TCN BPDU(拓扑更改通知)的两个条件(满足任一即可): 1.某端口在网桥已具有指定端口的情况下转换为转发状态。 2.某端口由Forwarding、learning状态转到Blocking状态。  如果非根桥交换机检测到拓扑变更,则该交换机会立即通过根端口发送TCN BPDU,上游交换机收到TCN BPDU后,会立刻向下游交换机回应TCA BPDU(拓扑更改确认)(即把标识字段的TCA bit和TC bit都置位BPDU,并继续向上游传递TCN BPDU,下游交换机收到TCA BPDU后,会停止发送TCN BPDU,如此不断地传递,址到传到根桥。 当根桥收到了TCN BPDU,它就洪泛TC bit置1的BPDU,所有交换机都转发这个报文直到整个网络都知道拓扑结构发生了改变。 为什么要有Learning状态? 当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。为解决临时环路的问题,生成树使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加了一个有学习MAC地址但不参与转发的中间状态。 STP的缺陷:端口迁移过程过于漫长,一旦拓扑发生变化了,那么就会导致业务中断30秒。 改进:RSTP、MSTP MSTP: 将vlan和生成树联系起来,将一个或多个vlan捆绑到一个生成树实例,生成树之间彼此独立。MSTP将环路网络修剪成为一个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现vlan数据的负载分担。


    最新回复(0)