BGP通告原则、IBGP水平分割机制、lookback接口建立IBGP邻居关系

目录

一、BGP通告原则

1、IBGP水平分割

2、BGP通告原则

二、IBGP水平分割机制

1、BGP通告原则之三 :IBGP水平分割

2、突破IBGP水平分割的限制

3、路由反射器RR

4、路由反射器实验案例

5、BGP联盟

6、BGP联盟实验案例

三、利用loopback 接口建立IBGP邻居关系

1、IBGP使用looback接口建立邻居—更新源检测机制

2、EBGP使用loopback 接口建立邻居—直连检测机制

3、IBGP全互联实验

4、更新源检测机制

5、RR反射器案例-扩展案例

5、BGP联盟实验-扩展案例


一、BGP通告原则

1、IBGP水平分割

拓扑

需求

实现R4的10.10.4.4 和R5的10.10.5.5互通

思路1:R4和R1建立EBGP邻居 (外部的EBGP邻居)

思路2:R3和R5建立EBGP邻居 (外部的EBGP邻居)

思路3:AS200内部的R1-R2-R3配置ospf-建立ospf邻居关系

思路5:R1和R2建立IBGP邻居 (内部的IBGP邻居)

思路6:R2和R3建立IBGP邻居 (内部的IBGP邻居)

思路4:R1和R3建立IBGP邻居 (内部的IBGP邻居)

思路7:在R4和R5中注入路由

配置步骤

1)配置路由器的接口IP地址

2)在AS200内部配置OSPF

3)配置BGP邻居关系

4)在R4 和R5中注入路由

配置命令

R4的配置: 
 1)R4的接口配置: 
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32

 2)R4的BGP配置: 
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200    //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32        //注入路由

 R1的配置: 
 1)R1的接口配置: 
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24

 2)R1的OSPF配置: 
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit

 3)R1的BGP配置: 
[R1]bgp 200  //开启BGP,配置AS200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100      //和R4建立外部邻居

[R1-bgp]peer 192.168.12.2 as 200      //和R2建立内部邻居
[R1-bgp]peer 192.168.12.2 next-hop-local   //修改下一跳

[R1-bgp]peer 192.168.23.3 as 200      //和R3建立内部邻居
[R1-bgp]peer 192.168.23.3 next-hop-local   //修改下一跳


 R2的配置: 
 1)R2的接口配置: 
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24

 2)R2的ospf配置: 
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit

 3)R2的BGP配置: 
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200    //和R1建立内部邻居
[R2-bgp]peer 192.168.23.3 as 200    //和R3建立内部邻居

 R3的配置: 
 1)R3的接口配置: 
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24

 2)R3的OSPF配置 
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit

 3)R3的BGP配置: 
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200    //和R2建立内部邻居
[R3-bgp]peer 192.168.23.2 next-hop-local  //修改下一跳

[R3-bgp]peer 192.168.12.1 as 200    //和R1建立内部邻居
[R3-bgp]peer 192.168.12.1 next-hop-local  //修改下一跳

[R3-bgp]peer 192.168.35.5 as 300    //和R5建立外部邻居


 R5的配置: 
 1)R5的接口配置: 
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32

 2)R5的BGP配置: 
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200   //和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32       //注入路由


 <R4>ping -a 10.10.4.4  10.10.5.5      //可以通 

思考-IBGP水平分割

        R1和R2建立IBGP邻居了

        R2和R3也建立IBGP邻居了

        既然在AS200内部:R1和R2和R3都已经逐跳建立了IBGP邻居了

        那么R1和R3是不是就没有必要在做IBGP邻居了

        我们把R1和R3的邻居关系删除,看看会怎么样

R1配置:在R1中删除和R3的邻居关系
[R1]bgp 200
[R1-bgp]undo peer 192.168.23.3


R3的配置:在R3中删除和R1的邻居关系
[R3]bgp 200
[R3-bgp]undo peer 192.168.12.1



删除R1和R3的邻居关系后
发现网络不通了,为什么?

发现R4中没有去往10.10.5.5 的路由了
发现R5中没有去往10.10.4.4 的路由了为什么没有路由呢?

因为R2从R1哪里学来的路由,不会传递给R3
因为R2从R3哪里学来的路由,不会传递给R1

为什么会这样?  因为IBGP水平分割,内内不相传

如果解决这个问题呢?   IBGP全互联
什么是IBGP全互联:
在AS200内,所有的路由都会和所有的路由建立邻居
即:R1和R2建立邻居
   R2和R3建立邻居
   R1和R3建立邻居
   

2、BGP通告原则

BGP通告原则之一 : 仅将自己最优的路由发布给邻居

        说人话:BGP路由器只会将自己认为最好的路由传递给自己的邻居

BGP通告原则之二 : 通过EBGP获得的最优路由发布给所有BGP邻居

        说人话:从外部邻居学来的路由,会传递给自己所有的邻居

                (会发给内部邻居,也会发给外部邻居)

BGP通告原则之三 : 通过IBGP获得的最优路由不会发布给其他的IBGP邻居

        说人话:BGP路由器从内部邻居学来的路由不会再传递自己的内部邻居

                这叫内内不相传: 也就是传说中的IBGP水平分割

                为什么IBGP要这么搞,防止路由环路

二、IBGP水平分割机制

1、BGP通告原则之三 :IBGP水平分割

通过IBGP获得的最优路由不会发布给其他的IBGP邻居

说人话:BGP路由器从内部邻居学来的路由不会再传递自己的内部邻居

这叫内内不相传: 也就是传说中的IBGP水平分割

为什么IBGP要这么搞,防止路由环路

作用:解决IBGP内部路由环路问题

2、突破IBGP水平分割的限制

1) IBGP全互联

2) 路由反射器

3)BGP联盟

4)静态路由···· 在OSPF中引入BGP···· MPLS·····

3、路由反射器RR

反射器角色

1) 路由反射器RR

2) 客户机

3) 非客户机

反射器原理

客户机只需要与反射器建立IBGP邻居,客户机之间不需要建立邻居,减少了邻居关系的数量,通过RR将自身学习到的路由反射给邻居,实现路由的传递;

反射器通过命令指定自己的客户弃,客户机不知道谁是反射器,只有反射器知道谁是客户机,没有指定为客户机的路由器,就是非客户机

反射器打破了水平分割的限制,让IBGP邻居之前路由可以传递,不需要改变原有拓扑结构,配置简单,较为常用

反射原则

RR从客户学到的路由,会反射给客户和非客户

RR从非客户学到的路由,会反射给客户

RR从EBGP邻居学到的路由,会反射给客户机和非客户机

RR从非客户机学到的路由不会在反射给非客户机,(非非不反射

4、路由反射器实验案例

拓扑

需求

实现R4的10.10.4.4 和R5的10.10.5.5互通

思路:

思路1:R4和R1建立EBGP邻居 (外部的EBGP邻居)

思路2:R3和R5建立EBGP邻居 (外部的EBGP邻居)

思路3:AS200内部的R1-R2-R3配置ospf-建立ospf邻居关系

思路4:R1和R2建立IBGP邻居 (内部的IBGP邻居)

思路5:R2和R3建立IBGP邻居 (内部的IBGP邻居)

思路6:在R4和R5中注入路由

思路7:把R2配置为路由反射器 ,把R1配置为客户机

配置步骤

1)配置路由器的接口IP地址

2)在AS200内部配置OSPF

3)配置BGP邻居关系

4)在R4 和R5中注入路由

5)配置路由反射器,指定客户机

配置命令

R4的配置: 
 1)R4的接口配置: 
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32

 2)R4的BGP配置: 
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200    //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32        //注入路由

 R1的配置: 
 1)R1的接口配置: 
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24

 2)R1的OSPF配置: 
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit

 3)R1的BGP配置: 
[R1]bgp 200  //开启BGP,配置AS200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100      //和R4建立外部邻居

[R1-bgp]peer 192.168.12.2 as 200      //和R2建立内部邻居
[R1-bgp]peer 192.168.12.2 next-hop-local   //修改下一跳



 R2的配置: 
 1)R2的接口配置: 
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24

 2)R2的ospf配置: 
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit

 3)R2的BGP配置: 
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200    //和R1建立内部邻居
[R2-bgp]peer 192.168.23.3 as 200    //和R3建立内部邻居

 4)在R2中配置路由反射器,把192.168.12.1 做成客户机 
 [R2]bgp 200  
[R2-bgp]peer 192.168.12.1 reflect-client     //指定192.168.12.1 为客户机 


 R3的配置: 
 1)R3的接口配置: 
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24

 2)R3的OSPF配置 
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit

 3)R3的BGP配置: 
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200    //和R2建立内部邻居
[R3-bgp]peer 192.168.23.2 next-hop-local  //修改下一跳

[R3-bgp]peer 192.168.35.5 as 300    //和R5建立外部邻居


 R5的配置: 
 1)R5的接口配置: 
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32

 2)R5的BGP配置: 
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200   //和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32       //注入路由




 验证方法: 

 <R4>ping -a 10.10.4.4  10.10.5.5      //可以通 

5、BGP联盟

概念

将一个大AS划分成多个小AS,小AS之间建立EBGP邻居,对外呈现的是一个大AS,对内呈现的是小AS

原理

将一个AS,拆分成多个子AS,子AS之间是EBGP邻居关系,

子AS内部如超出3台路由器,依然有水平分割限制,在子AS内也可以配置路由反射器

联盟配置复杂,需要所有路由器都支持该功能,适合特别大的网络

6、BGP联盟实验案例

拓扑

需求

实现AS100内R5的10.10.5.5和 AS300内R6的10.10.6.6 互联互通

配置步骤

1)基础配置:配置路由器接口IP地址

2)R1/R2/R3/R4 配置OSPF,在联盟内部配置OSPF

3)R5和R1配置EBGP邻居关系,并在R5中注入路由

4)R1和R2在相同的子AS内部配置IBGP邻居关系

5)R2和R3在不同的子AS之间配置EBGP邻居关系

6)R3和R4在相同的子AS内部配置IBGP邻居关系

7)R4和R6配置EBGP邻居关系,并在R6中注入路由

配置命令

R5的配置: 
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ip add 192.168.15.5 24
[R5-GigabitEthernet0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32
[R5-LoopBack0]quit
[R5]bgp 100
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.15.1 as 200
[R5-bgp]network 10.10.5.5 32


 R1的配置: 
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.12.1 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 192.168.15.1 24
[R1-GigabitEthernet0/0/1]quit
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255

[R1]bgp 64512   //配置AS 64512
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.15.5 as 100
[R1-bgp]peer 192.168.12.2 as 64512
[R1-bgp]peer 192.168.12.2 next-hop-local
[R1-bgp]confederation id 200    //配置联盟ID为  200

 R2的配置: 
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 192.168.12.2 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.23.2 24
[R2-GigabitEthernet0/0/1]quit
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit
[R2-ospf-1]quit
[R2]bgp 64512
[R2-bgp]router-id 2.2.2.2
[R2-bgp]confederation id 200
[R2-bgp]peer 192.168.12.1 as 64512
[R2-bgp]confederation peer-as 64513      //在联盟内先配置子AS号的邻居AS
[R2-bgp]peer 192.168.23.3 as 64513       //然后在指定EBGP邻居


 R3的配置: 
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 192.168.23.3 24
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.34.3 24
[R3-GigabitEthernet0/0/1]quit

[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.34.0 0.0.0.255


[R3]bgp 64513    //配置bgp as 64513
[R3-bgp]router-id 3.3.3.3   
[R3-bgp]confederation  id 200      //配置联盟ID 200
[R3-bgp]confederation peer-as  64512   //配置联盟内子AS的邻居
[R3-bgp]peer 192.168.23.2 as 64512   //配置EBGP邻居
[R3-bgp]peer 192.168.34.4 as 64513   //配置IBGP邻居

 R4的配置: 
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]ip add 192.168.34.4 24
[R4-GigabitEthernet0/0/0]int g0/0/1
[R4-GigabitEthernet0/0/1]ip add 192.168.46.4 24
[R4-GigabitEthernet0/0/1]quit
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]network 192.168.34.0 0.0.0.255
[R4-ospf-1-area-0.0.0.0]quit
[R4-ospf-1]quit

[R4]bgp 64513
[R4-bgp]router-id 4.4.4.4
[R4-bgp]confederation id 200
[R4-bgp]peer 192.168.34.3 as 64513
[R4-bgp]peer 192.168.34.3 next-hop-local
[R4-bgp]peer 192.168.46.6 as 300

 R6的配置: 
[R6]int g0/0/0
[R6-GigabitEthernet0/0/0]ip add 192.168.46.6 24
[R6-GigabitEthernet0/0/0]int lo0
[R6-LoopBack0]ip add 10.10.6.6 32
[R6-LoopBack0]quit

[R6]bgp 300
[R6-bgp]router-id 6.6.6.6
[R6-bgp]peer 192.168.46.4 as 200
[R6-bgp]network 10.10.6.6 32


 验证方法: 
<R4>ping -a 10.10.4.4  10.10.5.5      //可以通

三、利用loopback 接口建立IBGP邻居关系

1、IBGP使用looback接口建立邻居—更新源检测机制

1、为什么IBGP邻居要使用loopback接口建立邻居

1)为什么IBGP邻居要用loopback 接口建立邻居呢?  因为用loopback接口建立邻居更加稳定和可靠
   使用物理接口的IP地址建立邻居,当物理接口和物理链路发送故障,BGP邻居就会down掉
   而使用loopback接口IP地址建立邻居,假设两台设备之间有3条物理链路,即便坏掉其中2条物理链路,
   即便只有1条物理链路互通,就可以保证BGP邻居的正常

[R1]bgp 100
[R1-bgp]peer 10.10.4.4 as 100   
[R1-bgp]peer 10.10.4.4  connect-interface LoopBack 0  

  //和R4 建立邻居的时候,使用lo0的接口IP地址(10.10.1.1),作为报文的源IP址、

    为什么?因为
    因为对端设备R4在配置BGP命令的时候写的是 peer 10.10.1.1 
    所以,只有报文的源IP是10.10.1.1 的时候,对方才会和你建立会话
  通过使用loopback 接口建立IBGP邻居,发现邻居真的建立成功来
    这个解决方案叫什么: 叫做更新源检测机制
    
    为什么一开始使用物理接口的IP地址,无法建立BGP邻居呢,因为BGP有更新源检测机制
    只有TCP报文的源IP地址,是我peer 后面写的地址,我才会和你建立邻居
  BGP设备会检测报文的源IP地址,所以叫做更新源检测机制
  
 2、更新源检测机制 
-当使用逻辑接口,建立IBGP时,需要考虑,更新源检查机制
-R1和R4建立IBGP邻居关系时,如果是使用loopback 接口建立邻居关系,
就要告诉路由器使用loopback接口的IP地址,封装BGP报文


2、EBGP使用loopback 接口建立邻居—直连检测机制

sysname R1 
#
interface GigabitEthernet0/0/1
  ip address 192.168.13.1 255.255.255.0 

#
interface LoopBack0
  ip address 10.10.1.1 255.255.255.255 

#
bgp 100
  router-id 1.1.1.1
  peer 10.10.3.3 as-number 200 
  peer 10.10.3.3 ebgp-max-hop 10 
  peer 10.10.3.3 connect-interface LoopBack0
#
ip route-static 10.10.3.3 255.255.255.255 192.168.13.3



 sysname R3 
#
interface GigabitEthernet0/0/0
  ip address 192.168.13.3 255.255.255.0 
#
interface LoopBack0
  ip address 10.10.3.3 255.255.255.255 
#
bgp 200
  router-id 2.2.2.2
  peer 10.10.1.1 as-number 100 
  peer 10.10.1.1 ebgp-max-hop 10 
  peer 10.10.1.1 connect-interface LoopBack0
#
ip route-static 10.10.1.1 255.255.255.255 192.168.13.1



EBGP邻居之间使用loopback 接口无法建立外部邻居
邻居状态是idle 状态,根本没有建立TCP会话,为什么?
因为三层不能互通, 10.10.1.1 和10.10.3.3 不通
所以我们在R1和R3中写静态路由,实现三层通信
邻居状态是active 状态,依然无法建立BGP邻居,为什么?
因为有更新源检测机制,TCP会话依然无法建立
我们在配置BGP邻居的时候,在指定用loopback接口建立邻居-发open报文来,发keeplive报文来,
但是最后发现错误,邻居又跳转回idle 状态来,为什么?
因为抓包发现,BGP的报文中,TTL值为1      当经过一台路由器转发的时候,TTL值减去1
当TTL值为0的时候,报文被丢弃,所以依然无法建立BGP邻居关系
为什么会这样,因为BGP有直连检测机制
BGP要求,凡是建立EBGP邻居的路由器,必须使用直连网段,使用物理接口的IP地址,建立邻居
为什么会有这种要求: 因为EBGP要求稳定性和可靠性,  使用直连网段,使用物理接口建立邻居,
BGP路由器能够感知到链路故障, 能够及时作出调整,如果用非直连网段建立EBGP邻居
路由器无法实时且有效的感知到网络故障
EBGP也可以使用loopback接口建立邻居, 我们不怕不可靠,我们只想用loopback建立外部邻居,
行不行,也行, 那就需要更改设置,用不常规的手段来突破BGP的直连检测机制
怎么突破,修改TTL值,默认为1  ,改为200  改为100  改为50
 peer 10.10.1.1 ebgp-max-hop  100    

3、IBGP全互联实验

拓扑

需求

实现R4的10.10.4.4 和R5的10.10.5.5互通

思路1:R4和R1建立EBGP邻居 (外部的BGP邻居)

思路2:R1和R3建立IBGP邻居 (内部的BGP邻居)

思路3:R3和R5建立EBGP邻居 (外部的BGP邻居)

为了解决路由黑洞,还需要R1和R2建立IBGP邻居

为了解决路由黑洞,还需要R3和R2建立IBGP邻居

思路4:R1和R2建立IBGP邻居 (内部的BGP邻居)

思路5:R2和R3建立IBGP邻居 (内部的BGP邻居)

既然:R1和R2建立了邻居关系, R2和R3也建立了邻居关系

那么R1为什么还要和R3建立邻居关系

因为:还要解决IBGP水平分割

什么是IBGP水平分割: BGP路由器从内部邻居学习来的路由不会再传递给自己的内部邻居

配置步骤

1)配置路由器的接口IP地址

2)配置BGP邻居关系

        -开启BGP功能,进入AS

        -配置Router-id

        -配置邻居关系,指定邻居IP地址,指定邻居的AS号

        -配置IBGP邻居关系,指定loopback接口(更新源检测机制)

        -配置IBGP邻居关系,修改路由的下一跳地址(从外部邻居学来的路由传递给内部邻居的时候要修改路由的下一跳地址为本设备的地址)

3)注入路由

配置命令

 第一步: 配置R4 

 R4的配置: 
 1)配置R4的接口IP地址 
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]ip add 192.168.14.4 24
[R4-GigabitEthernet0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 24
[R4-LoopBack0]quit

 2)配置R4和R1的EBGP,并注入路由 
[R4]bgp 100                     //打开bgp功能,进入as100 
[R4-bgp]router-id 4.4.4.4        //配置router-id  
[R4-bgp]peer 192.168.14.1 as 200    //和R1建立EBGP邻居关系 
[R4-bgp]network 10.10.4.0 24         //把已经存在的直连路由注入到BGP路由表 


 第二步: 配置R1 
 1)配置R1的接口IP地址 
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.14.1 24
[R1-GigabitEthernet0/0/0]int g0/0/1 
[R1-GigabitEthernet0/0/1]ip add 192.168.12.1 24
[R1-GigabitEthernet0/0/1]int lo0
[R1-LoopBack0]ip add 10.10.1.1 24
[R1-LoopBack0]quit

 2)配置R1的ospf  
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0  
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255  
[R1-ospf-1-area-0.0.0.0]network 10.10.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit

 3) 配置R1和R4建立外部邻居-EBGP邻居 
[R1]bgp 200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4  as 100

 4) 配置R1和R3建立内部邻居-IBGP邻居 
[R1-bgp]peer 10.10.3.3 as 200       //R1和R3建立IBGP邻居 
[R1-bgp]peer 10.10.3.3 connect-interface LoopBack 0    //R1使用loopback接口和R3建立邻居 
[R1-bgp]peer 10.10.3.3 next-hop-local    
 //R1在给R3传递路由的时候会修改路由的下一跳地址为R1的本地地址(也就是10.10.1.1) 

 5)配置R1和R2建立内部邻居-IBGP邻居-为了解决路由黑洞问题 
[R1-bgp]peer 10.10.2.2 as 200  
[R1-bgp]peer 10.10.2.2 connect-interface LoopBack 0
[R1-bgp]peer 10.10.2.2 next-hop-local

 
 第三步:验证一下 : 
 ======================================================================== 
验证结果 :
<R4 >display bgp  peer     //R4和R1是好邻居
<R1>display bgp  peer     //R1和R4是好邻居

<R4> display bgp routing-table         //R4 中注入了路由,并且是最优的
 To tal Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>     1 0 .10.4.0/24       0.0.0.0         0                     0      i

< R 1> display bgp routing-table    //从EBGP邻居学来的路由是最优的
 To tal Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>     10 .10.4.0/24       192.168.14.4    0                     0      100i 

 == =========================================================================== 

 第四步: 配置R2 
 R2的配置: 
 1) 配置R2的接口IP地址: 
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 192.168.12.2 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.23.2 24
[R2-GigabitEthernet0/0/1]int lo0
[R2-LoopBack0]ip add 10.10.2.2  24
[R2-LoopBack0]quit

 2)配置R2的ospf: 
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255  
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255 
[R2-ospf-1-area-0.0.0.0]network 10.10.2.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit
[R2-ospf-1]quit

 3)配置R2的BGP-R2和R1/R3分别建立IBGP邻居关系: 
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer  10.10.1.1  as 200  
[R2-bgp]peer  10.10.1.1  connect-interface LoopBack 0
[R2-bgp]peer  10.10.3.3  as 200
[R2-bgp]peer  10.10.3.3  connect-interface LoopBack 0


 第五步: 配置R3 
 1)配置R3的接口 
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 192.168.23.3  24
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.35.3 24
[R3-GigabitEthernet0/0/1]int lo0
[R3-LoopBack0]ip add 10.10.3.3 24
[R3-LoopBack0]quit

 2) 配置R3的OSPF 
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network  192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 10.10.3.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
 
 3)配置R3和R2建立IBGP邻居关系 
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 10.10.2.2 as 200  
[R3-bgp]peer 10.10.2.2 connect-interface LoopBack 0
[R3-bgp]peer 10.10.2.2 next-hop-local

 4)配置R3和R1建立IBGP邻居关系 
[R3-bgp]peer 10.10.1.1 as 200  
[R3-bgp]peer 10.10.1.1 connect-interface LoopBack 0
[R3-bgp]peer 10.10.1.1 next-hop-local

 5)配置R3和R5建立EBGP邻居关系 
[R3-bgp]peer 192.168.35.5 as 300


第六步: 配置R5
 R5的配置: 

 1)配置R4的接口IP地址 
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ip add 192.168.35.5 24
[R5-GigabitEthernet0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 24
[R5-LoopBack0]quit

 2)配置R5和R3的EBGP,并注入路由 
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200
[R5-bgp]network 10.10.5.0 24


第七步:验证
1)查看R1-R2-R3的ospf 邻居关系
<R1>display ospf peer brief 
<R2>display ospf peer brief 
<R3>display ospf peer brief 

2)查看R1/R2/R3/R4/R5的BGP邻居关系
<R1>display bgp peer 
<R2>display bgp peer 
<R3>display bgp peer 
<R4>display bgp peer 
<R5>display bgp peer 


3)查看R1/R2/R3/R4/R5的BGP路由表
<R1>display bgp routing-table
<R2>display bgp routing-table
<R3>display bgp routing-table
<R4>display bgp routing-table
<R5>display bgp routing-table

4)验证网络连通性
<R4> ping -a 10.10.4.4 10.10.5.5

4、更新源检测机制

1)存在的问题:

-但是R1和R3使用逻辑接口(Loopback0)建立的IBGP邻居关系是不正常的,状态一直停留在Active 状态?

-如果tcp连接失败,BGP设备的状态会转为 active 状态

-但是R1和R3,在同一个AS内部,而且已经部署了OSPF,在R1中使用 ping -a 10.10.1.1 10.10.3.3 是可以ping 通的,为什么会出现TCP建立失败呢?原因是是什么呢?

2)更新源检测机制

-当使用逻辑接口,建立IBGP时,需要考虑,更新源检查机制

-R1和R3建立IBGP邻居关系时,如果是使用loopback 接口建立邻居关系,就要告诉路由器使用loopback接口的IP地址,封装BGP报文

3)解决方案:命令如下:

[R1-bgp]peer 10.10.3.3 as 200 //R1和R3建立IBGP邻居

[R1-bgp]peer 10.10.3.3 connect-interface LoopBack 0 //R1使用loopback接口和R3建立邻居

5、RR反射器案例-扩展案例

拓扑

需求

1)实现R4的10.10.4.4 和R5的10.10.5.5 互联互通

配置步骤

1、配置路由器接口IP地址

2、在AS200内配置OSPF

3、R4与R1建立EBGP邻居

4、R1与R2建立IBGP邻居

5、R2与R2建立IBGP邻居

6、R3与R5建立EBGP邻居

7、R4和R5分别将环回口10.10.4.4/24、10.10.5.5/24注入进BGP

配置

R4的配置: 

sysname R4
#
interface GigabitEthernet0/0/0
  ip address 192.168.14.4 255.255.255.0 
#
interface LoopBack0
  ip address 10.10.4.4 24
#
bgp 100       
  router-id 4.4.4.4
  peer 192.168.14.1 as-number 200     //R4和R1通过直连网段(物理接口IP地址)建立EBGP邻居 
  network 10.10.4.4 24      //把10.10.4.0/24 这条路由放到BGP路由表 
    
    
 R1的配置: 
sysname R1
#
interface GigabitEthernet0/0/0
  ip address 192.168.14.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
  ip address 192.168.12.1 255.255.255.0 
#
interface LoopBack0
  ip address 10.10.1.1 255.255.255.0 

#
bgp 200
  router-id 1.1.1.1
  peer 10.10.2.2 as-number 200        //R1和R2建立IBGP邻居 
  peer 10.10.2.2 connect-interface LoopBack0     //R1通过loopback接口和R2建立邻居 
  peer 10.10.2.2 next-hop-local     //R1给R2传递路由时将路由的下一跳修改为10.10.1.1 
   
  peer 192.168.14.4 as-number 100    //R1通过直连网段(物理接口)和R4建立EBGP邻居 
   
#
ospf 1 router-id 1.1.1.1 
  area 0.0.0.0 
    network 10.10.1.0 0.0.0.255 
    network 192.168.12.0 0.0.0.255 


 R2的配置: 
sysname R2
#
interface GigabitEthernet0/0/0
  ip address 192.168.12.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
  ip address 192.168.23.2 255.255.255.0 
#
interface LoopBack0
  ip address 10.10.2.2 255.255.255.0 

#
bgp 200
  router-id 2.2.2.2
  peer 10.10.1.1 as-number 200     //R2和R1建立IBGP邻居 
  peer 10.10.1.1 connect-interface LoopBack0    
  peer 10.10.3.3 as-number 200     //R2和R3建立IBGP邻居 
  peer 10.10.3.3 connect-interface LoopBack0    
  peer 10.10.1.1 reflect-client     //指定R1为我的客户机 
  
   备注:如果配置下面这条命令:
  peer 10.10.3.3 reflect-client    //代表指定R3为我的客户机
  如果没有配置这条命令: 代表,R3是我的非客户机 
 
#
ospf 1 router-id 2.2.2.2 
  area 0.0.0.0 
    network 10.10.2.0 0.0.0.255 
    network 192.168.12.0 0.0.0.255 
    network 192.168.23.0 0.0.0.255 


 R3的配置: 
sysname R3
#
interface GigabitEthernet0/0/0
  ip address 192.168.23.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
  ip address 192.168.35.3 255.255.255.0 
#
interface LoopBack0
  ip address 10.10.3.3 255.255.255.0 

#
bgp 200
  router-id 3.3.3.3
  peer 10.10.2.2 as-number 200     
  peer 10.10.2.2 connect-interface LoopBack0     
  peer 10.10.2.2 next-hop-local 
       
  peer 192.168.35.5 as-number 300    //R3和R5建立EBGP邻居
#
ospf 1 router-id 3.3.3.3 
  area 0.0.0.0 
    network 10.10.3.0 0.0.0.255 
    network 192.168.23.0 0.0.0.255 
    
 R5的配置: 
sysname R5
#
interface GigabitEthernet0/0/0
  ip address 192.168.35.5 255.255.255.0 
#
interface LoopBack0
  ip address 10.10.5.5 255.255.255.0 
#
bgp 300
  router-id 5.5.5.5
  peer 192.168.35.3 as-number 200    //R5和R3通过直连网段(物理接口IP地址)建立EBGP邻居 
  network 10.10.5.0 255.255.255.0    //把10.10.4.0/24  这条路由放到BGP路由表 

5、BGP联盟实验-扩展案例

问题

使用联盟方案解决水平分割带来的问题

拓扑

需求

1)实现R4的10.10.4.4 和R5的10.10.5.5 互联互通

配置步骤

        1)基础配置:配置路由器接口IP地址

        2)R1/R2/R3/R9 配置OSPF,在联盟内部配置OSPF

        3)R4和R1配置EBGP邻居关系,并在R4中注入路由

        4)R1和R2在相同的子AS内部配置IBGP邻居关系

        5)R2和R3在不同的子AS之间配置EBGP邻居关系

        6)R3和R9在相同的子AS内部配置IBGP邻居关系

        7)R9和R5配置EBGP邻居关系,并在R5中注入路由

配置命令

R1的配置: 
#
 sysname R1
#
interface GigabitEthernet0/0/0
 ip address 192.168.14.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.1.1 255.255.255.0 
#
bgp 64512            //打开BGP,进入子AS号 
 router-id 1.1.1.1
  confederation id 200           //配置联盟AS号 
 peer 10.10.2.2 as-number 64512      //在子AS内,R1和R2建立IBGP邻居 
 peer 10.10.2.2 connect-interface LoopBack0    //R1使用loopback接口和R2建邻居 
 peer 10.10.2.2 next-hop-local      //R1给R2传递路由时将路由的下一跳地址修改为10.10.1.1 
 
 peer 192.168.14.4 as-number 100      //R1和R4建立EBGP邻居 

#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 10.10.1.0 0.0.0.255 
  network 192.168.12.0 0.0.0.255

 R2的配置: 
#
 sysname R2
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.23.2 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.2.2 255.255.255.0 
#
bgp 64512
 router-id 2.2.2.2
  confederation id 200               //配置联盟AS号      
  confederation peer-as 64513        //指定联盟内的邻居子AS号 
 peer 10.10.1.1 as-number 64512     //在子AS内,R2和R1建立IBGP邻居 
 peer 10.10.1.1 connect-interface  LoopBack0     //R2使用loopback接口和R1建邻居 
 
 peer 192.168.23.3 as-number 64513     //R2使用(物理接口)和R3建立联盟内的EBGP邻居 
#
ospf 1 router-id 2.2.2.2 
area 0.0.0.0 
  network 10.10.2.0 0.0.0.255 
  network 192.168.12.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 

 R3的配置 
#
 sysname R3
#
interface GigabitEthernet0/0/0
 ip address 192.168.23.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.39.3 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.3.3 255.255.255.0 
#
bgp 64513
 router-id 3.3.3.3
  confederation id 200         //配置联盟AS号 
 confederation peer-as 64512      //指定联盟内的邻居子AS号 
 peer 10.10.9.9 as-number 64513   //在子AS内,R3和R9建立IBGP邻居
 peer 10.10.9.9 connect-interface  LoopBack0    //R3使用loopback接口和R9建邻居
 
 peer 192.168.23.2 as-number 64512      //R3使用(物理接口)和R2建立联盟内的EBGP邻居
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 10.10.3.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 
  network 192.168.39.0 0.0.0.255 
  

 R4的配置: 
#
 sysname R4
#
interface GigabitEthernet0/0/0
 ip address 192.168.14.4 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.4.4 255.255.255.0 
#
bgp 100
 router-id 4.4.4.4
 peer 192.168.14.1 as-number 200 
 network 10.10.4.0 255.255.255.0 

 R5的配置: 
#
 sysname R5
#
interface GigabitEthernet0/0/0
 ip address 192.168.59.5 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.5.5 255.255.255.0 
#
bgp 300
 peer 192.168.59.9 as-number 200 
 network 10.10.5.0 255.255.255.0 

 R9的配置: 
#
 sysname R9
#
interface GigabitEthernet0/0/0
 ip address 192.168.39.9 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.59.9 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.9.9 255.255.255.0 
#
bgp 64513
 router-id 9.9.9.9
  confederation id 200
 peer 10.10.3.3 as-number 64513  
 peer 10.10.3.3 connect-interface  LoopBack0 
 peer 10.10.3.3 next-hop-local 
 
 peer 192.168.59.5 as-number 300 
 
#
ospf 1 router-id 9.9.9.9 
 area 0.0.0.0 
  network 10.10.9.0 0.0.0.255 
  network 192.168.39.0 0.0.0.255 
  • 32
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IBGP水平分割原理是当一台路由器从IBGP对等体那里学习到某条路由条目时,该路由器将不能把这条路由条目传递给任何IBGP对等体,这就是IBGP水平分割规则。这意味着,如果一个路由器收到IBGP对等体传递的路由条目,它将不会再将该路由条目传递给其他对等体。这种机制的目的是防止IBGP因为环路而导致的路由循环问题。 在IBGP中,AS-Path属性在AS内进行传递时是不会发生改变的,因此无法像EBGP对等体一样使用AS-Path属性来防止环路的问题。 BGP作为一种路由协议,可以传递网络层协议,如IP协议。此外,BGP还能够传递除IP协议之外的其他网络层协议。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [IBGP水平分割](https://blog.csdn.net/weixin_45905617/article/details/128225482)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [BGP原理-转](https://blog.csdn.net/legend050709/article/details/120505797)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值