网络设计者很可能并不打算让终端用户在用于连接终端用户设备的Access端口上连接交换机。然而,这种事情有时却会发生——例如,有人可能需要大厅的会议室里有更多的端口,于是他觉得他可以把一个小的便宜的交换机接到墙上的端口中
 
STP拓扑可能会因为这些意外增加到网络中的交换机而发生变化。例如,新交换机可能拥有最低的网桥ID并成为根。为了避免这种情况,工程师可以在Access端口上启用BPDU防护和根防护,用来监控入向BPDU——不应该进入端口的BPDU,因为这些端口应该用于终端用户设备。这两个功能可以一起使用,其操作如下。
  • BPDU防护:基于每个端口启用,或使启用了PortFast的端口全局启用;在收到BPDU时立刻由于错误而禁用端口。
  • 根防护:基于每个端口启用;忽略收到的更优BPDU,以防止此端口成为根端口。在收到更优BPDU时,此交换机将端口置为根不一致阻塞状态,在停止收到更优BPDU之前,停止转发和接收数据帧。
 
工程师可以基于每个端口,使用接口命令spanning-tree bpduguard enable无条件启用BPDU防护,也可以在全局使用全局命令spanning-tree portfast bpduguard default启用。然而,全局命令只会在启用了PortFast特性的端口上启用BPDU防护(在端口上配置PortFast特性的方法对此没有影响)。在全局启用了BPDU防护,但特定PortFast端口上又需要禁用BPDU防护的情况下,工程师可以使用接口命令spanning-tree bpduguard disable。
 
PortFast和BPDU防护之间的关系常令人混淆。事实上,这两个机制之间唯一的依赖关系在于在全局配置的BPDU防护特性。此时,启用了PortFast的端口上会自动启用BPDU防护特性;换句话说,在全局启用BPDU防护特性的话,相当于在所有边界端口上启用该特性。除了这个特定的配置依赖关系外,PortFast和BPDU防护是完全独立的。在一个端口上,无论PortFast的配置是怎样的,工程师都可以配置BPDU防护。而且无论BPDU防护是如何配置的,工程师也都可以端口或全局配置PortFast。
 
无论BPDU防护是如何在端口上启用的,当启用了BPDU防护的端口收到了BPDU时,它会被置为err-disable状态。
 
工程师只能基于端口,使用接口配置命令spanning-tree guard root来启用根防护机制。
 
对于BPDU防护,除非工程师添加额外的命令,否则端口不能从err-disable状态中恢复。可以让交换机在一定的时间后从err-disable状态变为启用状态。对于根防护,如果在最大老化消息时间或RSTP中3倍Hello内没有再次收到非预期的更优BPDU(相当于超时),端口将自动恢复。
 
BPDU过滤特性考虑的是在端口上停止发送BPDU,以及可选地停止接收BPDU。其行为根据激活方式有所不同。
 
  • 如果在全局使用命令spanning-tree portfast bpdufilter default进行配置,BPDU过滤特性只应用于边界端口(即启用了PortFast的端口)。这些端口连接了设备后,它们会以Hello间隔来发送BPDU;然而,如果在接下来10个Hello间隔期间内,未从直连设备收到BPDU,端口就会停止发送BPDU。因此,端口只会发送11个BPDU(在端口启用后立即发送1个,在10个Hello间隔之间发送10个),然后停止发送BPDU。在此之后端口仍准备好处理任何入向BPDU。如果收到了BPDU,在第1个十倍Hello间隔之间或之后的任意时间,这个端口上就可以有选择地禁用BPDU过滤特性,端口会根据正常的STP规则开始发送和接收BPDU。端口被断开又重连之后,BPDU过滤特性将再次生效。如果在全局配置了BPDU过滤特性,但某个边界端口上不希望启用,工程师可以使用命令spanning-tree bpdufilter disable来排除此端口。
  • 如果在端口上使用命令spanning-tree bpdu filter enable进行配置,BPDU过滤特性将使端口无条件地停止发送和接收BPDU。
 
BPDU过滤的使用依赖于它的配置方式。全局配置的BPDU过滤特性,能够使边界端口在特定时间后停止发送BPDU,因为向不使用STP的终端设备发送BPDU是没有任何用处的。如果因为收到BPDU,而发现端口上其实连接了一台交换机,端口上的BPDU过滤特性就会被禁用,直到端口关闭再启用(通过断开/重连链路,或通过关闭和再次开启)。这在使用多个Access端口连接终端设备的网络中,不得不算是一项优化。
 
直接在端口上配置BPDU过滤特性,会使端口停止发送和处理收到的BPDU。端口不主动发送BPDU,同时默默丢弃收到的BPDU。这种配置能够避免端口上连接的其他交换机参与STP。通常,工程师使用这个特性,将网络网络分隔为独立的STP域。因为在这种情况中,这些端口上并不进行STP操作,如果STP域之间使用冗余链路互连,就不能避免交换环路的产生。因此管理员需要确保STP域之间没有物理环路。
 
很多人对于PortFast和BPDU过滤的依赖关系也常有混淆。它们的依赖关系实际上等同于BPDU防护和PortFast的关系。BPDU过滤和PortFast在配置上具有的依赖关系是:唯一一种情况就是在全局配置了BPDU过滤特性的环境中,因为这会自动在所有边界端口(即启用PortFast的端口)上启用BPDU过滤特性。如果因为全局启用了BPDU过滤特性,某个端口上才启用了该特性,在这种情况下,如果端口(必为边界端口)收到了一个BPDU,它将失去边界状态,因为全局BPDU过滤特性的配置应用于边界端口,端口上的BPDU过滤也将被禁用。除此之外,BPDU过滤和BPDU防护之间没有其他的依赖关系。
 
工程师可以把全局配置的BPDU过滤和BPDU防护结合在一起(BPDU防护可以全局配置,也可以基于端口配置)。如果使用了BPDU过滤和BPDU防护保护的端口收到了一个BPDU,它会自动进入err-disable状态。
另一方面,把端口配置的BPDU过滤和BPDU防护结合起来并没有意义。因为端口会丢弃所有收到的BPDU,而BPDU防护将永远看不到BPDU,意味着它永远不能将端口置为err-disable状态。
 
 
 
 
 
 

STP-16-根防护,BPDU防护和BPDU过滤的更多相关文章

  1. 2.二层常用技术-Portfast和BPDU Guard、BPDU Filter

    PortFast (生成树端口加速) 1.在交换机上使用portfast命令,可以防止出现由于STP的收敛时间太长,导致主机的DHCP请求超时,从而使主机不能接收到DHCP地址的问题. 确保有一台服务 ...

  2. php检查漏洞防护补丁-防护XSS,SQL,文件包含等多种高危漏洞

    /** * 通用漏洞防护补丁 * 功能说明:防护XSS,SQL,代码执行,文件包含等多种高危漏洞 * Class CheckRequestServer */ class CheckRequestSer ...

  3. BPDU报文(传统STP)

    BPDU字段包含的信息: Protocol ID 协议ID Version STP版本(三种) STP(802.1D)传统生成树 值为0 RSTP(.1W)快速生成树 值为2 MSTP(.1S)多生成 ...

  4. 网络初级篇之STP(BPDU详解与STP故障恢复)

    一.BPDU包含的参数 通过STP的原理,我们学习了红色部分的字段(根桥ID.根路径开销.桥ID.端口ID).现在讲解一下黄色部分的字段(类型.计时器.老化时间.访问时间) 1.(BPDU Type) ...

  5. BPDU报文(RSTP)

    与STP 的BPDU报文格式相同,就是在flags字段报文中间几位得到应用 主要原理:利用flages位中的Proposal与Agreement来进行协商,从而快速从 discarding 转成 fo ...

  6. STP-7-RSTP的BPDU格式和处理方式的改变

    RSTP只使用一种BPDU,协议版本字段为2(STP为0). STP标志字段8位只使用了两位:TC(拓扑变化)和TCA(拓扑变化确认). RSTP也使用了其余6位:提议位,端口角色位,学习位,转发位, ...

  7. STP 根桥、根port、指定port是怎样选举的

    学习CCNA过程中,对交换机的根桥.跟port以及指定port选举有些迷糊.也度娘了一番,总认为一部分人解释的不够全面精细.通过细致研究终于有了自己的理解,分享给大家,假设纰漏,欢迎指正. STP收敛 ...

  8. STP 根桥、根端口、指定端口是如何选举的

    学习HCIA过程中,对交换机的根桥.跟端口以及指定端口选举有些迷糊,也度娘了一番,总觉得一部分人解释的不够全面精细.通过仔细研究最终有了自己的理解,分享给大家,如果纰漏,欢迎指正. STP收敛过程: ...

  9. BPDU、Hybrid、MSTP

    BPDU.Hybrid.MSTP      一.BPDU         1)BPDU概述         2)BPDU类型         3)BPDU报文字段      二.Hybrid     ...

随机推荐

  1. 【leetcode刷题笔记】LRU Cache

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  2. Angular.forEach用法

    1.针对对象循环(key,value) 官方示例: var values = {name: 'misko', gender: 'male'}; var log = []; angular.forEac ...

  3. codevs 3372 选学霸

    3372 选学霸  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果 ...

  4. 系列文章--AJAX技术系列总结

    各种AJAX方法的使用比较 用ASP.NET写个SQLSERVER的小工具  写自己的ASP.NET MVC框架(下)  写自己的ASP.NET MVC框架(上)  用Asp.net写自己的服务框架  ...

  5. Azure CLI下载Azure Storage Container内的所有文件

    在某些场景下,客户需要把Azure Storage的某一个container内的内容都下载到本地.当然采用PowerShell可以定时的进行下载的动作,但有时客户的环境是Linux或MacOS,这时需 ...

  6. js点滴知识(1) -- 获取DOM对象和编码

    在今天的工作中发现了一些小的问题,在网上查了一下,才知道自己的js才是冰山一角,以后要虚心向他人学习,要虚怀若谷. 发现一:js获取DOM对象与jquery的区别 先前总以为,二者是一样的,最近才知道 ...

  7. openssh for windows

  8. jquery 图片轮换

    jquery 图片轮换 1.下载jquery.superslide.2.1.1.js (百度搜索) 2.下载Jquery-1.4.1.js(百度搜索下载) 准备工作好了,下面开始实现 3.html & ...

  9. ABP源码学习目录

    ABP源码理解笔记 之前看过abp源码,但是时间久了很多也不记得了,所以近期打算重新看一遍,顺便做下笔记. 目录如下: Abp 框架启动流程分析 模块系统 依赖注入 模块配置 系统设置 工作单元的实现 ...

  10. 我推荐的一些C\C++书籍

    原文链接: 我推荐的一些C\C++书籍 人们常常问我有什么C++和编程的书籍推荐,也许是因为我在PowerDNS有一个关于"编写可读性良好的C++代码"的演讲.这篇博文可以作为我对 ...