目录
一、产生背景
1.1、二层环路产生原因
如下图,是一个缺乏冗余设计的网络
为了解决上述问题,如下图,采用环形设计提供冗余性,伴随而来的就是出现了二层环路
此外,人为错误也同样会导致二层环路,如下图:
1.2、二层环路引发问题
1)广播风暴
当用户间互相访问时,为了学习MAC地址,PC用户会发送广播报文,假设有SW3发送广播报文,SW2收到SW3发来的报文后继续广播,SW1收到SW3发来的报文后继续广播,SW2收到SW1发来的报文后继续广播,SW1收到SW2发来的报文后继续广播,由此形成广播风暴。
2)MAC地址漂移
SW1收到SW3的源MAC:5489-98EE-788A的广播报文后,会将MAC:5489-98EE-788A与SW1的0/0/1端口绑定,SW1收到来自SW2的源MAC:5489-98EE-788A的广播报文后,会修改MAC表,将将MAC:5489-98EE-788A与SW1的0/0/2端口绑定,伴随着广播风暴反复切换,即MAC地址漂移
二、生成树协议(STP)
STP(Spanning Tree Protocol)应运而生,Spanning Tree Protocol(STP)是在IEEE 802.1D 文档中定义,基本原理是:通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。
在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路。
2.1、BPDU
BPDU有两种,配置BPDU(Configuration BPDU)和TCN BPDU。
配置BPDU,用于传递STP配置信息,选举时用
TCN BPDU,用于通告拓扑变更信息,报错时用,用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s缩短为15s)。
2.2、STP选举规则
2.2.1、根网桥
在所有交换机中选举出一台作为根网桥(Root bridge)
选举规则:Bridge-id(桥ID/BID)小的优先,用来标识交换机身份
Brideg-id格式:优先级+Mac地址,优先级默认32768,必须是4096的倍数
2.2.2、根端口
每台非根网桥(交换机)选举出一个根端口(Root port)
选举规则:
- 到达根网桥开销小的优先
- 对端交换机BID小的优先
- 端口ID小的优先
开销(Cost),代表路径耗费的代价和成本,带宽越大,开销越小
2.2.3、 指定端口
每个物理段上选举出一个指定端口(Designated port)
选举规则:
- 到达根网桥开销小的优先
- 本机BID小的优先
- 端口ID小的优先
2.2.4、闭塞端口
剩下没有角色的端口就是闭塞端口(Blocked Port)
2.3、STP初始化流程
交换机端口状态
- disable:禁用状态,被关闭的端口
- blocking:闭塞状态,接收BPDU,但不发送BPDU,不学习Mac地址,不转发数据,此状态还未开始选举
- listening:监听状态,接收并发送BPDU,不学习Mac地址,不转发数据,持续15秒,此状态开始选举,如果有端口被阻塞,就会到第二阶段,处于阻塞状态;如果处于根端口或者指定端口,就会跳到学习状态
- learning:学习状态,接收并发送BPDU,学习Mac地址,不转发数据,持续15秒
- forwarding:转发状态,接收并发送BPDU,学习Mac地址,转发数据
备注:整个生成树选举需要30秒的时间
STP计时器
- Hello time,2秒,配置BPDU的发送周期
- Max age,20秒,判断链路故障的时间,10个Hello time周期
- Forwarding delay,15秒,状态切换延迟
STP拓扑变更机制
- Max age超时/有接口变更为转发状态,判断为拓扑发生变更,向根网桥发起TCN BPDU
- 收到TCN BPDU的交换机继续向根网桥转发TCNBPDU,到达根网桥为止
- 根网桥收到TCN BPDU后,向所有端口发起TC置位的配置BPDU
- 交换机收到TC置位的配置BPDU后,Mac地址表的老化时间缩短到15秒
2.4、STP存在的问题
收敛速度慢,故障切换时间太长
网络中大量主机频繁上下线,会导致TCN BPDU大量发送
三、快速生成树协议(RSTP)
RSTP引入了新的接口角色,其中替代接口的引入使得交换机在根接口失效时,能够立即获得新的路径到达根桥。备份端口作为指定端口的备份,帮助链路上的网桥快速获得到根桥的备份路径。RSTP的状态规范根据端口是否转发用户流量和学习MAC地址把原来的5种状态缩减为3种。另外,RSTP还引入了边缘接口的概念,这使得交换机连接终端设备的接口在初始化之后能够立即进入转发状态,提高了工作效率。
3.1、端口状态减少到3种
- Listening,处于这个状态的端口也不参与数据转发,不进行地址学习;但是可以接收并发送配置消息。
- Learning,处于这个状态的端口同样不能转发数据,但是开始地址学习,并可以接收、处理和发送配置消息。
- Forwarding,一旦端口进入该状态,就可以转发任何数据了,同时也进行地址学习和配置消息的接收、处理和发送。
3.2、端口角色增加到4种
根端口和指定端口不变
闭塞端口细分为2种
- 替代端口(Alternata port),根端口的备份
- 备份端口(Backup port),指定端口的备份
边缘端口
当链路激活,边缘端口立即进入转发状态,不参与STP计算
边缘端口机制
边缘端口UP/DOWN不会触发拓扑变更
建议把连接PC的端口配置为边缘端口
四、STP与RSTP共同的缺陷
STP/RSTP的缺陷:所有的VLAN共享一棵生成树
由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发。
五、多生成树协议(MSTP)
将多个vlan捆绑到一个生成树实例,每个实例分别独立计算生成树
例如:
·将偶数VLAN映射到实例1
·将基数VLAN映射到实例2
网络将只维护2棵生成树
基于STP计算结果不同,实现不同vlan的流量负载均衡