生成树协议(STP)详解

来源:互联网 发布:js date格式化 编辑:程序博客网 时间:2024/06/06 07:23

每个网络单元都有自己的MAC地址,每个交换机(网桥)经过“学习”之后,每个交换机都会知道每个站可由哪个端口到达,每个交换机基于每个端口(也可能是每个vlan)的列表被存储在一张表(过滤数据库),然而这其中的信息并不能假设永远是正确的(可能发生MAC地址改变),为了解决这个问题,每次学习一个地址后,网桥(交换机)会启动一个计时器(默认5分钟),如果有效期内没有再次出现过该条目,则删除。
当LAN1处的站发送一个帧时,交换机S和F会接收并在s1和f1端口复制该帧再转发出去,此时S又会收到f1端口生成的副本,F又会收到s1端口生成的副本,显然我们不允许此行为,于是便有了生成树协议(STP)。
生成树是线和点的集合,跨越所有节点,保证没有环,而图中显然是有环的,生成树协议允许我们禁用某些端口来保证没有环路,禁用哪个端点取决于各个端点MAC的地址和优先级的结合(这个地方不详细讨论)
这里写图片描述

假设阻塞s0端口,就会变为下图,就避免了上面所说的错误行为

这里写图片描述
假如s1端口处的链路发生了错误,s0端口将会经过一系列延迟变为转发态,但此时必须经过上面所说的5分钟有效期,如何优化呢?我们先了解一下这个过程中端口的工作情况

每个端口都有一个状态机,可能有5个状态:阻塞、侦听、学习、转发、禁用

这里写图片描述
初始化后,端口进入阻塞态,不进行地址学习数据转发或BPDU,但它会监控接收的BPDU,在它需要被包含在将到达的根网桥的路径中时,使端口转换为侦听态,此时端口可以发送和接收BPDU,但不学习和数据转发,经过15s转发延迟后进入学习态,此时它可以执行数据转发外的所有操作,再经过一个转发延迟后达到转发态
STP中当一个端口进入阻塞态或转发状态时,便意味这发生了拓扑变化(因为如果某个时刻,如果生成树上某端口变为阻塞态,此时整个生成树便意味这不再连通,就意味着发生了拓扑变化,概括来讲此时整个生成树需要查看是否有其他路径可以重新完善一个生成树,在这个学习过程后,就又发生了拓扑变化),当网桥检测到某种变化(如链路故障),它便会发送一个拓扑变化通知(TCN BODU)通知它树中的父网桥,一层一层直到通知到根网桥为止,根网桥,根网桥便会在它的周期性配置消息中设置其TC位,在网络中的各个网桥转发,故障端口接收到这个消息后,便会缩短它的计时器时间(前面提到的5分钟),这样便会加快对数据库中错误条目的快速清楚以及重新学习

原创粉丝点击