1、二层环路带来的问题
二层环路,是发生在数据链路层的环路。分为单交换机环路和多交换机环路。单交换机环路毫无疑问是人为搞破坏。多交换机环路一般是网络布线混乱造成的。二层环路是局域网非常常见但又不容易遇到的严重型网络故障,而且属于人为故障。如果有人刻意搞破坏,没有经验的网络管理员甚至找不到故障源。网络越大,排查越困难。二层环路会导致三个问题,第一个就是MAC地址漂移。第二:广播风暴。第三:重复帧。后面两个问题并不会立即摧毁网络,只会让网络性能急剧下降。真正让网络瘫痪的是MAC地址漂移。首先,发生环路的一个或多个交换机会因为MAC地址漂移,首先嗝屁。然后因为广播风暴,导致整个网络瘫痪。二层环路重在预防,这在使用即插即用交换机的中小企业尤其重要。那些傻瓜式的交换机无法配置生成树协议,所以,这就要求在网络组建和网络管理的时候,综合布线一定要清晰,网络管理员对整个网络拓扑必须要非常熟悉。大型企业都会采用网管型交换机,配置生成树协议,从而在一定程度上先天免疫二层环路。不过在某些特殊情况下,生成树协议会失效,这个尤为需要特别注意。
2、生成树定义
STP,用来解决二层环路问题
在图论中,如果连通图 的一个子图是一棵包含的所有顶点的树,则该子图称为G的生成树(SpanningTree)。
生成树是连通图的包含图中的所有顶点的极小连通子图。
图的生成树不惟一。从不同的顶点出发进行遍历,可以得到不同的生成树。
通用定义:
若从图的某顶点出发,可以系统地访问到图中所有顶点,则遍历时经过的边和图的所有顶点所构成的子图,称作该图的生成树。
- 若G是强连通的有向图,则从其中任一顶点v出发,都可以访问遍G中的所有顶点,从而得到以v为根的生成树。
- 若G是有根的有向图,设根为v,则从根v出发可以完成对G的遍历,得到G的以v为根的生成树。
- 若G是非连通的无向图,则要若干次从外部调用DFS(或BFS)算法,才能完成对G的遍历。每一次外部调用,只能访问到G的一个连通分量的顶点集,这些顶点和遍历时所经过的边构成了该连通分量的一棵DFS(或BPS)生成树。G的各个连通分量的DFS(或BFS)生成树组成了G的DFS(或BFS)生成森林。
- 若G是非强连通的有向图,且源点又不是有向图的根,则遍历时一般也只能得到该有向图的生成森林。
3、STP相关概念
BPDU定义
- 桥协议数据单元,用于传递STP协议相关报文
BPDU分类
- 配置BPDU:
- 用于传递STP的配置信息(即用来计算生成树计算和维护生成树拓扑的报文)
TCN BPDU:
- 用于通告拓扑变更信息(即当拓扑结构发生变化时,用来通知相关设备网络拓扑结构发生变化的报文)
4、STP的选举机制
4.1 Root bridge
在所有交换机中选举出一台作为根网桥(Root bridge)
选举规则
- Bridge-id小的优先
Brideg-id
-
定义:桥ID,BID,用来标识交换机身份
-
格式:优先级+Mac地址,优先级默认32768,必须是4096的倍数
4.2 Root port
每台非根网桥(交换机)选举出一个根端口(Root port)
选举规则
- 到达根网桥开销小的优先
- 对端交换机BID小的优先
- 端口ID小的优先
开销
- Cost,代表路径耗费的代价和成本,带宽越大,开销越小
4.3 Designated port
每个物理段上选举出一个指定端口(Designated port)
选举规则
- 到达根网桥开销小的优先
- 本机BID小的优先
- 端口ID小的优先
4.4 Blocked Port
剩下没有角色的端口就是闭塞端口(Blocked Port)
5、STP初始化流程
交换机端口状态
disable:禁用状态,被关闭的端口
blocking:闭塞状态,接收BPDU,但不发送BPDU,不学习Mac地址,不转发数据
listening:监听状态,接收并发送BPDU,不学习Mac地址,不转发数据,持续15秒
learning:学习状态,接收并发送BPDU,学习Mac地址,不转发数据,持续15秒
forwarding:转发状态,接收并发送BPDU,学习Mac地址,转发数据
6、STP计时器
Hello time
- 2秒,配置BPDU的发送周期
Max age
- 20秒,判断链路故障的时间,10个Hello time周期
Forwarding delay
- 15秒,状态切换延迟
7、STP拓扑变更机制
- Max age超时/有接口变更为转发状态,判断为拓扑发生变更,向根网桥发起TCN BPDU
- 收到TCN BPDU的交换机继续向根网桥转发TCN BPDU,到达根网桥为止
- 根网桥收到TCN BPDU后,向所有端口发起TC置位的配置BPDU
- 交换机收到TC置位的配置BPDU后,Mac地址表的老化时间缩短到15秒
8、STP的问题
- 收敛速度慢,故障切换时间太长
- 网络中大量主机频繁上下线,会导致TCN BPDU大量发送
9、RSTP
快速生成树协议
- 端口状态减少到3种
- 端口角色增加到4种
- 根端口和指定端口不变
闭塞端口细分为2种:
- 替代端口(Alternata port) 根端口的备份
- 备份端口(Backup port) 指定端口的备份
边缘端口机制
- 当链路激活,边缘端口立即进入转发状态,不参与STP计算
- 边缘端口UP/DOWN不会触发拓扑变更
- 建议把连接PC的端口配置为边缘端口
10、PVST
每个VLAN生成树(思科私有)
用途
-
每个VLAN生成树(PVST)为每个在网络中配置的VLAN维护一个生成树实例。它使用ISL中继和允许一个VLAN中继当被其它VLANs的阻塞时将一些VLANs转发。尽管PVST对待每个VLAN作为一个单独的网络,它有能力(在第2层)通过一些在主干和其它在另一个主干中的不引起生成树循环的Vlans中的一些VLANs来负载平衡通信
-
PVST BPDU的格式和STP/RSTP BPDU格式已经不一样,发送的目的地址也改成了Cisco保留地址01-00-0C-CC-CC-CD,而且在VLAN Trunk的情况下PVST BPDU被打上了“ISLVLAN”标签。所以,PVST协议并不兼容STP/RSTP协议
11、MSTP
多生成树协议
-
将多个vlan捆绑到一个生成树实例,每个实例分别独立计算生成树
-
基于STP计算结果不同,实现不同vlan的流量负载均衡