Multicast Reverse Path Forwarding

Rashmi Bhardwaj | Blog,Config & Troubleshoot,Protocol,Routing & Switching
Google ADs

In the unicast forwarding of traffic we are only concerned about where the destination is located while for multicast traffic we are concerned about reaching the source. PIM uses the unicast routing table to determine from which interface the Source address of the multicast is reachable. Router will only accept those multicast packets which arrive on the interface which leads towards the source when checked in the routing table. Any multicast packets arriving on some other interface will fail the RPF check on router and hence will be dropped.

Let us use the topology below to understand this behavior –

As per the above diagram we have R1 acting as source of Multicast traffic. We have two links between R2 and R3 wherein one is serial link and other one is the Fast-Ethernet link. We will enable OSPF on all three routers and the path preferred between R2 and R3 will be the Fast-Ethernet link due to lower cost when compared to serial link.

Google ADs

Initial Configuration

R1:

interface FastEthernet0/0

ip address 9.9.12.1 255.255.255.0

ip ospf 1 area 0

R2:

interface FastEthernet0/0

ip address 9.9.12.2 255.255.255.0

ip ospf 1 area 0

!

interface FastEthernet1/0

ip address 9.9.23.2 255.255.255.0

ip ospf 1 area 0

!

interface Serial5/0

ip address 192.168.23.2 255.255.255.0

ip ospf 1 area 0

R3:

interface Loopback0

ip address 3.3.3.3 255.255.255.255

ip ospf 1 area 0

!

interface FastEthernet0/0

ip address 9.9.23.3 255.255.255.0

ip ospf 1 area 0

We see the route to 3.3.3.3 on R2 is preferred via Fast-Ethernet link due to lower cost.

 R2#sh ip route 3.3.3.3

Routing entry for 3.3.3.3/32

Known via “ospf 1”, distance 110, metric 2, type intra area

Last update from 9.9.23.3 on FastEthernet1/0, 00:01:41 ago

Routing Descriptor Blocks:

  * 9.9.23.3, from 9.9.23.3, 00:01:41 ago, via FastEthernet1/0

Route metric is 2, traffic share count is 1

Now let us enable the multicast on all routers using the PIM dense mode to avoid having RP in the topology. On R2 we will enable the multicasting only on the Se5/0 interface and not on the Fast-Ethernet link between R2 and R3.

R1:

R1(config)#ip multicast-routing

R1(config)#int fa0/0

R1(config-if)#ip pim dense-mode

R2:

R2(config)#ip multicast-routing

R2(config)#int fa0/0

R2(config-if)#ip pim dense-mode

R2(config-if)#int se5/0

R2(config-if)#ip pim dense-mode

R3:

R3(config)#ip multicast-routing

R3(config)#int se5/0

R3(config-if)#ip pim dense-mode

R3(config)#int lo0

R3(config-if)#ip pim dense-mode

As per the configuration done so far we will use Ethernet link between R2 and R3 for unicast traffic and serial link is to be used for multicast traffic.

Configured R3 to join the multicast group 239.1.1.1

R3(config)#int lo0

R3(config-if)#ip igmp join-group 239.1.1.1

 

Now let us send some packets from source R1 via ping.

R1#ping 239.1.1.1 re 100

Type escape sequence to abort.

Sending 100, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

….

As we see the ping fails. To find out let us do some troubleshoot as below:

On R2 we see the R2 sends the multicast packet towards R3 via interface Se5/0.

R2#sh ip mroute 239.1.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, 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,

G – Received BGP C-Mroute, g – Sent BGP C-Mroute,

Q – Received BGP S-A Route, q – Sent BGP S-A Route,

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

 

(*, 239.1.1.1), 00:00:07/stopped, RP 0.0.0.0, flags: D

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Serial5/0, Forward/Dense, 00:00:07/stopped

FastEthernet0/0, Forward/Dense, 00:00:07/stopped

 

(9.9.12.1, 239.1.1.1), 00:00:07/00:02:52, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 9.9.12.1

  Outgoing interface list:

  Serial5/0, Forward/Dense, 00:00:07/stopped

The reason behind the packet drop is that on R3 the interface leading towards the source is Fa0/0 while the packet is received on Se5/0 interface which is why it is dropped due to RPF Failure.

Debug output on R3 shows the multicast packet received on Serial5/0 port.

 *Dec  7 16:53:54.015: MFIBv4(0x0): Receive (9.9.12.1,239.1.1.1) from Serial5/0 (PS): hlen 5 prot 1 len 100 ttl 253 frag 0x0

Source is reachable via Fa0/0.

R3# sh ip route 9.9.12.1

Routing entry for 9.9.12.0/24

Known via “ospf 1”, distance 110, metric 2, type intra area

Last update from 9.9.23.2 on FastEthernet0/0, 00:31:57 ago

Routing Descriptor Blocks:

  * 9.9.23.2, from 9.9.12.2, 00:31:57 ago, via FastEthernet0/0

Route metric is 2, traffic share count is 1

Now in order to remedy such situation enable either Multicast on Ethernet link between R2 and R3 or add below static route on R3.

R3(config)#ip mroute 9.9.12.1 255.255.255.255 serial 5/0

We will add the static route in our case on R3 and try ping from R1 again.

Now we see we are able to ping the group.

R1#ping 239.1.1.1 re 100

Type escape sequence to abort.

Sending 100, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 3.3.3.3, 8 ms

Reply to request 1 from 3.3.3.3, 28 ms

Reply to request 2 from 3.3.3.3, 36 ms

Reply to request 3 from 3.3.3.3, 132 ms

Reply to request 4 from 3.3.3.3, 80 ms

Reason –

Now the packet is received on SE5/0 interface on R3 and same is the interface which leads to the source as below.

R3#sh ip mroute 239.1.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, 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,

G – Received BGP C-Mroute, g – Sent BGP C-Mroute,

Q – Received BGP S-A Route, q – Sent BGP S-A Route,

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

 

(*, 239.1.1.1), 00:25:16/stopped, RP 0.0.0.0, flags: DCL

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Serial5/0, Forward/Dense, 00:16:37/stopped

Loopback0, Forward/Dense, 00:25:16/stopped

 

(9.9.12.1, 239.1.1.1), 00:04:35/00:01:24, flags: LT

  Incoming interface: Serial5/0, RPF nbr 192.168.23.2, Mroute

Outgoing interface list:

Loopback0, Forward/Dense, 00:04:35/stopped

ABOUT THE AUTHOR


Leave a Comment

Your email address will not be published. Required fields are marked *

Shopping Cart