生成树stp rstp mstp详解

STP生成树

由来:为了提高网络可靠性,交换网络中常会使用冗余链路,那么冗余链路的适应会给交换网络带来一定的环路风险,导致广播风暴以及MAC地址表不稳定的问题,最终会影响通信质量。生成树(Spanning Tree Protocol)的协议可以在提高可靠性的同时又能避免各种环路带来的问题。

风险-广播风暴:如下图,主机A发送一个单播帧,如果此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中不存在,那么SWB接到此帧后,会将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接受此帧的接口,结果此帧又会再次转发给SWB,一直持续循环,于是广播风暴产生,交换机性能持续下降,导致通信无法正常进行。

生成树stp rstp mstp详解_第1张图片
STP作用:
1.消除环路:通过阻断冗余链路来消除网络中可能出现的环路。
2.链路备份:当活动路径发生故障时,激活备份链路,即使恢复网络连通性。

STP工作原理

BPDU(Bridge Protocol Date Unit)

当现有根网桥发生故障时,非根桥之间会交互信息重新选举根网桥,这里交互的信息称为BPDU,BPDU中包含交换机在参加生成树算时的各种参数信息。
生成树stp rstp mstp详解_第2张图片
一.BPDU有两种类型:配置BPDU和TCN BPDU。
二.配置BPDU包含了桥ID,路径开销和端口ID等参数。STP协议通过交换机之间传递配置BPDU来选举跟交换机,以及确定每个交换机端口的角色和状态。在初始化阶段,每个桥都主动发送配置BPDU。在网络拓扑稳定稳定之后,只有根桥主动发送配置BPDU,其它 BPDU交换机在收到上游传来配置BPDU后,才会发送自己的配置BPDU.
配置BPDU包含的信息如下:
桥ID:由根桥的优先级和MAC地址构成,每个STP网络有且只有一个根网桥。
跟路径开销:到根桥的最远路径开销。
指定桥ID:由指定桥的优先级和MAC地址组成。
指定端口ID:由指定端口的优先级和端口号组成。
Message Age:配置BPDU在网络中传播的生存期。
Max Age:配置BPDU在网络中能够保存的最大生存期。
Hello Time:配置BPDU发送的周期。
Forward Delay:端口状态迁移延时。
三.TCN BPDU是指下游交换机感知拓扑发生变化是向上游发送拓扑变更信息。

计时器

生成树stp rstp mstp详解_第3张图片
STP协议中包含一些重要的时间参数,这里举例说明如下:
Hello Time是指运行STP协议的设备发送配置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥上修改才有效。
Message Age是从根桥发送到当前交换机接收到BPDU的总时间,包括传输延时等。如果配置BPDU是根桥发出的,则Message Age为0。实际实现中,配置BPDU报文每经过一台交换机,Message Age增加1。
Max Age是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的Message Age和Max Age进行比较:如果Message Age小于等于Max Age,则该非根桥设备会继续转发配置BPDU报文。如果Message Age大于Max Age.则该配置BPDU报文将被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为是网络是直径过大,导致跟桥链接失败。

STP操作

生成树stp rstp mstp详解_第4张图片
一.STP通过生成一棵树来消除佳欢网络中的环路。
二.每个STP网络中都会存在一个根网桥,其它交换机为非根网桥,根桥或者跟交换机位于整个逻辑树 的根部,是STP网络的逻辑中心,非根桥是根桥的下游设备,当现有根网桥发生故障时,非根桥之间会交互信息重新选举根网桥,这里交互的信息称为BPDU,BPDU中包含交换机在参加生成树算时的各种参数信息。
三.STP定义了三种端口模式:根端口,指定端口,预备端口。
根端口是非根交换机去往根桥路径最优的端口,在一个运行STP协议的交换机上最多有一个根端口,但根桥上没有根端口。
指定端口是交互那几向所连网段转发BPDU的端口,每个网段有且只有一个指定端口,一般情况下,根网桥的所有端口为指定端口。
预备端口是除了根端口和指定端口之外的端口,预备端口会被阻塞。

STP选举
根桥选举

生成树stp rstp mstp详解_第5张图片
一.STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(bridge ID)。桥ID由16位桥的优先级(Bridgr Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768.优先级高的设备(数值越小越优先)会选举根桥。如果优先级相同,则会比较MAV地址越小越优先。
二.交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动后都会认为自己是根桥,自己所有的端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的桥ID优先级低,接收交换机接受交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的配置BPDU报文的跟桥ID,宣告新的根桥。

根端口选举

生成树stp rstp mstp详解_第6张图片
一.非根交换机选举指定端口依据端口根路径开销,对端BID,对端PID和本端PID.
根端口:每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判断的,即路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中根路径开销字段值,加上该端口的本身端口开销即为本端口路径开销。如果有两个或者两个以上的端口计算累计开销相同,那么选择收到发送者BID最小的那端口为根端口。
**端口开销:**交换机的每个端口都有一个端口开销(Post Cost)参数,此参数代表该端口在STP中的开销值。默认端口的开销和端口的带宽有关带宽越高,开销越小。从一个非根桥到达根桥的路径可能有很多条,每一条路径有一个总开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为PRC(Root Path Cost,根路径开销),并生成无环树状网络。根桥的根路径开销为0。
端口ID:运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号组成。端口优先级取值范围是0到240,步长为16,取值必须为16的整数倍。缺省情况下,端口优先级是128.端口ID(Port ID)可以用来确定端口角色。
PID: 如果两个或两个以上的端口链接同一台交换机上,则选择发送者PID最小的那个端口最为根端口。如果两个或者两个以上端口的端口通过hub连接到同一台交换机的同一个接口,则选择本交换机的这些端口中PID最小的作为根端口。

指定端口选举

生成树stp rstp mstp详解_第7张图片
一.在网段上抑制其他端口( 无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。
二.指定端口的选举也是首先比较累计路径开销,累计路径开销最小的端口就是指定端口。如果累计路径开销相同,则比较端口所在交换机的桥1D,所在桥ID最小的端口被选举为指定端口。如果通过累计路径开销和所在桥D选举不出来,则比较端口1D,端口ID最小的被选举为指定端口。
三.网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够人所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

STP段端口状态

生成树stp rstp mstp详解_第8张图片
• 图中所示为STP的端口状态迁移机制 ,运行STP协议的设备上端口状态有5种:
Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。
Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量
Blocking:阻塞状态。端口仅仅能接收 并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

STP配置

生成树stp rstp mstp详解_第9张图片
生成树stp rstp mstp详解_第10张图片
基于企业业务对网络的需求,一般建议手动指定网络中配置高、性能好的交换机为根桥。
可以通过配置桥优先级来指定网络中的根桥,以确保企业网络里面的数据流量使用最优路径转发。
stp priority priority命令用来配置设备优先级值。priority值为整数,取值范围为0到61440, 步长为4096。缺省情况下,交换设备的优先级取值是32768。另外,可以通过stp root primary命令指定生成树里的根桥。
生成树stp rstp mstp详解_第11张图片

stp pathcost-standard { dot1d-19981 dotltl legacy }命令用来配置指定交换机上路径开销值的标准。
每个端口的路径开销也可以手动指定。此STP路备开销控制方法须谨慎使用 ,手动指定端口的路径开销可能会生成次优生成树拓扑。
stp cost cost命令取決于路径开销计算方法:
使用华为的私有计算方法时,cost取值范围是1~200000。
使用IEE 802.1d标准方法时,cost取值范围是1~65535。
使用IEE 802.1t标准方法时,cost取值范围是1~200000000。

生成树stp rstp mstp详解_第12张图片
display stp命令用来检查当前交换机的STP配置。命令输出中信息介绍如下:
CIST Bridge参数标识指定交换机当前桥ID,包含交换机的优先级和MAC地址。
Bridge Times参数标识Hello定时器、Forward Delay定时器、Max Age定时器的值。
CIST ROOt/ERPC参数标识根桥ID以及此交换机到根桥的根路径开销。

RSTP

端口角色

生成树stp rstp mstp详解_第13张图片
运行RSTP的交换机使用了两个不同的端口角色来实现冗余备份。当到根桥的当前路径出现故障时,作为根端口的备份端口,Alternate端口提供了从一个交换机到根桥的另一条可切换路径。Backup端口作为指定端口的备份,提供了另一条从根桥到相应LAN网段的备份路径。当一个交换机和一个共享媒介设备Hub建立两个或者多个连接时,可以使用Backup端口。同样,当交换机上两个或者多个端口和同一个LAN网段连接时, 也可以使用Backup端口。

边缘端口

生成树stp rstp mstp详解_第14张图片
RSTP里,位于网络边缘的指定端口被称为边缘端口。边缘端口一般与用户终端设备直接连接,不与任何交换设备连接。边缘端口不接收配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转Forwarding状态 ,但不经历时延,就像在端口上将STP禁用了一样但是一旦边缘端口收到配置BPDU报文 ,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

端口状态

生成树stp rstp mstp详解_第15张图片
RSTP把原来STP的5种端口状态简化成了 3种。
Discarding状态 ,端口既不转发用户流量也不学习MAC地址。
Learning状态 ,端口不转发用户流量但是学习MAC地址。
Forvarding状态 ,端口既转发用户流量叉学习MAC地址。

RST BPDU

生成树stp rstp mstp详解_第16张图片

除了部分参数不同 ,RSTP使用了类似STP的BPDU报文,即RST BPDU报文。BPDU Type用来区分STP的BPDU报文和RST (Rapid Spanning Tree) BPDU报文。STP的配置BPDU报文的BPDU Type值0(0x00),TCN BPDU报文的BPDU Type值为128 (0x80) , RSTBPDU报文的BPDU Type值为2 (0x02)。 STP的BPDU报文的Flags字段中只定义了拓扑变化TC ( Topology Change)标志和拓扑变化确认TCA ( Topology Change Acknowledgment)标志 ,其他字段保留。在RST BPDU报文的Flags字段里,还使用了其它的Forwarding , Learning与Port Role表示发出BPDU的端口的状态和角色。

RSTP收敛过程

生成树stp rstp mstp详解_第17张图片
RSTP收敛遵循STP基本原理。网络初始化时,网络中所有的RSTP交换机都认为自己是“根桥",并设每个端口为指定端口。此时 ,端口为Discarding状态。
生成树stp rstp mstp详解_第18张图片
每个认为自己是“根桥〞的交换机生成一个RST BPDU报文来协商指定网段的端口状态,此RST BPDU报文的Flags字段里面的Proposal位需要置位。当一个端口收到RST BPDU报文时,此端口会比较收到的RST BPDU报文和本地的RST BPDU报文。如果本地的RSTBPDU报文优于接收的RST BPDU报文,则端口会丢弃接收的RST BPDU报文,并发送Proposal置位的本地RST BPDU报文来回复对端设备。

生成树stp rstp mstp详解_第19张图片
交换机使用同步机制来实现端口角色协商管理。当收到Proposal置位并且优先级高的BPDU报文时,接收交换机必须设置所有下游指定端口为Discarding状态。如果下游端口是Alternate端口或者边缘端口,则端口状态保持不变。本例说明了下游指定端口暂时迁移到Discarding 状态的情形,因此,P/A进程中任何帧转发都将被阻止。
生成树stp rstp mstp详解_第20张图片
当确认下游指定端口迁移到Discarding状态后,设备发送RST BPDU报文回复上游交换机发送的Proposal消息。在此过程中,端口己经确认为根端口,因此RST BPDU报文Flags字段里面设置了Agreement标记位和根端口角色。
生成树stp rstp mstp详解_第21张图片
在P/A进程的最后阶段,上游交换机收到Agreement置位的RST BPDU报文后,指定端口立即从Discarding状态迁移为Forwarding状态。然后,下游网段开始使用同样的P/A进程协商端口角色。
生成树stp rstp mstp详解_第22张图片
在STP中,当出现链路故障或根桥失效导致交换机收不到BPDU时 ,交换机需要等待Max Age时问后才能确认出现了故障。而在RSTP中,如果交换机的端口在连续了次Hello Timer规定的时间间隔内没有收到上游交换机发送的RST BPDU,便会确认本端口和对端端口的通信失败,从而需要重新进行RSTP的计算来确定交换机及端口角色。
生成树stp rstp mstp详解_第23张图片
RSTP拓扑变化的处理类似于STP拓扑变化的处理,但也有些细微差别。
本例里面,SWC发生链路故障。SWA和SWC立即检测到链路故障并清除连接此链路的端口上的MAC地址表项。接下来SWC选举出新的根端口并立即进入Forwarding状态,因此触发SWC向外发送TC置位BPDU报文(以下简称TC报文)。通知上游交换机清強所有其他端口上的MAC地址表项,除了接收到TC报文的端口。丁C报文周期性地转发给邻居,在此周期内,所有相关接口上MAC地址表项将会被清除,重新学习MAC地址表项。图形里面红色X表示由子拓扑变化导致端口上的MAC地址表项被清除。
生成树stp rstp mstp详解_第24张图片
RSTP是可以与STP夹现后向兼容的,但在实际中,并不推荐这样的做法,原因是RSTP会失去其快速收敛的优势,而STP慢速收敛的缺点会暴露出来。当同个网段里既有运行STP的交换机又有运行RSTP的交换机时,STP交换机会忽路接收到的RST BPDU 而RSTP交换机在某端口 上接收到STP BPDU时会等待两个点Hello Time时间之后,把自己的端口转换到STP工作模式,此后便发送STP BPDU这样就实现了兼容性操作。

RSTP配置

[sw1]stp mode rstp
边缘接口---用于连接PC的接口,一旦被设定为边缘接口;将不再进行BPDU的发送,且不进行STP的收敛,直接为转发状态;  但若该接口收到了对端的BPDU,将失去边缘特性,重新正常收敛;
[sw1]interface GigabitEthernet 0/0/1
[sw1-GigabitEthernet0/0/1]stp edged-port enable

[sw1]stp priority ?  修改网桥优先级
  INTEGER<0-61440>  Bridge priority, in steps of 4096 

[sw1]stp root ?  快速定义根网桥角色
  primary    Primary root switch
  secondary  Secondary root switch

[sw1-GigabitEthernet0/0/1]stp port  priority ?   修改接口优先级
  INTEGER<0-240>  Port priority, in steps of 16

[sw1-GigabitEthernet0/0/1]stp cost ? 修改接口cost
  INTEGER<1-200000000>  Port path cost 

华为默认的mstp

继承了快速生成树的基础,将多个vlan放置于一个组内,基于每个组一棵生成树。

[r1]stp mode mstp
默认存在组0,且所有vlan默认处于该组;优先级= 32768+0分组
[sw1]stp enable 
[sw1]stp region-configuration 
[sw1-mst-region]region-name a    ##所有设备应在一个域内
[sw1-mst-region]instance 1 vlan 1 to 5 #这里将vlan 1-5放在组1.
[sw1-mst-region]instance 2 vlan 6 to 10 #将vlan 6-10放在组2.
[sw1-mst-region]active region-configuration     激活当前配置(必须配置该指令)
$切记:若将创建某个组,但该组内的vlan,在本交换机上没有创建,同时没有为该vlan服务的接口;该组将没有任何信息;整个交换网络中所有设备的分组信息必须完全一致;**
定义本地为组1 的主根,组2 的备份根
stp instance 1 root primary      优先级修改为0
stp instance 2 root secondary    优先级修改为4096
[sw1]stp instance  1  priority ?
  INTEGER<0-61440>  Bridge priority, in steps of 4096
[sw1]interface GigabitEthernet 0/0/1
[sw1-GigabitEthernet0/0/1]stp instance 1 cost ?
  INTEGER<1-200000000>  Port path cost
[sw1-GigabitEthernet0/0/1]stp instance 1 port priority ?
  INTEGER<0-240>  Port priority, in steps of 16

mstp保护措施:
BPDU保护:
当我们在access接口上配置stp edged-port enable命令时,目的让其收敛时间是0,但是该命令会使接口丧失检测环路的能力,本质是该命令时不加入生成树收敛的意思。
stp bpdu-protection //全局开启生成树的BPDU保护,作用是当stp edged-port接口收到BPDU时,会强制关闭改接口。
undo shutdown 命令可以重新打开被关闭的接口

ROOT 保护
作用:当开启后接口收到比当前设备根更优的BPDU时,关闭改接口。一般配置在不信任或者trunk接口上
[ACC-1]int g0/0/23
[ACC-1-GigabitEthernet0/0/23]stp root-protection //启动接口的根保护

TC保护
topology change 报文意味着生成树发生了拓扑变化,这些变化会导致交换机把他的MAC地址表清空。
针对TC俩种方案:
1. 做stp edged-port 让接口不参与生成树自然就不会发TC。
2. TC保护
stp tc-protection threshold 1 //设置交换机处理TC的次数,一分钟只处理一次

你可能感兴趣的:(网络交换技术,网络协议)