网络设计者很可能并不打算让终端用户在用于连接终端用户设备的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. python 标准库 —— 线程与同步(threading、multiprocessing)

    1. 创建线程 使用 os 下的 fork() 函数调用(仅限 Unix 系统) import os print('current process (%s) starts ...' % (os.get ...

  2. Linux编程之错误代码

    头文件/usr/include/asm-generic/errno-base.h定义错误码: #ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERI ...

  3. 问题11:如何进行反向迭代 & 如何实现反向迭代

    # 有关列表问题,参考:Python:列表list 案例: 需求:实现一个连续浮点数发生器FloatRange(和range类似),根据给定范围(start,end)和步进值(step),产生一系列连 ...

  4. 第 七 课 go的运算符

    http://www.runoob.com/go/go-operators.html 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 返回变量存储地址: & 指针变量:  ...

  5. ES6学习之Iterator和For...of循环

    一.Iterator(它是一种接口,为各种不同的数据结构提供统一的访问机制.Iterator 接口主要供for...of消费) 默认Iterator接口(默认的 Iterator 接口部署在数据结构的 ...

  6. ML 徒手系列 最大似然估计

    1.最大似然估计数学定义: 假设总体分布为f(x,θ),X1,X2...Xn为总体采样得到的样本.其中X1,X2...Xn独立同分布,可求得样本的联合概率密度函数为: 其中θ是需要求得的未知量,xi是 ...

  7. linux日常管理-sar工具

    查看网卡瓶颈 查看网卡流量 默认10分钟一次 查看实时流量  每秒钟显示一次 显示5次 网卡有 lo eth0   主要看eth0外网  rxbyt/s 进网口和 txbyt/s出网口 带宽看txby ...

  8. Spinner 通过XML形式绑定数据时 无法从String.xml中读取数组

    在android应用程序中,通过XML形式给Spinner绑定数据,如果把数组放在系统的string.xml文件里,那么就有可能在运行时无法找到,导致程序异常结束,解决方法是自建一个XML文件来存放数 ...

  9. Tomcat+Nginx实现动静分离

    Tomcat是我们经常用的服务器,轻便快捷,但是数据量大的时候,会影响访问.响应速度,这时Nginx就出现了. Nginx可做反向代理.负载均衡.动态与静态资源的分离的工作,这里我们就用它来做动静分离 ...

  10. win7 eclipse连接hadoop2.x开发环境搭建

    环境: hadoop-2.3.0-cdh5.1.0 centos 6.5 x64 win7 eclipse4.3 0. 前提条件 ,jdk,maven要安装好. 1.下载hadoop,用winRAR解 ...