目录
3.多帧复制---这个好理解,同一个数据帧被重复收到多次,被称为多帧复制。
以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP (Spanning Tree Protocol)。
1.随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。如图,接入层交换机单链路上联,则存在单链路故障,也就是如果这根上联链路发生故障,交换机下联用户就断网了。另一个问题的单点故障,也就是交换机如果宕机,交换机下联用户也就断网了。
2.为了解决此类问题,交换机在互连时一般都会使用冗余链路来实现备份。冗余链路虽然增强了网络的可靠性但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。
BCMSN三层架构
三层架构:
接入层:提供端口的密度,用于用户终端的接入—二层交换机、AP
汇聚层(分布层):流量的集合,DHCP/VLAN/STP/HSRP/VRRP/channel…
QOS/ACL
核心层:nat、高速路由转发
冗余—备份 线路、设备、网关、UPS(电源)
(1)根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。
(2)本例中,SW3收到了一个广播帧将其进行泛洪,SW1和SW2也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SW3,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。
(1)交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。
(2)本例中,SW3收到一个广播帧泛洪,SW1从GEO/0/1接口接收到广播帧后学习且泛洪,形成MAC地址5489-98EE-788A与GEO/0/1的映射;SW2收到广播帧后学习且泛洪,SW1再次从GEO/0/2收到源MAC地址为5489-98EE-788A的广播帧并进行学习,5489-98EE-788A会不断地在GEO/0/1与GEO/0/2接口之间来回切换,这被称为MAC地址漂移现象。
为了保证备份链路的存在,并且不会出现二层环路,所以,我们设计了STP协议。
(1)STP通过构造—棵树来消除交换网络中的环路。
(2)运行STP算法,判断网络中存在环路的地方并阻断冗余链路,将环路网络修剪成无环路的树型网络,从而避免了数据帧在环路网络中的增生和无穷循环。
(1)交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整。
(如图,交换机上运行STP协议,会通过报文监控网络的拓扑结构,正常情况下是将SW3上的一个接口进行阻塞(Block),从而打破环路,当监控到SW1与SW3之间出现链路故障,则恢复阻塞端口进入转发状态。)
(2)因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。
生成树协议原理:在二层交换网络中,逻辑的阻塞部分的接口,实现从根交换机到所有节点唯一的路径且为最佳路径,生成一个没有环路的拓扑。当最佳路径出现故障时,个别被阻塞的接口将打开,形成备份链路。
生成树是相对比较早的一个协议了,所以,也经历了多种版本的更替。我们现在常见的主要是802.1D生成树(最早期的生成树种类),RSTP(快速生成树协议---定义在802.1W中,也被称为802.1W生成树),MSTP(多生成树协议---定义在802.1S中,也被称为802.1S生成树。)
我们首先需要关注的是最基本的802.1D生成树协议,其他版本都是在802.1D的基础上改进的本质原理相同。
所谓BPDU --- Bridge Protocol Data Unit,网桥协议数据单元---其实就是STP生成树需要发送的数据包的叫法。
1.BPDU是STP能够正常工作的根本。BPDU是STP的协议报文。
2.STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。
1.配置BPDU
2.TCN BPDU
其中,配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发
配置BPDU的报文格式
1.配置BPDU是STP进行拓扑计算的关键
2.只有根网桥主动发送配置BPDU,其他非根网桥都只是转发根网桥发送的配置BPDU。
接口cost是已经激活了STP的接口所维护的一个开销值,该值存在默认值,与接口的速率有关联,并且设备使用不同的算法时,相同的接口速率对应不同的Cost值。
(华为设备默认采用的是802.1t标准;华三设备默认使用的是自定义标准)
所有交换机刚启动,所有接口都激活STP,一开始,并不知道谁是根,则所有设备都将判定自己为根网桥,从字节的所有激活了STP的接口发送配置BPDU,则其中将包含本机参数。之后,所有设备都交换参数后,将根据参数数值进行选举,之后,将选举出一个真正的根网桥。之后,只有根网桥将周期的发送配置BPDU,而其他非根网桥只能在接受到根网桥发送的BPDU后进行转发。(转发时可以修改其中的参数。)--发送周期为2S,MAX AGE --- 20S。
TCN BPDU的报文格式
仅拥有配置BPDU的前三个参数,其中BPDU类型字段为Ox80。
TCN BPDU ---本地交换链路故障后,STP将重新收敛,为了加快刷新交互机的MAC地址表,将向本地所有STP接口发出TCN BPDU,邻居交换机收到TCN BPDU后将回复一个TCA位置1的配置BPDU,用于可靠性传出,之后将TCN BPDU逐级转发到根网桥处,由根网桥下发TC标记位置1的配置BPDU,逐级下发给所有的交换机,所有交换机在收到后将临时的将300S的MAC地址老化时间改为15S。
1.STP中一共存在四种角色
1.根网桥(也叫根桥)--- RB
(1)STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。
(2)根桥是一个STP交换网络中的“树根"。
(3)STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根"。
2.根端口--- RP
(1)每台非根网桥有且仅有一个接口将被选择为根端口,用来接受根网桥的BPDU
(2)一个非根桥设备上会有多个端口与网络相连,为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被称为“根端口"的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口。
(3)在选举出根桥后,根桥仍然持续发送BPDU,而非根桥将持续不断的收到根桥发送的BPDU。因此,在所有非根桥上选举一个距离根桥"最近"的端口(根端口),在网络收敛后,根端口将不断的收到来自根桥的BPDU。
(4)即:根端口保证了交换机与根桥之间工作路径的唯一性和最优性。
3.指定端口--- DP
(1)每条链路存在一个接口为指定接口,用来发送或者转发根网桥的BPDU
(2)网络中的每个链路与根桥之间的工作路径必须是唯一的且最优的。当一个链路有两条及以上的路径通往根桥时(该链路连接了不同的交换机,或者该链路连接了同一台交换机的不同端口),与该链路相连的交换机(可能不止一台)就必须确定出一个唯一的指定端口。
(3)因此,每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU。
4.非指定端口--- NDP
(1)所有剩余接口,没有任何角色,都属于非指定接口,非指定接口将被阻塞。
如图:根桥的选举先比较优先级,交换机SW1、2、3的优先级相等,则比较MAC地址,也优选最小的,所以SW1的BID最小,因此sw1为根桥,SW2和SW3为非根桥。
选举过程:
1.交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带"RootID、RPC.BID、PID"等关键字段,端口会针对这些字段进行PK。
⒉.首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。
3.当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。
4.当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口。
5.当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。
指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID
1.首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作为指定端口。
2.若RPC相等,则比较链路两端交换机的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口。
3.若BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口。
1.STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发送的帧用户数据帧)。
2.—旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了。
3.注意:非指定端口可以接收并处理BPDU。
图中所示为STP的端口状态迁移机制,运行STP协议的设备上端口状态有5种:
1.Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。
2.Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
3.Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
4.Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
5.Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。
802.1D生成树在收敛时主要是基于计时器收敛的。
首次收敛,所有设备最先进入的是阻塞状态,需要先停留20S(最大寿命时间)之后进入侦听,此状态停留15秒选举角色,之后进入学习状态,再停留15S,总共50S。
根桥故障
(1)在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。
(2)如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文。
(3)如果下游交换机一直收不到BPDU报文,Max Age计时器(缺省:20s)就会超时,从而导致已经收到的BPDU报文失效,此时,非根桥会互相发送配置BPDU,重新选举新的根桥。
端口状态:
(1)SW3的预备端口,20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。
收敛时间:
(1)根桥故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。
直连链路故障:
(1)当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。
(2)当网络稳定时,交换机SWB检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态。
端口状态:
(1)备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态。
收敛时间:
(1)直连链路故障,备用端口会经过30s后恢复转发状态。
3.非直连链路故障
非直连故障
(1)在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。
(2)若SW1与SW2之间的链路发生了某种故障(非物理故障),因此SW2一直收不到来自根桥SW1的BPDU报文,Max Age计时器(缺省:20 s)就会超时,从而导致已经收到的BPDU报文失效。
(3)此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置BPDU给SW3,通知SW3自己是新的根桥。
(4)在此期间,SW3的预备端口一直收不到包含根桥ID的BPDU,Max Age计时器超时后,端口进入到Listening状态,开始向SW2“转发"从上游发来的包含根桥ID的BPDU。
(5)因此,Max Age定时器超时后,SW2和SW3几乎同时收到对方发来的BPDU,再进行STP重新计算,SW2发现SW3发来的BPDU更优,就放弃宣称自己是根桥并重新确定端口角色。
端口状态:
(1)SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。
收敛时间:
(1)非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。
1.配置生成树工作模式
R是根端口,D是指定端口,A是阻塞端口
1.STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
2.STP没有细致区分接口状态和接口角色,不利于初学者学习及部署。
3.网络协议的优劣往往取决于协议是否对各种情况加以细致区分。
(1)从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
(2)从使用和配置角度来讲,接口之间最本质的区别并不在于接口状态,而是在于接口扮演的角色。
(3)根接口和指定接口可以都处于Listening状态,也可能都处于Forwarding状态。
4.STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
5.STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备进行处理,传遍整个STP网络。这也是导致拓扑收敛慢的主要原因之一。
通过端口的增补,简化了生成树协议的理解于部署。
1.RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口。
2.根端口和指定端口的作用同STP中定义,Alternate端口和Backup端口的描述如下:
(1)从配置BPDU报文发送角度来看:
Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。
Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。
(2)从用户流量角度来看:
Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。
Backup端口作为指定端口的备份,提供}另一条从根桥到相应网段的备份通路。
3.给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程。
RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:
1.Discarding状态:不转发用户流量也不学习MAC地址;
2.Learning状态:不转发用户流量但是学习MAC地址;。
3.Forwarding状态:既转发用户流量又学习MAC地址。
1.RSTP的配置BPDU充分利用了STP报文中的Flag字段,明确了端口角色。
2.除了保证和STP格式基本一致之外,RSTP作了如下变化:
(1)Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
(2)Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
3.RST BPDU报文格式:
4.RST BPDU与STP配置BPDU报文格式不同点,包括:BPDU类型和Flag字段。
(1)BPDU类型,1 Byte,RST BPDU的类型值为Ox02。
(2)标志,1 Byte,包括:
bit 7: TCA,表示拓扑变化确认;
bit 6: Agreement,表示同意,用于P/A机制;.bit 5: Forwarding,表示转发状态;
bit 4: Learning,表示学习状态;
bit 3和bit2:表示端口角色,00表示未知端口,01表示替代或备份端口,10表示根端口,11表示指定端口;
bit 1 : Proposal,表示提议,用于P/A机制;. bit 0:TC,表示拓扑变化。
边缘接口的UP和Down不会引起拓扑的变动
注意:这个PIA机制是RSTP快速收敛的核心手段,因为他改变了STP依照计时器收敛的方法,可以理解为完成选举后立即切换状态,完成收敛。
1.事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个ForwardDelay所有端口才能进行转发。
2.而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口进入Forwarding状态的速度。
1.在STP中,如果拓扑发生了变化,需要先向根桥传递TCN BPDU,再由根桥来通知拓扑变更,泛洪TC置位的配置BPDU。
2.在RSTP中,通过新的拓扑变更机制,TC置位的RST BPDU会快速的在网络中泛洪。·如上图所示:
(1)SW3的根端口收不到从根桥发来的RST BPDU后,Alternate端口会快速切换为新的根端口,启动TC WhileTimer,并清空状态发生变化的端口学习到的MAC地址。然后向外发出TC置位的RST BPDU。
(2)SW2接收到RST BPDU后,会清空接收口以外所有端口学习到的MAC地址,同时开启计时器,并向外发送TC置位的RST BPDU。
2.最终,RST BPDU会在全网泛洪。
BPDU保护
根保护
环路保护
1.RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但在划分VLAN的网络中运行RSTP/STP,局域网内所有的VLAN共享一棵生成树,被阻塞后的链路将不承载任何流量,无法在VLAN间实现数据流量的负载均衡,导致链路带宽利用率、设备资源利用率较低
2.为了弥补RSTP/STP的缺陷,IEEE于2002年发布的802.1S标准定义了MSTP ( MultipleSpanning Tree Protocol,多生成树协议)。MSTP兼容STP和RSTP,通过建立多棵无环路的树,解决广播风暴并实现冗余备份。
1.MSTP是IEEE 802.1S中定义的生成树协议,MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
2.MSTP可以将一个或多个VLAN映射到一个Instance (实例),再基于Instance计算生成树,映射到同一个lnstance的VLAN共享同一棵生成树。
3.如图中例子,经计算,最终生成两棵生成树:
(1)lnstance1对应的生成树以SW1为根交换设备,转发VLAN1~VLAN10的报文。
(2)lnstance2对应的生成树以SW2为根交换设备,转发VLAN11~VLAN20的报文。
(3)不同VLAN的报文沿不同的路径转发,实现了负载分担。
注意:生成树不是基于VLAN运行的,而是基于Instance运行的
1.同一个MST域的设备具有下列特点:
(1)都启动了MSTP。
(2)具有相同的域名。
(3)具有相同的VLAN到生成树实例映射配置。
(4)具有相同的MSTP修订级别配置。
2.Instance0是缺省存在的,而且缺省时,华为交换机上所有的VLAN都映射到了Instance0。
3.通过设置VLAN映射表(即VLAN和MSTI的对应关系表),把VLAN和MSTIl联系起来。
(1)每个VLAN只能对应一个MSTI,即同一VLAN的数据只能在一个MSTI中传输,而一个MSTI可能对应多个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
[sw1-mst-region]instance 2 vlan 6 to 10
[sw1-mst-region]active region-configuration 激活当前配置(必须配置该指令)
切记:若将创建某个组,但该组内的vlan,在本交换机上没有创建,同时没有为该vlan服务的接口;该组将没有任何信息;整个交换网络中所有设备的分组信息必须完全一致;
定义本地为组1 的主根,组2 的备份根
stp instance 1 root primary 优先级修改为0
stp instance 2 root secondary 优先级修改为4096