运维开发网

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

运维开发网 https://www.qedev.com 2020-10-17 10:19 出处:51CTO 作者:qiao645
一、背景说明在bgp网络中为了防止路由环路,采取了ibgp水平分割法则,这要求一个as内部的bgpspeaker需要两两建立对等体或使用路由反射器(后续介绍),否则就会出现路由黑洞。本文介通过mpls标签转发路径的方式进行传递BGP路由。二、实验拓扑本次实验拓扑如下图所示:ip地址如图所示,路由器底层运行ospf协议路由器的lo0接口地址为x.x.x.x/32(x为路由器编号),该地址也是rout

一、背景说明

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

二、实验拓扑

本次实验拓扑如下图所示:

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

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

    三、实验步骤

    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路由黑洞

    尽管R2、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路由黑洞

    所以此时数据传输如下图所示,其中R2、R3给1.1.1.1/32分配的label都为1024

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

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号