BGP 防环机制以及简化IBGP网络连接(路由反射技术)


实验需求:

  1. 如图配置IP地址和OSPF协议
  2. 配置AS之间的 外部邻居,通过直连接口
  3. 配置AS内部邻居,要求通过loopback 0建立
  4. 将R1的loopback 通过network 宣告
  5. 将R6的loopback 通过import-router 宣告
  6. 要求R1与 R6可以互相学习路由,并可以互相ping同
    配置思路:
  7. 进行基本配置以及IP地址配置和回环接口配置
  8. 建立AS200中包含:
    @建立ospf邻居关系
    @通过loopback 0 建立IBGP(内部BGP邻居关系)
    @与AS100/600 建立EBGP邻居;
  9. AS100/600
    @与AS200建立EBGP邻居
    @宣告自己的接口,进入BGP
    实验步骤一:接口配置IP地址以及loopback0
    [R1-GigabitEthernet0/0/0]ip ad 192.168.12.1 24
    [R1-LoopBack0]ip ad 10.10.1.1 24
    [R2-GigabitEthernet0/0/1]ip ad 192.168.12.2 24
    [R2-GigabitEthernet0/0/0]ip ad 192.168.22.1 24
    [R2-LoopBack0]ip ad 10.10.12.1 24
    [R3-GigabitEthernet0/0/1]ip ad 192.168.22.2 24
    [R3-GigabitEthernet0/0/0]ip ad 192.168.32.1 24
    [R3-LoopBack0]ip ad 10.10.13.1 24
    [R4-GigabitEthernet0/0/1]ip ad 192.168.32.2 24
    [R4-GigabitEthernet0/0/0]ip ad 192.168.42.1 24
    [R4-LoopBack0]ip ad 10.10.14.1 24
    [R5-GigabitEthernet0/0/1]ip ad 192.168.42.2 24
    [R5-GigabitEthernet0/0/0]ip ad 192.168.52.1 24
    [R5-LoopBack0]ip ad 10.10.15.1 24
    [R6-GigabitEthernet0/0/1]ip ad 192.168.52.2 24
    [R6-LoopBack0]ip ad 10.10.2.1 24
    实验步骤二:建立OSPF以及宣告直连网段和回环口网段
    [R2]ospf 1 router-id 2.2.2.2 #将OSPF的ID修改
    [R2-ospf-1]area 0 #进入ARE0区域骨干区域
    [R2-ospf-1-area-0.0.0.0]network 192.168.22.1 0.0.0.0 # 将直连网段宣告
    [R2-ospf-1-area-0.0.0.0]network 10.10.12.1 0.0.0.0 #将回环口进行宣告
    [R3]ospf 1 router-id 3.3.3.3 #将OSPF的ID修改
    [R3-ospf-1]area 0 #进入ARE0区域骨干区域
    [R3-ospf-1-area-0.0.0.0]network 192.168.22.2 0.0.0.0 # 将直连网段宣告
    [R3-ospf-1-area-0.0.0.0]network 192.168.32.1 0.0.0.0 # 将直连网段宣告
    [R3-ospf-1-area-0.0.0.0]network 10.10.13.1 0.0.0.0 #将回环口进行宣告
    [R4]ospf 1 router-id 4.4.4.4 #将OSPF的ID修改
    [R4-ospf-1]area 0 #进入ARE0区域骨干区域
    [R4-ospf-1-area-0.0.0.0]network 192.168.32.2 0.0.0.0 # 将直连网段宣告
    [R4-ospf-1-area-0.0.0.0]network 192.168.42.1 0.0.0.0 # 将直连网段宣告
    [R4-ospf-1-area-0.0.0.0]network 10.10.14.1 0.0.0.0 #将回环口进行宣告
    [R5]ospf 1 router-id 5.5.5.5 #将OSPF的ID修改
    [R5-ospf-1]area 0 #进入ARE0区域骨干区域
    [R5-ospf-1-area-0.0.0.0]network 192.168.42.2 0.0.0.0 # 将直连网段宣告
    [R5-ospf-1-area-0.0.0.0]network 10.10.15.1 0.0.0.0 #将回环口进行宣告
    这里宣告的时候R2和R5宣告只宣告ospf 区域0连接的网段外头的网段是不可以宣告的
    实验步骤三:创建BGP邻居关系使用回环口创建 并且修改下一跳地址以及使用loopback0接口

[R2]bgp 200 #创建AS200区域
[R2-bgp]router-id 2.2.2.2 #将BGP 的router-id修改
[R2-bgp]peer 10.10.13.1 as-number 200 #建立邻居关系
[R2-bgp]peer 10.10.13.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
[R2-bgp]peer 10.10.13.1 next-hop-local #将下一跳地址改为当初建立邻居使用的地址
[R3]bgp 200 #创建AS200区域
[R3-bgp]router-id 3.3.3.3 #将BGP 的router-id修改
[R3-bgp]peer 10.10.12.1 as-number 200 #建立邻居关系
[R3-bgp]peer 10.10.14.1 as-number 200 #建立邻居关系
[R3-bgp]peer 10.10.12.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
[R3-bgp]peer 10.10.14.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
[R4]bgp 200 #创建AS200区域
[R4-bgp]router-id 4.4.4.4 #将BGP 的router-id修改
[R4-bgp]peer 10.10.13.1 as-number 200 #建立邻居关系
[R4-bgp]peer 10.10.15.1 as-number 200 #建立邻居关系
[R4-bgp]peer 10.10.13.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
[R4-bgp]peer 10.10.15.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
[R5]bgp 200 #创建AS200区域
[R5-bgp]router-id 5.5.5.5 #将BGP 的router-id修改
[R5-bgp]peer 10.10.14.1 as-number 200 #建立邻居关系
[R5-bgp]peer 192.168.52.2 as-number 600 #建立邻居关系
[R5-bgp]peer 10.10.14.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
[R5-bgp]peer 10.10.14.1 next-hop-local #将下一跳地址改为当初建立邻居使用的地址
[R1]bgp 100 #创建AS100区域
[R1-bgp]router-id 1.1.1.1 #将BGP 的router-id修改
[R1-bgp]peer 192.168.12.2 as-number 200 #建立邻居关系
[R1-bgp]network 10.10.1.0 24 #在BGP中宣告自己回环接口网段的地址
[R2-bgp]peer 192.168.12.1 as-number 100 #建立邻居关系(双向建立邻居)
[R6]bgp 600 # 创建AS600区域
[R6-bgp]router-id 6.6.6.6 #将BGP 的router-id修改
[R6-bgp]peer 192.168.52.1 as-number 200 #建立邻居关系
[R6-bgp]network 10.10.2.0 24 #在BGP中宣告自己回环接口网段的地址
[R5-bgp]peer 192.168.52.2 as-number 600 #建立邻居关系(双向建立邻居
display bgp routing-table peer 10.10.14.1 advertised-routes #查看当前BGP信息有没有发给邻居
总结:

  1. bgp在建立邻居的时候要注意自己是用物理接口还是用回环接口(loopback0)去建立的,如果用物理接口建立邻居就不用做别的配置,如果要用回环接口(loopback0)那就需要在建立邻居以后写一条peer x.x.x.x connect-interface LoopBack 0 ,这样才能保证是用的回环接口去建立邻居,而且建立邻居是双向的
  2. BGP的原理,如果外部路由转给内部的时候下一跳的地址是会变化的,内部路由收到这个链路的信息,如果要是最好的,那就会传给他的邻居,当传输的时候下一跳的地址是不会变化的,所以如果想让其传输,需要写一条peer x.x.x.x next-hop-local ,也就是将下一跳的地址改为当初在建立邻居时所用的地址
  3. 在当全网都配置完以后,R2的信息也传入到R3内部了,R3内部也认为是最好的路径,但是在R3给R4传输的时候是不会传输的。
    原因:
    是因为IBGP(内部路由/内部邻居)出现了水平分割机制:也就是说从内部邻居学习过来的路由不转发给内部邻居
    所以还是要有解决办法的。

实验二:
问题:R2和R3BGP的内部路由关系。才传输不了内部路由的数据。
解决办法一:
IBGP邻居设备之间:全网“互联”
缺点:
@配置量比较大
@消耗大量的设备资源(因为BGP是通过tcp建立的)
所以这个办法不会使用的
解决办法二:
BGP联盟:将原来的IBGP(内部路由)邻居,变成EBGP(外部路由)邻居
将EBGP的TTL值改掉就可以(这里面会用到一个定义,直连检测机制,也就是说当TTL值不为1时就不会检查这个机制,如果为1那就会检查这个机制还是不会建立邻居关系)
将AS200 分割成两个独立的AS区域(私有区域),但是还是都属于AS200这个区域

实验需求:

  1. 能让AS100这个区域的loopback0和AS600这个区域的loopback0能进行互通。
  2. 然后在AS200这个区域分割成两个不同的AS区域(设置为私有)
  3. 测试ping,看能不能通
    实验步骤一:
    [R2]bgp 64545 #建立私有AS区域64545
    [R2-bgp]router-id 2.2.2.2 #将router-id修改
    [R2-bgp]confederation id 200 #联盟的AS区域的是公有的
    [R2-bgp]confederation peer-as 64523 #与AS64523这个区域建立联盟
    [R2-bgp]peer 192.168.12.1 as-number 100 #与AS100建立邻居关系
    [R2-bgp]peer 10.10.13.1 as-number 64545 #与R3上的回环接口建立邻居关系(后面是AS区域因为R2和R3属于同一个私有AS区域)
    [R2-bgp]peer 10.10.13.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
    [R2-bgp]peer 10.10.13.1 next-hop-local #将下一跳地址改为当初建立邻居使用的地址
    [R3]bgp 64545 #建立私有AS区域64545
    [R3-bgp]router-id 3.3.3.3 #将router-id修改
    [R3-bgp]confederation id 200 #联盟的AS区域的是公有的
    [R3-bgp]confederation peer-as 64523 #与AS64523这个区域建立联盟
    [R3-bgp]peer 10.10.12.1 as-number 64545 #与R2上的回环接口建立邻居关系(后面是AS区域因为R2和R3属于同一个私有AS区域)
    [R3-bgp]peer 10.10.12.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
    [R3-bgp]peer 10.10.14.1 as-number 64523 #与R4建立邻居(后面的AS区域不同是因为R3和R4是属于不同的私有AS区域内)
    [R3-bgp]peer 10.10.14.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
    [R3-bgp]peer 10.10.14.1 ebgp-max-hop 2 #将EBGP的TTL值修改为2(因为如果要是TTL值为1的话就会检查直连检测机制)
    [R4]bgp 64523 #建立私有AS区域64523
    [R4-bgp]router-id 4.4.4.4 #将router-id修改
    [R4-bgp]confederation id 200 #联盟的AS区域的是公有的
    [R4-bgp]confederation peer-as 64545 #与AS64545这个区域建立联盟
    [R4-bgp]peer 10.10.13.1 as-number 64545 #与R3上的回环接口建立邻居关系(后面是AS区域因为R3和R4属于不同的私有AS区域)
    [R4-bgp]peer 10.10.13.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
    [R4-bgp]peer 10.10.13.1 ebgp-max-hop 2 #将EBGP的TTL值修改为2(因为如果要是TTL值为1的话就会检查直连检测机制)
    [R4-bgp]peer 10.10.15.1 as-number 64523 #与R5上的回环接口建立邻居关系(后面是AS区域因为R4和R5属于同一个私有AS区域)
    [R4-bgp]peer 10.10.15.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
    [R5]bgp 64523 #建立私有AS区域64523
    [R5-bgp]router-id 5.5.5.5 #将router-id修改
    [R5-bgp]confederation id 200 #联盟的AS区域的是公有的
    [R5-bgp]confederation peer-as 64545 #与AS64545这个区域建立联盟
    [R5-bgp]peer 10.10.14.1 as-number 64523 #与R4上的回环接口建立邻居关系(后面是AS区域因为R4和R5属于同一个的私有AS区域)
    [R5-bgp]peer 10.10.14.1 connect-interface LoopBack 0 #建立邻居的时候使用的是自己本身的loopback0这个IP地址建立
    [R5-bgp]peer 10.10.14.1 next-hop-local #将下一跳地址改为当初建立邻居使用的地址
    [R5-bgp]peer 192.168.52.2 as-number 600 #与AS600建立邻居关系
    [R1]ping -a 10.10.1.1 10.10.2.1 #最后测试两边是能互相ping通的

总结:

  1. 如果想让AS100和AS600区域互通的话就得实现将一个公有的AS区域分割成两个私有的AS区域,建立两个区域的联盟体系就可以互相传输BGP数据库的信息。
  2. 当建立两个私有AS区域的时候要注意,建立完两个区域一定要建立联盟的公有AS区域的名字也就是confederation id +公有AS区域号,这里是要同步一样的因为是分割成不同的私有AS区域但是都隶属于同一个公有的AS区域内。还要将两边的私有AS区域建立联盟也就是confederation peer-as +私有AS区域号。这样两边才是真正的联盟系统
  3. 这里就出现一个问题就是在建立EBGP(外部路由)邻居时,必须满足2个机制
    1.更新源检测机制;
    2.直连检测机制:
    直连检测机制的定义:
    建立EBGP邻居时,本地设备去往peer后面
    的IP地址时,所使用的路由,必须是
    直连路由。
    -在什么时候检查该机制?
    1.在外部BGP邻居之间存在;
    2.外部BGP邻居之间的报文的TTL值为1
    时,才会检查。
    如果发现 TTL 不为1,就不需要检查!
    所以中间两个私有AS区域内都属于外部路由(EBGP)而且是用的回环接口建立的邻居,所以不能让他检测到 “直连检测机制 ”所以就得修改两边的EBGPTTL值让他不为1 就不检测了,因此用的命令就是peer +连接的回环口的IP地址+ ebgp-max-hop +TTL值不为1就行这个命令要在两边设备上都要写上,才能生效。
    联盟的缺点:
    @每个小联盟里面只能有两个路由器
    实验三:
    BGP路由反射器的配置:
    还是用上一个图,做一点小小的修改
  4. 修改R3/R4/R5之间的邻居关系
  5. 在R3上配置路由反射器并制定路由反射器客户端
    实验步骤一:
    先将R3/R4/R5的邻居关系修改,让他们都属于同一个私有的AS区域内。修改之后:
    [R3-bgp]peer 10.10.14.1 reflect-client #将R4设置为R3 的路由反射器客户端(R3自动成为路由反射器)
    测验,这个实验当把R3/R4/R5的邻居关系都修改到一个私有区域内以后,R3是收到两段的路由信息以后是传输不出去的,因为两边的R2和R4都属于同一个内部区域的,所以传输不过去。当将R3做为路由反射器的时候只需要指定一端为路由反射器的客户端即可,两边都可以互相传输路由信息。
    第一个实验留下来的问题,R3和R4是不能传输内部之间的信息,所以将R3和R4互相作为路由反射器的客户端即可,但是这里注意一下,这个技术是双向的,如果单向做那不会实现数据的互通,如果双向做R3和R4上的BGP数据都是同步的。也可以将R2作为R3的路由反射客户端R5做为R4的路由反射客户端。数据也是同步的,但是一定记住是双向的。

本文链接:https://my.lmcjl.com/post/8899.html

展开阅读全文

4 评论

留下您的评论.