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

摘要:
为了理解BPDUGuard的含义(BPDUGuard的全局配置和接口配置之间的区别),本文摘自博主的CCNP交换技术手稿BPDUguar(BPDU保护)的内容。在接口模式下,通过生成树bpduguardable接口配置命令完成接口上的BPDUGuard配置。

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

 

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

 

  BPDU Guard(BPDU保护),简单的讲它的意义就是一个不该接收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的设备,为了测试方便,笔者在如图所示的环境中将S2和S3引入作为发送BPDU的设备,为了读者全程的看到BPDU Guard检测行为的完整效果,建议实验人员首先将交换机S2和S3相应端口的交换功能关闭(no switchport),这样在初始状态由于交换功能被关闭就不再发送BPDU,然后在S1对BPDU Guard配置完成后,再到S2或者S3上逐个端口下启动交换机功能(switchport),使其产生BDPU报文的发送来检测S1的BPDU Guard功能。

演示步骤:

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

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

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

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

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

S2(config-if-range)#exit

关闭交换机S3的E0/0的交换功能:

S3(config)#interface e1/0         * 进入S3的E0/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            * 接入模块0的e0/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            * 接入模块1的e1/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功能的效果,在交换机S2的e0/0开启交换功能,当交换机功能开启时,交换机S2将会向S1发送BPDU报文,这样就可以触发交换机S1上配置的BPDU Gruad功能。

在交换机S2的e0/0开启交换机功能:

S2(config)#intee0/0

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

    

    当交换机S2的E0/0接口的交换功能开启时,再次切换到交换机S1的控制台,很快就可以看到如下所示的系统提示,内容的大致意思是:交换机S1的e0/0被启动了BPDU保护功能,但是此时它正在接收BPDU报文,所以该端口正在被禁用,状态被转为error-disabled,E0/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/0的error-disabled就需要管理手工恢复并激活该端口。这就是BPDU Guard全局的作用。此时用户可以通过在S1上执行showspanning-tree summary totals来查看生成树的参数,如图所示,指示在portfast接口上已经启动了BPDU保护功能。

wKioL1WX1yLQL7NTAAMwhTsm2TY807.jpg

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

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

S1(config)#intee1/0

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

S1(config-if)#exit

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

wKiom1WX1Zajtf-nAAD1uzWOb5A825.jpg

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

wKioL1WX15zCzyRVAAGGSqB-qJ4578.jpg

在S1的E1/0接口上启动BPDU保护功能:

S1(config)#inte e1/0

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

S1(config-if)#exit

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

交换机S1的E1/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

免责声明:文章转载自《理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java程序生成二维码mysql 判断null 和 空字符串下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

内存转储文件 Memory.dmp

https://baike.sogou.com/v63435711.htm?fromTitle=内存转存文件 内存转储是用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途。而它所保存生成的文件就叫做内存转储文件。 内存转储文件也被称作 虚拟内存,它是用硬盘里的一段空间虚拟成内存来存放程序来运行,由于硬盘的运行速度比内存慢很多,...

黑马程序员——JAVA学习笔记八(集合)

1,    JAVA最初版本只为最常用的数据结构提供了很少的一组类:Vector、Stack、Hashtable、BitSet与Enumeration接口,从JAVA1.2版本开始推出了一组功能完善的的数据结构。 集合类的由来:  对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定。  就使用集合容器进行存储。 集合特点: 1,用于存储对象的容器...

使用sphinx自动提取python中的注释成为接口文档

写好了代码,交付给他人使用的时候,查看代码固然可以了解各类和函数的功能细节,但接口文档能更方便的查找和说明功能。所以,一价与代码同步的接口文档是很有必要的。sphinx可以根据python中的注释,自动的生成接口文档,这样有利于保证文档和代码功能的同步。让我们来了解如何自动生成文档。 1. python代码格式。 class A: '''...

接口与委托

在接口中可以声明方法、属性、索引指示器和事件,接口中并不提供它们的实现。因此接口是函数成员声明的集合。如果类或结构从一个接口派生,则这个类或结构负责实现该接口中所声明的所有函数成员。一个接口可以继承多个接口,而一个类或结构可以实现多个接口。由于C#语言不支持多继承,因此,如果某个类需要继承多个类的行为时,只能使用多个接口加以说明。 委托类型,在功能上它类...

RPC服务和HTTP服务对比

很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单地介绍一下两种形式的C/S架构,先说一下他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道H...

接口测试中抓包工具的使用

在被测接口并没有明确的接口文档给出时,我们需要借助抓包工具来帮助测试,利用抓包工具我们几乎可以获得接口文档中能给你的一切。常见的抓包工具有Charles和Fiddler, Fiddler只能用在Windows平台, 而Charles可用于Windows, Mac, IOS和Android多平台。下面就总结一下Charles的用法。 一、Web抓取   Ch...