Subject: [pim] AssertTrackingDesired(S,G,I)

From: "James Huang" <[email-masked]>
Date: Wed, 17 Apr 2002 16:40:59 -0700

Hi all,

In the current pim-sm draft, AssertTrackingDesired(S,G,I) includes the following clause:
	
  (RPF_interface(RP)==I AND JoinDesired(*,G)==TRUE AND SPTbit(S,G)==FALSE)

Can someone tell me why it is necessary for a router with (*,G) state only to track 
(S,G) asserts in its RPF_intf(RP(G))?

Consider the following scenario:

			S --------------- RP
			|			|
			|			|
			R1			R2
			|			|
			|			|
		-----------------------------------
			|			|
			|			|
			R3			R4
			^			^
			|			|
			|			|
		igmp(S,G) join	   igmp(*,G) join

Suppose we have the following condition before the (S,G) traffic starts:
At R3, RPF'(S)=R1, JoinDesired(S,G) == TRUE, KLA(S,G) not running, and SPTbit(S,G) == 0
At R4, RPF'(RP(G))=R2, JoinDesired(*,G) == TRUE,  and no (S,G) state.

When R1 observes (S,G) traffic forwarded by R2 to the LAN, it will sends a 
(S,G) assert with RPT bit clear.  
When R4 receives the (S,G) assert, it will create the (S,G) state and move its (S,G) assert 
state-machine for the interface from the NoInfo state to the AssertLoser state because 
AssertTrackingDesired(S,G) is TRUE due to the clause above. Furthermore, it will set 
SPTbit(S,G) to 1 because the assert message is received from RPF_intf(S).
Now at R4, JoinDesired(S,G) == FALSE (UpstreamJPState(S,G) != Joined) while SPTbit(S,G) == 1.
This will create a black-hole and cause R4 to drop all (S,G) traffic it receives.

Am I missing something??

Regards,
James Huang
_______________________________________________
pim mailing list
[email-masked]
http://catarina.usc.edu/mailman/listinfo/pim