首先,简要比较PDU中802.1D和802.1W的结构和差异。
生成树协议有两种BPDU。
一. Configuration BPDU :
在802.1D中,在初始化生成树时,每个Bridge自己生成BPDU,在收到更好的(superior ) BPDU后,将其更改为更好的BPDU。 STP域收敛后,整个网络的所有配置BPDU都将成为根网桥的配置BPDU。 当然,每个Bridge都可能修改BPDU的内容,例如TCA标签;
在802.1W中,将该BPDU全部更改为由Bridge自身生成,只需在Root ID中填充已知的Root Bridge的Bridge ID即可。 配置BPDU以本机方式生成很重要。 这将允许RSTP在拓扑更改时更新MAC表,而无需等待根网桥配置BPDU。
二. TCN BPDU
在802.1D中,TCN BPDU从知道网络拓扑的改变的桥中产生并在根端口(下文中称为R-Port )的方向上发送。 在接收到TCN BPDU的Bridge中有两个动作: 1、继续从R-Port传输,并期待从R-Port接收TCA集的结构的BPDU; 另一方面,在下次发送配置BPDU时,向该指定端口(以下称为D-Port )发送TCA套件的配置BPDU进行确认。 Bridge将生成并发送TCN BPDU,直到收到由TCA设置的BPDU。 此动作将持续到根网桥接收到TCN BPDU为止。 然后,Root Bridge发送新配置的BPDU,将整个STP域的Bridge老化到MAC表中,准备学习新拓扑。 STP域内所有Bridge的收敛动作由Root Bridge的构成BPDU驱动,因此称为同步收敛;
在802.1W上,不存在TCN BPDU,因为Root Bridge不需要启动RSTP域中的状态同步。 拓扑改变(TC )的通知在相邻的网桥之间发生,只有在某个D-Port状态从分散变为转发的情况下才需要使用TC组的配置BPDU。 BPDU仅从该D-Port传输,并设置新位。 这将导致一系列同步操作,即RSTP的新协商机制——p/a机制。 根据P/A机制,STP域内的收敛行为在邻接的Bridge之间发生,各自完成独自的同步过程可以称为异步收敛。
STP和RSTP端口状态说明:
stpblockinglisteninglearningforwardingrstpdiscardingdiscardinglearningforwardingrstpbpdu如下。
协议id
协议版本id
BPDU
类型
Flags
根id
根路径成本
Bridge ID标识
端口id
消息页面
Max Age
光晕时间
前锋延迟
其中,Flags的项目与STP相比发生了很大的变化:
拓扑改变(TC ):1比特是从知道STP域拓扑已改变的网桥生成的。 在STP中,该Bridge生成TC组的TCN BPDU,向Root Bridge方向引发洪水。 收到Root Bridge后,下游洪水将持续,直到STP域中的所有Bridge都知道该信息。 在RSTP中,BPDU仅在相邻的Bridge之间传输,因此TCN BPDU和TCA BPDU仅在设备之间有效。
proposal:1位。 用于与对方协商进入转发状态。 生成的BPDU将为处于Discarding/Learning状态的所有端口设置Proposal位。 当接收到对方协议设置的BPDU时,立即进入“学习”状态,然后进入“跟随”状态。
端口辊: 2位。 识别发送此BPDU端口的角色。
学习: 1位。 处于Learning状态的端口创建Learning位集中的BPDU。
向前: 1位。 处于转发状态的端口生成转发位集中的BPDU。
协议: 1位。 在接收到Proposal位集中的BPDU后,如果Bridge的所有端口都处于同步状态,则返回协议集中的BPDU。
topologychangeacknowledgment (TCA ) 1比特从接收TCN BPDU的Bridge生成,成为对端到端Bridge的响应。
portrole:r-port(10 )从非根交换机到根交换机的最佳端口; 到d-port(11 )根交换机的网段最佳端口; A-Port
(01):R-Port的替换端口;Backup Port(01):D-Port的替换端口;Unknown Port(00):未知角色端口;Edge Port:连接终端的端口,因Edge Port不发送BPDU,因此BPDU包里没有该定义。
介绍完端口角色,接下来就是介绍RSTP如何实现快速收敛。
首先,RSTP将网络拓扑的变化定义为端口角色的变化,这个应该比较容易理解,因为网络拓扑的变化可以描述为某些网络端口在转发/阻塞态之间的转换,而RSTP将端口角色和端口状态进行了明确的定义(这是RSTP比STP优胜的地方)。
其次,RSTP端口角色的变化直接影响端口状态的变化。R-Port、D-Port、Edge Port处于Forwarding状态;Alternated Port(以下简称A-Port)和Backup Port处于Discarding状态。
一、Forwarding-〉Discarding
xqdyt条链路失效,即链路两端的端口从转发态变为阻塞态。从生成树协议的目的来看,并不会使得网络形成环路。RSTP仅需要找到处于合适的阻塞态端口,并将其转为转发态,使拓扑重新连通起来。由于RSTP在计算时已经分配好R-Port的备份端口A-Port,因此若从转发态变为阻塞态的是R-Port,则把对应的A-Port改为转发态;同理,D-Port的则色也可置相应的Backup Port为转发来实现。而Edge Port并不影响生成树的计算,故忽略。这样,当某个(些)端口状态从转发到阻塞,对于RSTP而言,无需重新计算(是不是有点熟悉,好像哪儿见过不用计算直接使用备用路径的算法。聪明的你一定想到了:DUAL)。
二、Discarding-〉Forwarding
由于某条链路的连通有可能导致生成树域成环。在RSTP里,该行为定义为D-Port从阻塞态转化为转发态,相对的检查机制应的就是P/A机制,即从需要进入转发态的D-Port,建议对端进行同步,待收到确认后进入转发态。
对端Bridge在接收到“建议”消息后,一方面阻塞自身所有D-Port,并返回“同意”消息给“建议”消息发送方;另一方面,对自身端口进行同步。同步分两种类型:若端口为E-Port,或者原来就是非转发态,则为“已同步”;若端口原来为转发态,为重新进入转发态,将对对端进行“建议”并等待确认。
下面将结合图例,演示P/A机制的流程:
(一)B、E之间建立一条新链路,首先进行端口角色选择;
(二)B、E通过该链路交换BPDU,由于B端口发送的BPDU较优(superior),因此B端口角色为D-Port;与此同时,E从B收到的BPDU比从C收到的较优,因此E把连接B的端口转换为Root Port,同时,连接C的端口转换为A-Port。要注意的是,RSTP相对STP进行了根端口转发的改进,一旦确定了旧的R-Port非转发态,且新的R-Port已确定,则新的R-Port立即进入转发态;
(三)此刻B端口仍为Discarding状态,并期望进入Forwarding状态,因此它将从该D-Port发送“Proposal“置位的配置BPDU给E;E接收到该BPDU后,进入同步状态:即将所有转发态端口转为丢弃,并检查端口同步情况;
(四)从同步原理可知,E中只有连接D的端口为转发态,因此E继续阻塞该端口,并向B返回”同意“置位的BPDU。自此,B-E链路进入已完成同步,立即进行流量转发;而由于D连接E的端口为A-Port,不转发BPDU,因此E发出的”Proposal“置位BPDU将不会被”Agreement“置位的BPDU回应。该端口将一直保持阻塞态。
版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。