生成树的类型
华为 | 思科 |
---|---|
STP 802.1D | PVST+ |
RSTP 802.1w | Rapid PVST+ |
MSTP 802.1s | MSTP |
VBST 类似思科的PVST,每VLAN一棵树
[HUAWEI]stp mode ?
mstp Multiple Spanning Tree Protocol (MSTP) mode
rstp Rapid Spanning Tree Protocol (RSTP) mode
stp Spanning Tree Protocol (STP) mode
vbst Vlan-based Spanning Tree (VBST) mode
生成树的工作原理:
1、先选举出一个根桥(皇帝)root brideg,基于整个交换网络中选举,用来发送BPDU报文(圣旨)
2、在每一个非根交换机上,选举出一个根端口(太守),是用来接收BPDU报文(圣旨的)
3、在每一条链路上要选举出一个指定端口(钦差),是用来发送或转发BPDU报文
4、非根端口,非指定端口,都会成为预备端口(AP)庶民,会被阻塞
根桥的选举:
Bridge ID有三部分组成:优先级+扩展系统ID+MAC
先比较优先级,默认32768,越小越优,如果相等的话,比较MAC地址,越小越优
优先级是4096的倍数
16位,
优先级(4位)+VLAN(12)
0000 000000000000
0001 000000000000
[SW1]stp priority 8192
[SW4]stp root primary 配置设备为根桥(把优先级改为0) 思科相当于把最小的优先级减去8192
[SW4]stp root secondary 配置设备为备份根桥(把优先级为4096) 思科相当于把最小的优先级减去4096
STP报文:
1、配置BPDU:正常的BPDU报文,两秒发送一次
2、TCN:拓扑改变通知:发生拓扑变更时使用
RP(根端口)的选举规则:
1、比较到达根桥的最短路径开销值(RPC)越小越优
PortCost:端口开销值,入端口为计算依据
RPC
interface GigabitEthernet0/0/2
stp cost 70000 修改接口的开销值
2、比较转发该BPDU报文的桥ID,越小越优
3、转发该BPDU报文的端口ID(Port ID)越小越优
interface GigabitEthernet0/0/2
stp priority 16 //修改端口的优先级
Port ID:优先级+端口号 优先级默认 是128
4、比较接收端的Port ID,越小越优
DP的选举:
1、比较到达根桥的最短路径开销值(RPC)越小越优
PortCost:端口开销值,出端口为计算依据
2、比较转发该BPDU报文的桥ID,越小越优
3、转发该BPDU报文的端口ID(Port ID)越小越优
interface GigabitEthernet0/0/2
stp priority 16 //修改端口的优先级
Port ID:优先级+端口号 优先级默认 是128
根桥的选举是基于整个交换域的,每一个交换网络只能有一个根桥,一个备份根桥
RP的选举是基于设备的,每一个非根交换机,有且只有一个根端口
DP的选举是基于链路的,每一条链路有且只有一个指定端口
根端口是指从一个非根交换机到根交换机总开销最小的路径所经过的本地端口。这个最小的总开销值称为交换机的根路径开销(Root Path Cost)。如果这样的端口有多个,则比较端口上所连接的上行交换机的交换机标识,越小越优先,如果端口上所连接的上行交换机的交换机标识相同,则比较端口上所连接的上行端口的端口标识(Port Identifier),越小越优先。端口标识由两部分组成:一字节长度的端口优先级和一字节长度的端口号。一字节长度的端口优先级是可配置的,默认为128。本例中,假设所有端口都是百兆端口,使用相同的开销值200。
STP为每个网段选出一个指定端口(Designated Port),指定端口为每个网段转发发往根交换机方向的数据,并且转发由根交换机方向发往该网段的数据。指定端口所在的交换机称为该网段的指定交换机。
为每个网段选举指定端口和指定交换机的时候,首先比较该网段所连接的端口所属交换机的根路径开销,越小越优先;如果根路径开销相同,则比较所连接的端口所属交换机的交换机标识,越小越优先;如果根路径开销相同,交换机标识也相同,则比较所连接的端口的端口标识,越小越优先。
当配置BPDU只用于计算生成树,不用于传递拓扑改变信息的时候:
Protocol Identifier(协议标识),Protocol Version Identifier(协议版本标识)和BPDU Type(BPDU类型)Flags(标志)四部分设置为全0。
Root Identifier,Root Path Cost,Bridge Identifier和Port Identifier四部分用于检测最优的配置BPDU,进行生成树计算。
Message Age随时间增长而变大;
Max Age默认为20秒,如果Message Age达到Max Age,则此配置BPDU被认为已经过期。如果20s没有收到bpdu,则认为邻居失效。
Hello Time默认为2秒,也即在指定端口上,配置BPDU每隔两秒发送一次。
Forward Delay默认为15秒。
STP的不足之处
1、接口UP后需要30秒才能进入转发状态,时间过长
2、STP只能在收到上游发送的BPDU报文后,才会向下游发送BPDU
3、STP只能被动等待计时器超时,如果在max-age(20s)时间内,没有收到BPDU报文,才会认为邻居失效
4、STP中,五种端口状态:Disable,Blocking,Listing这三种状态对于用户没有任何区别
5、当AP接口收到次优的BPDU报文后,
如上图,连线断开,则sw2发送BPDU报文到sw3,需经历50s后,sw2和sw3的直连互通
如上图,连线断开,则sw2发送BPDU报文到sw3,需经历30s后,sw2和sw3的直连互通
网桥会保存当前最优的配置BPDU,该配置BPDU的生存期为Max Age。
当网桥在指定端口收到次级BPDU时,网桥会立即回应一个配置BPDU,这样可以保证新加入的网络尽快的确认根桥和端口角色,使得网络快速实现收敛。
当网桥在非指定端口收到次级BPDU时,网桥不会立即回应一个配置BDPU,而是等待Max Age超时之后才会回应配置BPDU。
这也是直接链路故障和间接链路故障收敛时间不同的原因
STP的端口角色:DP,AP,RP
RSTP的端口角色:DP,AP,RP,BP备份端口,EP边缘端口
RSTP 对STP的改进
1、端口角色的变化:从三种(DP,RP,AP)变为 五种(DP,RP,AP,BP备份端口,EP边缘端口)
BP :备份端口,不处于转发状态,所属交换机为端口所连网段的指定交换机。BP是DP的备份,AP是RP的备份
2、端口状态的变化:从五种Disable,Blocking,Listing ,Lerning,Forwarding变为了三种(Discarding,Learning,Forwarding
3、 p/a机制变化
4、拓扑变更
STP端口的UP/或Down都会触发拓扑变更
RSTP:非边缘端口从Discarding变为Forwarding,会触发拓扑变更
RSTP拓扑变化处理
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。
一旦检测到拓扑发生变化,将进行如下处理:
为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。
在这个时间内,清空所有端口上学习到的MAC地址。
同时,由非边缘指定端口和根端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。
如此,网络中就会产生RST BPDU的泛洪。
边缘端口
1、接口Up后,不需要30秒,立刻进入转发状态
2、接口UP后,不会触发拓扑变更,同时收到TC置 位的BPDU后,也不会触发拓扑变更
3、P/A机制不会影响边缘端口
配置方法
1、在接口下配置
interface GigabitEthernet0/0/4
stp edged-port enable
2、[SW2]stp edged-port default
3、边缘端口是会发送BPDU报文的,为了防止自环
边缘端口收到BPDu报文,会失去边缘端口特性,变为一个普通接口
RSTP的PA机制
在局域网中,可以通过STP协议防止网络环路。但是STP算法是被动的算法,依赖定时器等待的方式影响指定端口的状态改变,收敛速度慢。
RSTP协议和STP协议消除环路的思想保持一致,具备STP的所有功能。交换机运行RSTP协议时,如果端口的角色被选举为指定端口,可以通过PA机制快速让端口的状态改变为转发状态。
P/A机制,其目的是使一个指定端口尽快进入转发状态。P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口的选择就需要等待两个转发,协商过程与STP一样。
我们以下图为例,介绍RSTP协议中的P/A机制
RSTP协议中的P/A机制工作如下:
1> S1、S2、S3的网桥优先级如上图所示。
2> S1通过端口E1发送Proposal置位的RST BPDU消息给S2。
3> S2收到该消息后,通过比较BPDU,判断端口E2为根端口。启用同步机制阻塞指定端口E1和E3以避免产生环路。然后将根端口设置为转发状态,并向S1发送Agreement消息。
4> S1收到Agreement消息后,指定端口E1马上进入转发状态。
5> S2的E1、E3端口是指定端口,并且不是转发状态。S2通过指定端口E1和E3发送Proposal报文。
6> S3收到S2发送的Proposal报文后,判断E1为根端口,启动同步过程,由于S3下游均为边缘端口,所以已经实现了同步,因此S3直接向S2回复Agreement消息。
7> S2收到S3发送的Agreement消息后,端口E1马上进入转发状态。
8> S4收到S2发送的Proposal报文后,判断E1为根端口,启动同步过程,由于S4下游均为边缘端口,所以已经实现了同步,因此S4直接向S2回复Agreement消息。
9> S2收到S4发送的Agreement消息后,端口E3马上进入转发状态。
P/A过程结束。
边缘端口
对于运行生成树协议的二层网络,与终端相连的端口不用参与生成树计算,这些端口参与计算会影响网络拓扑的收敛速度,而且这些端口的状态改变也可能会引起网络震荡,导致用户流量中断。此时,可以通过执行命令stp edged-port enable将当前端口配置成边缘端口,该端口便不再参与生成树计算,从而帮助加快网络拓扑的收敛时间以及加强网络的稳定性。
但是,边缘端口收到BPDU报文会失去其边缘端口属性。为防止攻击者仿造BPDU报文导致边缘端口属性变成非边缘端口,可通过执行命令stp bpdu-protection配置交换设备的BPDU保护功能。
配置影响
配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会被shutdown,边缘端口属性不变。
注意事项
在配置了BPDU保护功能后关闭端口的情况下,被关闭的端口默认不会自动恢复,只能由网管先执行shutdown命令再执行undo shutdown命令手动恢复,也可以在接口视图下执行restart命令重启端口。
如果用户希望被关闭的端口可以自动恢复,则可以通过在系统视图下执行error-down auto-recovery cause bpdu-protection interval interval-value命令使能端口状态自动恢复为Up的功能并设置端口自动恢复为Up的延时时间,使被关闭的端口经过延时时间后能够自动恢复。
使用实例
# 使能交换设备的BPDU保护功能。
system-view
[HUAWEI] stp bpdu-protection
根端口保护
在sw2的4口启用
[Huawei-GigabitEthernet0/0/4]stp root-protection
环路
在sw3的1口启用
[Huawei-GigabitEthernet0/0/1]stp loop-protection
开启此功能,则sw2的2口角色为dp,但是状态为discarding
同理,sw1和sw2之间链路拥塞,同理处理
bpdu filter enable 不收也不发送bpdu报文