48小时系统班试听入口

【一文搞懂】MPLS技术精讲总结!

发布作者:新盟教育 发布日期:2022-08-23 浏览人数:4630人

MPLS技术精讲总结!快来看!

前文指路↓↓↓

【网工必看】MPLS及LDP协议基础

MPLS L3 VPN技术

1.1 MPLS L3 VPN概述


MPLS VPN的出现主要是为了要解决传统VPN技术的一些固有缺陷,这有很多技术问题需要解决的,其中最重要的是地址重叠的问题。


要解决地址空间重叠的问题主要有以下几个问题:

1.本地路由冲突问题;

2.路由在网络中的传播问题;

3.报文的转发问题;


从上述这些技术难点来看,主要问题都存在于和路由相关的特性,所以要解决这些问题必须从路由协议上进行考虑。BGP具备很多特点使其十分适合改造以满足VPN网络上地址重叠的问题,它的特点如下:

1.公共网络中VPN路由数目非常大,BGP是目前唯一支持大量路由的路由协议;


2.BGP也是为在不直接相连的路由器间交换信息而设计的,这使得P路由器中无需包含VPN路由信息;


3.BGP可以运载附加在路由后的任何信息,作为可选的BGP属性,任何不了解这些属性的BGP路由器都将透明的转发它们(当然这些属性都是可传递的),这使在PE路由器间传播路由非常简单。


解决思路如下:


1.本地路由冲突问题,可以通过在同一台路由器上创建不同的路由表解决,而不同的接口可以分属不同的路由表中,这就相当于将一台共享PE模拟成多台专用PE。


2.可以在路由传递的过程中为这条路由再添加一个标识,用以区别不同的VPN。


3.由于IP报文的格式不可更改,但可以在IP头之外加上一些信息,由始发的VPN打上标记,这样PE在接收报文时可以根据这个标记进行转发。


1.2 本地路由冲突问题的解决思路


具体操作是在PE设备上划分不同的VRF(VPN路由转发实例-VPN Routing & Forwarding Instance,我司称之为VPN Instance),每一个VRF可以看作虚拟的路由器,好像是一台专用的PE设备。这样每个VRF拥有自己独立的路由表、接口集合以及只用于本VRF的路由协议。

实现VRF本地路由区分并不困难,但是解决远端路由区分就要在PE上使用特定的策略规则来协调各VRF和全局路由表之间的关系。这个主要是指PE设备如何分辨收到的路由是属于VPN的路由还是公共网络上的全局路由。

解决的办法是给VPN路由加上一个标记信息,由不同的标记来标示不同的路由,并由PE设备根据这个标记来判断该路由应该被写入哪个VRF中。这个标记信息称为RT属性,也是BGP中改造后的团体属性。这样PE设备就可以通过在特定路由条目中加入RT属性来区分不同VRF的路由。

来看一下团体属性是如何改造使之成为RT属性的:传统的团体属性格式如下:


扩展后的团体属性(也就是RT)格式如下:


扩展的community有如下两种格式:其中type字段为0x0002或者0x0102时表示RT。RT是作为BGP路由的属性进行传递的,并且它是任选可传递的属性。扩展的团体属性值是32bit的,可以提供更多的路由区分。

RT的本质是每个VRF表达自己的路由取舍及喜好的方式。可以分为两部分:Export Target与Import Target;前者表示了我发出的路由的属性,而后者表示了我对哪些路由感兴趣。具体例子不再详细说明了,原理比较简单。

1.3 路由在网络中传递时的冲突问题的解决思路


标准的BGP只能处理IPv4路由,所以如果不同的VPN使用相同的IPv4地址前缀,在接收端就无法分辨不同VPN的路由。使用RT属性是可以部分解决这个问题的,但同时也存在一定的局限性。我们来分析一下通过RT如何解决这个问题及它的局限性。

1.当PE收到不同VPN发过来的路由后,根据RT属性决定路由进入哪个VRF,这样就可以保证不同VPN的路由不具备可比性,操作可以正常进行。


2.路由撤销的时候BGP报文是不带属性的,RT肯定也就不起作用了,会导致所有VPN中的相同路由都被撤销掉。


所以RT虽然具备了这个功能但并不是所有的时候都好用,必须有一种标记可以和IPv4地址绑定到一起来从根本上解决这个问题——这个标记我们称之为RD。RD是附加在IPv4地址前面的一种标记,它的格式如下所示:

图6 RD格式示意图


其中类型字段定义了两个值:0和1。

① 对于类型0,管理器子区域包括2字节,分配数值字段包括4字节。管理器子区域使用自治系统号码(ASN),分配数值子区域为服务提供商管理的数值空间。类型0不能使用私有自治系统号码,可能会造成冲突。如果要使用私有的自治系统,可以使用类型1;


② 对于类型1,管理器子区域包括4字节,分配数值字段包括2字节。管理器子区域使用IPv4地址,分配数值子区域为服务提供商管理的数值空间;


RD的结构和RT相似,但它们是有本质区别的,RT是BGP路由的扩展属性,而RD是附加在IPv4地址前的作为地址的一部分存在,这点需要大家注意。


关于RD的一些应用上的特点如下:


① 在IPv4地址加上RD之后,就变成VPN-IPv4地址族了。


② 理论上可以为每个VRF配置一个RD,但要保证这个RD全球唯一。


③ 通常建议为每个VPN都配置相同的RD。


④ VPN-IPv4地址仅用于服务供应商网络内部。在PE发布路由时添加,在PE接收路由后放在本地路由表中,用来与后来接收到的路由进行比较。CE不知道使用的是VPN-IPv4地址。


⑤ 在其穿越供应商骨干时,在VPN数据流量的包头中没有携带VPN-IPv4地址。RD只在骨干网路由协议交换路由时使用。并且PE从CE接收的标准的路由是IPv4路由,如果需要发布给其它的PE路由器,此时需要为这条路由附加一个RD。


正因为RD具有这些特点,所以如果两个VRF中存在相同的地址,但是RD不同,则两个VRF一定不能互访,间接互访也不行。这是因为在数据转发时数据报文中并不携带RD,这样数据到达目的地时PE就会在不同的VRF中查找到去往相同目的地的路由条目,从而造成错误的转发。虽然RD是在PE设备路由交换的过程中携带,但是RD并不会影响不同VRF之间的路由选择以及VPN的形成,这些事情是由RT搞定的。

1.4 数据报文转发问题的解决思路


前面两个问题:在PE本地的路由冲突和路由网络传播过程中的冲突问题都已解决。但是在数据转发时如果接收端PE的两个本地VRF中同时存在10.0.0.0/24的路由,当它接收到一个目的地址为10.0.0.1的报文时,它如何知道该把这个报文发给与哪个VRF相连的CE?

解决办法是通过对BGP协议的改造,改造后的MP-IBGP进行NLRI信息交换时会附加RD、标签等各种信息,不同的数据报文到PE时根据MP-IBGP给不同VRF分配的私网标签进行内层标签标记,到对端PE后,根据对应该VRF的标签从而来转发给对应的VRF。和LDP协议类似,标签的分配是在数据转发发生之前完成的。不同的是MP-IBGP分配标签是和路由交换同时进行的。格式如下:

图7 MP-IBGP NLRI报文格式


在这之后是RT信息,如下图所示↓:

图8 MP-IBGP NLRI报文RT列表


这样,整个MPLS VPN的路由交换及数据转发问题就都解决了。下面我们来介绍一下MPLS L3 VPN的路由交换及数据转发的流程。



路由交换及数据转发流程

2.1 MPLS L3 VPN路由交换流程


MPLS L3 VPN的路由交换时,PE路由器运行单个路由协议(MP-IBGP),来交换所有的VPN路由。为支持VPN客户空间重叠的情况,给VPN地址空间加上RD,使其是唯一的。并使用RT属性来标示路由所属的VRF。

MPLS/VPN的路由交换过程主要分为四部分:

1.CE与PE之间的路由交换;

2.VRF路由注入到MP-IBGP的过程;

3.公网标签分配过程;

4.MP-IBGP路由注入到VRF的过程。


2.1.1 CE与PE之间的路由交换

图9 CE与PE之间路由交换示意图


如图所示,交换过程如下:

在PE上为不同的VPN站点配置VRF。PE上维护多个独立的路由表,包括公网和私网(VRF)路由表,其中:

1.公网路由表:包含全部PE和P路由器之间的路由,由骨干网IGP产生。

2.私网路由表:包含本VPN用户可达信息的路由和转发表。


PE和CE之间通过标准的EBGP、OSPF、RIP或者静态路由交换路由信息。在这个过程中,除PE设备需要将CE设备传来的路由分别存储在不同的VRF外(这只和路由接收的接口有关,和其它MPLS VPN特性无关)其它操作和普通的路由交换没有区别。


静态路由、RIP都是标准的协议,所有的CE端都可以使用相同的路由协议,但是需要在PE端的每个VRF运行不同的实例,相互之间没有干扰,与PE的MP-IBGP之间只是简单的互相引入操作。EBGP的情况与RIP类似,也是普通的EBGP而非MP-EBPG,只交换经过PE过滤后的本VPN路由。


但选择OSPF作为PE与CE之间的路由协议,情况相对复杂。需要对OSPF做很多修改,以将本site的LSA放在BGP的扩展community属性中携带,与远端VPN中的OSPF之间交换LSA,区域的划分也会复杂许多,此处不再展开讲了。


2.1.2 VRF路由注入到MP-IBGP的过程


图10 VRF路由注入到MP-IBGP及PE间路由交换示意图


在从CE端接收到路由信息后,PE路由器需要对该路由加上RD(RD为手工配置),使其变为一条VPN-IPv4路由。然后在路由通告中更改下一跳属性为自己(通常是自己的loopback地址),为这条路由加上私网标签(由MP-IBGP协议随机自动生成,无需配置)、加上RT属性(RT需手工配置)。这一系列工作完成后,由PE发给其它所有的PE邻居。其它的PE邻居也进行同样的操作用于交换不同CE端的路由。

2.1.3 公网标签分配过程


图11 公网标签分配过程示意图


如图所示,公网标签分配的过程如下:

首先PE和P路由器通过骨干网IGP学习到BGP邻居下一跳的地址。通过运行LDP协议,分配标签,建立LSP通道。标签栈用于报文转发,外层标签用来指示如何到达BGP下一跳 ,内层标签表示报文的出接口或者属于哪个VRF(属于哪个VPN)。MPLS节点转发是基于外层标签,而不管内层标签是多少。此时通过MPLS的外层标签空间,PE设备间就可以进行正常的路由交换了。

2.1.4 MP-IBGP路由注入到VRF的过程


图12 MP-IBGP路由注入到VRF的过程示意图


接收端PE在接收到发送端PE发送的路由后,将VPN-v4路由变为IPv4路由,并且根据本地VRF的import RT属性将路由条目加入到相应的VRF中,私网标签保留,记录到转发表中,留做转发时使用。再由本VRF的路由协议引入并传递给相应的CE。发给CE时下一跳为接收端PE自己的接口地址。这样就完成了从MP-IBGP路由注入到VRF的过程。

经过以上四个步骤,整个MPLS VPN网络的路由交换就完成了。此时VPN构建完成,可以进行正常的业务数据转发了。

2.2 MPLS L3 VPN数据转发流程


MPLS/VPN的数据转发过程也需要分为两部分来进行处理:

1.从CE到Ingress PE。

2.Ingress PE->Egress PE->CE。


2.2.1 数据转发从CE到Ingress PE


图13 数据转发--从CE到IngressPE过程示意图


CE将报文发给与其相连的VRF接口,PE在本VRF的路由表中进行查找,得到了该路由的公网下一跳地址(即:对端PE的loopback地址)和私网标签。在把该报文封装一层私网标签后,在公网的标签转发表中查找下一跳地址,再封装一层公网标签,交与MPLS转发。

2.2.2 数据转发——Ingress PE->Egress PE->CE


图14 数据转发--Ingress PE->Egress PE->CE


如前一部分所述,交由MPLS转发的报文在公网上沿着LSP转发,并根据途径的每一台P设备的标签转发表进行标签交换。在倒数第二跳P设备处,将外层的公网标签弹出,并由该P设备交给目的PE设备,PE设备根据内层的私网标签判断该报文属于哪个VRF。然后弹出内层的私网标签,在目的VRF中查找路由表,根据下一跳发给相应的CE。这样VPN站点间的一次数据交换就完成了。



MPLS L3 VPN特性介绍

3.1 SOO特性


SOO的概念:扩展团体路由源,SOO用于当站点与MPLS/VPN主干中的多个PE路由器相连并且使用了AS覆盖特性时防止路由环路。根据路由的SOO,PE路由器确定它从哪个站点获得,这样其它的PE路由器便不会将该路由重新通告给该站点。各台相关PE都需要配置,是扩展团体属性的一部分。

图15 SOO特性示意图


位于HANGZHOU的PE收到来自BEIJING PE的关于192.1.1.0/24的路由更新。更新中包含一个值为100:28的SOO,它是位于HANGZHOU PE路由器上配置的VRF SOO之一,因此该路由不会再被通告到客户站点。(实际情况是应该通告呢?)

3.2 AS覆盖特性


AS覆盖特性:当客户站点和PE间运行EBGP时,客户在其不同站点使用相同的AS号,通过在PE上重写VPN站点路由中的AS_PATH,使得路径中只包含MPLS/VPN主干的自治系统号,以避免对端站点不接受该路由。该特性与SOO特性一起使用以避免出现路由环路。在配置了AS覆盖特性后,PE路由器在将路由通告给CE时对路由进行检查,相关操作如下:

1.如果AS_PATH中的最后一个AS号与邻居的AS号相同,则PE将其替换为自己的AS号。


2.如果AS_PATH中有多个AS号与最后的AS号相同,PE将这些AS号都替换为自己的AS号。


图16 AS覆盖特性示意图


从HANGZHOU PE传递到BEIJING PE的关于196.7.25.0/24的更新消息中,AS-PATH与BEIJING CE的AS号相同,在BEIJING PE上将该路由传递给BEIJING CE时会更改AS-PATH属性为1,1,这样这条路由会被BEIJING CE正常接收。

3.3 自动路由过滤技术(ARF)特性


自动路由过滤技术(ARF)特性:目前MPLS/VPN进行路由交换时存在一个问题是:所有的VPN路由都会存放在一个全局的BGP路由表中,不管该PE的VRF是否需要该路由,该路由条目都会存放,这样对PE的内存和链路带宽都是一种浪费。

自动路由过滤技术可以满足这种过滤的需求,该功能在所有的PE路由器上都可用。它的特点是将包含的RT与PE配置的任何一个VRF都不匹配的路由条目自动过滤掉,以减少PE必须存储到内存中的信息量。

图17 自动路由过滤技术(ARF)特性示意图

从SHANGHAI来的路由条目携带的RT与BEIJING的PE路由器中所配置的不相匹配,导致在该PE上更新被拒绝。

3.4 路由刷新特性


路由刷新特性:当使用了自动路由过滤技术将PE上不需要的路由过滤掉以后,此时PE的策略发生了变化,如添加了新的VRF或修改了已有的VRF,则PE路由器需要获得以前被丢弃的路由。此时需要更改过滤特性的配置使其接受该路由,但是按照BGP的处理机制,路由始发者只会发送更新的路由信息给邻居而不会重传路由表,所以需要有一种机制来保证路由的正常学习。

路由刷新特性用来解决这个问题。使用这个特性后,PE路由器将在其配置被修改后的一段时间后,请求其邻居重传路由选择信息,以获得前面丢弃掉的路由。延时是必要的,因为在PE上可能要做多处修改,而我们希望只发一次刷新。路由刷新特性是默认开启的不需要额外的配置。

图18 路由刷新特性示意图


1.BEIJING PE新添加了一个站点,该站点属于VPN B。

2.BEIJING的PE给其邻居发送一条路由刷新消息要求重传VPN路由。


3.其PE邻居将VPN路由重传给BEIJING的PE,使其学习到该VPN的路由。当然前期必须把过滤策略去掉。

4.我们也可以手工的reset BGP来实现路由刷新,但效率较低。



——————————————————


网工界市场认可度极高的华为认证,你考了吗?


拿下华为HCIE认证之后,你可以:

  • 跨越90%企业的招聘硬门槛

  • 增加70%就业机会

  • 拿下BAT全国TOP100大厂敲门砖

  • 体系化得到网络技术硬实力

  • 技术大佬年薪可达30w+