MPLS virtual private network路由信息的发布过程

三个部分:

  1. 源端CE把普通IPv4路由发布到直连的PE上,然后转换成VPN-IPv4的路由。
  2. 源端PE把VPN-IPv4路由发布到目的端PE上,以使MPLS隧道两端的PE相互学习对端的私网路由。
  3. 目的端PE把所学习的源端VPN-IPv4路由转换成普通的IPv4路由发布到直连的CE上,使MPLS隧道两端的Site间相互学习对方的私密路由。

在这里插入图片描述
第一步和第三步是在CE与PE间建立动态路由邻居关系如OSPF,RIP或者静态路由或者建立EBGP邻居关系传递。我们这里主要是讨论第2步,PE间VPNv4路由发布的原理。

四个步骤:

一.私网标签分配:
在BGP/MPLS IP VPN中,PE通过MP-BGP发布私网路由给骨干网的其他相关的PE前,需要为私网路由分配VPN标签(私网标签)。当数据包在骨干网传输时,携带私网标签。

PE上分配私网标签的方法有如下两种:

基于路由的VPN标签分配:为VPN路由表的每一条路由分配一个标签。这种方式的缺点是:当路由数量比较多时,设备入标签映射表ILM(Incoming Label Map)需要维护的表项也会增多,从而提高了对设备容量的要求。

基于VPN实例的VPN标签分配:为整个VPN实例分配一个标签,该VPN实例里的所有路由都共享一个标签。使用这种分配方法的好处是节约了标签。MP-BGP为私网路由分配标签的前提是PE上使能MPLS功能。
在这里插入图片描述

二.私网路由交叉:
两台PE之间通过MP-BGP传播的路由是VPNv4路由。当接收到VPNv4路由,PE先进行如下处理:

检查其下一跳是否可达。如果下一跳不可达,该路由被丢弃。对于RR发送过来的VPNv4路由,如果收到的路由中cluster_list包含自己的cluster_id,则丢弃这条路由。

进行BGP的路由策略过滤,如果不通过,则丢弃该路由。之后,PE把没有丢弃的路由与本地的各个VPN实例的Import Target属性匹配。VPNv4路由与本地VPN实例的Import VPN-Target进行匹配的过程称为私网路由交叉。

PE上有种特殊的路由,即来自本地CE的属于不同VPN的路由。对于这种路由,如果其下一跳直接可达或可迭代成功,PE也将其与本地的其他VPN实例的Import Target属性匹配,该过程称为本地交叉。例如:CE1所在的Site属于VPN1,CE2所在的Site属于VPN2,且CE1和CE2同时接入PE1。当PE1收到来自CE1的VPN1的路由时,也会与VPN2对应的VPN实例的Import Target属性匹配。

VPNv4路由抓包:
在这里插入图片描述

三.公网隧道迭代:
为了将私网流量通过公网传递到另一端,需要有一条公网隧道承载这个私网流量。因此私网路由交叉完成后,需要根据目的IPv4前缀进行路由迭代,查找合适的隧道(本地交叉的路由除外);只有隧道迭代成功,该路由才被放入对应的VPN实例路由表。将路由迭代到相应的隧道的过程叫做隧道迭代。

隧道迭代成功后,保留该隧道的标识符(Tunnel ID),供后续转发报文时使用。Tunnel ID用于唯一标识一条隧道。VPN报文转发时根据Tunnel ID查找对应的隧道,然后从隧道上发送出去。

四.私网路由的选择规则:
经过路由交叉和隧道迭代的路由并不是全部被放入VPN实例路由表。从本地CE收到的路由和本地交叉路由也不是全部被放入VPN实例路由表。

对于到同一目的地址的多条路由,如果不进行路由的负载分担,按如下规则选择其中的一条:

  1. 同时存在直接从CE收到的路由和交叉成功后的同一目的地址路由,则优选从CE收到的路由。

  2. 同时存在本地交叉路由和从其他PE接收并交叉成功后的同一目的地址路由,则优选本地交叉路由。

对于到同一目的地址的多条路由,如果进行路由的负载分担,则:

  1. 优先选择从本地CE收到的路由。只有一条从本地CE收到的路由而有多条交叉路由的情况下,也只选择从本地CE收到的路由。

  2. 只在从本地CE收到的路由之间分担或只在交叉路由之间分担,不会在本地CE收到的路由和交叉路由之间分担。

  3. 负载分担的AS_PATH属性必须完全相同。

路由发布实例:

以下图为(PE-CE之间使用BGP,公网隧道为LSP)为例,说明将CE2的一条路由发送到CE1的过程。

在这里插入图片描述

  1. 在CE2的BGP IPv4单播地址族下引入IGP(Interior Gateway Protocol)路由。
  2. CE2将该路由随EBGP的Update消息一起发布给Egress PE。Egress PE从连接CE2的接口收到Update消息,把该路由转化为VPN IPv4路由,加入对应的VPN实例路由表。
  3. Egress PE为该路由分配VPN标签,并将标签和VPN IPv4路由信息加入MP-IBGP的Update消息中的NLRI字段中,Export-RT属性加入MP-BGP Update消息的扩展团体属性字段中,将Update消息发送给Ingress PE。
  4. Ingress PE对该路由进行路由交叉。交叉成功则根据路由目的IPv4地址进行隧道迭代,查找合适的隧道。如果迭代成功,则保留该隧道的Tunnel ID和标签,并将路由加入该VPN实例路由表。
  5. Ingress PE把该路由通过BGP Update消息发布给CE1。此时路由是普通IPv4路由。
  6. CE1收到该路由后,把该路由加入BGP路由表。通过在IGP中引入BGP路由的方法可使CE1把该路由加入IGP路由表。

上面过程只是将CE2的路由发布给CE1。要实现CE1与CE2的互通,还需要将CE1的路由发布给CE2,其过程与上面的步骤类似,此处不再复述。

整理资料来源:《华为hedex文档》

猜你喜欢

转载自blog.csdn.net/tushanpeipei/article/details/113031485