传统的802.1D STP没有给网络管理员提供确保交换式第2层网络拓扑安全。如下图,当新接入的交换机优先级更低,将抢占原有的根网桥。
根保护的目的是确保启用了根保护的端口成为指定端口。通常一个根桥的所有端口均为指定端口。除非连接到两个或多根网桥的端口。如果网桥在启用根保护的端口上收到一个较好的STP BPDU。这个端口进入STP的根不一致状态, 不会有流量通过该端口。
 

Root Guard(根保护)_stp

如上拓扑,
A和B为分布层SW,C为接入层SW,根为A。当在C下面再接一台SW时,由于D的优先级或MAC地址可能比其它要低,可能会使D成为Root SW,从而使得从A到达B的流量不能直接发送到B,而得使用C来转发,这样很不合理(A和B之间为千兆)。为了避免这种情况,可以在C的下联端口上使用Root Guard,以防止该端口成为Root Port,从而防止D成为Root SW,确保A永远为Root SW。使用Root Guard后,当SW D接入网络后,C的下联D的端口会收到一个更新的BPDU(前提是D的优先级最高)后,C将该端口转为Block状态,直到D不在发送新的BPDU或更改D的优先级。
  A交换机: 连接交换机C的端口 
B交换机: 连接交换机C的端口 
C交换机: 连接交换机D的端口
  当一个根保护端口阻塞一个端口时,控制台将会显示如下消息: 
%SPANTREE-2-ROOTGUARDBLOCK: Port 1/1 tried to become non-designated in VLAN 77. Moved to root-inconsistent state
  配置根保护端口的方法如下: 
Root Guard配置在接口上,使用命令: 
Switch(config-if)#spanning-tree guard root Root Guard
  配置在接口上,使用命令: 
在接口上启用BPDU防护功能:
Switch(config-if)#spanning-tree bpduguard enable
诊断命令: 
显示接口的命令: 
Switch#show running-config interface interface x/y 
显示端口不一致状态(即为Block的端口)的命令: 
Switch#show spanning-tree inconsistentports