STP.RSTP协议理解
本作品内容为STP.RSTP协议理解,格式为 doc ,大小 892456 KB ,页数为 30页
('STP/RSTP协议理解文档密级华为三康技术有限公司Huawei-3ComTechnologiesCo.,Ltd.文档编号DocumentID密级Confidentialitylevel秘密文档状态DocumentStatus共29页Total29pagesDraft1.00STP/RSTP协议理解拟制Preparedby沈岭Date日期2004-11-03评审人ReviewedbyDate日期yyyy-mm-dd批准ApprovedbyDate日期yyyy-mm-dd华为三康技术有限公司Huawei-3ComTechnologiesCo.,Ltd.版权所有侵权必究Allrightsreserved2004-11-3华为三康机密,未经许可不得扩散第1页,共30页STP/RSTP协议理解文档密级修订记录RevisionRecord日期Date修订版本RevisionVersion修改章节SecNo.修改描述ChangeDescription作者Author2004-11-031.00x.x.x;initial初稿完成沈岭2005-11-081.1x.x.x;y.y.y修改算法的部分描述,删除问题1,添加图6,添加判断复杂拓扑的方法,更新部分问题的描述,添加STP和RSTP对inferiorBPDU的处理,添加STPTC-Protection特性沈岭2004-11-3华为三康机密,未经许可不得扩散第2页,共30页STP/RSTP协议理解文档密级目录1STP生成树协议.............................................................................................................................71.1STP的主要作用...............................................................................................................................71.2STP的基本原理:...........................................................................................................................71.3STP端口的角色和状态...................................................................................................................81.4端口状态:......................................................................................................................................91.5STP算法...........................................................................................................................................91.5.1问题1.........................................................................................................................................121.5.2问题2.........................................................................................................................................131.6STP的计时器:.............................................................................................................................131.7STP拓扑结构改变.........................................................................................................................141.8问题讨论........................................................................................................................................161.8.1问题3的答案:.........................................................................................................................161.8.2附加题:...................................................................................................................................162RSTP快速生成树协议................................................................................................................192.1RSTP的改进..................................................................................................................................192.2P/A协商.........................................................................................................................................222.3拓扑结构变化................................................................................................................................232.3.1问题1:.....................................................................................................................................242.3.2问题2:.....................................................................................................................................252.3.3问题3.........................................................................................................................................252.3.4问题4:.....................................................................................................................................252.3.5附加题.......................................................................................................................................262.4RSTP新增特性..............................................................................................................................262.4.1BPDUGuard..............................................................................................................................262.4.2RootGuard.................................................................................................................................272.4.3RootPrimary/Secondary............................................................................................................272.4.4LoopGuard................................................................................................................................272004-11-3华为三康机密,未经许可不得扩散第3页,共30页STP/RSTP协议理解文档密级2.4.5STPMcheck..............................................................................................................................282.4.6STPTC-protection.....................................................................................................................28推荐资料:...........................................................................................................................................29参考资料:...........................................................................................................................................292004-11-3华为三康机密,未经许可不得扩散第4页,共30页STP/RSTP协议理解文档密级图表目录图1BPDU的报文格式...........................................................................................................................7图2STP算法拓扑图.............................................................................................................................10图3另一种可能的拓扑图....................................................................................................................13图4更复杂的一种情况........................................................................................................................14图5Flag字段.........................................................................................................................................15图6TCN的发送和BPDU的泛洪.........................................................................................................16图7RSTP各端口角色..........................................................................................................................18图8RSTP/STPBPDU的区别...............................................................................................................20图9RSTP的Flags字段..........................................................................................................................20图10P/A协商机制................................................................................................................................22图11RSTP的TC泛洪...........................................................................................................................23图12RSTP的拓扑变化........................................................................................................................23前言众所周知,生成树协议是Lanswitching中最复杂的协议,协议的复杂度不仅表现在有STP/2004-11-3华为三康机密,未经许可不得扩散第5页,共30页STP/RSTP协议理解文档密级RSTP/MSTP等各种类型的生成树,以及各种参数和优化方案,更体现在算法、配置信息的交互比较和拓扑结构的变化上。根据学习过程中所做的一些实验,本文提供了对算法较详细的描述以及关于各种拓扑结构变化的讨论,相信会让大家STP/RSTP模块的理解能提供较大的帮助。2004-11-3华为三康机密,未经许可不得扩散第6页,共30页STP/RSTP协议理解文档密级STP/RSTP协议理解1STP生成树协议1.1STP的主要作用消除环路:通过阻断冗余链路来消除网络中可能存在的路径回环。链路备份:当前活动路径发生故障时,激活冗余备份链路,恢复网络连通性。1.2STP的基本原理:通过在交换机之间传递一种特殊的协议报文——BPDU(在IEEE802.1D中这种协议报文被称为“配置消息”)来确定网络的拓扑结构。配置消息中包含了足够的信息来保证交换机完成生成树计算。(注:此BPDU被称为配置BPDU,另外STP还有TCNBPDU。)DMASMAL/TLLCHeaderpayload0x0180c20000000x424203BPDU数据报文字节2协议版本11标志位184822MaxAge222目的MAC地址是一个固定的组播地址源MAC地址是发送配置消息的桥的MAC地址。配置消息固定的链路头帧长域值协议IDBPDU类型根桥ID最短路径开销指定桥ID指定端口IDHelloTimeForwardDelayMessageAgeDMASMAL/TLLCHeaderpayload0x0180c20000000x424203BPDU数据报文字节2协议版本11标志位184822MaxAge222目的MAC地址是一个固定的组播地址源MAC地址是发送配置消息的桥的MAC地址。配置消息固定的链路头帧长域值协议IDBPDU类型根桥ID最短路径开销指定桥ID指定端口IDHelloTimeForwardDelayMessageAge图1BPDU的报文格式2004-11-3华为三康机密,未经许可不得扩散第7页,共30页STP/RSTP协议理解文档密级注意看BPDU数据报文的最后8个字段,分别是:根桥ID:由树根的优先级(0-65535,默认32768)和MAC地址组合而成;到树根的最短路径开销(实际由PortPathCost叠加而成),有两个标准——dot1d-1998,默认值为100和dot1t,默认值为200000;指定桥的ID:由指定交换机的优先级和MAC地址组合而成;指定端口的ID:由指定端口的优先级(0-256,默认128)和端口编号组成;配置消息的生存期:MessageAge;配置消息的最大生存期:MaxAge;配置消息发送的周期:HelloTime;端口状态迁移的延时:ForwardDelay。启动了STP的交换机互相之间通过发送配置BPDU来完成根桥,指定桥的选举,各端口状态的选择和整个网络拓扑结构的确定。比较的关键部分在于这八个字段中的前四个字段,即:根桥ID、路径开销、指定桥ID和指定端口的ID。其实还有一个接收端口的ID,用于本地比较(当交换机的2个端口都收到相同的BPDU时——比如上连一个stpdisable的交换机或hub)。比较的原则:从上到下、从左到右数值小者优先。STP协议使用的所有BPDU都是组播报文,目的MAC是01-80-c2-00-00-00。1.3STP端口的角色和状态STP拓扑结构的建立微观上说是一个全网交换机互相交互的过程,各台交换机相互之间不停的发送配置BPDU,发送和接受BPDU的是各switch的Ports,BPDU不单在不同交换机的端口之间比较,也在交换机的内部作比较,如果发现比自己“优”的BPDU,就进行报文的更新,如果发现对方传来的BPDU不如自己的,则丢弃报文,直到再收不到比自己更优的BPDU为止。当网络中所有的交换机都处于这种状态的时候我们可以认为拓扑结构已经建立,但根端口和指定端口还得经过2个ForwardDelayTime才能进入转发状态。所以STP拓扑结构的建立实际上可以理解为端口角色的建立,所有端口都为指定端口的交换机被选为根桥,其余的为指定桥。这里要提到5个概念:根桥,指定桥,根端口,指定端口,Block端口。根桥就是“网桥ID”最优的桥,当STP的拓扑结构稳定之后由根桥负责每2秒(HelloTime)向树中所有的网桥发送配置BPDU报文,其他网桥接收并转发。根端口即去往根桥路径最近的端口,这个最近的衡量是靠RootPathCost来判定的。有关Path2004-11-3华为三康机密,未经许可不得扩散第8页,共30页STP/RSTP协议理解文档密级Cost的计算,是每当一个端口收到一个BPDU后,会在该BPDU所指示的PathCost上加上该端口的PortPathCost(这是可以人为配置的)。比较累计RootPathCost最小的端口就是根端口,如果有两条开销相同的路径,那么就选择桥BID较小的。指定桥就是对下游来说向它转发BPDU报文的桥,一个LAN上除了根桥以外的所有网桥都是指定桥。为什么这么说呢?根据定义而来,指定桥上必定有指定端口(即使是网络边缘的网桥也有——连接到主机的端口),而指定端口就是用来转发BPDU报文的。这里要注意的是拓扑稳定后RootPort是不发送BPDU报文的,虽然它的状态是Forwarding,它只接收BPDU。指定端口:即在一个LAN里面负责转发BPDU的端口,根桥和指定桥上都有它,但根端口只在指定桥上有,同样block端口也只存在于指定桥上。Block端口:即被对方的指定端口抑制的端口,Block端口不转发任何报文,但他接收BPDU,监听网络变化。根端口、指定端口、Block端口即为STP网桥端口的三个角色。1.4端口状态:如图所示,一共有5种端口状态:表1STP的五种端口状态前三个状态之间的转换各需要经过一个ForwardingDelayTime(15s),这也是可以人为配置的。关于几个计时器将在后面的内容加以介绍。1.5STP算法现在重点讲一下STP算法的实现,纯理论的讲算法过于枯燥,这儿以三台全互连的交换机为例描述一下实现过程。(注:关于状态机的标准实现可以参考IEEE.802.1D,这里只用容易理解的语言描述整个过程,可能有细节说法上不太规范,但更方便理解。)2004-11-3华为三康机密,未经许可不得扩散第9页,共30页Forwarding转发用户流量的状态,只有根端口或指定端口才有这种状态。Learning构建MAC地址表,这时接收到用户帧,网桥会填充自己MAC地址表。所以是学习“状态”。Listening根桥、根端口、指定端口的选择就是在该状态内完成。Blocking仅仅接收ConfigurationBPDU。Disabled或Down,认为阻断或物理上断掉。STP/RSTP协议理解文档密级图2STP算法拓扑图为了描述方便,这里指比较BPDU的前四项:根桥ID(以以太网交换机的优先级表示),根路径开销,指定交换机ID(以以太网交换机的优先级表示),指定端口ID(以端口号表示)。假设SWA,SWB,SWC的桥优先级分别为0,1,2。各链路开销为2,3,6。这里要特别说明一点:RootPathCost不是一个可配置项,即它是由交换机根据PortPathCost比较而累积得出的,PortPathCost才是一个可配置的选项。图中的链路开销可理解为2端端口的PortPathCost,只不过它们恰好相同而已。(1)初始状态各台交换机的各个端口在初始时会生成以自己为根的配置消息,根路径开销为0,指定交换机ID为自身交换机ID,指定端口为本端口。SwitchA:端口AP1配置消息:{0,0,0,AP1}端口AP2配置消息:{0,0,0,AP2}SwitchB:端口BP1配置消息:{1,0,1,BP1}端口BP2配置消息:{1,0,1,BP2}SwitchC:端口CP2配置消息:{2,0,2,CP2}端口CP1配置消息:{2,0,2,CP1}(2)选出最优配置消息各台交换机都向外发送自己的配置消息。相互进行比较,如果收到比自己更优的BPDU则进行2004-11-3华为三康机密,未经许可不得扩散第10页,共30页STP/RSTP协议理解文档密级BPDU的更新,把对方的BPDU信息缓存下来,并不再发送BPDU。(3)确定根桥,确定根端口,确定其余端口为指定端口还是Block端口。例子中各台交换机的比较过程如下:SwitchA:端口AP1收到SwitchB的配置消息,SwitchA发现本端口的配置消息优先级优于接收到的配置消息的优先级,就把接收到的配置消息丢弃。端口AP2的配置消息处理过程与端口AP1类似。SwitchA发现自己各个端口的配置消息中树根和指定交换机都是自己,则认为自己是树根,各个端口的配置消息都不作任何修改,以后周期性的向外发送配置消息。此时两个端口的配置消息如下:端口AP1配置消息:{0,0,0,AP1}。端口AP2配置消息:{0,0,0,AP2}。SwitchB:端口BP1收到来自SwitchA的配置消息,经过比较后SwitchB发现接收到的配置消息的优先级比端口BP1的配置消息的优先级优,于是更新端口BP1的配置消息。端口BP2收到来自SwitchC的配置消息,SwitchB发现该端口的配置消息优先级优于接收到的配置消息的优先级,就把接收到的配置消息丢弃。则此时各个端口的配置消息如下:端口BP1配置消息:{0,0,0,AP1},端口BP2配置消息:{1,0,1,BP2}。确定根端口:SwitchB对各个端口的配置消息进行比较,(这是一个计算的过程,将各个端口的配置BPDU读取并加上PortPathCost然后进行比较,其他的字段值不改变。为何要这么做?想想根端口的概念,根端口也就是到根桥最近的端口,交换机如何确定那个端口到根桥最近?自然要把各端口的BPDU加上他们的PootPathCost来比较)选出端口BP1的配置消息为最优配置消息,然后将端口BP1定为根端口。BP1配置消息不作改变:{0,0,0,AP1}。确定指定端口:每一个非根端口都会做如下比较:将根端口保存的BPDU加上根端口的PortPathCost并把BID修改为本桥PID修改为本端口后和本端口的BPDU比较,如果比本端口的BPDU更优,则本端口被选为指定端口,(如果本端口的更优,那么本端口被选为Blocking端口)并且原BPDU被刷新,下一次向外发送更优的BPDU。(为何要这么做?想想指定端口的概念,指定端口用来转发到达根桥的信息,当然要加上根端口到根桥的距离,并且指定端口发送的BPDU肯定要比对端的要优,那么如果对端发过来的BPDU被刷新,这个端口肯定是指定端口)。端口BP2配置消息中,树根ID更新为最优配置消息中的树根ID,根路径开销更新为2,指定交换机ID更新为本交换机ID,2004-11-3华为三康机密,未经许可不得扩散第11页,共30页STP/RSTP协议理解文档密级指定端口ID更新为本端口ID,配置消息变为:{0,2,1,BP2}。SwitchC:端口CP2先会收到来自SwitchB端口BP2更新前的配置消息{1,0,1,BP2},SwitchC触发更新过程,更新后的配置消息如下:{1,0,1,BP2}。端口CP1收到来自SwitchA的配置消息{0,0,0,AP2}后SwitchC也触发更新过程,更新后的配置消息如下:{0,0,0,AP2}。经过比较,端口CP1的配置消息被选为最优的配置消息,端口CP1就被定为根端口;而端口CP2就会被选为指定端口,并发送更新后的BPDU:{0,6,2,CP2}接着端口CP2会收到SwitchB更新后的配置消息{0,2,1,BP2},由于收到的配置消息比原配置消息优,则SwitchC触发更新过程,更新后的配置消息为:{0,2,1,BP2}。同时端口CP1收到来自SwitchA配置消息,比较后SwitchC不会触发更新过程,配置消息仍然为:{0,0,0,AP2}。经过内部比较,(CP1{0,6,0,AP2},CP2{0,5,1,BP2})端口CP2的配置消息被选为最优的配置消息,端口CP2就被选为根端口,而端口CP1就被阻塞,状态稳定后,不接收从SwitchA转发的数据,直到新的情况触发生成树的计算,比如从SwitchA到SwitchC的链路down掉,或者端口收到更优的配置消息。1.5.1问题1如果RootPort一直保存根桥发来的最优的BPDU,那么如果从另一个端口学到更优的路径,它怎么能接受那个实际上应该是更优的BPDU呢?(此时根端口的路径开销是0)答:交换机内部进行比较来确定端口角色的时候是要加上端口的PortPathCost的,所以根端口虽然储存了最优的配置信息,但加上端口路径开销以后就没有别人的“优”了。这时根端口的骄色就要拱手相让,交换机存储的根桥信息也要重新更新。1.5.2问题2现在给出一个更复杂的结构,你能正确判断拓扑结构和各端口的状态吗?各端口的PortPath2004-11-3华为三康机密,未经许可不得扩散第12页,共30页STP/RSTP协议理解文档密级Cost如图所示:图3更复杂的一种情况1.6STP的计时器:一共有3个,简单讲一下。1.HelloTimer:根桥发送BPDU之间的时间间隔。也是网络初始化的时候,每个网桥发送各自的BPDU的时间间隔。注意,当网络拓扑稳定之后,该计时器的修改只有在根桥修改才有效。根桥会在之后发出的BPDU中填充适当的字段以向其他非根桥传递该计时器修改信息。2.ForwardingTimer:指一个端口Listening和Learning的各自时间,默认为15秒,为了保证BPDU在全网中的转发,所以作如此设定。这个值是可以配置的,由于ForwardingTimer的限制,一般建议网络的直径应小于7。3.MaxAge:存储BPDU最长的时间,超过这个时间端口接收不到BPDU,就会采取相应的措施。这个时间默认为20秒。这里还要提到TimerFactor和Messageage两个参数,关于计时器的详细作用可以参考tech上的其他文档,这里不多做讨论了。这三个时间在拓扑稳定后都是由根桥发出的,由根桥在全网统一计时器,在根桥修改才有效,timefactor因子是可以在本地配置的。另外还有一个TCN的HelloTime也是在本地配置的,下面将会提到。2004-11-3华为三康机密,未经许可不得扩散第13页,共30页STP/RSTP协议理解文档密级1.7STP拓扑结构改变还记得STP的2个BPDU包吗?除了配置BPDU以外,还有个TCNBPDU(TopologyChangeNotificationBPDU)。TCNBPDU的结构很简单,只有CongurationBPDU的前3个字段,也就是Protocol、Version、Type,其余的字段均为填充字节,可以说这是一个不带桥信息的BPDU。TCN的发送按照本地配置的HelloTime,不同于配置BPDU的2s的HelloTime。STP中网桥怎么会认为拓扑结构发生改变了呢?根据以下2个原则:1)原来处于转发状态的端口down了(处于Blocking状态——非disable状态);2)一个端口转移到了Forwarding状态,并且网桥有一个指定端口。对于拓扑结构改变可以作如下理解:这里的拓扑结构不是指物理上的拓扑变化,而是指树的结构的变化,比如A,B,C三台交换机互联,原本的结构是A(R),B,C——A,C之间不通,后来变为A(R),C,B——A,B之间不通。这就叫做拓扑结构的改变。同样如果A,B之间又加了一条链路,但是新加的链路被阻断了——即不影响原来数据流量的转发,则认为拓扑结构没有发生变化。只要2个原则中的任何一种情况发生,则认为是拓扑结构发生了变化,检测到拓扑结构变化的交换机会从自己的根端口向上发送TCN,上行的指定端口接收到发来的TCN以后,会以本身的配置BPDU(此时将Flag字段中的TCA置1,Flag中一共有2个有效比特位,一个是TC,一个是TCA,关于Flag的描述见图1-3)回送一个确认。并通过它的根端口继续向上发TCN,一直到达根桥为止。发送TCN的交换机收到确认以后将不再发送TCN,如果上行指定端口没有发回确认,则下行的根端口会不断发送TCN。Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TCAReservedTC图4Flag字段当根桥受到TCN以后由根桥向全网泛洪TC位置1的配置BPDU,所有的交换机都会转发这个报文直到整个网络都知道拓扑结构发生了改变。根桥发送这个BPDU的时间是20s+15s=35s,MaxAge+ForwardingTime的时间。2004-11-3华为三康机密,未经许可不得扩散第14页,共30页STP/RSTP协议理解文档密级图5TCN的发送和TC的泛洪根桥发送这个BPDU的实质是为了加快MAC地址表的老化——一般情况下MAC地址表要300s才能老化,而已经知道拓扑结构发生变化的情况下还要等上数分钟才能通过其他链路转发数据,这会在一段时间内造成报文的无法转发,最糟糕的就是刚好要等5分钟。图6拓扑变化导致A一段时间内无法ping通B图6中,B的mac地址学习在1端口,当拓扑变化后,2端口所在链路变成Forwarding,1被阻断,但是B的MAC地址还是学习在端口1,如果B不发送任何数据报文来刷新MAC表,那么A只有等到B的MAC地址老化后才能重新访问到B。TC正是通知各交换机将MAC地址老化时间更新为ForwardingTime=15s。交换机收到TC15s以后开始删除MAC地址表并重新学习,正好完成状态的迁移。2004-11-3华为三康机密,未经许可不得扩散第15页,共30页STP/RSTP协议理解文档密级1.8问题讨论1.8.1问题3的答案:最后的稳定状态是A是根桥,BP2为Blocking状态。BC间链路不通。解释一下:判断拓扑结构变化时有个一简单的方法,以此图为例。{RootBridgeID:RootPathCost:DesignatedBridgeID:DesignatedPortID:BridgePortID}以上这5个值优先级的比较我们可以纵向的来看,放在一个宏观的环境下,毫无疑问,根桥肯定是马上比较出来的,因为这是最先比较的。接下来比较RootPathCost,B到A有2条路径RootPathCost都为4(这里需要说明的是,各端口配置的PortPathCost表示通过此端口到根桥的开销,所以B到A的开销分别有2个,一个是通过BP1的4,另一个是通过BP2,CP1的3+1=4,根桥上端口的PortPathCost是没有意义的,不会参与路径开销的计算),既然路径开销相同那就继续往下比,比指定桥ID,很明显BP1接收到的BPDU是A传来的,BP2接受到的,于是B选择AB路径。C就不用多说了,肯定是选AC(1<4+1)。这时拓扑结构就出来了,BC被阻断,那么到底是哪个端口被认为是Blocking端口呢,嘿嘿,自然要比较两者的BPDU。第一次BPDU比较后BP2和CP2均为DesignatedPort,它们会继续发送并比较BPDU,显然BP2被抑制了,所以最后BP2被阻断。(实际情况中不大可能出现链路同时通,同时开始比较BPDU的情况,上面提出如此假设是为了更好地说明端口瞬间状态变化的情况,一般情况下,都没有这么复杂)1.8.2附加题:如何迅速判断一个复杂网络的拓扑结构呢?教各位一个宏观看世界的方法。(图中数字表示链路的开销和交换机优先级)2004-11-3华为三康机密,未经许可不得扩散第16页,共30页STP/RSTP协议理解文档密级图7如何快速判断一个复杂网络的拓扑1.确定根桥根据优先级,交换机0被选举为整个LAN的根桥。2.从优先级次高的交换机逐一比较,确定那条链路到根桥最近,确定根端口对于交换机1来说,0-1之间的链路是到根桥0最近的,交换机1上到根桥最近的端口就是根端口。对交换机2来说,0-2之间的链路是到根桥最近的,交换机2上到根桥最近的端口就是根端口。3.阻断无用链路对交换机2已经认为从0-2链路可以最快的到达根桥,那么它就不会认为通过2-1-0到达根桥的这条路径是更优的,所以对交换机2来说,这条无用链路应该被阻断。再看交换机3,3-2-0和3-1-0的路径是相同的,对于BPDU来说,比较的第三个字段是BID,也就是说交换机3会选择一个更优的指定桥,所以3-1-0的路径是更优的,3-2链路会被阻断。交换机4认为4-3-1-0路径是最优的,那么它就会阻断通过另2个候选指定桥到达根桥的链路——4-1-0,4-2-0。最后的拓扑如下:2004-11-3华为三康机密,未经许可不得扩散第17页,共30页STP/RSTP协议理解文档密级图8最后的拓扑2004-11-3华为三康机密,未经许可不得扩散第18页,共30页STP/RSTP协议理解文档密级2RSTP快速生成树协议讲了这么多STP,我们来说说RSTP。为什么要引入RSTP,自然是因为STP存在很多的不足。现在主流的交换机都基本不用STP了,我司的设备默认的也是RSTP,当然为了和用户使用的旧的STP特性的交换机互连,我们支持兼容模式的STP,但实现起来更像RSTP,和传统的STP是有区别的。STP和RSTP的互操作会在以后讲到。先说一说RSTP所作的相应改进。2.1RSTP的改进STP最主要的缺点就是收敛速度慢,任何端口都非要等2个ForwardingTime以后才能进入转发状态,这在某些情况下非常没有必要,并且STP对拓扑结构的改变也没有很快速的响应机制,加快MAC地址表老化以后还是通过计时器来做最后的收敛,过于被动。RSTP针对这些情况作了如下修改。首先,RSTP的端口角色相对原来STP的RootPort,DesignatedPort,BlockingPort增加了AlternatePort、BackupPort和EdgePort(包括在DesignatedPort中),取消了BlockingPort的概念。RootPort和DesignatedPort的稳定状态为Forwarding,AlternatePort和BackupPort的稳定状态为Discarding。总的端口状态也从原来的五种减少到了3种Learning、Forwarding、Discarding(原Disable、Blocking、Listening状态)。而且RSTP的BPDU不再是由根桥统一发送,每个网桥都会发送自己的BPDU,和后面的TC一样,有助于加速网络的收敛。接下来说说两个新增的端口角色,AlternatePort和BackupPort。2004-11-3华为三康机密,未经许可不得扩散第19页,共30页STP/RSTP协议理解文档密级图9RSTP各端口角色如图所示,Alternate和Backup端口的位置如上,可作这样的理解,AlternatePort是被对端的更优的BPDU抑制的端口,同时它作为根端口的备份,当C的根端口down掉以后它可以提供另一条到根的路径。BackupPort可以理解为被本机的其他端口抑制的BPDU,(注意:此时B下连的是一个STPDisable的交换机,可以理解为网桥)作为本机指定端口的备份。EdgePort指和终端相连的端口,由于不会再产生回路所以加快了端口状态的迁移——当一个端口被配置为EdgePort以后如果连通它能马上就进入转发状态,这个时间是毫秒级的,非常快速。但要是以后它又受到了BPDU,表明可能产生了环路,此时端口角色会发生变化,不再作为EdgePort,转入一般的正常状态,这个端口是需要本地配置的。RSTP最大的特点是对STP的状态迁移速度进行了优化,一共体现在3个方面。1.刚才提到的边缘端口,能迅速进入快速转发状态。2.AlternatePort的快速迁移,当根端口由Forwarding变成了其他状态,它的备份Alternate端口就会迅速起来替代根端口工作,进入Forwarding状态,并且不需要发布任何配置消息。这个速度也是非常快的,以毫秒计算。(值得一提的是,除了根端口失效以外,如果AlternatePort收到更高级的BPDU——刷新桥优先级向量,也会迅速转到Forwarding状态,并成为根端口。)3.协商机制,这是RSTP运用最广的提速机制,使用在点对点链路上,所谓的点对点链路由端口之间协商决定,必须为全双工,(如果半双工需连接在共享链路)或者是汇聚端口的主端口。这时一边的处于discarding状态的Designated端口会向对方发出协商,如果对方发出确认,协商通过,那么2边的端口都会迅速迁移到Forwarding状态。理论上来说一次协商2004-11-3华为三康机密,未经许可不得扩散第20页,共30页STP/RSTP协议理解文档密级的时间为2个HelloTime,也就是4秒。但我司的交换机也把这个4秒给省了,以毫秒计算。思科设备似乎有一定的延时,但没有4秒那么长。说一下另一个重要区别吧——就是BPDU包的区别。前面讲的STP的BPDU包的格式还记得吗?RSTP的BPDU和STP的也差不了多少,主要是在协议版本号,BPDU类型和Flags字段有所不同,对于运行在STP模式下的交换机来说,收到版本号为02的BPDU就会丢弃,所以RSTP必须提供兼容STP运行的STP兼容模式,才能很好的和运行STP的网络进行互连。图10RSTP/STPBPDU的区别解释一下这里的Flags字段,如下图:Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TCAAgreementForwardingLearningPortroleProposalTC2004-11-3华为三康机密,未经许可不得扩散第21页,共30页STP/RSTP协议理解文档密级TCA=TopologyChangeAcknowledgementTC=TopologyChangePortrole=00Unknown01Alternate/Backup10Root11Designated图11RSTP的Flags字段图2-2种标出的2c只是RSTPFlags字段的一种可能取值,比较图2-3我们就能发现这种BPDU对应的状态是00101100,也就是Forwarding,Designated,用PC抓包经常能看到这样的报文,另外还有0e——向对方提出协商,proposal位置1;2d——拓扑改变,发TC。这是几个比较常见的Flags格式。RSTPBPDU由于多了最后的Version1length字段,所以为36字节,STP为35个字节。在我司设备上displaystp能看到这样几个标识:TCN,ConfigurationBPDU,RST,其中RST即为RSTP的BPDU报文。从这里我们也可以看到,RSTP是没有TCN报文的,当发生拓扑结构改变时,RTSP将BPDU中的TC位置1,然后向根端口发送。关于RSTP的拓扑结构改变后面将会有介绍。2.2P/A协商RSTP的协商机制是一个必须要了解的东东,它有以下几种状态机:1.proposing.当一个指定端口处于discarding或learning状态的时候,会设置该变量。向下游交换机传递Proposalflag被置位的RSTBPDU。2.proposed.当收到指定端口发来的proposalBPDU的时候,该变量设置。该变量指示本网段上的指定端口希望尽快的进入forwarding状态。3.sync.当proposed被设置以后,收到proposal的根端口会依次为自己的其他端口设置sync变量。将所有不是Edgeport的指定端口转为discarding状态。4.synced.当端口完成转到discarding后,会设置自己的synced。Alternate、Backup和边缘端口会马上设置该变量。根端口监视其他端口的synced,当所有其他端口的synced全被设置,根端口会设置自己的synced,然后传回RSTBPDU,其中Agreementflag被设置。5.agreed.当指定端口接收到一个RSTBPDU的时候,如果该BPDU中的agreementflag被置位且端口角色字段是“根端口”。该变量被设置,当agreed被设置的时候,指定端口马上转入forwarding状态。2004-11-3华为三康机密,未经许可不得扩散第22页,共30页STP/RSTP协议理解文档密级具体的实现是这样的,其实是一个很简单的过程,前面讲到了协商发生在点到点的链路上,假设我们把这个过程理解为根桥接着一台交换机再接着一台交换机……的情况,从最上游开始进行协商,根桥处于Discarding状态的指定端口向对端发proposal置1的BPDU,对方收到和自己一比较,发现自己的角色应该变为根端口,设置proposed并进入sync状态,将指定端口discarding掉,这是为了阻塞所有的下行链路以防止可能环路的产生,按照上述状态机,各端口都进入synced状态,根端口回送一个agreement置1的BPDU,指定端口收到后马上将自己转入Forwarding状态。根端口所在的交换机的指定端口此时也满足DiscardingDesignated状态,也会继续向下游进行协商。一直到最后遇到边缘端口结束,迅速收敛。或者在环路中对端为Discarding端口,协商无法继续进行,则30s以后指定端口进入转发状态。图12P/A协商机制2.3拓扑结构变化由于RSTP和STP在本质上区别不大,关键是解决了STP端口状态迁移速度慢的问题,当拓扑变化时(RSTP判断拓扑结构变化的标准是:非边缘端口的端口进入Forwarding状态)。发现变化的交换机会做以下工作:1.为本桥的所有非edge指定端口启动一个计时器TCWhileTimer(2倍的hellotime),如果是根端口上有变化,根端口也要启动。2.清空这些端口上的MAC地址;3.在TCWhileTimer有效期内,这些端口向外发送TC位置1的BPDU。(注意:这里和STP的不同,所有的端口都要发,STP是只有根端口才发送的)2004-11-3华为三康机密,未经许可不得扩散第23页,共30页STP/RSTP协议理解文档密级其他桥接收到TCRSTPBPDU,作如下变化:1.清空除收到TC端口以外的所有端口的MAC地址2.在所有的端口和根端口上启动TCWhileTimer,并发送TC位然后在这段时间内,这些端口也向外发送TC。图13RSTP的TC泛洪RSTP把STP的刷新MAC地址表时间缩短为直接刷新——这样的确是更有效率的。并且由各个交换机逐级泛洪,进一步减小了用户因为拓扑结构改变而造成的暂时性无法访问的问题。需要强调一点:TC是在发现拓扑结构改变以后再发出的,也就是说STP的网络实际上已经稳定了。TC的作用只是刷新MAC地址表而已。还是来讨论一下具体的实例吧,这里以3台交换机组成的环为例,采用RSTP,看一下各种可能出现的拓扑变化吧。(假设各路径开销均为1,A,B,C优先级分别为0,1,2)图14RSTP的拓扑变化2004-11-3华为三康机密,未经许可不得扩散第24页,共30页STP/RSTP协议理解文档密级2.3.1问题1:拔掉AC之间的链路,拓扑会如何变化?答:C马上发现CP1链路断开,因为CP2是AlternatePort,会迅速接替CP1作为新的根端口,进入Forwarding状态,瞬间收敛。2.3.2问题2:拔掉AB之间的链路,拓扑如何变化?答:B马上发现到A的链路断开,此时它会认为自己是根桥,向C发BPDU,但是CP2此时还保存着原来由BP2发来的BPDU。CP2收到的BPDU指示根ID已经发生了变化,但指定桥ID还是原来的那个,于是CP2认为通过那个指定桥到达根的路径已经发生了变化,于是马上删除这个BPDU并保存新收到的BPDU。此时交换机经过内部比较发现CP2的BPDU应该被刷新,于是此CP2被认为是指定端口并将刷新后的BPDU发送出去。由于它现在处于DiscardingDesignatedPort状态,所以会与对端进行协商,BP2收到CP2的BPDU,认为自己为根端口,并回送agreement,协商成功,瞬间收敛。注意:这里要指出的是我司的交换机当根端口变为指定端口的时候有2种实现的方式——一种保持Forwarding状态不变,另一种变为Discarding状态。如果这里BP2变为Discarding,此时正好满足协商的条件,BP2将会发送proposal,由于此时C保存了新的BP2的配置消息,并认为自己是根端口,所以协商成功,CP1被Discarding。印象中这么实现的交换机有一个很奇怪的行为即如果对端为Discarding端口,协商不成功,该指定端口进入Forwarding之后还会不停的发proposal置1的BPDU——想想看这是为什么。随后C的行为为CP1Forwarding,CP2Discarding后马上Forwarding。从时间上来看和前一中实现相差无几,只不过多了几个Discarding状态。2.3.3问题3降低B的优先级,使B成为根,拓扑会如何变化?答:CP1被Discarding,CP2转为Forwarding(AlternatePort),其他端口状态均无变化。但如果是我司另一种实现的交换机此时B的2个端口都会和对端进行协商,导致AP2也被Discarding,2004-11-3华为三康机密,未经许可不得扩散第25页,共30页STP/RSTP协议理解文档密级但此时协商不成功AP2将会经过30s才进入Forwarding状态,不过对网络的拓扑已经没有影响了,数据流量还是走ABC的链路。2.3.4问题4:降低C的优先级,使C成为根,拓扑会如何变化?答:CP2和对端进行协商,BP1被Discarding,其他端口状态没有变化。如果是我司另一种实现的交换机则CP1也会和对端协商,AP1被Discarding,经过30s进入转发,但同样对拓扑不造成实际影响。2.3.5附加题(1)STP和RSTP中对inferiorBPDU处理有何不同。(2)如图,如果A,B中的链路down了,STP和RSTP各会如何处理。答:(1)STP中DesignatedPort收到inferiorBPDU会马上把端口保存的更优的BPDU发送出去,但对非DesignatedPort不会做同样处理。RSTP中不管是否是DesignatedPort,收到inferiorBPDU都会马上发送本地更优的BPDU给对端。(2)STP中:A,B中链路down,B会认为自己是根桥,并发送配置BPDU。但CP2不会回应更优的BPDU,直到maxage=20sCp2上保存的原BP2的BPDU超时,CP2才发送新的以A为根的BPDU。B接收到后,承认A为根。再经过30s,BP2进入转发状态。一共经历50s的时间。RSTP中:A,B链路down掉后,CP2收到BP2发来的inferiorBPDU会上发送本端口更新后的2004-11-3华为三康机密,未经许可不得扩散第26页,共30页STP/RSTP协议理解文档密级更优BPDU(详见RSTP问题2),且此时CP2处于Designated、Discarding状态,发送BPDU,且proposal置位。B收到后开始同步,拓扑瞬间收敛。2.4RSTP新增特性2.4.1BPDUGuard上文提到过边缘端口在收到BPDU以后端口状态将变为非边缘端口,此时就会造成生成树的重新计算,引起网络震荡。这些端口正常情况下应该是不会收到生成树协议的配置消息的。如果有人伪造配置消息恶意攻击交换机,就会引起网络震荡。BPDUGuard可以很好的避免这种情况,如果边缘端口收到BPDU端口会被关闭,只有网络管理员才能打开。这个特性是要本地配置的。2.4.2RootGuard望文生义,此功能用来保护根桥,防止错误的配置消息或者有人恶意攻击,使根桥收到优先级更高的BPD,而失去根桥的地位,重新进行生成树的计算(此时停止攻击必然引起又一次的网络震荡),并且由于拓扑结构的变化,可能造成高速流量迁移到低速链路上来,引起网络拥塞。RootGuard命令须在所有的指定桥上的指定端口配置,一旦该端口收到优先级更高的BPDU将转为Discarding状态(此Discarding状态类似于STP的Listenning),一段时间收不到错误的信息,又会回到Forwarding状态。注:如果长时间受到攻击,数据流量将无法正常转发,但能将攻击控制在网络边缘,对整个交换网的稳定有很大好处。2.4.3RootPrimary/Secondary用户可以通过该功能指定一个根交换机,指定一个到多个备份根交换机。当根交换机出现故障或被关机时,备份根交换机可以取代根交换机而成为根,如果设置了多个备份根交换机,则MAC地址最小的备份根交换机将成为根。当设置为RootPrimary或者RootSecondary,则用户无法修改交换机的桥优先级。注意:也不能完全避免恶意攻击,如果有人采用Priority0,Mac地址较小的BPDU同样可以达2004-11-3华为三康机密,未经许可不得扩散第27页,共30页STP/RSTP协议理解文档密级到目的,此时RootRrimary失效。2.4.4LoopGuard由于根端口和Alernate端口是靠不断收到上游发来的BPDU才能维持其角色不变的,所以当出现链路拥塞或者单向链路故障,就会导致根端口和Alternate端口信息老化。根端口老化,会导致系统重新选择根端口(而这有可能是错误的),Alternate端口老化,将迁移到forwarding状态。这样,环路就产生了。为了防止这种情况发生,RSTP提供端口LoopGuard功能防止根端口和Alernate端口老化时迁移到forwarding状态。虽然老化时,这两种端口可以成为指定端口角色,但是状态将保持在Discarding,直到收到BPDU(除了TCN报文)才进行正常处理。从而防止因为链路拥塞或者单向链路故障而出现RSTP环路。我们可以做这样一个实验:2台交换机通过2条链路对接,在根端口的对端使用STPDisable命令(端口视图下),最后会发现所有的端口都处于Forwarding状态,形成环路。注意:不能在端口上同时启动Loopguard,rootguard和portfast,这三者不能在同一个端口上共存。当端口状态被Loopguard功能锁定为Discarding,则如下任何一种情况发生,都将解除状态锁定,恢复正常处理。1)禁止端口Loopguard2)收到BPDU3)关闭全局或者该端口的生成树协议4)Link-Down5)端口所在接口板热拔出2.4.5STPMcheckRSTP和STP兼容的情况下,如果运行STP的网桥被迁移此时RSTP的STP兼容模式不会回到RSTP状态,需要人为的在运行STP兼容模式的接口上Mcheck一下,这是基于标准来实现的。2.4.6STPTC-protection如果有人进行TC报文的攻击,交换机会在全网泛洪并频繁的删除MAC和ARP表项,对CPU的2004-11-3华为三康机密,未经许可不得扩散第28页,共30页STP/RSTP协议理解文档密级冲击很大。启动TC-protection后,收到大量的TC3s后的15s内不处理,如此循环。2004-11-3华为三康机密,未经许可不得扩散第29页,共30页STP/RSTP协议理解文档密级推荐资料:《STP/RSTP理解报告》边江——综合的介绍了STP/RSTP,是经得起细致研究的好材料。《RSTP协议》ppt柳晴——内容细致,详细描述了配置相关的各种参数,非常全面的作品。参考资料:《CiscoLanSwitching》6,7章802.1D,802.1wCisco–UnderstandingRapidSpanning-TreeProtocol2004-11-3华为三康机密,未经许可不得扩散第30页,共30页',)
提供STP.RSTP协议理解会员下载,编号:1700665763,格式为 docx,文件大小为30页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。