当前位置: 首页 > 网络技术 > 路由技术 > 正文

BGP路由黑洞的产生原理及解决方案和配置

时间:2015-02-07

出现的问题:

一)R1上面有7.7.7.0/24的路由,但是ping 7.7.7.7不可达。(R7同样)

现在查看R1的路由表

r7#sh ip route

B       1.1.1.0 [20/0] via 5.5.5.5, 00:02:54 //为节约篇幅未完整显示

可见R7学到了R1的路由,从表面上看这个实验很完美,达了目的, 然而这时问题出现了,作个测试,在R7上PING R1

r7#ping 1.1.1.1

Type escape sequence to abort.

Sending 5, 0-byte ICMP Echos to 7.7.7.7, timeout:

.....

这究竟是怎么回事呢?原来,我们在R5上关闭了同步,这时它会将一条并没有优化的路由传送给R7,当R7要发向R1发包时,它看到R5是它的下一跳,于是将包发给R5,然后R5又查看它的路由表,发现到R1的下一跳是R2,并继续查找,发现在通过R3可以达到R2,于是它将数据送给R3,这时问题出现了,因为R3没有运行BGP,它不知道R1怎么走,于是它将数据包丢弃,从而造成路由黑洞。由此可见,BGP与IGP同步的重要性,什么是同步?在上一篇我已经提到了,不再多阐述。(同理R1无法访问R7,但有R7的路由条目)

解决方案

一)FULL MESH

建立R2,R3,R5的全互联的BGP关系。全互联要求建立n*(n-1)/2个邻居关系,当路由器很多的时候,这个显然是不合适的。

虽然理论如此,但是在路由器很少的时候,还是很有效果的,使用的技术也没有多少。

为物理上的“串形链路”建立逻辑上的“全互联”Full Mesh

配置如下:

R2:

neighbor 3.3.3.3 remote 200

neighbor 3.3.3.3 update-source loopback 0

neighbor 3.3.3.3 next-hop-self

neighbor 5.5.5.5 remote 200

neighbor 5.5.5.5 update-souce loopback 0

neighbor 5.5.5.5 next-hop-self

R3:

neighbor 2.2.2.2 remote-as 200

neihgbor 2.2.2.2 update-source loopback 0

neighbor 5.5.5.5 remote-as 200

neighbor 5.5.5.5 updata-source loopback 0

R5:

neighbor 2.2.2.2 remote-as 200

neighbor 2.2.2.2 update-source loopback 0

neighbor 3.3.3.3 remote-as 200

neighbor 3.3.3.3 update-source loopback 0