一. STP基础:
为了提高网络可靠性,交换网络中通常会使用冗余链路。然而,冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。STP可以在提高可靠性的同时又能避免环路带来的各种问题,STP(Spanning Tree Protocol)是生成树协议的英文缩写。该协议可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余,但不是一定可以实现路径冗余。
STP分为三个版本:
① 802.1D普通生成树STP
② 802.1W快速生成树RSTP
③ 802.1S多生成树 MSTP
STP作用:
① 通过阻塞端口来消除环路
② 实现链路备份的目的
1. 冗余以太网问题:
冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。
(1)广播风暴:
环路产生广播风暴,假设交换设备上没有启用STP协议:
如果HostA发出广播请求,那么广播报文将被交换设备SWB的端口接收,并分别从端口其余的端口广播出去,然后这两个端口又收到另一台交换设备发过来的广播报文,再分别从两台交换设备的端口转发,如此反复,最终导致整个网络资源被耗尽,网络瘫痪不可用。
注1:如果主机存在ARP表项而交换机没有,此时发送数据包时,交换机会重所有的端口发送出去,有可能会造成单播帧环路
注2:面试时注明端口
(2)MAC地址表震荡:
以SWB为例:
① 主机A发送ARP报文请求主机B的MAC地址
② ARP广播包被SWB接收,SWB根据源地址记录接口G0/0/3对应的MAC地址表为0005-0607-08AA,但由于存在环路,广播包会从SWC的G0/0/2口再次送回SWB
③ SWB从G0/0/2口接收到相同的ARP报文后,发现源MAC地址0005-0607-08AA对应的接口地址为G0/0/2,于是更新自己的MAC映射表
④ 由于一直存在环路,所以SWB也会从G0/0/1接收到相同的ARP请求并更新自己的MAC映射表,所以SWB会一直刷新自己的MAC地址表的映射
2. STP模式:
① SST:
又称CST,指所有的实例都使用一个STP,如传统的802.1D、802.1W类型的STP
② MST:
多实例生成树,将多个Vlan放入一个实例中,如802.1S的MSTP
③ VBST:
VBST(VLAN-Based Spanning Tree)是华为提出的一种生成树协议,通过它可在每个VLAN内构建一棵生成树,使不同VLAN内的流量可通过不同的生成树转发。VBST可以简单理解为在每个VLAN上运行一个STP或RSTP协议,不同VLAN之间的生成树完全独立。用来兼容cisco的PVST
二. 802.1D普通生成树STP:
STP生成树通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。
1. STP-BPDU:
Bridge Protocol Data Unit,桥协议数据单元,各台交换机STP之间使用BPDU进行交互,BPDU使用组播地址进行泛洪,组播地址为:01-80-c2-00-00-00。
BPDU报文格式:
① Protocol ID:协议ID,该值总为0
② Protocol Version ID:协议版本ID,STP的版本(802.1D为0;802.1W为2;802.1S为3)
③ BPDU Type:BPDU类型,分为两种,配置BPDU为0;TCN BPDU为80
④ Flags:分为两种置位符:
- TC:Topology Change,拓扑变更
- TCA:Topology Change Acknowledgment,拓扑变更确认信息
⑤ Root ID:8Byte,根桥的ID,由三部分组成
- 4bit优先级值,实际本地显示值为N*4096
- 12bit扩展系统ID(实例ID,默认为0)
- 6Byte系统ID(MAC地址)
⑥ RPC:Root Path Cost,开销值
⑦ Bridge ID:8Byte,转发者的ID,每经过一个交换机,Bridge ID会变为此交换机的ID,由三部分
组成:
- 4bit优先级值
- 12bit扩展系统ID(实例ID,默认为0)
- 8Byte系统ID(MAC地址)
⑧ Port ID:2Byte,端口ID,每经过一个交换机的端口,Port ID变为此端口的ID
- 端口优先级,默认128
- 接口ID
⑨ Message Age:配置BPDU在网络中传播的生存期,默认每经过一跳,Message Age+1
⑩ Max Age: Message Age最大老化时间,默认为20S
⑪ Hello time:探测时间,默认为2S
⑫ forward Delay:转发延迟,默认为15S
注:如果一台交换机接收到自己发出去的BPDU,他会将接收到BPDU的端口阻塞掉,防止
环路。
在传统的802.1D类型的STP中,BPDU分为两种,一种为STP稳定时只有根桥每隔两秒
发送一次的Configuration BPDU,另一种为链路出现问题时,下游非根交换机用于通知上有交换机的TCN BPDU。
(1)Configuration BPDU:
配置BPDU,基于IEEE802.3协议,用于计算无环的生成树, 在传统STP生成树中,在进
行选举收敛时,所有交换机发送配置BPDU选举根桥,当根桥选举后,只有根桥始发配置BPDU,所有交换机端口转发配置BPDU。
(2)TCN BPDU:
Topology Change Notification,拓扑变更通知BPDU,通常端口的重新收敛会带来STP域内的mac地址表错误,这种错误在上游交换机中也是存在的,交换机mac表映射默认为300s,当出现mac地址表错误后,300s内由于存在错误的mac地址表,交换机将无法正确的转发数据。当下游交换机感知到拓扑发生变化时,向上游发送的拓扑变更通知,TCN结合configuration BPDU中的flage位的TC和TCA进行全网拓扑MAC地址重新收。
TCN BPDU只包含Protocol ID、Protocol Version ID、BPDU Type四行内容,主要用于通知上有交换机MAC地址表项错误。
注:标准802.1D STP中,接口无论Down还是Up都会产生TCN BPDU用于刷新当前网络中交换机的MAC地址表,而Huawei实现中802.1D STP和802.1W STP的实现方式是一样的,即有接口由原来的Down状态变为Up(Forwarding)状态,才会产生TCN BPDU。
① 拓扑变化带来的MAC地址错误:
a) SWC的的G0/0/2端口为阻塞端口,此时SWB中的MAC映射表去往主机B的端口为G0/0/1
b) 当SWC的G0/0/1端口出现故障后,此时主机A访问主机B的实际链路为从SWB的g0/0/2
端口去往SWC
c) 由于MAC地址表默认缓存为300S,所以此时SWB依旧将数据包从G0/0/1端口送出,最终 数据在导到SWA的G0/0/2时,由于链路故障,发生丢包
② 拓扑变更BPDU详解:
- TCN BPDU:
下游设备拓扑变更后,会使用TCN BPDU通知上游设备
- TCA置位的Configuration BPDU:
当上游交换机收到下游交换机发送的TCN BPDU后,此时将Configuration BPDU中的Flags中
的TCA置位,从指定端口发送给下游交换机,告知下游设备已经知道拓扑变化,停止发送TCN BPDU报文。
- TC置位的Configuration BPDU:
当根桥收到TCN BPDU后,会发送TC置位的Configuration,此报文从上游设备的指定端口张
一直传递到最下游设备,主要是上游设备用来告知下游设备拓扑发生变化,将非根交换机的
mac地址表老化时间由原来的300S缩短为15S,从而达到快速收敛的目的。
③ TCN拓扑变更后删除mac表举例:
a) 在网络拓扑发生变化后,下游设备会不间断地向(RP端口)上游设备发送TCN BPDU报文(默认发送时间为35S)。
b) 上游设备收到下游设备发来的TCN BPDU报文后,也会将此报文发送给RP端口给上游设备,并将BPDU报文中的Flags的TCA位设置1,然后发送给下游设备,告知下游设备停止发送TCN BPDU报文。
c) 上游设备复制一份TCN BPDU报文,向RP端口的根桥方向发送。并重复步骤1、2、3,直到根桥收到TCN BPDU报文。
d) 根桥把配置BPDU报文中的Flags的TC位置1后发送,根桥和所有收到TC置位的BPDU的路由器会将修改MAC表的老化时间,如果MAC老化时间小于15S则删除此MAC映射,大于15S的变为15S,huawei设备会直接删除MAC地址表的映射。
2. STP定时器:
传统STP收敛过程中,主要包含3个定时器:
① Hello Time
② Max Time
③ Forward Delay
(1)Hello Time:
Hello Time为周期发送BPDU来维护生成树的稳定的时间,默认为2S。时间内没有收到上游交换机发送的BPDU,则会重新进行生成树计算。在根交换机上配置的Hello Time将作为整个生成树内所有交换机的Hello Time。
(2)Max Age:
BPDU最大生存时间,默认为20S(实际中每经过一跳为1S),交换机通过比较从上游交换机收的BPDU中携带的Message Age和Max Age比较来判断BPDU是否超时,如果收到的BPDU超时,交换机将该BPDU老化,同时阻塞接收该BPDU的接口,并开始发出以自己为根桥的BPDU。这种老化机制可以有效的控制生成树的半径。在根交换机配置Max Age将作为整个生成树内所有交换机的Max age,如果超出Max Age的时间没有收到上游发送的Hello包,则认为对端不可达,会重新收敛。华为设备中不会使用Max Age,而是会使用3*Hello时间*因子(默认为3)=18S
(3)Forward Delay:
转发延迟,次延迟时间为Forward Felay定时器的时间,默认为15S。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能造成临时环路。为此,STP采用了一种端口状态迁移机制,在传统STP中,新选出的根端口和指定端口要经过2倍的Forward Delay演示后才能进入转发状态,这个演示保证了新的配置消息传遍整个网络,使所有参与STP计算的交换都能正确知晓网络状态。
3. STP端口角色:
传统STP端口分为三种端口:
① Root Port:根端口
② Designated port:指定端口
③ Alternate Port:预备端口
端口角色 |
BPDU |
数据 |
Root Port |
接收BPDU但不转发BPDU |
接收并转发数据 |
Designated Port |
接收并转发BPDU |
接收并转发数据 |
Alternate Port |
接收BPDU但不转发BPDU |
不接收也不转发数据 |
STP端口要求:
① 根桥无RP,根桥所有的端口都是DP
② 每个非根交换机上都有RP,并且只有唯一的一个RP
③ 每segment(一段链路)上只能有一个DP
④ 每Segment上可以有多个AP
注:华为设备STP端口角色采用RSTP模式,选举模式中AP和BP也都存在,但是选举规则和收敛时间全部按照STP模式进行,AP和BP收敛模式一置,当DP的端口出现问题,BP等待18S变为DP
(1)Root Port:
根端口,离根桥最近的非根交换机端口,每台非根交换机只有一个根端口,根交换机没有根端口。根端口接收BPDU,并转发数据帧。
每个STP网络中,都会存在一个根桥,其他交换机为非根交换机,根桥或者跟交换机位于整个逻辑树的根部,时STP网络的逻辑中心,非根桥时根桥的下游设备,根端口时非根交换机去往根桥路径的最优端口,在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
RP端口是接收到最优BPDU端口的接口,当RP端口down掉,此时最优BPDU立马down掉,并将所有的端口置为DP重新发送BPDU,重新进行端口的选举,其余的端口down掉不会存在此过程,如果一台交换机收不到根桥的BPDU,会等待20S后等BPDU老化重新选举。
(2)Designated Port:
指定端口,用于数据和BPDU的转发,指定端口接收转发BPDU,并转发数据帧。指点端口时交换机想所连接链路转发配置BPDU的端口,每个网段有且只能由一个指定端口。一般情况下,根桥的每个端口总是指定端口。
(3)Alternate Port:
预备端口,应该为Backup Port,华为设备为Alternate Port,预备端口用于保障无环,预备端口接收BPDU,不转发数据帧。
4. STP端口状态:
在STP选举端口进行收敛的时候,由于链路的延迟,可能每个交换机的选举端口进行不一致而出现短暂的环路问题,为了避免这个问题,出现了传统STP从初始到收敛必须遵守的几种状态,初次收敛时间为30S,称为2倍的Forward Delay(2X15=30S)。
临时环路的产生:
① 网络中LSW4为新的根桥,此时LSW5的G0/0/3的AP端口变为了RP
② 在变为RP的一瞬间,如果LSW3的G0/0/2没有从DP变为AP,那么网络中如果存在
数据流量,将导致环路
STP端口的几种状态:
① Disabled(初始状态)
② Blocking(阻塞状态)
③ Listening(侦听状态)
④ Learning(学习状态)
⑤ Forwarding(转发状态)
(1)Disabled:
禁用状态,端口即不处理和转发BPDU报文,也不转发用户流量。交换机接口UP的一瞬间,端口处于此状态。
(2)Blocking:
阻塞状态,此状态下接收并处理BPDU,但是不向外发送BPDU,不学习MAC地址,不发送数据帧,AP最终收敛为此状态。
(3)Listening:
侦听状态,此状态下接收并转发BPDU,不学习MAC地址,不转发数据帧(此状态理论上所有的交换机端口默认已经选举出所有的端口角色),初次收敛停留时间为15S。
(4)Learning:
学习状态,此状态下接收BPDU并转发BPDU,并学习MAC地址,不转发数据帧,初次收敛停留时间为15S。
注:Learing在初次收敛和拓扑改变收敛分别的作用:
① 初次收敛,由于端口角色已经选举出来,为了收敛后节约时间而能高效的转发,
所以在Learing状态下学习MAC地址表
② 再次收敛,由于链路状态发生变化导致mac地址表错误,所以清空MAC表并不
转发数据重新学习MAC地址
(5)Forwarding:
转发状态,此状态下接受BPDU,并学习MAC地址,转发数据帧。
5. STP端口收敛过程:
(1)初次收敛:
传统STP初次收敛称为2倍的Forward Delay,时间为30S:
① 交换机默认启用STP生成树后,端口从Disabled切到Listening状态,此状态接收并发送BPDU,进行端口选举,并持续15S。
② 15S过后,进入Learing状态,持续15秒,目的为了继续防止临时环路的发生,但由于端口角色已经选举出来,为了收敛后节约时间而能高效的转发,所以在Learing状态下学习MAC地址表,但是不转发数据包。
③ 在30S后,最终进入Forward状态开始转发数据包。
注:在Listening状态下,已经选举出端口角色,所以阻塞端口会直接由Listening进入Blocking状态。
(2)拓扑变化重新收敛:
交换机在以下状态下会改变自己存储的BPDU:
① 收到一份比收敛后根桥更优的BPDU
② 在20S(MAXage)后没有收到根桥的BPDU但收到了一份新的BPDU(标准,huawei
实现中采用802.1W STP模式18S老化时间)
在拓扑发生变化时,BPDU报文中的MAX age为最大等待时间为20s,当交换机RP或BP端口down掉后,交换机接收不到根桥发送过来的BPDU后,等待MAXage中的时间(20S,华为使用18S),在20S后重新收敛并重新选举出端口状态,再次经历二倍的Forward Delay
(2*15S)到达Forward状态
注:在STP模式中,当RP端口出现故障,表示去往根桥的路径失效,则根桥的BPDU也会
立刻失效,依据根桥选举出来的算有端口状态全部失效
① AP交换机链路故障:
AP交换机上Forwarding链路故障,收敛时间为30S
a) LSW3检测到自己的RP端口G0/0/2端口出现故障
b) 由于RP端口Down掉,所以认为足有BPDU无效,交换机立刻将自己所有的端口变为DP端口并发送BPDU
c) LSW2的G0/0/3端口收到了新的BPDU,与原始根桥的BPDU进行比较,发现原始为最优,由于为DP端口,收到了次的BPDU,认为对端设备存在问题,会立刻发送此BPDU给LSW3
d) LSW3收到BPDU后,发现优于自身,于是将g/0/3端口变为RP,并进入2倍的Forward Delay
e) LSW3从上游发送TCN置位的BPDU送往上游路由器LSW2,LSW2发送TCN置位的BPDU送往上有路由器Root,上游Root交换机LSW1收到TCN置位的BPDU后,发送TC置位的BPDU给下游交换机,下游交换机收到后缩减MAC地址表生存时间
② DP交换机链路故障:
原始收敛,如Cisco(50S):
a) LSW4的RP端口G0/0/1端口故障
b) LSW4的RP端口Down掉后,会立刻认为原BPDU失效,认为自己为根桥,发送BPDU给LSW5
c) LSW5收到BPDU后,由于为AP端口,不会回复BPDU,而是等待MAX Age时间超时,G0/0/3端口中的BPDU老化消除,此端口重新进行选举,从RP留下来的BPDU从G0/0/3端口送入LSW4
d) 最终,LSW5的G0/0/3端口变为DP,LSW4的G0/0/3端口变为RP,进入两倍的Forward Delay变为Forwarding状态
华为收敛(30S):
a) LSW4的RP端口G0/0/1端口故障
b) LSW4的RP端口Down掉后,会立刻认为原BPDU失效,认为自己为根桥,发送BPDU给LSW5
c) LSW5收到BPDU后,会立刻从G0/0/3端口发出BPDU并重新进行端口的选举
d) 最终,LSW5的G0/0/3端口变为DP,LSW4的G0/0/3端口变为RP,进入两倍的Forward Delay变为Forwarding状态
③ 非直连链路故障:
原始收敛,如Cisco(50S):
a) HUB1的E0/0/1端口出现问题,但是LSW2并不能知道连接HUB的G0/0/1接收不到LSW1的BPDU,等待Max Age。
b) Max Age过后,LSW2认为去往根桥的根端口G0/0/1链路出现问题,于是认为自己是根桥,发送BPDU重新收敛
c) LSW3的阻塞端口G0/0/3由于长时间收不到SWB发送过来的BPDU,Max age超时后,也会进入重新收敛状态,收到LSW2的BPDU后,将比较原先的LSW1的BPDU,发现LSW1的BPDU更优,发送LSW1的BPDU给LSW2,LSW2收到后重新收敛,经历两倍的转发延迟进入转发状态。
d) LSW2发送TCN置位的BPDU给上游路由器LSW3,LSW3收到TCN置位的BPDU后,继续往上游发送TCN置位的BPDU给根桥LSW1,LSW1发送TC置位的BPDU给所有的下游交换机,最终交换机缩短MAC地址表的生存时间。
华为收敛(48S):
a) HUB1的E0/0/1端口出现问题,但是LSW2并不能知道连接HUB的G0/0/1接收不到LSW1的BPDU,等待Max Age。
注:此处的Max Age时间为Hello时间*3*timer Factor(因子自定义,huawei为3)=18S
b) Max Age18S过后,LSW2认为去往根桥的根端口G0/0/1链路出现问题,于是认为自己是根桥,发送BPDU重新收敛
c) LSW3的阻塞端口G0/0/3由于长时间收不到SWB发送过来的BPDU,Max age超时后,也会进入重新收敛状态,收到LSW2的BPDU后,将比较原先的LSW1的BPDU,发现LSW1的BPDU更优,发送LSW1的BPDU给LSW2,LSW2收到后重新收敛,经历两倍的转发延迟进入转发状态。
d) LSW2发送TCN置位的BPDU给上游路由器LSW3,LSW3收到TCN置位的BPDU后,继续往上游发送TCN置位的BPDU给根桥LSW1,LSW1发送TC置位的BPDU给所有的下游交换机,最终交换机缩短MAC地址表的生存时间。
6. STP生成树的选举:
交换机标识由两部分组成:两字节长度的交换机优先级和六字节长度的MAC地址,交换机优先级取值范围为0~65535,默认值为32768。
(1)选举五原则:
① Root ID:
Root ID用于选举环路网络中唯一一台根桥,Root ID数值越小越优先
Root ID=16bit的优先级值+48bit的 MAC地址
注:默认优先级为32768
② Cost:
开销值,表示从根桥到本设备端口的总开销为多少
根据特定数值累加,越小越优先:
1-------------10Gb/S以上
2--------------10Gb/S
20------------1Gb/S
200-----------100Mb/S
2000----------10Mb/S
注:上述为huawei定义端口开销,默认为802.1T标准
使用命令[Huawei]stp pathcost-standard legacy修改
使用命令[Huawei-GigabitEthernet0/0/1]stp cost 1000修改开销值
③ Bridge ID:
Bride ID指转发此BPDU的Bride ID,数值越小越优先
Bridge ID=转发者优先级+转发者MAC地址
④ Sender port ID:
用于特定环境下打破选举平衡,本端所连接对端端口的1Byte的优先级(默认128)+1Byte
的端口标识(对端ID越小越优先)
使用命令[Huawei-GigabitEthernet0/0/1]stp port priority 240修改接口优先级
⑤ Self port ID:
用于打破本地选举平衡,本端的接口ID越小越优先,本端端口的1Byte的优先级(默认128)
+1Byte的端口标识(本端ID越小越优先)
使用命令[Huawei-GigabitEthernet0/0/1]stp port priority 240修改接口优先级
(2)选举过程:
① 选举根桥:
一个广播型网络中只有一个根桥
② 选举根端口:
一个交换机的所有端口中只有一个根端口
③ 选举指定端口:
一段链路中只有一个指定端口
④ 选举预备端口:
剩下的全都为预备端口,不转发数据流量,只接收BPDU
(3)选举程详解:
① 三台交换机进行选举:
a) 选举根桥:
一个域中只有一个根桥,交换机开启STP模式,所有端口都会接受和发送BPDU,根据选举三原则中的第一原则(优先级(默认32768,越小越优先),MAC地址(越小越优先))选举根桥,最终MAC地址小的LSW1选举为根桥,LSW1发送BPDU进行后续的选举。
b) 选举根端口:
每个交换机上只有一个根端口(根桥上无根端口),根桥LSW1从接口G0/0/1和G0/0/2发送BPDU,BPDU分别从端口发送,最终LSW2和LSW3都会从两个端口收到来自根桥发来的BPDU
LSW2选举根端口:
LSW2从G0/0/1和G0/0/2分别收到来自根桥的BPDU,用来选举跟端口,此时比较选举三原则:
(1)Root –ID:由于收到的BPDU都是由根桥发出来的,所有Root-ID都一致
(2) cost值:LSW2从G0/0/1收到的BPDU经过自己的G0/0/1,所以开销值为200,LSW2从G00/0/3收到的BPDU经过了LSW3的中转,开销值为200+200=400,所以从G0/0/1来的BPDU的cost值小,所以LSW2的G0/0/1选举为根端口。
SW3选举根端口:
LSW3的根端口选举原则和LSW2同理。
c) 选举指定端口:
每段链路上只有一个指定端口,根桥的所有端口都是指定端口。
链路一选举指定端口:
LSW2从G0/0/1和G0/0/2分别收到来自根桥的BPDU,用来选举根端口,此时比较选举三原则:
每段链路上只有一个指定端口
(1).Root –ID(由于收到的BPDU都是由根桥发出来的,所有Root-ID都一致)
(2). cost值:(由于根桥LSW1从自己的端口发出BPDU,所以LSW1的端口开销值为0;发送到LSW2,所以LSW2的开销值为200),所以LSW1的G0/0/1选举为指定端口。
链路二选举指定端口:
链路三选举指定端口:
LSW2的G0/0/3和LSW3的G0/0/3分别从对端收到来自LSW1的BPDU,根据三原则进行
比较:
① Root ID:都是由根桥发出,所以相同
② cost:都是200,所以相同
③ Brige ID:LSW2的mac地址小于LSW3的mac地址,所以此时选举LSW2的GE0/0/3端口为指定端口
d) 选举阻塞端口:
此时剩下的LS3的G0/0/3为阻塞端口
② 两台交换机进行STP选举:
a) 选举LSW为根桥
b) LSW2选举根端口:
Root ID:(都是LSW1,)
cost:(开销值一致)
Bridge ID:(都是LSW2)
port ID: 对端(都是LSW1)优先级一致,LSW1的g0/0/1小于g0/0/24,所以对应对端lSW2的G0/0/24选为根端口
c) 选举指定端口:LSW1的G0/0/1和G0/0/24为指定端口
d) 选举阻塞顿口:阻塞端口为LSw2的G0/0/1
③ 两台交换机连接HUB进行STP选举:
①选举LSW2为根桥
②选举根端口:
- Root id一致
- Cost一致
- Bridge id一致
- 对端port id一致
- 本端g0/0/1小于g0/0/24,选举g0/0/1为根端口
③选举LSW2的G0/0/2为指定端口
④阻塞LSW1的G0/0/24端口
④ 交换机自环选举:
- 选举LSW5为根桥
- 选举LSW4的G0/0/1为根端口
- 选举LSW5的G0/0/1为指定端口
选举LSW4的指定端口:
- Root Id一致
- Cost一致
- Bridge Id一致
- 无对端交换机port id
- 本端G0/0/2小于G0/0/24,所以选举G0/0/2为指定端口
- LSW4的G0/0/24为阻塞端口
⑤ 四台交换机进行STP选举:
O为虚拟节点
7. 802.1D STP缺点:
① 没有对端口状态和端口角色进行细致区分,(huawei已经实现)
② 算法被动,收敛速度过慢
③ 极不适应拓扑频繁变化的网络
三. 802.1W快速生成树RSTP:
Rapid Spanning Tree Protocol,快速生成树,STP协议虽然能够解决环路问题,但是收敛速度过慢,影响了用户通信质量。如果STP网络的拓扑结构频繁变化,网络也会频繁失去连通性,从而导致用户通信频繁中断,快速生成树协议(rapid spanning Tree Protocol ):802.1w由802.1d发展而成,基于P/A机制,这种协议在网络结构发生变化时,能更快的收敛网络。
1. RSTP-BPDU:
(1) Configuration BPDU:
与传统的BPDU configuration报文中除Flages外,其余BPDU内容相同,传统STP的BPDU中的Flage位只有TCA和TC两位,RSTP的BPDU在此基础上增加了多位。
RSTP模式中,非根桥设备无论是否接收到根桥发送的配置BPDU,都会按照Hello Timer规定的时间间隔发送配置BPDU。
① Protocol ID:协议ID,该值总为0
② Protocol Version ID:协议版本ID,STP的版本(802.1D为0;802.1W为2;802.1S为3)
③ BPDU Type:BPDU类型,分为两种,配置BPDU为0;TCN BPDU为80
④ FLags:分七个置位符:
- TCA:Topology Change Acknowledgment,拓扑变更确认信息
- Agreement:PA机制中的Agreement置位符
- Forwarding:端口状态“转发”
- Learning:端口状态“学习”
状态 |
Forwarding |
Learning |
Discarding |
0 |
0 |
Leaning |
0 |
1 |
Forwarding |
1 |
1 |
- Port Role:端口角色,2bit,可以表示四种角色:
组合数值 |
含义 |
00 |
Unknown |
01 |
Alternate Port/Backup Port |
10 |
Root Port |
11 |
Designated Port |
- Proposal:PA机制中的proposal置位符
- TC:Topology Change,拓扑变更
⑤ Root ID:根桥的ID,由三部分组成:
- 4bit优先级值
- 12bit扩展系统ID(实例ID,默认为0)
- 8Byte系统ID(MAC地址)
⑥ RPC:Root Path Cost,开销值
⑦ Bridge ID:转发者的ID,每经过一个交换机,Bridge ID会变为此交换机的ID,由三部分
组成:
- 4bit优先级值
- 12bit扩展系统ID(实例ID,默认为0)
- 8Byte系统ID(MAC地址)
⑧ Port ID:端口ID,每经过一个交换机的端口,Port ID变为此端口的ID
⑨ Message Age:配置BPDU在网络中传播的生存期,默认每经过一跳,Message Age+1
⑩ Max Age: Message Age最大老化时间,默认为20S
⑪ Hello time:探测时间,默认为2S
⑫ forward Delay:转发延迟,默认为15S
(2) TC BPDU:
传统STP中,只有根桥才会发送TC置位的configuration BPDU通告下游路由器用来缩短Mac地址表的生存时间。RSTP中,不存在TCN BPDU,一旦交换机发现自己的端口和对端交换机端口链路出现问题后,会立刻向Designated Port和Root Port发送将TC置位的configuration BPDU通告其余交换机,其余交换机收到TC置位的BPDU后,会立刻删除除接收到TC BPDU的接口和边缘端口以外的端口的mac表清空,整个过程持续4S。
注:由于从某个端口收到TC置位的BPDU,说明该链路有效,所以会保留收到configuration BPDU端口对应的MAC地址映射和配置边缘的端口的MAC地址映射。
2. RSTP端口角色:
相对于传统STP三种端口角色,RSTP重新定义了五种端口角色,分别为:
① root port:根端口RP
② designate port:指定端口BP
③ alternate port:替代端口AP(或bolcking port阻塞端口)
④ backup port:备份端口BP
⑤ Edge Port:边缘端口
注:如何区分预备端口AP和备份端口BP:
每条链路上只有一个指定端口,所以在一条链路上拥有DP端口的交换机为指定交换机
- 如果从另外一条端口收到的BPDU中的Bridge ID是自身的Bridge ID,则表明当前的BPDU是从自身设备发出去的,则收到此BPDU的接口为DP
- 如果从另外一个端口收到的BPDU中的Bridge ID不是自身的Bridge ID,则为AP
(1)Root Port:
根端口,离根桥最近的非根交换机端口,每台非根交换机只有一个根端口,根交换机没有根端口。根端口接收BPDU,并转发数据帧。
每个STP网络中,都会存在一个根桥,其他交换机为非根交换机,根桥或者跟交换机位于整个逻辑树的根部,时STP网络的逻辑中心,非根桥时根桥的下游设备,根端口时非根交换机去往根桥路径的最优端口,在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
注:RP端口是接收到最优BPDU的端口,后续的端口选举都依照这份BPDU进行选举,如果RP端口Down掉,则所有选举出来的端口都将无效,交换机会将所有的端口变为Listening状态,重新选举根端口并生成新的BPDU进行重新的选举。
(2)Designated Port:
指定端口,用于数据和BPDU的转发,指定端口接收转发BPDU,并转发数据帧。
指点端口时交换机想所连接链路转发配置BPDU的端口,每个网段有且只能由一个指定端口。一般情况下,根桥的每个端口总是指定端口。
(3)Alternate Port:
预备端口,在RSTP环境中,AP作用作为同一台交换机上的RP的替代端口,当交换机发现自己的某个RP端口挂掉后,会立刻将AP端口转为RP。
(4)Backup Port:
一台交换机上存在指定端口,则为指定交换机,和指定端口存在同一链路上,则此接口为Backup Port,否则为AP
备份端口,在RSTP环境中,BP作用作为DP的替代端口(使用双线路连接HUB做冗余),当交换机发现自己的某个DP端口挂掉后,在经历3倍的Hello时间*time factor(huawei为18S)后将BP端口变为DP端口并直接进入Forwarding状态
(5)Edge Port:
边缘端口,用于连接PC的端口,边缘端口不参与STP端口的选举,直接进入Forwarding状态(传统STP也可以配置此端口,或直接在接口下使用命令STP disable关闭端口STP功能)。
配置边缘端口的好处在于端口可以直接进入Forwarding状态,并且当边缘端口Down掉,不会进行P/A机制的重新收敛,不会发送TC置位的BPDU,减轻网络的负担。
配置边缘端口后,此端口还是会继续发送BPDU给下游设备,目的为了防止环路,如果用户端存在环路,将此报文重新引回到此交换机,此时边缘端口会变为非边缘端口并进行选举。
在实际中,当企业存在大量的用户,上班时间同时开机,当交换机的一个端口由Down变为Up,会触发交换机发送TC置位的BPDU通告其他交换机刷新MAC表项,所以此时使用Edge Port可以避免这种现象。
注:Huawei设备端口使能生成树协议后,会默认启用边缘端口自动探测功能,当端口在(2 × Hello Timer + 1)秒的时间内收不到BPDU报文,自动将端口设置为边缘端口,否则设置为非边缘端口。
3. RSTP端口状态:
相对于传统的STP收敛的五种状态,RSTP简化为三种状态。
分别为:
① Discarding:丢弃状态
② Learning:学习状态
③ Forwarding:转发状态
(1)Discarding:
丢弃状态,此状态下端口对接收到的数据做丢弃处理,端口不转发数据帧,不学习MAC地址表。收敛后的AP和BP处于此状态。
(2)Learning:
学习状态,此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU。
(3)Forwarding:
转发状态,此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU。
4. RSTP端口选举过程:
① 基于P/A机制分段式收敛,非根桥设备无论是否收到根桥发送的配置BPDU,都会按照Hello Timer(2S)规定的时间间隔发送配置BPDU
② STP中非根桥只有收到上有设备发送过来的配置BPDU,才出发发送配置BPDU
(1)RSTP协商前提:
RSTP使用P/A机制进行协商,P/A机制协商成功需要点到点链路
Huawei设备在初次发送Proposal置位的BPDU进行协商时,使用Agreement置位用来表示当前链路为P2P全双工模式,可以进行P/A机制的协商,如果交换机收到一份Proposal置位但是Agreement没有置位的BPDU,不会进行P/A机制的协商。
① 点到点全双工链路:
点到点链路为全双工链路,由于P/A协商为两端进行交互,如果中间为共享型链路模式,三台交换机进行互联,则造成P/A机制无法完全同步,导致协商失败。
① SWA、SWB、SWC中间为共享式网络
② SWA发送Proposal置位的BPDU,如果SWC回复了Agreement置位的BPDU,此时SWA会立刻经端口变为转发状态,如,而SWA的DP又提前进入forwarding状态会造成环路
所以为了防止在此类网络结构中P/A协商机制导致的临时环路,所以当接入Hub时,链路
出现半双工,所以此时不会进行P/A机制的协商,防止临时的环路
接口类型可以使用以下命令修改:
[Huawei-GigabitEthernet0/0/1]STP point-to-point force-true---强制改为P2P类型
② 都为DP、discarding状态:
当端口初始化UP的时候,端口角色为DP,并且为Discarding状态,才会发送Proposal置位的BPDU进行P/A机制的协商
(2)初次收敛:
① 初始状态:
每一台交换机启动RSTP后,都认为自己是“根桥”:
a) 所有端口都为指定端口
b) 处于Discarding状态,防止临时的环路
② 置位Proposal:
交换机互相发送Proposal置位的RSTP BPDU,SWA收到SWB(BID优先级低)的RSTP BPDU,会忽略,huawei设备也会将Agreement置位,用来表示当前的网络类型为P2P全双工模式。
③ 同步:
SWB收到了更优的RSTP BPDU,于是停止发送RSTP BPDU,并开始执行同步,除边缘端口外的所有下游指定端口为Discarding。
④ Agreement置位:
SWB阻塞所有非边缘端口之后,将RP端口变为Forwarding状态,将SWA(Root)的报文中的Bridge ID变为自己的Bridge ID,并将Agreement置位,发送给SWA。
注:回送的这份Agreement置位的BPDU内容为SWA发送过来的BPDU,BPDU中的Bridge ID变为SWB,Port ID变为发往SWA的接口
⑤ 根桥迁移Forwarding状态:
SWA收到Agreement置位的RSTP BPDU后,指定端口立即从Discarding迁移到Forwarding状态
⑥ P/A机制协商失败:
当进行到最后一段链路时,会将低Root ID的交换机端口置为AP端口,此时对端端口发送Proposal置位的Configuration BPDU,但是由于本端是AP端口,所以不会回复Agreement置位的Configuration BPDU,所以此时对端认为它的对端不支持RSTP,所以采用传统的STP收敛方式,经历2倍Forward Delay,进入Forwarding状态。
注:由于AP链路并不转发数据,所以即使要30S才会收敛,也不会影响实际的数据转发。
(3)拓扑变化重新收敛:
① 如果RP端口失效,AP端口立刻成为RP端口
② 如果DP端口失效,BP立刻进入BP端口
③ 如果收到一份次的BPDU,立刻进行端口的重新选举
④ 如果收不到BPDU,等待时间为Hello时间*3*timer Factor(因子自定义,huawei为3)=18S立刻认为为根桥,重新进行收敛
① AP交换机RP端口失效:
非根交换机的根端口down掉后,会立刻将AP端口变为RP端口进入转发状态,并发送TC置位的BPDU通告邻居进行MAC地址的删除
② DP交换机RP端口失效:
a) LSW4的g0/0/1端口失效后,LSW4立刻认为自己为Root,将所有的端口变为discarding状态,并发送proposal置位的BPDU
b) LSW5收到proposal置位的BPDU后,与自身认为最有的BPDU进行比较,发现自身的(LSW3)更优,会将端口变为DP,并变为Discarding状态,发送最有BPDU给LSW4,并将Proposal置位
c) LSW4收到Proposal置位的BPDU后,发现优于自身的BPDU,同步所有端口,并将G0/0/3变为RP端口,并发送Agreement置位的BPDU给LSW5,LSW5收到后,将G0/0/3的状态变为Forwarding状态
MAC地址表删除:
a) 拓扑发生变化后,交换机会立刻从所有的指定端口发送TC置位的BPDU报文
b) 当上游交换机收到TC置位的BPDU后,只保留接收到TC置位端口的mac地址映射和配置边缘端口的MAC地址映射,删除其余的MAC地址表
③ DP端口失效:
a) 18S收敛:
根交换机的DP端口失效后,在经历3倍Hello时间*time factor(华为为18S)后将BP端口变为DP端口进入转发状态,并发送TC置位的BPDU通告邻居进行MAC地址的删除
b) 48S收敛:
LSW2的G0/0/2链路失效后,在经历3倍Hello时间*time factor(华为为18S)后将BP端口变为DP,并且发送Proposal置位的BPDU进行P/A机制的协商,由于LSW3的G0/0/1接口为AP,不会回复BPDU,所以导致LSW2的P/A协商失败,进入传统的收敛装填,30S后进入Forwarding装填,所以为18+30=48S
④ 新根桥出现:
注1:拓扑变更的原则为:
a) 原先为Forwarding状态的端口变为Forwarding状态的端口,立刻转变为Forwarding
b) 原先为Discarding状态的端口变为Forwarding状态的端口,进入转发延迟或等到对端发送Alternate置位的Configuration BPDU进行确认后进入Forwarding状态
注2:AP端口变为RP或DP只有收到新的AP交换机发送的Proposal置位的BPDU后才会进入Forwarding状态
如果网络中的AP端口变为DP或AP进入forwarding状态(最终状态),如果网络中新选举出的AP并没有达到收敛,此时如果老的AP直接进入转发状态,会造成环路,所以当AP变为DP或BP时,他会停留在Discarding状态,并一直等到新的AP交换机发送的Proposal置位的BPDU后才会进入Forwarding状态
a) 网络稳定的情况下,SW5的优先级更高,成为了新的根桥
b) SW5的G0/0/2由RP变为DP,依旧为Forwarding状态
c) SWD的G0/0/3由AP端口变为DP端口,从Discarding状态变为Forwarding(最终状态),为了防止临时环路,依旧停留在Discarding,并从G0/0/3端口发送Proposal置位的Configuration BPDU进行P/A协商
d) SW4收到Proposal置位的BPDU后,发现更优的Configuration BPDU,于是执行同步过程,除G0/0/3端口都变为Discarding状态,将E0/1由原来的DP变为RP,并依旧保持Forwarding状态
e) 此时SW4和旧根桥SW3进行P/A机制的协商,SW4发送Proposal置位的Configuration BPDU,SWA发现SWC发送的Configuration BPDU(SWD的BPDU)优于自身,执行同步过程,发送Agreement置位的BPDU进行回复,SWC收到后,将E0/2变为Forwarding状态,并继续向上游发送Agreement置位的BPDU,此时SWD会将E0/1变为Forwarding状态
四. 802.1S多实例生成树MSTP:
RSTP和STP都存在了一个缺陷,即由于局域网内所有的VLAN共享一棵生成树,链路被阻塞后将不承载任何流量,造成带宽浪费,因此无法在VLAN间实现数据流量的负载均衡,还有可能造成部分VLAN的报文无法转发。MSTP(Multiple Spanning Tree Protocol)基于实例进行负载分担,解决了RSTP链路带宽浪费的问题。
1. Region-configuration:
MSTP为区域化,每一个域为一个region-configuration。
一个区域的特征包含以下几个方面(全部都要相同)
① region name
② reivision-level
③ Instance
域名、配置修订号、和实例映射会生成一串哈希值,每台交换机都会交换哈希值,哈希值相同的交换机为一个region-configuration,同一个region-configuration在计算生成树时为一个整体。
2. Instance:
实例,MSTP为了实现负载分担的效果,将VLAN放入Instance中,端口的状态基于实例的不同而不同。
实例内可以包含多个VLAN。通过将多个VLAN映射到同一个实例内,可以节省通信开销和资源占用率。MSTP各个实例拓扑的生成树计算相互独立,通过这些实例可以实现负载均衡。
注:Instance0为默认实例,所有的VLAN默认存在于Instance0中。
MSTP配置:
LSW1:
[Huawei]STP mode mSTP
[Huawei]STP region-configuration
[Huawei-mst-region]region-name Huawei
[Huawei-mst-region]revision-level 1
[Huawei-mst-region]instance 1 vlan 10 100
[Huawei-mst-region]instance 2 vlan 20 200
[Huawei-mst-region]active region-configuration
[Huawei]STP instance 1 root primary
[Huawei]STP instance 2 root secondary
3. MSTP-BPDU:
(1) Configuration BPDU:
Configuration BPDU中在RSTP的基础上增加了MST Extension协议字段,用于支持对多实例和多配置域的支持,一份Configuration BPDU中包含本交换机所有的Instance映射,当在一个配置与内某台交换机称为某个或多个实例的Root,此时会周期的发送Configuration BPDU,由于一份报文,实际上Root发送的Configuration BPDU包含此交换机所有的实例映射关系
① Protocol ID:协议ID,该值总为0
② Protocol Version ID:协议版本ID,STP的版本(802.1D为0;802.1W为2;802.1S为3)
③ BPDU Type:BPDU类型,分为两种,配置BPDU为0;TCN BPDU为80
④ FLags:分七个置位符:
- TCA:Topology Change Acknowledgment,拓扑变更确认信息
- Agreement:PA机制中的Agreement置位符
- Forwarding:端口状态“转发”
- Learning:端口状态“学习”
状态 |
Forwarding |
Learning |
Discarding |
0 |
0 |
Leaning |
0 |
1 |
Forwarding |
1 |
1 |
- Port Role:端口角色,2bit,可以表示四种角色:
组合数值 |
含义 |
00 |
Unknown |
01 |
Alternate Port/Backup Port |
10 |
Root Port |
11 |
Designated Port |
- Proposal:PA机制中的proposal置位符
- TC:Topology Change,拓扑变更
⑤ Root Identifier:CIST的总根交换机ID
⑥ RPC:Root Path Cost,到CIST Root的开销值,只计算配置域的外部链路开销
⑦ Bridge ID:在MSTP中,此字段用来CIST的域根交换机ID,即IST Master的ID。 如果总
根在这个域内,那么域根交换机ID就是总根交换机ID
⑧ Port ID:端口ID,每经过一个交换机的端口,Port ID变为此端口的ID
⑨ Message Age:配置BPDU在网络中传播的生存期,默认每经过一跳,Message Age+1
⑩ Max Age: Message Age最大老化时间,默认为20S
⑪ Hello time:探测时间,默认为2S
⑫ forward Delay:转发延迟,默认为15S
⑬ Version 1 Length:Version1 BPDU的长度,值固定为0
⑭ Version 3 Length:Version3 BPDU的长度
⑮ MST Configuration Identifier:MST配置标识,表示MST域的标签信息,包含4个字段:
- Configuration Identifier Format Selector:固定为0
- Configuration Name:“域名”,32字节长字符串
- Revision Level:2字节非负整数
- Configuration Digest:利用HMAC-MD5算法将域中VLAN和实例的映射关系加密成
16字节的摘要。只有MST Configuration Identifier中的四个字段完全相同的,并且互联的交换机,才属于同一个域
⑯ CIST Internal Root Path Cost:CIST内部路径开销指从本端口到IST Master交换机的累计路
径开销。CIST内部路径开销根据链路带宽计算
CIST Bridge Identifier:CIST本交换机ID
CIST Remaining Hops:BPDU报文在CIST中的剩余跳数
MSTI Configuration Messages:MSTI配置信息。每个MSTI的配置信息占16 bytes
- MSTI Flags:MSTI标志
- MSTI Regional Root Identifier:MSTI域根交换机ID
- MSTI Internal Root Path Cost:MSTI内部路径开销指从本端口到MSTI域根交换机的
累计路径开销。MSTI内部路径开销根据链路带宽计算
- MSTI Bridge Priority:本交换机在MSTI中的指定交换机的优先级
- MSTI Port Priority:本交换机在MSTI中的指定端口的优先级
- MSTI Remaining Hops:BPDU报文在MSTI中的剩余跳数
(2) TC BPDU:
传统STP中,只有根桥才会发送TC置位的configuration BPDU通告下游路由器用来缩短Mac地址表的生存时间。和RSTP一样,MSTP不存在TCN BPDU,一旦交换机发现自己的端口和对端交换机端口链路出现问题后,除了使用PA机制更改端口外,立刻向RP端口和DP端口发送将TC置位的configuration BPDU通告其余交换机,其余交换机收到TC置位的BPDU后,会立刻删除自己的mac表
注:由于从某个端口收到TC置位的BPDU,说明该端口为Forwarding 状态,所以会保留收到configuration BPDU端口对应的MAC地址映射和配置边缘的端口的MAC地址映射。
4. Multi Region-configuration:
当Region-configuration的哈希不同时,此时两台路由器为不同的Region-configuration,Multi Region-configuration存在无法实现负载分担,次优路径的问题
(1)CIST Root:
① IST:
实例0,每个Region-configuration都存在实例0
② CST:
相同的配置域之间互联称为CST
③ CIST:
多个Region-configuration相互连接,为Multi Region-configuration,称为CIST
④ CIST Root:
Multi Region-configuration互联,由于都包含实例0,Multi Region-configuration中实例0中最
小的Root id为CIST Root
(2)Region-configuration Root:
每个Region-configuration都有一个Region-configuration Root,Region-configuration Root为每
个Region-configuration内离CIST Root的cost最小的边缘交换机,CIST Root也是本区域的
Region-configuration Root,Region-configuration Root的作用为Region-configuration内的交
换机访问其他Region-configuration必经的路径交换机
边缘交换机选举规则:
① 到CIST Root区域间干线开销最小的边缘交换机
② Root ID最小的边缘路由器
(3)Mast Port:
当选举出Region-configuration Root后,此时访问Multi Region-configuration时,此Region-configuration Root位本区域的穿越设备,如果Region-configuration Root存在多条链路同时去往CIST Root,此时会选举出一条RP端口作为去往CIST Root最优的端口,这个RP端口对本配置域的其他实例称为Mast Port
Mast Port选举规则:
① CIST根桥标识符
② CIST外部根路径开销
③ CIST域根标识符
④ CIST内部根路径开销
⑤ CIST指定桥标识符
⑥ CIST指定端口标识符
⑦ CIST接收端口标识符
多区域只使用Instance 0进行选举CIST Root,所以Multi Region-configuration为单实例的STP,所以在实际部署中使用单个Region-configuration,负载分担只在同一个Region-configuration内。
(3)Multi Region-configuration选路:
① 各个配置Region-configuration中基于实例的Bridge ID选举基于Instance的Root:
a) 在Region-configuration 1中LSW3为Instance 1的Root,LSW4为Instance 0的Root
b) 在Region-configuration 2中LSW1为Instance 10的Root,LSW6为Instance 0的Root
② 选择CIST Root,各台交换机根据BPDU中的Root ID字段选举出CIST Root,最后LSW4为CIST Root
③ 每个Region configuration中根据Region-configuration区域间的链路开销、Root ID选择Region-configuration Root:
a) Region-configuration 1中LSW4为Region-configuration Root
b) Region-configuration 2中LSW5为Region-configuration Root
④ Region-configuration 2中的Region-configuration Root LSW5存在多条等价路径去往Region-configuration 1,根据选路规则选出最好的端口G0/0/1作为Mast Port
⑤ PC2访问PC1,发送数据包给LSW6,LSW6从G0/0/1送给LSW1,LSW1将数据包送给Region-configuration Root LSW5,LSW5的G0/0/1端口为Master端口,LSW5将数据包从G0/0/1端口送到Region-configuration 1中,LSW4接收后传递给LSW3,LSW3传递给CIST Root LSW2,LSW2传递给PC1
五. STP兼容模式:
华为交换机默认STP和RSTP默认兼容模式,当一台运行RSTP的交换机在连续收到两次(4S)传统STP的configuration BPDU后,会自动迁移到传统STP模式进行兼容,但此时会丧失RSTP的优势,当传统STP撤离时,会自动迁移回RSTP。
六. STP保护机制:
STP保护机制分为:
① root protection
② BPDU protection
③ loop-protection
④ TC-protection
1. Root protection:
根保护,由于维护人员的错误配置或网络中的恶意攻击,网络中的合法交换机有可能会收到优先级更高的BPDU,使的原来合法根交换机失去根交换机的地位,从而引起网络拓扑的错误变动。这种不合法的拓扑变化,可能会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。对于启用了根保护功能的指定端口,其端口角色不能成为根端口。一段启用了根保护功能的指定端口收到优先级更高的BPDU时,端口将将进入Discarding状态,不在转发报文。在经过一段时间(约为2倍Forward Delay)后,如果端口一直没有在收到优先级更高的BPDU,端口会自动恢复到正常的Forwarding状态。
在所有指定端口上敲命令:STP root protection
2. BPDU protection:
BPDU保护,当边缘端口收到BPDU之后,设备会自动将边缘端口设置为非边缘端口,并重新进行生成树的计算,从而引起网络动荡。配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会被立即关闭,并通知网管系统,被关闭的边缘端口通过管理员手动恢复,也可以使用命令error-down auto-recovery cause BPDU-protection interval 30配置30S恢复。
在全局模式下敲命令:STP BPDU-protection
3. Loop-protection:
环路防护,在运行STP的网络中,根端口和其他阻塞端口的状态是依靠上游交换设备不断发来的BPDU进行维持的。当由于链路阻塞或者单向链路故障导致这些端口收不到来自上游交换设备的BPDU时,交换设备就会重新选举根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生的环路。在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游的BPDU,则会向网管发送通知消息,如果是根端口则进入Discarding状态,阻塞端口则会一致保持在阻塞状态,并且不会称为DP端口,不转发报文,从而不会再网络中形成环路。直到根端口或Alternate端口收到BPDU后,端口状态才恢复到Forwarding状态。
在RP端口或AP接口下使用命令: STP loop-protection开启环路保护。
在光纤网络中,光纤分为两个接口,一接一收,当SW3可以发送BPDU给SW1,但是由于接收口down掉,收不到SW1的BPDU,此时SW3会认为链路出现故障,于是将原先阻塞状态的G0/0/2变为转发状态,造成一个单向的网络环路。
4. TC-protection:
交换设备在接收到TC BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC BPDU报文恶意攻击交换设备,交换设备会在短时间内收到很多TC BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定性带来很大的隐患。启用防TC-BPDU报文攻击功能后,可以配置交换设备在单位时间内处理TC BPDU报文的次数。如果在单位时间内,交换设备收到的TC BPDU报文数量大于配置的阀值,交换设备只会处理阀值指定的次数。对于其他超出阀值的TC BPDU报文,定时器到期后设备只会对其统一处理一次。
全局模式下使用命令:STP tc-protection开启防止TC-BPDU保护;
全局模式下使用命令:STP tc-protection threshold 2配置单位时间内(与RSTP Hello时间间隔一致),允许在收到TC-BPDU报文后立即进行地址表项删除操作的最大次数为两次。
5. BPDU-filter:
BPDU过滤,在接口或全局下使用命令stp bpdu-filter default,将不会发送也不会接口BPDU,
可以结合边缘端口一起使用