This section provides an example for configuring an intra-AS NG MVPN to carry multicast traffic over an mLDP P2MP LSP.
A next-generation multicast virtual private network (NG MVPN) is deployed on the service provider's backbone network to solve multicast service issues related to traffic congestion, transmission reliability, and data security. On the intra-AS NG MVPN network shown in Figure 1, MPLS LDP LSPs have been deployed to carry BGP MPLS/IP VPN services. The service provider wants to provide MVPN services for users based on the existing network. To meet this requirement, configure an intra-AS NG MVPN to carry multicast traffic over a Multipoint extensions for LDP (mLDP) point-to-multipoint (P2MP) LSP.
The configuration roadmap is as follows:
Configure BGP/MPLS IP VPN and ensure that unicast VPN services are properly transmitted. In this example, configure CE1 to communicate with CE2 and CE3, but do not allow CE2 and CE3 to communicate.
Enable mLDP globally on Provider Edges (PEs) so that the PEs can use mLDP to establish a P2MP LSP.
Establish BGP MVPN peer relationships between the PEs so that the PEs can use BGP to exchange BGP A-D and BGP C-multicast routes.
Configure PE1 to use mLDP to establish an inclusive-provider multicast service interface (I-PMSI) tunnel.
Configure PE1 to use mLDP to establish a selective-provider multicast service interface (S-PMSI) tunnel so that an mLDP P2MP LSP can be triggered.
Configure PIM on the PE interfaces bound to VPN instances and on the CE interfaces connecting to PEs to allow a VPN multicast routing table to be established to guide multicast traffic forwarding.
Configure IGMP on the interfaces connecting a multicast device to a user network segment to allow the device to manage multicast group members on the network segment.
To complete the configuration, you need the following data:
Public network OSPF process ID: 1; area ID: 0 OSPF multi-instance process ID: 2; area ID: 0
Device Name |
IP Address of Loopback 1 |
MPLS LSR ID |
MVPN ID |
RD |
VPN-Target |
AS Number |
---|---|---|---|---|---|---|
CE1 |
1.1.1.1 |
- |
- |
- |
- |
- |
PE1 |
2.2.2.2 |
2.2.2.2 |
2.2.2.2 |
200:1 |
3:3 4:4 |
AS100 |
PE2 |
3.3.3.3 |
3.3.3.3 |
3.3.3.3 |
300:1 |
3:3 |
AS100 |
PE3 |
4.4.4.4 |
4.4.4.4 |
4.4.4.4 |
400:1 |
4:4 |
AS100 |
CE2 |
5.5.5.5 |
- |
- |
- |
- |
- |
CE3 |
6.6.6.6 |
- |
- |
- |
- |
- |
# Configure PE1.
[~PE1] mpls ldp [*PE1-mpls-ldp] mldp p2mp [*PE1-mpls-ldp] commit [~PE1-mpls-ldp] quit
# Configure PE2.
[~PE2] mpls ldp [*PE2-mpls-ldp] mldp p2mp [*PE2-mpls-ldp] commit [~PE2-mpls-ldp] quit
# Configure PE3.
[~PE3] mpls ldp [*PE3-mpls-ldp] mldp p2mp [*PE3-mpls-ldp] commit [~PE3-mpls-ldp] quit
# Configure PE1.
[~PE1] bgp 100 [*PE1-bgp] ipv4-family mvpn [*PE1-bgp-af-mvpn] peer 3.3.3.3 enable [*PE1-bgp-af-mvpn] peer 4.4.4.4 enable [*PE1-bgp-af-mvpn] commit [~PE1-bgp-af-mvpn] quit [~PE1-bgp] quit
# Configure PE2.
[~PE2] bgp 100 [*PE2-bgp] ipv4-family mvpn [*PE2-bgp-af-mvpn] peer 2.2.2.2 enable [*PE2-bgp-af-mvpn] commit [~PE2-bgp-af-mvpn] quit [~PE2-bgp] quit
# Configure PE3.
[~PE3] bgp 100 [*PE3-bgp] ipv4-family mvpn [*PE3-bgp-af-mvpn] peer 2.2.2.2 enable [*PE3-bgp-af-mvpn] commit [~PE3-bgp-af-mvpn] quit [~PE3-bgp] quit
After the configurations are complete, run the display bgp mvpn all peer command on the PEs. The command output shows that PE1 has established a BGP MVPN peer relationship with PE2 and PE3. The following example uses the command output on PE1:
[~PE1] display bgp mvpn all peer
BGP local router ID : 10.1.2.1
Local AS number : 100
Total number of peers : 2 Peers in established state : 2
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
3.3.3.3 4 100 43 42 0 00:29:28 Established 2
4.4.4.4 4 100 32 35 0 00:21:59 Established 1
# Configure PE1.
[~PE1] multicast mvpn 2.2.2.2 [*PE1] ip vpn-instance VPNA [*PE1-vpn-instance-VPNA] ipv4-family [*PE1-vpn-instance-VPNA-af-ipv4] multicast routing-enable [*PE1-vpn-instance-VPNA-af-ipv4] mvpn [*PE1-vpn-instance-VPNA-af-ipv4-mvpn] sender-enable [*PE1-vpn-instance-VPNA-af-ipv4-mvpn] c-multicast signaling bgp [*PE1-vpn-instance-VPNA-af-ipv4-mvpn] rpt-spt mode [*PE1-vpn-instance-VPNA-af-ipv4-mvpn] ipmsi-tunnel [*PE1-vpn-instance-VPNA-af-ipv4-mvpn-ipmsi] mldp [*PE1-vpn-instance-VPNA-af-ipv4-mvpn-ipmsi] quit [*PE1-vpn-instance-VPNA-af-ipv4-mvpn] spmsi-tunnel [*PE1-vpn-instance-VPNA-af-ipv4-mvpn-spmsi] group 225.0.0.0 255.255.255.0 mldp limit 1 [*PE1-vpn-instance-VPNA-af-ipv4-mvpn-spmsi] quit [*PE1-vpn-instance-VPNA-af-ipv4-mvpn] quit [*PE1-vpn-instance-VPNA-af-ipv4] quit [*PE1-vpn-instance-VPNA] quit [*PE1] commit
# Configure PE2.
[~PE2] multicast mvpn 3.3.3.3 [*PE2] ip vpn-instance VPNA [*PE2-vpn-instance-VPNA] ipv4-family [*PE2-vpn-instance-VPNA-af-ipv4] multicast routing-enable [*PE2-vpn-instance-VPNA-af-ipv4] mvpn [*PE2-vpn-instance-VPNA-af-ipv4-mvpn] c-multicast signaling bgp [*PE2-vpn-instance-VPNA-af-ipv4-mvpn] rpt-spt mode [*PE2-vpn-instance-VPNA-af-ipv4-mvpn] quit [*PE2-vpn-instance-VPNA-af-ipv4] quit [*PE2-vpn-instance-VPNA] quit [*PE2] commit
# Configure PE3.
[~PE3] multicast mvpn 4.4.4.4 [*PE3] ip vpn-instance VPNA [*PE3-vpn-instance-VPNA] ipv4-family [*PE3-vpn-instance-VPNA-af-ipv4] multicast routing-enable [*PE3-vpn-instance-VPNA-af-ipv4] mvpn [*PE3-vpn-instance-VPNA-af-ipv4-mvpn] c-multicast signaling bgp [*PE3-vpn-instance-VPNA-af-ipv4-mvpn] rpt-spt mode [*PE3-vpn-instance-VPNA-af-ipv4-mvpn] quit [*PE3-vpn-instance-VPNA-af-ipv4] quit [*PE3-vpn-instance-VPNA] quit [*PE3] commit
After completing the configuration, run the display mvpn vpn-instance ipmsi command on the PEs to check I-PMSI tunnel information. The following example uses the command output on PE1:
[~PE1] display mvpn vpn-instance VPNA ipmsi MVPN local I-PMSI information for VPN-Instance: VPNA Tunnel type: mLDP P2MP LSP Tunnel state: Up Root-ip: 2.2.2.2 Opaque value: 0x01000400008021 Root: 2.2.2.2 (local) Leaf: 1: 3.3.3.3 2: 4.4.4.4
The command output shows that an mLDP P2MP LSP has been established, with PE1 as the root node and PE2 and PE3 as leaf nodes.
# Configure PE1.
[*PE1] interface gigabitethernet0/1/1 [*PE1-GigabitEthernet0/1/1] pim sm [*PE1-GigabitEthernet0/1/1] quit [*PE1] commit
# Configure CE1.
[~CE1] multicast routing-enable [*CE1] interface gigabitethernet0/1/0 [*CE1-GigabitEthernet0/1/0] pim sm [*CE1-GigabitEthernet0/1/0] quit [*CE1] interface gigabitethernet0/1/1 [*CE1-GigabitEthernet0/1/1] pim sm [*CE1-GigabitEthernet0/1/1] quit [*CE1] commit
# Configure PE2.
[*PE2] interface gigabitethernet0/1/1 [*PE2-GigabitEthernet0/1/1] pim sm [*PE2-GigabitEthernet0/1/1] quit [*PE2] commit
# Configure CE2.
[~CE2] multicast routing-enable [*CE2] interface gigabitethernet0/1/0 [*CE2-GigabitEthernet0/1/0] pim sm [*CE2-GigabitEthernet0/1/0] quit [*CE2] interface gigabitethernet0/1/1 [*CE2-GigabitEthernet0/1/1] pim sm [*CE2-GigabitEthernet0/1/1] quit [*CE2] commit
# Configure PE3.
[*PE3] interface gigabitethernet0/1/1 [*PE3-GigabitEthernet0/1/1] pim sm [*PE3-GigabitEthernet0/1/1] quit [*PE3] commit
# Configure CE3.
[~CE3] multicast routing-enable [*CE3] interface gigabitethernet0/1/0 [*CE3-GigabitEthernet0/1/0] pim sm [*CE3-GigabitEthernet0/1/0] quit [*CE3] interface gigabitethernet0/1/1 [*CE3-GigabitEthernet0/1/1] pim sm [*CE3-GigabitEthernet0/1/1] quit [*CE3] commit
# Configure CE2.
[~CE2] interface gigabitethernet0/1/1 [*CE2-GigabitEthernet0/1/1] pim sm [*CE2-GigabitEthernet0/1/1] igmp enable [*CE2-GigabitEthernet0/1/1] igmp version 3 [*CE2-GigabitEthernet0/1/1] commit [~CE2-GigabitEthernet0/1/1] quit
# Configure CE3.
[~CE3] interface gigabitethernet0/1/1 [*CE3-GigabitEthernet0/1/1] pim sm [*CE3-GigabitEthernet0/1/1] igmp enable [*CE3-GigabitEthernet0/1/1] igmp version 3 [*CE3-GigabitEthernet0/1/1] commit [~CE3-GigabitEthernet0/1/1] quit
# Configure CE1.
[~CE1] pim [*CE1-pim] static-rp 1.1.1.1 [*CE1-pim] commit [~CE1-pim] quit
# Configure CE2.
[~CE2] pim [*CE2-pim] static-rp 1.1.1.1 [*CE2-pim] commit [~CE2-pim] quit
# Configure CE3.
[~CE3] pim [*CE3-pim] static-rp 1.1.1.1 [*CE3-pim] commit [~CE3-pim] quit
# Configure PE1.
[~PE1] pim vpn-instance VPNA [*PE1-pim-VPNA] static-rp 1.1.1.1 [*PE1-pim-VPNA] commit [~PE1-pim-VPNA] quit
# Configure PE2.
[~PE2] pim vpn-instance VPNA [*PE2-pim-VPNA] static-rp 1.1.1.1 [*PE2-pim-VPNA] commit [~PE2-pim-VPNA] quit
# Configure PE3.
[~PE3] pim vpn-instance VPNA [*PE3-pim-VPNA] static-rp 1.1.1.1 [*PE3-pim-VPNA] commit [~PE3-pim-VPNA] quit
After the configurations are complete, NG MVPN functions have been configured. After a user goes online through CE2 or CE3, CE1 can forward multicast data traffic to the user through the BGP/MPLS IP VPN. Configure users on CE2 or CE3 to send IGMPv3 Report messages and the multicast source 10.1.3.1 to send multicast data. Then, check multicast routing entries to verify whether the NG MVPN is configured successfully.
Run the display pim routing-table command on CE2, CE3, and CE1 to check the PIM routing table. Run the display pim vpn-instance routing-table command on PE2, PE3, and PE1 to check the PIM routing table of the VPN instance.
[~CE2] display pim routing-table VPN-Instance: public net Total 0 (*, G) entry; 1 (S, G) entry (10.1.3.1, 225.1.1.1) RP:1.1.1.1 Protocol: pim-sm, Flag: SPT SG_RCVR ACT UpTime: 00:54:11 Upstream interface: GigabitEthernet0/1/0, Refresh time: 00:54:11 Upstream neighbor: 192.168.2.1 RPF prime neighbor: 192.168.2.1 Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet0/1/1 Protocol: igmp, UpTime: 00:54:11, Expires: - [~CE3] display pim routing-table VPN-Instance: public net Total 0 (*, G) entry; 1 (S, G) entry (10.1.3.1, 226.1.1.1) RP:1.1.1.1 Protocol: pim-sm, Flag: SPT SG_RCVR ACT UpTime: 00:01:57 Upstream interface: GigabitEthernet0/1/0, Refresh time: 00:01:57 Upstream neighbor: 192.168.3.1 RPF prime neighbor: 192.168.3.1 Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet0/1/1 Protocol: igmp, UpTime: 00:01:57, Expires: - [~PE2] display pim vpn-instance VPNA routing-table VPN-Instance: VPNA Total 0 (*, G) entry; 1 (S, G) entry (10.1.3.1, 225.1.1.1) RP:1.1.1.1 Protocol: pim-sm, Flag: SPT ACT UpTime: 00:48:18 Upstream interface: through-BGP, Refresh time: 00:48:18 Upstream neighbor: 2.2.2.2 RPF prime neighbor: 2.2.2.2 Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet0/1/1 Protocol: pim-sm, UpTime: 00:48:18, Expires: 00:03:12 [~PE3] display pim vpn-instance VPNA routing-table VPN-Instance: VPNA Total 0 (*, G) entry; 1 (S, G) entry (10.1.3.1, 226.1.1.1) RP:1.1.1.1 Protocol: pim-sm, Flag: SPT ACT UpTime: 00:02:06 Upstream interface: through-BGP, Refresh time: 00:02:06 Upstream neighbor: 2.2.2.2 RPF prime neighbor: 2.2.2.2 Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet0/1/1 Protocol: pim-sm, UpTime: 00:02:06, Expires: 00:03:26 [~PE1] display pim vpn-instance VPNA routing-table VPN-Instance: VPNA Total 0 (*, G) entry; 2 (S, G) entries (10.1.3.1, 225.1.1.1) RP:1.1.1.1 Protocol: pim-sm, Flag: SPT SG_RCVR ACT UpTime: 00:46:58 Upstream interface: GigabitEthernet0/1/1, Refresh time: 00:46:58 Upstream neighbor: 192.168.1.1 RPF prime neighbor: 192.168.1.1 Downstream interface(s) information: Total number of downstreams: 1 1: pseudo Protocol: BGP, UpTime: 00:46:58, Expires: - (10.1.3.1, 226.1.1.1) RP:1.1.1.1 Protocol: pim-sm, Flag: SPT SG_RCVR ACT UpTime: 00:00:23 Upstream interface: GigabitEthernet0/1/1, Refresh time: 00:00:23 Upstream neighbor: 192.168.1.1 RPF prime neighbor: 192.168.1.1 Downstream interface(s) information: Total number of downstreams: 1 1: pseudo Protocol: BGP, UpTime: 00:00:26, Expires: - [~CE1] display pim routing-table VPN-Instance: public net Total 0 (*, G) entry; 2 (S, G) entries (10.1.3.1, 225.1.1.1) RP:1.1.1.1 (local) Protocol: pim-sm, Flag: SPT LOC ACT UpTime: 00:47:29 Upstream interface: GigabitEthernet0/1/0, Refresh time: 00:47:29 Upstream neighbor: NULL RPF prime neighbor: NULL Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet0/1/1 Protocol: pim-sm, UpTime: 00:47:29, Expires: 00:03:03 (10.1.3.1, 226.1.1.1) RP:1.1.1.1 (local) Protocol: pim-sm, Flag: SPT LOC ACT UpTime: 00:00:54 Upstream interface: GigabitEthernet0/1/0, Refresh time: 00:00:54 Upstream neighbor: NULL RPF prime neighbor: NULL Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet0/1/1 Protocol: pim-sm, UpTime: 00:00:54, Expires: 00:02:36
The command outputs show that the CE connecting to the multicast source has received PIM Join messages from the other CEs connecting to multicast receivers and that PIM routing entries have been generated.
CE1 configuration file
# sysname CE1 # multicast routing-enable # interface GigabitEthernet0/1/0 undo shutdown ip address 10.1.3.2 255.255.255.0 pim sm # interface GigabitEthernet0/1/1 undo shutdown ip address 192.168.1.1 255.255.255.0 pim sm # interface LoopBack1 ip address 1.1.1.1 255.255.255.255 # ospf 2 area 0.0.0.0 network 1.1.1.1 0.0.0.0 network 10.1.3.0 0.0.0.255 network 192.168.1.0 0.0.0.255 # pim static-rp 1.1.1.1 # return
PE1 configuration file
# sysname PE1 # multicast mvpn 2.2.2.2 # ip vpn-instance VPNA ipv4-family route-distinguisher 200:1 apply-label per-instance vpn-target 3:3 export-extcommunity vpn-target 4:4 export-extcommunity vpn-target 3:3 import-extcommunity vpn-target 4:4 import-extcommunity multicast routing-enable mvpn sender-enable c-multicast signaling bgp rpt-spt mode ipmsi-tunnel mldp spmsi-tunnel group 225.0.0.0 255.255.255.0 mldp limit 1 # mpls lsr-id 2.2.2.2 mpls # mpls ldp mldp p2mp # interface GigabitEthernet0/1/0 undo shutdown ip address 10.1.2.1 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/1/1 undo shutdown ip binding vpn-instance VPNA ip address 192.168.1.2 255.255.255.0 pim sm # interface GigabitEthernet0/1/2 undo shutdown ip address 10.1.1.1 255.255.255.0 mpls mpls ldp # interface LoopBack1 ip address 2.2.2.2 255.255.255.255 # bgp 100 peer 3.3.3.3 as-number 100 peer 3.3.3.3 connect-interface LoopBack1 peer 4.4.4.4 as-number 100 peer 4.4.4.4 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer 3.3.3.3 enable peer 4.4.4.4 enable # ipv4-family vpnv4 policy vpn-target peer 3.3.3.3 enable peer 4.4.4.4 enable # ipv4-family mvpn policy vpn-target peer 3.3.3.3 enable peer 4.4.4.4 enable # ipv4-family vpn-instance VPNA import-route ospf 2 # ospf 1 area 0.0.0.0 network 2.2.2.2 0.0.0.0 network 10.1.1.0 0.0.0.255 network 10.1.2.0 0.0.0.255 # ospf 2 vpn-instance VPNA import-route bgp area 0.0.0.0 network 192.168.1.0 0.0.0.255 # pim vpn-instance VPNA static-rp 1.1.1.1 # return
CE2 configuration file
# sysname CE2 # multicast routing-enable # interface GigabitEthernet0/1/0 undo shutdown ip address 192.168.2.2 255.255.255.0 pim sm # interface GigabitEthernet0/1/1 undo shutdown ip address 10.1.4.1 255.255.255.0 pim sm igmp enable igmp version 3 # interface LoopBack1 ip address 5.5.5.5 255.255.255.255 # ospf 2 area 0.0.0.0 network 5.5.5.5 0.0.0.0 network 10.1.4.0 0.0.0.255 network 192.168.2.0 0.0.0.255 # pim static-rp 1.1.1.1 # return
PE2 configuration file
# sysname PE2 # multicast mvpn 3.3.3.3 # ip vpn-instance VPNA ipv4-family route-distinguisher 300:1 apply-label per-instance vpn-target 3:3 export-extcommunity vpn-target 3:3 import-extcommunity multicast routing-enable mvpn c-multicast signaling bgp rpt-spt mode # mpls lsr-id 3.3.3.3 mpls # mpls ldp mldp p2mp # interface GigabitEthernet0/1/1 undo shutdown ip binding vpn-instance VPNA ip address 192.168.2.1 255.255.255.0 pim sm # interface GigabitEthernet0/1/2 undo shutdown ip address 10.1.1.2 255.255.255.0 mpls mpls ldp # interface LoopBack1 ip address 3.3.3.3 255.255.255.255 # bgp 100 peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer 2.2.2.2 enable # ipv4-family vpnv4 policy vpn-target peer 2.2.2.2 enable # ipv4-family mvpn policy vpn-target peer 2.2.2.2 enable # ipv4-family vpn-instance VPNA import-route ospf 2 # ospf 1 area 0.0.0.0 network 3.3.3.3 0.0.0.0 network 10.1.1.0 0.0.0.255 # ospf 2 vpn-instance VPNA import-route bgp area 0.0.0.0 network 192.168.2.0 0.0.0.255 # pim vpn-instance VPNA static-rp 1.1.1.1 # return
CE3 configuration file
# sysname CE3 # multicast routing-enable # interface GigabitEthernet0/1/0 undo shutdown ip address 192.168.3.2 255.255.255.0 pim sm # interface GigabitEthernet0/1/1 undo shutdown ip address 10.1.5.1 255.255.255.0 pim sm igmp enable igmp version 3 # interface LoopBack1 ip address 6.6.6.6 255.255.255.255 # ospf 2 area 0.0.0.0 network 6.6.6.6 0.0.0.0 network 10.1.5.0 0.0.0.255 network 192.168.3.0 0.0.0.255 # pim static-rp 1.1.1.1 # return
PE3 configuration file
# sysname PE3 # multicast mvpn 4.4.4.4 # ip vpn-instance VPNA ipv4-family route-distinguisher 400:1 apply-label per-instance vpn-target 4:4 export-extcommunity vpn-target 4:4 import-extcommunity multicast routing-enable mvpn c-multicast signaling bgp rpt-spt mode # mpls lsr-id 4.4.4.4 mpls # mpls ldp mldp p2mp # interface GigabitEthernet0/1/0 undo shutdown ip address 10.1.2.2 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/1/1 undo shutdown ip binding vpn-instance VPNA ip address 192.168.3.1 255.255.255.0 pim sm # interface LoopBack1 ip address 4.4.4.4 255.255.255.255 # bgp 100 peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer 2.2.2.2 enable # ipv4-family vpnv4 policy vpn-target peer 2.2.2.2 enable # ipv4-family mvpn policy vpn-target peer 2.2.2.2 enable # ipv4-family vpn-instance VPNA import-route ospf 2 # ospf 1 area 0.0.0.0 network 4.4.4.4 0.0.0.0 network 10.1.2.0 0.0.0.255 # ospf 2 vpn-instance VPNA import-route bgp area 0.0.0.0 network 192.168.3.0 0.0.0.255 # pim vpn-instance VPNA static-rp 1.1.1.1 # return