★路由递归查询方法及相关图…

      
我们知道,路由查
找的过程是寻找数据包下一跳的过程!IP路由逐跳将数据包送往目的地。所谓的下一跳就是和自己直连的某台路由器的对应接口IP地址,这是合乎情理的理解,
然而IP路由提供了另外一种方式,即下一跳不必非要和自己直连,它可以忽略当前路由器“附近的拓扑”,直接告知相对较远方的拓扑,如下图所示:

  到达Server的下一跳是R2,到达R2的下一跳是R1...以此类推。协议栈
的路由查找逻辑在查找路由时,如果发现nexthop不是和自己直连的,那么就会将此nexthop作为destination再次按照上述逻辑查找路由
表直到查到和自己直连的nexthop或者完全失败为止。这种路由相当于把nexthop推向了远方。这种递归查找能带来什么好处呢?显然的,递归路由可
以是nexthop受到附近网络拓扑变化的影响最小化!针对必须使用静态路由的情况,合理的递归路由规划可以大大简化静态路由的维护工作量,当然如果你使
用动态路由,那就没有必要了,要知道递归路由在带来维护方便的同时,其代价是路由器增加了查找压力。以一个例子说明,试看如下拓扑:


  试想,如果到达R1,R2的链路均出现了问题,现在需要将N1,N2,N3的nexthop都切换到R7,你就需要同时修改这三条路由(在无法
实现路由汇总的情况下,更糟糕),然而如果我们已经知道到达N1,N2,N3都要经过R3,那么就可以配置N1,N2,N3的nexthop均为R3,顿
时在逻辑上绕开了问题链路,实际上,协议栈
的路由查找逻辑帮助管理员找到了一条到达R3的路,最终的nexthop物力上还是和R0直连的,递归查找的结束条件就是destination和R0直
连。在配置上,寻址3个网络的需求变成了寻址R3的需求,配置也简化了不少,你只需要配置一个默认网关即可,链路切换时需要更改的配置也少了很多。

  然而记住,递归路由并没有改变任何数据包到达目标网络的路径,它最终还是要落实到一个直连nexthop上,如果我们根据递归路由的配置反推,
那么就可以配置出一个非递归的“正常路由”,这个正常的路由配置也能解决上述的繁琐配置问题,因此递归路由某种程度上是一种懒人的做法。另外,递归路由的
使用有一个要点,那就是你必须对整个网络拓扑比较熟悉,之所以要使用递归路由,目的是绕开那些经常变动的链路,而作为静态路由,链路变动就意味着所有相关
的路由都要重新配置,使用递归路由可以使配置工作量减小,是否使用递归路由的一个权衡点是:如果到达目标网络的链路在途中不能汇聚成比目标网络数量更少的
链路,递归路由就没有什么意义。

  归于实际,我发现Windows是有递归路由配置功能的,当然Cisco就
更别说了,可是Linux没有,说它没有还真是有一半,竟然没有实现完,空留一个CONFIG_IP_ROUTE_PERVASIVE宏,最可悲的是,竟
然在iproute2里面有一个NHFLAGS := [ onlink | pervasive
],这个pervasive是最可恶的。Linux总是这样,内核的实现与否和用户态程序实现与否总是不一致!!

时间: 2024-11-24 13:38:02

★路由递归查询方法及相关图…的相关文章

★路由递归查询方法及相关图…

       我们知道,路由查 找的过程是寻找数据包下一跳的过程!IP路由逐跳将数据包送往目的地.所谓的下一跳就是和自己直连的某台路由器的对应接口IP地址,这是合乎情理的理解, 然而IP路由提供了另外一种方式,即下一跳不必非要和自己直连,它可以忽略当前路由器"附近的拓扑",直接告知相对较远方的拓扑,如下图所示: 到达Server的下一跳是R2,到达R2的下一跳是R1...以此类推.协议栈 的路由查找逻辑在查找路由时,如果发现nexthop不是和自己直连的,那么就会将此nexthop作为

★路由递归查询方法及相关图示【转载】

       我们知道,路由查 找的过程是寻找数据包下一跳的过程!IP路由逐跳将数据包送往目的地.所谓的下一跳就是和自己直连的某台路由器的对应接口IP地址,这是合乎情理的理解, 然而IP路由提供了另外一种方式,即下一跳不必非要和自己直连,它可以忽略当前路由器"附近的拓扑",直接告知相对较远方的拓扑,如下图所示: 到达Server的下一跳是R2,到达R2的下一跳是R1...以此类推.协议栈 的路由查找逻辑在查找路由时,如果发现nexthop不是和自己直连的,那么就会将此nexthop作为

htaccess-如何实现php路由分发 方法变量自定义参数名称以及个数

问题描述 如何实现php路由分发 方法变量自定义参数名称以及个数 比如有一个方法 public function a($b,$c,$d){ echo $b,$c,$d; } 要输入的链接是.......&b=1&c=2&d=3 然后输出123 这个该在.htaccess怎样写

ci框架[2.x]版本 设置了路由,方法里面用segment怎么接收参数

问题描述 ci框架[2.x]版本 设置了路由,方法里面用segment怎么接收参数 配置文件里面路由规则是默认的,如下: $config['uri_protocol'] = 'AUTO'; 配置路由规则如下: $route['special/(d+).html'] = "home/special_detail/$1"; 访问地址:http://www.test.cn/special/21.html 在控制器里面接收参数id: function special_detail(){ $id

AngularJS基于ui-route实现深层路由的方法【路由嵌套】_AngularJS

本文实例讲述了AngularJS基于ui-route实现深层路由的方法.分享给大家供大家参考,具体如下: 1.前面我们通过了简单的ng-route实现了简单层次的路由,对于深层次的路由,我们可以通过ui-route来实现. (1)ng-route的局限性:一个页面无法嵌套多个视图,也就是说一个页面只能有包含一个页面一个控制器的切换. (2)ui-route的改进:在具有富客户端的单页应用中,要在一个页面中呈现不同的视图,我们可以通过ui-route实现路由的嵌套. 2 . ui-route的使用

adsl路由设置方法

小型企业办公网络采用ADSL共享上网经济实惠.升级ADSL Modem是一项技术性很强的工作.如果稍有不慎,就可能导致设备不能正常工作,因此大家在动手之前请三思而后行! 通常的做法是使用集线器配合代理服务器软件,利用一台电脑作为代理服务器,其他电脑通过这台代理共享ADSL上网. 不 过这种共享上网的方式,随着时间的推移出现了不少弊病,最明显的就是如果代理服务器不开机,其他电脑都无法连接Internet.那么能否绕过代理服务器,直接通过共享的ADSL Modem实现对Internet的访问呢? 有

局域网安全之路由设置方法

对于大多数企业局域网来说,路由器已经成为正在使用之中的最重要的安全设备之一.一般来说,大多数网络都有一个主要的接入点.这就是通常与专用防火墙一起使用的"边界路由器". 经过恰当的设置,边缘路由器能够把几乎所有的最顽固的坏分子挡在网络之外.如果你愿意的话,这种路由器还能够让好人进入网络.不过,没有恰当设置的路由器只是比根本就没有安全措施稍微好一点. 在下列指南中,我们将研究一下你可以用来保护网络安全的9个方便的步骤.这些步骤能够保证你拥有一道保护你的网络的砖墙,而不是一个敞开的大门. 1

详解Linux系统中配置静态路由的方法

  主机只有一块网卡的时候,不会涉及到默认路由和静态路由的问题.两块网卡时,也可以一块配置有网关(默认路由走这个网卡),另外一块只配置IP和掩码确认(该主机同网络的可以互通).不过在稍大型的.有多网段的环境里就需单独进行默认路由和静态路由的配置了. 一.需求 目前有如下的一个网络,主机有两个网卡,两个网段分别是是业务地址eth0和管理地址eth1. 业务地址段为:192.168.3.0/24段 管理地址段:10.212.52.0/24段 防火墙段:10.211.6.0/24段 现在的需求是,默认

中兴831adsl modem ADSL路由设置方法

中兴831adsl modem 如何设置831: 先要把831的内置软件刷到2.79版本,可www.zte.com.cn下载(如何刷在说明里面) 831出厂设置的以太网口IP地址是192.168.1.1,为了能用telnet访问到831,我们现在先把一台电脑的地址设置为192.168.1.*, 使用ping 192.168.1.1 看看能不能访问到831,没问题的话继续,在DOS模式下打入telnet 192.168.1.1,如果你刚刷好软件,是有密码的,原厂密码是adsl831接着我们已经登陆