如何解决路由黑洞?
1、全互联(全互联的意思就是在一个AS内的所有的BGP路由器全部都建立我们Establish的关系)
2、RR(反射器)
3、联盟(一般用的不多)
4、将BGP路由引入到IGP,从而保证IGP与BGP的同步。但是,因为Internet上的BGP路由数量十分庞大,一旦引入到IGP,会给IGP路由器带来巨大的处理和存储负担,如果路由器负担过重,则可能瘫痪 不建议
5、MPLS技术解决路由黑洞问题
解决方法1.全互联
在一个AS内的所有的BGP路由器全部都建立我们Establish的关系
R2 R3 R4之间的loopback接口之间相互建立IBGP的关系
R2的配置
# bgp 200 router-id 2.2.2.2 peer 3.3.3.3 as-number 200 peer 3.3.3.3 connect-interface LoopBack0 peer 4.4.4.4 as-number 200 peer 4.4.4.4 connect-interface LoopBack0 peer 192.168.12.1 as-number 100 # ipv4-family unicast undo synchronization peer 3.3.3.3 enable peer 3.3.3.3 next-hop-local peer 4.4.4.4 enable peer 4.4.4.4 next-hop-local #
R3的BGP配置
# bgp 200 peer 2.2.2.2 as-number 200 peer 2.2.2.2 connect-interface LoopBack0 peer 4.4.4.4 as-number 200 peer 4.4.4.4 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 1.1.1.1 enable peer 4.4.4.4 enable #
R4的BGP配置
# bgp 200 router-id 4.4.4.4 peer 2.2.2.2 as-number 200 peer 2.2.2.2 connect-interface LoopBack0 peer 3.3.3.3 as-number 200 peer 3.3.3.3 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 2.2.2.2 enable peer 2.2.2.2 next-hop-local peer 3.3.3.3 enable peer 3.3.3.3 next-hop-local #
在R3上检查IBGP的关系
[R3]display bgp peer BGP local router ID : 192.168.34.3 Local AS number : 200 Total number of peers : 2 Peers in established state : 2 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 2.2.2.2 4 200 3 2 0 00:00:02 Established 1 4.4.4.4 4 200 5 5 0 00:02:30 Established 1 [R3]
在R3上面看下是否能够学习到关系1.1.1.1和5.5.5.5的路由
[R3]display bgp routing-table BGP Local router ID is 192.168.34.3 Status codes: * - valid, > - best, d - damped, h - history, i - internal, s - suppressed, S - Stale Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 2 Network NextHop MED LocPrf PrefVal Path/Ogn *>i 1.1.1.1/32 2.2.2.2 0 100 0 100i *>i 5.5.5.5/32 4.4.4.4 0 100 0 300i [R3]
在R5上面访问R1
<R5>ping -a 5.5.5.5 1.1.1.1 PING 1.1.1.1: 56 data bytes, press CTRL_C to break Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=80 ms Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=252 time=60 ms Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=252 time=50 ms --- 1.1.1.1 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 40/54/80 ms
缺点:BGP 200里面的设备越多 需要建立IBGP的数量也就越多 可以考虑用反射器解决
解决方法2.RR
删除上面BGP R2 R3 R4的BGP配置
R3设备为反射器 R2和R4设备为客户端 反射器和客户端之间IBGP关系就可以 客户端和客户端之间不需要建立起任何关系
优点:减少AS 200里面的IBGP的数量
R2的配置
# bgp 200 router-id 2.2.2.2 peer 3.3.3.3 as-number 200 //R2和反射器建立IBGP关系 peer 3.3.3.3 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 3.3.3.3 enable peer 3.3.3.3 next-hop-local
R4的配置
# bgp 200 router-id 4.4.4.4 peer 3.3.3.3 as-number 200 //R2和反射器建立IBGP关系 peer 3.3.3.3 connect-interface LoopBack0 peer 192.168.45.5 as-number 300 # ipv4-family unicast undo synchronization peer 3.3.3.3 enable peer 3.3.3.3 next-hop-local #
R3的配置
# bgp 200 peer 2.2.2.2 as-number 200 peer 2.2.2.2 connect-interface LoopBack0 peer 4.4.4.4 as-number 200 peer 4.4.4.4 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 2.2.2.2 enable peer 2.2.2.2 reflect-client //R2反射器和客户端建立IBGP关系 peer 4.4.4.4 enable peer 4.4.4.4 reflect-client //R2反射器和客户端建立IBGP关系 #
在R5上面访问R1
<R5>ping -a 5.5.5.5 1.1.1.1 PING 1.1.1.1: 56 data bytes, press CTRL_C to break Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=80 ms Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=252 time=60 ms Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=252 time=50 ms --- 1.1.1.1 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 40/54/80 ms
解决方法3.联盟
删除RR的配置 我们可以将AS 200拆成3个子的AS 分别为1000 2000 3000AS
在R2这边的配置
# bgp 1000 //R2上面直接配置子AS 1000 router-id 2.2.2.2 confederation id 200 //R2对外还是宣称在AS 200里面 confederation peer-as 2000 //指定和对端子AS 2000建立EBGP关系 peer 192.168.12.1 as-number 100 peer 192.168.23.3 as-number 2000 # ipv4-family unicast undo synchronization peer 192.168.12.1 enable peer 192.168.23.3 enable peer 192.168.23.3 next-hop-local //在AS 200内部虽然R2和R3是EBGP关系 但是毕竟R2 和R3在一个AS 200当中 R2从R1学习到的路由 发给R3的时候下一跳还是不变化 所以需要敲如下命令实现R2发给R3的时候下一跳为R2本身 #
在R3这边的配置
# bgp 2000 confederation id 200 confederation peer-as 1000 3000 peer 192.168.23.2 as-number 1000 peer 192.168.34.4 as-number 3000 # ipv4-family unicast undo synchronization peer 192.168.23.2 enable peer 192.168.34.4 enable #
在R4这边的配置
# bgp 3000 confederation id 200 confederation peer-as 2000 peer 192.168.34.3 as-number 2000 peer 192.168.45.5 as-number 300 # ipv4-family unicast undo synchronization peer 192.168.34.3 enable peer 192.168.34.3 next-hop-local peer 192.168.45.5 enable #
检查R2 R3 R4的BGP关系
<R2>display bgp peer BGP local router ID : 2.2.2.2 Local AS number : 1000 Total number of peers : 2 Peers in established state : 2 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 192.168.12.1 4 100 10 10 0 00:07:29 Established 1 192.168.23.3 4 2000 20 18 0 00:08:53 Established 1 <R2> [R3]display bgp peer BGP local router ID : 192.168.34.3 Local AS number : 2000 Total number of peers : 2 Peers in established state : 2 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 192.168.23.2 4 1000 18 21 0 00:09:00 Established 1 192.168.34.4 4 3000 13 21 0 00:08:17 Established 1 [R3]
[R4]display bgp peer BGP local router ID : 192.168.34.4 Local AS number : 3000 Total number of peers : 2 Peers in established state : 2 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 192.168.34.3 4 2000 20 13 0 00:08:21 Established 1 192.168.45.5 4 300 10 12 0 00:07:23 Established 1 [R4]
检查R2 R3 R4的路由
[R4]display bgp routing-table BGP Local router ID is 192.168.34.4 Status codes: * - valid, > - best, d - damped, h - history, i - internal, s - suppressed, S - Stale Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 2 Network NextHop MED LocPrf PrefVal Path/Ogn *>i 1.1.1.1/32 192.168.23.2 0 100 0 (2000 1000) 100i *> 5.5.5.5/32 192.168.45.5 0 0 300i [R4]
[R3]display bgp routing-table BGP Local router ID is 192.168.34.3 Status codes: * - valid, > - best, d - damped, h - history, i - internal, s - suppressed, S - Stale Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 2 Network NextHop MED LocPrf PrefVal Path/Ogn *>i 1.1.1.1/32 192.168.23.2 0 100 0 (1000) 100i *>i 5.5.5.5/32 192.168.34.4 0 100 0 (3000) 300i [R3]
<R2>display bgp routing-table BGP Local router ID is 2.2.2.2 Status codes: * - valid, > - best, d - damped, h - history, i - internal, s - suppressed, S - Stale Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 2 Network NextHop MED LocPrf PrefVal Path/Ogn *> 1.1.1.1/32 192.168.12.1 0 0 100i *>i 5.5.5.5/32 192.168.34.4 0 100 0 (2000 3000) 300i <R2>
在R5上面访问R1
<R5>ping -a 5.5.5.5 1.1.1.1 PING 1.1.1.1: 56 data bytes, press CTRL_C to break Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=80 ms Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=252 time=60 ms Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=252 time=50 ms --- 1.1.1.1 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 40/54/80 ms
缺点:联盟的配置改动量特别大 不建议还割接的时候用这个方式
解决方法4. 将BGP路由引入到IGP
删除联盟的配置 将BGP路由引入到IGP里面 在R2上引入和R4上面 将BGP路由引入到OSPF里面
R2的配置
# ospf 1 router-id 2.2.2.2 import-route bgp #
R4的配置
# ospf 1 router-id 4.4.4.4 import-route bgp #
查看R3的路由表
<R3>display ip routing-table protocol ospf Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Public routing table : OSPF Destinations : 4 Routes : 4 OSPF routing table status : <Active> Destinations : 4 Routes : 4 Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.1/32 O_ASE 150 1 D 192.168.23.2 GigabitEthernet0/0/1 2.2.2.2/32 OSPF 10 1 D 192.168.23.2 GigabitEthernet0/0/1 4.4.4.4/32 OSPF 10 1 D 192.168.34.4 GigabitEthernet0/0/0 5.5.5.5/32 O_ASE 150 1 D 192.168.34.4 GigabitEthernet0/0/0 OSPF routing table status : <Inactive> Destinations : 0 Routes : 0
在R5上面访问R1
<R5>ping -a 5.5.5.5 1.1.1.1 PING 1.1.1.1: 56 data bytes, press CTRL_C to break Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=80 ms Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=252 time=60 ms Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=252 time=50 ms --- 1.1.1.1 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 40/54/80 ms
思考如下:
能不能只在R2或者R4上面进行引入?会有什么问题?如何解决?
解决方法5.MPLS技术
删除上面引入的配置
在R2 R3 R4设备之间配置MPLS 和MPLS LDP协议 让R5访问R1的数据走2.5层进行转发
在R2上的配置
# mpls lsr-id 2.2.2.2 # mpls # mpls ldp # interface GigabitEthernet0/0/1 mpls mpls ldp #
在R3上的配置
# mpls lsr-id 3.3.3.3 # mpls # mpls ldp # interface GigabitEthernet0/0/1 mpls mpls ldp # interface GigabitEthernet0/0/0 mpls mpls ldp #
在R4上的配置
# mpls lsr-id 4.4.4.4 # mpls # mpls ldp # interface GigabitEthernet0/0/0 mpls mpls ldp #
检查LDP的关系
<R3>display mpls ldp session all LDP Session(s) in Public Network Codes: LAM(Label Advertisement Mode), SsnAge Unit(DDDD:HH:MM) A '*' before a session means the session is being deleted. ------------------------------------------------------------------------------ PeerID Status LAM SsnRole SsnAge KASent/Rcv ------------------------------------------------------------------------------ 2.2.2.2:0 Operational DU Active 0000:00:04 17/17 4.4.4.4:0 Operational DU Passive 0000:00:03 16/16 ------------------------------------------------------------------------------ TOTAL: 2 session(s) Found. <R3>
在R5上面访问R1
<R5>ping -a 5.5.5.5 1.1.1.1 PING 1.1.1.1: 56 data bytes, press CTRL_C to break Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=80 ms Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=252 time=60 ms Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=252 time=40 ms Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=252 time=50 ms --- 1.1.1.1 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 40/54/80 ms
注意:MPLS 虚拟私有网络就是靠这种方式实现的