如何防止网络环路
一个网络中,产生了环路,到底是好事还是坏事?如何避免环路,如何利用环路呢
操作方法
- 01
网络中交换机应该是最普及的,用的最多的网络设备了。每个像样的网络里面,都少不了交换机。 在交换机之前,用的比较多的是HUB,就是集线器,有些叫集中器。在HUB之前,网络比较复杂,有10BASE-2的细缆网络,10BASE5-的粗缆网络,令牌环网络,FDDI网络等。 HUB,典型的物理层设备,把进入的数据整形,放大,然后广播到所有的端口。在HUB时代的网络中,有个5-4-3规则。那时候能用上HUB,尤其是IBM HUB的单位,都是比较有钱的,也是比较重视IT建设的。HUB的出现让网络管理人员大大的松了一口气。因为排查错误的工作变得非常简单了。 交换机是典型的二层设备。在交换机的内部有cache,数据帧到达交换机后,交换机确认数据可以转发后,把数据帧中的目的地址(MAC地址)取出来和交换机的转发表CAM中的条目进行比较,并发送到相应的端口。如果CAM表中没有匹配的MAC地址,则广播到所有端口。 交换机具有分离冲突域的功能,可以进行全双工的数据通信。HUB则只能进行半双工方式的数据通信。根据CSMA/CD可以反演为什么HUB只能进行半双工方式的通信。 交换机还具有过滤转发的功能。主要是依赖CAM表进行,交换机上连接的终端之间可以进行多组点到点之间的数据传输。 网络建的时间长了,难免在后期使用的时候会产生环路。网络中的环路究竟怎么避免呢? 物理层的环路:比如两个HUB之间用两条线缆连接起来。会产生广播风暴,用户的数据几乎无法在网络上传输。而且HUB的conflict灯会狂闪。在使用HUB的网络中能否自动发现环路并做相应的处理呢?答案是否定的!一般的HUB只是对数据信号做一些简单的处理,HUB无学习别网络拓扑,因此也就无法知道网络中是否出现了环路。在HUB环境的网络中,出现环路之后只能认为的去断线,避免环路。 链路层的环路:网桥也是链路层的设备。HUB是一个冲突域,当冲突域太大的时候,网络上广播数据已经冲突产生的碎片会大量占用网络的有限带宽,导致正常的用户数据只能利用很少的一点带宽资源。网桥则是分离了冲突域,将大的冲突域分割成了小的冲突域。一个网桥的端口就是一个冲突域,一个交换机的端口也是一个冲突域。当两台交换机之间用两条线缆连接起来时,也形成了环路。但是,有一种协议——IEEE802.1d,专门为交换机设计。这种协议叫做生成树spanning tree协议,具有避免环路的功能。通过生成树协议,交换机能够了解网络的拓扑状况,能够识别网络中的环路,根据开销是环路的某个接口转发数据,另外一个接口处于阻塞状态,只侦听协议数据。如果转发数据的端口故障,阻塞端口就会处于转发状态,承担数据转发的角色。因此,生成树协议也具有链路备份的功能。 交换机上的端口聚合或者链路聚合,也是在交换机之间连接两条或多条线缆。这也是一种环路!是不是也是只有一条链路在转发数据呢?答案当然是否定的!多条链路都在工作,是不是和生成树冲突了呢?没有冲突。确实是没有冲突,端口或者链路聚合技术,是把多条链路当成一条逻辑链路来使用的。不存在环路的问题,应该说不存在逻辑上的环路。 网络层的环路:大家都知道网络层有各种路由协议和可路由协议。路由协议比如静态路由,RIP距离矢量路由协议,OSPF链路状态路由协议等。可路由协议现在我们看到的最多的就是IP协议了。说到这里,凡是对网络有所了解的人都应该知道在网络层是如何避免环路带来的不利影响了。 网络层的环路避免是通过路由协议本身的一些机制进行的。 RIP的水平分割,OSPF的SPF算法都可以避免路由环路。有时候我们还会利用环路来做负载均衡呢。 当然出现环路后,一般情况下都需要收敛,最终让数据正常传输。HUB中的环路,收敛工作只能有管理员来做。交换机环境中的环路,可以通过生成树协议来收敛。大概需要1分钟的样子。因此,有时候我们把网线直接插到交换机上,要等很长时间才能上网。似乎比HUB要慢很多,主要原因就是交换机在进行生成树方面的计算,最终确定连接终端的接口为转发接口。路由器环境中的环路,依靠路由协议本身来收敛,寻找最优路径。每一层都各司其职,各尽其能。