主机通过网桥连接网络时,如果出现环路,在最坏情况下,数据帧会在环路中被不断转发,导致网络中数据帧越积越多最终造成网络瘫痪。
解决网络中的环路问题,具体有生成树和源路由两种方式,这些功能在网桥上实现。其实,网络中存在合适的环路,反而能够分散网络流量,保证网络中某处路由故障时能够通过绕行达到目标主机,提高网络容灾能力。
生成树协议
生成树协议(STP)运行过程
- 网络拓扑搭建完毕后,配置每个交换机的网桥ID,并根据各个端口速率等信息决定端口开销;
- 各交换机发送STP的BPDU[1]报文,交换各自的STP信息;
- 选举根网桥,收到BPDU报文后,优先根据网桥ID决定响铃交换机上的网桥哪个是根网桥,网桥ID一致时,比较各个网桥的MAC地址,小的为根网桥,最终整个网络会收敛到所有交换机对谁是根网桥的结构;
- 选举根端口,在每个非根网桥上选择一个到根网桥路径开销最小的端口作为根端口,如果开销一样,则选择网桥ID最小的端口作为根端口;
- 为每个网段指定端口,依据是除根端口外到根网桥的路径开销最小的端口;
- 其他端口设置成阻塞端口,这些端口只能接受BPDU报文;
- 网络拓扑变化时,STP重新计算,在STP协议中这个过程耗时较长;
STP协议的端口类型
- Disabled:端口链路状态为Down,不收发任何报文;
- Blocking:仅转发BPDU报文,不学习报文MAC地址;
- Listening:仅收发BPDU报文,不学习报文MAC地址;
- Learning:仅收发BPDU报文,学习报文MAC地址;
- Forwarding:收发BPDU报文,收发业务数据报文,并学习MAC地址;
STP协议升级
环路检测演进过程中又提出了RSTP、MSTP协议。
源路由法
Trill协议实现
支持运行Trill的交换机称为RBidge(Router Bridge)。当一个以太网的数据帧经过RBridge时,首先将整个报文封装一个包含本地RBridge信息和目的RBridge的Trill头,然后后外面添加新的以太网头转换成已知的单播报文发送出去。
网桥根据数据珍重Trill头信息发送给目标地址,所以即使网桥中出现了环路,数据帧也不会反复转发。
Bridge Protocol Data Unit ↩︎