路由黑洞:
路由黑洞一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象,就是汇总的时候有时会有一些网段并不在内网中存在,但是又包含在汇总后的网段中,如果在整个汇总的边界设备上同时还配置了缺省路由,就可能出现一些问题,这时,如果有数据包发向那些不在内网出现的网段(但是又包含在汇总网段)所在的路由器,根据最长匹配原则,并没有找到对应的路由,只能根据默认路由又回到原来的路由器,这就形成了环路,直到TTL值超时,丢弃。
黑洞路由:
其实就是一条特殊的静态路由,下一跳指向null口,一个不存在的口,结果就是将匹配这条路由的数据包丢弃
eg:
R1上有172.16.0.0/24、172.16.1.0/24、172.16.2.0/24三个网段,现对其进行了汇总:172.16.0.0/22。这就出现了问题:并没有172.16.3.0/24这个网段,但是汇总后就出现了,并通告了给了R2。并且在R1上配置了一条默认路由:当有未知目的地址的数据包时,转发到R2。
现在,R2收到一个目的地址在172.16.3.0/24网段的数据包,根据路由表172.16.0.0/22—>R1,将该数据包转发到了R1,因为R1上并没有这个172.16.3.0/24网段,根据默认路由又发回了R2,形成了环路,直到TTL为0,才会被丢弃,这同时也耗费了这两个路由器的系统资源。
解决方法:在对路由器R1做汇总路由时加一条指向null0的路由(黑洞路由):172.16.0.0/22 –> null0。即表示当R1收到目的地址指向自己的数据包将被直接丢弃。