伪装网络工程师21——利用MPLS解决BGP路由黑洞

1、背景说明

在bgp网络中为了防止路由环路,采起了ibgp水平分割法则,这要求一个as内部的bgp speaker须要两两创建对等体或使用路由反射器(后续介绍),不然就会出现路由黑洞。本文介经过mpls标签转发路径的方式进行传递BGP路由。 网络

2、实验拓扑

本次实验拓扑以下图所示:
伪装网络工程师21——利用MPLS解决BGP路由黑洞 ide

  • ip地址如图所示,路由器底层运行ospf协议
  • 路由器的lo0接口地址为x.x.x.x/32(x为路由器编号),该地址也是route-id、lsr-id,做为ospf邻居,bgp对等体,ldp邻居之间的通讯地址
  • R1和R4上的lo1接口模拟客户端路由,不宣告进as1234,R1与R4之间经过lo0接口创建ibgp链接,R二、R3上不运行bgp,11.11.11.11/24与44.44.44.44/24在R1和R4的bgp中起源
  • 各接口ip地址配置步骤省略

    3、实验步骤

    1.创建ospf与bgp邻居关系

  • 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 12.0.0.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

#创建bgp对等体
[R1]bgp 1234
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 4.4.4.4 as 1234
[R1-bgp]peer 4.4.4.4 connect-interface lo0
  • 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 12.0.0.2 0.0.0.0
    [R2-ospf-1-area-0.0.0.0]network 23.0.0.2 0.0.0.0
    [R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
  • 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 23.0.0.3 0.0.0.0
    [R3-ospf-1-area-0.0.0.0]network 34.0.0.3 0.0.0.0
    [R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
  • R4上的配置
#创建ospf邻居
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]network 34.0.0.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0

#创建bgp对等体
[R4]bgp 1234
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 1.1.1.1 as 1234
[R4-bgp]peer 1.1.1.1 connect-interface lo0

2.bgp路由黑洞的产生

  • 在R1和R4上起源lo1接口地址
[R1]bgp 1234
[R1-bgp]network 11.11.11.0 24

[R4]bgp 1234
[R4-bgp]network 44.44.44.0 24
  • 确认R4已收到R1发来的lo1接口路由,并将该路由已加载到路由表中
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
  • 此时bgp路由已相互学习到,但没法通讯 学习

    [R1]ping -a 11.11.11.11 44.44.44.44
    PING 44.44.44.44: 56  data bytes, press CTRL_C to break
    Request time out
    Request time out
    Request time out
    Request time out
    Request time out
    
    --- 44.44.44.44 ping statistics ---
    5 packet(s) transmitted
    0 packet(s) received
    100.00% packet loss

    3.路由黑洞根因定位

  • 路由传输层面
    首先,从路由传输层面进行分析。R1经过ibgp将11.11.11.11/24路由传给R4
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
    尽管R二、R3没有运行bgp,但R1与R4底层用于创建bgp对等体的lo0接口之间路由层可以正常通讯,因此bgp路由表会经过update报文将11.11.11.11/24路由传递给对方
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
  • 数据传输层面
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
    看完了路由层面,如今来看数据传输层面,R4要将数据包发到对等体R1,但R4不能直接把数据包扔给R1,必须是一跳一跳的到达R1,这一点在R4的路由表中能够看到,尽管下一跳是1.1.1.1,可是须要通过递归下一跳(RelayNextHop: 34.0.0.3 )R3
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
    此时R3上并无目的地址是11.11.11.11/24的路由,因此直接丢弃,形成通讯失败
    伪装网络工程师21——利用MPLS解决BGP路由黑洞

    4.使用mlps解决bgp路由黑洞

  • R1上启用mpls,构建ldp邻居(其他路由器作一样动做此处省略)
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
    至此,mpls配置完成,但此时发现,仍然没法通讯,检查R4去往11.11.11.11/24信息发现“TunnelID: 0x0”,说明并无进入lsp路径转发,仍然是ip报文转发,缘由是华为设备默认不去隧内作递归
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
  • 开启隧道内递归,发现它走0x1隧道
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
    查看0x1隧道,能够到看数据包被压上R3给他分的值为1024的label,而此时的目的ip地址也由ip报文转发时的11.11.11.11/24变成了1.1.1.1
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
    由于R1~R4都运行了ldp因此每一个路由器都为1.1.1.1/32这个fec分配了label,经过tracert能够查看变迁转发路径
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
    因此此时数据传输以下图所示,其中R二、R3给1.1.1.1/32分配的label都为1024
    伪装网络工程师21——利用MPLS解决BGP路由黑洞
相关文章
相关标签/搜索