本文主要是介绍STP-RSTP-MSTP入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、STP
STP概述
如何在保证二层网络冗余性的前提下,消除二层中的路由环路,解决以太网二层环路问题最经典的是STP生成树协议,二层环路的危害包括广播风暴、设备MAC地址表紊乱、以及MAC地址漂移等在内的一系列问题,严重时会导致链路带宽耗尽,网络瘫痪。简单地说,当网络中部署生成树之后,交换机之间便会开始交互相关协议报文,并在网络中进行一系列计算,经计算得到一个无环的网络拓扑。当网络存在环路时,生成树会将网络中的一个或多个接口进行阻塞,在此之后还会监视网络的拓扑状况,当网络拓扑变更时,能够及时感知,并且动态调整被阻塞接口,无需人工干预。因此生成树不仅能在网络中解决二层环路的问题,还可以保证网络的冗余性。
STP是早期的生成树协议,在IEEE 802.1D中定义。RSTP (快速生成树)在许多方面对STP进行了优化,他的收敛速度更快,能兼容STP,在IEEE 802.1W定义。后来IEEE 802.1S中定义了MSTP(多实例生成树),园区网杜绝二层环路的主要手段,能兼容STP及RSTP。
STP基本概念
- 桥ID:每一台运行STP的交换机都拥有一个唯一的桥ID,桥ID 一共64bit(8byte),其中桥优先级占16bit,MAC地址占据48bit
- 根桥:STP主要作用之一是在整个交换网络中计算出一颗无环的树,STP根桥就是这棵树的树根。当STP开始工作后,第一件事情就是在网络中选举根桥,在一个交换网络中,根桥只会有一个,桥ID最小的为根桥,越小越优先,桥优先级默认32768,必须是4096倍数,例如0,4096等
- 开销(cost)与根路径开销(RPC):每一个激活STP的接口都维护着一个cost值,主要用于计算RPC,也就是到达根的开销。cost除了与其速率、工作模式有关,还与交换机使用的STP cost计算方法有关
- 接口ID(PID):运行STP的交换机用接口ID标识每个接口,接口ID主要用于选举指定端口。长度为16bit,其中4bit 是接口优先级,取值0-240,默认128,必须是16的倍数,低12bit是接口编号
####STP的基本操作过程
STP通过4个步骤来保证网络中不存在二层环路: - 在交换网络中选举一个根桥
- 在每个非根桥上选举一个根接口(RP)
非根桥上所有接口中收到最优BPDU的接口,一个非根桥只有一个接口为根接口,STP收敛完成后,根桥会周期性发送BPDU,而非根桥则会周期在根接口上收到BPDU,并沿着STP树向下游转发 - 选举指定接口(DP)
STP将在每个网段中选举一个指定接口,这个接口是该网段内所有接口到达根桥的最优接口,指定接口还负责向该网段发送BPDU,对于非根桥而言,根接口的选举过程是非根桥将自己所收到的所有BPDU进行比较,指定接口的选举过程则是非根桥用自己计算出的BPDU跟别的设备发过来的BPDU进行比较 - 阻塞非指定接口,打破二层环路
经STP计算后,如果交换机的某个接口既不是根接口也不是指定接口,那么接口将被STP阻塞,改接口不会发送BPDU,但是会持续监听BPDU,以便感知网络拓扑的变更情况
STP报文
在一个交互网络中,STP能够正常工作的基本前提是BPDU的正常交互。STP的BPDU有两种类型,配置BPDU及TCN BPDU,两种BPDU各有用途,配置BPDU是STP进行拓扑计算的关键。STP收敛完成后,只有根桥会周期性(默认2s)发送BPDU,而非根桥则会周期在根接口上收到BPDU,并立即被触发而产生自己的配置BPDU,沿着STP树向下游转发;TCN BPDU用于在网络拓扑发生变化时向根桥通知变化的发生,当拓扑发生变更时,STP会使用TCN BPDU及两种特殊配置 BPDU,感知拓扑变化的交换机会从其根接口发送TCN BPDU,朝根桥的方向发送,当一台交换机收到下游发送的TCN BPDU后,需要使用标志字段中TCA比特位被置为1的配置BPDU回应对方并向自己的上游发送TCN BPDU,直到根桥收到该TCN BPDU,根桥收到之后,它将向网络中泛洪标志字段中TC比特位为1的配置BPDU,网络中的交换机收到之后,会立即将其MAC表的老化时间重新调整为一个较小的值,使MAC地址表尽快刷新,以便适应新的网络拓扑;
STP接口状态
- 禁用(disable):不能收发BPDU,也不能收发业务数据帧,接口DOWN
- 阻塞(blocking):接口被STP阻塞,不能发送BPDU,会持续侦听BPDU,不能收发业务数据帧,不能学习MAC
- 侦听(listening):依然处于STP计算过程,可以收发BPDU,不能收发业务数据帧,不会学习MAC
- 学习(learning):会侦听业务数据帧(不能转发业务数据帧),可以进行MAC学习
- 转发(forwarding):正常收发业务数据帧,会进行BPDU处理
二、RSTP
RSTP概述
RSTP快速生成树协议可以视为STP的改进版本,它的收敛速度更快,能够兼容STP,引入了新的接口角色,替代接口及备份接口,替代接口使得交换机在根接口失效时,能够立即获得新的路径到达根桥。RSTP引入了P/A(提议/同意)机制,使得指定接口选举后能快速进入转发状态,不用像STP那样经历转发延迟时间。另外,RSTP还引入了边缘接口的概念,使得交换机连接终端设备的接口在初始化之后能够立即进入转发状态,提高工作效率
RSTP接口角色
RSTP在STP的基础上,增加了两种接口角色,分别是替代接口和备份接口,因此RSTP共有4种接口角色:根接口、指定接口、替代接口、备份接口
替代接口可以简单的理解为根接口的备份,在根接口失效时,能够立即获得新的路径到达根桥,替代接口成为新的根接口。替代接口可以存在一个或多个,在根接口失效时,最优的替代接口将成为新的根接口
备份接口是一台设备上由于收到了自己发送的BPDU从而被阻塞的接口
RSTP接口状态
在RSTP中,处于丢弃状态的接口既不会转发业务数据帧,也不会学习MAC地址
BPDU网桥协议数据单元
RSTP的配置BPDU称为RST BPDU,格式与STP的配置BPDU大体相同,只是个别字段做了修改,以适应新的工作机制和特性。最重要的变化体现在标志字段中,改字段一共8bit,STP使用了最低比特位和最高比特位,RSTP在STP基础上,使用了剩余的6个比特位,Aggrement(同意)及Proposal(提议)用于RSTP的P/A机制,大大提升了RSTP的收敛速度
RSTP与STP不同,在网络稳定后,无论是根桥还是非根桥,都将周期性发送配置BPDU。RSTP在BPDU的处理上另一点改进是对于次优BPDU的处理,如果接口保存的BPDU比收到的BPDU更优,它将立即发送自己的BPDU,在STP中,非指定接口收到不优的BPDU时,它将等待20s的时间才能启动状态迁移。RSTP中,无论接口的角色如何,只要接口收到了次优BPDU,便立即发送自己的BPDU,使得RSTP收敛更快
边缘接口
STP中,一个接口从初始启动之后进入到转发状态至少需要耗费30s的时间(侦听15s,学习15s),这个过程是对于交换机上连接到交换网络而言必须的,接口存在产生环路的风险,但是交换机连接终端设备,很少出现环路,仍然需要经历上述过程就太低效了,可以将交换机的接口配置为边缘接口(Edge port)来解决上述问题,边缘接口缺省不参与生成树计算,当边缘端口激活之后,立即切换到转发状态,不用经历转发延时时间,不会触发RSTP拓扑变更
P/A机制
RSTP通过Proposal/Agreement(提议/同意)机制来保证一个指定接口得以从丢弃状态快速进入转发状态,从而加速了生成树的收敛,它是交换机之间的一种握手机制
假装有图,A、B交换机通信,运行RSTP协议,A和B都会在各自的接口上发送BPDU,初始时双方都认为自己是根桥,经BPDU交互之后,B认为A是根桥,A的G0/0/1接口为指定接口,B的g0/0/2接口为根接口,该接口将立即停止发送BPDU,这两个接口当前都处于丢弃状态,接下来P/A过程将在A、B之间发送。由于A的G0/0/1接口为指定接口且处于丢弃状态,因此A从G0/0/1接口发送proposal置位的BPDU,当B收到proposal置位的BPDU后,立即启动一个同步过程。此时RSTP的机制是确保指定接口(A的g0/0/1)能够快速进入转发状态,为了达到这个目的,必须确保该接口进入转发状态后网络中不存在环路,因此B的思路是:先将本地的所有非边缘接口全部阻塞,然后答复A,它这里不存在环路,你可以放心大胆的将接口切换到转发状态。当B所有的接口完成同步之后,它清楚本地接口不存在环路,立即将根接口G0/0/2切换成转发状态,并从该接口向A发送Agreement置位的BPDU,A收到之后,会将G0/0/1接口切换到转发状态,此时握手完成,由于B的指定接口此时已然处于丢弃状态,因此该接口也将向下游交换机发起一个P/A过程
保护功能
- BPDU保护,边缘端口收到BPDU之后改接口会变成一个普通的RSTP接口,这个过程可能引发网络中的RSTP重新计算,从而对网络造成影响,交换机激活该功能后,如果边缘接口收到BPDU则交换机会立即把接口关闭,同时触发告警
- 根保护,对于一个部署了RSTP的交换网络来说,根桥的地位是至关重要的,毕竟RSTP所计算出的无环拓扑跟根桥息息相关,在一个RSTP已经完成收敛的网络中,如果根桥发生变化,事变导致RSTP重新计算,毕竟根桥角色是可抢占的,部署根保护功能,即可规避上述问题,该接口收到更优的BPDU,则会忽略这些BPDU,并将接口切换到丢弃状态,如果接口不在收到更优的BPDU,一段时间之后,接口会自动恢复到转发状态
- 环路保护,出现在光纤网络中,出现收发单点故障,便会出现环路,根接口及丢弃状态的替代接口都可能出现,启用环路保护功能后,在根接口激活,该接口长时间没有收到BPDU,交换机会重新选举根接口,并将该接口的角色调整为指定接口,并将状态切换到丢弃状态,从而避免环路的产生;在替代接口激活,该接口长时间没有收到BPDU,交换机会将该接口的角色调整为指定接口,并将状态切换到丢弃状态,从而避免环路的产生;
- 拓扑变更保护(TC protection),一个稳定的交换网络不会频繁的出现拓扑变更,一旦出现拓扑变更,TC 比特置位的BPDU会被泛洪到全网,会触发网络中的交换机执行MAC地址表删除操作,被攻击者利用的话,对交换机的性能将受到极大的损耗,激活拓扑变更保护后,将在单位时间内只进行一定次数的TC BPDU处理,只会按照规定的次数进行处理,超出的部分,必须要等待一段时间才能进行处理
三、MSTP
RSTP虽然在STP的基础上进行了一定程度的优化,但仍然存在一个较大的短板,那就是当它们部署在交换网络中时,所有的VLAN公用一颗生成树,使得网络中的流量无法在所有可用的链路上实现负载分担,导致链路带宽,设备资源利用率低,如果存在一种生成树协议,它基于VLAN进行生成树计算,会针对每一个VLAN单独计算一颗生成树,从而是业务流量实现负载分担,然而如果VLAN数量庞大的话,交换机不得不为每个VLAN计算一颗生成树,那么设备资源消耗变的非常大,甚至可能影响到正常业务流量的处理。MSTP(多实例生成树协议)用来解决上述问题,能够兼容STP及RSTP,在改协议中,生成树不是基于VLAN运行的,而是基于Instance(实例)运行的,所谓Instance,也即一个或多个VLAN的集合,基于Instance的生成树称为MSTI(多生成树实例),MSTP为每个Instance维护独立的MSTI,注意一个Instance可以包含多个VLAN,但是一个VLAN只能被映射到一个Instance
MSTP Instance使用Instance-ID进行标识,取值0-4094,Instance0默认已经存在,缺省时,所有的VLAN都被映射到Instance0,创建Instance之后,我们可以针对MSTI进行主根桥、次根桥、接口优先级或cost等相关配置。这样一来,如果网络中存在大量VLAN,那么我们便可将这些VLAN按照一定的规律映射到不同的Instance中,从而通过MSTP实现负载分担
MSTP引入域(region)的概念,我们可以将一个大型交换网络划分为多个MST域(多生成树域),一个MST域内可以包含一台或多台交换机,同属一个MST域的交换机必须配置相同的域名、相同的修订级别,以及相同的VLAN与Instance的映射关系
这篇关于STP-RSTP-MSTP入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!