与IPv4一样,IPv6在一些情况下同样也会产生路由环路的问题,而解决该问题的其中一种方法就是IPv6黑洞路由技术。
一般情况下,如果一台IPv6路由交换设备接收到一个数据包,而在自己的路由表里没有查询到转发的路由时,该路由器就把数据报丢弃并向数据源发送一个目的地不可达的ICMPv6 消息。当然这是一种正确的行为,但有些情况下就可能不符合人的愿望,比如我们在路由交换设备上配置了一条静态路由使该路由指向一个接口,当该接口正常时该静态路由可用,但当该串口DOWN 掉时该静态路由就会被删除。这样,如果再收到一个数据报该数据报需要配置的静态路由进行转发则丢弃并给源发送一个目的地不可达消息。接收到ICMPv6 不可达消息的主机,可能修改自己的路由表,而这是不希望的。也有可能就是假如默认路由正好指向该数据包的上游接口,这样就造成了路由环路问题。这时候我们可以配置一条指向NULL0 接口的备用路由,但把优先级降低,这样即使接口断掉,路由交换设备也会继续使用下条路由进行转发,转发的结果就是丢弃数据报,而不会给源发送一个ICMPv6 不可达消息,同时也不会发生路由环路的问题。
如下图所示,正常的按路由表转发的IPv6数据转发。
IPv6数据按路由表正常转发示意图
假如在正常转发过程中VLAN2接口突然down掉,在S2上按照最长匹配原则没有找到其他路由,而在s2上默认路由的下一跳出接口是VLAN1,这就出现了从VLAN1接口收到的数据又要从VLAN1接口回去的问题,这样必造成路由环路风暴问题。
IPv6路由环路示意图
为了避免这种IPv6路由环路的产生,IPv6黑洞路由技术就产生作用了,将这种容易产生路由环路风暴的报文直接通过null0接口丢弃。这里介绍IPv6黑洞路由技术。
IPv6黑洞路由技术避免了路由环路的示意图