静态路由汇总(路由聚合)

1、路由汇总技术背景

我们看上图,对于R1而言,如果要去往R2身后的172.16.1.0/24、172.16.2.0/24、172.16.3.0/24网络,那么自然是要有路由的,如果是采用静态路由的方式,意味着我们要给R1配置三条静态路由分别对应上述三个网段,上面我们已经说过了,这样的配置,一来工作量大,想想看,如果R2身后不仅仅有三个网络呢?如果有100个网络呢?再者这也意味着R1的路由表变得非常臃肿。
在上一小节我们已经介绍过默认路由了,默认路由固然可以解决一部分的问题,但是默认路由的“路由颗粒度”太大,无法做到对路由更为细致的控制,而且如果R1左侧连接了一个网络出口并且已经占用了默认路由了,那么这里只能另想他法了。
路由汇总可以很好的解决这个问题:

前一个场景,我们需使用3条明细路由,而在上图R1中,我们却仅仅使用一条路由即可实现相同的效果,这条路由是上一个场景中三条明细路由的汇总路由。这样配置的一个直接好处就是,路由器的路由表条目大大减少了。这种操作方式我们称为路由汇总。路由汇总是一个非常重要的网络设计思想,通常在一个大中型的网络设计中,必须时刻考虑网络及路由的可优化性,路由汇总就是一个我们时常需要关注的工具。这里实际上是部署了静态路由的汇总,当然除此之外我们也可以在动态路由协议中进行路由汇总,几乎所有的动态路由协议都支持路由汇总。

2、路由精确汇总的算法

路由的汇总实际上是通过对子网掩码的操作来完成的。对于下面的例子来说:

在R2上,为了到达R1下联的网络,R2使用路由汇总的工具,指了一条汇总路由:

[R2] ip route-static 172.16.0.0 16 10.1.12.1                                #12.1为R1的接口IP

虽然这确实起到了网络优化的目的,但是,这条汇总路由太“粗犷”了,它甚至将R3这一侧的网段也囊括在内,我们称这种路由汇总行为不够精确。因此,一种理想的方式是,使用一个“刚刚好”囊括这些明细路由的汇总路由,这样一来就可以避免汇总不够精确的问题。
这里不得不强调一点,网络可以部署路由汇总的前提是我们网络中IP子网及网络模型设计具备一定的科学性和合理性,因此路由汇总和网络的IP子网及网络模型的设计是息息相关的。如果你的网络规划的杂乱无章,路由汇总部署起来就相当的困难了。
那么如何进行汇总路由的精确计算呢?下面我们来看一个例子:
现有明细路由:172.16.1.0/24至172.16.31.0/24,计算最精确的汇总路由

我们要做的事情非常简单,这些个明细子网是连续的,我们只要挑出首位的两到三个网络号来计算就足够了:

  1. 将这些IP地址写成二进制形式,实际上,我们只要考虑第三个8位组即可,因为只有它是在变化的。
  2. 现在,我们要画一根竖线,这根线的左侧,每一个列的二进制数都是一样的,线的右侧则无所谓,可以是变化的,这根线的最终位置,就是汇总路由的掩码长度。注意这根竖线可以从默认的掩码长度,也就是/24开始,一格一格的往左移,直到你观察到线的左端每一列数值都相等,即可停下,这时候,这根线,所处的位置就刚刚好。
  3. 如上图,线的位置是16+3=19,所以我们得到汇总地址:172.16.0.0/19,这就是一个最精确的汇总地址。

因此,上面的例子,我们可以这么配置:

 

3、路由汇总的潜在问题

 

路由汇总是一个非常重要的网络优化工具,然而如果使用不当,也有可能带来问题,在上图中,R1左侧有192.168开头的一系列网络,为了让他们能够访问Internet,R1配置了指向R2的默认路由。而R2为了让数据能够回程,又为了精简路由表,配置了一条汇总路由192.168.0.0/16,并指向R1。这个网络看似没什么问题,但……

 

解决办法:

 

在R1上配置一条ip route-static 192.168.0.0 16 null0,即可解决上述问题,当R1收到扫描报文发往192.168网络下不存在的目的时,就会直接被R1丢弃,而不会再转发给R2了。这就解决了理由环路的问题。这个思路在路由汇总的时候非常关键,许多动态路由协议在使用命令执行路由汇总的时候,会在本地路由表中产生一条指向null0的汇总路由就是这个原因。
因此,无论是采用静态路由,或者是动态路由协议来部署路由汇总,都应格外留意路由汇总是否可能引发路由环路。

posted @ 2018-09-21 20:23  行方思远  阅读(3179)  评论(0编辑  收藏  举报