<5>路由基础——路由汇总

前言

随着业务对网络的需求不断增加,网络规模在逐渐变大。对于一个大规模的网络来说,路由器或者其他具备路由功能的设备势必需要维护大量的路由表项,未来维护臃肿的路由表,这些设备就不得不耗费大量的资源。当然,在一个规模更大的路由表中进行查询时,路由器也会显得更加吃力。因此在保证网络中的路由器到各个网段都具备IP可达性的同时,如何减少设备的路由表规模就是一个非常重要的课题。

路由汇总定义

一个网络如果具备科学的IP编址,并且进行合理的规划,是可以利用多种手段减少设备路由表规模的。其中一个非常常见而且又有效的办法就是使用路由汇总(Route Summarization或者Route Aggregation)。

路由汇总又称为路由聚合,是将一组有规律的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或者是明细路由,把汇聚之后的这条路由称为汇总路由或者是聚合路由。

路由汇总过程

【1】在图中,对于R1而言,如果要达到R2右侧的192.168.1.0/24、192.168.2.0/24......192.168.255.0/24,自然是要用路由的,若手工为每个网段配置一条静态路由,这意味着要给R1手工配置255条静态路由,显然工作量太大了,R1的路由表也将变得非常臃肿。

在这个场景中如果不在R1上配置这些静态路由,而是使用一条指向R2得默认路由似乎就可以解决问题,通过这条默认路由,R1能够到达R2右侧得所有网段,而且其路由表及其得精简,但是默认路由的“颗粒度”太大了,无法做到对路由更为细致的控制,而且如果R1的其他接口还连接了一条出口链路并且已经在这个出口上使用了默认路由,那么这里只能另谋出路了。

路由汇总可以很好的解决这个问题。原来需要使用255条明细路由,而运用路由汇总的思想后,仅仅使用一条路由即可实现相同的效果,例如在R1上进行如下配置

ip route-static 192.168.0.0  16 10.1.12.2

以上的配置便是在R1上创建一条静态的汇总路由,改路由的目的网络地址及掩码长度为192.168.0.0/16。192.168.0.0/16实际上是将192.168.1.0/24、 192.168.2.0/24......192.168.255.0/24这些网段都“囊括”在内。在R1上使用这样的配置,一个直接的好处就是其路由表条目数量大大减少了。几乎所有的动态路由协议也都支持路由汇总功能。

【2】路由的汇总实际上是通过对目的网络地址和网络掩码的灵活操作实现的,形象的理 解就是,用一个能够囊括这些小网段的大网段来替代它们。然而汇总路由的计算是要非 常谨慎和精确的,否则可能导致路由的紊乱,如图。

为了让R2 能够到达R1左侧的网段,出于网络优化的目的,我们为其配置了一条静态的汇总路由:

ip route-static 172.16.0.0 16 10.1.12.1

虽然这确实起到了网络优化的目的,但是,这条汇总路由太“粗犷” 了,它甚至将 R3右侧的网段也囊括在内,如此一来,去往R3右侧网段的数据包在到达R2后,就有 可能被R2转发到R1,从而导致数据包的丢失,我们称这种路由汇总行为不够精确。因 此,一种理想的方式是,为R2配置一条“刚刚好”囊括所有明细路由(例如R1左侧的 这些网段)的汇总路由,这样一来就可以避免汇总不够精确的问题。 

注意:一个网络能够部署路由汇总的前提是该网络中IP编址及网络设计具备一定的科学性和合理性,如果网络规划的杂乱无章,路由汇总部署起来就相当困难甚至完全不具备可实施性了。

那么如何进行汇总路由的精确计算呢?

现有明细路由:172.16.1.0/24、172.16.2.0/24......172.16.31.0/24,请计算出关于明细路由的,最精确的汇总路由(换句话说,计算出一个掩码长度最长的汇总路由);大家要做的事情非常简单,将明细路由的目的网络地址都换算成二进制,然后排列起来,找出所有目的网络地址中“相同的比特位”。由于这些明细路由的目的网络地址是连续的,因此实际上只要挑出首尾的两到三个目的网络地址来计算就足够了。具体的过程有:

(1)将这些IP地址写成二进制格式,如图所示进行排列,实际上只要考虑第三个8位组就可以了,因为只有它在变化的。

(2)接着画一根竖线,要求是:这跟线的左侧每一列的二进制数值都是一样的,而线的右侧则无所谓,可以是变化的,这跟线的最终位置,就标识了汇总路由的掩码长度,注意,这跟竖线可以从默认的掩码长度,例如24开始,一格一格地往左侧移动,知道线的左侧每一列数值都相等时即可停下,这时候,这根线所处的位置就刚刚好,这样一来就找出了所有的明细路由的目的网络地址中共同的比特位。

(3)如图所示,线的位置是19,所以经过计算得到的汇总路由的目的网络地址及网络掩码就是172.16.0.0/19,这就是一个最精确的汇总地址,换句话说,是一个掩码最长的汇总地址。

 因此,可以在R2上进行如下的配置:

ip route-static 172.16.0.0 19 10.1.12.1

ip route-static 172.16.32.0 19 10.1.23.1

也就是将R1左侧的网段进行精确汇总,得到汇总网络地址及网络掩码长度:172.16.0.0/19,然后在R2上配置相应的静态汇总路由,将下一跳配置为R1;将R3右侧的网段进行精确汇总,得到汇总网络地址及掩码长度: 172.16.32.0/19,然后也在R2上配置相应的静态汇总路由,并将下一跳配置为R3。

路由汇总是一个非常重要的网络优化思维,然而如果处理不当,也有可能带来数据转发的环路。如下图,R1左侧连接着192.168.0.0/24、192.168.1.0/24及192.168.2.0/24三个网段,为了让他们能够访问Internet。R1配置了指向R2的默认路由。而为了让这些网段访问Internet的回程流量能够顺利返回,又为了精简路由表,R2配置了一条静态汇总路由192.168.0.0/22,并且下一跳是10.1.12.1,R1;这样做看起来没有问题,但是存在一个不小的问题,考虑这样的一种情况,有一个网络攻击者连接到了R1,它开始向R1发送大量的垃圾流量(数据包),这些数据包的目的IP地址为192.168.3.0/24子网的随即地址(该子网在R1上并不存在),以发往192.168.3.1的垃圾报文为例,该报文首先被发送到R1,后者通过路由表查询后发现数据包的目的IP地址只能匹配默认路由,因此将其转发给默认路由的下一跳192.168.0.0/22,因此又将数据包转发给R1,R1又将报文转发回R2,至此就产生了环路,发往192.168.3.1的垃圾报文将不断的在R1与R2之间来回转发,直到他们的TTL(Time To Live)值递减到0时才丢弃,设想一下,如果攻击者持续发送大量的垃圾数据包,那么R1及R2的性能势必受到极大的冲击,并且两者之间的互联链路的带宽耶将迅速抢占,合法的网络流量势必受到影响,业务可能会出现卡顿甚至中断的现象。

数据转发路径若出现环路,产生的危害是非常大的,针对本案例的解决办法很简单, 在R1上增加一条黑洞路由:

ip route-static 192.168.0.0 22 Null0

即可。这条路由的出接 口非常特殊,是Null0,这是一个系统保留的逻辑接口,当路由器在转发某些数据包时, 如果使用出接口为Null 0的路由,那么这些报文将被直接丢弃,就像被扔进了一个黑洞里。

补充

利用Null 0 路由来解决路由汇总场景中的数据转发环路问题,是一种有效并且常见的解决方案。

  • 18
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dark_Ice_

你的支持是我创作的核动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值