mpls 保留标签值_【必看】利用MPLS解决BGP路由黑洞

一、背景说明

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

二、实验拓扑

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

19a493a5115d60c412e21234dd893c58.png
  • 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接口路由,并将该路由已加载到路由表中

7cfa58a4eed27ffffaef9eeae8bfaed2.png
  • 此时bgp路由已相互学习到,但无法通信[R1]ping -a 11.11.11.11 44.44.44.44PING 44.44.44.44: 56 data bytes, press CTRL_C to breakRequest time outRequest time outRequest time outRequest time outRequest time out--- 44.44.44.44 ping statistics ---5 packet(s) transmitted0 packet(s) received100.00% packet loss
    3.路由黑洞根因定位
  • 路由传输层面
    首先,从路由传输层面进行分析。R1通过ibgp将11.11.11.11/24路由传给R4

12f5cf8ad4b02e7a664f35b6137ab455.png

尽管R2、R3没有运行bgp,但R1与R4底层用于建立bgp对等体的lo0接口之间路由层能够正常通信,所以bgp路由表会通过update报文将11.11.11.11/24路由传递给对方

d54be045d4fdcc1059ff834759441780.png
  • 数据传输层面

abbcd7457a53d52334683f9a60f714c4.png


看完了路由层面,现在来看数据传输层面,R4要将数据包发到对等体R1,但R4不能直接把数据包扔给R1,必须是一跳一跳的到达R1,这一点在R4的路由表中可以看到,尽管下一跳是1.1.1.1,但是需要经过递归下一跳(RelayNextHop: 34.0.0.3 )R3

d691248a85f79f78f599bc43a4bdfab9.png


此时R3上并没有目的地址是11.11.11.11/24的路由,所以直接丢弃,造成通信失败

7752387b481b0fcc464965956c541242.png

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

  • R1上启用mpls,构建ldp邻居(其余路由器做同样动作此处省略)

4abefa914ba5a8e38c93c9b9c00f1e25.png


至此,mpls配置完成,但此时发现,仍然无法通信,检查R4去往11.11.11.11/24信息发现“TunnelID: 0x0”,说明并没有进入lsp路径转发,仍然是ip报文转发,原因是华为设备默认不去隧内做递归

3adc8ce8c734305f4d71d6e2adf1f6fa.png
  • 开启隧道内递归,发现它走0x1隧道

370a88264bb55c04dc745bf98d85288a.png


查看0x1隧道,可以到看数据包被压上R3给他分的值为1024的label,而此时的目的ip地址也由ip报文转发时的11.11.11.11/24变成了1.1.1.1

dce75aeaf99df05dc6d3de204f4af381.png


因为R1~R4都运行了ldp所以每个路由器都为1.1.1.1/32这个fec分配了label,通过tracert可以查看变迁转发路径

dbb5bf5494890e6e4889fd848e263d82.png


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

5c69a424bd0bc0ed5bd3e7ca842cd3eb.png

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值