PIM-SM (ASM and SSM) in GRT

A basic multicast deployment inside the GRT using PIM-SM Any Source Multicast:

CLI Outputs:

SOURCE1#ping 230.0.0.1 source fa0/0 repeat 1000
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 230.0.0.1, timeout is 2 seconds:
Packet sent with a source address of 10.0.11.2

Reply to request 0 from 10.0.21.1, 156 ms
Reply to request 1 from 10.0.21.1, 76 ms
Reply to request 1 from 10.0.21.1, 80 ms
Reply to request 2 from 10.0.21.1, 52 ms
Reply to request 3 from 10.0.21.1, 64 ms



SOURCE2#ping 230.0.0.1 source 10.0.12.2 repeat 1000
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 230.0.0.1, timeout is 2 seconds:
Packet sent with a source address of 10.0.12.2

Reply to request 0 from 10.0.21.1, 120 ms
Reply to request 1 from 10.0.21.1, 56 ms
Reply to request 1 from 10.0.21.1, 112 ms
Reply to request 2 from 10.0.21.1, 116 ms



PE1#show ip mroute
IP Multicast Routing Table
Flags: 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 - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 230.0.0.1), 00:28:37/stopped, RP 10.0.0.3, flags: SPF
  Incoming interface: FastEthernet1/1, RPF nbr 10.0.13.3
  Outgoing interface list: Null

(10.0.12.2, 230.0.0.1), 00:01:20/00:02:13, flags: FT
  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet1/1, Forward/Sparse, 00:01:20/00:03:11

(10.0.11.2, 230.0.0.1), 00:02:01/00:02:10, flags: FT
  Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet1/1, Forward/Sparse, 00:02:01/00:03:06

(*, 224.0.1.40), 03:55:16/00:02:46, RP 10.0.0.3, flags: SJCL
  Incoming interface: FastEthernet1/1, RPF nbr 10.0.13.3
  Outgoing interface list:
    Loopback0, Forward/Sparse, 03:55:16/00:02:46



RP1#show ip mroute
IP Multicast Routing Table
Flags: 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 - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 230.0.0.1), 00:27:20/stopped, RP 10.0.0.3, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet1/0, Forward/Sparse, 00:11:44/00:03:22

(10.0.12.2, 230.0.0.1), 00:00:03/00:03:27, flags: T
  Incoming interface: FastEthernet1/1, RPF nbr 10.0.13.1
  Outgoing interface list:
    FastEthernet1/0, Forward/Sparse, 00:00:03/00:03:26

(10.0.11.2, 230.0.0.1), 00:00:07/00:03:26, flags: T
  Incoming interface: FastEthernet1/1, RPF nbr 10.0.13.1
  Outgoing interface list:
    FastEthernet1/0, Forward/Sparse, 00:00:07/00:03:22

(*, 224.0.1.40), 03:53:10/00:03:20, RP 10.0.0.3, flags: SJCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet1/1, Forward/Sparse, 03:40:36/00:03:15
    FastEthernet1/0, Forward/Sparse, 03:41:30/00:03:20
    Loopback0, Forward/Sparse, 03:53:10/00:02:29



PE2#show ip mroute
IP Multicast Routing Table
Flags: 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 - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 230.0.0.1), 00:24:30/stopped, RP 10.0.0.3, flags: SJC
  Incoming interface: FastEthernet1/0, RPF nbr 10.0.23.3
  Outgoing interface list:
    FastEthernet0/0, Forward/Sparse, 00:12:29/00:02:22

(10.0.12.2, 230.0.0.1), 00:00:49/00:02:10, flags: JT
  Incoming interface: FastEthernet1/0, RPF nbr 10.0.23.3
  Outgoing interface list:
    FastEthernet0/0, Forward/Sparse, 00:00:49/00:02:22

(10.0.11.2, 230.0.0.1), 00:00:52/00:02:07, flags: JT
  Incoming interface: FastEthernet1/0, RPF nbr 10.0.23.3
  Outgoing interface list:
    FastEthernet0/0, Forward/Sparse, 00:00:52/00:02:22

(*, 224.0.1.40), 03:51:06/00:02:21, RP 10.0.0.3, flags: SJCL
  Incoming interface: FastEthernet1/0, RPF nbr 10.0.23.3
  Outgoing interface list:
    FastEthernet0/0, Forward/Sparse, 00:10:39/00:02:21
    Loopback0, Forward/Sparse, 03:51:06/00:01:56



LISTENER1#show ip mroute
IP Multicast Routing Table
Flags: 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 - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 230.0.0.1), 00:10:34/00:02:25, RP 0.0.0.0, flags: SJPL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(*, 224.0.1.40), 00:10:35/00:02:24, RP 0.0.0.0, flags: DPL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

Device Configs:

! PR1
!

ip multicast-routing
ip pim register-source Loopback0
ip pim rp-address 10.0.0.3

int lo0
ip address 10.0.0.3 255.255.255.255
ip pim sparse-mode
exit

int fa1/1
no shut
description Link-to-PE1
ip addr 10.0.13.3 255.255.255.0
ip ospf 1 area 0
ip pim sparse-mode
exit

int fa1/0
no shut
description Link-to-PE2
ip addr 10.0.23.3 255.255.255.0
ip ospf 1 area 0
ip pim sparse-mode
exit

router ospf 1
router-id 10.0.0.3
passive-interface default
no passive-interface fa1/1
no passive-interface fa1/0
network 10.0.0.3 0.0.0.0 area 0
exit



! PE1
!

ip multicast-routing
ip pim rp-address 10.0.0.3

int lo0
ip address 10.0.0.1 255.255.255.255
ip pim sparse-mode
exit

int fa0/0
no shut
description Link-to-SOURCE1
ip addr 10.0.11.1 255.255.255.0
ip pim sparse-mode
exit

int fa0/1
no shut
description Link-to-SOURCE2
ip addr 10.0.12.1 255.255.255.0
ip ospf 1 area 0
ip pim sparse-mode
exit

int fa1/1
no shut
description Link-to-RP1
ip addr 10.0.13.1 255.255.255.0
ip pim sparse-mode
ip ospf 1 area 0
exit

router ospf 1
router-id 10.0.0.1
passive-interface default
no passive-interface fa1/1
network 10.0.0.1 0.0.0.0 area 0
network 10.0.11.0 0.0.0.255 area 0 ! The source addresses must be visible to build the RPF tree
network 10.0.12.0 0.0.0.255 area 0
exit



! PE2
!

ip multicast-routing
ip pim rp-address 10.0.0.3

int lo0
ip address 10.0.0.2 255.255.255.255
ip pim sparse-mode
exit

int fa0/0
no shut
description Link-to-LISTENER1
ip addr 10.0.21.2 255.255.255.0
ip pim sparse-mode
exit

int fa1/0
no shut
description Link-to-RP1
ip addr 10.0.23.2 255.255.255.0
ip ospf 1 area 0
ip pim sparse-mode
exit

router ospf 1
router-id 10.0.0.2
passive-interface default
no passive-interface fa1/0
network 10.0.0.2 0.0.0.0 area 0
! The listener addresses aren't required in the IGP
exit



! SOURCE1
!

ip multicast-routing 

int fa0/0
no shut
description Link-to-PE1
ip addr 10.0.11.2 255.255.255.0
exit



! SOURCE2
!

ip multicast-routing 

int fa0/1
no shut
description Link-to-PE1
ip addr 10.0.12.2 255.255.255.0
exit



! LISTENER1
!

ip multicast-routing 

ip route 0.0.0.0 0.0.0.0 10.0.21.2

int fa0/0
no shut
description Link-to-PE2
ip addr 10.0.21.1 255.255.255.0
ip pim sparse-mode
ip igmp join-group 230.0.0.1
exit

SSM:

When LISTENER1 is configured with "ip igmp join-group 230.0.0.1" it joins the *,230.0.0.1 group. This is not source specific which is why both SOURCE1 and SOURCE2 receive replies to their ICMP echo requests (LISTENER1 is receiving both multicast IP streams, the ICMP echo requests). To implement SSM the global configuration command "ip pim ssm default" must be added to PE1, RP1, PE2 and LISTENER1. "ip igmp version 3" must be applied to fa0/0 on PE2 and LISTENER1 and then the IGMP join command on LISTENER1 under fa0/0 must be replaced with "ip igmp join-group 232.0.0.1 source 10.0.12.2". IGMPv2 doesn't support SSM join requests and SSM isn't enabled by default on IOS.

Now that SSM is configured SOURCE1 and SOURCE2 must ping a different multicast group address, something inside 232.0.0.0/8 which is the reserved SSM range by RFC4607. LISTENER1 will now only respond to the ICMP echo requests coming from 10.0.12.2 (SOURCE2):

LISTENER1#show ip mroute
IP Multicast Routing Table
Flags: 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 - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(10.0.12.2, 232.0.0.1), 00:10:59/00:02:21, flags: sPLTI
  Incoming interface: FastEthernet0/0, RPF nbr 10.0.21.2
  Outgoing interface list: Null

(*, 224.0.1.40), 00:14:49/00:02:21, RP 0.0.0.0, flags: DPL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null



PE2#show ip mroute
IP Multicast Routing Table
Flags: 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 - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(10.0.12.2, 232.0.0.1), 00:09:02/00:02:06, flags: sTI
  Incoming interface: FastEthernet1/0, RPF nbr 10.0.23.3
  Outgoing interface list:
    FastEthernet0/0, Forward/Sparse, 00:08:22/00:02:06

(*, 224.0.1.40), 00:13:16/00:02:45, RP 10.0.0.3, flags: SJCL
  Incoming interface: FastEthernet1/0, RPF nbr 10.0.23.3
  Outgoing interface list:
    FastEthernet0/0, Forward/Sparse, 00:13:16/00:02:06
    Loopback0, Forward/Sparse, 00:13:16/00:02:45



RP1#show ip mroute
IP Multicast Routing Table
Flags: 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 - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(10.0.12.2, 232.0.0.1), 00:09:21/00:02:58, flags: sT
  Incoming interface: FastEthernet1/1, RPF nbr 10.0.13.1
  Outgoing interface list:
    FastEthernet1/0, Forward/Sparse, 00:08:41/00:02:58

(*, 224.0.1.40), 00:37:58/00:02:43, RP 10.0.0.3, flags: SJCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet1/0, Forward/Sparse, 00:36:04/00:02:43
    FastEthernet1/1, Forward/Sparse, 00:37:12/00:02:30
    Loopback0, Forward/Sparse, 00:37:57/00:02:07



PE1#show ip mroute
IP Multicast Routing Table
Flags: 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 - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(10.0.12.2, 232.0.0.1), 00:09:33/00:02:47, flags: sT
  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet1/1, Forward/Sparse, 00:08:53/00:02:47

(*, 224.0.1.40), 00:38:29/00:02:33, RP 10.0.0.3, flags: SJCL
  Incoming interface: FastEthernet1/1, RPF nbr 10.0.13.3
  Outgoing interface list:
    Loopback0, Forward/Sparse, 00:38:28/00:02:33



SOURCE2#ping 232.0.0.1 repeat 1000
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 232.0.0.1, timeout is 2 seconds:

Reply to request 0 from 10.0.21.1, 116 ms
Reply to request 1 from 10.0.21.1, 124 ms
Reply to request 2 from 10.0.21.1, 100 ms
Reply to request 3 from 10.0.21.1, 120 ms



SOURCE1#
SOURCE1#ping 232.0.0.1 repeat 1000
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 232.0.0.1, timeout is 2 seconds:
......

Previous page: MPLS-TE per VRF
Next page: NAT