1、实验拓扑:

 

2 、实验目的:
    (1)掌握 BGP(EBGP、IBGP)邻居建立过程,BGP路由通告原则
     (2)EBGP邻居用 Loopback地址建立邻居的条件
    (3)掌握路由发布(静态、动态)
    (4)掌握 EBGP、IBGP路由传递下一跳问题
     (4)掌握其配置
3 、理论分析
    建立邻居:
       手动配置邻居,一对邻居地址间经 TCP三次握手建立TCP连接,在TCP连接建立好的基础上,互相发送Open报文,协商BGP参数,建立BGP邻居。
    EBGP:不同 AS间建立EBGP邻居;用于在AS之间传播路由。
           一般使用直连端口来建;
           使用 Loopback地址建邻居需满足以下条件:
           二端 IP能互相通信;需要使用ebgp-multihop 来修改TTL值,EBGP默认为1。
IBGP:同一 AS内建立IBGP邻居,一般使用Loopback建立邻居;IBGP TTL值默认为255。
Next-hop-self:
    (1) 向 EBGP邻居通告路由时,将下一跳改变为自己。
    (2) 默认情况下, IBGP路由传播不改变下一跳。(可以通过使用next-hop-self命令改变为自己)
    (3) 本地始发的路由下一跳为 0.0.0.0,向BGP邻居通告时,将下一跳改变为自己。
    (4) 默认情况下,多路访问介质上的 BGP路由传播不改变下一跳。(包括IBGP、EBGP)
 
4 、部分配置
       在R1、R2、R5、R6运行IGP协议实现全网连通,并在R1、R2上下发一条缺省路同给R5、R6
       (1) BGP邻居建立
       R1(config)#  router bgp 10
                            neighbor 10.10.0.2 remote-as 10  
                            neighbor 10.10.0.2 update-source loopback0  //建立IBGP邻居 指定更新源
                            neighbor 10.10.13.2 remote-as 30  //指定EBGP邻居 默认从接口发送更新
       (2) 路由发布(静态路由注入)
       R1(config)#
                            ip route 10.10.0.0 255.255.0.0 null0
                            router bgp 10
                            network 10.10.0.0 mask 255.255.0.0
                            (半动态注入)
RT1(config)#
router bgp 10
network 10.10.5.0 mask 255.255.255.0
network 10.10.6.0 mask 255.255.255.0
 
5 、分析
R1(config)#
ip route 10.10.0.0 255.255.0.0 Null0
router bgp 10
                network 10.10.0.0 mask 255.255.0.0
//使用 BGP发布路由,只将全局路由表中存在的路由发布出去,路由表中不存在的路由即使发布了也不会生效。所以动态注入时应先配置一条下一跳指向Null0的路由。
 
R1#do show ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
* i10.10.0.0/16      10.10.0.2                0    100      0 i
*>                   0.0.0.0                  0         32768 i
*> 10.30.0.0/16     10.10.13.2               0             0 30 i
*>i10.40.0.0/16     10.20.24.2               0    100      0 40 i
*                   10.10.13.2                             0 30 40 i
 
R2#do show ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
* i10.10.0.0/16      10.10.0.1                0    100      0 i
*>                   0.0.0.0                  0         32768 i
*>i10.30.0.0/16     10.10.13.2               0    100      0 30 i
*                   10.20.24.2                             0 40 30 i
*> 10.40.0.0/16     10.20.24.2               0             0 40 i
            // 在R1 、R2 上关于10.30.0.0 的路由,R1 只有一个下一跳,而R2 有二个下一跳的原因是:R1 从R3 通过EBGP 收到这条路由,再发送给R2 而R2 又通过R4 收到一条经过了2 个AS 的10.30.0.0 这条路由, 根据AS-Path R2 选择从R1 收到的路由放入路由表。又根据水平分割,故不再氢10.30.0.0 传回给R1.   10.40.0.0 同理得到。 
         IBGP 发送路由不改变下一跳,故在R2上收到的10.30.0.0下一跳为10.10.13.2而不是10.10.0.1
        
EBGP 、IBGP路由下一跳问题
R1(config)#
router bgp 10
neighbor 10.10.0.2 next-hop-self //通告邻居下一跳为本路由器
 
R1#show ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
* i10.10.0.0/16      10.10.0.2                0    100      0 i
*>                   0.0.0.0                  0         32768 i
*> 10.30.0.0/16      10.10.13.2               0             0 30 i
*>i10.40.0.0/16     10.10.0.2                0    100      0 40 i
*                    10.10.13.2                             0 30 40 i
 
R2(config-router)#do show ip bg
   Network          Next Hop            Metric LocPrf Weight Path
* i10.10.0.0/16      10.10.0.1                0    100      0 i
*>                   0.0.0.0                  0         32768 i
*>i10.30.0.0/16     10.10.0.1                0    100      0 30 i
*                    10.20.24.2                             0 40 30 i
*> 10.40.0.0/16      10.20.24.2               0             0 40 i
                                   // 通过next-hop-self 命令改变了从IBGP 学到的路由的下一跳
 
R1 R2 之间的线断开,出现了环路
R5#traceroute 10.40.4.1 source 10.10.5.1
Type escape sequence to abort.
Tracing the route to 10.40.4.1
 
 1 10.10.1.5 372 msec 20 msec 52 msec
 2 10.10.1.6 116 msec 116 msec 264 msec
 3 10.10.1.5 104 msec 152 msec 128 msec
 4 10.10.1.6 172 msec 136 msec 80 msec
 5 10.10.1.5 452 msec 204 msec 216 msec
 6 10.10.1.6 360 msec 272 msec 232 msec
 7 10.10.1.5 228 msec 252 msec 236 msec
 8 10.10.1.6 228 msec 376 msec 344 msec
 9 10.10.1.5 296 msec 484 msec 304 msec
 
 
 
解决路由环路的方法:
1.   在RT1和RT2之间在增加一条链路,以保证路由的健壮性。
2.   AS 10 内的所有设备启动BGP,配置IBGP全网状互连。
3.   AS 10 内所有设备启BGP,配置路由反射器RR。
4.    AS 10内所有设备启动 MPLS,边界设备之间建立MPLS LSP。
5.   在RT1 RT2上,有选择地把部分BGP路由重发布至IGP
 
本实验采用第二种方案解决