理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别)-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别)

简介:
+关注继续查看

  BPDU GuardBPDU保护),简单的讲它的意义就是一个不该接收BPDU的端口,比如被启动了portfast的端口,一旦收到BPDU报文,那么BPDU保护功能将会立即关闭该端口,并将端口状态置为error-disabled状态。BPDU Guard的配置分为全局型的配置和接口级的配置,注意这两种配置将带来一些不同的效果。

 

全局配置BPDU Guard

全局配置BPDU Guard将使用spanning-tree portfast bpduguard default的全局配置命令,能过命令不难看出,全局配置BPDU Guard功能是必须依附于portfast而存在的,因为一个被规划为portfast的端口默认情况下是不应该连二层接桥接类设备,一般用户连接桌面机和服务器,那么这样的端口是不应该接收BPDU报文的,如果在全局配置了BPDUGuard功能,当portfast端口一旦收到BPDU报文,那么该端口将被关闭并转入error-disabled状态。

在接口上的BPDU Guard配置

在接口模式下配置BPDU Guard是通过spanning-tree bpduguard enable接口配置命令来完成,注意在接口模式下启动BPDU Guard功能,不需要依赖portfast而存在,换言之,在接口模式下启动BPDU Guard功能时,无论该接口是一个什么接口,是否是portfast接口这些都不重要,只要管理员认为该接口不应该接收BPDU报文,那么就可以在接口上配置BPDUGuard功能,一旦这个接口被启动BPDUGuard功能后,它接收到BPDU报文,那么那么该端口将被关闭并转入error-disabled状态。

 

注意:一旦某个端口被转入error-disabled状态,必须通过管理员手工重启并恢复该接口!

 

    如果在某些时候,出现这样一个题目:某台交换机由于某种原因在一些连接桌面机或者服务器的接口上是没有启动portfast功能的,此时需要一种保护机制,当这些端口一旦收到 BPDU报文就将被关闭被转入error-disabled状态,请问应该使用一种什么配置?回答是在接口上通过spanning-treebpduguard enable来完成。因为接口上的BPDU保护是不需要依赖于portfast功能的。

 

演示:BPDU Guard在全局与接口上的配置

 

演示目标:

ü  测试全局模式下BPDU Guard的功能

ü  测试接口模式下BPDU Guard的功能并区别全局配置

演示环境:所示。

wKiom1WX1HeB8mmgAAEOD97mJg8230.jpg

演示背景:为了更好的测试BPDU Guard的效果,就必须存在一台能发送BPDU的设备,为了测试方便,笔者在如所示的环境中将S2S3引入作为发送BPDU的设备,为了读者全程的看到BPDU Guard检测行为的完整效果,建议实验人员首先将交换机S2S3相应端口的交换功能关闭(no switchport),这样在初始状态由于交换功能被关闭就不再发送BPDU,然后在S1BPDU Guard配置完成后,再到S2或者S3上逐个端口下启动交换机功能(switchport),使其产生BDPU报文的发送来检测S1BPDU Guard功能。

演示步骤:

第一步:S2e0/0-3的接口范围和S3e1/0上关闭交换功能,先不让其发送BPDU报文,具体配置如下:

 

关闭交换机S2E0/0-3的交换功能:

S2(config)#interface range e0/0-3   * 进入S2E0/0-3的接口范围

S2(config-if-range)#no switchport   * 关闭交换功能,暂时就会在该接口上发送BPDU报文

S2(config-if-range)#no shutdown    * 确保端口被激活

S2(config-if-range)#exit

 

关闭交换机S3E0/0的交换功能:

S3(config)#interface e1/0         * 进入S3E0/0的接口

S3(config-if)#no switchport       * 关闭交换功能,暂时就会在该接口上发送BPDU报文

S3(config-if)#no shutdown  * 确保端口被激活

S3(config-if)#exit          

 

第二步:现在首先来测试全局模式下BPDU Graud的效果,注意全局模式下的BPDU Graud是需要依赖于portfast存在的,所以应该先将交换机S1的所有端口配置为接入模式,并在所有端口上启动portfast功能,具体配置如下:

 

将交换机S1的所有端口规划到接入模式并启动portfast端口:

S1(config)#interface range e0/0-3            * 接入模块0e0/0-3的接口范围

S1(config-if-range)#switchport mode access   * 将该接口范围配置为接入模式

S1(config-if-range)#no shutdown            * 激活该接口范围  

S1(config-if-range)#exit

 

S1(config)#interface range e1/0-3            * 接入模块1e1/0-3的接口范围

S1(config-if-range)#switchport mode access    * 将该接口范围配置为接入模式

S1(config-if-range)#no shutdown            * 激活该接口范围  

S1(config-if-range)#exit

 

S1(config)#spanning-tree portfast default     * 将所有接入端口配置为portfast接口

%Warning: this command enables portfast by default onall interfaces. You     *这部分是系统给出启动portfast后,注意防环的提示

 should nowdisable portfast explicitly on switched ports leading to hubs,

 switches andbridges as they may create temporary bridging loops.

 

    当完成上述的配置后,可以通过在交换机S1上执行show spanning-tree所示,可以看出当前的portfast配置生效,因为该交换机的所有端口都是Edge(边缘端口),从某种意义上讲,这里的边缘端口就是portfast

wKioL1WX1oigl6AQAAJMitP2-fE914.jpg

在交换机S1上通过全局命令配置BPDUGuard功能:

S1(config)#spanning-treeportfast bpduguard default  *在所有portfast端口上启动BPDU Guard

 

在全局启用BPDU Guard必须要依赖于portfast存在!接下来开始检测S1全局BPDU Guard功能的效果,在交换机S2e0/0开启交换功能,当交换机功能开启时,交换机S2将会向S1发送BPDU报文,这样就可以触发交换机S1上配置的BPDU Gruad功能。

在交换机S2e0/0开启交换机功能:

S2(config)#intee0/0

S2(config-if)#switchport   *开启交换功能,此时发始像S1发送BPDU

    

    当交换机S2E0/0接口的交换功能开启时,再次切换到交换机S1的控制台,很快就可以看到如下所示的系统提示,内容的大致意思是:交换机S1e0/0被启动了BPDU保护功能,但是此时它正在接收BPDU报文,所以该端口正在被禁用,状态被转为error-disabledE0/0端口被关闭。

%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on portEthernet0/0 with BPDU Guard enabled. Disabling port.

%PM-4-ERR_DISABLE: bpduguard error detected on Et0/0,putting Et0/0 in err-disable state

%LINEPROTO-5-UPDOWN: Line protocol on InterfaceEthernet0/0, changed state to down

%LINK-3-UPDOWN: Interface Ethernet0/0, changed state todown

 

      此时管理员可以通过在交换机S1上执行showinte e0/0查看接口的状态,如所示,E0/0的物理状态和线路属性状态被关闭,而且被转为error-disabled。如果需要解除E0/0error-disabled就需要管理手工恢复并激活该端口。这就是BPDU Guard全局的作用。此时用户可以通过在S1上执行showspanning-tree summary totals来查看生成树的参数,如所示,指示在portfast接口上已经启动了BPDU保护功能。

wKioL1WX1yLQL7NTAAMwhTsm2TY807.jpg

第三步:现在来测试在接口上BPDU Gruad的效果,首先进入S1E1/0接口,将该接口从portfast功能中脱离出来,因为接口级的BPDU Gruad不需要依赖portfast功能,具体配置如下所示:

 

首先将S1E1/0接口从portfast功能中脱离出来:

S1(config)#intee1/0

S1(config-if)#spanning-treeportfast disable    * 禁用该接口的portfast功能

S1(config-if)#exit

 

    在完成上面禁用E1/0portfast功能后,可以通过show spanning-tree interface e1/0查看当前端口已经回退到常规的生成树端口类型中,如所示。

wKiom1WX1Zajtf-nAAD1uzWOb5A825.jpg

此时在交换机S3上的e1/0接口上通过switchport来开启交换机功能,让S3E1/0发送BPDU报文,由于目前暂时还没有在S1E1/0接口上启动BPDUGurad功能,并且该端口也不再属于portfast端口,所以它S1上全局的BPDU Gurad配置不会限制S1E1/0,所以在这种情况下,S1E1/0即便是收到BPDU报文,也不会关闭端口,具体如所示。确定S1E1/0端口工作正常后,请再次在S3上的E1/0上关闭交换机功能(no switchport),为后面的测试做准备。

wKioL1WX15zCzyRVAAGGSqB-qJ4578.jpg

S1E1/0接口上启动BPDU保护功能:

S1(config)#inte e1/0

S1(config-if)#spanning-treebpduguard enable    * 在接口上启动BPDU Gruad功能

S1(config-if)#exit

 

    现在开始来测试S1E1/0接口上的BPDUGruad效果,请在S3E1/0接口上启动交换功能(switchport),其目的是为了让S1E1/0发送BPDU报文,由于S1E1/0接口上启动了BPDU保护功能,所以在交换机S1的控制台上系统会给出如下提示,此时可以在交换机S1上通过show intee1/0查看该接口的状态,如所示,该接口被关闭并转入error-disabled状态。

 

交换机S1E1/0被关闭并转入error-disabled状态:

%LINEPROTO-5-UPDOWN: Line protocol on InterfaceEthernet1/0, changed state to down

%LINEPROTO-5-UPDOWN: Line protocol onInterface Ethernet1/0, changed state to up

%SPANTREE-2-BLOCK_BPDUGUARD: ReceivedBPDU on port Et1/0 with BPDU Guard enabled. Disabling port.

%PM-4-ERR_DISABLE: bpduguard errordetected on Et1/0, putting Et1/0 in err-disable state

%LINEPROTO-5-UPDOWN: Line protocol onInterface Ethernet1/0, changed state to down

%LINK-3-UPDOWN: Interface Ethernet1/0,changed state to down

 

wKiom1WX1j-iuyw4AAJl-WBtSNI089.jpg



本文转自 kingsir827 51CTO博客,原文链接:http://blog.51cto.com/7658423/1670958,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
kubernetes RBAC实战 kubernetes 用户角色访问控制,dashboard访问,kubectl配置生成
kubernetes RBAC实战 环境准备 先用kubeadm安装好kubernetes集群,[包地址在此](https://market.aliyun.com/products/56014009/cmxz022571.
1805 0
阿里云服务器包年包月和按量付费的区别
阿里云服务器包年包月和按量付费有什么区别,为您介绍什么是阿里云服务器包年包月付费模式,以及按量付费模式。
1803 0
阿里云共享型服务器和企业独享型有什么区别?性能配置对比
阿里云服务器分为共享型云服务器和企业级独享型云服务器,共享型如共享型s6实例、xn4实例等,企业级独享型如通用型g6、计算型c5等实例,那么阿里云服务器共享和独享有什么区别?
122 0
spring源码学习【准备】之jdk动态代理和cglib动态代理的区别和性能
一:区别:---->JDK的动态代理依靠接口实现,如果有些类并没有实现接口,则不能使用JDK代理,这就要使用cglib动态代理了。--->JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能实现JDK的动态代理,cglib是针对类来实现代理的,他的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类进行代理。
925 0
VBA中给变量赋值使用set和不使用set的区别
VBA中给变量赋值使用set和不使用set的区别 '给普通变量赋值使用LET ,只是LET 可以省略。 '给对象变量赋值使用SET,SET 不能省略。例如ADODB.RecordSet等对象。
898 0
阿里云共享型服务器和企业独享型有什么区别?性能配置对比
阿里云服务器分为共享型云服务器和企业级独享型云服务器,共享型如共享型s6实例、xn4实例等,企业级独享型如通用型g6、计算型c5等实例,那么阿里云服务器共享和独享有什么区别?
191 0
什么是阿里云入门级配置,他和企业级配置有什么区别
入门级实例是指主要面向中小网站或个人的实例规格族。与企业级云服务器相比,入门级实例在资源利用上没有独占性保证,更多强调低成本
104 0
13694
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载