Multicast, RPF check for Register message

 

image

Hi all,
I'm having trouble grasping some actions in this topology.

Before I ask the questions keep in mind:

- ip pim sparse-mode is enabled on all interfaces
- ip pim rp-add 150.1.5.5 is configured on all routers. That's R5's loopback.
- the stub network on R1 is a loopback1 interface.
- the R5's next-hop to 155.1.146.0/24 network is R1.
- finally, PIM DR for 146.0/24 segment is R6.

I made this topology just to isolate my questions.

First i enable ip igmp join-group 224.10.10.10 on R1's stub network (loopback1). 
The moment i do that, R1 sends join message to R5. There is now shared tree root at R5:

(*, 224.10.10.10), 00:00:48/00:02:41, RP 150.1.5.5, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
  FastEthernet0/1, Forward/Sparse, 00:00:48/00:02:41

(*, 224.0.1.40), 00:00:53/00:02:39, RP 150.1.5.5, flags: SJCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
  FastEthernet0/0, Forward/Sparse, 00:00:53/00:02:54

Now, i source traffic from R1, ping 224.10.10.10 re 10 and this is output on R5:

IP(0): s=155.1.15.1 (FastEthernet0/1) d=224.10.10.10 id=179, ttl=254, prot=1, len=114(100), mroute olist null
PIM(0): Received v2 Register on FastEthernet0/1 from 155.1.15.1
  for 10.0.0.1, group 224.10.10.10

PIM(0): Insert (10.0.0.1,224.10.10.10) join in nbr 155.1.15.1's queue
PIM(0): Forward decapsulated data packet for 224.10.10.10 on FastEthernet0/1
PIM(0): Received v2 Join/Prune on FastEthernet0/1 from 155.1.15.1, to us
PIM(0): Prune-list: (10.0.0.1/32, 224.10.10.10) RPT-bit set
PIM(0): Building Join/Prune packet for nbr 155.1.15.1
PIM(0): Adding v2 (10.0.0.1/32, 224.10.10.10), S-bit Join
PIM(0): Send v2 join/prune to 155.1.15.1 (FastEthernet0/1)
R5#
PIM(0): Received v2 Register on FastEthernet0/0 from 155.1.146.6
  for 155.1.146.1, group 224.10.10.10

PIM(0): Insert (155.1.146.1,224.10.10.10) join in nbr 155.1.15.1's queue
PIM(0): Forward decapsulated data packet for 224.10.10.10 on FastEthernet0/1
PIM(0): Building Join/Prune packet for nbr 155.1.15.1
PIM(0): Adding v2 (155.1.146.1/32, 224.10.10.10), S-bit Join
PIM(0): Send v2 join/prune to 155.1.15.1 (FastEthernet0/1)
PIM(0): Received v2 Join/Prune on FastEthernet0/1 from 155.1.15.1, to us
PIM(0): Prune-list: (155.1.146.1/32, 224.10.10.10) RPT-bit set
R5#
IP(0): s=155.1.15.1 (FastEthernet0/1) d=224.10.10.10 id=180, ttl=254, prot=1, len=114(100), mroute olist null
PIM(0): Received v2 Register on FastEthernet0/1 from 155.1.15.1
  for 10.0.0.1, group 224.10.10.10
PIM(0): Forward decapsulated data packet for 224.10.10.10 on FastEthernet0/1
PIM(0): Insert (10.0.0.1,224.10.10.10) join in nbr 155.1.15.1's queue
PIM(0): Building Join/Prune packet for nbr 155.1.15.1
PIM(0): Adding v2 (10.0.0.1/32, 224.10.10.10), S-bit Join
PIM(0): Send v2 join/prune to 155.1.15.1 (FastEthernet0/1)
IP(0): s=10.0.0.1 (FastEthernet0/1) d=224.10.10.10 id=180, ttl=253, prot=1, len=114(100), mroute olist null
PIM(0): Received v2 Assert on FastEthernet0/1 from 155.1.15.1
PIM(0): Assert metric to source 10.0.0.1 is [0/0]
PIM(0): Cached metric is [Inf/-1]
PIM(0): Received v2 Register on FastEthernet0/0 from 155.1.146.6
  for 155.1.146.1, group 224.10.10.10
PIM(0): Forward decapsulated data packet for 224.10.10.10 on FastEthernet0/1
PIM(0): Insert
R5#(155.1.146.1,224.10.10.10) join in nbr 155.1.15.1's queue
PIM(0): Building Join/Prune packet for nbr 155.1.15.1
PIM(0): Adding v2 (155.1.146.1/32, 224.10.10.10), S-bit Join
PIM(0): Send v2 join/prune to 155.1.15.1 (FastEthernet0/1)
PIM(0): Received v2 Assert on FastEthernet0/1 from 155.1.15.1
PIM(0): Assert metric to source 155.1.146.1 is [0/0]
PIM(0): Cached metric is [Inf/-1]

The way i understand,

R1 sends Register message to R5, R5 sends register stop back to R1, and also prunes the path as there is more direct path from R1...to R1's loopback.

But why does R5 receives Register message from 155.1.146.6? I understand that when i originate multicast to 146.0/26 segment R6 tries to register FOR 155.1.146.1 as it is the DR on segment, but shouldn't RPF check FAIL on R5? Register message is received via R4 but the shortest unicast path to R6 is via R1.

As far as R6 sending Register message, does that mean that if R1 was connected to several network segments, every PIM DR on those segments would try to Register to RP

R5:

(*, 224.10.10.10), 00:01:01/00:03:27, RP 150.1.5.5, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
  FastEthernet0/1, Forward/Sparse, 00:01:01/00:03:27

(10.0.0.1, 224.10.10.10), 00:00:26/00:02:35, flags: PT
  Incoming interface: FastEthernet0/1, RPF nbr 155.1.15.1
  Outgoing interface list: Null

(155.1.15.1, 224.10.10.10), 00:00:26/00:02:54, flags: PT
  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(155.1.146.1, 224.10.10.10), 00:00:26/00:02:41, flags: P
  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(*, 224.0.1.40), 00:01:07/00:02:53, RP 150.1.5.5, flags: SJCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
  FastEthernet0/0, Forward/Sparse, 00:01:08/00:02:52



Finally, what is that highlighted part about Inf metric in debug ? If that has to do with electing forwarder on segment, isn't that done on multiaccess segments only where there would be more than 2 PIM neighbors??

I really hope that's not too many questions just need some clearing up. THX!

Comments

Sign In or Register to comment.