image.png

1. MPLS VPN 特征


  • P:ISP 骨干设备
  • PE:ISP 边缘设备,直接与 CE 设备相连
  • CE :用户边缘设备,不需要支持 MPLS 的设备
  • Site:通过 MPLS VPN 实现同一客户的不同站点或不同客户的站点之间互通
  • 外层标签是 PE-PE,内层标签是 VPNv4-VPNv4
  • 正确控制层面的结果:Site 之间得到远端的路由
  • 正确转发层面的结果:PE 设备之间可以通过 BGP 协议的完成更新源的双向标签转发
    • 到达 PE 的 BGP 更新源地址的路由不能汇总,否则会导致 MPLS LSP 断裂,造成 MPLS VPN 流量被丢弃
  • MPLS 部署过程
    • AS 域内 IGP
    • MPLS LDP
    • VRF(RD/RT)
    • MP-BGP(PE 之间的 VPNv4 邻居)
    • CE 与 PE 之间的双向重分布重分布
  • MPLS VPN 环境下的 BGP 框架设计(优化):使 PE 可以得到需要的 VPNv4 路由
    • VPNv4 RR
    • PE 设备的全互联
  • VPNv4 路由遵循 BGP 选路规则
  • PE 设备对于接收到的 VPNv4 路由处理方式
    • 检查下一跳是否可达,如果不可达则丢弃
    • 对于 RR 反射过来的 VPNv4 路由,如果 Cluster-List 包含自己的 Cluster-ID,则丢弃
    • 进行 BGP 的路由策略过滤,如果不不通过,则丢弃
  • MPLS VPN 是 Peer to Peer 的 L3 VPN技术,承载的是 IP
  • MPLS VPN 使用 BGP 在 ISP 骨干网上发布 VPN 路由,使用 MPLS 在 ISP 骨干网上转发 VPN 报文
  • 通过 MP-BGP 传递 CE 之间的私网路由,并且放入相应 PE 设备的 VRF 里
  • MPLS VPN 支持地址空间重叠、重叠 VPN、组网方式灵活、扩展性好
  • 当接收到 MP-BGP 分配的私网路由和标签,只有这个 BGP 路由下一跳的 LSP(指公网的 LDP)存在,这条路由才会有效,才会放入 VRF 的路由表里(华为)
  • 当收到的 BGP 路由是有标签的,会自动查找去往这个路由的下一跳是否有标签,如果有,则走标签转发,如果没有则走 IP 包转发(如果在 iBGP 中没有 RR 或联邦,会导致路由黑洞)

    首先 BGP 也可以为 IPV4 的路由分标签,只有 EBGP 可以直接迭代出这个标签,即去往这个路由打上 MPLS 标签!IBGP 是不可以的,原因是 IBGP 分配的标签,只有两端设备认识这个标签,如果 IP数据包打上这个标签,中间设备是不认识这个标签的,会丢弃,所以 IBGP 即使通过 BGP 分配了标签,也是走常规 IP 数据包转发,不会迭代 LSP,但是,如果去往这条路由的下一跳的 BGP 地址的是有 LSP 的,那么就可以迭代出 2 层标签,从而中间设备走标签不会有黑洞! IBGP 不配置 RR 或者联盟,中间是有路由黑洞的,所以通过 IBGP 传送某条路由的时候也可以分一个标签,一般 IBGP 是用 lookback 口建立的,所以只要 2个 IBGP 邻居的 lookbank 口有 LDP 分配的标签,那么这条路由就可以打 2 层标签走标签转发,从而解决 IBGP 的路由黑洞问题,底层是 IBGP 分配的标签,第二层就是去往对端 lookback 口的标签!这也是为什么华为 LDP 分配标签默认是有序的,且只为 32位路由分标签(因为 IBGP 通过 32位 lookback 口建立的,当然你也可以不用 lookback 口建立 IBGP,那么就会造成 BGP 分配的标签不能使用,因为无法迭代出下一跳的标签)

2. 基本概念


1)VRF(VPN Routing and Forwarding table)

VRF 是 32Byte 的地址空间

  • 实现 VPN 之间的 “路由” 和 “ARP表” 的隔离,在连接 Site 的接口和 VRF 绑定,用于承载 Site 的路由信息
  • VRF 包含了 “RD(必须)” 和 “RT(可选)” 的概念,并且需要有接口绑定到 VRF,才能正常工作
  • 一般在 PE 设备上存在多个路由表,包括 “Public 路由表” 和 “VPN 路由表”
    • Public 路由表是为了 LDP 和 BGP 邻居建立和承载互联网路由
    • VPN 路由表是为了与 Site 交互路由信息
  • 彼此之间拥有了 VRF 路由,但是无法通信则需要考虑转发表(FIB/LFIB)。关注 PE 上不同方向的到达 BGP 更新源地址的 LSP,否则 VPN 流量将会被丢弃

    2)RD(路由分隔符)

    RD 是 64Byte (必须指定,且不同 Site 需要唯一,最好是唯一的)

  • 用来区分不同 VPN 中的相同私网地址

  • RD 主要是为了在 PE 设备之间批量更新 VPNv4 路由时,使地址空间保持唯一性,规避在 PE 之间更新 VPNv4 路由时,可能存在或潜在的地址空间重叠。当不同的 VPN 用户使用相同的私有地址规划时就会出现路由查找问题

    3)RT(路由目标)

    Policy vpn-targte 表示 Import RT 值必须匹配 Export RT 值,才能接收路由(VPNv4 RR 可以关闭)

  • BGP 中的扩展团体属性,为了控制 VPNv4 路由的收发,可以有多个 RT 值

    • Import:收取匹配的 Export 属性的 VPNv4 路由,剥离 RT 值并放入VRF路由表
    • Export:出方向更新时携带的扩展团体属性

      4)VPNv4

      VPNv4 = RD + VRF。96位,是 BGP 中的一个地址簇

  • VPNv4 是承载所有 Site 的公有 VPNv4 路由信息地址簇,且不能产生路由,只能由 VRF 自动添加

  • VPNv4 把对应的内层标签、下一跳等信息批量更新给远端 PE
  • 当 VPNv4 中有多个 RD 值且下一跳地址相同,在设备中的 LSP 条目会变多

    5)MP-BGP

    MP-BGP 批量更新 VPNv4 的路由信息

  • VPNv4 RR 可以没有 VRF,也可以获取 VPNv4 路由

  • MP-BGP 会自动为每个 VPN 路由前缀分发内层标签,并关联出接口或 VRF。如果去往不同目的地, VPNv4 的下一跳相同,则外层标签相同(因为都是同一个更新源)
  • VPNv4 路由是通过 VPNv4 邻居在 MP-BGP 上批量更新到远端 PE 设备,其中包含了[更新源地址、下一跳、路由、标签和 RT 值]
  • P 设备是没有 Site 间的 VRF 路由的(没有控制层面,只有转发层面),因为 P 设备仅仅参与标签转发

    3. 域内 MPLS VPN


PE 上连接 CE 的路由如果使用 IGP 协议,那么需要在 BGP 和 IGP 的 VRF 进行双向重分布重分布

1)VRF 路由的静态方式

  • VRF 关联静态路由,使得 CE 有到达对应 Site 的路由路径
  • PE 重分布 VRF 静态路由到 MP-BGP 地址簇

    2)RIP 协议关联 VRF

  • 用路由策略防环

  • 关注度量值
  • 重分布需要进行双向重分布

    3)EIGRP 协议关联 VRF

    EIGRP 的 POI,是 BGP 的扩展团体属性,优于所有常规 BGP 选路原则,用于 BGP 最优路径选路。在配置 MPLS VPN 自动的增加在 VPNv4 路由中,Cost Community ID 以 129(EIGRP 外部路由) 或 128(EIGRP 内部路由) 出现。 128 > 129

  • 自治域号码才是 EIGRP 真正的 AS 号码

  • 重分布 MP-BGP 路由时,需要手工设置度量值
  • 在双出口(多归属)的环境下,极有可能出现路由环路
    • SoO 是扩展团体属性在双出口的情况下组织环路的机制,本质是不把接收到有相同 SoO 的路由再传回给 Site
    • 唯一的 SoO 值必须为每个 VPN Site 配置,该值应用在 PE-CE 连接的接口下,通过 route-map 部署

image.png

4)ISIS 协议关联 VRF

ISIS 在 VRF 下引入 MP-BGP 路由,会将这条路由的 Up/Down-bit = 1,另一条链路的 PE 设备的 VRF 接受到 Up/Down-bit = 1 的 ISIS 路由,会进行路由计算,但是不会被引入到 MP-BGP(ISIS Up/Down 的防环)。但是 ISIS 的优先级是15 小于 MP-BGP 引入的 255,所以双点引入,有一跳链路的 MP-BGP 路由不是最优的,不会放入 VRF 路由表,需要在双点 PE 设备的 VRF 下都修改 MP-BGP 的优先级小于 ISIS,才能做到双点引入,且避免了次优路径

  • 将其他协议重分布到 ISIS,默认只会重分布到 Level-2。如果 CE 端为 Level-1 区域,需要增加参数
  • Up/Down-bit 防环:防止在不同的 ISIS 级别做重分布时产生环路或次优路径
    • Up/Down =0:路由起源自 Level-1,重分布到了 Level-2
    • Up/Down =1:路由是从 level-2 重分布到 Level-1
  • 默认情况下,Level-2 可以学习到 Level-1 的路由,LSP 中包含的 Up/Down-bit = Up(表明 Level-2 学习到 Level-1 的路由)
  • 默认情况下,Level-1 默认学不到 Level-2 的路由,需要路由泄露。路由从 Level-2 泄露到 Level-1 时,Up/Down-bit = Down
  • 在多归属环境的 MPLS VPN 中,从高层(MPLS 骨干网)重分布路由到底层(CE 端)时,设置 Up/Down =1。从底层到高层时,其他 CE 端查看到 Up/Down-bit =1 就不会在重分布回高层

    5)OSPF 协议关联 VRF

    VRF 的 OSPF 进程 ID 与 Public 的进程 ID 不可以相同

① OSPF Super Area 0

  • 在 MPLS 域中运行 OSPF协议,此时 PE 设备是一个 ABR/ASBR
  • OSPF 重分布 MP-BGP 的路由,会以 LSA Type 3/5 的形式进入其他区域(默认情况下不同 Site 之间采用相同 OSPF 进程 ID 的路由,以区域间(OIA)的路由形式体现)
  • BGP 的扩展属性被用于承载或通告 OSPF 的路由类型,OSPF 的 Cost 会被拷贝到 MED 属性

    ② Domain ID

  • 只有在 PE 设备上有了 VRF 才会有域标识符的概念,用来标识和区分不同域(理解为不同的 OSPF 进程,默认就是 OSPF 进程 ID)

  • 本端 OSPF 域和 MPLS VPN 远端的 OSPF 域相同,则相互发布的是 LSA Type 3,如果不同则发布的是 LSA Type 5(华为默认为 Null)

    ③ LSA Type 3 防环

    MP-BGP 路由重分布到 OSPF 时自动会增加 Down-bit,会在区域内保留。其他 PE 检测到 Down-bit,就会拒绝把 OSPF 在引入回 BGP

image.pngimage.png

④ LSA Type 5/7 防环

MP-BGP 路由重分布外部路由到 OSPF 时自动会增加 Tag,不同 OSPF 域之间的路由,通过携带 Tag(BGP 的 AS Number)使 PE 如果检测到 LSA Type 5/7 带 Tag 就0拒绝重分布

  • 华为设备中,远端 PE 和 Site 之间的直连,默认就是外部路由

image.png

⑤ Shamlink还原LSA

还原 MPLS 环境下的 OSPF LSA,可以在区域内或区域间使用

  • OSPF 选路的比较只有在同类型的 LSA 才有可比性(都是域内、域间、OE1、OE2),都是同一级别才比较 Cost 值
  • 必须是 32/ 的环回接口,并且要绑定 VRF 和通告到 VPNv4 中

    6)BGP 协议关联 VRF

  • 多 Site 之间使用相同的 AS Number,两端 Site 无法收到对端路由

    • 在 PE 的 VRF 上替换 Site 的 AS Number(主动方案)
    • 在 Site 端允许接收重复 AS Number(被动方案)
  • SoO 防环(DV 协议才有的特性)
    • CE 发往 PE 的 VPN 路由可能经过骨干网又回到了 CE,就会引发 VPN 站点内路由的环路
    • SoO 会为路由添加 SoO 属性并传递给其他 PE。其他 PE 向 CE 发布路由时候会检查 VPN 路由协议的 SoO 属性,如果与本地配置的 SoO 属性相同,PE 就不会向 CE 传递(在 PE 传递路由给 CE 的时候,检查出接口配置的 SOO 值是否与从其他 MP-BGP 邻居收到的 VPNv4 路由的 SOO 值一致,如果一致,就不传给 CE)

image.png

7)MCE/VRF-Lite(Multi-VPN-Instance CE)

MCE 在 VRF 中只需要 RT,不需要 RT(因为没有 BGP)

  • VRF 不是专门用于 PE 设备,CE 端也可以使用 VRF,目的是在本地隔离路由。如果 VRF 在 CE 端一侧(没有 MPLS、MP-BGP),此时就叫做 MCE/VRF-Lite
  • OSPF 协议中需要在 MCE 上开启 “不检测 VPN 环路”,否则只有 LSDB,没有路由表

    8)MPLS MTU

  • 默认情况采用接口的 MTU 值,如果配置了接口 MPLS MTU 值,则与接口的 MTU 值比较,采用两者中较小的值作为实际生效的 MTU 值

  • 在入口 PE 就根据 LDP MTU 来决定 MPLS 转发报文的大小,避免入口报文过大,导致 P 设备无法转发

    4. Hub & Spoke MPLS


  • 分支互访需要经过总部(流量监控)。本质是对 RT 的控制
  • 在分部的 PE 上有一个 VRF,收发的 RT 值不同;在总部的 PE 上有两个 VRF,一个用于收取来自分部 CE 的路由,一个用于把路由更新给 CE

    5. 域间 MPLS VPN


整体还是 MPLS 去转发数据,只是分配标签的协议和方式发生了变化,除了 OptionA 在不同 AS 之间采用的是 IP 转发

1)Option A

ASBR(没有VRF)/ASBR-PE(有VRF)

image.png

  • 适合在跨域的 VPN 数量比较少的情况下使用,OptionA 也称为 VRF-to-VRF
  • 需要在 PE 和 ASBR-PE 分别配置 VRF,ASBR 之间采用 IGP、BGP、或静态来交互 VPN 信息(建议使用 EBGP)
    • PE VRF 用于接入 Site
    • ASBR VRF 用于接入对端的 ASBR(把对端的 ASBR 当成 CE),这样 ASBR 之间就不需要运行 MPLS
  • 同一 AS 内 ASBR 和 PE 之间的 VRF RT 值需要匹配,不同 AS 之间 PE 的 VRF RT 值不需要匹配
  • ASBR 之间运行 OSPF 的注意事项
    • 对 OSPF LSA Type 3 中,OSPF 重分布 MP-BGP 的路由会携带 Down-bit,OSPF 不会把 Down-bit 置位的路由装载到路由表,会导致不能在引入到 BGP
      • 需要看情况关闭 Down-bit summary 环路检测
      • 需要看情况关闭 Down-bit ase 环路检测
      • 需要看情况关闭 Down-bit nssa 环路检测
    • ASBR 之间一般会使用子接口方式,每个子接口绑定一个 VRF
    • ASBR 实施 VRF 其实就类似 MCE 技术
  • Option A 的优缺点

    • 配置简单
    • 扩展性差,ASBR 需要为每个 VPN 创建 VRF 并管理所有 VPN 路由(会导致 ASBR VPNv4 路由数量过大)
    • ASBR 之间是普通的 IP 转发,如果跨越多个 AS,中间 AS 必须支持 VPN 业务,对中间 AS 影响大

      ① 控制平面

      image.png
  • 在 AS100 中,通过运行 LDP 协议,PE1 分配一个与去往 PE1 的路由相关联的隧道标签(外层标签)T1 给 P1

  • 在 AS100 中,通过运行 LDP 协议,P1 分配一个与去往 PE1 的路由相关联的隧道标签(外层标签)T2 给 ASBR-PE1
  • 在 AS200 中,通过运行 LDP 协议,ASBR-PE2 分配一个与去往 ASBR-PE2 的路由相关联的隧道标签(外层标签)T3 给 P2
  • 在 AS200 中,通过运行 LDP 协议,P2 分配一个与去往 ASBR-PE2 的路由相关联的隧道标签(外层标签)T4 给 PE2
  • CE1 通告路由 Client1 给 PE1,路由的下一跳为 CE1 的接口地址。
  • PE1 将IPv4路由 Client1 通过 MP-BGP 重发布为 VPNv4 路由,并且下一跳改为 PE1,分配一个VPN标签 V1,然后通告给 ASBR-PE1
  • ASBR-PE1 将 VPNv4 路由变为 IPv4 路由,把 IPv4 路由 Client1 通告给 ASBR-PE2,并且下一跳指向 ASBR-PE1
  • ASBR-PE2 将 IPv4 路由 Client1 通过 MP-BGP 重发布为 VPNv4 路由,并且下一跳为 ASBR-PE2,为该路由分配一个 VPN 标签 V2,将其通告给 PE2
  • PE2 将 VPNv4 路由转变为 IPv4 路由 Client1,把路由 Client1 通告给 CE2,并且下一跳指向 PE2

    ② 转发平面

    image.png

  • CE2 发送一个目的地为 Client1 的 IP 报文给 PE2

  • PE2 收到 IP 报文后进行 MPLS 标签的封装,先封装 VPN 标签 V2,再封装外层标签 T4,然后将此报文发送给 P2
  • P2 进行标签交换,把外层标签 T4 换成 T3,然后将此报文发送给 ASBR-PE2
  • ASBR-PE2 去掉所有标签,将报文(普通IP报文)转发给 ASBR-PE1
  • ASBR-PE1 收到 IP 报文后进行 MPLS 标签的封装,先封装 VPN 标签 V1,再封装外层标签 T2,然后将此报文发送给 P1
  • P1 进行标签交换,把外层标签 T2 换成 T1,然后将此报文发送给 PE1
  • PE1 收到后去掉所有标签,将报文(普通IP报文)转发给 CE1

    2)Option B

    ASBR 间通过 MP-EBGP 发布标签 VPN4 路由,也称为 EBGP redistribution of labeled VPN-IPv4 routes

image.png

  • ASBR 既参与转发平面也参与控制平面。所有流量都经过 ASBR 转发,流量有可控性,但 ASBR 负担重
  • VPNv4 的下一跳变化,Label 也会随着变化(VPNv4 路由的下一跳如果发生变化,那么去往 BGP 下一跳的外层标签也随着发生变化;VPNv4 标签的分配者发生了变化,内层标签也随着变化)
  • ASBR 之间通过 MP-BGP 交换从各自 PE 设备接收 VPNv4 路由,ASBR 不需要运行 VRF
  • ASBR 接收 AS 内或 AS 外的所有 VPNv4 路由(不管本地是否有匹配的 VRF,也可以进行控制,仅仅接收需要的 VRF)
  • ASBR 对 VPNv4 路由进行内层标签交换,域间的标签由 BGP 分发,所以 ASBR 之间不需要运行 LDP/RSVP
  • ASBR 的标签行为在华为设备上定义为 Swap & Push

    ① 没有 RR 场景的控制平面

    image.png

  • 在 AS100 中,通过运行 LDP 协议,PE1 分配一个与去往 PE1 的路由相关联的隧道标签(外层标签)T1 给 P1

  • 在 AS100 中,通过运行 LDP 协议,P1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T2 给 ASBR-PE1
  • 在 AS200 中,通过运行 LDP 协议,ASBR-PE2 分配一个与去往 ASBR-PE2 的路由相关联的隧道标签(外层标签)T3 给 P2
  • 在 AS200 中,通过运行 LDP 协议,P2 分配一个与去往 ASBR-PE2 的路由相关联的隧道标签(外层标签)T4 给 PE2
  • CE1 通告路由 Client1 给 PE1,路由的下一跳为 CE1 的接口地址
  • PE1 将 IPv4 路由 Client1 通过 MP-IBGP 重发布为 VPNv4 路由,并且下一跳改为 PE1,分配一个 VPN 标签 V1,然后通告给 ASBR-PE1
  • ASBR-PE1 通过 MP-EBGP 将 Client1 的 VPNv4 路由通告给 ASBR-PE2,将下一跳改为 ASBR-PE1,并重新分配一个VPN标签 V2
  • ASBR-PE2 将收到的 Client1 的 VPNv4 路由通过 MP-IBGP 通告给 PE2,将下一跳指向自己,并重新分配一个 VPN 标签 V3
  • PE2 将 Client1 的 VPNv4 路由变为 IPv4 路由,把路由 Client1 通告给 CE2,并且下一跳改为 PE2

    ② 有 RR 场景的控制平面

    RR只负责控制平面的VPNv4路由传递,数据转发时,流量不经过RR

image.png

③ 转发平面

image.png

  • CE2 发送一个目的地为 Client1 的 IP 报文给 PE2
  • PE2 收到 IP 报文后进行 MPLS 标签的封装,先封装 VPN 标签 V3,再封装外层标签 T4,然后将此报文发送给 P2
  • P2 进行标签交换,把外层标签 T4 换成 T3,然后将此报文发送给 ASBR-PE2
  • ASBR-PE2 去掉外层标签,将 VPN 标签 V3 交换为 V2,再将其转发给 ASBR-PE1(此时报文仅带有一层私网标签)
  • ASBR-PE 交换 VPN 标签 V2 成 V1,再加一个外层标签 T2,并将报文转发给 P1
  • P1 进行标签交换,把外层标签 T2 换成 T1,然后将此报文发送给 PE1
  • PE1 收到后去掉所有标签,将报文(普通IP报文)转发给 CE1

    ④ 实施步骤

  • 域内

    • 域内 IGP
    • 域内 LDP
    • Site VRF
    • VRF RT 匹配
    • 路由协议下的 VRF 相互引入
  • 域间
    • ASBR 不需要 VRF
    • ASBR 为了收取 VPNv4 路由,需要关闭RT匹配策略 undo policy vpn-target
    • ASBR 之间接口启动 MPLS(华为的弊端,转发层面问题)

      3)Option C

      让 ASBR 仅仅参与转发层面而不再参与控制层面(没有 VPNv4 路由),PE 或 RR 间通过 Multi-Hop MP-EBGP 发布标签 VPN4 路由,也称为 Multihop EBGP redistribution of labeled VPN-IPv4 routes

image.png

  • Option B 中 ASBR 需要交换大量的 VPNv4 路由,可能会阻碍网络转发或扩展。而 Option C 中 ASBR 不维护或发布 VPNv4 路由,PE之间直接交换 VPNv4 路由(ASBR 只作控制层面,转发层面直接由 PE—-PE)
  • Multi-Hop MP-EBGP 会话可以建立在不同的 AS 的 VPN RR 之间,本 AS 内的 PE 只需要与 RR 建立 MP-IBG P即可。VPN RR 通告 VPNv4 路由时不改变下一跳信息,进而当对端 PE 转发流量时,可以迭代至正确的隧道
  • Option C1 中:ASBR 在收到对端 ASBR 发来的 BGP 标签路由后,需要配置策略产生新的标签传递给 AS 内的 PE 或 RR 设备,从而建立一条完整的 BGP LSP
  • Option C2 中:ASBR 在收到对端 ASBR 发来的 BGP 标签路由后,ASBR 把从 BGP 学到的路由 引入 IGP 中,通过 IGP 触发 LDP 协议,从而建立一条完整的 LDP LSP
  • ASBR 上不保存 VPNv4 路由,相互之间也不通告 VPNv4 路由,ASBR 只需要维护所有去往 PE 的带标签路由,并通过 EBGP 通告给对端 ASBR
  • 对端 ASBR 收到带 BGP 标签路由后,MPLS LDP 会触发为该 BGP 标签路由产生标签,并在 AS 内的 LDP 邻居间传递。因此,在 PE 上可以看到去往对端 PE 的 LDP LSP

    ① OPtion C1 控制平面

    image.png

  • 在 AS100 中,通过运行 LDP 协议,PE1 分配一个与去往 PE1 的路由相关联的隧道标签(外层标签)T1 给 P1

  • 在 AS100 中,通过运行 LDP 协议,P1 分配一个与去往 PE1 的路由相关联的隧道标签(外层标签)T2 给 ASBR1
  • 在 AS200 中,通过运行 LDP 协议,ASBR2 分配一个与去往 ASBR2 的路由相关联的隧道标签(外层标签)T3 给 P2
  • 在 AS200 中,通过运行 LDP 协议,P2 分配一个与去往 ASBR2 的路由相关联的隧道标签(外层标签)T4 给 PE2
  • ASBR1 通过 EBGP 会话通告一条去往 PE1 的带标签的 IPv4 路由给 ASBR2,其中下一跳为 ASBR1,标签为 BGP 标签,值为 B1
  • ASBR2 为这条 BGP 标签路由触发建立 LSP,分发 LDP 标签 T5 至 P2,P2 进而分发 T6 至 PE2
  • PE1 与 PE2 建立起 MP-EBGP 会话
  • CE1 通告路由 Client1 给 PE1,路由的下一跳为 CE1 的接口地址
  • PE1 将 IPv4 路由 Client1 通过 MP-EBGP 重发布为 VPNv4 路由,并且下一跳改为 PE1,分配一个 VPN 标签 V1,将其通告给 PE2
  • PE2 将 VPNv4 路由变为 IPv4 路由,把 IPv4 路由 Client1 通告给 CE2,并且下一跳改为 PE2

    ② OPtion C1 转发平面

    image.png

  • CE2 发送一个目的地为Client1 的IP 报文给 PE2

  • PE2 收到IP报文后进行MPLS 标签的封装,先封装VPN 标签 V1,由于去往Client1 的下一跳PE1不是直连邻居,通过查表发现去往PE1的标签为T6,打上T6
  • P2 进行标签交换,把外层标签T6 换成 T5,然后将此报文发送给ASBR2
  • ASBR2 去掉外层标签,将T5 交换为 B1,再将其转发给ASBR1
  • 当ASBR1收到报文后,发现B1 是它分配的,所以去掉B1 进一步查表转发,发现此时去往PE1 的路由有一个关联的标签T2,因此,ASBR1将其加在栈顶,并转发给P1
  • P1 进行标签交换,把外层标签T2 换成 T1,然后将此报文发送给PE1
  • PE1 收到后去掉所有标签,将报文(普通IP报文)转发给CE1

    ③ OPtion C1 实施步骤

    Option C1 采用 BGP ipv4 进行标签分发

  • 控制层面

    • 域内 IGP
    • 域内 MPLS LDP
    • 域内VPNv4(需要注意 RR 需要是 IPv4 和 VPNv4,优化时 ipv4 的 RR 就有意义了,同时 RR 需要接收所有的 RT)
    • 域间 RR 之间只需要建立 VPNv4 邻居关系(华为自身引入更新源地址无效,注意多跳),需要关闭 IPv4 邻居关系,否则会引起路由震荡
    • PE 需要双向引入,使得自身和对端能收到 VRF 的路由
  • 转发层面
    • RR、PE、ASBR 之间需要增加为 BGP IPv4 单播分配标签能力(PE 设备只需要对 RR 增加,RR 需要为所有邻居增加,ASBR 需要为 ASBR 和 RR 增加)label-route-capability
    • ASBR 需要为 eBGP 对端 ASBR 应用分配标签的路由策略(华为)
    • 华为需要在 eBGP 互连的接口开启 MPLS 功能(开启标签转发能力)
    • ASBR 需要为 RR(内部设备)实施继续使用 eBGP 的标签的路由策略
  • 流量路径优化(转发路径不是最优的)
    • RR 需要在 VPNv4 下针对 PE 和对端 RR 做不修改下一跳地址,因为是 RR 之间互交互 VRF,所以在 RR 上配置(会导致因为下一跳不可达造成路由失效)
    • 解决下一跳不可达的问题,需要在 ASBR 上引入 VRF 下一跳的地址
    • 因为是 ASBR 在 EBGP 引入的 VRF 下一跳地址,根据 iBGP 防环原则(水平分割),PE 设备不会得到下一跳的路由,需要开启 IPv4 RR(这个就是最开始域内 IPv4 RR 的意义)或全互联
  • 观察标签的情况(看下一跳地址就可以确定)

    • 底层标签是 RR 为 PE 分配的目的业务网段 BGP 标签(PE 分配的 VPNv4)
    • 中间一层是 RR 为 PE 分配的到达对端 PE 的 BGP 标签(PE—-PE)
    • 顶层标签是 RR 为 PE 分配的到达 ASBR 的 LDP 标签(PE—-ASBR)

      ④ OPtion C2 有 RR 场景的控制平面

      image.png
  • LDP 为 IGP(BGP 标签路由引入 IGP)分发标签

  • ASBR 开启 LDP 为 BGP 单播标签路由分配标签能力
  • Option C2 都是两层标签
  • 控制层面相对比 Option C1 没有什么变化
  • 在 VPNv4 RR设备上建立 eBGP 邻居

    ⑤ OPtion C2 实施步骤

    采用 LDP 为 IGP 分发标签

  • 控制层面(控制层面相比 Option C1 没有变化)

    • 域内 IGP
    • 域内 MPLS LDP
    • 域内VPNv4(需要注意 RR 需要是 IPv4 和 VPNv4,优化时 ipv4 的 RR 就有意义了,同时 RR 需要接收所有的 RT)
    • 域间 RR 之间只需要建立 VPNv4 邻居关系(华为自身引入更新源地址无效,注意多跳),需要关闭 IPv4 邻居关系,否则会引起路由震荡
    • PE 需要双向引入,使得自身和对端能收到 VRF 的路由
  • 转发层面(相比 Option C1,不需要在 ASBR 和 RR 开启向 AS 内的 BGP ipv4 标签)
    • ASBR 之间需要增加为 BGP IPv4 单播分配标签能力 label-route-capability
    • ASBR 需要为 eBGP 对端 ASBR 应用分配标签的路由策略(华为)
    • 华为需要在 eBGP 互连的接口开启 MPLS 功能(开启标签转发能力)
    • 将 BGP 引入 OSPF,让 LDP 协议为 IGP 协议分发标签
    • ASBR 开启 LDP 为 BGP 分发标签的能力 lsp-trigger bgp-label-route
  • Option C2 只有 2 层标签