rstp和mstp

概念

STP三个版本:
STP(802.1d)
RSTP(802.1w)
MSTP (802.1s)
作用:打破二层环路,实现设备或者链路的冗余
STP的计算过程
①选举根桥
BID=优先级+MAC,优先级值越小越优,如果优先级相等,MAC小的成为根桥
②选举根端口
RPC(小的越优)+上行交换机的BID+上行交换机的PID(优先级和接口ID,越小越优)+本地的PID
③选举指定接口
RPC(小的越优)+本端的BID+本端的PID(小的越优)
④非指定接口

端口优先级

端口ID(pid)= 端口优先级(Port Priority)4 bit+ 端口编号12 bit 构成; 缺省情况下,端口优先级是128;端口优先级取值范围是0到240,取值必须为16的整数倍。

优先级

默认32768

越小越优

必须是4096倍数

0-65535

接口根路径开销:

1、dot1t
G:20000
E:200000

PRC=根桥到非根桥经过所有的入方向接口的cost累加

STP的收敛时间:

①根桥故障
50s
②直连链路发生故障
30s
③非直连链路故障
50s

转发延迟计时器:15s
BPDU发送时间:2s
老化时间:20s

端口状态:
disable:未启用
blocking:阻塞
listening:侦听
learning:学习
forwarding:转发

RSTP:
一、端口角色:
根端口
指定端口
A:根端口的备份端口,提供了指定桥到达根的另一条路径
Backup:
作为指定接口的备份,提供了另一条从根桥到相应网段的备份链路

二、端口状态
Discarding状态:不转发用户流量也不学习MAC地址;
Learning状态:不转发用户流量但是学习MAC地址;
Forwarding状:既转发用户流量又学习MAC地址
三、配置BPDU
BPDU类型和flag字段
四、配置BPDU的处理
拓扑稳定后,运行RSTP协议的非根桥设备会定期的发送配置BPDU
RSTP的任何端口角色都会处理次优BPDU,从而加快拓扑收敛
五、P/A
作用:保证一个指定接口从discarding—>forwarding
触发:只有指定discarding状态下才可以触发P/A机制,必须是根端口在forwarding状态下回复一个A=1的一个BPDU

① 选举根桥、根接口、指定接口,然后根接口、指定接口处于discarding
②根桥的指定接口处于discarsing,触发到P/A,根桥会从指定接口发送P=1BPDU;
③非根桥的根接口收到P=1的BPDU,会启动一个同步过程,将非边缘接口全部阻塞,同步完成之后,根接口切换到转发状态,并且从根接口发送A=1 BPDU
④根桥收到A=1 BPDU,立即切换为转发状态,实现指定接口的快速收敛

保护功能:
1、BPDU保护
存在问题:边缘端口收到BPDU之后,接口会变成普通接口,那么会引起网络中生成树重新计算,对网络造成影响。
解决:开启BPDU保护功能,只要边缘端口收到BPDU,交换机立即把接口置位Error-down,同时会产生告警。(接口恢复两种方式:手工恢复、自动恢复)

2、根保护

存在问题:加入在一个稳定的STP网络,此时根桥连接一台交换机,该交换机支持生成树,发送BPDU,STP网络重新计算;如果新加入的交换机比根桥优先级更优,会抢占根桥的位置,从而引起网络震荡
解决:根桥的指定接口下激活跟保护功能,如何接口收到了更优的BPDU,会忽略并且切换到discarding。
注意:跟保护只能在指定接口下激活。
状态恢复:如果接口不再收到更优的BPDU,在一段时间后(2*转发延迟时间)自动恢复转发状态。

3、环路保护
存在问题:
AP单向故障:假如交换机之间通过光纤(一收一发),链路发生单向故障,AP接口老化时间后没有收到BPDU,接口会成为DP并切换到转发状态,并转发流量,环路产生
RP单向故障:假如交换机之间通过光纤(一收一发),链路发生单向故障,导致DP到RP的单向故障,RP在一段时间没有收到BPDU,AP会切换到RP角色,RP切换到DP,收敛完成,DP开始转发业务流量,环路产生。
解决:在AP接口下开启环路保护功能,如何接口长时间没有BPDU ,那么AP接口切换成DP,端口状态保持discarding状态,避免环路。

在RP接口下开启环路保护功能,如何接口长时间没有BPDU,那么会重新计算选举根端口,并将原端口调整为DP,接口状态保持discarding状态,避免环路。

4、拓扑变更保护(TC protection)
存在问题:假如网络中存在攻击者,会仿冒TC置位为1的BPDU报文发送大量的TC BPDU,交换机收到BPDU之后,会删除mac地址表项,会消耗大量的设备资源。
解决:默认情况交换机开启了拓扑变更保护,缺省2s只会处理异常TC BPDU,超出的部分等待一段时间处理

如何生成STP树?
主要通过比较4个参数:根桥ID、根路径开销、网桥ID和端口ID,值越小,越优先。而这些参数,都是报文BPDU中的字段。
根桥选举:比较根桥ID,最小胜出。
根端口选举:依次比较RPC、对端BID、对端PID和本端PID,最小胜出。
指定端口选举:依次比较RPC、本端BID和本端PID,最小胜出。

在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口被阻塞。

MSTP:
一、概念
MST Region:Multiple Spanning Tree Region,多生成树域),也可简称MST域
MSTI(Multiple Spanning Tree Instance,多生成树实例):MSTI使用Instance ID标识,为0~4094。
Instance0是缺省存在的,而且缺省时,华为交换机上所有的VLAN都映射到了Instance0。
通过设置VLAN映射表(即VLAN和MSTI的对应关系表),把VLAN和MSTI联系起来。
每个VLAN只能对应一个MSTI,即同一VLAN的数据只能在一个MSTI中传输,而一个MSTI可能对应多个VLAN。
CST公共生成树:是连接交换网络内所有MST域的一棵生成树
IST(内部生成树)是各MST域内的一棵生成树。
CIST(公共和内部生成树)
通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树
SST(Single Spanning Tree,单生成树)有两种情况:
运行生成树协议的交换设备只能属于一个生成树。
MST域中只有一个交换设备,这个交换设备构成单生成树。

总根(CIST Root)是CIST的根桥

域根(Regional Root)
分为IST域根和MSTI域根。
IST域根,在MST域中IST生成树中距离总根最近的交换设备是IST域根,
MSTI域根是每个多生成树实例的树根

主桥(Master Bridge)是IST Master,它是域内距离总根最近的交换设备,如果总根在MST域中,则总根为该域的主桥

新增的端口角色:
①Master端口

Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口。
Master端口是域中的报文去往总根的必经之路。
Master端口是特殊域边缘端口,Master端口在CIST上的角色是Root Port,在其它各实例上的角色都是Master端口。

②域边缘端口
域边缘端口是指位于MST域的边缘并连接其它MST域或SST的端口

MSTP计算
优先级向量说明:
根交换设备ID:根交换设备ID用于选择CIST中的根交换设备。
根交换设备ID = Priority(16 bit) + MAC(48 bit)。
其中Priority为MSTI0的优先级。
外部路径开销(External Root Path Cost,ERPC):从CIST的域根到达总根的路径开销。
MST域内所有交换设备上保存的外部路径开销相同。
若CIST根交换设备在域中,则域内所有交换设备上保存的外部路径开销为0。
域根ID:域根ID用于选择MSTI中的域根。
域根ID = Priority(16 bit) + MAC(48 bit)。
其中Priority为MSTI0的优先级。
内部路径开销(Internal Root Path Cost,IRPC):本桥到达域根的路径开销。
域边缘端口保存的内部路径开销大于非域边缘端口保存的内部路径开销。
指定交换设备ID:CIST或MSTI实例的指定交换设备是本桥通往域根的最邻近的上游桥。
如果本桥就是总根或域根,则指定交换设备为自己。
指定端口ID:指定交换设备上同本设备上根端口相连的端口。
Port ID = Priority(4 bit) + 端口号(12 bit)。
端口优先级必须是16的整数倍。
接收端口ID:接收到BPDU报文的端口。
Port ID = Priority(4 bit) + 端口号(12 bit)。

端口优先级必须是16的整数倍。

优先级向量比较原则:
同一向量比较,值最小的向量具有最高优先级。
优先级向量比较原则如下
首先,比较根交换设备ID。
如果根交换设备ID相同,再比较外部路径开销。
如果外部路径开销相同,再比较域根ID。
如果域根ID仍然相同,再比较内部路径开销。
如果内部路径仍然相同,再比较指定交换设备ID。
如果指定交换设备ID仍然相同,再比较指定端口ID。
如果指定端口ID还相同,再比较接收端口ID。
如果端口接收到的BPDU内包含的配置消息优于端口上保存的配置消息,则端口上原来保存的配置消息被新收到的配置消息替代。端口同时更新交换设备保存的全局配置消息。反之,新收到的BPDU被丢弃。

配置

rstptuopu7180923

  1. 开启STP,修改STP模式为RSTP。
  2. 手动指定S1为RSTP根桥、S2为RSTP备份根桥。
  3. 通过修改接口开销值,使得S4的GE0/0/1接口成为根端口。
  4. 通过修改S1的GE0/0/11接口优先级,使得S2的GE0/0/11接口成为根端口。
  5. 修改STP模式为MSTP,创建Instance1、2,指定SW1为MSTI1的根桥、MSTI2的备份根桥,指定SW2为MSTI2的根桥、MSTI1的备份根桥。

RSTP基础配置

#S1-s4 上都配置

stp enable

stp mode rstp

#查看STP的状态和统计信息摘要

dis stp brief

接口都为指定端口的是根桥,本实验中s4是根桥

根桥选举控制

#手动调整STP优先级,指定S1为主根桥、S2为备份根桥

[S1]stp priority 4096

[S2]stp priority 8192

在另外两台交换机保持默认桥优先级(32768)的情况下,S1拥有最小的桥优先级,S2次之。

此时s1变为根桥,s2备份根桥

dis stp可以看到优先级已经改变

#取消S1、S2上手动调整桥优先级的配置,使用stp root命令指定根桥、备份根桥

[S1]undo stp priority

[S1]stp root primary

[S2]undo stp priority

[S2]stp root secondary

#S1、S2上查看STP的状态和统计信息,可以看到如下内容

s1:

s1dis182725

s2:

s2disgg182834

S1的桥优先级为0,而S2的桥优先级为4096,此时S1为根桥,S2为备份根桥。

修改接口开销值控制根端口选举

#在S4上查看STP的状态和统计信息摘要

s4disg83008

S4上GE0/0/2拥有更小的RPC(根路径开销),从而成为根端口。

#在S4上查看GE0/0/2接口的STP的状态和统计信息

s4disint232

此时路径开销计算方法为Dot1t,接口的STP cost值为20000。

#修改S4的GE0/0/2接口的STP cost值为40001

[S4]interface GigabitEthernet 0/0/2

[S4-GigabitEthernet0/0/2] stp cost 40001

#再次在S4上查看STP的状态和统计信息摘要

s4gen333559

此时GE0/0/1接口的RPC为20000,小于GE0/0/2接口的RPC 40001,S4的GE0/0/1接口成为根端口。

修改接口优先级控制根端口选举

#在S2上查看STP的状态和统计信息摘要

s2disf83853

S2上GE0/0/10、GE0/0/11接口收到的BPDU拥有相同的RPC、上行交换机BID,此时比较上行交换机PID(优先级+接口id),接口优先级一样,接口id小的优,所以g0/0/10小,所以是根端口

#在S1上修改GE0/0/11的STP接口优先级,使其发送的BPDU优于 GE0/0/10发送的BPDU

(修改上行交换机的PID)

[S1]interface GigabitEthernet 0/0/11

[S1-GigabitEthernet0/0/11] stp port priority 64

端口ID= 端口优先级(Port Priority)4 bit+ 端口编号12 bit 构成; 缺省情况下,端口优先级是128;端口优先级取值范围是0到240,取值必须为16的整数倍。

#再次查看S2上的STP状态和统计信息摘要

g0011gen759

此时S2的GE0/0/1接口成为根端口。

MSTP基础配置

在所有交换机上创建VLAN10、20、30、40、50、60、70、80,配置MSTP域hcip,并创建两个新的实例:Instance 1、Instance 2,将VLAN10、30、50、70映射到Instance 1,将VLAN20、40、60、80映射到Instance 2,同时将SW1规划为MSTI1的主根桥、MSTI2的备份根桥,将SW2规划为MSTI2的主根桥、MSTI1的备份根桥。

#创建VLAN

[S1]vlan batch 10 20 30 40 50 60 70 80

[S2]vlan batch 10 20 30 40 50 60 70 80

[S3]vlan batch 10 20 30 40 50 60 70 80

[S4]vlan batch 10 20 30 40 50 60 70 80

#将所有互联接口配置为Trunk接口,放通所有VLAN

#修改STP模式为MSTP

[S1]stp mode mstp

[S2]stp mode mstp

[S3]stp mode mstp

[S4]stp mode mstp

#配置MSTP

[S1]stp region-configuration

[S1-mst-region] region-name hcip //域名为hcip

[S1-mst-region] revision-level 1 //版本1

[S1-mst-region] instance 1 vlan 10 30 50 70 实例1映射vlan 10 30 50 70

[S1-mst-region] instance 2 vlan 20 40 60 80

[S1-mst-region] active region-configuration //生效

Info: This operation may take a few seconds. Please wait for a moment…done.

[S1-mst-region] quit

(s2,s3,s4同理配置)

#在S1检查MSTP实例和VLAN的映射关系

[S1]display stp region-configuration

#配置SW1为MSTI1的根桥、MSTI2的备份根桥

[S1]stp instance 1 root primary

[S1]stp instance 2 root secondary

#配置SW2为MSTI2的根桥、MSTI1的备份根桥

[S2]stp instance 1 root secondary

[S2]stp instance 2 root primary

#在S1上查看MSTI1的状态和统计信息摘要

[S1]display stp instance 1 brief

MSTID Port Role STP State Protection

1 GigabitEthernet0/0/10 DESI FORWARDING NONE

1 GigabitEthernet0/0/11 DESI FORWARDING NONE

1 GigabitEthernet0/0/12 DESI FORWARDING NONE

1 GigabitEthernet0/0/13 DESI FORWARDING NONE

S1上所有接口都是指定接口,S1为MSTI1的根桥。

#在S2上查看MSTI2的状态和统计信息摘要

[S2]display stp instance 2 brief

MSTID Port Role STP State Protection

2 GigabitEthernet0/0/10 DESI FORWARDING NONE

2 GigabitEthernet0/0/11 DESI FORWARDING NONE

2 GigabitEthernet0/0/12 DESI FORWARDING NONE

2 GigabitEthernet0/0/13 DESI FORWARDING NONE

S2上所有接口都是指定接口,S2为MSTI2的根桥。