在EIGRP中,只要发生总结就会在路由表中自动产生一条指向NULL0的路由条目,这条路由的直接意思是:匹配这条路由的数据包会被路由器丢掉。它的目的是为了避免在某些情况下产生路由环路。

以第三四学期的中文书P86中的图4-15为例做个说明:

假设RTC向RTD发送总结路由2.1.0.0/16,RTD收到后在自己的路由表中添加相应的条目。到此为止一切正常,看不出产生一条指向NULL0的路由条目的用处。但是当被RTC所总结的具体路由出现故障时就会遇到问题。(图中没有)不妨假设RTC的左侧本来有4个子网网段:2.1.0.0/24、2.1.1.0/24、2.1.2.0/24、2.1.3.0/24(精确总结应该总结为2.1.0.0/22,但以书中的2.1.0.0/16并不影响我们讨论这个问题),如果某一段时间2.1.1.0/24这个网段发生故障,比如接口down了,那么在RTC上会立即有所反映,RTC上关于2.1.1.0/24的直连路由消失,同时我们知道汇总路由有这样一个特点:被总结的路由中哪怕只有一条是正常的,汇总路由都不会发生变化,也就是说仅仅RTC的左侧的2.1.1.0/24这个网段失效RTD并不会有所察觉,它的路由表项2.1.0.0/16仍然存在。这时如果RTD收到一个目的地址为2.1.1.0/24网段的数据包它会把它送到RTC上,而RTC接着查看自己的路由表发现没有2.1.1.0/24这个网段的路由(原因如前所说网段失效后直连路由消失),这样RTC会把这个数据包丢掉。到此为止还是看不出产生一条指向NULL0的路由条目到底有何用处。

但是在前面我们假设的条件下,当RTC上存在一条缺省路由指向RTD时情况就有所不同了,RTC发现没有2.1.1.0/24这个网段的路由之后,它会按照缺省路由把目的地址为2.1.1.0/24网段的数据包再送回到RTD上,这样就产生了路由环路。这类数据包会反复在RTC和RTD上传送,直到TTL=0为止。这样会占用RTC和RTD之间线路的带宽,很没有必要,而在发生总结的路由器上产生一条2.1.0.0/16 is a summary, Null0 的路由就会打断这个环路,因为在缺省路由生效之前,目的地址为2.1.1.0/24网段的数据包符合2.1.0.0/16 Null0这条路由,因此这类数据包会被RTC丢掉。

 

 

有些资料上把它的功能简单的描述为:当发生总结的路由器上存在缺省路由时,指向NULL0的路由条目可以帮助避免产生环路。

目前高版本的IOS中,类似EIGRP这类高级路由协议(例如OSPF等)在发生总结时都会自动产生指向NULL0的路由条目。而明白了这个原理之后,对于RIP和IGRP这类协议也可以通过手工设置静态路由的方式(最后的接口直接写NULL0)实现相同的功能。