Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2042948
  • 博文数量: 433
  • 博客积分: 4775
  • 博客等级: 上校
  • 技术积分: 8054
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-19 16:15
文章存档

2014年(9)

2013年(20)

2012年(77)

2011年(323)

2009年(4)

分类: 系统运维

2011-10-20 10:53:56

通常,在连接到广播类型IP网络情形中,使用距离矢量路由协议的路由器会使用水平分割(Split horizon)机制来减少可能出现的路由环路。水平分割功能可以阻止从一个接口上接收或学习到的路由信息再从该接口上被通告出去。其实可以从其名称的水平分割加以理解,水平分割就是要求路由消息一直向前发送,不要回头。这样要求发送的路由消息中目的地址就不能是路由源接口。

下面举一个示例进行介绍(网络结构参见本章前面的图7-6)。

如果Router BS1接口从Router C S0接口上接收到了一个到达10.20.40.0网络的路由通告信息(假设为路由)。该路由为:Router CS0接口→Router CE0接口目的网络就是10.20.40.0

这时,Router B会在自己的路由表中创建一条新路由(假设为路由)。该路由为:Router BS1接口→Router CS0接口目的网络10.20.40.0

如果此时Router B通过其S1接口向Router CS0接口发送这个路由的更新通告,告诉Rouer C它学习到了这条新路由,则Router C又会创建一条新路由(假设为路由)。该路由为:Router CS0接口→Router BS1接口目的网络10.20.40.0

这样在Router C上就相当于有两条到达同一目的网络的路由。而在Router B中已有路由。这样Router B如果要访问目的网络10.20.40.0,则首先会采用路由,它指出下一跳地址为Router CS0接口,当数据包到达Router C时,由于有路由,它又指出从Router CS0接口出发的一条路由的下一跳地址为Router BS1接口。结果显然,数据包永远不会到达真正的目的网络10.20.40.0,而是在从Router CS0接口和Router BS1接口之间无穷循环。尽管在Router C中还有一条同样是以S0接口为源地址的路由,但是路由俦级明显高于路由,因为Router CS0接口与Router BS1接口的IP地址属于同一网络,度量为0,而Router CS0E0接口的IP地址通常不是在同一网络的,度量至少为1。所以实际上路由是根本取不到作用的。

这种行为通常用于优化多个路由器间的通信,特别是在需要阻止某些链路通信时。但是,非广播类型网络,如帧中继和SMDS(交换多兆位数字系统),因为出现路由环路的机会相当小,所以你可以禁止RIP的水平分割功能。除了采用了帧中继或者SMDS封装的其他所有接口,默认是启用了水平分割的。如果在接口配置中包括了encapsulation frame-relay或者encapsulation smds命令,则默认是禁用水平分割功能的。使用任何X.25协议封装的接口默认都不禁用水平分割功能的。

另外,如果一个接口配置辅助IP地址,并且启用了水平分割功能时,则通过辅助IP地址进行路由更新时也可能将不会成功。路由更新是基于每个标准网络进行的(也就是基于整个网络进行更新的),而不是基于子网进行的,除非你禁止了水平分割功能。启用了水平分割功能后,路由器上的有些接口就可能被阻止消息的发送了。

在使用水平分割功能时要注意,在有些情况下还应禁止它。最常见的一种环境是帧中继的Hub-Spoke结构的网络。Hub路由器接收到Spoke端的路由更新,必须再从这个接口发出去,以便其他Spoke路由器来接收这些路由。如果启用了水平分割,从一个Spoke传递到Hub的路由将无法到达其他Spoke路由器,导致Spoke路由器之间相互没有路由。

本文摘自《路由器配置与管理完全手册(Cisco)试读样章》第七章

阅读(2292) | 评论(0) | 转发(0) |
0

上一篇:RIP路由汇总

下一篇:RIP邻居路由认证

给主人留下些什么吧!~~