STP是一个用于局域网中消除环路的协议。STP通过构造一棵树来消除交换网络中的环路
二层交换机
二层交换机不具备路由能力,主要功能有三种
1)地址学习(address learning):通过查看帧的源MAC地址来加紧转发/过滤表的MAC地址数据库里
2)转发/过滤决定(forward/filter decisions) :当借口收到一个帧的时候,交换机查看目标MAC地址,寻找MAC地址数据库和接口,然后向符合条件的那个目标端口转发
3)转发避免(loop avoidance):假如有冗余的连接,可能会造成环路的产生,STP就用来阻止这些环路
STP基本概念
STP的基本原理是,通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。按照树的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存在而造成广播风暴问题。
STP的端口角色:指定端口,根端口,预备端口
指定端口:交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口,一般情况下,根桥的每个端口总是指定端口
根端口:非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上不存在根端口
预备端口:既不是指定端口也不是根端口的端口,预备端口被堵塞
STP选举过程:
1)选举一个根桥交换机
STP中的每个交换机都会有一个桥ID(bridge id)。桥ID由16位桥优先级和48位MAC地址构成。优先级最高的设备(数值越小越优先)会被选举为根桥,如果优先级相同,则会比较MAC地址,MAC地址越小则越优先
2)非根桥交换机选举根端口
非根桥交换机在选举根端口时依据端口的根路径开销,对端BID(bridge id),对端PID(port id)和本段PID。首先看开销(与带宽有关),开销值越低,接口越优。开销相同,看发送者的bridge ID,最后比较发送者port id(port优先级+port ID),越小越好
开销值是改路径上所有接受BPDU端口的端口开销总和(BPDU的入方向端口),称为路径开销
端口ID由端口优先级和端口号构成,端口优先级取值范围0-240,步长为16,必须是 16的整数倍。缺省情况下,端口优先级是128
3)每个网段选一个指定接口
每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上有环路)
指定端口的选举也是首先比较累计路径开销,累计路径开销最小的端口就是指定端口。如果累计路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口,如果还选举不出来,则比较端口ID,端口ID最小的被选举为指定端口
4)预备接口被阻塞
只有指定端口和根端口可以转发数据。非根,非指定端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路状态
STP端口状态:
1)forwarding:转发状态,端口既可以转发用户流量也可以转发BPDU报文,只有根端口或者指定端口才能进入forwarding状态
2)learning:学习状态,端口可以根据收到的用户流量构建MAC地址表,但不能转发用户流量,目的为了防止临时环路
3)listening:侦听状态,端口可以转发BPDU报文,但不能转发用户流量
4)blocking:阻塞状态,端口仅仅能接收并处理BPDU报文,但不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态
5)disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量
只有最终处于forwarding状态才能转发数据
只有选举结束变为根端口或者指定端口才不会停留在阻塞状态
禁用并不是生成树状态
BPDU类型
有两种类型:配置BPDU和TCN BPDU
1)配置BPDU 包含了桥ID,路径开销和端口ID以及时间等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机收到上游传来的配置BPDU之后,才会发送自己的配置BPDU
2)TCN BPDU 是指下游交换机感知到拓扑变化时向上游发送的拓扑变化通知。拓扑发生变化后需要及时更新MAC地址表项。
3)BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80-C2-00-00-00
STP三个计时器
BPDU发送间隔hello time 2s,转发时延15s,maxage 20s
hello time
运行STP协议的设备发送配置消息BPDU的时间间隔,用于检测链路是否存在故障,设备每隔hello time便会向周围的设备发送hello报文,以确定链路是否存在故障。当网络拓扑稳定之后,该计时器的修改只有在根桥修改之后才有效。新的根桥会在发出的BPDU报文中填充适当的字段来向其他非根桥传递该计时器修改的信息。当拓扑变化之后,TCN BPDU的发送不受这个计时器管理
forward delay
forwar delay timer指一个端口处于listening和learning状态的各自持续时间,默认15s。STP采用一种状态迁移机制,新选出的根端口和指定端口要经过2倍的forward delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时换路产生
max age
端口的BPDU报文老化时间,可以在根桥上人为修改,非根桥设备收到配置BPDU报文之后。会把message age与max age进行比较,如果前者小于后者,那么非根桥设备继续转发配置BPDU报文。反之,配置BPDU将会老化,且该设备会将其丢弃
STP配置基本流程
stp mode { mstp | stp | rstp }
stp priority priority / stp root primary
stp pathcost-standard { dot1d-1998 | dot1t | legacy }命令用来配置指定交换机上开销值的标准
使用华为的私有计算方法时,cost取值范围是1~200000。
使用IEEE 802.1d标准方法时,cost取值范围是1~65535。
使用IEEE 802.1t标准方法时,cost取值范围是1~200000000。
display stp 命令显示交换机上所有端口信息
display stp interface命令显示交换机上指定端口信息。其他一些信息还包括端口角色,端口状态,以及实用的保护机制等。常用 display stp brief
RSTP
STP不足
拓扑收敛满,拓扑变更复杂,端口角色重新选举慢,端口状态多余。根据STP不足,RSTP删除了三种端口状态,新增加了两种端口角色
RSTP的端口2种新增角色:alternate端口和backup端口。根端口和指定端口的作用与STP相同
从配置BPDU报文发送角度来看
alternate端口就是由于学习到其他网桥发送的配置BPDU而堵塞的阻塞端口
backup端口就是由于学习到自己发送的配置BPDU而阻塞的阻塞端口
从用户流量角度来看
alternate端口提供了从指定桥到根的另一种可切换路径作为根端口的备份端口。backup端口作为指定端口的备份,提供了零一条从根桥到相应网段的备份通路。给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程
端口状态的重新划分:RSTP状态缩减为3种,并且根据是否转发用户流量和学习MAC地址来划分:
discarding:既不转发用户流量也不学习MAC地址
learning:不转发用户流量但是学习MAC地址
forwarding:既转发用户流量又学习MAC地址
配置BPDU发送方式的改变
STP拓扑稳定后,根桥按照hello time时间间隔来发送配置BPDU。其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发转发配置BPDU,此方法使得STP协议计算复杂且缓慢
RSTP进行了改善,稳定之后,无论非根桥设备是否收到根桥发送的配置BPDU报文,都会根据hello time来发送配置BPDU,每台设备自主进行
更短的超时计时器:
如果一个端口连续3个hello time 时间之内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败,而不像STP那样需要先等待一个max age
边缘端口的引入
在RSTP里面,如果某一个指定端口位于整个网络的边缘,不在于其他交换设备连接,而是直接与终端设备直连,这个端口叫做边缘端口,边缘端口不接受处理配置BPDU,不参与RSTP运算,可以从disable直接转到forwarding状态,并且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行树计算,从而引起网络震荡。[SwitchB ]stp edged‐port default 或者接口模式下使用
命令[SwitchB‐GigabitEthernet0/0/2] stp edged‐port enable
快速收敛–proposal/aggrement机制(重点)
这种机制必须在点到点全双工链路上使用,在接口配置模式下使用命令stp point-to-point force-true强制接口类型为点到点链路。在RSTP中,端口会先进入discarding状态,再通过P/A机制快速进入forward状态
1)p0和p1两个端口马上都成为指定端口,发送PST BPDU
2)s2的p1收到更好的RST BPDU,马上意识到自己成为根端口而不是指定端口,停止发送RST BPDU
3)s1的p0会进入disarding状态,于是发送的RST BPDU中把proposal置1
4)s2收到根桥发送来的携带proposal的RST BPDU,开始将自己的所有端口进入sync变量置位
5)p2已经阻塞,状态不变,p4是边缘端口,不参与运算。所以只需要阻塞非边缘指定端口p3
6)p2,p3,p4都进入discarding状态之后,各端口的synced变量置位,根端口p1的synced也置位,于是便向S1返回agreement位置位的回应RST BPDU。该RST BPDU携带和刚才根桥发过来的BPDU一样的信息,除了agreement位置位之外(proposal位清零)
7)当s1判断出这是对刚刚发出的proposal的回应,于是端口p0马上进入forwarding状态
以上P/A过程可以向下游继续传递
根端口快速切换机制
如果网络中一个根端口失效,那么网络中最优的alternate端口将成为根端口,进入forwarding状态。因为通过这个alternate端口连接的网段上必然有个指定端口可以通往根桥
RSTP拓扑变化处理
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到forwarding状态。一旦检测到拓扑发生变化,将进行如下处理:
为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是hello time的两倍。在这个时间内清空状态发生变化的端口上学习到的MAC地址,同时,由这些端口向外发送RSTP BRDU,其中TC置位,一旦TC While Timer超时,则停止发送RST BPDU
其他交换设备接收到RST BPDU后,清空除了收到RST BPDU的端口以外其他端口学习到MAC地址。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。如此,网络中就会产生RST BPDU的泛洪
RSTP与STP的互操作
STP的交换设备会忽略RSTP BPDU。运行RSTP的交换设备在某端口接收到运行STP的交换设备发出的配置BPDU,在两个hello time时间之后,便把自己的端口转换到STP工作模式,发送配置BPDU,从而实现了互操作
RSTP保护功能
**BPDU保护:**配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会被立即关闭。
[SwA]stp bpdu‐protection
根保护一旦启用root保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入discarding状态,不再转发报文。经过一段时间之后,如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的forwarding状态。root保护功能只能在指定端口上配置生效
[SwitchA‐GigabitEthernet0/0/1] stp root‐protection
TC-BPDU攻击保护启用防TC-BPDU报文攻击功能之后,在单位时间内,RSTP进程处理TC类型BPDU报文的次数可配置(缺省的单位时间2s,缺省的处理次数3次)。如果在单位时间内,RSTP进程在收到TC类型BPDU报文数量大于配置的阈值,那么RSTP进程只会处理阈值指定的次数。对于其他超出阈值的TC类型BPDU报文,定时器到期时,RSTP进程只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护交换机的目的。
[SwA]stp tc‐protection 开启保护,[SwA]stp tc‐protection threshold 10 设置阀
值。
环路保护为了防止单向链路导致的环路可以开启环路保护功能。在启动了环路保护功能后,如果根端口或者alternate端口长时间收不到来自上游的RST BPDU时,则会向网管发出通知信息(如果是根端口则进入discarding状态)。而阻塞端口则会一直保持在阻塞状态,不转发报文,从而不会在网络中形成环路。直到根端口或alternate端口收到RST BPDU,端口状态才正常到forwarding状态。环路保护功能只能在根端口或alternate端口上配置生效
[SwitchA‐GigabitEthernet0/0/1]stp loop‐protection
MSTP
RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但RSTP和STP还存在同一个缺陷:由于局域网内所有的vlan共享一棵生成树,因此无法再vlan间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,造成带宽浪费,还有可能造成部分VLAN的报文无法转发
MSTP基本概念
通过MSTP把一个交换网络划分成多个域,每个域内形成多颗生成树,生成树之间彼此独立。没课生成树叫做一个多生成树实例MSTI(Multiple Spanning Tree
Instance),每个域叫做一个MST域(MST Region:Multiple Spanning Tree Region)。
MSTP网络中包含1个或多个MST域,每个MST域中包含一个或多个MSTI。MSTP通过设置VLAN映射表(即VLAN和MSTI的对应关系表),把VLAN和MSTI联系起来。每个VLAN只能对应一个MSTI,即同一个VLAN的数据只能在一个MSTI中传输,而一个MSTI可以对应多个VLAN
每个MSTI都有一个标识MSTID,MSTID是一个两字节的证书。VRP平台支持16个MST instance,MSTID的取值范围时0-15,默认所有VLAN 映射到MST instance 0
每个MSTI都使用单独的RSTP算法,计算单独的生成树。MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的各个冗余路径,在数据转发过程中实现VLAN数据的负载均衡
MST域中同一个MST域的设备具有下列特点
1)都启动了MSTP
2)具有相同的域名
3)具有相同的VLAN到生成树实例映射配置
4)具有相同的MSTP修订级别配置