Multicast VPN - The New Way
The new way refers to the setting up of Multipoint LSP in the MPLS VPN environment to carry multicast traffic in the VPN. Here, all CE routers belong to a single customer at different branches. There is no multicast receiver behind CE3 router. The MPLS core is PIM-free. Only PE routers will run PIM with the CE routers.
PE routers configuration
The Loopback 0 interface of PE1 router is configured to be used as the Root Node IP address. The Opaque value for the multipoint LSP is constructed based on the VPN ID value of 1:1. The mdt default mpls mldp command creates the MP2MP LSP known to all PE routers for that particular VRF. This LSP is used to forward all customer multicast traffic by default.
PE1 router
ip vrf CUST1 rd 1:1 vpn id 1:1 ! This is used to construct the Opaque value route-target both 1:1 mdt default mpls mldp 1.1.1.1 ! 1.1.1.1 indicates the Root node and creates the shared MP2MP LSP between PE2 and PE3 routers for vrf CUST1
!interface Loopback 0 ip address 1.1.1.1 255.255.255.255 ip ospf 1 area 0!ip multicast-routing vrf CUST1 ! Enabled Multicast routing for VRF CUST1!ip pim vrf CUST1 rp-address 12.1.1.1!interface fastethernet 1/1 ip vrf forwarding CUST1 ip address 192.168.1.1 255.255.255.0 ip pim sparse-mode!router bgp 100 neighbor 3.3.3.3 remote-as 100 neighbor 3.3.3.3 update-source Loopback 0 neighbor 4.4.4.4 remote-as 100 neighbor 4.4.4.4 update-source Loopback 0 ! address-family vpnv4 neighbor 3.3.3.3 activate neighbor 4.4.4.4 activate exit-address-family ! address-family ipv4 vrf CUST1 redistribute connected exit-address-family!The configuration of PE2 and PE3 is same as PE1 router.
PE2 router
ip vrf CUST1 rd 1:1 vpn id 1:1 route-target both 1:1 mdt default mpls mldp 1.1.1.1
!interface Loopback 0 ip address 3.3.3.3 255.255.255.255 ip ospf 1 area 0!ip multicast-routing vrf CUST1 !ip pim vrf CUST1 rp-address 12.1.1.1!interface fastethernet 1/1 ip vrf forwarding CUST1 ip address 192.168.2.1 255.255.255.0 ip pim sparse-mode!router bgp 100 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 update-source Loopback 0 neighbor 4.4.4.4 remote-as 100 neighbor 4.4.4.4 update-source Loopback 0 ! address-family vpnv4 neighbor 1.1.1.1 activate neighbor 4.4.4.4 activate exit-address-family ! address-family ipv4 vrf CUST1 redistribute connected exit-address-family!PE3 router
ip vrf CUST1 rd 1:1 vpn id 1:1 route-target both 1:1 mdt default mpls mldp 1.1.1.1
!interface Loopback 0 ip address 4.4.4.4 255.255.255.255 ip ospf 1 area 0!ip multicast-routing vrf CUST1 !ip pim vrf CUST1 rp-address 12.1.1.1!interface fastethernet 1/1 ip vrf forwarding CUST1 ip address 192.168.3.1 255.255.255.0 ip pim sparse-mode!router bgp 100 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 update-source Loopback 0 neighbor 3.3.3.3 remote-as 100 neighbor 3.3.3.3 update-source Loopback 0 ! address-family vpnv4 neighbor 1.1.1.1 activate neighbor 3.3.3.3 activate exit-address-family ! address-family ipv4 vrf CUST1 redistribute connected exit-address-family!No multicast traffic is sent by CE routers at this stage.
MP2MP LSP (Default MDT)
When remote PE routers peer with PE1 router, they discover the Root node. PE2 and PE3 routers allocate a label mapping for {1.1.1.1, 100:1} and sends the MP2MP-D Label Mapping to P router. The P router allocates a label and responds with MP2MP-U Label Mapping. It also sends a MP2MP-D Label Mapping to the PE1 router (Root node) and anticipates an MP2MP-U Label Mapping.
The following shows the output of debug mpls mldp all command. PE1 also forms PIM adjacency with PE2 and PE3 via Lspvif0 interface.
"debug mpls mldp all" on PE1
PE1#*May 12 23:08:42.243: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet1/0 from LOADING to FULL, Loading DonePE1#*May 12 23:08:53.399: %LDP-5-NBRCHG: LDP Neighbor 2.2.2.2:0 (1) is UP*May 12 23:08:53.431: MLDP-NBR: 2.2.2.2:0 UP sess_hndl: 2, (old ID: 0.0.0.0:0)*May 12 23:08:53.435: MLDP-NBR: Route watch started for 2.2.2.2 topology: base ipv4*May 12 23:08:53.439: MLDP-NBR: 2.2.2.2:0 old paths: 0 new paths: 1*May 12 23:08:53.439: MLDP-NBR: 2.2.2.2:0 ask LDP for adjacencies*May 12 23:08:53.535: MLDP-NBR: 2.2.2.2:0 LDP update NH: 10.1.1.2, Interface: FastEthernet1/0 Add*May 12 23:08:53.559: MLDP-NBR: 2.2.2.2:0 Check branches for path change*May 12 23:08:54.655: MLDP-LDP: [mdt 1:1 0] label mapping from: 2.2.2.2:0 label: 21 root: 1.1.1.1 Opaque_len: 14 sess_hndl: 0x2*May 12 23:08:54.671: MLDP-MFI: [mdt 1:1 0] allocated upstream label 19*May 12 23:08:54.675: MLDP-MFI: Bind local upstream label 19 to PSM ID: 4A000005 returned: 19*May 12 23:08:54.679: MLDP-DB: [mdt 1:1 0] Changing branch 2.2.2.2:0 from Null/0.0.0.0 to FastEthernet1/0/10.1.1.2*May 12 23:08:54.683: MLDP-DB: [mdt 1:1 0] Added MP2MP branch for 2.2.2.2:0 labePE1# upstream local label 19*May 12 23:08:54.695: MLDP-MFI: PSM-ID: 8A000001, Add Path type: PKT, Label: 21, Nexthop: 2.2.2.2, Interface: NULL*May 12 23:08:54.703: MLDP-MFI: PSM-ID: 98000002, Add Path type: PKT, Label: 21, Nexthop: 2.2.2.2, Interface: NULL*May 12 23:08:54.707: MLDP-MFI: PSM-ID: 4A000005, Add Path type: REC_IF, Interface: Lspvif0*May 12 23:08:54.715: MLDP: [mdt 1:1 0] label mappping msg sent to 2.2.2.2:0 success*May 12 23:08:54.719: MLDP: Flush ldp message queue for 2.2.2.2:0 success*May 12 23:08:57.739: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to upPE1 has no PIM adjacency with P router. However, it has PIM adjacency with PE2 and PE3 routers via Lspvif0 interface.
PIM Adjacencies
!--- The following output shows no PIM adjacencies within MPLS corePE1# show ip pim neighborPIM Neighbor TableMode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority, P - Proxy Capable, S - State Refresh Capable, G - GenID CapableNeighbor Interface Uptime/Expires Ver DRAddress Prio/ModePE1#!--- The following output shows PIM adjacencies with CE1 router, PE2 and PE3 routersPE1# show ip pim vrf CUST1 neighborPIM Neighbor TableMode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority, P - Proxy Capable, S - State Refresh Capable, G - GenID CapableNeighbor Interface Uptime/Expires Ver DRAddress Prio/Mode192.168.1.2 FastEthernet1/1 00:01:03/00:01:40 v2 1 / DR S G4.4.4.4 Lspvif0 00:26:24/00:01:25 v2 1 / DR S P G3.3.3.3 Lspvif0 00:28:36/00:01:23 v2 1 / S P GThe show mpls mldp neighbor command shows mLDP neighbors and the paths taken.
show mpls mldp neighbors
PE1# show mpls mldp neighbors MLDP peer ID : 2.2.2.2:0, uptime 00:06:54 Up, Target Adj : No Session hndl : 2 Upstream count : 0 Branch count : 1 Path count : 1 Path(s) : 10.1.1.2 LDP FastEthernet1/0 Nhop count : 0The show mpls mldp database command shows the following information. The Replication Clients are the downstream nodes of the MP2MP LSP. They are to receive multipoint replicated traffic. On the Root node and Leaf nodes, the Replication Clients will the Multicast-enabled VRF which uses Lspvif0 interface as the ingress interface.
show mpls mldp database on PE1
PE1# show mpls mldp database * Indicates MLDP recursive forwarding is enabledLSM ID : 4D000001 (RNR LSM ID: 7F000002) Type: MP2MP Uptime : 00:28:58 FEC Root : 1.1.1.1 (we are the root) Opaque decoded : [mdt 1:1 0] Opaque length : 11 bytes Opaque value : 07 000B 0000010000000100000000 RNR active LSP : (this entry) Upstream client(s) : None Expires : N/A Path Set ID : 8A000001 Replication client(s): MDT (VRF CUST1) Uptime : 00:28:58 Path Set ID : 98000002 Interface : Lspvif0 2.2.2.2:0 Uptime : 00:15:46 Path Set ID : 4A000005 Out label (D) : 21 Interface : FastEthernet1/0* Local label (U): 19 Next Hop : 10.1.1.2The same command on P routers shows its Upstream and Downstream nodes, and the labels to be used. On P router, the Upstream Client will be the Root node (PE1) while the Replication Clients will be the Leaf nodes (PE2 and PE3).
show mpls mldp database on P
P# show mpls mldp database * Indicates MLDP recursive forwarding is enabledLSM ID : DA000002 Type: MP2MP Uptime : 00:16:07 FEC Root : 1.1.1.1 Opaque decoded : [mdt 1:1 0] Opaque length : 11 bytes Opaque value : 07 000B 0000010000000100000000 Upstream client(s) : 1.1.1.1:0 [Active] Expires : Never Path Set ID : F9000004 Out Label (U) : 19 Interface : FastEthernet1/0* Local Label (D): 21 Next Hop : 10.1.1.1 Replication client(s): 3.3.3.3:0 Uptime : 00:16:07 Path Set ID : 11000005 Out label (D) : 16 Interface : FastEthernet1/1* Local label (U): 19 Next Hop : 10.1.1.6 4.4.4.4:0 Uptime : 00:16:07 Path Set ID : 5C000006 Out label (D) : 17 Interface : FastEthernet2/0* Local label (U): 18 Next Hop : 10.2.2.2"show mpls mldp neighbors" on PE2 and PE3
PE2# show mpls mldp database * Indicates MLDP recursive forwarding is enabledLSM ID : 7A000001 (RNR LSM ID: 88000002) Type: MP2MP Uptime : 00:25:34 FEC Root : 1.1.1.1 Opaque decoded : [mdt 1:1 0] Opaque length : 11 bytes Opaque value : 07 000B 0000010000000100000000 RNR active LSP : (this entry) Upstream client(s) : 2.2.2.2:0 [Active] Expires : Never Path Set ID : 45000001 Out Label (U) : 19 Interface : FastEthernet1/0* Local Label (D): 16 Next Hop : 10.1.1.5 Replication client(s): MDT (VRF CUST1) Uptime : 00:25:34 Path Set ID : B9000002 Interface : Lspvif0PE3# show mpls mldp database * Indicates MLDP recursive forwarding is enabledLSM ID : 78000001 (RNR LSM ID: DC000002) Type: MP2MP Uptime : 00:23:40 FEC Root : 1.1.1.1 Opaque decoded : [mdt 1:1 0] Opaque length : 11 bytes Opaque value : 07 000B 0000010000000100000000 RNR active LSP : (this entry) Upstream client(s) : 2.2.2.2:0 [Active] Expires : Never Path Set ID : E6000001 Out Label (U) : 18 Interface : FastEthernet1/0* Local Label (D): 17 Next Hop : 10.2.2.1 Replication client(s): MDT (VRF CUST1) Uptime : 00:23:40 Path Set ID : B1000002 Interface : Lspvif0The show mpls mldp bindings command shows the Upstream and Downstream label assignment on the routers.
show mpls mldp bindings
PE1# show mpls mldp bindingsSystem ID: 4D000001Type: MP2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 0]lsr: 2.2.2.2:0, local binding[U]: 21, remote binding[D]: 21P# show mpls mldp bindingsSystem ID: DA000002Type: MP2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 0]lsr: 1.1.1.1:0, remote binding[U]: 21, local binding[D]: 21 activelsr: 3.3.3.3:0, local binding[U]: 16, remote binding[D]: 16lsr: 4.4.4.4:0, local binding[U]: 17, remote binding[D]: 17PE2# show mpls mldp bindingsSystem ID: 7A000001Type: MP2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 0]lsr: 2.2.2.2:0, remote binding[U]: 16, local binding[D]: 16 activePE3# show mpls mldp bindingsSystem ID: 78000001Type: MP2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 0]lsr: 2.2.2.2:0, remote binding[U]: 17, local binding[D]: 17 activeNow multicast traffic is sourced from CE1 router with CE2 being the multicast receiver. For PE1 router, the incoming interface is the interface connected to the CE1 router. The outgoing interface will be Lspvif0.
PE1# show ip mroute vrf CUST1 239.10.10.1IP Multicast Routing TableFlags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group, V - RD & Vector, v - VectorOutgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode(*, 239.10.10.1), 00:00:55/stopped, RP 12.1.1.1, flags: SP Incoming interface: Lspvif0, RPF nbr 3.3.3.3 Outgoing interface list: Null(192.168.1.2, 239.10.10.1), 00:00:55/00:02:04, flags: T Incoming interface: FastEthernet1/1, RPF nbr 192.168.1.2 Outgoing interface list: Lspvif0, Forward/Sparse, 00:00:50/00:02:39PE2 router will receive the multicast traffic on incoming interface Lspvif0 and outgoing interface will be Fa 1/1 connected to CE2 router.
show ip mroute vrf CUST1 on PE2
PE2# show ip mroute vrf CUST1 239.10.10.1IP Multicast Routing TableFlags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group, V - RD & Vector, v - VectorOutgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode(*, 239.10.10.1), 00:02:48/stopped, RP 12.1.1.1, flags: SP Incoming interface: FastEthernet1/1, RPF nbr 192.168.2.2 Outgoing interface list: Null(192.168.1.2, 239.10.10.1), 00:01:51/00:01:38, flags: T Incoming interface: Lspvif0, RPF nbr 1.1.1.1 Outgoing interface list: FastEthernet1/1, Forward/Sparse, 00:01:51/00:03:01P2MP LSP (Data MDT)
The P2MP LSP can be configured as follows.
PE1 router
ip vrf CUST1 rd 1:1 vpn id 1:1 route-target both 1:1 mdt default mpls mldp 1.1.1.1 mdt data threshold 1 ! This will cause Leaf nodes to switchover to P2MP LSP (Data MDT) when the traffic crosses the threshold of 1 kbps mdt data mpls mldp 10 ! Only 10 P2MP LSPs are allowed per VRF using this !Now when multicast traffic from CE1 router to CE2 router crosses the threshold of 1 kbps (default), Leaf nodes initiates P2MP LSP set up.
P2MP LSP setup
*May 12 23:41:42.907: MLDP-MDT: [mdt 1:1 1] wavl insert success*May 12 23:41:42.923: MLDP-MDT: [mdt 1:1 1] client update: We are the root*May 12 23:41:42.927: MLDP-MDT: [mdt 1:1 1] create adjacency for root update, success*May 12 23:41:42.931: MLDP-MFI: Attached adj 225.0.0.0 to 3A000006*May 12 23:41:42.935: MLDP-DB: [mdt 1:1 1] Added P2MP branch for MDT label*May 12 23:41:42.939: MLDP-MDT: [mdt 1:1 1] client update: We are the root*May 12 23:41:42.943: MLDP-MFI: Attached adj 225.0.0.0 to 3A000006*May 12 23:41:44.035: MLDP-LDP: [mdt 1:1 1] label mapping from: 2.2.2.2:0 label: 22 root: 1.1.1.1 Opaque_len: 14 sess_hndl: 0x2*May 12 23:41:44.051: MLDP-DB: [mdt 1:1 1] Changing branch 2.2.2.2:0 from Null/0.0.0.0 to FastEthernet1/0/10.1.1.2*May 12 23:41:44.055: MLDP-DB: [mdt 1:1 1] Added P2MP branch for 2.2.2.2:0 label 22*May 12 23:41:44.063: MLDP-MFI: PSM-ID: 3A000006, Add Path type: PKT, Label: 22, Nexthop: 2.2.2.2, Interface: NULLThe following output shows that PE2 router joined MDT-data group. The flag "Y" indicates this.
Text Box
PE2# show ip mroute vrf CUST1 239.10.10.1IP Multicast Routing TableFlags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group, V - RD & Vector, v - VectorOutgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode(*, 239.10.10.1), 00:07:10/stopped, RP 12.1.1.1, flags: SP Incoming interface: FastEthernet1/1, RPF nbr 192.168.2.2 Outgoing interface list: Null(192.168.1.2, 239.10.10.1), 00:00:55/00:02:34, flags: TY Incoming interface: Lspvif0, RPF nbr 1.1.1.1, MDT: [1, 1.1.1.1]/00:02:10 Outgoing interface list: FastEthernet1/1, Forward/Sparse, 00:00:55/00:02:40The PE1 router then sends all multicast traffic to P2MP LSP. The flag "y" indicates this.
PE1 sends multicast traffic to MDT-data group
PE1# show ip mroute vrf CUST1 239.10.10.1IP Multicast Routing TableFlags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group, V - RD & Vector, v - VectorOutgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode(*, 239.10.10.1), 00:06:04/stopped, RP 12.1.1.1, flags: SP Incoming interface: Lspvif0, RPF nbr 3.3.3.3 Outgoing interface list: Null(192.168.1.2, 239.10.10.1), 00:00:35/00:00:26, flags: Ty Incoming interface: FastEthernet1/1, RPF nbr 192.168.1.2 Outgoing interface list: Lspvif0, Forward/Sparse, 00:03:03/00:02:49The show mpls mldp bindings command shows new labels assigned for P2MP LSP.
P2MP LSP labels
PE1# show mpls mldp bindingsSystem ID: 4Type: P2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 1]lsr: 2.2.2.2:0, remote binding[D]: 22System ID: 4D000001Type: MP2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 0]lsr: 2.2.2.2:0, local binding[U]: 21, remote binding[D]: 21PE2# show mpls mldp bindingsSystem ID: E2000004Type: P2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 1]lsr: 2.2.2.2:0, local binding[D]: 22 activeSystem ID: 7A000001Type: MP2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 0]lsr: 2.2.2.2:0, remote binding[U]: 16, local binding[D]: 16 activePE3# show mpls mldp bindingsSystem ID: 78000001Type: MP2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 0]lsr: 2.2.2.2:0, remote binding[U]: 17, local binding[D]: 17 activeP# show mpls mldp bindingsSystem ID: 41000004Type: P2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 1]lsr: 1.1.1.1:0, local binding[D]: 22 activelsr: 3.3.3.3:0, remote binding[D]: 22System ID: DA000002Type: MP2MP, Root Node: 1.1.1.1, Opaque Len: 14Opaque value: [mdt 1:1 0]lsr: 1.1.1.1:0, remote binding[U]: 21, local binding[D]: 21 activelsr: 3.3.3.3:0, local binding[U]: 16, remote binding[D]: 16lsr: 4.4.4.4:0, local binding[U]: 17, remote binding[D]: 17