目录

简介

背景信息

MLDP信令

带内信令

重叠或带外信令

标签分发协议(LDP)类型通配符转发等价类(FEC)# RFC5918

拓扑

重叠信令

配置

验证

如何构建控制平面？

P2MP MLDP

结论

相关信息

简介

本文档介绍带内信令VRF MLDP，它是下一代VPN组播(mVPN)的配置文件6。 它使用Cisco IOS中的示例和实施来说明该行为。

背景信息

组播标签分发协议(MLDP)带内信令，使MLDP核心能够创建(S，G)或(*,G)状态，而无需使用带外信令，如边界网关协议(BGP)或协议无关组播(PIM)。

支持MLDP的组播VPN(MVPN)允许VPN组播流通过VPN特定树进行聚合。

MLDP核心中未创建客户状态，默认和数据组播分布树(MDT)只有该状态。

在某些情况下，为VPN流创建的状态是有限的，似乎不是风险或限制因素。在这些场景中，MLDP可以构建带内MDT，这些MDT是中转标签交换路径(LSP)。

VPN空间中使用的树是MDT。全局表中使用的树是中转点对多点(P2MP)或多点对多点(MP2MP)LSP。

在这两种情况下，单个组播流（VPN或不）与MPLS核心中的单个LSP关联。流信息在LSP的转发等价类(FEC)中编码。这是带内信令。

LSM与当前用于在核心中传输客户流量的GRE核心隧道相比，具有优势。它利用MPLS基础设施来传输IP组播数据包，为单播和组播提供通用数据平面。

MLDP信令

MLDP信令提供两种功能：

- 发现MP LSP的FEC（及其关联的不透明值）

- 向MP LSP分配组播流

带内信令

- 不透明值用于将MP LSP映射到IP组播流。

- 不透明值的内容从组播流导出。

重叠或带外信令

- 使用重叠协议将MP LSP映射到IP组播流。

- 不透明值可由入口根PE分配或静态配置。

- MP LSP是按需创建的，也可以预配置。

- 允许将组播流聚合到单个MP LSP。

标签分发协议(LDP)类型通配符转发等价类(FEC)# RFC5918

类型通配符FEC元素是指满足约束的指定类型的所有FEC。  它指定“FEC元素类型”和可选约束，用于提供其他信息。

类型化通配符FEC元素的格式为：

键入的通配符：一个二进制八位数的FEC元素类型(0x05)。

LDP [RFC5036]为转发等价类(FEC)分配标签。  LDP在LDP消息中使用FEC TLV指定FEC。

LDP FEC TLV包括一个或多个FEC元素。  FEC元素包括FEC类型和可选类型相关值。

RFC 5036指定了两种FEC类型（前缀和通配符），其他文档指定了其他FEC类型；例如，请参阅[RFC4447]和[MLDP]。

如RFC 5036所指定，通配符FEC元素是指与可选约束相关的所有FEC。

RFC 5036指定的唯一约束是将通配符FEC元素的范围限制为“绑定到给定标签的所有FEC”。

通配符FEC元素的RFC 5036规范有以下不足，限制了其实用性：

- 通配符FEC元素是未键入的。  在某些情况下，能够引用给定类型的所有FEC（作为另一限制条件）会很有用。

- 通配符FEC元素的使用仅限于标签撤消和标签释放消息。  在某些情况下，在标签请求消息中使用带类型约束的通配符FEC元素会很有用。

拓扑

重叠信令

配置

步骤1.在核心节点中启用MPLS MLDP。

# mpls mldp logging

步骤2.在核心中启用MLDP带内信令。

在PE1、PE2和PE3上

# ip multicast vrf inband-MLDP mpls mldp

# ip pim vrf inband-MLDP mpls source loopback 0

步骤3.在所有CE接口和PE VRF接口中启用PIM SM。

在CE1、CE2、CE3和所有VRF接口PE1、PE2和PE3上

# interface x/x

# ip pim sparse-mode

# interface loopback x/x

# ip pim sparse-mode

注意：仅在面向CE的提供商边缘路由器接口上启用PIM模式；在核心中不需要。

步骤4.在VRF中启用组播。

在PE1、PE2和PE3上

# ip multicast-routing vrf inband-MLDP

步骤5.在PE路由器的PE-CE接口x/x上启用VRF。

# interface x/x

# ip vrf forwarding inband-MLDP

步骤6.在CE和PE节点中配置模式SSM（仅VRF）。

在CE节点上

# ip pim ssm default

在VRF下的PE1、PE2、PE3上

# ip pim vrf inband-MLDP ssm default

步骤7.配置IGMP组SSM 232.1.1.1（接收器）。

在接收器2和3上

CE #interface x/x

# ip pim join-group 232.1.1.1 source 10.1.0.2

验证

IGP、MPLS LDP、BGP在我们的网络端到端中运行正常。

在本节中，将完成验证以检查核心/聚合网络中的VPN AF邻接关系。在CE-PE之间检查邻接关系，并且控制平面与MPLS网络上VPN流量的数据平面一起检查。

要验证本地和远程客户边缘(CE)设备能够跨多协议标签交换(MPLS)核心通信，请执行以下任务：

任务 1：验证物理连接.

- 验证所有连接的接口都是UP。

任务 2：检验BGP地址系列VPNv4单播。

- 验证AF VPNv4单播和BGP邻居处于UP状态的所有路由器中是否启用了BGP。

- 验证BGP VPNv4单播表具有所有客户前缀。

任务 3：检验端到端组播流量。

- 检查与所连接的PIM邻居的PIM邻居关系。

- 验证组播状态是在VRF中创建的。

关于PE1、PE2和PE3上PE VRF mRIB条目

- 验证VRF(S， G)mFIB条目，数据包在软件转发中递增。

- 检验从CE到CE的ICMP数据包是否到达。

任务 4：检验MPLS核心。

- 检验MPLS LSP核心。

- 根据设计验证核心内的MPLS转发。

- 检验MPLS P2MP LSP ping工作。

如何构建控制平面？

验证当PE路由器根据IP报头转发时发生标签实施的控制平面，并在进入MPLS网络时向数据包添加MPLS标签。

在标签实施方向，路由器基于CEF表查找来交换数据包以查找下一跳，并添加存储在FIB中的适当标签信息以用于目的地。当路由器在MPLS数据包的核心层执行标签交换时，路由器会执行MPLS表查找。路由器从CEF表和标签信息库(LIB)中的信息中导出此MPLS表(LFIB)。

当PE路由器收到MPLS数据包，根据MPLS标签做出转发决策，删除标签，并发送IP数据包时，会发生标签处置。PE路由器使用LFIB来确定数据包在此方向上的路径。如前所述，特殊的iBGP会话有助于在PE路由器之间通告VPNv4前缀及其标签。在通告PE时，BGP为本地获取的VPN前缀分配标签，并将其安装到LFIB（即MPLS转发表）中。

步骤1.在核心中配置MLDP后，这些消息会交换。

MLDP: P2MP Wildcard label request sent to 11.11.11.11:0 success

MLDP: MP2MP Wildcard label request sent to 11.11.11.11:0 success

MLDP-MFI: Enabled MLDP MFI client on Lspvif0; status =  ok

LDP Peer 11.11.11.11:0 re-announced

MLDP-NBR: 11.11.11.11:0 UP sess_hndl: 1, (old ID: 0.0.0.0:0)

mLDP-RW: Sending RW notification message to process: mLDP Process

mLDP-RW: RW Tracking started for: 11.11.11.11

MLDP-LDP: [id 0] Wildcard label request from: 11.11.11.11:0 label: 0 root: 6.2.0.0 Opaque_len: 0 sess_hndl: 0x1

MLDP-LDP: [id 0] Wildcard label request from: 11.11.11.11:0 label: 0 root: 8.2.0.0 Opaque_len: 0 sess_hndl: 0x1

Neighbor 11.11.11.11 request for the label request to PE1.

使用此调试检查以前的建立：

debug mpls mldp all

注意：通过重播其标签数据库以查找前缀，响应从对等体收到的键入的通配符标签请求。使用指向对等体的键入的通配符标签请求来请求对等体标签数据库的前缀重放。

步骤2.在VRF中启用带内信令。

PE1 # Config t

# ip pim vrf MLDP-INBAND mpls source loopback 0

# ip multicast vrf MLDP-INBAND mpls mldp

MLDP: Enabled IPv4 on Lspvif0 unnumbered with Loopback0

MLDP-MFI: Enable lsd on int failed; not registered;

MLDP: Enable pim on lsp vif: Lspvif0

MLDP: Add success lsp vif: Lspvif0 address: 0.0.0.0 application: MLDP vrf_id: 1

MLDP-DB: Replaying database events for opaque type value: 250

%LINEPROTO-5-UPDOWN: Line protocol on Interface Lspvif0, changed state to up

PIM(1): Check DR after interface: Lspvif0 came up!

PIM(1): Changing DR for Lspvif0, from 0.0.0.0 to 1.1.1.1 (this system)

%PIM-5-DRCHG: VRF MLDP-INBAND: DR change from neighbor 0.0.0.0 to 1.1.1.1 on interface Lspvif0

Use this Debug to check the preceding establishment

# debug ip pim vrf LDP-INBAND6

PE1#sh interfaces lspvif 0

Lspvif0 is up, line protocol is up

Hardware is

Interface is unnumbered. Using address of Loopback0 (1.1.1.1)

MTU 17940 bytes, BW 8000000 Kbit/sec, DLY 5000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation LOOPBACK, loopback not set

注意：MPLS MLDP尚未创建，因为接收方尚未联机。

接收方联机时：

接收方3联机，并将PIM JOIN(S， G)消息发送到PE3。

PIM(1): Received v2 Join/Prune on Ethernet0/2 from 10.2.0.2, to us

PIM(1): Join-list: (10.1.0.2/32, 232.1.1.1), S-bit set

MRT(1): Create (*,232.1.1.1), RPF (unknown, 0.0.0.0, 2147483647/0)

MLDP: Interface Lspvif1 moved from VRF (default) to VRF MLDP-INBAND

MLDP: Enabled IPv4 on Lspvif1 unnumbered with Loopback0

MLDP-MFI: Enabled MLDP MFI client on Lspvif1; status =  ok

MRT(1): Add interface Lspvif1

MLDP: Enable pim on lsp vif: Lspvif1

MLDP: Add success lsp vif: Lspvif1 address: 1.1.1.1 application: MLDP vrf_id: 1

MLDP: LDP root 1.1.1.1 added

mLDP-RW: Sending RW notification message to process: mLDP Process

mLDP-RW: RW Tracking started for: 1.1.1.1

MLDP:  Route watch started for 1.1.1.1 topology: base ipv4

MLDP-DB: Added [vpnv4 10.1.0.2 232.1.1.1 1:1] DB Entry

MLDP-DB: [vpnv4 10.1.0.2 232.1.1.1 1:1] Added P2MP branch for MRIBv4(1) label

%MLDP-5-ADD_BRANCH: [vpnv4 10.1.0.2 232.1.1.1 1:1] Root: 1.1.1.1, Add P2MP branch MRIBv4(1) remote label

MLDP: nhop 10.0.2.2 added

MLDP-NBR: 11.11.11.11:0 mapped to next_hop: 10.0.2.2

MLDP: Root 1.1.1.1 old paths: 0 new paths: 1

MLDP-DB: [vpnv4 10.1.0.2 232.1.1.1 1:1] Changing peer from none to 11.11.11.11:0

MLDP-DB: [vpnv4 10.1.0.2 232.1.1.1 1:1] Add accepting element nbr: 11.11.11.11:0

MLDP: [vpnv4 10.1.0.2 232.1.1.1 1:1] label mappping msg sent to 11.11.11.11:0 success

MLDP-DB: [vpnv4 10.1.0.2 232.1.1.1 1:1] path to peer: 11.11.11.11:0 changed None:0.0.0.0 to Ethernet0/3:10.0.2.2

来自接收方(S，G)加入的任何通信都将转换为MLDP，并且所有消息都会传输到Lspvif 1

由于MLDP是接收方驱动的协议，因此PIM JOIN(S，G)开始从接收方到源建立MLDP数据库。这是P2MP MLDP的下游标签分配。

P2MP MLDP

P2MP分组传输使用资源预留协议(RSVP)P2MP流量工程(P2MP-TE)实现，M2M分组传输通过IPv4组播VPN(MVPN)使用组播标签分发协议(MLDP)实现。

数据包通过三种类型的路由器传输：

·头端路由器：使用一个或多个标签封装IP数据包。

·中点路由器：用外标签替换内标签。

·尾端路由器：从数据包中删除标签。

基于MLDP的MVPN网络中的数据包流对于传入的每个数据包，MPLS会创建多个外标签。从源网络发送的数据包沿到达接收方网络的路径复制。CE1路由器发送本地IP组播流量。PE1路由器在传入组播数据包上添加标签，并将标记的数据包复制到MPLS核心网络。当数据包到达核心路由器(P)时，使用MP2MP默认MDT或P2MP数据MDT的适当标签复制数据包并传输到所有出口PE。数据包到达出口PE后，标签将被删除，IP组播数据包将复制到VRF接口

PE1#sh mpls mldp database

* For interface indicates MLDP recursive forwarding is enabled

* For RPF-ID indicates wildcard value

> Indicates it is a Primary MLDP MDT Branch

LSM ID : 1   Type: P2MP   Uptime : 00:23:11

FEC Root           : 1.1.1.1 (we are the root)

Opaque decoded     : [vpnv4 10.1.0.2 232.1.1.1 1:1]

Opaque length      : 16 bytes

Opaque value       : FA 0010 0A010002E80101010000000100000001

Upstream client(s) :

None

Expires        : N/A           Path Set ID  : 1

Replication client(s):

11.11.11.11:0

Uptime         : 00:23:11      Path Set ID  : None

Out label (D)  : 21            Interface    : Ethernet0/1*

Local label (U): None          Next Hop     : 10.0.1.2

RR-P#sh mpls mldp database

* For interface indicates MLDP recursive forwarding is enabled

* For RPF-ID indicates wildcard value

> Indicates it is a Primary MLDP MDT Branch

LSM ID : 2   Type: P2MP   Uptime : 00:28:12

FEC Root           : 1.1.1.1

Opaque decoded     : [vpnv4 10.1.0.2 232.1.1.1 1:1]

Opaque length      : 16 bytes

Opaque value       : FA 0010 0A010002E80101010000000100000001

Upstream client(s) :

1.1.1.1:0    [Active]

Expires        : Never         Path Set ID  : 2

Out Label (U)  : None          Interface    : Ethernet0/1*

Local Label (D): 21            Next Hop     : 10.0.1.1

Replication client(s):

3.3.3.3:0

Uptime         : 00:28:12      Path Set ID  : None

Out label (D)  : 26            Interface    : Ethernet0/2*

Local label (U): None          Next Hop     : 10.0.3.1

2.2.2.2:0

Uptime         : 00:24:41      Path Set ID  : None

Out label (D)  : 25            Interface    : Ethernet0/3*

Local label (U): None          Next Hop     : 10.0.2.1

RR-P#sh mpls forwarding-table labels 21

Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop

Label      Label      or Tunnel Id     Switched      interface

21         26         [vpnv4 10.1.0.2 232.1.1.1 1:1]   \

0             Et0/2      10.0.3.1

25         [vpnv4 10.1.0.2 232.1.1.1 1:1]   \

0             Et0/3      10.0.2.1

在PE设备上创建的MRIB:

PE1#sh ip mroute vrf MLDP-INBAND 232.1.1.1 verbose

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group

T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,

U - URD, I - Received Source Specific Host Report,

(10.1.0.2, 232.1.1.1), 00:00:17/00:02:42, flags: sTI

Incoming interface: Ethernet0/2, RPF nbr 10.1.0.2

Outgoing interface list:

Lspvif0, LSM ID: 1, Forward/Sparse, 00:00:17/00:02:42

当源启动流时：

当组播源开始发送流量时，[10.1.0.2, 232.1.1.1]会发生，如下图所示。

来自源10.1.0.2流的流量从232.1.1.1。通过以太网接口0/2进入。

数据包通过Lspvif 0转发。

PIM(0): Insert (10.1.0.2,232.1.1.1) join in nbr 10.1.0.2's queue

PIM(0): Building Join/Prune packet for nbr 10.1.0.2

PIM(0):  Adding v2 (10.1.0.2/32, 232.1.1.1), S-bit Join

PIM(0): Send v2 join/prune to 10.1.0.2 (Ethernet0/2)

MFIBv4(0x0): Pkt (10.1.0.2,232.1.1.1) from Ethernet0/2 (FS) accepted for forwarding

MFIBv4(0x0): Pkt (10.1.0.2,232.1.1.1) from Ethernet0/2 (FS) sent on Lspvif0, LSM NBMA/4

此数据包通过隧道进入Lspvif 0。

在接收方：

在接收方，数据包到达Lspvif 1。

MFIBv4(0x0): Pkt (10.1.0.2,232.1.1.1) from Lspvif1 (FS) accepted for forwarding

MFIBv4(0x0): Pkt (10.1.0.2,232.1.1.1) from Lspvif1 (FS) sent on Ethernet0/0

PIM(0): Received v2 Join/Prune on Ethernet0/0 from 10.3.0.2, to us

PIM(0): Join-list: (10.1.0.2/32, 232.1.1.1), S-bit set

PIM(0): Update Ethernet0/0/10.3.0.2 to (10.1.0.2, 232.1.1.1), Forward state, by PIM SG Join

当数据包到达PE1时，它会检查LSM ID以转发要在组播数据包中强加的流量标签。

此图显示LSPVIF接口的验证。

对于每个传入的数据包，MPLS会创建多个外标签。从源网络发送的数据包沿到达接收方网络的路径复制。CE1路由器发送本地IP组播流量。PE1路由器在传入组播数据包上添加标签，并将标记的数据包复制到MPLS核心网络。

当数据包到达核心路由器(P)时，使用MP2MP默认MDT或P2MP数据MDT的适当标签复制数据包并传输到所有出口PE。一旦数据包到达出口PE，标签将被删除，IP组播数据包将复制到VRF接口。

结论

MLDP MVPN配置使IPv4组播数据包使用MPLS传输。此配置使用MPLS标签构建默认和数据组播分布树(MDT)。

MPLS复制用作核心网络中的转发机制。要使MLDP MVPN配置正常工作，请确保全局MPLS MLDP配置已启用。

相关信息

- https://tools.ietf.org/html/rfc5918

- https://tools.ietf.org/html/rfc4447

- https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipmulti_lsm/configuration/15-sy/imc-lsm-15-sy-book.pdf

- 技术支持和文档 - Cisco Systems