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

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


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

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


BPDU Filtering也叫BPDU过滤,它的意义是在某个端口上过滤BPDU的发送和接收,在这里需先要来理解一个前提:任何一个加入到生成树的交换机端口,都会发送并接收到相应的BPDU报文,其中包括被规划为portfast的端口,它也会连续的(2秒间隔)向交换网络中发送BPDU报文。但是在Portfast端口上发送BPDU有必要吗?没有,为什么呢?因为portfast连接都是主机,主机是不可能与交换机形成环路的,所以portfast是没必要向主机去发送BPDU报文。反过来讲portfast端口也没必要接收BPDU报文,为什么呢?桌面主机发送BPDU报文是没有意义的,但是BPDU Filtering对portfast端口收到BPDU报文时的处理方式就没有BPDU Guard那么极端,BPDUGurad是直接关闭端口。而BPDU filtering将由于不同位置的配置,产生不同的处理行为,BPDU Filtering的配置也分为全局配置和在接口上的配置,不同位置的配置将产生不同的效果。

BPDU Filtering在全局配置

在全局模式下使用spanning-tree portfast bpdufilter default指令来启动BPDU Filtering,通过指令可以看出,BPDU Filtering在全局模式下是需要依赖于portfast端口为基础来实现的,这一点和BPDU Gruad在全局模式下的配置前提是相同的。但如果用户在全局模式下启动的是BPDU Filtering,在这个时候portfast端口就不会发送BPDU报文了。如果此时当portfast端口收到BPDU报文时该端口会立即回退到常规的生成树端口,并参与生成树的选举及计算过程。关于这一点请参看演示:BPDU Filtering在全局与接口上的配置。

BPDU Filtering在接口上的配置:

用户可以在接口模式下使用spanning-tree bpdufilter enable指令来启动BPDUFiltering,注意在接口模式下启动BPDU Filtering功能时可以不依赖于portfast端口,然后在该接口上将不再发送和接收BPDU。这里的这个“该接口上将不再发送和接收BPDU”说明,就一般而言,不发送BPDU,一般都比较好理解,而这里所谓的不接收BPDU(not receive BPDUs),不如说成是忽略(ignore),又或者表达为不处理接收到的BPDU,将更为精确的表达接口级BPDU Filtering的功能,为什么这样讲?

如图所示,交换机S1的E1/0接口,可能正收到交换机S3的E1/0接口所发送的BPDU报文,该报文也能成功的到达S1的E1/0接口,为什么能到达?因为交换机S3发送BPDU报文时目标的MAC地址是一个众所周知的组播MAC(0180.c200.0000),就是众所周知的组播MAC表示所有开启STP功能的设备都能接收到相关的BPDU报文,因为该目标MAC也叫生成树的多播MAC。只是说当S3发来的BPDU报文到达S1的E1/0接口时,S1由于在接口上启动了BPDU的filtering功能,它(S1)将忽略S3发来的BPDU。或者叫接收而不处理。关于这一点请参看演示:BPDU Filtering在全局与接口上的配置。

注意:在接口上配置BPDU Filtering与在全局配置BPDU Filtering的意义是有很大区别的,在全局配置的BPDU Filtering首先要依赖于portfast端口,当收到BPDU时,全局的BPDU Filtering是采取回退为正常生成树端口的处理方式;而接口上的BPDU不需要依赖于portfast端口,并忽略(ignore)收到的BPDU报文,此时相当于在具体的某个接口上禁用了生成树功能,如果管理员没有对二层网络进行合理的设计,可能就会存在潜在的环路,所以思科强烈建议并推荐用户在全局模式上启动BPDU Filtering功能。

 

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

演示目标:

ü  测试BPDU Filtering在全局模式下的配置效果

ü  测试BPDU Filtering在接口模式下的配置效果

ü  一个有趣的现象:全局启动BPUD过滤,有某个时候会有少量的BPDU报文被发送。

演示环境:如图所示

演示背景:首先还是在S2和S3的交换机接口上将相应接口的交换机功能关闭( no switchport),这样就可以暂时禁止S2和S3向交换机S1发送BPDU,为测试BPDU Filtering功能做好准备工作,然后将交换机S1的E0/0-3的接口范围配置为接入模式,并在这些端口上全局的启动Portfast功能,然后通过协议分析器来取证portfast是否会发送BPDU报文,然后再在portfast端口之上启动BPDU Filtering,再来取证portfast端口是否会继续发送BPDU报文,然后在交换机S2的E0/0端口上开启交换功能(switchport),使其发送BPDU报文给S1,再观察S1的E0/0在启动BPDUFiltering的情况下,是否会将portfast端口回退到常规的生成树端口状态。最后来测试接口BPDU Filtering的配置效果,确定它是否需要依赖于portfast端口而存在,并确定接口上的BPDU过滤与全局的BPDU过滤的差异。

演示步骤:

第一步:首先将交换机S1的e0/0-3和e1/0-3的接口全部配置为交换机的接入模式端口,然后将交换机S1的所有接入模式的端口规划为portfast端口,具体配置如下,为了测试方便,建议现在就将S2和S3连接交换机S1的端口交换功能关闭(no switchport),相当于暂时禁止S2和S3向S1发送BPDU报文。

配置交换机S1的所有端口到接入模式端:

S1(config)#interfacerange e0/0-3

S1(config-if-range)#switchportmode access

S1(config-if-range)#noshutdown

S1(config-if-range)#exit

S1(config)#interfacerange e1/0-3

S1(config-if-range)#switchportmode access

S1(config-if-range)#noshutdown

S1(config-if-range)#exit

配置交换机S1的所有接入端口为portfast端口:

S1(config)#spanning-treeportfast 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端口(也叫边缘端口),如图所示,所有接入模式的端口已经成为边缘端口。

此时,用户可以通过协议分析器,去捕获分析S1任意一个被启动了portfast端口上的数据帧,如图所示,可以清晰的看出在Portfast端口上,仍然不断的以2秒为一个间隔发送BPDU报文,这将为测试BPDU Filitering功能做好准备。

接下来在全局模式下,启动BPDUFiltering功能,具体配置如下,当完成BPDU过滤功能后,可以通过showspanning-tree summary来查看BPDU的过滤功能是否被启动,如图所示,明显可看出BPDU过滤功能已经被启动。

在全局模式下启动BPDU Filtering功能:

S1(config)#spanning-treeportfast bpdufilter default

在完成上面的配置后,再次使有协议分析器软件捕获交换机S1的E0/0所产生的数据帧,可发现S1的E0/0接口不再发送任何BPDU报文,证明BPDU Filtering生效,至少证明了BPDU过滤功能将禁止portfast端口再发送BPDU报文。

接下来,需要来取证BPDU过滤功能在收到BPDU报文时的处理行为,现在到交换机S2上的 E0/0接口启动交换机功能(switchport),相当于是让S2的E0/0向S1的E0/0发送BPDU报文。然后使用协议分析器去捕获S1的E0/0接口的数据帧。会如图所示,可以看到S1收到 S2(aa:bb:cc:00:02:00)发来的BDPU报文,并开始发送自己(S1)的BPDU报文。

然后可以在S1上通过执行show spanning-tree指令来查看当前生成树几个端口的状态,如图所示,交换机S1的E0/0由于收到了BPDU报文,BPDU过滤功能将其边缘端口(portfast)的角色回退到常规的生成树端口角色。但是它并不会像BPDU Gruad那样极端的半闭端口,如图所示,S1的E0/0端口仍然处于Up状态。

第二步:现在来检测BPDUFiltering在接口模式下的效果,首先请将S1的E1/0从portfast端口的配置中脱离出来,然后再到该端口下启动接口级别的BPDU过滤功能,这两项具体的配置任务如下所示:

将交换机S1E1/0接口从portfast中脱离:

S1(config)#interfacee1/0

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

S1(config-if)#noshutdown

S1(config-if)#exit

在交换机S1E1/0接口上启动BPDU的过滤功能:

S1(config)#interfacee1/0

S1(config-if)#spanning-treebpdufilter enable  * 启动BPDU的过滤功能

S1(config-if)#exit

如果此时使用协议分析器捕获交换机S1的E1/0的数据帧,不难发现,在S1的E1/0上不会有任何BPDU数据帧被发送。其实这一点在接口级别的配置和在全局模式的配置的最终效果是一样的,只是说接口级别可以不再依赖于portfast端口而存在。要反在接口级别的BPDU过滤与全局模式的BPDU过滤在收到BPDU报文时的处理方式则完全不一样了,全局模式采取的是回退端口到常规生成树端口,而接口级别则是完全忽略收到的BPDU,将不做任何处理。具体取证过程如下:

在交换机S3的E1/0 端口上启动交换功能(switchport),相当于使其向S1的E1/0接口发送BPDU报文,此时会发现如图所示的情况,S1的E1/0接口上会不断的收到S3发来的BPDU报文,但是S1不会对这些报文做任何理采,也就是忽略(ignore)收到的BPDU报文,而且是无声无息的将其ignore掉。由于这种悄无声息的ignore,这个时候在网络可能会出现“一国两公”的局面,也就是一个整体的生成树网络可能存在多个根桥。

第三步:一个有趣的现象:就是用户在全局模式下已经启动了BPDU过滤功能后,就即便是此时某个具体的接口没有收到任何BPDU的报文,然后当这个端口在正式连接进入网络并且BPDU出站过滤开始之前,会有少量的BPDU被发送(Theinterfaces still send a few BPDUs at link-up before the switch begins to filteroutbound BPDUs)。但几秒中后就将进入BPDU过滤状态。

时间: 2024-10-09 20:49:23

理解BPDU Filtering的意义(BPDU Filtering在全局配置与接口配置上的区别)的相关文章

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

理解并演示:BPDU Filtering的意义(BPDU Filtering在全局配置与接口配置上的区别) 目标:理解BPDU Filtering的意义(BPDU Filtering在全局配置与接口配置上的区别) 取证:测试BPDU Filtering在全局模式下的配置效果 测试BPDUFiltering在接口模式下的配置效果 一个有趣的现象:全局启动BPUD过滤,有某个时候会有少量的BPDU报文被发送.   理解BPDU Filtering的意义(BPDU Filtering在全局配置与接口配

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

理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别)   本文截自于博主CCNP交换技术稿件内容   BPDU Guard(BPDU保护),简单的讲它的意义就是一个不该接收BPDU的端口,比如被启动了portfast的端口,一旦收到BPDU报文,那么BPDU保护功能将会立即关闭该端口,并将端口状态置为error-disabled状态.BPDU Guard的配置分为全局型的配置和接口级的配置,注意这两种配置将带来一些不同的效果. 全局配置BPDU Guard 全局配置

深入理解JavaScript系列(21):SOLID五大原则之接口隔离原则ISP(转载)

深入理解JavaScript系列(21):SOLID五大原则之接口隔离原则ISP 前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle). 英文原文:http://freshbrewedcode.com/derekgreer/2012/01/08/solid-javascript-the-interface-segregation-principle/注:这篇文章作者写得

快速理解DevOps概念和意义-兼谈SRE

最近几年,由于负责的范围的变化.工作逐渐从某个IT领域或者部门,开始关注到整个IT体系的运转和管理.中间也遇到不少困难,同时也有机会去从更高的层面去学习和实践IT治理.文章主要是总结一下我对DevOps相关的理解和认识. 为什么会有DevOps,解决了什么问题: 现代企业其实都是通过IT系统进行管理和运营的,在变化迅速和竞争激烈的领域,IT系统的新需求数量越来越多,软件发布的频率越来越高,不少互联网公司24小时内会发布几十个到上百个release到生产环境.与此同时,业务对IT服务和系统的稳定性

看完这个你还不理解右值引用和移动构造 你就可以来咬我(上)

共分三篇,这是第一篇.另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(中),看完这个你还不理解右值引用和移动构造 你就可以来咬我(下). C++ 右值引用 & 新特性 C++ 11中引入的一个非常重要的概念就是右值引用.理解右值引用是学习"移动语义"(move semantics)的基础.而要理解右值引用,就必须先区分左值与右值. 对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值.左值和右值都是针对表达式而言的,左值是指表达式结束后依然存

努力学习的意义到底在哪里?(转载知呼上的答案)

作者:建筑速算器链接:https://www.zhihu.com/question/27513493/answer/88940491来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 因为在命运面前,没有别的抓得住的东西. 学习这件事,很多时候,真的挺没用的. 一个人这辈子能混成什么样,谁来定?有句话很有名:“一命二运三风水,四积阴德五读书.”当年在学校论坛上看到,不屑一顾.现在进了社会几年,才终于明白这句真理的沉重. 跟命运比起来,学习算个屁呢. 一个人生下来,是生

什么是抽象类?什么是接口?接口和抽象类的区别在哪里?怎样去理解它们呢?

1.这里我们来参考一下博文. http://blog.csdn.net/fenglibing/article/details/2745123 接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么. 比如,男人,女人,这两个类(如果是类的话--),他们的抽象类是人.说明,他们都是人. 人可以吃东西,狗也可以吃东西,你可以把"吃东西"定义成一个接口,

全局与接口的BPDU Guard功能是有重大区别的

理解并演示:全局与接口的BPDUGuard功能是有重大区别的   关键提示: 1.理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别) 2.通过实验取证全局与接口上BPDU Guard的区别   理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别)      BPDU Guard(BPDU保护),简单的讲它的意义就是一个不该接收BPDU的端口,比如被启动了portfast的端口,一旦收到BPDU报文,那么BPDU保护功能将会立即关闭该端

第四次实验报告:使用Packet tracer理解RIP路由协议

(1)个人信息: 姓名:彭晨  学号:201821121039  班级:计算1812 1 实验目的 理解RIP路由表的建立与更新 感受RIP坏消息传得慢 2 实验内容 使用Packet Tracer,正确配置网络参数,使用命令查看和分析RIP路由信息. 建立网络拓扑结构 配置参数 分析RIP路由信息 3. 实验报告 3.1 建立网络拓扑结构 网络拓扑图如下图所示: 3.2 配置参数 客户端的IP地址为192.168.1.xx,xx是学号的尾数(如201821021079,IP地址后两位为79).