• BPDU Guard, BPDU Filter, Root Guard, Loop Guard & UDLD


    BPDU Guard:防止将交换设备意外连接到启用PortFast的端口。 将交换机连接到启用了PortFast的端口可能会导致第2层环路或拓扑更改。

    BPDU filtering:限制交换机向Access端口发送不必要的BPDU。

    Root Guard: 防止连接在配置为Access端口上的交换机成为根交换机。

    Loop Guard:Loop Guard STP功能通过防止桥接环路来提高第2层网络的稳定性。

    UDLD: UDLD检测并禁用单向l链路。

    1、BPDU防护(BPDU Guard)
    当配置为STP PortFast的接口收到BPDU时BPDU Guard会将其为置于err-disable状态。 BPDU Guard禁用接口作为预防步骤,以避免潜在的危险桥接环。 BPDU保护功能用于保护生成树域免受外部影响。 BPDU Guard默认情况下处于禁用状态,但建议已启用portfast功能的所有端口使用BPDU Guard。这样可以防止将错误信息注入禁用了生成树的端口上的生成树域中。

    当端口仅连接了主机设备时,我们将启用portfast,这将加快端口初始化过程并使端口立即进入转发状态。如果没有绕过STP并且端口进入了侦听和学习状态,这可以消除30秒钟的延迟。因为主机是工作站,所以它不发送BPDU,因此在这样的端口上禁用生成树不是问题。

    如果我们删除了此端口的此终端主机并连接了交换机。这个新的交换机将开始生成BPDU,并且可以像网络的根网桥一样接管,或者如果它的另一条链路连接到网络的另一部分,则可能在我们的网络中引起环路。

    因此,BPDU Guard将提供对无效配置或未经授权的交换机到我们的网络的安全响应,因为管理员必须在修复无效的配置或从网络中删除未经授权的交换机后手动重新启用禁用了错误的接口。还可以设置超时间隔,在此间隔之后,交换机将自动尝试重新启用接口。但是,如果无效的配置或交换机仍然存在,则交换机会再次错误禁用接口。

     开启和关闭BPDU Guard使用如下命令:

    switch(config-if)#spanning-tree bpduguard enable
    switch(config)#[no] spanning-tree portfast edge bpduguard default

    确认是否开启:

    switch#show spanning-tree summary totals                                                                         
    Root bridge for: none. PortFast BPDU Guard is enabled UplinkFast is disabled BackboneFast is disabled Default pathcost method used is short

    2、BPDU Filter

    在端口上启用PortFast时,该端口将发出BPDU,并将接受并处理收到的BPDU。 BPDU Guard 功能可防止端口接收任何BPDU,但不会阻止其发送它们。如果收到任何BPDU,则该端口将被禁用。 BPDU Filter功能通过阻止选定端口发送或接收任何BPDU来有效地禁用其上的STP

    BPDU Filter支持阻止交换机在启用PortFast的接口上发送BPDU的功能。为PortFast功能配置的端口通常连接到主机设备。主机不参与STP,因此会丢弃收到的BPDU。结果,BPDU Filter防止不必要的BPDU被发送到主机设备。

    全局启用BPDU过滤会产生以下影响;

    • 它会影响在所有PortFast的端口。
    • 如果接口收到BPDU,则该端口将失去其PortFast状态,禁用BPDU Filter,并且STP会在该端口上发送和接收BPDU,就像在交换机上的任何其他STP端口一样。
    • 启动后,端口将传输十个BPDU。如果此端口在此期间收到任何BPDU,则禁用PortFast和PortFast BPDU Filter

    单个端口上启用BPDU过滤后,会产生以下影响:

    • 它忽略所有收到的BPDU。
    • 它不发送BPDU。

    如果在与BPDU Filter相同的接口上启用BPDU Guard,则BPDU Guard无效,因为BPDU Filter优先于BPDU Guard。

     如何配置开启BPDU Filter,全局和接口下

    switch(config)#spanning-tree portfast bpdufilter default
    switch(config-if)#spanning-tree bpdufilter enable

    如何查看BPDU Filter是开启:

    switch#show spanning-tree summary
    Switch is in pvst mode
    Root bridge for: none
    Extended system ID is enabled
    Portfast Default is disabled
    PortFast BPDU Guard Default is disabled
    Portfast BPDU Filter Default is enabled
    switch# show spanning-tree interface fastEthernet 0/1 detail
    Port 196 (FastEthernet0/1) of VLAN0010 is forwarding
    Port path cost 1000, Port priority 160, Port Identifier
    160.196.
    Designated root has priority 32768, address 00d0.00b8.140a
    Designated bridge has priority 32768, address 00d0.00b8.140a
    Designated port id is 160.196, designated path cost 0
    Timers:message age 0, forward delay 0, hold 0
    Number of transitions to forwarding state:1
    The port is in the portfast mode by portfast trunk
    configuration
    Link type is point-to-point by default
    Bpdu filter is enabled
    BPDU:sent 0, received 0

    3、Root Guard

    Root Guard在避免网络异常期间的第2层环路方面很有用。根防护功能强制接口成为指定端口,以防止周围的交换机成为根交换机。换句话说,Root Guard提供了一种在网络中强制根桥放置的方法。根防护功能可防止指定端口成为根端口。如果Root Guard功能的端口接收到更高优先级的BPDU,会将其变换为到root-inconsistent状态(实际上等于侦听listening 状态),从而保持当前的根网桥状态。

    switch(config-if)#spanning-tree guard root
    
    switch# show spanning-tree inconsistentports
    Name Interface Inconsistency
    ——————– ———————- ——————
    VLAN0001 FastEthernet0/1 Port Type Inconsistent
    VLAN0001 FastEthernet0/2 Port Type Inconsistent
    VLAN0002 FastEthernet0/1 Port Type Inconsistent
    VLAN0002 FastEthernet0/2 Port Type Inconsistent

    根防护功能可防止端口成为根端口,从而确保该端口始终是指定端口。与其他STP增强功能(也可以在全局范围内启用)不同,必须在不应出现根网桥的所有端口上手动启用Root Guard。因此,在LAN中设计和实现STP时,保证确定性的拓扑非常重要。在端口上启用Root Guard功能后,交换机不会使该端口成为STP根端口。该端口保留为STP指定的端口。此外,如果在端口上收到更好的BPDU,则Root Guard会禁用(err-disable)端口,而不是处理BPDU。如果未经授权的设备开始发送具有更好网桥ID的BPDU,则正常的STP进程会将新交换机选为根交换机。如此通过禁用端口,可以保护网络拓扑。

    当前的设计建议是在所有Access端口上启用Root Guard,以便不通过这些端口建立根网桥。端口停止接收上级BPDU后,该端口将再次解除阻塞,并经历listening 和learning的常规STP过渡,并最终进入forwarding 状态。恢复是自动的;无需干预。

     开启Root Guard:

    switch(config-if)#spanning-tree guard root
    
    switch# show spanning-tree inconsistentports
    Name Interface Inconsistency
    ——————– ———————- ——————
    VLAN0001 FastEthernet0/1 Port Type Inconsistent
    VLAN0001 FastEthernet0/2 Port Type Inconsistent
    VLAN0002 FastEthernet0/1 Port Type Inconsistent
    VLAN0002 FastEthernet0/2 Port Type Inconsistent

    4、Loop Guard

    Loop Guard提供了针对第2层转发环路(STP环路)的附加保护。当冗余拓扑中的STP阻塞端口错误地转换为转发状态时,就会发生桥接环路。这通常是由于物理冗余拓扑的端口之一(不一定是STP阻止端口)已停止接收STP BPDU所致。在STP中,取决于端口角色,交换机依赖于BPDU的连续接收或传输。 (指定端口发送BPDU,而非指定端口接收BPDU。)
    如果交换机链路已建立并且未收到BPDU(由于单向链路),则交换机将认为可以安全地建立此链路,并且端口将转换为转发状态,并开始中继已接收的BPUD。如果将交换机连接到链路的另一端,则会有效地产生生成树环路。

    借助Loop Guard功能,交换机在过渡到STP转发状态之前会进行其他检查。如果启用了Loop Guard功能的交换机停止在非指定端口上接收BPDU,则交换机会将端口置于STP loop-inconsistent的阻塞状态,而不是通过侦听,学习和转发状态。如果交换机在STP loop-inconsistent的状态下在端口上收到BPDU,则端口会根据收到的BPDU在STP状态下进行转换。结果,恢复是自动的,不需要手动干预。

    实施Loop Guard时,应了解以下实施准则;

    • 无法在启用了Root Guard的交换机上启用Loop Guard
    • Loop Guard不会影响Uplink Fast或Backbone Fast操作
    • 必须仅在点对点链接上启用Loop Guard
    • 生成树计时器不影响Loop Guard操作
    • Loop Guard实际上无法检测到单向链接
    • 无法在Portfast或动态VLAN端口上启用Loop Guar

    您可以按端口配置Loop Guard功能,尽管该功能可以按VLAN阻止不一致的端口。 例如,在中继端口上,如果仅针对一个特定的VLAN未收到BPDU,则交换机仅阻止该VLAN(即,将该VLAN的端口移至环路不一致的STP状态)。 对于以太通道接口,对于不接收BPDU的特定VLAN,属于该通道组的所有端口的通道状态将进入不一致状态。 在所有非指定的端口上启用环路保护功能,而不仅仅是阻止端口。 更准确地说,对于活动拓扑的所有可能组合,应在根端口和备用端口上启用Loop Guard。 但是,在启用Loop Guard之前,请考虑所有可能的故障转移方案。

     

    配置Loop Guard

    全局开启:

    Switch(config)# spanning-tree loopguard default
    Switch(config)# end 
    Switch# show spanning tree interface 4/4 detail
    
    
    Switch# show spanning-tree interface fastethernet 4/4 detail 
     Port 196 (FastEthernet4/4) of VLAN0010 is forwarding 
       Port path cost 1000, Port priority 160, Port Identifier 160.196.
       Designated root has priority 32768, address 00d0.00b8.140a
       Designated bridge has priority 32768, address 00d0.00b8.140a
       Designated port id is 160.196, designated path cost 0
       Timers:message age 0, forward delay 0, hold 0
       Number of transitions to forwarding state:1
       The port is in the portfast mode by portfast trunk configuration
       Link type is point-to-point by default
       Bpdu filter is enabled
       Loop guard is enabled by default on the port
       BPDU:sent 0, received 0

    接口下配置:

    Switch(config)# interface fastEthernet 4/4
    Switch(config-if)# spanning-tree guard loop
    Switch(config-if)# ^Z
    
    Switch# show spanning-tree interface fastEthernet 4/4 detail 
     Port 196 (FastEthernet4/4) of VLAN0010 is forwarding 
       Port path cost 1000, Port priority 160, Port Identifier 160.196.
       Designated root has priority 32768, address 00d0.00b8.140a
       Designated bridge has priority 32768, address 00d0.00b8.140a
       Designated port id is 160.196, designated path cost 0
       Timers:message age 0, forward delay 0, hold 0
       Number of transitions to forwarding state:1
       The port is in the portfast mode by portfast trunk configuration
       Link type is point-to-point by default
       Bpdu filter is enabled
       Loop guard is enabled on the port
       BPDU:sent 0, received 0
    Switch#

     4、UDLD

    当仅在一个方向上在邻居之间传输流量时,会发生单向链接。单向链路检测是第2层协议。 UDLD执行第1层机制无法执行的任务,例如自动协商。启用UDLD和自动协商后,第1层和第2层检测将一起工作,以防止物理和逻辑单向连接以及其他协议的故障。单向链接可能会导致生成树拓扑循环。 UDLD使设备能够检测到何时存在单向链路并关闭受影响的接口。 UDLD在光纤端口上很有用,可防止网络问题导致配线架接线错误,从而导致链路处于启动/启动状态,但BPDU丢失。

    启用UDLD后,交换机会定期向其邻居发送UDLD协议数据包,并期望在预定计时器到期之前回送这些数据包。如果计时器到期,则交换机确定链路是单向的,并关闭端口。如果在超时间隔(45秒)内未收到消息,则端口被禁用。每隔默认时间间隔(15秒)发送一次消息。

    检测单向链路和禁用端口所需的45秒时间少于STP将端口转换为转发状态所花费的50秒时间,该时间基于最大年龄的20秒+听力和学习的30秒。这样可以避免由于缺少接收到的BPDU而导致STP将端口转换为转发状态而导致的环路。

    UDLD是在相邻交换机之间启用的第2层协议。它使用MAC 01-00-0c-cc-cc-cc和子网类型为0x0111的子网访问协议(SNAP)高级数据链路控制(HDLC)协议。 UDLD数据包包含有关发送端口的设备ID和端口ID以及邻居的设备ID和端口ID的信息。启用了UDLD的邻居设备会发送相同的Hello消息。如果双方的设备都收到彼此的UDLD数据包,则该链接为双向。如果端口在特定的持续时间(超时间隔)内未在传入的UDLD数据包中看到其自己的设备和端口ID,则该链接被视为单向且被禁用。

    由于以下原因,此UDLD echo算法允许单向链路检测:

    • 当链接两端都连接好时; 但是,数据包仅由一侧接收
    • 当接收和发送光纤未连接到远程侧的同一端口时

    UDLD框架由以下字段组成:

    • Device ID – This field contains the MAC address of the sending device.
    • Port ID – This field contains the module and port number of the sending device.
    • Echo – This field contains the module and port pair known by the sending device.
    • Message Interval – This field contains the transmit interval of the sending device.
    • Timeout Interval – This field contains the timeout interval of the sending device.
    • Device Name – This field contains the CDP Device ID string of the sending device.
    • Sequence Number – This field contains the number used to validate discovery packets.
    • Reserved – These fields are reserved for future use.

    一旦UDLD检测到单向链路,相应的端口将被禁用并保持禁用状态,直到手动重新启用它,或直到errdisable超时到期(如果已配置)为止。 UDLD可以在normal or aggressive下运行。

    在normal模式下,如果UDLD停止从其直接连接的邻居接收UDLD消息,则仅将启用UDLD的端口更改为undetermined 状态。 aggressive模式UDLD是UDLD的一种变体,当端口停止接收UDLD数据包时,UDLD会尝试与邻居重新建立连接。 重试八次失败后,端口状态将变为err-disable状态,从而有效地禁用了端口。

    在UDLD normal模式下,当检测到单向链接条件时,允许端口继续工作。 UDLD仅将端口标记为不确定状态并生成系统日志消息。 换句话说,在正常模式下,UDLD不会采取任何操作,并且允许端口根据其生成树状态继续运行。

    在点对点链接上配置了UDLD aggressive模式。 在UDLD邻居停止从其相邻对等方接收UDLD更新之后,此模式开始起作用。 在主动模式下,本地设备将尝试重新建立UDLD连接八次。 如果交换机无法在此时间内重新建立连接,它将禁用端口。

    aggressive模式是配置UDLD的首选方法。 通过阻止这种单向通信,UDLD在生成树网络中很有用。 当由于硬件故障导致单向通信而应关闭链接时,请使用UDLD。 在EtherChannel捆绑软件中,UDLD仅关闭发生故障的物理链路。 当端口卡住(一侧既不发送也不接收;但是,链路在两端都up)或链路在一侧up而在另一侧down 时,UDLD主动模式增加了额外的检测。 仅在光纤连接上使用,因为铜缆端口通常不易受到此类问题的影响,因为铜缆端口使用以太网链路脉冲来监视链路。

    要在将端口置于错误禁用状态后将其up起来,在错误纠正之后,shu/no shu该受影响的接口即可。

    针对全局或单个接口开启UDLD

    针对接口:

    Switch(config-if)# udld enable [aggressive]

    全局(为所有接口开启):

    Switch(config)# udld { enable | aggressive }

    查看:

    SwitchA#show udld gigabitEthernet 0/1
    Interface Gi0/1
    —
    Port enable administrative configuration setting: Enabled / in aggressive mode
    Port enable operational state: Enabled / in aggressive mode
    Current bidirectional state: Bidirectional
    Current operational state: Advertisement – Single neighbor detected
    Message interval: 15
    Time out interval: 5
    Entry 1
    —
    Expiration time: 38
    Device ID: 1
    Current neighbor state: Bidirectional
    Device name: FOX01590RW1
    Port ID: Gi1/1
    Neighbor echo 1 device: FOX0872A001
    Neighbor echo 1 port: Gi0/1
    Message interval: 15
    Time out interval: 5
    CDP Device name: SwitchB

    比较Aggressive Mode UDLD和Loop Guard。

    Loop Guard和主动模式UDLD的功能重叠,因为它们都可以防止由单向链接引起的STP故障。 但是,这两个功能在解决问题的方法和功能上是不同的。

     主动模式UDLD与Loop Guard之间最明显的区别在于STP。主动模式UDLD无法检测到由未发送BPDU的指定交换机中的软件问题引起的故障。攻击性模式UDLD在检测EtherChannel上的单向链路方面具有更强大的功能。 Loop Guard通过将EtherChannel设置为VLAN或所有VLAN的环路不一致状态来阻止EtherChannel的所有接口发生故障,而激进模式UDLD会禁用出现问题的单个端口。此外,主动模式UDLD不依赖于STP,因此它也支持第3层链接。 Loop Guard不支持在交换机启动时单向的共享链接或接口。如果端口在交换机启动时是单向的,则该端口将永远不会接收BPDU并成为指定端口。 Loop Guard不支持此方案,因为该行为与正常的STP操作无法区分。积极模式UDLD确实提供了针对此类故障情况的保护。

    同时启用主动模式UDLD和Loop Guard,可提供最高级别的保护,以防止多层交换网络中的桥接环路和黑洞。

    Refer to:http://ericleahy.com/index.php/bpdu-guard-bpdu-filter-root-guard-loop-guard-udld/

  • 相关阅读:
    Java编程的逻辑 (42)
    Java编程的逻辑 (41)
    Java编程的逻辑 (40)
    Java编程的逻辑 (39)
    Java编程的逻辑 (38)
    Java编程的逻辑 (37)
    Java编程的逻辑 (36)
    Java编程的逻辑 (35)
    Java编程的逻辑 (31)
    web前端学习(二)html学习笔记部分(6)--fileAPI
  • 原文地址:https://www.cnblogs.com/MomentsLee/p/12868644.html
一二三 - 开发者的网上家园