扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在网络部署中,为了提高网络的稳定性,往往会采取物理冗余的方式。如下图所示,即使到交换机B的某个端口出现故障,由于物理冗余的存在,使得数据仍然可以传送。只是其传送的路径不同而已。当网络运行正常的时候,生成树协议会自动根据相关的规则来确定数据流传送的路径。所以虽然形成了一个物理的环路,但是在数据传递的时候,不会因为环路而形成网络黑洞。但是,如果采取某种保护机制的话,当网络出现故障后再恢复的过程中,就可能出现环路。
一、故障模拟
如上图所示,假设交换机A是根路由器。为了提高网络的可用性,在交换机A、B、C之间形成了物理环路。不过生成树协议会根据一定的规则来确定数据传输的路径。所以在正常情况下,不会产生网络环路。但是如果当网络出现故障的时候,就可能产生问题。如因为某种原因,交换机B与C之间的链路可能发生单向失效。也就是说,交换机C无法交换机B那里接收数据(包括BPDU信息)。
当没有采取任何环路保护机制的话,会出现什么情况呢?当交换机监测到错误的时候,交换机C会自动将自己的故障端口设置为STP阻塞状态。在交换机最大寿命计时器到期之后,交换机C上面的阻塞端口将会成阻塞状态转换为STP监听状态。。然后在两倍的延迟时间之后,将这个端口转换为转发状态。当交换机C的某个端口出现故障时,生成树协议会自动监测到这个错误,从而改变数据的传输路径,从交换机B流向交换机C。而当交换机C的端口重新设置为转发状态时,数据就再次从交换机C流向交换机B。此时数据的传递就会发生环路,从而导致环路黑洞的产生。
二、利用环路保护来防止网络黑洞
为了避免出现如上错误,笔者建议通过一些保护措施来防治网络环路。类似的保护措施有很多。笔者今天要介绍的是通过思科的环路防护机制来避免网络黑洞。
简单的说,环路保护机制可以对第二层转发环路提供额外的保护,主要针对的是STP环路。从以上的分析中可以看出,如果网络中存在物理的冗余网络。则当冗余拓扑结构中的STP阻塞端口错误的过渡到监听状态、再错误的过渡到转发端口之后,如果没有采取一定的措施,就会发生桥接环路。这最本质的原因,主要是因为由于链路的故障,导致交换机无法连续的收到BPDU数据包。
众所周知,当物理冗余网络拓扑中的某个故障端口停止接收STP BPDU的时候(如上图中的交换机C),STP则会认为这个网络拓扑没有存在物理环路。最后由于冗余端口的阻塞端口过渡到指定端口,并且将STP转换到转发状态,从而产生环路,导致网络黑洞。现在市面上的一些保护措施,基本上都是围绕着这个理念来设计的。
通过使用环路保护机制可以有效的避免这种情况。如果启用了这个机制,则交换机在将某个端口转换到转发状态之前,会多做一步检查的工作。在检查中如果发现启用环路保护特性的非指定端口上停止接收BPDU,则交换机会将这个端口转换到“不一致环路”的阻塞状态。如果这个端口为设置为这个状态,其有一个特点,将破坏原有的转换规则,即当过了最大寿命时间之后,不会将这个端口设置为监听状态。当过了两倍的延迟时间之后,也不会将这个端口设置为转发状态。从而从根本上避免了网络环路的出现。
当然,如果交换机在不一致环路STP状态的端口上接收到新的BPDU信息的时候,断口将根据接收到的信息而转换到STP状态。这个转换的过程也是系统自动完成的,不需要手工的干预。从而不会造成网络管理员额外的工作量。
三、具体的配置以及注意事项
要在交换机上启用或者停用这个环路保护机制,是非常简单的一件事情。只需要通过如下的命令就可以实现:spanning-tree loopgurad default或者no spanning-tree guard。第一个命令是告诉交换机启用环路保护机制,第二个命令则是禁用环路保护机制。可见这个启用或者禁用的操作是非常简单的。其难点在于后续的维护以及一些管理的注意事项上。
在配置环路保护机制的时候,第一个需要注意的是在所有非指定的端口上都要启用这个环路防护机制。只有如此才能够发挥其应有的作用。而不仅仅只是在阻塞端口上启用这个环路保护特性。换一句话说,就是要在活跃拓扑的所有可能组合中,都应该在相关的端口上(如根端口或者后备端口)上启用环路保护机制。这一点非常的重要,如果漏掉一个端口,那么在某些情况下仍然可能会出现环路环路的情况。无法从根本上杜绝网络黑洞。
第二个需要注意的是,在事先事后需要做好测试分析的工作。在启用网络环路防护特性之前,需要考虑所有可能的故障切换情况。在启用这个特性后,需要进行测试,以判断这个特性的有效性。其实不光光是这个网络环路特性。只要是更改了网络的设置,基本上都要做好这个事先的设计与事后的测试工作。这主要是从网络的可用性角度出发的。否则的话,很有可能因为新的配置导致网络出现故障。
第三个需要注意的是,虽然端口恢复的过程是自动的。但是作为网络管理员,仍然要做到时候追踪的工作。因为故障的原因不会凭空产生。如果没有从根本上解决问题,则这个原因会重复的出现。笔者认为,网络管理员可以从交换机的日志中追踪到相关的信息。无论是交换机将某个端口设置为“不一致环路”状态,还是恢复到正常的状态下,其都会在日志中留下相关的信息。从日志中,如果可以看到以spantree-2-loopguardunblock开头的信息,就表示触发了这个环路保护机制。具体是故障还是自动恢复,可以看后面的提示信息。当这个信息出现的比较频繁的时候,网络管理员就需要引起注意。一定要及时的找到问题的根源并解决它。如果是偶尔的,如一个月才出现一次,那么可以当作偶然错误,可以暂时放放。
第四个需要注意的是,如果企业还启用了安全虚拟局域网(vlan),那么这个环路保护特性仍然是奏效的。因为这个环路保护机制可以以VLAN为单位阻塞不一致的端口。(正常情况下是以端口为单位启用环路防护特性)。也就是说,如果企业采用的是虚拟局域网,则在配置环路防护机制的时候,会更加的方便。不用以端口为单位进行配置与维护,而只需要以VLAN为单位进行管理即可。在企业中往往VLAN的数量要比交换机的端口数量少的多,为此可以在很大程度上降低网络管理员的工作量。在现实工作中,如果企业没有虚拟局域网的需求,那么可以将公司的整个网络设置为一个虚拟局域网,从而简化后续的配置维护工作。这无疑是一种有效的“偷懒”方法。
总之,如果从网络的可用性出发,企业设计了物理冗余的拓扑结构。那么于此同时,需要为交换机的相关端口配置环路防护等类似的保护机制。防止因为出现网络环路而导致网络黑洞问题。否则的话,网络管理员很可能是搬起石头砸自己的脚。本来想通过冗余拓扑来提高网络的可用性,结果却造成了新的问题。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。