一、边缘端口说明
- 在RSTP中,如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连(保证下游无环,不一定是终端设备),这种端口叫做边缘端口。
- 边缘端口不接收处理配置BPDU,不参与RSTP运算,可以由Disable状态直接转到Forwarding状态,且不经历任何时延。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通RSTP端口,并重新进行生成树计算,从而引起网络振荡。
二、源码实现机制
- 针对边缘端口存在两个bool值:adminedge和operedge;真正起作用的是operedge
- 如果设置自动识别边缘端口,则开始时设置adminedge=true, 通过802.1w原文以及对照开源库代码理解,理解该实现机制应该是:在检测到adminedge修改时(配置下发), 设置operEdge=adminedge, 当该端口收到bpdu报文后, 状态机设置operEdge=false(即非边缘接口)。
- 实例:当设置端口ethx的adminedge = true(自动管理边缘接口)时,首先设置ethx为边缘接口,(operEdge=true), 如果ethx一致直收不到bpdu报文,则一直是边缘接口;一旦ethx收到bpdu报文,该接口变更为非边缘接口,则当前状态为(adminEdge = True, operEdge = False).
- 也可以人工指定边缘端口,等同于设置adminedge=true,和上述一样,在检测到adminedge修改时(配置下发), 设置operEdge=adminedge, 当该端口收到bpdu报文后, 状态机设置operEdge=false(即非边缘接口),此时adminedge=true。