STP配置
交换机STP配置
我们前面讲了交换机连接和vlan的划分,在现实场景中,一般不会只有一台交换机或者连接设备,都是有很多台设备来做冗余,在这个时候就会有如下场景:
A交换机发起了一个arp请求,询问某个计算机在哪里 ,B交换机收到这个请求查询本地后发现不在自己这里,就会转发并询问其他交换机C是否找到这个计算机的MAC地址,然后C交换机收到以后发现自己也没有,就会继续询问,本来这个逻辑是没有问题的,但是!如果A和C也连接了会出现一个什么问题呢?如下图
好了,这个ARP在周期内无限的来回问,整个交换机就啥也别干了,就一直在这里问来问去,还有一种类似的情况,就是用一根网线接到交换机的两个口上,类似这样:
这样也会导致环路的出现,这里有个链接,是b站上有个网工的处理:
https://www.bilibili.com/video/BV1xw411W7Kd/
目前最新的交换机默认都开启了stp的功能,但是在实际生产中如果配置不当,也需要对这个问题进行排查和修复,所以就引入了我们后面的功能
STP生成树
这里放一下引用地址:https://blog.csdn.net/lehe99/article/details/132857807
生成树协议简介
什么是生成树协议
STP(Spanning Tree Protocol)是一种由交换机运行的、用来解决交换网络中环路问题的数据链路层协议。为提高网络可靠性,交换网络中通常会使用冗余链路,但是冗余链路会给交换网络带来环路风险,导致广播风暴以及MAC地址表不稳定等问题,影响用户通信质量。生成树协议STP可以在提高可靠性的同时又能避免环路带来的各种问题。
注:屏蔽双绞线(ShieldedTwisted Pair)、信令转接点(SignalTransfer Point)等术语的缩写也是STP,应分清此 STP与彼 STP。
没有冗余链路时,如上图所示某条链路出现故障,该链路交换机下的终端业务会中断。
有冗余链路时,如上图所示某条链路出现故障,该链路交换机下的终端业务会中断,因为还有冗余链路保障网络连通;但是产生了环路。
生成树协议两个主要功能
1. 消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
2. 链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络通信。
网络环路产生的问题
在有环路的交换网络中,会导致Mac地址表翻摆、广播风暴、多帧复制等问题。
名词解释
桥(网桥):交换机早期的名字;
桥(交换机)的Mac地址:每台交换机都有多个转发端口,每个端口有1个Mac地址,通常把端口编号最小的那个端口的Mac地址作为交换机的Mac地址;
桥ID(BID):由桥优先级(2个字节,即16位二进制数)和桥Mac地址(6个字节,即48位二进制数)组成,优先级可以人为设置,取值范围是0~65535,步长为4096,默认为0x8000(十进制为32768);
端口ID(PID):运行STP交换机的每个端口都有一个端口ID, 端口ID由端口优先级和端口号(即端口编号,如Ethernet0/0/3的端口编号为3)组成。 端口优先级取值范围是0到240, 步长为16, 即取值必须为16的整数倍,默认端口优先级为128;
STP交换机:运行生成树协议的交换机;
BPDU(Bridge Protocol Data Unit)网桥协议数据单元:是STP交换机相互交互的数据帧,BPDU是由STP交换机产生、交互和处理的,不是计算机等终端设备。
生成树协议工作原理
STP协议的基本原理:在一个具有物理环路的交换网络中,交换机通过运行STP协议,自动生成一个没有环路的工作拓扑。该无环工作拓扑也称为STP树(STPTree),树节点为某些特定的交换机,树枝为某些特定的链路。一棵STP树包含唯一的一个根节点,任何一个节点到根节点的工作路径不但是唯一的,而且是最优的。当网络拓扑发生变化时,STP树也会发生相应变化。
生成树的产生过程
交换网络中选举1台根桥(交换机) –> 非根桥(交换机)选举1个根端口 –> 选举指定端口 –> 阻塞剩余端口。
1.交换网络中选举1台根桥(交换机)
根桥:网桥ID最小的为根桥,根桥是整个交换网络的逻辑中心,但不一定是物理中心,当网络拓扑发生变化时,根桥也可能发生变化。
如上图所示,交换机默认优先级为32768,所有交换机优先级相同,则需要通过比较交换机Mac地址确定根桥,经过比较,交换机SW的BID最小,所以选举为根桥。
如上图所示,对部分交换机优先级修改,交换机SW优先级最高(即,优先级值最小),交换机SW被选举为根桥。
2.非根桥(交换机)选举1个根端口
根端口:是STP协议为非根桥选举出来的连接向根桥的端口,每台非根桥只能有1个根端口,根桥没有根端口。
每台非根桥的STP交换机有多个用于连接网络的端口,通过比较每个连接网络端口的端口开销、端口对端
网桥ID、端口对端
端口ID来选举出1个根端口,以保证这个端口上的链路为到根桥的唯一1条最优路径。
非根桥:没有被选举为根桥的STP交换机称为非根桥。
端口的根路径开销(RPC-Root Path Cost):在运行STP协议的网络中,STP交换机端口到根桥的累计路径开销称为这个端口的根路径开销。
端口的根路径开销与链路上的各个端口转发速率有关,端口转发速率越高开销越小。
BID选举规则:先比较交换机优先级后比较交换机Mac地址,如果有1个优先级最高(优先级值最小)的交换机,则不需要再比较交换机Mac地址部分;如果有多个优先级最高(优先级值最小)的交换机,则需要再比较交换机Mac地址部分。
PID选举规则:先比较交换机端口优先级后比较交换机端口号,如果有1个优先级最高(优先级值最小)的交换机端口,则不需要再比较交换机端口号部分;如果有多个优先级最高(优先级值最小)的交换机端口,则需要再比较交换机端口号部分。
SW4交换机根端口选举
如上图所示,SW4交换机到根桥SW有3条路径,路径开销分别为:
1.SW4:GE 0/0/1–>SW:GE 0/0/2,SW4的E0/0/1端口路径开销为20000。
2.SW4:GE 0/0/2–>SW2:GE0/0/2–>SW2:GE 0/0/1–>SW:GE 0/0/1
SW4的E0/0/2端口路径开销为20000+20000=40000
3.SW4:Ethernet 0/0/3–>SW3:Ethernet 0/0/2–>SW3:Ethernet 0/0/3–>SW2:Ethernet 0/0/2–>SW2:GE 0/0/1–>SW:GE 0/0/1
SW4的E0/0/1端口路径开销为200000+200000+20000=420000
注:从最后1条路径可以看出,路径开销不是SW4交换机和SW交换机之间的4个端口(SW3:Ethernet 0/0/2、SW3:Ethernet 0/0/3、SW2:Ethernet 0/0/2、SW2:GE 0/0/1)各自开销的累加,而是SW4交换机和SW交换机之间各个交换机之间路径(SW4-SW3、SW3-SW2、SW2-SW共3条路径)开销累加之和。
从3条路径开销得知SW4的GE 0/0/1端口路径开销最小,所以SW4交换机的根端口为GE 0/0/1。
SW3交换机根端口选举
如上图所示,SW3交换机到根桥SW有4条路径,路径开销分别为:
1.SW3:E 0/0/2–>SW4:E 0/0/3–>SW4:GE 0/0/1–>SW:GE 0/0/2
SW3的E 0/0/2端口路径开销为200000+20000=220000
2.SW3:E 0/0/3–>SW2:E 0/0/2–>SW2:E 0/0/1–>SW:E 0/0/1
SW3的E 0/0/3端口路径开销为200000+20000=220000
3.SW3:E 0/0/3–>SW2:E 0/0/2–>SW2:GE 0/0/2–>SW4:GE 0/0/2–>SW4:GE 0/0/1–>SW: GE 0/0/2
SW3的E 0/0/3端口路径开销为200000+20000+20000=240000
4.SW3:E 0/0/2–>SW4:E 0/0/3–>SW4:GE 0/0/2–>SW2:GE 0/0/2–>SW2:GE 0/0/1–>SW:GE 0/0/1
SW3的E 0/0/2端口路径开销为200000+20000+20000=240000
从4条路径开销得知SW4的E0/0/1端口路径开销最小的有2个,开销值都为220000,则需要比较BID(桥ID)来确定根端口。
SW3交换机去往根桥方向的相邻交换机ID为:SW2的ID为32768.4c1f-cc6b-343a,SW4的ID为32768.4c1f-cc6b-641e,SW2的BID小,则与SW2相连的SW3的E 0/0/3端口为SW3的根端口。
SW7交换机根端口选举
SW7交换机到根桥SW有4条路径(跟SW3交换机相似,此处省略),端口路径开销和BID都相同,则需比较端口ID(PID)来确定根端口。
SW7交换机去往根桥方向的相邻交换机端口ID为:SW3的Ethernet0/0/1端口ID为128.1,SW3的Ethernet0/0/4端口ID为128.4,SW3的Ethernet0/0/1端口ID小,则与SW3相连的SW7的E 0/0/1端口为SW7的根端口;
如果手动修改SW3的Ethernet0/0/1端口ID为64.1,SW3的Ethernet0/0/4端口ID为48.4,SW3的Ethernet0/0/4端口优先级高(48<64),则与SW3相连的SW7的E 0/0/2端口为SW7的根端口;
注:上图中,如果SW3和SW7之间用集线器HUB相连,则 SW7交换机Ethernet0/0/1端口和Ethernet0/0/2端口去往根桥方向的相邻交换机端口ID都为SW3的Ethernet0/0/1端口,PID是相同的,这种情况下则需要比较SW7自己的Ethernet0/0/1端口和Ethernet0/0/2端口PID来确定根端口。因为集线器HUB在实际应用中很少用,在此不再赘述。
3.选举指定端口
指定端口用于确定除了根端口外要保留通信的端口,即连接两台STP交换机的两个端口,其中一个是指定端口,另外一个是根端口或者是阻塞端口。
指定端口举例说明
上图按照根桥端口和根端口对端端口都是指定端口,标记出了部分指定端口;还剩下SW4:E0/0/3—SW3:E0/0/2、SW4:GE0/0/2—SW2:GE0/0/2、SW3:E0/0/1—SW7:E0/0/1共3条链路还没确定指定端口。
按照端口根路径开销确定指定端口:
SW4:E0/0/3—SW3:E0/0/2链路:SW4:E0/0/3的RPC为20000,SW3:E0/0/2的RPC为220000,SW4:E0/0/3的RPC<SW3:E0/0/2的RPC,SW4:E0/0/3为指定端口。
SW4:GE0/0/2—SW2:GE0/0/2链路:SW4:GE0/0/2的RPC为20000,SW2:GE0/0/2的RPC为20000,SW4:GE0/0/2的RPC=SW3:GE0/0/2的RPC,需要比较各自交换机ID才能确定指定端口。SW2的ID为32768.4c1f-cc6b-343a,SW4的ID为32768.4c1f-cc6b-641e,SW2的BID小,则SW2:GE0/0/2为指定端口。
SW3:E0/0/1—SW7:E0/0/1链路:SW3:E0/0/1的RPC为220000,SW7:E0/0/1的RPC为420000,SW3:E0/0/1的RPC<SW7:E0/0/1的RPC,SW3:E0/0/1为指定端口。
4.阻塞剩余端口
阻塞端口用于切断网络环路,在交换网络中,STP交换机通过交互BPDU消息,如果发现有环路,则选择地阻塞某些端口,最终将环路网络修改成逻辑上无环路的树形网络结构。
总结
1.所有的交换机先选举根交换机和非根交换机
2.根交换机的所有接口都是指定端口,非根交换机和根交换机链接的自己这边的接口都是根端口,再对所有的根端口比较大小以后确定指定接口,然后所有的指定接口再比较,开销大的那个就是阻塞端口
3.比较的方式有几轮,交换机链路开销、交换机ID、交换机MAC地址 交换机接口ID 交换机接口,这个是不会存在相同的情况(不同的网络设备mac地址肯定不一样,总有个大小王能给你比较)
4.如果需要手动修改链路状态,可以修改端口的优先级数值,这样的话比较下来就可以做一些STP的控制
5.传统的STP在连接起来以后有五个状态:
stp接口转变过程:
1、禁用:当交换机接口被关闭,的时候这个接口就是禁用状态
2、堵塞:当交换机端口被激活之后,这个端口就会进入堵塞状态,堵塞状态会监听BPDU(BPDU是stp的数据帧类型)
3、侦听:当交换机端口要被选举为根端口或者指定端口的时候,就会从堵塞状态转换成侦听状态,这个状态会保持15s。(这个15s是为了给stp一个反应时间,让全网BPDU进行统一,BPDU会通过组播泛洪全网完成拓扑更新这也是需要时间的,否则会导致全网临时的环路)(如果侦听状态下本端口没有被选成根端口或者指定端口还会直接变成堵塞端口)
4、学习:stp这个接口状态是为了学习最新的mac地址表,以免导致广播风暴,学习状态会保持15s。(侦听业务数据帧,不参与发送和转发)(在侦听业务数据帧的时候如果发现自己不能成为指定和根端口,那么也会直接变成堵塞)
5、转发:本接口状态可以处理业务数据帧,也可以进行BPDU的处理,只有根端口或者指定端口才可以是转发状态。
这个时间是这样计算的:
STP 接口的禁用、阻塞、侦听状态类似,功能高度重合。
拓扑变化依赖计时器:根交换机发送配置 BPDU 的 Hello Time 是 2 秒,非根交换机即使没收到 BPDU ,也要在 Max Age 的 20 秒后,才会重新计算 STP 。
什么是收敛?
收敛是指网络进入稳定状态。比如在 STP 中所有接口获得接口角色,进入转发或阻塞状态。收敛时间是指网络从发生变化到进入稳定状态的时间。
可以看到stp在建立连接以后需要等待30~50秒以后才能计算完成。如果架构里边交换机越多,计算的越慢,而且接口状态不合理:那这个就又引出了问题,能不能更快一点呢?⬇
RSTP
鉴于 STP 的优缺点都很明显,弃之又觉得可惜,还是抢救一下吧。于是升级版的 RSTP 出现了,对 STP 进行了大量的改进。
RSTP增加新的接口角色,其中的替代接口可在交换机的根接口失效时,立即成为新的根接口,获取新的路径到达根桥。RSTP 使用 P/A 机制,让指定接口能够快速进入转发状态,而不用像 STP 那样经过 Forward Delay 时间。RSTP 还新增边缘接口的概念,让交换机接入终端设备的接口立即进入转发状态。
RSTP 接口角色
RSTP 在 STP 的基础上增加了接口角色,4 种接口角色分别是:根接口( RP )、指定接口( DP )、替代接口( Alternate Port ,AP )和备份接口( Backup Port ,BP )。根接口和指定接口与 STP 中定义相同,对于 STP 的非根非指定接口,RSTP 将其分为两种,一种是替代接口,另一种是备份接口。
替代接口( Alternate Port ,AP )
替代接口就是根接口的备份,由于收到其它交换机发送的更优 BPDU 而被阻塞的接口。如果根接口发生故障,那么替代接口会成为新的根接口。接口切换过程中,无需延时,无需 BPDU 交互,立马进入到转发状态。
一台交换机如果是非根桥,那么它有且只有一个根接口,但是这台交换机可以没有替代接口,也可以有,当有替代接口时,可以有一个或多个。当交换机的根接口发生故障时,最优的替代接口将成为新的根接口。
如上图所示,SW1 是网络中的根桥,SW3 有两个接口接入到网络中,由于 G0/11 比 G0/12 到达根桥的 RPC 更小,G0/11 成为 SW3 的根接口。G0/12 收到 SW2 发送的 BPDU ,经过 SW3 计算后决定阻塞,成为 SW3 的替代接口。
备份接口( Backup Port ,BP )
备份接口也是指定接口的备份,备份接口是交换机收到了自己发送的 BPDU 而被阻塞的接口。如果一台交换机的多个接口在同一个物理网段内,其中一个选举为指定接口,其它接口选举为备份接口且处于丢弃状态,备份接口作为这个网段到达根桥的冗余接口。如果交换机的指定接口发生故障,最优的备份接口成为新的指定接口,为根交换机与这条链路提供另一条转发通道,实现与这个网段的数据交互。
备份接口通常在这两种情况下出现,一种是交换机的多个接口连接到一台集线器( Hub )上,但是集线器和共享网络几乎绝迹。另一种情况是同一台交换机的两个接口通过一条网线连接起来,这种通常是人为的误操作。因此备份接口比较少见。
如上图所示,SW1 是网络中的根桥,SW2 的 G0/11 和 G0/12 接口形成自环,RSTP 能够检测到这个环路,并在这两个接口中选择一个进行阻塞。由于 G0/11 接口的接口 ID 更小,成为 SW2 的指定接口,而 G0/12 接口成为备份接口,备份接口被阻塞。
如上图所示,SW2 的两个接口连接在同一台集线器( Hub )上,集线器收到数据后会拷贝到其它所有接口,而且集线器不支持 STP/RSTP ,因此 SW2 从 G0/11 接口发出的 BPDU 会被集线器发送到 SW2 的 G0/12 接口,反之亦然。当 SW2 的指定接口 G0/11 出现故障时,备份接口 G0/12 将接替它的工作,负责与相应的网段实现数据交互。
RSTP 接口状态
STP 有 5 种接口状态,分别是禁用、阻塞、侦听、学习和转发,而 RSTP 对接口状态进行了简化,把禁用、阻塞、侦听状态合并为丢弃状态( Discarding )。因为这三类状态的功能区别不大,接口都不学习 MAC 地址,也不转发数据,这也是丢弃状态接口的处理方式。那么 RSTP 就是 3 种状态,即丢弃状态( Discarding )、学习状态( Learning )和转发状态( Forwarding )。学习和转发状态保持不变,和 STP 中的定义相同。
边缘接口
如果交换机的接口连接的是终端设备,比如 PC 、服务器、打印机等,而不是其它交换机的接口,那么这些接口不太可能造成环路。我们就可以将交换机的接口配置为边缘接口( Edge Port ),边缘接口默认不参加生成树计算。当边缘接口被开启后,立即切换到转发状态并开始收发数据流量,而不用经历转发延迟时间,提升网络效率。边缘接口的开启和关闭都不会触发 RSTP 拓扑变更。
P/A 机制
在 STP 中,交换机的一个接口成为指定接口后,还需要经过侦听和学习状态,即经过 30 秒时间,才能进入转发状态。而 RSTP 引入P/A 机制( Proposal/Agreement ,握手/赞同),让指定接口与对端接口进行握手,并逐级进行传递避免环路,这个过程不使用计时器。也就是说,完成握手的 RSTP 指定接口从丢弃状态直接进入到转发状态,而不需要经过其它状态,加速生成树的收敛。
Proposal 消息和 Agreement 消息都是 BPDU 。交换机通过 BPDU 中的 Flag(标记)字段来标识 BPDU 的不同类型,包括 Proposal BPDU 和 Agreement BPDU 。
如上图所示,在 SW1 和 SW2 新增一条链路,由于 SW1 的桥优先级最高,成为这个网络中的根桥,SW1 的 G0/1 接口成为指定接口,SW2 的 G0/2 接口成为根接口。如果是运行 STP ,那么指定接口和根接口必须经历侦听和学习状态才能进入转发状态。
如果网络中运行的是 RSTP ,当 SW1 与 SW2 之间新增一条链路后。
SW1 和 SW2 马上在各自的接口上发送 BPDU ,开始的时候双方都认为自己是根桥。
经过 BPDU 交互后,SW2 认为 SW1 才是根桥。这时 SW1 的 G0/1 接口成为指定接口,SW2 的 G0/2 接口则成为根接口,并马上停止发送 BPDU 。这两个接口都处于丢弃状态。
接下来 P/A 过程会发生在 SW1 和 SW2 之间。SW1 从 G0/1 接口发送 Proposal 消息,希望自己能够立刻进入转发状态。
而 SW2 在收到 Proposal 消息后,首先会判断接收 Proposal 消息的接口是不是根接口。在确认自己收到 Proposal 的接口是根接口后,SW2 为了避免出现环路,阻塞自己所有非边缘的指定接口,使这些接口都进入到丢弃状态,这个操作称为 P/A 同步机制。边缘接口不参与这个过程。
在 SW2 所有接口完成同步后,SW2 清楚的知道自己的接口不存在环路,马上将根接口 G0/2 切换到转发状态,并从根接口向 SW1 发送 Agreement 消息。
SW1 在 G0/1 接口上收到 Agreement 消息后,立刻将 G0/1 接口切换成转发状态,这时 PC1 和 PC2 就可以通信了。
整个 P/A 过程很快就完成了,在新增链路后的极短时间内,PC2 就可以和 PC1 通信。另外,由于 SW2 的指定接口 G0/4 还是处于丢弃状态,那么这个接口也会向下游交换机发起一个 P/A 过程。
保护功能
交换机有多种保护功能,用于提升生成树协议的稳定性。
1、BPDU 保护( BPDU Protection )
当边缘接口收到 BPDU 后,会马上变成一个普通的 RSTP 接口,可能引发网络中 RSTP 重新计算,从而对网络造成影响。通常边缘接口连接终端设备,应该不会收到 BPDU ,但是如果误接了交换机,那么这个边缘接口就有可能收到 BPDU ,会引入环路隐患。还有一种情况是恶意用户连接边缘接口后,发起 BPDU 攻击,也会对网络造成很大影响。
通过在交换机上开启BPDU 保护功能就可以解决这个问题。当交换机开启这个功能后,如果边缘接口收到 BPDU ,那么交换机马上把接口关闭,置为 Error-Down ,同时触发告警。
如果受到保护的边缘接口因为收到 BPDU 而被关闭,默认情况下是不会自动恢复的,需要在交换机上手动执行命令开启来恢复接口。除此之外,还可以手动设置接口自动恢复功能,在指定时间后自动恢复。
2、根保护( Root Protection )
RSTP 根据根桥计算出无环拓扑,根桥是很重要的。在已经完成收敛的 RSTP 网络中,如果根桥发生变化,那么 RSTP 就会重新计算,重新计算时网络将不可用。通常我们会选择网络中性能最好和位置最重要的设备作为根桥,将其优先级设置为最小值 0 ,但是这个措施并不能保证这个设备永远是网络中的根桥,毕竟根桥的角色是可以抢占的。如果网络中新接入的交换机优先级被配置为 0 ,恰好 MAC 地址比根桥更小,那么新交换机将抢占成为新的根桥,还会造成网络的 RSTP 重新计算,从而对网络造成影响。
在交换机的相关接口部署根保护功能,就可以规避这个问题。当根桥的指定接口开启根保护功能后,这个指定接口如果收到更优的 BPDU ,就会过滤这个 BPDU ,并将接口切换至丢弃状态,这样根桥的地位就可以保持。如果这个指定接口不再收到更优的 BPDU,那么两倍的转发延迟时间后,接口自动恢复到转发状态。
3、环路保护( Loop Protection )
当网络中出现线路单向故障或者网络拥塞时,交换机的根接口和丢弃状态的替代接口将无法正常接收 BPDU ,就会导致交换机重新进行 RSTP 重新计算,接口的角色和状态会发生变化,可能会在网络中引入环路。
如上图所示,SW1 是根桥,SW3 的 G0/11 是根接口,G0/12 是替代接口处于丢弃状态。SW3 的 G0/12 接口虽然处于丢弃状态,但是会持续侦听 BPDU 。当网络正常时,SW3 会在 G0/12 接口上周期性的收到 BPDU 。如果 SW2 和 SW3 的链路出现单向故障,从 SW2 到 SW3 不通,从 SW3 到 SW2 正常。那么 SW3 的 G0/12 接口无法收到 SW2 发送的 BPDU ,导致 SW3 认为 G0/12 接口的上游设备故障。过了 Max Age 时间后,SW3 的 G0/12 接口会成为指定接口,并切换到转发状态,然后开始发送流量。但是 SW2 并未发生故障,因此一旦 SW3 的 G0/12 接口切换到转发状态,网络中便出现了环路。
使用环路保护功能可以规避这个问题:
在根接口上开启环路保护功能后,如果根接口长时间没有收到 BPDU ,交换机会重新选举根接口,原来的根接口调整为指定接口,且接口状态切换成丢弃状态,从而避免出现环路。
在替代接口上开启环路保护功能后,如果替代接口长时间没有收到 BPDU ,交换机会把替代接口调整为指定接口,且接口状态保持在丢弃状态,从而避免出现环路。
4、拓扑变更保护( TC Protection )
一个稳定的网络是不会频繁出现拓扑变更的,一旦网络拓扑出现变更,TC BPDU( TC 置位的 BPDU )会泛洪到全网,而 TC BPDU 会让交换机执行 MAC 地址表删除的操作。如果网络环境很不稳定,导致 TC BPDU 频繁的泛洪,或者是网络中存在恶意用户,发送大量的 TC BPDU 对网络进行攻击,那么会极大消耗交换机的性能。
交换机开启拓扑变更保护功能后,默认将在 2 秒内只进行一次的 TC BPDU 处理,如果在 2 秒内收到了 2 个及以上的 TC BPDU ,那么交换机只会处理一次,对于超出的部分,必须等待 2 秒后才进行处理。
BPDU
RSTP 的配置 BPDU称为 RST BPDU( Rapid Spanning Tree BPDU ),它的格式和 STP 的配置 BPDU 差不多,只有个别字段做了修改。RST BPDU 的 “ 协议版本 ID ” 字段值是 0x02 ,“ BPDU 类型 ”字段值是 0x02 。主要变化是在 “ 标志 ” 字段,这个字段一共 8 bit ,STP 只使用了最高比特位和最低比特位,而 RSTP 使用了剩余的 6 个比特位,并对这些比特位分别进行了定义。
RST BPDU 的 Aggrement(同意)和 Proposal(提议)比特位用于 P/A( Proposal/Aggrement )机制。Port Role(接口角色)比特位是 2 bit ,用于标识 RST BPDU 发送接口的接口角色,01 表示根接口,10 表示替代接口,11 表示指定接口,而 00 保留使用。最后的 Forwarding(转发)和 Learning(学习)比特位表示 RST BPDU 发送接口的接口状态。
RSTP 与 STP 不同,在网络收敛后,无论是根桥还是非根桥,都会周期性的发送配置 BPDU,对于非根桥,不需要在根接口收到 BPDU 之后而产生自己的配置 BPDU ,而是自发的、周期性发送 BPDU 。
MSTP
虽然 RSTP 对 STP 进行了改进,但是还有一个缺陷,那就是所有 VLAN 共用一棵生成树。这样就无法实现负载分担,导致线路带来利用率低、设备资源利用率低。
如果有一种生成树协议,基于 VLAN 进行生成树的计算,那么这种技术有哪些优缺点?优点很明显,交换机为每一个 VLAN 单独计算一棵生成树,可以实现流量的负载分担。但是也有一个缺陷,如果网络中的 VLAN 数量很多,那么所有交换机都要为每一个 VLAN 计算一棵生成树,那么设备的资源消耗巨大,甚至会影响到正常流量的处理。
为了解决这个问题,MSTP( Multiple Instances Spanning Tree Protocol )出现了,兼容 STP 和 RSTP 。生成树不是基于 VLAN 运行的,而是基于 Instance(实例)运行的。Instance 是一个或多个 VLAN 的集合。
我们可以将一个或多个 VLAN 映射到一个 Instance ,然后 MSTP 基于 Instance 计算生成树。基于 Instance 的生成树称为MSTI( Multiple Spanning Tree Instance ,多生成树实例),MSTP 为每一个 Instance 维护独立的 MSTI 。映射到同一个 Instance 的 VLAN 共享一棵生成树。可根据实际需求,在交换机上创建多个 Instance ,然后将指定的 VLAN 映射到相应的 Instance 。一个 Instance 可以包含多个 VLAN ,但是一个 VLAN 只能被映射到一个 Instance 。
在创建 Instance 后,我们可以对 MSTI 进行主根桥、次根桥、接口优先级或 Cost 等配置。如果网络中有大量 VLAN ,那么我们可以将 VLAN 按照一定规律分别映射到不同的 Instance 中,从而实现负载分担,而交换机仅对这几个 Instance 进行生成树计算,设备资源消耗大大降低。
MSTP 引入了域( Region )的概念,我们可以将网络划分成多个MST 域( Multiple Spanning Tree Region ,多生成树域),一个 MST 域可以包含一台或多台交换机,同一个 MST 域的交换机必须配置相同的域名( Region Name )、相同的修订级别( Revision Level ),以及相同的 VLAN 与 Instance 的映射关系。
替代方案
学完 STP/RSTP/MSTP 后,解决网络中的二层环路问题,想到的解决方案就是生成树协议。但是生成树协议有天生的缺陷,收敛速度慢,虽然 RSTP/MSTP 对 STP 进行了改进,但是在毫秒级切换的要求下,生成树就不适用了。而且生成树的原理是将环路中的接口进行阻塞,导致被阻塞的线路无法承载流量,造成网络资源的浪费。MSTP 在这方面进行了优化,让不同 VLAN 的流量可以在不同线路进行负载分担,可是对于单个 VLAN 来说,始终会有一些线路无法承载流量。现在已经有许多其它技术或解决方案用于替代生成树协议。
Smart Link
Smart Link 是为双上行组网定做的解决方案。
如上图所示,交换机 SW3 一条上行链路连接 SW1 ,另一条上行链路连接 SW2 。在 SW3 上创建 Smart Link 组,将 SW3 的两个上行接口添加到这个组里,G0/1 口指定为 Master 接口、G0/2 口指定为 Slave 接口。默认只有 Master 接口是活跃的( Active ),这个接口可以正常收发流量,而 G0/2 接口会被阻塞( Inactive )。这样网络中的二层环路将被打破。
如上图所示,当 SW3 的 G0/1 接口发生故障,或者线路发生故障,Smart Link 会马上感知到,并且实现毫秒级的快速切换,G0/2 接口将立即切换到 Active 状态,并开始收发流量。在 Smart Link 切换过程中,SW3 还可以使用 Flush 报文去刷新上联设备,即 SW1 和 SW2 的 MAC 地址表等数据,加快网络收敛。
Smart Link 配置简单,切换时间快。由于工作机制的限制,只能适用于特定的双上行组网场景。SW1 、SW2 和 SW3 使用 Smart Link 防环后,也就不需要使用生成树协议了。
iStack/CSS
iStack 是华为盒式交换机的堆叠技术。而 CSS( Cluster Switch System ,集群交换系统)是华为框式交换机的集群技术。
什么是堆叠?
所谓堆叠,是指多台物理交换机通过特定的线缆连接,并通过相应的配置,组成逻辑上的一台设备的技术。
STP/RSTP/MSTP 或 Smart Link 都是采用阻塞特定接口的方式实现网络的无环化,使得网络资源得不到充分利用。一旦使用堆叠/集群技术,情况就不一样了。如上图所示,假设 SW1 和 SW2 都是盒式交换机,且都支持 iStack ,那么可以使用堆叠线缆把 SW1 和 SW2 连接起来,然后组建堆叠系统,建立完成后,SW1 和 SW2 不再是两台单独的交换机,而是一个有两个槽位的框式交换机。那么网络结构将大大简化,由于 SW1 和 SW2 在逻辑上是一台设备,设备的管理和配置将变得简单。SW3 分别与 SW1 、SW2 互联的线路,现在可以看做是两台交换机之间的两条链路,我们可以将这两条链路进行聚合,这样网络中将不存在二层环路,也无需部署防环技术。而且所有的链路都处于工作状态,没有接口被阻塞,设备资源和链路资源的利用率将最大化。
无二层环路场景
在一些网络中,我们会人为的将网络中的二层环路打破,从而规避防环技术的应用。如上图所示,汇聚层交换机 DSW1 、DSW2 与接入层交换机 ASW1 、ASW2 构成一个倒 U 型组网,ASW1 和 ASW2 之间未连线,因此这四台交换机组成的网络中,并不存在二层环路,也就无需使用生成树技术或其它防环技术了。
这个网络中,服务器使用了双上行链路,服务器的两张网卡以主备的方式运行,假设连接 ASW1 的网卡为主网卡。如果 ASW1 和 DSW1 的链路发生故障,服务器是无法感知到的,依然会从主网卡发送数据,而数据到达 ASW1 后被丢弃。一种解决方案就是在服务器上部署相应的应用程序,周期性的从主网卡发出探测报文,来探测到默认网关的可达性,DSW1 和 DSW2 上配置服务器的默认网关,如果发现主网卡到默认网关不可达,则自动将流量切换到备网卡。
另一种解决方案就是使用华为的Monitor Link技术。Monitor Link 是一种接口联动技术,交换机部署后会持续监控 Monitor Link 的上行接口(可指定接口),当上行接口发生故障时,交换机马上将下行接口(可指定接口)关闭。ASW1 可部署 Monitor Link 技术,将 DSW1 的接口配置为上行接口,将连接服务器网卡的接口配置为下行接口。这样的话,当 ASW1 的上行接口发生故障,交换机立马将连接服务器的下行接口关闭,从而使得服务器立即感知到故障的发生,然后将连接 ASW2 的网卡切换成主网卡,并在新的主网卡上发送数据。
结尾
STP可以在网络中形成一棵无环路的树,解决环路故障并实现冗余备份。
RSTP在 STP 功能基础上,通过替代接口让根接口快速进入转发状态、采用 P/A 机制和设置边缘接口等方法,实现了更快的收敛速度。
MSTP则在大规模、多 VLAN 环境下形成多个生成树实例,从而提供多 VLAN 负载均衡。
MSTP 同时兼容STP 、RSTP ,运行 MSTP 的设备可以识别 STP 、RSTP 两种协议报,并应用于生成树计算。
另外 RSTP/MSTP 与 STP 的接口状态不同,从 STP 的 5 种变成 3 种。
RSTP/MSTP 中,把禁用、阻塞、侦听三种状态合并为丢弃状态,减少状态数量,简化生成树计算,加快收敛速度。
RSTP/MSTP 有更快的收敛速度,简化的端口状态;MSTP 能够实现不同 VLAN 的负载分担。因此尽量使用 MSTP 来避免环路。