一.BGP路由黑洞的产生原理及解决方案(包括配置)

出现的问题:

一)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怎么走,于是它将数据包丢弃,从而造成路由黑洞。由此可见,BGPIGP同步的重要性,什么是同步?在上一篇我已经提到了,不再多阐述。(同理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



二)ROUTE_REFLECTOR 路由反射器

正常情况下,从IGP学习到的路由不会传送给其他IGP邻居。讲R3做成路由反射器后,可以将从R1学习到的路由反射给R5,这样就很好的控制了BGP的水平分割。


做法:清除R2与R5的邻居关系,只在R2与R3、R3与R5之间建立IBGP关系

然后在R3的路由配置模式下:

neighbor 2.2.2.2 route-reflector-client

neighbor 5.5.5.5 route-reflector-client //R2R5作为RR的客户

此时R5上能收到关于R1的路由,它也会传给R7


三)Confederation 联邦AS

联邦AS是指讲原本的大AS号划分成更小的区域。例如,我们可以在AS200中间划分AS400 R2R3)和 AS500R5),这样子,R3R5的关系有原有的IBGP关系变化为联邦BGP 关系,R3有关于R1的路由就可以传送给R5了。


做法:

1)取消原有的R2 R3 R5上的router bgp 配置

2

R2

router bgp 400  //指定的联邦AS

bgp router-id 2.2.2.2

bgp confederation indentifier200 //对外宣称AS200

network 192.168.12.0

network192.168.23.0

neighbor1.1.1.1 remote-as 100

neighbor1.1.1.1 ebgp-multihop 255

neighbor1.1.1.1 update-source Loopback0

neighbor3.3.3.3 remote-as 400

neighbor3.3.3.3 update-source Loopback0

neighbor3.3.3.3 next-hop-self

noauto-summary


R3

routerbgp 400

bgp router-id 3.3.3.3

bgpconfederation identifier 200 //对R5稳定自己的AS号为200,它不会对R2宣称,因为它们属于同一个联邦AS

neighbor2.2.2.2 remote-as 400

neighbor2.2.2.2 update-source Loopback0

neighbor5.5.5.5 remote-as 500

neighbor5.5.5.5 ebgp-multihop 255

neighbor5.5.5.5 update-source Loopback0

noauto-summary


R5:

router bgp 500

no synchronization

bgp log-neighbor-changes

bgp confederation identifier200//对R3和R7宣称自己的AS号为200

neighbor 3.3.3.3 remote-as 400

neighbor 3.3.3.3 ebgp-multihop 255

neighbor 7.7.7.7 remote-as 300

neighbor 7.7.7.7 ebgp-multihop 255

neighbor 7.7.7.7 update-source Loopback0

no auto-summary


R3上:bgp confederation peer 65003 // // 不对65003宣称自己的AS200

R5上:bgp confederation peer 65012 // 不对65012宣称自己的AS200

避免联邦之间AS号使用AS200


四)在黑洞域使用MPLS

在R2,R3,R5上配置MPLS,采用标签转发


ip cef

R2

interface serial 0/0

mpls ip


R3

ip cef

interface serial 0/1

mpls ip

interface serial 0/0

mpls ip


R5

ip cef

interface serial 0/1

mpls ip

interface seiral 0/0

mpls ip


此时R3虽然没有出现1.1.1.0/24 的路由,但是R7是可以ping通的!因为采用的标签转发机制,默认使用接口的地址......

此种方法的配置虽然简单,但是MPLS的理论却是非常复杂的,笔者会在下一次的笔记中详细介绍。


特此注明:笔者在撰写文章的时候,大量的采用的各位前辈的总结性知识!如果有雷同的地方,希望大家见谅!之所以会有前辈的总结性文章在里面,也是希望能够更好的解释BGP路由黑洞的问题,特此注明!






你可能感兴趣的:(BGP,路由黑洞)