解决BGP的路由黑洞之BGP-MPLS解决方案(一)

BGP-MPLS解决方案

1.MPLS 发展-原理概述

  • 1.1 MPLS 发展历程 -> 初试锋芒-加快转发速率
  • 1.2 MPLS 发展历程 -> 风波再起-CEF
  • 1.3 MPLS 发展历程 -> 重回巅峰-解决BGP路由黑洞
  • VRF技术

2.MPLS的标签交换前提-LDP

  • 2.1 LDP状态机
  • 2.2 LDP标签分发机制

3.BGP-MPLS解决方案(原理版)

BGP-MPLS 是运营商最常用的一种手段,用于解决BGP的路由黑洞问题
MPLS类似一种专线,解决了大型企业在公司各站点间通过运营商进行通信的问题

本文主要通过分享一个案例来给大家详细的介绍BGP-MPLS

首先我们要知道MPLS是如何工作的->

1.MPLS发展-原理概述

1.1 MPLS 发展历程 -> 初试锋芒-加快转发速率

MPLS最初研发出来时不是用于解决BGP的路由黑洞问题的,而是用来解决TCP/IP路由器转发速率慢的问题

我们都知道路由表是通过多次匹配、递归查找,最长匹配原则来匹配相应的路由条目,这种查找是通过路由器CPU来进行计算查找,比较耗费时间,且CPU处理的不仅仅是查找路由条目这一个工作,而要达到快速的目的必须依靠其他硬件芯片,之后以CISCO代表的厂商研究出来一种芯片,但时间晚于MPLS

解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第1张图片

MPLS定义的一种标签转发规则,随着分配标签协议发展,现在出现一种共用的协议LDP
LDP: 主要工作就是分配标签,MPLS决定转发,MPLS协议本身比较简单,没有对路由路径进行多少判断,它的判断是根据其他协议的结果来做的,选路不是MPLS的强项,MPLS的强项在于转发机制,来弥补路由表的缺点

1.2 MPLS 发展历程 -> 风波再起-CEF

当MPLS发展正兴时:
以CISCO代表的厂商发明了一种东西叫做:

CEF(优化的路由表)

CEF=ARP表+路由表最长匹配结果+路由表递归结果
多次->一次 三元匹配原则,由TCAM芯片完成
当CEF表研发出来后,英雄无用武之地,CEF替代了MPLS实现了快速转发机制

1.3 MPLS 发展历程 -> 重回巅峰-解决BGP路由黑洞

但是MPLS提供的一种新形式的转发路径,基于标签转发,每一条路由条目都有一条独特的标签路径->符合隧道的一切特征(封装+洞口与洞尾),用标签来形成一条隧道,此时人们发现BGP和MPLS是绝配,MPLS依据标签隧道很好的解决了BGP的黑洞问题,且MPLS没有算法,它只是一套转发机制,相对于路由协议来说,MPLS只是占用一定比例的带宽资源,对路由器几乎没有计算上的压力

解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第2张图片

VRF

之后又出现一种技术,又将MPLS推上顶峰,这种技术叫做VRF(Virtual Routing Forwarding,虚拟路由转发)

我们都知道在交换网络中,有一种技术叫做VLAN(Virtual Local Area Network,虚拟局域网),它的作用是划分广播域,可以说用来分割CAM表,而VRF产生出来是为了划分路由表,也可以说是划分路由器,一个路由器中可以存在多个VRF,每个VRF中都有自己独立的VRF路由表,这样就将路由器的路由表分割开来,而彼此之间不互相影响

VLAN间通信使用Trunk干道,那么VRF间通信使用什么呢?

解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第3张图片

2. MPLS的标签交换前提-LDP

MPLS只负责标签交换的过程,而LDP协议是为MPLS服务的,它为路由条目分发标签,供MPLS进行交换,接下来我们介绍一下LDP-标签分发协议

2.1 LDP状态机

因为MPLS是建立在LDP之上的,所有我们首先先了解LDP,路由器要分配标签,那么路由器之间必然存在关系,LDP与大多数路由协议类似,需要建立邻居关系,建邻必然存在状态机(规定每个阶段完成什么样的任务)
解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第4张图片

  • init: UDP 646端口,组播地址224.0.0.2,组播发送hello,收集对端Router-id参数
  • Open-sent/Recived: Open-sent是主动发出hello进入的状态,Open-Recived是接收到对端的hello进入的状态,在此状态,通过TCP 646端口建立TCP连接,发送keeplive报文
  • Operational: TCP连接完成,进入保活状态,邻居关系建立
  • Non-Existent: TCP连接超时、收到init之外其他消息,超时发送NAK消息都会进入该状态

识别对端Router-id,通过TCP 646端口建立TCP连接,启用LDP协议,底层必须有着路由协议的支撑,且Router-id必须为回环口
之后通过Update报文,将为路由条目所分配的标签发送给各邻居

2.2 LDP标签分发机制

上游对下游分发标记,及控制层里面的路由通告的方向
最佳标签产生过程

LDP分配标签时参考的为CEF表,CEF表中所有的路由都分配一个标签,形成一个binding表(Cisco通过show mpls ldp binding查看)

  • Binding表 = 路由前缀 + 本地分配标签(local binding) + 从邻居收到的关于该路由的标签(remote binding)
  • Remote binding表 = 邻居的Router-id + 邻居为该路由条目分配的标签

该binding可以理解为LDP的数据库,类似于EIGRP/OSPF路由协议的拓扑表

解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第5张图片

标签断裂

在此处路由前缀一定是严格匹配一致性的
10.1.1.0/24
10.1.1.1/24

10.1.1.0/24 包含了10.1.1.1/24,但是在LDP中,完全不一样,在此处,会分配不同的标签

比如在OSPF,当我们将回环口起为/24位时,会出现问题,因为在OSPF中,其他路由器学到的路由条目是打O /32位的,此时如果启用LDP协议,本地为/24为分配标签,邻居为/32为分配标签,此时在邻居binding表中,会存在两条掩码不同的路由前缀的binding表,不会产生标签交换的过程,进而不能进行通信,所以在启用LDP时,我们底层如果使用回环口建邻,回环口必须定义成/32位

也就是说MPLS中路由在传递过程中不能汇总,不能该表其位数(掩码),如果底层为OSPF的回环地址最好写成32位主机地址

3.BGP-MPLS解决方案(原理版)

如下图所示,这是我们来简单的介绍一下MPLS是如何打破BGP黑洞的一个案例,这个案例只为了说明怎样去解决黑洞问题,在之后的博文中,会为大家介绍更为复杂、更趋于真实环境的案例
解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第6张图片
R1路由器

  • R1底层OSPF,使用环回地址建邻,loopback 0口1.1.1.1/32
  • R1 BGP,BGP AS100,使用环回0口与R4建立IBGP邻居关系,宣告环回1口10.1.1.1/32
  • R1 LDP,定义标签分发范围100-199
  • R1 启用MPLS
**loopback 0口**
R1(config)#interface loopback 0
R1(config-if)#ip address 1.1.1.1 255.255.255.255
R1(config-if)#exit 

**loopback 1口**
R1(config)#interface loopback 1
R1(config-if)#ip address 10.1.1.1 255.255.255.255
R1(config-if)#exit 

**R1-R2直连**
R1(config)#interface s3/0
R1(config-if)#ip address 10.1.12.1 255.255.255.0
R1(config-if)#no shutdown 
R1(config-if)#exit

**底层OSPF**
R1(config)#router ospf 1
R1(config-router)#router-id 1.1.1.1
R1(config-router)#exit 
R1(config)#interface loopback 0
R1(config-if)#ip ospf 1 area 0
R1(config-if)#exit 
R1(config)#interface s3/0
R1(config-if)#ip ospf 1 area 0
R1(config-if)#exit 

**BGP**
R1(config)#router bgp 100
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#neighbor 4.4.4.4 remote-as 100
R1(config-router)#neighbor 4.4.4.4 update-source loopback 0
R1(config-router)#neighbor 4.4.4.4 next-hop-self 
R1(config-router)#network 10.1.1.1 mask 255.255.255.255
R1(config-router)#exit 

**定义标签分发范围**
R1(config)#mpls label range 100 199

**定义LDP建邻Router-id**
R1(config)#mpls ldp router-id loopback 0 force

**启用MPLS**
R1(config)#interface s3/0
R1(config-if)#mpls ip 
R1(config-if)#exit 
R1(config)#

R2路由器

  • R2底层OSPF,使用环回地址建邻,loopback 0口2.2.2.2/32
  • R2 LDP,定义标签分发范围200-299
  • R2 启用MPLS
**loopback 0口**
R2(config)#interface loopback 0
R2(config-if)#ip address 2.2.2.2 255.255.255.255
R2(config-if)#exit 

**R1-R2直连**
R2(config)#interface s3/1
R2(config-if)#ip address 10.1.12.2 255.255.255.0
R2(config-if)#no shutdown 
R2(config-if)#exit 

**R2-R3直连**
R2(config)#interface s3/0
R2(config-if)#ip address 10.1.23.1 255.255.255.0
R2(config-if)#no shutdown 
R2(config-if)#exit 

**OSPF**
R2(config)#router ospf 1
R2(config-router)#router-id 2.2.2.2
R2(config-router)#exit 
R2(config)#interface loopback 0
R2(config-if)#ip ospf 1 area 0
R2(config-if)#exit 
R2(config)#interface s3/1
R2(config-if)#ip ospf 1 area 0
R2(config-if)#exit 
R2(config)#interface s3/0
R2(config-if)#ip ospf 1 area 0
R2(config-if)#exit 

**定义标签分发范围**
R2(config)#mpls label range 200 299

**定义LDP建邻Router-id**
R2(config)#mpls ldp router-id loopback 0 force 
R2(config)#exit 

**启用MPLS**
R2(config)#interface s3/1
R2(config-if)#mpls ip 
R2(config-if)#exit 
R2(config)#interface s3/0
R2(config-if)#mpls ip
R2(config-if)#exit 
R2(config)#

R3路由器

  • R3底层OSPF,使用环回地址建邻,loopback 0口3.3.3.3/32
  • R3 LDP,定义标签分发范围300-399
  • R3 启用MPLS
**loopback 0口**
R3(config)#interface loopback 0
R3(config-if)#ip address 3.3.3.3 255.255.255.255
R3(config-if)#exit 

**R2-R3直连**
R3(config)#interface s3/1
R3(config-if)#ip address 10.1.23.2 255.255.255.0
R3(config-if)#no shutdown 
R3(config-if)#exit 

**R3-R4直连**
R3(config)#interface s3/0
R3(config-if)#ip address 10.1.34.1 255.255.255.0
R3(config-if)#no shutdown 
R3(config-if)#exit 

**OSPF**
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#exit 
R3(config)#interface loopback 0
R3(config-if)#ip ospf 1 area 0
R3(config-if)#exit 
R3(config)#interface s3/1
R3(config-if)#ip ospf 1 area 0
R3(config-if)#exit 
R3(config)#interface s3/0
R3(config-if)#ip ospf 1 area 0
R3(config-if)#exit 

**定义标签分发范围**
R3(config)#mpls label range 300 399

**定义LDP建邻Router-id**
R3(config)#mpls ldp router-id loopback 0 force 
R3(config)#exit 

**启用MPLS**
R3(config)#interface s3/1
R3(config-if)#mpls ip 
R3(config-if)#exit 
R3(config)#interface s3/0
R3(config-if)#mpls ip
R3(config-if)#exit 
R3(config)#

R4路由器

  • R4底层OSPF,使用环回地址建邻,loopback 0口4.4.4.4/32
  • R4 BGP,BGP AS100,使用环回0口与R1建立IBGP邻居关系,宣告环回1口10.4.4.4/32
  • R4 LDP,定义标签分发范围400-499
  • R4 启用MPLS
**loopback 0口**
R4(config)#interface loopback 0
R4(config-if)#ip address 4.4.4.4 255.255.255.255
R4(config-if)#exit 

**loopback 1口**
R4(config)#interface loopback 1
R4(config-if)#ip address 10.4.4.4 255.255.255.255
R4(config-if)#exit 

**R3-R4直连**
R4(config)#interface s3/1
R4(config-if)#ip address 10.1.34.2 255.255.255.0
R4(config-if)#no shutdown 
R4(config-if)#exit

**底层OSPF**
R4(config)#router ospf 1
R4(config-router)#router-id 4.4.4.4
R4(config-router)#exit 
R4(config)#interface loopback 0
R4(config-if)#ip ospf 1 area 0
R4(config-if)#exit 
R4(config)#interface s3/1
R4(config-if)#ip ospf 1 area 0
R4(config-if)#exit 

**BGP**
R4(config)#router bgp 100
R4(config-router)#bgp router-id 4.4.4.4
R4(config-router)#neighbor 1.1.1.1 remote-as 100
R4(config-router)#neighbor 1.1.1.1 update-source loopback 0
R4(config-router)#neighbor 1.1.1.1 next-hop-self 
R4(config-router)#network 10.4.4.4 mask 255.255.255.255
R4(config-router)#exit 

**定义标签分发范围**
R4(config)#mpls label range 400 499

**定义LDP建邻Router-id**
R4(config)#mpls ldp router-id loopback 0 force

**启用MPLS**
R4(config)#interface s3/1
R4(config-if)#mpls ip 
R4(config-if)#exit 
R4(config)#

测试

以上配置完成之后,BGP的路由黑洞打通,10.1.1.1 和 10.4.4.4 之间可以互相通信
解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第7张图片
在R1上我们可以看到,4.4.4.4与10.4.4.4的CEF表中,下一跳出接口和标签都一致,意味着,此时R1与10.4.4.4进行通信使用的为4.4.4.4的标签路径,也就是说4.4.4.4和10.4.4.4共用一条标签路径,而在启用MPLS之后,R2与R3值通过标签交换进行数据转发,不去看路由表,当数据到达R4之后,脱去标签查本地路由表从而到达10.4.4.4
解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第8张图片
同理R4与10.1.1.1通信原理一致,那么此时就用MPLS解决了BGP的路由黑洞问题
解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第9张图片
解决BGP的路由黑洞之BGP-MPLS解决方案(一)_第10张图片

你可能感兴趣的:(IE)