PIM DM

PIM Dense Mode

Homburg router:

ip multicast-routing

!

interface Loopback 0

ip address 1.1.1.1 255.255.255.255

!

interface serial 0/0

ip address 10.1.1.1 255.255.255.0

ip ospf 1 area 0

ip pim dense-mode

!

interface serial 0/1

ip address 10.1.2.1 255.255.255.0

ip ospf 1 area 0

ip pim dense-mode

Fedora router:

ip multicast-routing

!

interface serial 0/0

ip address 10.1.1.2 255.255.255.252

ip ospf 1 area 0

ip pim dense-mode

!

interface serial 0/1

ip address 10.2.1.1 255.255.255.0

ip ospf 1 area 0

ip pim dense-mode

!

interface serial 0/2

ip address 10.3.1.1 255.255.255.0

ip ospf 1 area 0

ip pim dense-mode

!

!

Porkpie router:

ip multicast-routing

!

interface serial 0/0

ip address 10.2.1.2 255.255.255.0

ip ospf 1 area 0

ip pim dense-mode

!

interface serial 0/1

ip address 10.2.4.2 255.255.255.0

ip ospf 1 area 0

ip pim dense-mode

!

interface fastethernet 0/0

ip address 172.16.1.2 255.255.255.0

ip ospf 1 area 0

ip pim dense-mode

standby 1 ip 172.16.1.1

standby 1 preempt

standby 1 priority 105

standby 1 track serial 0/0 10

Bowler router:

ip multicast-routing

!

interface serial 0/0

ip address 10.3.1.2 255.255.255.252

ip ospf 1 area 0

ip pim dense-mode

!

interface fastethernet 0/0

ip address 172.16.1.3 255.255.255.0

ip ospf 1 area 0

ip pim dense-mode

standby 1 ip 172.16.1.1

standby 1 preempt

!

!

Bowler and Porkpie routers are connected via a multi-access Ethernet network. For a multi-access network, a querier and a DR are elected. The multi-access interface with lowest IP address becomes the querier whose responsibility is to send General and Group-specific queries on the multi-access network. Also, the multi-access interface with highest IP address becomes the DR of the network.

The following output from Bowler shows that Porkpie router is the IGMP querier while this router (Bowler) is the DR.

Bowler# show ip igmp interface fastethernet 0/0

FastEthernet0/0 is up, line protocol is up

Internet address is 172.16.1.3/24

IGMP is enabled on interface

Current IGMP host version is 2

Current IGMP router version is 2

IGMP query interval is 60 seconds

IGMP querier timeout is 120 seconds

IGMP max query response time is 10 seconds

Last member query count is 2

Last member query response interval is 1000 ms

Inbound IGMP access group is not set

IGMP activity: 1 joins, 0 leaves

Multicast routing is enabled on interface

Multicast TTL threshold is 0

Multicast designated router (DR) is 172.16.1.3 (this system)

IGMP querying router is 172.16.1.2

No multicast groups joined by this system

To change IGMP query interval, use ip igmp query-interval.

To change the maximum query response time, use ip igmp max-query-response-time.

Bowler# show ip pim interface

Address Interface Ver/ Nbr Query DR DR

Mode Count Intvl Prior

10.3.1.2 Serial0/0 v2/D 1 30 1 0.0.0.0

172.16.1.3 FastEthernet0/0 v2/D 1 30 1 172.16.1.3

Since Porkpie router is the IGMP querier, it sends periodic queries (every 60 seconds by default) on the network to check for the members. Here, the host (172.16.1.4) replies back with a Membership Report message. The output is taken from debug ip igmp command.

Porkpie# debug ip igmp

*Mar 1 00:24:06.447: IGMP(0): Send v2 general Query on FastEthernet0/0

*Mar 1 00:24:12.523: IGMP(0): Received v2 Report on FastEthernet0/0 from 172.16.1.4 for 239.10.10.10

*Mar 1 00:24:12.527: IGMP(0): Received Group record for group 239.10.10.10, mode 2 from 172.16.1.4 for 0 sources

*Mar 1 00:24:12.531: IGMP(0): Updating EXCLUDE group timer for 239.10.10.10

*Mar 1 00:24:12.535: IGMP(0): MRT Add/Update FastEthernet0/0 for (*,239.10.10.10) by 0

Porkpie and Bowler also decides a Forwarder for the network because it would be useless if they both forward traffic to the host. They use Assert messages to decide who becomes the Forwarder. From the below output (taken from debug ip pim command), it seems that Bowler router will become the Forwarder. Hence, it will put the Fastethernet 0/0 interface in Forwarding state. And so, Porkpie router will put its Fastethernet 0/0 in Prune state.

Bowler# debug ip pim

*Mar 1 00:58:13.667: PIM(0): Send v2 Assert on FastEthernet0/0 for 239.10.10.10, source 10.1.1.1, metric [110/128]

*Mar 1 00:58:13.675: PIM(0): Assert metric to source 10.1.1.1 is [110/128]

*Mar 1 00:58:13.679: PIM(0): We win, our metric [110/128]

*Mar 1 00:58:13.679: PIM(0): (10.1.1.1/32, 239.10.10.10) oif FastEthernet0/0 in Forward state

*Mar 1 00:58:14.219: PIM(0): Received v2 Assert on FastEthernet0/0 from 172.16.1.2

*Mar 1 00:58:14.223: PIM(0): Assert metric to source 10.1.1.1 is [110/128]

*Mar 1 00:58:14.223: PIM(0): We win, our metric [110/128]

*Mar 1 00:58:14.227: PIM(0): (10.1.1.1/32, 239.10.10.10) oif FastEthernet0/0 in Forward state

*Mar 1 00:58:14.231: PIM(0): Received v2 Join/Prune on FastEthernet0/0 from 172.16.1.2, to us

*Mar 1 00:58:14.235: PIM(0): Prune-list: (10.1.1.1/32, 239.10.10.10)

The show ip mroute commands shows the multicast routing table on the router. The following output on R0 router shows (*, G) entry and (S, G) entry. Even though the PIM domain is running PIM-DM on all routers, there is a (*, G) entry. This entry is not used for packet forwarding. The Cisco IOS creates this entry as a “parent” data structure for (S, G). All interfaces connected to PIM neighbors, and all interfaces with directly connected group members, are put into outgoing interface list (aka OIL) of (*, G) entry. The incoming interface list is always Null. The incoming and outgoing interfaces in (S, G) entry are then taken from this list.

Porkpie# show ip mroute 239.10.1.1

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,

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

Outgoing interface flags: H - Hardware switched, A - Assert winner

Timers: Uptime/Expires

Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.10.10.10), 00:40:44/stopped, RP 0.0.0.0, flags: DC

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

FastEthernet0/0, Forward/Dense, 00:40:44/00:00:00

Serial0/1, Forward/Dense, 00:40:44/00:00:00

Serial0/0, Forward/Dense, 00:40:44/00:00:00

(10.1.3.1, 239.10.10.10), 00:00:19/00:02:41, flags: T

Incoming interface: Serial0/1, RPF nbr 10.2.4.1

Outgoing interface list:

Serial0/0, Forward/Dense, 00:00:19/00:00:00

FastEthernet0/0, Forward/Dense, 00:00:19/00:00:00

(10.1.1.1, 239.10.10.10), 00:00:25/00:02:35, flags: T

Incoming interface: Serial0/0, RPF nbr 10.2.1.1

Outgoing interface list:

Serial0/1, Forward/Dense, 00:00:25/00:00:00

FastEthernet0/0, Prune/Dense, 00:00:25/00:02:34

Bowler puts its Fastethernet 0/0 interface in Forwarding state. Its upstream neighbor is Fedora router notified by the RPF neighbor- the one closest to the multicast source.

Bowler# show ip mroute 239.10.1.1

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,

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

Outgoing interface flags: H - Hardware switched, A - Assert winner

Timers: Uptime/Expires

Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.10.10.10), 00:44:14/stopped, RP 0.0.0.0, flags: DC

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

FastEthernet0/0, Forward/Dense, 00:44:14/00:00:00

Serial0/0, Forward/Dense, 00:44:14/00:00:00

(10.1.3.1, 239.10.10.10), 00:00:24/00:02:39, flags: T

Incoming interface: FastEthernet0/0, RPF nbr 172.16.1.2

Outgoing interface list:

Serial0/0, Forward/Dense, 00:00:24/00:00:00

(10.1.1.1, 239.10.10.10), 00:00:24/00:02:39, flags: T

Incoming interface: Serial0/0, RPF nbr 10.3.1.1

Outgoing interface list:

FastEthernet0/0, Forward/Dense, 00:00:24/00:00:00, A

When the member leaves the group, it sends a Leave Group message to “all routers on the subnet” for that group.

Porkpie# debug ip igmp

*Mar 1 01:07:24.391: IGMP(0): Received Leave from 172.16.1.4 (FastEthernet0/0) for 239.10.10.10

*Mar 1 01:07:24.391: IGMP(0): Received Group record for group 239.10.10.10, mode 3 from 172.16.1.4 for 0 sources