什么是STP协议?
STP(Spanning Tree Protocol)生成树协议
举例:当网络存在环路的时候,A查找MAC地址,不存在,那么它向B、C广播,B、C也不存在,那么它们也向外广播,这样一来,就会形成双向广播环,广播风暴最终会导致网络资源耗尽,交换机死机。
在这个时候,STP就起到作用了
stp协议是逻辑上断开环路,防止广播风暴的产生
当线路出现故障,断开的接口被激活,恢复通信,起备份线路的作用
STP将一个环形网络生成无环拓朴的步骤:
选择根网桥(Root Bridge)
选择根端口(Root Ports)
选择指定端口(Designated Ports)
网桥ID(BID)
网桥ID是唯一的,交换机之间选择BID值最小的交换机作为网络中的根网桥
取值范围:0 ~ 65535
缺省值:32768
交换机A的BID只最小(000d.2800.b100),所以它将被选为根网桥(root bridge)
下一步选择跟端口,
在非根网桥上选择一个到根网桥最近的端口作为根端口
选择根端口的依据是:
根路径成本最低
直连的网桥ID最小
端口ID最小
根路径成本-是网桥到根网桥的路径上所有链路的成本之和
链路带宽(Mb/s) 路径成本
10 100
16 62
45 39
100 19
155 14
622 6
1000 4
10000 2
我们只需要记住3个路径成本就够了(100,19,4)这是比较常用的三个
指定端口
在每个网段上,选择1个指定端口
根桥上的端口全是指定端口
非根桥上的指定端口:
根路径成本最低
端口所在的网桥的ID值较小
端口ID值较小
接下来我做一个经过stp计算,最终形成无环拓扑结构的过程,看图
A很明显是根网桥
图没截好,BC上面的根端口 也已经出来了 (因为与根网桥直连的端口是根端口)
接下来,指定端口的选择
A是根网桥,所以它上面的所有端口都是指定端口
如图所说,B的网桥ID较小,所以B上面的端口为指定端口,
这样,经过stp计算,无环拓扑网络结构就出来了
好了 过程大家看明白了吧,但是有没有想过,交换机怎么知道其他交换机的网桥ID?怎么知道哪个端口的根路径成本最小?
这就涉及到BPDU(桥协议数据单元)
交换机之间使用BPDU来交换STP信息
BPDU
Bridge Protocol Data Unit -桥协议数据单元
使用组播发送BPDU,组播地址为:
01-80-c2-00-00-00
BPDU分为2种类型:
配置BPDU - 用于生成树计算
拓朴变更通告(TCN)BPDU - 用于通告网络拓朴的变化
BPDU所包含的关键字
1,交换机启动时,假定自己是根网桥,在向外发送的BPDU中,根网桥ID字段填写自己的网桥ID,
2,当接收到其他交换机发出的BPDU后,比较网桥ID,选择较小的添加到根网桥ID中
3,当全网所有的交换机接收到全部的BPDU并作比较后,就可以选择出唯一的一个根网桥
4,根网桥发送根路径成本为0的BPDU
5,其他交换机接收到根网桥的BPDU后,在根路径成本上添加接收接口的路径成本,然后转发
交换机的5种stp状态
状态 用途
转发(Forwarding) 发送和接收用户数据
学习(Learning) 构建网桥表
侦听(Listening) 构建“活动”拓朴
阻塞(Blocking) 只接收BPDU
禁用(Disable) 强制关闭
生成树计时器
交换机开机需要等待30秒时间开始转发数据
当某个正在使用的链路断掉,阻塞的端口需要50秒时间开始转发数据
0--------------20-----------15-----------15
阻断 倾听 学习 转发
OK,比较乱,认真看就明白了
转载于:https://blog.51cto.com/sunxuewei/978573