一、STP
1、STP基本概念
(1)根桥:桥ID最小的网桥
(2)根端口(RP,root port):去往根桥路径开销最小的端口,只有根桥没有根端口
(3)指定端口(DP,designated port):每个网段选择到根桥最近的网桥作为指定桥,该网桥到这个网段的端口为指定端口
(4)阻塞(block)端口:既不是根端口,也不是指定端口
(5)配置BPDU(bridge protocol data unit):传递根桥ID,累计根路径开销,发送设备BID,发送端口PID等参数;由根桥周期(hello time)发送,发送目的为组播MAC地址01-80-C2-00-00-00;老化时间Max Age
2、STP工作过程
(1)在整个网络中选取一个根桥。初始状态下,默认自己是根桥,都向外发送配置BPDU,网络中桥ID最小的成为根桥。
(2)在非根桥上选取根端口
(3)在每个网段上选取指定端口
(4)阻塞掉非根端口和非指定端口
选举四要素:
第一优先根桥ID:优先级+MAC地址,越小越优先,第二优先是到根桥开销,开销越小越优先,第三优先是发送者桥ID:优先级+MAC,也是越小越优先,最后优先的时候发送者的端口ID:端口优先级+端口号,小的优先。
3、STP拓扑计算—最优配置BPDU
(1)每个端口将收到的配置信息与自己的配置信息进行比较:如果收到的配置消息优先级较低,则将其直接丢弃,对自己的配置消息不进行任何处理;如果收到的配置消息优先级较高,则用该配置消息的内容将自己配置消息的内容替换掉
(2)设备将所有端口的配置消息进行比较:根桥ID较小的配置消息优先级高;根桥ID相同,则比较到根桥的路径开销,开销小的优先;若根路径开销也相同,则依次比较指定桥ID、指定端口ID、接口配置消息的端口ID,小的优先
(3)选出最优BPDU
4、STP端口状态—标准端口状态描述
标准交换设备端口状态,华为设备中,前三种状态统一显示为discarding
端口状态 |
发送/接收配置BPDU |
MAC地址学习 |
转发数据 |
作用说明 |
Disable |
否/否 |
否 |
否 |
端口状态为down |
Blocking |
否/是 |
否 |
否 |
阻塞端口的最终状态 |
Listening |
是/是 |
否 |
否 |
过度状态,选举根桥、确定端口角色 |
Learning |
是/是 |
是 |
否 |
过渡状态,构建MAC地址表 |
Forwarding |
是/是 |
是 |
是 |
只有根端口和指定端口才能进入Forwarding状态 |
5、STP的不足
(1)没有对端口状态和端口角色进行细致区分;
(2)算法被动,收敛速度过慢;STP从初始化状态到完全收敛只是需要30s
(3)极不适用拓扑频繁变化的网络;
二、RSTP
1、RSTP端口角色
(1)根端口
(2)指定端口
(3)Alternate端口(RP的预备端口),端口收到的BPDU是其他交换机端口发来的,也就是该端口所属交换机不是该端口所属网段的指定交换机
(4)Backup端口(DP的备份端口),端口收到的BPDU是自己发给自己的,即该端口所属交换机是该端口所属网段的指定交换机
2、RSTP对STP的BPDU改动
(1)充分利用STP中BPDU的Flag,明确端口角色
(2)Type字段为2
(3)Flag字段使用了之前的保留位,更改后的配置BPDU更名为RST BPDU
3、RSTP中配置BPDU的处理
(1)非根桥设备每隔Hello Timer从指定端口主动发送配置BPDU
(2)BPDU超时计时器为3个Hello Timer
(3)阻塞端口可以立即对收到的次级BPDU进行回应
4、RSTP的快速收敛
(1)边缘端口机制:交换机直接与用户相连的端口设置为边缘端口,可以直接进入转发状态,无需延迟,不会触发拓扑变更;边缘端口也会不停的向外发送BPDU,收到RSTP BPDU就失去边缘端口特性,变为普通端口。
(2)根端口快速切换机制:网桥根端口失效,且对端网桥指定端口依然为转发状态,则该网桥Alternate端口直接进入转发状态。
(3)Proposal/Agreement机制:使指定端口快速进入转发状态;工作模式为点对点的全双工模式,一端为DP,另一端为RP;包括Proposal和Agreement报文
边缘端口的特点和使用场景:
a、接入设备后直接进入forwarding状态,避免等待30秒转发延迟
b、边缘端口UP的时候不产生TC
c、生成树拓扑发生变化时,不会进入阻塞状态
d、收到TC不刷本接口的MAC表
e、不向边缘端口转发TC报文
f、收到BPDU报文,变为普通端口
5、RSTP拓扑改变
检测拓扑发生变化条件:一个非边缘端口迁移到Forwarding状态
对拓扑改变的处理:
(1)在每隔两个Hello time时间内向所有其他指定端口和根端口发送TC置位的RST BPDU
(2)清除接收到TC报文的端口之外所有的非边缘端口学习到的MAC地址
6、BPDU保护
在交换设备上,通常将直接与用户终端或文件服务器等非交换设备相连的端口配置为边缘端口。正常情况下,边缘端口不会收到RST BPDU,如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口收到RST BPDU时,从而引起网络震荡。交换设备上启用了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被Error-down,但边缘端口属性不变,同时通知网管系统。
全局模式下配置,也可以在边缘端口下配置
stp budp-protection
根保护:当维护人员错误配置,或者受到恶意攻击,合法根桥收到优先级更高的RST BPDU,使得根桥失去合法地位,从而引起网络拓扑结构的变动,会导致流量拥堵,对于启动root保护功能的指定端口,其端口角色只能保持为指定端口,当收到优先级更高的RST BPDU时,端口状态将进入Discarding状态,不再转发报文,在经过一段时间就,如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。Root 保护功能只能在指定端口上配置生效。
int g0/0/1
stp root-protection
环路保护:在运行RSTP协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游设备的RST BPDU维持。当由于链路拥堵或者单向链路故障导致这些端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。在根端口或alternate端口配置环路保护后,如果该端口长时间收不到来自上游设备的RST BPDU时,则向网管发出通知消息(此时根端口会进入Discarding状态,角色切换为指定端口;而Alternate端口则会一直保持在阻塞状态,角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥堵前或者单向链路故障前的角色和状体。
int g0/0/1
stp loop-protection
防TC-BPDU攻击:交换设备在收到TC BPDU后,会执行MAC地址表项和ARP表项的删除操作,如果有人恶意攻击,伪造TC BPDU报文攻击交换设备时,交换设备段时间内收到大量TC BPDU报文,频繁的进行删除操作,将给设备造成很大负担,给网络稳定带来很大隐患。启用防TC-BPDU报文攻击后,单位时间内,交换设备处理TC BPDU报文的此时可配置,如果单位时间内收到的TC BPDU数量高于配置值,则只会处理配置值指定的次数,这样可以避免频繁删除MAC地址和ARP表项。在全局模式下配置:
stp tc-protection
三、MSTP
1、RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但由于局域网内所有的VLAN共享一棵生成树,因此被阻塞后链路将不承载任何流量,无法在VLAN间实现数据流量的负载均衡,从而造成带宽浪费。
为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
2、单生成树的弊端
(1)部分VLAN路径不通
如图所示,网络中有SWA、SWB、SWC三台交换机。配置VLAN2通过两条上行链路,配置VLAN3只通过一条上行链路。
为了解决VLAN2的环路问题,需要运行生成树。在运行单个生成树的情况下,假设SWC与SWB相连的端口成为预备端口(Discarding状态),那么VLAN3的路径就会被断开,无法上行到SWB。
(2)无法实现流量分担
为了实现流量分担,需要配置两条上行链路为Trunk链路,允许通过所有VLAN;SWA和SWB之间的链路也配置为Trunk链路,允许通过所有VLAN。将VLAN2的三层接口配置在SWA上,将VLAN3的三层接口配置在SWB上。
我们希望VLAN2和VLAN3分别使用不同的链路上行到相应的三层接口,但是如果连接到SWB的端口成为预备端口(Alternate Port)并处于Discarding状态,则VLAN2和VLAN3的数据都只能通过一条上行链路上行到SWA,这样就不能实现流量分担。
(3)次优二层路径
如图所示,SWC与SWA和SWB相连的链路配置为Trunk链路,允许通过所有VLAN;SWA与SWB之间的链路也配置为Trunk链路,允许通过所有VLAN。
运行单个生成树之后,环路被断开,VLAN2和VLAN3都直接上行到SWA。
在SWA上配置VLAN2的三层接口,在SWB上配置VLAN3的三层接口,那么,VLAN3到达三层接口的路径就是次优的。
3、MSTP原理
多生成树协议即MSTP(Multiple Spanning Tree Protocol)。
MST域是多生成树域(Multiple Spanning Tree Region),由交换网络中的多台交换设备以及它们之间的网段所构成。同一个MST域的设备具有下列特点:
都启动了MSTP。
具有相同的域名。
具有相同的VLAN到生成树实例映射配置。
具有相同的MSTP修订级别配置。
一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI,每个MSTI都使用单独的RSTP算法,计算单独的生成树。
每个MSTI(MST Instance)都有一个标识(MSTID),MSTID是一个两字节的整数。VRP平台支持16个MST Instance,MSTID取值范围是0~15,默认所有VLAN映射到MST Instance 0。
VLAN映射表是MST域的属性,它描述了VLAN和MSTI之间的映射关系,MSTI可以与一个或多个VLAN对应,但一个VLAN只能与一个MSTI对应。
MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的各个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
5、MSTP配置实现
为实现分别属于不同VLAN的PC访问Internet的流量能够进行负载均衡,可采用MSTP来实现,VLAN1~10为一组,VLAN11~20为另一组。
配置思路:
配置MST域并创建多实例,实现流量的负载分担。
在MST域内,配置各实例的根桥与备份根桥。
修改各实例中某端口的路径开销值,实现将该端口阻塞。
与终端设备相连的端口配置成为边缘端口,加快收敛。
数据准备:
域名为RG1。
实例为MSTI1和MSTI2。
实例MSTI1的根桥为SWA,备份根桥为SWB;实例MSTI2的根桥为SWB,备份根桥为SWA。
实例MSTI1和实例MSTI2的阻塞口的路径开销值修改为200000。
VLAN号是1~20。
PC1所属VLAN为10,PC2所属VLAN为20。
SWA、SWB、SWC、SWD:
stp enable
stp mode mstp
stp region-configuration
region-name RG1
instance 1 vlan 1 to 10
instance 2 vlan 11 to 20
active region-configuration
SWA:
stp instance 1 root primary
stp instance 2 root secondary
SWC:
int g0/0/2
stp instance 2 cost 20000
int g0/0/2
stp edged-port enable
SWB:
stp instance 2 root primary
stp instance 1 root secondary
SWD:
int g0/0/2
stp instance 1 cost 20000
int g0/0/3
stp edged-port enable
配置验证:
[SWA]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
1 GigabitEthernet0/0/1 DESI FORWARDING NONE
1 GigabitEthernet0/0/2 DESI FORWARDING NONE
2 GigabitEthernet0/0/1 DESI FORWARDING NONE
2 GigabitEthernet0/0/2 ROOT FORWARDING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1 GigabitEthernet0/0/1 DESI FORWARDING NONE
1 GigabitEthernet0/0/2 ROOT FORWARDING NONE
2 GigabitEthernet0/0/1 DESI FORWARDING NONE
2 GigabitEthernet0/0/2 DESI FORWARDING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING NONE
1 GigabitEthernet0/0/1 ROOT FORWARDING NONE
1 GigabitEthernet0/0/2 DESI FORWARDING NONE
1 GigabitEthernet0/0/3 DESI FORWARDING NONE
2 GigabitEthernet0/0/1 ROOT FORWARDING NONE
2 GigabitEthernet0/0/2 ALTE DISCARDING NONE
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ALTE DISCARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING NONE
1 GigabitEthernet0/0/1 ROOT FORWARDING NONE
1 GigabitEthernet0/0/2 ALTE DISCARDING NONE
1 GigabitEthernet0/0/3 DESI FORWARDING NONE
2 GigabitEthernet0/0/1 ROOT FORWARDING NONE
2 GigabitEthernet0/0/2 DESI FORWARDING NONE