现实网络中,往往将网络分为接入层、汇聚层和核心层,这样的组网层次结构清晰,也便于维护和实施。但是一旦出现单点故障,故障发生在不同的层次上,其影响范围程度不一样。
如果网络分层设计中的交换机之间使用多条路线进行物理冗余配置,一旦发生网络的单点故障,用户可以启用备份链路继续访问网络资源,这将大大地提高网络的可用性和可靠性。但是由于交换机自身的学习和转发功能,交换网络的冗余设计又会带来二层环路问题,如广播风暴、MAC地址表不稳定和重复帧的复制。
交换机收到广播帧后,会从出了接收接口之外的其他所有接口转发出去,确保了同一广播与中所有设备都能收到这个广播帧,但如果网络出现环路,则会引起广播风暴问题。广播风暴时由于网络中的广播帧过多导致网络带宽被耗尽,正常的数据流无法使用带宽,造成网络服务中断,对网络危害极大。
交换机在进行MAC地址表更新时,默认使用最新收到的MAC地址条目替换表中原有的条目,而交换机的这一“自学习”功能特点在环路中却可能引起MAC地址表的不断更新,最终导致MAC地址表的不稳定。
单播帧在环路网络中也会出现问题,使目的地设备同时收到多个相同的单播帧几多播帧复制。
交换机通过运行生成树协议,通过STP算法,选择其环路中之一的支路,而阻塞另一支路接口,消除交换机二层环路存在的上述广播风暴、MAC地址不稳定和多播帧复制问题。
生成树协议(Spanning Tree Protocol,STP)在IEEE802.1d文档中定义。
生成树STP算法(STA):运行生成树STP的交换机相互之间传送桥协议数据单元(BPDU)报文协商、确定根网桥、根接口、指定接口、阻塞接口和接口之间状态的变化信息。
帮助交换机完成如下任务:
根桥:生成树里面的树根(老大),桥ID最小
备份根桥:生成树里面的老二,老大出现故障的时候,顶替老大的位置,桥ID第二小。
非根交换机:其他交换机,都有一个根端口
根端口:路径花费最低的接口。
指定端口:根交换机所有接口都是指定接口,一个网段上有且只有一个指定接口,花费最小的接口。
非根非指定端口:被阻塞的端口—备用链路的端口
路径开销:是端口Cost值,可以用来选择最优的路径,值越小越优。根路径开销是端口到达根桥的过程中累计的路径开销。
BID:桥ID:是由桥优先级和桥MAC地址构成,桥优先级为高2B(16位),MAC地址是低6B(48位)
协议数据单元(BPDU)有两种类型,分别是配置BPDU和拓扑变更通知TCN BPDU。配置BPDU是在新建STP或STP稳定后,由根网桥周期性地发送给网络的,BPDU中包含STP的主要参数。TCP BPDU是当交换机的拓扑发生变化时产生的,主要作用是启用备份链路,最大限度地降低拓扑变化对网络运行的影响。
协议数据单元(BPDU)的报文格式较复杂,其中包括网络ID、协议ID、消息类型、根ID、路径开销、接口ID等字段。
网桥表示(BID)用于表示参与STP生成树的不同的交换机,由两部分组成:优先级(2B)和MAC地址(MAC)。
在不使用Extended System ID的情况下,BID由优先级和交换机的MAC地址组成,针对每个VLAN,交换机的MAC地址都不一样,交换机的优先级取值为0~65535,在使用Extended System ID的情况下,每个VLAN的MAC地址可以相同,现在的交换机普遍使用Extended System ID,拥有最小BID的交换机被选举为根交换机。
BID在STP选举根网桥交换机、根接口和指定接口等步骤中发挥着巨大的作用。
生成树算法需要考虑接口花费和路径花费。速度越开,花费即开销(Cost)或成本越小。
根交换机相当于一棵树的树根,是整个无环网络的中心。
交换机之间通过发送BPDU来选举根交换机,具有最小桥表示BID值的交换机被选择为根交换机,每个广播域只能有一个根交换机。在STP启动后,网络中的交换机都假定自己是根交换机,并发送广播给相邻的交换机。如果交换机收到的BPDU信息中ROOT ID比自己的网桥ID数值更低,那它将不再发送BPDU信息。通过一段时间的交换,网络中只有唯一的一台交换机在持续发送BPDU信息。那么它将成为根交换机。
在整个网络中选举出一个根桥(通过BPDU),根桥会定期发送BPDU。
根桥的选举:比较桥ID(优先级和MAC地址),首先比较优先级,优先级相同,会比较MAC地址,越小越优。
每个非根交换机有且只有一个根接口,根接口的选择依照如下顺序
首先,路径花费最低的接口将成为根接口,若花费相同,比较发送者的BID,BID小的成为根接口。
其次,若发送这的BID相同,则比较发送者的接口表示(PID),发送者的PID较小的接口对应的本地交换机的接口成为根接口。
再次,如果发送者的PID相同,则接受者即本地交换机接口PID小的接口成为根接口。
每个非根交换机有且只有一个根接口。
首先比较路径花费最低的接口将成为根接口。若花费相同,比较发送者的BID(网桥标识),BID小的成为根接口。其次,若发送则比较发送则的接口标识(PID),发送者的PID较小的接口对应的本地交换机的接口成为根接口
根交换机的所有接口都是指定接口,每个网段有且只有一个指定接口,网段通过该指定接口发送或接收信息。每个网段都有一个指定交换机,指定交换机上如果有多个接口,再从多个接口中选举出一个成为指定接口。
网段指定接口的选择按如下顺序:
首先,比较花费,花费较小的接口成为指定接口。
其次,若花费相同,则比较接受者的BID,BID小的交换机为指定交换机,其对应的接口为指定接口。
再次,若接受这的BID相同,则比较接受者的PID,接口表示PID小的成为指定接口
根交换机的所有接口都是指定接口。
每个网段有且只有一个指定接口,网段通过该指定接口发送或接受信息。
每个网段都有一个指定交换机,指定交换机上如果有多个接口,再从多个接口中选举出一个成为指定接口。
比较花费,花费较小的接口成为指定接口。若花费相同则比较接受者的BID(网桥标识),BID小的交换机为指定交换机,其对应的接口为指定接口。若接受者的BID相同,则比较接受者的PID。
将网络中既不是根接口,也不是指定接口的其余接口进行逻辑阻塞,成为阻塞接口(备份接口),一旦网络出现故障,这些备份接口将重新启用,最大限度地保证网络的正常运行。
[Huawei] stp enable
[Huawei] stp mode stp
将交换机SW1配置为根桥(修改优先级为最优)
[Huawei] stp priority 0
[Huawei] display stp
[Huawei] interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1] stp port priority 16
RSTP执行802.1w协议。快速同步是RSTP的核心机制之一。RSTP通过快速同步机制,避免了旧版STP种的长延时等待过程。具体就是,当网络拓扑发生变化时,RSTP可以快速地将非边缘端口从阻塞状态转换为转发状态,而不需要经过STP协议中的监听和学习状态。
STP网络拓扑收敛慢
1、STP从初始状态(启动)到完全收敛(正常转发数据)至少需要30秒时间
2、STP网络链路故障,端口状态切换慢
3、终端链路参与STP网络运算,浪费网络资源
4、STP交换机端口角色偏少,角色转换缓慢
5、STP交换机状态偏多
把STP中Disabled、Blocking和Listening合并成Discarding。不转发用户流量也不学习MAC地址。
主要区别在协议版本ID。RSTP中没有TCN和TCA报文,在拓扑结构变化时只发送TC报文。
BPDU的处理:
非根桥设备每隔Hello Timer从指定端口主动发送配置BPDU,设备自主进行,无论非根桥设备是否接收到根桥传来的配置BPDU报文。
BPDU超时计时器为3个Hello Timer,不像STP那样需要先等待一个Max Age。
阻塞端口可以立即对收到的次级BPDU进行回应。
根端口快速切换机制:如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Foewarding状态。
P/A机制
Proposal/Agreement机制的目的是使一个指定端口尽快进入Forwarding状态。
P/A机制要求两台设备之间链路必须是点对点的全双工模式。
一旦P/A协商不成功,指定端口的选择就需要等待两个Forwarding Delay,协商过程和STP一样。
两台交换机(SWA、SWB)同时向对方发送BPDU(都假设自己是根桥),这时优先级小的设备(假设为SWB)会给SWA发送 A置位BPDU(同意对方为根桥),同时阻塞出了边缘端口之外的所有端口(来保证不会同时收到和恢复另一台设备的BPDU),并将此接口设置为根端口(Forwading)。SWA收到来自SWB的A置位的BPDU。把当前接口设置为Forwarding状态。不需要等待计时器。
次等BPDU处理机制
RSTP处理次等BPDU报文不再依赖于任何定时器超时解决拓扑收敛,而是会立即发送本地最优的BPDU给对端,从而加快了拓扑收敛。
在RSTP中,交换机连接终端的链路可立即进入转发状态:
[Huawei] interface g0/0/3
[Huawei-GigabitEthernet0/0/3] stp edged-port enable
拓扑变更机制的优化:
判断拓扑变化唯一标准是一个非边缘端口迁移到Forwarding状态。
网络发生拓扑变化时,变更点交换机直接向全网发送TC置位,而不是先通知根桥,然后由根桥向全网发送TC报文,这样一定程度上节省了收敛时间。
拓扑变化处理
清空状态发生变化的端口上学习到的MAC地址,同时由这些端口向外发送RST BPDU,其中TC置位,一旦TC While Timer超时,则停止发送RST BPDU
1、BPDU保护
BPUD保护主要是针对边缘端口,当边缘端口接入一个STP交换机时会触发BPDU收敛,会发生网络震荡,次有路径等现象。当边缘端口配置了BPDU保护机制后,在其收到BPDU后,该接口会成为down的状态,端口角色变成DP,端口状态变成discarding。
如果需要恢复接口状态,可以用手动方式,在接口上通过命令让接口up(【接口】undo shutdown),还可以用自动方式重启接口状态,命令为:【全局】error-down auto-recovery cause bpdu-protection interval 30 其含义为:将因BPDU保护所致的err-down状态会在30s后自动恢复up
BPDU保护的配置命令:
# 全局开启边缘端口
stp edged-port default
# 接口开启边缘端口
stp edged-port enable
# 全局开启BPDU保护功能,只针对边缘端口有效
stp bpdu-protection
2、根保护
跟保护的作用对象主要是DP角色的端口,其主要作用是强制一个接口永远是指定端口。 防止周围的交换机成为根桥。当一个接口开启根保护以后,一旦收到了更优的BPDU,那么接口角色不变,接口状态变为discarding。当接口不在收到更优的BPDU之后,将会进入到正常的STP收敛过程,理论上经过2个转发时延恢复转发状态
# 根保护只能在接口视图下配置
[接口视图]stp root-protection
RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但无法在VLAN间实现数据流量的负载均衡,导致链路带宽利用率、设备资源利用率低。
生成树不是基于VLAN运行的,而是基于Instance(实力)运行的。
MSTP可以将一个或多个VLAN映射到一个Instance,在基于Instance计算生成树,映射到同一个Instance的VLAN共享一个生成树。
配置
[Huawei]stp enable
[Huawei]stp mode mstp
[Huawei]stp region-configuration //进入MSTP域视图
[Huawei-mst-region]region-name hcip //MSTP域名为hcip
[Huawei-mst-region]revision-level 1 //MST修订级别为1,默认为0
[Huawei-mst-region]instance 1 vlan 10 30 50 70 //实例1关联 vlan 10 30 50 70
[Huawei-mst-region]instance 2 vlan 20 40 60 80 //实例2关联 vlan 20 40 60 80
[Huawei-mst-region]active region-configuration //激活MST域的配置
[Huawei]stp instance 1 root primary //实例1的根网桥
[Huawei]stp instance 2 root secondary //实例2的备用根网桥