MPLS VPN路由层面及数据转发层面解析

 

今天的知识依旧很多很丰富,下面我们来学习一下VPN路由层面及数据转发层面解析。...



MPLS高富帅之路

首先我们来谈谈MPLS VPN中各设备的视角。

1)CE的视角
CE即客户网络的边界路由器,它拥有本地站点客户网络的路由,同时与PE路由器对接。CE与PE运行“PE-CE的路由协议”,例如eBGP、OSPF、EIGRP、静态路由、ISIS等等。CE上运行该路由协议的目的一方面是将本地站点内的客户路由传递给PE路由器,另一方面是通过该路由协议从PE处学习到远端站点的路由。

2)PE的视角
PE是非常关键的设备,它与不同客户的CE相连,使用VPN实例来区分不同的客户。PE同时还运行了PE-CE路由协议与CE交互客户私网路由(客户站点内的路由我们称之为私网路由或)。PE路由器一方面通过PE-CE路由协议从自己直连的CE处学习到VPN客户私网路由,然后将这些私网路由变成VPNv4前缀并通过MP-BGP发送给远端的PE;同时也将从远端PE处获取到的客户VPN路由传递给恰当的直连CE路由器。

PE还与P通过Core的IGP交换Core路由。

PE之间建立MP-iBGP邻居关系,然后使用MP-iBGP来运载VPNv4路由,他们将自己从CE处学习到的客户站点IPv4私网路由变成VPNv4前缀然后传递给对方。

3)P的视角
P设备也就是运营商设备,是MPLS VPN Backbone内的设备,它们不与任何的客户设备相连,并且不参与任何客户路由的交互,也不会学习到任何客户路由。

MPLS VPN Backbone内的P和PE设备一般会运行一个Core(核心内)的IGP,例如OSPF或者ISIS,目的是为了交互Backbone内的路由(不包含任何客户的路由),为后续PE之间建立MP-BGP邻居关系,以及Backbone内各设备之间的LDP邻居关系和LDP标签分发做好准备。

另外,P设备还负责标签数据的转发工作,由于Backbone内运行了LDP,因此P设备能够根据标签数据的外层标签进行交换。


MPLS VPN路由交互模型
接下去我们来深入解析一下MPLSVPN整体解决方案。我将分别从路由交互模型及数据交互模型两个角度解析这个问题。从宏观层面上看,PE上的VPN实例可以隔离及区分不同客户的私网路由,PE将连接到不同的客户的接口添加到不同的VPN实例中。PE通过PE-CE之间的路由协议(可以是IGP,也可以是eBGP)从VPN实例接口学习到客户的路由后,路由被放入相应的VPN路由表,这些路由就是客户的私网IPv4路由:
但是这些客户的VPN私网路由如何在运营商的网络中传递呢?BGP无疑是最理想的协议。在PE1及PE2之间建立MP-iBGP邻居关系,为运载客户路由做好准备。客户站点的IPv4私网路由,加上我们在VPN-Instance中配置的RD形成96bits的VPNv4前缀,使得每一个客户的VPNv4路由具有唯一性,可以在公共的运营商网络中传输。

而到目前为止我们接触的BGP,都只能够承载32bits的IPv4的路由前缀,这里要承载96bits的VPNv4前缀,就需要对BGP做一些协议上的扩展,我们把这种扩展后的、能够支持多协议的BGP成为Multi-prototol BGP,简称MP-BGP。如果PE-CE之间运行的是非BGP协议,那么当然需要将VPN路由表中的客户路由重发布到MP-BGP中,如果PE-CE之间运行的已经是BGP了,自然不用再做重发布了。
客户站点的私网IPv4路由被注入MP-BGP后,RD被添加到了这些IPv4路由前缀前面,就构成了96bits的VPNv4路由前缀,同时RTs也被附加到VPNv4路由前缀。由于PE之间已经建立起了MP-BGP的邻接,因此PE将VPNv4路由前缀(连同这个前缀关联的MPLS标签、RTs等属性)一并通告给另一端的PE。
VPNv4路由被传递到了PE2,由于PE2也配置了VPN-Instance,在VPN-Instance中定义了import RTs(RT分导入和导出值,PE2的导入值要与PE1的导出值对应上)。它根据RTs将收到的VPNv4路由前缀导入特定的VPN路由表中,然后RD被从VPNv4路由中移除,这就得到了IPv4路由前缀。
经过上面这步,IPv4路由就被注入到了VPN路由表中。当然,这些路由现在是BGP的路由条目。PE2与CE之间跑的路由协议帮助我们将PE上的IPv4路由最终更新给CE:
当然,如果此处PE2与CE之间运行的路由协议是eBGP,那么无需做路由重发布,CE即可通过BGP获取到站点1的路由,而如果PE2与CE之间运行的不是eBGP而是其他的IGP,那么就需要在PE2上将BGP路由重发布到IGP。


MPLS VPN数据转发模型
现在,CE3已经拥有了CE1所在站点的路由,但是它发出的到达站点1的数据包如何穿越MPLS VPN网络呢?报文肯定是无法以纯IP的形式穿越MPLS VPN Backbone的,因为P路由器不能转发这些报文,P压根没有客户的VPN私网路由。

MPLS可以通过对报文粘贴标签解决这个问题,让所有的P和PE运行LDP,有了LDP,这些客户的数据在穿越MPLS VPN网络的时候,就“包裹在”一层标签里头,P路由器只需要对这层标签进行交换和转发即可,P路由器永远不会执行目的IP的查找工作,这层标签称为IGP标签(我们也常称为LDP标签,相对于后面的VPN标签),因为该标签是粘连在P和PE路由器的全局路由表的IPv4前缀之上的(我们在P、PE上运行的基于全局路由表的IGP协议,如OSPF,就是为了让MPLS VPN Backbone内的IGP路由都可达,这样Backbone内LDP的标签分发才能正常工作)。

IGP标签解决了客户数据在MPLSBackbone内的传输问题,现在假设数据传到了出站PE路由器,它如何知道报文属于哪一个VPN实例呢(或者说,报文在出站PE上应该转发给哪一个下一跳的CE路由器)?这个信息不在IP头里,也不能从IGP标签中获得。那么我们就需要加入另一层标签,来说明报文所属的VPN。
因此报文会有两层标签,一个IGP标签在顶部,一个VPN标签在底部。IGP标签是通过LDP或者用于TE的RSVP在所有P和PE路由器上一跳一跳分发的。VPN标签是在PE之间用MP-BGP进行通告的。

下面是一个例子:
MPLS VPN的各个组件我已经说了很多了,这里不再废话。首先MPLSVPN Backbone内,也就是PE1、两台P和PE2运行一个IGP,例如OSPF。通过这个OSPF,四台设备就打通了骨干内的路由,其中包括各设备的Loopback路由等。PE1及PE2自然也是知晓了对方的Loopback路由。

然后我们在这四台设备上激活LDP,使得直连的设备之间能够建立LDP邻居并且开始为路由前缀分发标签,我们重点关注1.1.1.1/32这条路由。这是PE1的Loopback,因此PE1为该路由捆绑的标签是3(倒数第二跳弹出机制)然后将标签映射分发给右边的P1,P1为该路由捆绑的标签是201,它将标签映射分发给了P2,P2则为路由捆绑301的标签并将标签映射发给了PE2。

接下去PE1及PE2基于Loopback建立MP-iBGP邻居关系:
PE1创建了VPN实例ABC,定义该VPN实例的RD值为234:1,同时导出的RT值为234:1,导入RT值也为234:1。然后将自己连接CE1的接口捆绑到这个VPN实例。接下去PE1与CE1之间运行一个PE-CE的IGP协议,PE1通过这个基于VPN实例的路由进程获取到CE1所在站点的路由,例如我们这里拿10.1.1.0/24这个网段举例,PE1通过PE-CE的IGP能够学习到这条路由并且将路由放入VPN实例ABC的路由表中。

如果此处PE-CE间运行的路由协议不是BGP,而是诸如OSPF等IGP,则要将该IGP的路由重发布到BGP的VPN地址族中。如果PE-CE间运行的路由协议是BGP,则无需此步骤。

现在,客户的VPN路由已经被装载到MP-BGP,PE1为该路由添加RD值形成VPNv4前缀234:1:10.1.1.0/24,然后该前缀附上各种BGP路径属性,其中包括RT值,以及PE1的MP-BGP为该前缀分配的VPN标签。该VPNv4前缀就被传给了PE2:
PE2上面也是配置了VPN实例的,假设PE2为客户A的站点2创建的VPN实例名称也为ABC,那么该VPN实例所配置的导入RT值,就必须是234:11,也就是与PE1上的导出RT值相等,我们这里实际上导入、导出值都是234:11。

如此一来当PE2收到PE1传递过来的VPNv1路由时,就会根据本地配置的导入RT值,将匹配该值的VPNv4路由放入相应的VPN实例,摘除RD值,得到IPv4前缀,放入VPNABC的路由表。此刻这条路由在VPN ABC路由表中是BGP路由,如果PE2与CE3之间运行的PE-CE协议是BGP,则路由会被自动传递给CE3,如果不是BGP,则需要在PE2上配置路由重发布。

好了,现在CE3,要去访问10.1.1.0/24网络。IPv4数据包到了PE2,PE2将数据包压上两层标签,外层是LDP标签301,这是它的上游P2给他的(为1.1.1.1/32这条前缀分配的),内层标签是111,这是Exgress PE(PE1)给它的。
现在数据包传递到了P2上,P2将顶层的标签进行交换,交换成201然后发给P1,P1查看自己的LFIB表,发现入站标签201对应的出站动作是PoP,于是他将顶层标签201弹出,然后把数据丢给PE1。这里其实是一个PHP机制。携带着VPN标签111的包到了PE1,它将VPN标签剥去,然后将IP包转给CE1。

大家有关MPLS的问题请直接在帖子下面留言吧~~~我们有专家团队在向您招手哦~~~别不好意思啦~~~


    关注 华为产品资料


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册