理解并演示:Root Guard(根保护)


                              本文截自于博主CCNP交换技术稿件内容


     Root Guard是一种强制的根保护措施,它的作用是防止意外(或者非法)加入的交换机成为网络中的根桥,如所示,原本交换环路中只存在S1S2S3时,正确的根桥应该是S1,因为它有最优势的BID(一般而言是因为MAC地址最小),如果此时在原本的交换环路中加入了一台更有优势BID的网桥比如new_S,此时它可能具备更小的网桥优先级,那么这台新加入的交换机new_S就可能成为原交换环路中的新的根桥,出现这种情况时,由于生成树的重计算(有时英文也在重配置),会直接导致原有的交换环路不稳定。比如左边部分所示,在没有加入new_S这台潜在的非法网桥时,S1为根桥,S1E0/0E0/1都是指定端口;而S2E0/0是根端口,E0/2为指定端口;S3E0/1是根端口,E0/2是阻塞端口,至于为什么会是这样,笔者在CCNA部分的书稿有详细说明。当new_S这台潜在的非法交换机加入到原始的交换环路时,如右边部分,一切将发生改变,生成树的稳定性将遭到破坏,此时new_S将成为新的根桥,因为它有更有优势的BIDnew_SE0/3是指定端口;S2E0/3将变成根端口,E0/0E0/2会变成指定端口;S1E0/0变为根端口,E0/1变为指定端口;而S3E0/2将变为根端口,E0/1将变为阻塞端口,而BPDU报文的流向也如虚箭头所绘会发生改变。

理解并演示:Root Guard(根保护)_第1张图片

理解并演示:Root Guard(根保护)_第2张图片


  Root Guard(根保护)的意义就是在S2E0/3上强制它成为指定端口,就是当S2E0/3接口收到比当前更有优势的BPDU报文时(就是指的new_S发来的BPDU报文),S2会将该端口转到一种叫root-inconsistent(不一致的根)状态,并且在这种状态下该端口会进入阻塞状态,流量肯定也不会从该端口转发,达到保护并强化了原环路中的根(S1)地位的目标,注意此时root-inconsistent的状态相当于生成树的监听状态,如果new_S这台潜在的非法根桥,不再发送BPDU报文给S2E0/3接口,那么该接口将自动结束root-inconsistent(不一致的根)状态,并取消对该端口的阻塞。

 

演示:启动Root Guard(根保护)的配置及效果检测

 

演示目标:

ü  在没有根保护时,加入非法交换机的情况

ü  在启动根保护时,加入非法交换机的情况

演示环境:如上所示的演示环境。


理解并演示:Root Guard(根保护)_第3张图片

演示背景:首先让交换机S1S2S3形成稳定的环路,并观察它在这个原本稳定的环路中生成树的选举及计算情况,暂时不要让new_S交换机接入到当前的交换环境,但是可以先将new_S交换机的BID配置到最小,一般通过调整new_S的生成树优先级来实现,这样就可以模拟new_S为非法交换机,并希望自己成为整个交换网络的根,具体配置可以通过在new_S的全局模式下执行spanning-treevlan 1 priority 28672来模拟一个更有优势的BID。然后再将new_S接入环路,并再次观察生成树的选举及计算过程,明确并取证哪些不稳定的情况,最后再到S2E0/3上部署Root Guard(根保护)功能,明确并取证根保护功能对非法接入交换机new_S的约束效果。

演示步骤:

第一步:首先构造S1S2S3之间的稳定环路,当生成树的计算完成后,在交换机S3上可以通过show spanning-tree指令来查看稳定环路中的根桥及相关端口状态,如所示,不难看出当前的S3是认可S1为环路的根桥的,并且E0/2端口是被阻塞,关于这一点在前面的理论部分已经有详细的描述。

理解并演示:Root Guard(根保护)_第4张图片

第二步:现在将new_S接入到S2E0/3从而进一步进入整个交换环路中,并观察原始环路的生成树引发重计算的不稳定因素,当完成非法交换机的接入后,首先在new_S上查看自身的一些情况,如所示,可看出new_S把自己选成环路上新的根桥,因为它有更优势的BID,并且它有E0/3端口为指定端口并处于转发状态中。


理解并演示:Root Guard(根保护)_第5张图片


 此时,不仅是new_S自己认同自己为环路中的新根桥,由于原始环路没有根保护功能,所以此时的S1S2S3都会认同非法接入的交换机new_S为新的根桥,比如在S3上执行showspanning-tree所示,可清晰的看到此时的S3出认可非法网桥new_Saabb.cc00.0400)为新的根桥,并且以前的根端口(E0/1)现在变成了替代端口并处于阻塞状态,而以前的阻塞端口(E0/2)变成了当前的根端口,并处于转发状态,这就已经改变了原始生成树的拓扑构成,破坏了稳定性。

理解并演示:Root Guard(根保护)_第6张图片

注意:现在将非法交换机New_S暂时从网络中取下,让环路恢复成只有S1S2S3的原始状态,确保S1是根桥,S3E0/2再次被阻塞。为下一步检测Root Guard(根保护)的效果作好准备。

 

第三步:现在到交换机S2E0/3接口(连接非法交换机new_S的接口)启动根保护功能,具体配置如下所示,然后可以通过在S2上执行showruning-config interface e0/3来查看当前E0/3接口上的根保护功能是否被开启,如所示,明确根保护已经被成功开启。

 

启动根保护功能:

S2(config)#interfacee0/3

S2(config-if)#spanning-treeguard root   * 启动生成树的根保护

%SPANTREE-2-ROOTGUARD_CONFIG_CHANGE:Root guard enabled on port Ethernet0/3. *系统提示该接口根保护被启动


理解并演示:Root Guard(根保护)_第7张图片

然后在完成上述的配置后,现在再次将非法交换机new_S连接到S2上的E0/3端口,因为new_S具备更优势的BID,如果S2E0/3接收到这个更有优势的BPDU报文,将触发根保护功能,此时会发现,系统立即报告,根保护功能阻塞了S2E0/3接口,具体显示如下:

 

关于根保护阻塞S2E0/3接口的提示:

%SPANTREE-2-ROOTGUARD_BLOCK: Rootguard blocking port Ethernet0/3 on VLAN0001.

 

    然后用户可以在S2上通过showspanning-tree inconsistentports,来查看生成树的不一致状态,如所示,明显看出S2E0/3接口被转为不一致的根状态,此时该端口将处于阻塞状态,这个时候用户可以回到原始环路中的交换机S3上,执行showspanning-tree再次查看生成树的状态,如所示,很明显S1的根地位被强化,S3仍然认同S1为根,相应的端口状态也保持原始环路的计算结果。

理解并演示:Root Guard(根保护)_第8张图片

理解并演示:Root Guard(根保护)_第9张图片