Example for Configuring Segmented NG MVPN
This section provides an example for configuring segmented next generation multicast virtual private network (NG MVPN) in a P2MP Resource Reservation Protocol-Traffic Engineering (RSVP-TE) tunnel bearer scenario.
Networking Requirements
NG MVPN needs to be deployed on carriers' backbone networks to resolve the issues related to multicast traffic congestion, transmission reliability, and data security. On the network shown in Figure 9-24, RSVP-TE tunnels are deployed in areas of the backbone network to bear BGP MPLS/IP VPN services. The customer requires the network to provide MVPN services. To meet this requirement, configure segmented NG MVPN.
Configuration Roadmap
The configuration roadmap is as follows:
Configure a BGP MPLS/IP VPN and ensure that the unicast VPN is working properly.
Enable P2MP TE on provider edges (PEs) globally and configure P2MP TE templates to ensure that the PEs can establish P2MP RSVP-TE tunnels.
Enable the PEs to establish BGP MVPN peer relationships and configure BGP to transmit A-D and C-multicast routes.
Configure inclusive-provider multicast service interface (I-PMSI) tunnels on the sender PE through RSVP-TE, triggering P2MP RSVP-TE tunnel establishment.
Bind interfaces on PEs to VPN instances and enable PIM on customer edge (CE) interfaces to create multicast VPN routing tables.
Enable IGMP on the multicast device's interface that is connected to users, implementing multicast group member management on the local network.
Data Preparation
To complete the configuration, you need the following data:
OSPF process ID for communication between the ABR and PE1: 10
IS-IS process ID for communication between the ABR and PE2: 1; IS-IS level: Level-2; system IDs for the ABR and PE2: 45.0005.0005.0005.00 and 46.0006.0006.0006.00, respectively
- VPN instance names on the ABR, PE1, and PE2: vpn1Table 9-3 Data preparation
Device
IP Address of Loopback0
MPLS LSR ID
MVPN ID
RD
VPN-Target
AS Number
PE1
1.1.1.1
1.1.1.1
1.1.1.1
1:1
200:1
AS100
ABR
2.2.2.2
2.2.2.2
2.2.2.2
2:1
200:1
AS100
PE2
6.6.6.6
6.6.6.6
6.6.6.6
6:1
200:1
AS100
Procedure
- Configure a BGP MPLS/IP VPN.
- Enable P2MP TE globally and configure P2MP TE templates.
# Configure PE1.
[~PE1] mpls [*PE1-mpls] mpls te p2mp-te [*PE1-mpls] quit [*PE1] mpls te p2mp-template t1 [*PE1-te-p2mp-template-t1] record-route label [*PE1-te-p2mp-template-t1] bandwidth ct0 100 [*PE1-te-p2mp-template-t1] fast-reroute bandwidth [*PE1-te-p2mp-template-t1] bypass-attributes bandwidth 10 priority 7 7 [*PE1-te-p2mp-template-t1] quit [*PE1] commit
# Configure PE2.
[~PE2] mpls [*PE2-mpls] mpls te p2mp-te [*PE2-mpls] quit [*PE2] mpls te p2mp-template t1 [*PE2-te-p2mp-template-t1] quit [*PE2] commit
# Configure the ABR.
[~ABR] mpls [*ABR-mpls] mpls te p2mp-te [*ABR-mpls] quit [*ABR] mpls te p2mp-template t1 [*ABR-te-p2mp-template-t1] quit [*ABR] commit
- Establish BGP MVPN peer relationships between the ABR and PEs.
# Configure PE1.
[~PE1] bgp 100 [*PE1-bgp] ipv4-family mvpn [*PE1-bgp-af-mvpn] policy vpn-target [*PE1-bgp-af-mvpn] peer 2.2.2.2 enable [*PE1-bgp-af-mvpn] quit [*PE1-bgp] quit [*PE1] commit
# Configure PE2.
[~PE2] bgp 100 [*PE2-bgp] ipv4-family mvpn [*PE2-bgp-af-mvpn] policy vpn-target [*PE2-bgp-af-mvpn] peer 2.2.2.2 enable [*PE2-bgp-af-mvpn] quit [*PE2-bgp] quit [*PE2] commit
# Configure the ABR.
[~ABR] route-policy rp1 permit node 1 [*ABR-route-policy-rp1apply stitch-pmsi rsvp-te p2mp-template t1 [*ABR-route-policy-rp1quit [*ABR] bgp 100 [*ABR-bgp] ipv4-family mvpn [*ABR-bgp-af-mvpn] reflect change-path-attribute [*ABR-bgp-af-mvpn] undo policy vpn-target [*ABR-bgp-af-mvpn] peer 1.1.1.1 enable [*ABR-bgp-af-mvpn] peer 1.1.1.1 reflect-client [*ABR-bgp-af-mvpn] peer 6.6.6.6 enable [*ABR-bgp-af-mvpn] peer 6.6.6.6 route-policy rp1 export [*ABR-bgp-af-mvpn] peer 6.6.6.6 reflect-client [*ABR-bgp-af-mvpn] quit [*ABR-bgp] quit [*ABR] commit
- Enable the support for inter-area segmented NG MVPN in an AS.
# Configure PE1.
[*PE1] ip vpn-instance vpn1 [*PE1-vpn-instance-vpn1] ipv4-family [*PE1-vpn-instance-vpn1-af-ipv4] mvpn [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] inter-area-segmented enable [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] quit [*PE1-vpn-instance-vpn1-af-ipv4] quit [*PE1-vpn-instance-vpn1] quit [*PE1] commit
# Configure the ABR.
[~ABR] multicast mvpn inter-area-segmented enable [*ABR] commit
- Specify RSVP-TE as the mode for creating I-PMSI tunnels.
# Configure PE1.
[~PE1] multicast mvpn 1.1.1.1 [*PE1] ip vpn-instance vpn1 [*PE1-vpn-instance-vpn1] ipv4-family [*PE1-vpn-instance-vpn1-af-ipv4] multicast routing-enable [*PE1-vpn-instance-vpn1-af-ipv4] mvpn [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] sender-enable [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] c-multicast signaling bgp [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] inter-area-segmented enable [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] ipmsi-tunnel [*PE1-vpn-instance-vpn1-af-ipv4-mvpn-ipmsi] mpls te [*PE1-vpn-instance-vpn1-af-ipv4-mvpn-ipmsi-mpls-te] p2mp-template t1 [*PE1-vpn-instance-vpn1-af-ipv4-mvpn-ipmsi-mpls-te] quit [*PE1-vpn-instance-vpn1-af-ipv4-mvpn-ipmsi] quit [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] quit [*PE1-vpn-instance-vpn1-af-ipv4] quit [*PE1-vpn-instance-vpn1] quit [*PE1] commit
# Configure PE2.
[~PE2] multicast mvpn 6.6.6.6 [*PE2] ip vpn-instance vpn1 [*PE2-vpn-instance-vpn1] ipv4-family [*PE2-vpn-instance-vpn1-af-ipv4] multicast routing-enable [*PE2-vpn-instance-vpn1-af-ipv4] mvpn [*PE2-vpn-instance-vpn1-af-ipv4-mvpn] c-multicast signaling bgp [*PE2-vpn-instance-vpn1-af-ipv4-mvpn] quit [*PE2-vpn-instance-vpn1-af-ipv4] quit [*PE2-vpn-instance-vpn1] quit [*PE2] commit
# Configure the ABR.
[~ABR] multicast mvpn 2.2.2.2 [*ABR] ip vpn-instance vpn1 [*ABR-vpn-instance-vpn1] ipv4-family [*ABR-vpn-instance-vpn1-af-ipv4] multicast routing-enable [*ABR-vpn-instance-vpn1-af-ipv4] mvpn [*ABR-vpn-instance-vpn1-af-ipv4-mvpn] c-multicast signaling bgp [*ABR-vpn-instance-vpn1-af-ipv4-mvpn] quit [*ABR-vpn-instance-vpn1-af-ipv4] quit [*ABR-vpn-instance-vpn1] quit [*ABR] commit
After completing the configurations, 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 vpn1 ipmsi MVPN local I-PMSI information for VPN-Instance: vpn1 Tunnel type: RSVP-TE P2MP LSP Tunnel state: Up P2MP ID: 0x2020202 Tunnel ID: 32801 Extended tunnel ID: 2.2.2.2 Root: 2.2.2.2 (local) Leaf: 1: 3.3.3.3 2: 4.4.4.4
The command outputs show that a P2MP RSVP-TE tunnel has been established, with PE1 as the root node and PE2 and ABR as the leaf nodes.
- Configure the address pool range and condition for switching between I-PMSI and S-PMSI tunnels.
# Configure PE1.
[*PE1] ip vpn-instance vpn1 [*PE1-vpn-instance-vpn1] ipv4-family [*PE1-vpn-instance-vpn1-af-ipv4] mvpn [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] spmsi-tunnel [*PE1-vpn-instance-vpn1-af-ipv4-mvpn-ipmsi-mpls-te] group 225.1.1.1 255.255.255.255 source 10.1.3.5 255.255.255.255 rsvp-te p2mp-template t1 [*PE1-vpn-instance-vpn1-af-ipv4-mvpn-spmsi-mpls-te] quit [*PE1-vpn-instance-vpn1-af-ipv4-mvpn-ipmsi] quit [*PE1-vpn-instance-vpn1-af-ipv4-mvpn] quit [*PE1-vpn-instance-vpn1-af-ipv4] quit [*PE1-vpn-instance-vpn1] quit [*PE1] commit
- Configure PIM.
# Configure PE1.
[*PE1] interface gigabitethernet1/0/1 [*PE1-GigabitEthernet1/0/1] pim sm [*PE1-GigabitEthernet1/0/1] quit [*PE1] commit
# Configure CE1.
[~CE1] multicast routing-enable [*CE1] interface gigabitethernet1/0/0 [*CE1-GigabitEthernet1/0/0] pim sm [*CE1-GigabitEthernet1/0/0] quit [*CE1] interface gigabitethernet1/0/1 [*CE1-GigabitEthernet1/0/1] pim sm [*CE1-GigabitEthernet1/0/1] quit [*CE1] commit
# Configure PE2.
[*PE2] interface gigabitethernet1/0/1 [*PE2-GigabitEthernet1/0/1] pim sm [*PE2-GigabitEthernet1/0/1] quit [*PE2] commit
# Configure CE2.
[~CE2] multicast routing-enable [*CE2] interface gigabitethernet1/0/0 [*CE2-GigabitEthernet1/0/0] pim sm [*CE2-GigabitEthernet1/0/0] quit [*CE2] interface gigabitethernet1/0/1 [*CE2-GigabitEthernet1/0/1] pim sm [*CE2-GigabitEthernet1/0/1] quit [*CE2] commit
- Configure IGMP.
# Configure CE2.
[~CE2] interface gigabitethernet1/0/1 [*CE2-GigabitEthernet1/0/1] pim sm [*CE2-GigabitEthernet1/0/1] igmp enable [*CE2-GigabitEthernet1/0/1] quit [*CE2] commit
- Verify the configuration.
After completing the configurations, check whether segmented NG MPVN is configured successfully. After a user goes online through CE2, CE1 is expected to forward multicast data traffic to the user through the BGP MPLS/IP VPN. In this example, have the user connected to CE2 send an IGMP Report message and the multicast source 10.1.3.5 send multicast data traffic. Then, check multicast routing entries to verify the segmented NG MPVN configuration.
Run the display pim routing-table command on user-side CE2 and source-side CE1 to check the PIM routing tables. Run the display pim vpn-instance routing-table command on the user-side ABR and PE2 and source-side PE1 to check the PIM routing tables of the VPN instance.
[~CE2] display pim routing-table VPN-Instance: public net Total 0 (*, G) entry; 1 (S, G) entry (10.1.3.5, 225.1.1.1) RP: NULL Protocol: pim-sm, Flag: SPT SG_RCVR ACT UpTime: 08:48:25 Upstream interface: GigabitEthernet1/0/0 Upstream neighbor: 192.168.2.1 RPF prime neighbor: 192.168.2.1 Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet1/0/1 Protocol: igmp, UpTime: 08:48:25, Expires: - [~PE2] display pim vpn-instance vpn1 routing-table VPN-Instance: vpn1 Total 0 (*, G) entry; 1 (S, G) entry (10.1.3.5, 225.1.1.1) RP: NULL Protocol: pim-sm, Flag: SPT ACT UpTime: 00:05:16 Upstream interface: through-BGP Upstream neighbor: 2.2.2.2 RPF prime neighbor: 2.2.2.2 Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet1/0/1 Protocol: pim-sm, UpTime: 00:05:16, Expires: 00:03:16 [~PE1] display pim vpn-instance vpn1 routing-table VPN-Instance: vpn1 Total 0 (*, G) entry; 2 (S, G) entries (10.1.3.5, 225.1.1.1) RP: NULL Protocol: pim-sm, Flag: SPT SG_RCVR ACT UpTime: 00:01:00 Upstream interface: GigabitEthernet1/0/1 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:01:00, Expires: - [~CE1] display pim routing-table VPN-Instance: public net Total 0 (*, G) entry; 2 (S, G) entries (10.1.3.5, 225.1.1.1) RP: NULL Protocol: pim-sm, Flag: SPT LOC ACT UpTime: 00:08:39 Upstream interface: GigabitEthernet1/0/0 Upstream neighbor: NULL RPF prime neighbor: NULL Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet1/0/1 Protocol: pim-sm, UpTime: 00:08:39, Expires: 00:02:51
The command outputs show that the source-side CE received PIM Join messages from the user-side CE and PIM routing entries were created successfully.
Configuration Files
CE1 configuration file
# sysname CE1 # multicast routing-enable # interface GigabitEthernet1/0/0 undo shutdown ip address 10.1.3.1 255.255.255.0 pim sm # interface GigabitEthernet1/0/1 undo shutdown ip address 192.168.1.2 255.255.255.0 pim sm # bgp 65001 peer 192.168.1.1 as-number 100 # ipv4-family unicast undo synchronization import-route direct peer 192.168.1.1 enable # return
PE1 configuration file
# sysname PE1 # multicast mvpn 1.1.1.1 # ip vpn-instance vpn1 ipv4-family route-distinguisher 1:1 vpn-target 200:1 export-extcommunity vpn-target 200:1 import-extcommunity multicast routing-enable mvpn sender-enable c-multicast signaling bgp inter-area-segmented enable ipmsi-tunnel mpls te p2mp-template t1 spmsi-tunnel group 225.1.1.1 255.255.255.255 source 10.1.3.5 255.255.255.255 rsvp-te p2mp-template t1 # mpls lsr-id 1.1.1.1 # mpls mpls te mpls te p2mp-te mpls rsvp-te mpls te cspf # mpls te p2mp-template t1 record-route label bandwidth ct0 100 fast-reroute bandwidth bypass-attributes bandwidth 10 priority 7 7 # interface GigabitEthernet1/0/0 undo shutdown ip address 1.0.2.3 255.255.255.0 ospf enable 10 area 0.0.0.0 mpls mpls te mpls rsvp-te mpls te bandwidth max-reservable-bandwidth 100000 mpls te bandwidth bc0 100000 # interface GigabitEthernet1/0/1 undo shutdown ip binding vpn-instance vpn1 ip address 192.168.1.1 255.255.255.0 pim sm dcn # interface LoopBack0 ip address 1.1.1.1 255.255.255.255 ospf enable 10 area 0.0.0.0 # interface NULL0 # bgp 100 router-id 1.1.1.1 peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 2.2.2.2 enable peer 2.2.2.2 route-policy policy1 export peer 2.2.2.2 label-route-capability # ipv4-family mvpn policy vpn-target peer 2.2.2.2 enable #~ ipv4-family vpnv4 policy vpn-target peer 2.2.2.2 enable # ipv4-family vpn-instance vpn1 peer 192.168.1.2 as-number 65001 import-route direct # ospf 10 opaque-capability enable area 0.0.0.0 mpls-te enable # route-policy policy1 permit node 1 apply mpls-label # return
CE2 configuration file
# sysname CE2 # multicast routing-enable # interface GigabitEthernet1/0/0 undo shutdown ip address 192.168.2.2 255.255.255.0 pim sm # interface GigabitEthernet1/0/1 undo shutdown ip address 10.1.4.1 255.255.255.0 pim sm igmp enable # bgp 65002 peer 192.168.2.1 as-number 100 # ipv4-family unicast undo synchronization import-route direct peer 192.168.2.1 enable # return
PE2 configuration file
# sysname PE2 # multicast mvpn 6.6.6.6 # ip vpn-instance vpn1 ipv4-family route-distinguisher 6:1 vpn-target 200:1 export-extcommunity vpn-target 200:1 import-extcommunity multicast routing-enable mvpn c-multicast signaling bgp # mpls lsr-id 6.6.6.6 # mpls mpls te mpls te p2mp-te mpls rsvp-te mpls te cspf # interface GigabitEthernet1/0/0 undo shutdown ip address 1.0.6.6 255.255.255.0 isis enable 1 mpls mpls te mpls rsvp-te mpls te bandwidth max-reservable-bandwidth 100000 mpls te bandwidth bc0 100000 # interface GigabitEthernet1/0/1 undo shutdown ip binding vpn-instance vpn1 ip address 192.168.2.1 255.255.255.0 pim sm igmp enable dcn # interface LoopBack0 ip address 6.6.6.6 255.255.255.255 isis enable 1 # interface NULL0 # bgp 100 peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 2.2.2.2 enable peer 2.2.2.2 route-policy policy1 export peer 2.2.2.2 label-route-capability # ipv4-family mvpn policy vpn-target peer 2.2.2.2 enable #~ ipv4-family vpnv4 policy vpn-target peer 2.2.2.2 enable # route-policy policy1 permit node 1 apply mpls-label # return
ABR configuration file
# sysname ABR # multicast mvpn 2.2.2.2 # multicast mvpn inter-area-segmented enable # ip vpn-instance vpn1 ipv4-family route-distinguisher 2:1 vpn-target 200:1 export-extcommunity vpn-target 200:1 import-extcommunity multicast routing-enable mvpn c-multicast signaling bgp # mpls lsr-id 2.2.2.2 # mpls mpls te mpls te p2mp-te mpls rsvp-te mpls te cspf # mpls te p2mp-template t1 # isis 1 is-level level-2 cost-style wide network-entity 45.0005.0005.0005.00 traffic-eng level-1-2 # interface GigabitEthernet1/0/0 undo shutdown ip address 1.0.6.5 255.255.255.0 isis enable 1 mpls mpls te mpls rsvp-te mpls te bandwidth max-reservable-bandwidth 100000 mpls te bandwidth bc0 100000 # interface GigabitEthernet1/0/1 undo shutdown ip address 1.0.2.5 255.255.255.0 ospf enable 10 area 0.0.0.0 mpls mpls te mpls rsvp-te mpls te bandwidth max-reservable-bandwidth 100000 mpls te bandwidth bc0 100000 # interface LoopBack0 ip address 2.2.2.2 255.255.255.255 ospf enable 10 area 0.0.0.0 isis enable 1 # interface NULL0 # bgp 100 router-id 2.2.2.2 peer 1.1.1.1 as-number 100 peer 1.1.1.1 connect-interface LoopBack0 peer 6.6.6.6 as-number 100 peer 6.6.6.6 connect-interface LoopBack0 # ipv4-family unicast undo synchronization import-route direct peer 1.1.1.1 enable peer 1.1.1.1 route-policy policy1 export peer 1.1.1.1 label-route-capability peer 1.1.1.1 reflect-client peer 1.1.1.1 next-hop-local peer 6.6.6.6 enable peer 6.6.6.6 route-policy policy1 export peer 6.6.6.6 label-route-capability peer 6.6.6.6 reflect-client peer 6.6.6.6 next-hop-local # ipv4-family mvpn reflect change-path-attribute undo policy vpn-target peer 1.1.1.1 enable peer 1.1.1.1 reflect-client peer 6.6.6.6 enable peer 6.6.6.6 route-policy policy_name1 export peer 6.6.6.6 reflect-client peer 6.6.6.6 next-hop-local #~ ipv4-family vpnv4 undo policy vpn-target peer 1.1.1.1 enable peer 1.1.1.1 reflect-client peer 1.1.1.1 next-hop-local peer 6.6.6.6 enable peer 6.6.6.6 reflect-client peer 6.6.6.6 next-hop-local # ipv4-family vpn-instance vpn1 import-route direct # ospf 10 opaque-capability enable area 0.0.0.0 mpls-te enable # route-policy rp1 permit node 1 apply stitch-pmsi rsvp-te p2mp-template t1 route-policy policy1 permit node 2 apply mpls-label # return