HCIE 面试资料-STP/RSTP/MSTP

STP

STP介绍
STP(Spanning Tree Protocol)生成树协议
有三个版本,协议版本标识符,STP为0,RSTP为2,MSTP为3。

STP的作用是进行逻辑阻断,通过堵塞端口来消除环路(广播风暴)实现链路备份。

MAC地址表震荡:当从不同的接口接收到相同的MAC地址,会删除原来的MAC和接口的映射,然后新加一条映射,如果产生环路,MAC地址表就会一直处于震荡,导致交换机频繁删除和添加MAC地址映射,增加交换机的工作负担

跟桥(root brige):在一个运行STP协议的拓扑中,必然会有一个跟桥,跟桥的选举是根据桥ID比较,桥优先级值越小越优–MAC地址小。

桥ID(Bridge ID):又称BID,每个交换机都会有一个桥ID由16位桥优先级+48位MAC地址组成。

端口ID(Port ID):又称PID,运行STP协议的每个交换机的每个端口都有端口ID,端口ID由端口优先级(8bit)和端口号(8bit)组成 缺省情况下端口ID为128 范围0~240 步长64。

桥优先级:范围为0-65535 默认32768 优先级是越小越有限 0是最优先的 步长4096,总共2字节,前4字节标识优先级,后12字节标识vlan id,在stp/rstp中固定为0。

端口开销:交换机的每个出端口都有端口开销,端口的开销与端口的带宽有关,带宽越高,开销越小。

根路径开销(Root Path Cost):是从出端口到跟桥的端口开销总和,通过根路径开销来确定到达跟桥的最短路径,跟桥的根路径开销是0。

端口角色
指定端口(designated port):又称DP口,每个链路都会有一个指定端口 ,根路径开销越小选举指定端口越优先,其次比较本端BID(桥ID),也相同比较本端PID(端口ID)小的为DP,跟桥的每个端口都为指定端口(除非跟桥产生物理环路)。

根端口(root port):又称RP口,每个非跟桥的交换机都会只有一个根端口(去往根桥最优的端口),根路径开销最小的端口成为根端口,如果有两个端口根路径开销相同选择对端BID(对端桥ID)小的端口,相同比较对端PID小的(对端端口ID),相同比较本端PID小(本端端口ID)作为根端口。

阻塞端口(block port):又称AP口,如果一个端口不是指定端口也不是根端口那么将会成为预备端口被阻塞(逻辑阻断)。

STP的报文类型
配置BPDU:用来进行生成树计算和维护生成树拓扑的报文
TCN BPDU:拓扑发生变动,会向跟桥发送TCN BPDU,通知相关设备网络拓扑结构发生变化的报文

配置BPDU基于二层组播方式发送,目的地址为01-80-C2-00-00-00

只有根桥会产生配置BPDU,非根桥只对配置BPDU进行中继,没有配置或没有运行STP协议的网桥将把配置BPDU当做普通数据帧进行转发,其中TCA置位的配置BPDU是为了回复TCN BPDU,TC置位的配置BPDU是为了使MAC的老化时间变为15s

网桥之间通过配置BPDU进行根桥的选择以及端口角色的确定
网桥上的每个端口都将保存本端口最优配置BPDU,通过MAXAGE将配置BPDU删除

STP状态
1、Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。
2、Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
3、Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。(15秒转发延时)
4、Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。(15秒转发延时)
5、Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。

STP的BPDU
PID:协议ID
PVI:版本号
BPDU TYPE:消息类型
Flags:TC TCA
Root ID:跟桥ID
RPC:根路径开销
Bridge ID:桥ID
Port ID:端口ID
Message Age:配置BPDU在网络中传播的生存期(每经过一台交换机,就会+1)
Max age:配置BPDU在设备中能够保存的最大生存期(20s)
Hello Time:配置BPDU发送的周期(2s)
Forward Delay:端口状态迁移的延时(15s)

STP的故障分析
跟桥故障:
停止发送BPDU报文,下游交换机就无法收到来自根桥的BPDU报文下游交换机一直收不到BPDU报文,Max Age定时器就会超时(Max Age的默认值为20秒),从而导致已经收到的BPDU报文失效,此时,非根交换机会互相发送配置BPDU报文,重新选举新的根桥。根桥故障会导致50秒左右的恢复时间,恢复时间约等于Max Age加上两倍的Forward Delay收敛时间

交换机有BP口故障,RP端口down掉:
与根桥相连的RP口收不到根桥的配置BPDU,从BP口收到了配置BPDU,那么BP口会变为RP口从blocking状态变为forwarding,在2个转发延时后进入转发状态

交换机无BP口故障,RP端口down掉:
与根桥相连的RP口收不到根桥的配置BPDU,另一端的BP口不会发送配置BPDU,那么认为自己是根桥,每隔2s发送配置BPDU,对端的BP口收到配置BPDU不做处理,在20s后(端口缓存的更优的BPDU老化时间超时)开始重新收敛,对端BP口变成DP口发送配置BPDU,自己的DP口变为RP口,在50s(20s+15s+15s)后交换机故障解除,正常转发数据

STP的拓扑变动
当非跟桥有拓扑变动,向根桥发送TCN BPDU包,通告根桥拓扑已改变,上联的非根桥从指定端口收到TCN BPDU包后,会向发送者回复TCA flag位置位的配置BPDU包,同时继续向根桥发送TCN BPDU包,根桥收到TCN BPDU包后,向发送者回复TCA Flag位置位的配置BPDU包,同时向所有指定端口发送TC Flag位置位的配置BPDU包。TC置位的配置BPDU包会连续发送MaxAge+Forward Delay(35s),同时将自己的MAC aging 设置为Forward Delay(15s),其他非根桥收到TC置位的配置BPDU包后,缩短老化时间,并向除了接收端口以外的其他端口泛洪

STP触发拓扑变更理由
1、一个端口从forwarding状态过渡到disable或blocking状态
2、一个非根桥如果从指定端口接收到TCN BPDU包,需要向根桥装发TCN BPDU包。
3、一个端口进入转发状态,并且本地已存在一个指端端口。

RSTP

RSTP(rapid spanning Tree Protocol ),快速生成树协议
STP的不足
1、STP从初始状态到完全收敛需要至少经过30s,跟桥与非跟桥的直连链路断开,从阻塞端口变为根端口进入转发状态还需要至少30s,接入新的终端用户也要30s
2、STP的TCN机制先传递到根桥,再由根桥发送TC置位的配置BPDU需要15s才会清除MAC地址表项,效率很低
3、没有细致区分端口角色和端口状态(Listening、Learning、Blocking没有区别,都无法转发用户流量)。
4、STP算法是被动的算法,依赖定时器等待的方式需要等待20s的BPDU老化时间,判断拓扑变化,收敛速度慢(STP只有跟桥能发送配置BPDU)。

RSTP相比STP的改进
1.删除了3种端口新增了2种端口(Alternate端口:由于学习到其它网桥发送的配置 BPDU 报文而阻塞的端口,作为根端口的备份端口、Backup端口: 由于学习到自己发送的配置 BPDU 报文而阻塞的端口,作为指定端口的备份端口),将状态规范成3种(不转发也不学习MAC地址,状态为Discarding,不转发但是学习MAC地址,状态为Learning,转发又学习MAC地址,状态为Forwarding------删除了原来的Blocking和Disabled),所以运行 STP 的设备收到 RSTP 的配置 BPDU 时会丢弃。最小数据单元从 BPDU 改为 RST BPDU。

2.无论非根桥设备是否接收到根桥传来的配置 BPDU 报文,非根桥设备仍然按照 Hello Timer (2s)规定的时间间隔发送配置 BPDU, 该行为完全由每台设备自主进行,如果一个端口连续 3 个 Hello Time 时间内(总共6s)没有收到上游设备发送过来的配置 BPDU,那 么该设备认为与此邻居之间的协商失败。而不像 STP 那样需要先等待一个 Max Age,当一个端口收到上游的指定桥发来的 RST BPDU 报文时,该端口会将自身存储的 RST BPDU 与收到的 RST BPDU 进行比较,如果该端口存储的 RST BPDU 的优先级高于收到的 RST BPDU,那么该端口会直接丢弃收 到的 RST BPDU,立即回应自身存储的 RST BPDU。当上游设备收到下游设备回应的 RST BPDU 后,上游设备会根据收到的 RST BPDU 报文中相应的字段立即更新自己存储的 RST BPDU。

3.快速收敛 Proposal/Agreement 机制简称 P/A 机制,当一个端口被选举成为指定端口之后,在 STP 中,该端口至少要等待一个 Forward Delay (Learning)时间才会迁移到 Forwarding 状态。而在 RSTP 中,此端口会先进入Discarding 状态,再通过 Proposal/Agreement 机制快速进入 Forwarding 状态,这种机制必须在点到点全双工链路上使用。

RST BPDU的报文
在这里插入图片描述

在flags中使用了其他字段
Proposal/Agreement P/A机制
Forwoarding 和 Learning 两种端口状态
Port Role 端口角色 00未定义 0/1 阻塞端口 10 根端口 11 指定端口

P/A机制
Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。
两边的端口必须是点到点全双工模式

1、在选举完跟桥后,两台互联的设备会互相交互BPDU,根据桥优先级,确认上游(DP口)和下游(RP口或AP口)
2、这时上游是处于Discarding状态,会急于转换成转发状态,上游就会向下游发送flag字段中P置位1的BPDU
3、当下游(桥优先级小的一方)收到flag字段中P置位1的BPDU后,下游会将自己的DP口变为Discarding(阻塞除边缘端口以外的其他端口,防止出现环路,一旦P/A机制协商不成功,就需要30s选择指定端口),并且将RP口变为转发状态,并向上游发送flag字段中A置位1的BPDU
4、当上游收到flag字段中A置位1的BPDU后,上游会将DP口变为转发状态
5、下游的DP口处于Discarding状态,也会向下游的下游发送flag字段中P置位1的BPDU

(如果下游的接口不是RP那么就当是AP,每2s会发送一次P置位的BPDU直到2个端口状态迁移延时30s,后上游的DP进入转发状态)

RSTP的故障分析
根桥故障:
自身存储的根桥优先级在Max age(6s)后清除,则认为自己是根桥,重新发送P置位的RST BPDU,重新选举根桥

非根桥有AP口,RP口故障:
RSTP感知到链路故障后会将AP口立马切换为RP口,直接进入转发状态,不需要等待30s

非根桥无AP口,RP口故障:
RSTP的RP故障,对端又是AP口,在等待自身存储的根桥的桥ID失效Max age(6s)后,则认为自己是根桥,重新进行P/A机制,发送P置位的RST BPDU,对端收到次级(桥ID比根桥的桥ID大)的RST BPDU,就会立马将AP口切换为DP口进行发送携带自身存储的根桥的桥ID的RST BPDU

RSTP的拓扑变动TC While
在RSTP中非边缘端口变为转发状态就算拓扑变化,当发生拓扑变化就会做出以下操作:
1、为本交换设备的所有非边缘指定端口启动一个TC While Timer,这个计时器是2倍的Hello Time(4s)。
2、这个时间段之内,会清空状态发生变化的端口上学习到的MAC地址,并由变化的端口向外发布TC置位的RST BPDU,一旦超过4s则停止发送。
3、当收到TC置位的RST BPDU后会清空自己的MAC地址表和ARP地址表,然后向除了接收到TC-BPDU和边缘端口的端口开起TC While,这样网络中就会泛洪TC-BPDU。

边缘端口
边缘端口特点:
1、在端口up后立即从Disable 直接转到 Forwarding,不需要等待2倍的转发延时(30s)就可以转发流量
2、P/A机制,边缘端口不阻塞,可持续进行流量转发
3、边缘端口up/down不会触法发送TC置位的BPDU
4、当接收到 BPDU,就从边缘端口变成普通STP端口,并重新进行生成树计算

edge port(边缘端口)指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连。

临时环路会由bpdu发送间隔、网络传输延迟、CPU处理延迟造成

stp的端口被设置为边缘端口还是会发送bpdu可能会导致网络动荡,可以使用 stp bpdu-filter enable 指令使边缘端口不发送不处理bpdu

边缘端口的端口类型为DP指定端口,因为每个链路上都需要一个DP口,而边缘端口在自己的链路上没有收到比自己更优的RST BPDT,所以边缘端口的端口类型为DP口

stp edged-port enable 将端口配置成边缘端口 缺省情况下,端口为非边缘端口。
stp bpdu-protection 配置交换设备边缘端口的 BPDU保护,缺省交换设备的 BPDU 保护处于禁用状态。
{error-down auto-recovery cause cause-iteminterval 30s~86400s} 设置BPDU的延迟重启

当下方接入了一台交换机接口都在转发状态,并产生了环路,那么边缘端口会收到BPDU报文,从而失去边缘端口的特性,从而重新参与计算,会阻塞环路。

运行STP后还有环路如何检测:
在系统视图下配置环路检测功能 loopback-detect enable

RSTP的保护机制
1、跟保护(接口视图 stp root-protection 不能配置在边缘端口和配置了环路保护的端口)
当前端口是指定端口时根保护便会生效,且根保护基于端口进行配置
主要为了防止根桥因为收到更高优先级的配置BPDU而导致根桥迁移
根交换机可能会由于配置错误根交换机或网络中的恶意攻击,收到优先级更高的BPDU报文,使根交换机变为非根交换机,引起网络拓扑结构变化,可能会导致原本应该通过高速链路的流量从低速链路上,造成网络拥塞
当开起跟保护,当收到更高优先级的RST BPDU端口将进入Discarding状态,不再转发报文,在经过2倍Forward delay的时间内没有再次收到优先级更高的RST BPDU后会变为正常的转发状态。
2、TC-BPDU保护
设备在收到TC置位的BPDU的时候会清楚自身的MAC表和arp表项,如果有人恶意伪造TC置位的BPDU并且大量发送,会导致网络拓扑动荡,给设备很大的负担。
当开起TC-BPDU保护后可以设置在规定时间内只处理TC BPDU的数量,超出的数量会在规定时间结束后算作一次TC BPDU处理。
3、BPDU保护(系统视图下stp bpdu-protection)
正常情况边缘端口不会收到用户发送的BPDU报文,当有用户恶意使用BPDU攻击,那么边缘端口就会变成非边缘端口,将会参与网络拓扑计算,导致网络动荡。
当开起BPDU保护,边缘端口收到BPDU报文后不会变成非边缘端口,而是端口会error down掉,等待管理员手动开起或等待配置了的超时时间,还可以解决临时环路的问题。
4、环路保护(接口视图 stp loop-protection 不能配置在边缘端口和配置了根保护的端口)
根端口和阻塞端口是不断接收上游设备的RST BPDU的,由于链路发生拥塞而导致这些端口收不到上游的RST BPDU后,会导致根端口老化,会重新选举根端口,原先的根端口会变成指定端口,原先的阻塞端口可能会变成转发状态,可能会产生环路。
当开起环路保护后,根端口和Alternate端口长时间收不到来自上游的RST BPDU会向网管发出通知消息,根端口会变成Discarding状态,阻塞端口继续阻塞,直到收到来自上游的RST BPDU才会恢复原状。

Loopback Detection
环回口检测是通过周期发送环回检测报文来检测设备下挂的网络是否有环路,从接口定时发送检测报文,检测该报文是否会从发出的接口接收到。

MSTP

多生成树协议MSTP(Multiple Spanning Tree Protocol)
单生成树的弊端
1、由于局域网内所有的VLAN共享一棵生成树,无法在VLAN间实现数据流量分担
2、链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发
3、由于链路呗阻塞,可能造成次优路径

MSTP对rstp和stp的改进
MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树叫做一个多生成树实例MSTI

MST域:
1、都启动了MSTP。(stp mode mstp)
(需要进入stp region-configuration)
2、具有相同的域名。(region-name name)
3、具有相同的VLAN到生成树实例映射配置。(instance 1 vlan 10)
4、具有相同的MSTP修订级别配置。(revision-level 1)
(需要保存 active region-configuration)

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

MSTP角色介绍
MST Region:生成树域,又称MST域,MSTP把一个交换网络划分成多个域

MST Instance:MST实例,一个域中可以有多个实例,一个实例对应多个VLAN(每个MSTI都有一个标识(MSTID),取值范围在0 ~ 15,默认所有VLAN映射到MST Instance 0)
优先级比较:域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID(越小越优)

VLAN映射表:是MST域的属性,用来映射VLAN和MSTI之间的映射关系

SST(Single Spanning Tree):单生成树,构成单生成树SST(Single Spanning Tree)有两种情况:
1、运行STP或RSTP的设备只能属于一个生成树。
2、MST域中只有一个设备,这个设备构成单生成树。

CST(Common Spanning Tree):公共生成树,将MST域看做一个节点,通过stp/rstp将所有的节点连接构建生成树(这样又可以防环,又可以根据不同的vlan有不同的转发路径)

IST(Internal Spanning Tree):内部生成树,是MST域内的一个为0的实例,MSTI的ID为0,通常称为MSTI0。只有MSTI0才能接受其他域的数据

CIST:即IST+CST,公共生成树+内部生成树共同构建了一个局域网内的完整的生成树结构
优先级比较:根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID(越小越优)

总根:CIST中的跟桥

域根(Regional Root):分为IST域根和MSTI域根
IST域根是MST域中IST生成树中距离总根最近的交换设备
MSTI域根是MST域中实例的根桥设备,每个实例中都会有一个MSTI域根

RSTP和STP的兼容
当一个网络中有运行RSTP和STP的交换机时,STP的交换机不会接收RST BPDU,而RSTP交换机收到STP BPDU的时候会在两个hello time(4s)后将自己的端口改为STP工作模式,然后就会发送STP BPDU

RSTP和MSTP的兼容
只有实例0中才会做rstp、stp计算
是可以互相兼容的
RSTP/STP会将MSTP发来的MST BPDU中的{总根、外部路径开销、域根ID、指定端口ID}作为RSTP/STP的{跟桥ID、RPC、桥ID、端口ID}
MSTP会将RSTP/STP发来的BPDU值的{RID、RPC、BID、PID}对应到MSTP当中,BID作为域根ID,也作为指定交换机ID,内部根路径开销为0

MSTP支持普通P/A机制和增强P/A机制
普通P/A机制的原理:
1、在选举完跟桥后,两台互联的设备会互相交互BPDU,确认上游(DP口)和下游(RP口或AP口)
2、这时上游是处于Discarding状态,会急于转换成转发状态,上游就会向下游发送flag字段中P置位1的BPDU
3、当下游收到flag字段中P置位1的BPDU后,下游会将自己的DP口阻塞掉,并且将RP口变为转发状态,并向上游发送flag字段中A置位1的BPDU
4、当上游收到flag字段中A置位1的BPDU后,上游会将DP口变为转发状态
5、下游的DP口处于Discarding状态,也会向下游的下游发送flag字段中P置位1的BPDU

(如果下游的接口不是RP那么就当是AP,每2s会发送一次P置位的BPDU直到2个端口状态迁移延时30s,后上游的DP进入转发状态)

增强P/A机制的原理:
1、互联的设备都认为自己是跟桥,端口为DP,端口状态为discarding状态,发送P置位的BPDU请求进行P/A协商
2、收到BPDU后将桥优先级和自己的比,桥优先级小的会停止发送,则进入同步状态阻塞其他非边缘端口并将接收上游BPDU的端口改为RP口,但是不会直接变为forwarding状态
3、上游会继续发送A置位的BPDU,下游收到后会变为forwarding状态,并向上游发送A置位的BPDU,当上游收到之后就会将端口角色设置为DP口,并且端口状态变为forwarding状态

猜你喜欢

转载自blog.csdn.net/PanJWei/article/details/114145002