r3-2514#show ip bgp
BGP table version is 9, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* i6.0.0.0 172.31.11.6 0 100 0 64999 i
* i 172.31.11.6 0 100 0 64999 i
r>i10.1.0.0/24 2.2.2.2 0 100 0 i
r>i10.1.1.0/24 10.1.2.4 2 100 0 i
r>i10.1.2.0/24 2.2.2.2 0 100 0 i
r>i10.1.3.0/24 10.1.2.4 1 100 0 i
* i172.31.1.0/24 172.31.1.5 0 100 0 64998 i
* i 172.31.1.5 0 100 0 64998 i
* i172.31.11.0/24 172.31.11.6 0 100 0 64999 i
* i 172.31.11.6 0 100 0 64999 i
从上面BGP表看到 到达网络6.0.0.0 的下一跳是172.31.11.6
r3-2514#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
R 1.0.0.0/8 [120/1] via 10.1.1.1, 00:00:01, Ethernet0
R 2.0.0.0/8 [120/2] via 10.1.3.4, 00:00:16, Serial1
C 3.0.0.0/8 is directly connected, Loopback0
R 4.0.0.0/8 [120/1] via 10.1.3.4, 00:00:16, Serial1
10.0.0.0/24 is subnetted, 4 subnets
C 10.1.3.0 is directly connected, Serial1
R 10.1.2.0 [120/1] via 10.1.3.4, 00:00:16, Serial1
C 10.1.1.0 is directly connected, Ethernet0
R 10.1.0.0 [120/1] via 10.1.1.1, 00:00:01, Ethernet0
但从上面这个路由表发现,路由表里没有到达下一跳172.31.11.6的路由,BGP是不会将下一跳不可达的条目放到最终的路由表里的,所以上面的这个路由表里并没有出现B标记的BGP路由. 根据书上的拓扑,R3路由器要想到达172.31.11.6必须通过R1 或者R2 ,所以可以让R1 或R2 在向IBGP(R4.R4)通告时,将下一跳修改为自己的接口或环回接口,通过neighbor R3的环回 next-hop-self 将自己作为下一跳.于是便看到了下面的BGP 表:
r3-2514#show ip bgp
BGP table version is 14, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* i6.0.0.0 2.2.2.2 0 100 0 64999 i
*>i 1.1.1.1 0 100 0 64999 i
r>i10.1.0.0/24 2.2.2.2 0 100 0 i
r>i10.1.1.0/24 2.2.2.2 2 100 0 i
r>i10.1.2.0/24 2.2.2.2 0 100 0 i
r>i10.1.3.0/24 2.2.2.2 1 100 0 i
* i172.31.1.0/24 2.2.2.2 0 100 0 64998 i
*>i 1.1.1.1 0 100 0 64998 i
* i172.31.11.0/24 2.2.2.2 0 100 0 64999 i
*>i 1.1.1.1 0 100 0 64999 i
此时到达6.0.0.0网络的下一跳已经改为1.1.1.1了(2.2.2.2不是最佳的),而1.1.1.1这个地址在路由表里是有可达条目的.
此时如果关闭了BGP与IGP的同步,由于书上已经采取了全互连,那么最终路由表里就会出现BGP的陆游了,如下
r
3-2514#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
R 1.0.0.0/8 [120/1] via 10.1.1.1, 00:00:15, Ethernet0
R 2.0.0.0/8 [120/2] via 10.1.3.4, 00:00:25, Serial1
C 3.0.0.0/8 is directly connected, Loopback0
R 4.0.0.0/8 [120/1] via 10.1.3.4, 00:00:25, Serial1
B 6.0.0.0/8 [200/0] via 1.1.1.1, 00:01:41
172.31.0.0/24 is subnetted, 2 subnets
B 172.31.1.0 [200/0] via 1.1.1.1, 00:01:42
B 172.31.11.0 [200/0] via 1.1.1.1, 00:01:42
10.0.0.0/24 is subnetted, 4 subnets
C 10.1.3.0 is directly connected, Serial1
R 10.1.2.0 [120/1] via 10.1.3.4, 00:00:26, Serial1
C 10.1.1.0 is directly connected, Ethernet0
R 10.1.0.0 [120/1] via 10.1.1.1, 00:00:16, Ethernet0
如果此时没有关闭同步,那么上面BGP表里的蓝色部分必须要与IGP里的路由表同步,再没有同步前,是不可能将BGP加入到路由表.那么这2者是否能同步上呢?答案是不可能的,BGP表里知道去172.31.1.0 172.31.11.0的网络,而IGP的路由表里是死活也不知道这2个网络是怎么去的,因为在边界路由器1 和2 上没有将这BGP重分发到IGP中来,所以IGP表里不会出现到达172.31.1.0 172.31.11.0的网络路由.
BGP同步规则:
在没有达到同步时,BGP路由器不能将从IBGP路由器上学到的BGP路由告诉给它连接的外部BGP邻居(EBGP),有点拗口.意思就是,AS中某个IBGP路由器学习到了某个其他AS的BGP路由,然后与这个IBGP连接的某个BGP路由器不能将它再告诉给其他AS,就是说我从其他AS学来的,我不能再去告诉给第2个AS,我不能盲目的瞎传说我能到达某某AS中的路由.因为在自己的AS内部可能根本就没有到这个路由的条目.就象上面的例子,BGP学到了到 6.0.0.0的路由,而自己其实并没有到6.0.0.0网络怎么走的IGP路由,这个时候如果另一个BGP路由器擅自将该路由告诉其他EBGP(外部AS),将会出现黑洞,数据到达自己的AS后,自己却不知道将数据如何发送出去. 那如何让自己能知道怎么发送出去呢?一个方法是将知道BGP怎么走的这个AS重发布到自己的AS中,但实际上往往外部AS都是ISP,它们拥有的路由条目太多,重发布进来,太不可取.
所以干脆让自己的AS,来个全互连BGP,相互构成邻接关系,这样就有了BGP的路径,而这个路径在内部具体怎么走,在内部有了IGP作底层支撑.
RTA 从ISP1知道了192.213.1.0/24怎么走, RTD /RTB 没有运行BGP协议,RTC运行了BGP协议,A C构成邻接关系.
此时如果C将192.213.1.0/24告诉ISP2的话,那么ISP2通过C要到达192.213.1.0/24, C要找A,可是物理路径通过B D ,BD是
不知道这个网络怎么走,数据不可能通过BD转达.要么就把ISP1的路由重分发到BD中,告诉BD怎么走,那么就构建一个ABCD全互连的BGP环境,这个环境下 C到达192网络的下一跳为A, 至于C如何到达A 就是通过IGP环境了,内部有IGP 路由作底层支撑.
更详细BGP同步原理请看:http://www.net130.com/2004/10-27/16517.html
文章评论