递归查找

2021年09月15日 阅读数:1
这篇文章主要向大家介绍递归查找,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

 最近有很多刚朋友有些疑惑,为何串行链路在配置静态路由的时候,只用指出接口,而在MA(多路访问)链路上要采用“出接口+下一跳”的方式指静态路由,让人迷惑的是,在MA链路上采用“出接口+下一跳”能避免递归查找的问题。今天我写了这边文章,但愿能对你们有所帮助。  
    首先介绍下什么是递归查找:
网络

     众所周知,路由器在转发数据包的时候会参考路由表的路由表项,肯定到特定网段的出接口,从而实现路由功能。经过具体实例,来说解更具说服力,上拓扑:
递归查找_休闲 
这是用GS画的一个简单拓扑,在R3上指静态路由时用: 
R3(config)#ip route 12.0.0.0 255.255.255.0 23.0.0.2  (仅采用下一跳的形式,R2的e2/0接口ip add:23.0.0.2/24)
例如当有一个数据包由R3转发给R1,过程会是怎样呢?
 
第一步,查看数据包的目的地址,去往12网段
 
第二步查看路由表,OK,有去往12网段的静态路由,能够转发此数据包,可是路由表项中没有出接口,而路由器路由最终是肯定出接口,因此再次查找路由表,肯定出接口,发现能够经过e1/0接口到达目的网段。
OK,能够开始转发数据包了——经过两次,或者屡次的查找路由表来肯定出接口,这种方式被称为“递归查找”,递归查找会下降路由效率,因此应该尽可能避免。
 
若是使用:
R3(config)#ip route 12.0.0.0 255.255.255.0 e1/0 23.0.0.2(出接口加下一跳)这样一次查找就能够肯定出接口了,避免了递归查找的问题
 
     而若是是在串行链路上,例如从R1路由一个数据包到R3,那么咱们能够采用出接口的静态路由
R1(config)#ip route 23.0.0.0 255.255.255.0 e2/0 12.0.0.2
 
有人会问,为何从R3到R1不直接采用出接口的方式指静态路由呢?由于以太网是多路访问网络,在这条链路上有不少个路由器,它们是同一网段。若是只指明出接口,可能会发生错误的路由。而串行链路则是一对一,点到点的链路,不用担忧出现此类问题