P/A的根本目的

针对运行STP设备从初始化到完全收敛至少需要30s的问题,RSTP采用P/A(Proposal/agreement)协商机制,实现秒级收敛。
相对于STP来说,P/A带来了来回确认机制和同步变量机制,不再需要等待计时器超时来保障无环路。

P/A协商机制的前提

  • DP端口处于Discarding状态
  • 该DP端口所在链路是p2p全双工链路

rstp服务python rstp pa_运维


rstp服务python rstp pa_运维_02

P/A报文交互过程

1、初始都认为是DP,并且端口状态为discarding,此时发送的 BPDU P=1 A=1希望能进行P/A协商,此时根据这2个BPDU进行DP/RP(AP)的选举。(收到的BPDU没有其他端口收到的好,则认为是AP;比其他端口收到的好,则认为是RP)
2、选举出的DP端口依然发送P=1,A=1的BDPU,希望能进行P/A协商。
3、当RP收到DP的P=1,A=1的BPDU时,会将自身所有的非边缘端口进行sync同步置位,将这些端口的状态设置为discarding,为P/A协商提供快速无环协商环境。
4、sync同步置位完成后,将RP端口的状态过渡到forwarding,RP发送P=0,A=1,端口状态为forwarding的BPDU,表明自身的sync完成并且已经过渡到forwading状态。
5、DP端口收到此BPDU后,回应一个P=0,A=1端口状态为forwading的BPDU,表明自身也过渡到forwading状态,通过P/A协商可以让链路更快的过渡到转发状态,不再依赖定时器机制,同时由于sync机制,避免了在链路快速过渡到转发状态时产生的临时环路。
6、P/A机制将在下游链路逐跳完成,整个网络可以快速收敛,并终止存在DP和AP的链路上。
一旦P/A协商不成功,指定端口的选举就会回到STP的协商方式,就需要等待两个Forward Delay(30秒)时间。
AP接口不会去回应上游发送A置位BPDU而只发送普通BPDU。这样上游会一直每两秒发一个P置位BPDU,下游一直不响应A置位BPDU。直到等待1个forwarding delay后该上游DP才会由discarding变为learning状态,再等一个forwarding delay后上游DP才会变为forwarding状态

sync机制:同步变量机制,也就是将非边缘端口堵塞。