Subject: [pim] SPTbit (S,G)

From: "Shankar Vasudevan" <[email-masked]>
Date: 15 Jan 2002 10:13:56 -0000

Hi,

SPTbit (S,G) is set to TRUE when 

(iif == RPF_interface(S) 
   AND JoinDesired(S,G) == TRUE
   AND ( DirectlyConnected(S) == TRUE
         OR RPF_interface(S) != RPF_interface(RP)
         OR inherited_olist(S,G,rpt) == NULL
         OR RPF`(S,G) == RPF`(*,G))) 

is this macro only used for "setting" the bit or 
is it executed for "clearing" the bit.

for example, if the inherited_olist(S,G,rpt) becomes non-NULL and given that RPF_interface(S) == RPF_interface(RP) and RPF`(S,G) != RPF`(*,G) and DirectlyConnected(S) is false,

shoule we clear the SPT bit ? 

draft also says "The SPT bit is cleared in the (S,G) upstream state machine when JoinDesired(S,G) becomes FALSE". 

but it does not say "The SPT bit is cleared .. ONLY when JoinDesired(S,G) becomes FALSE". 

please clarify

regards,
shankar

---

From: "Jyotheeswara Rao Kurma" <[email-masked]>
Date: Tue, 15 Jan 2002 16:35:56 +0500

As per my understanding , draft discusses, SPT bit setting only.

This Macro doesn't clear the SPT bit, as there is no else part of it.

Jyotheesh

--------------------------------------------------------------------
Every moment is a golden one for him who has the vision to recognize it 
as such. 
-- Henry Miller 

----- Original Message -----
From: "Shankar  Vasudevan" <[email-masked]>
Date: Tuesday, January 15, 2002 3:43 pm
Subject: [pim] SPTbit (S,G)

> for example, if the inherited_olist(S,G,rpt) becomes non-NULL and 
> given that RPF_interface(S) == RPF_interface(RP) and RPF`(S,G) != 
> RPF`(*,G) and DirectlyConnected(S) is false,
> 
> draft also says "The SPT bit is cleared in the (S,G) upstream 
> state machine when JoinDesired(S,G) becomes FALSE". 
>

---

From: "John Zwiebel" <[email-masked]>
Date: Tue, 15 Jan 2002 12:16:00 -0800

FWIW:

As long as you want to receive packets on the shortest-path,
ie joinDesired == TRUE,
there is no reason to clear the SPT bit, since that tells you
you actually have received packets on the shortest-path.
ie once set it stays set unless there's an RPF change or something
like that.

All of the "ORs" in this macro are used to ensure that
the router is really receiving packets on the SPT and not
the RPT.

The one case that may not be clear is when you want to
switch back from the SPT to the RPT.  IMHO, if the goal
is to maintain consistent delivery of data to the 
receivers, switching back is not a good idea.  If the
desire is to limit the amount of (S,G) state in a domain,
make that a policy decision and deploy bi-dir PIM.

The initial PIM goals of years ago, where you wanted to
have it "both ways" where some receivers would stay
on the shared-tree and others would switch to the source
tree, or the idea that you would switch to the source 
tree only for those sources that had high data rates, 
have proven to be unworkable.  Although one might
be able to successfully argue that this was because of
an incomplete understanding of the protocol requirements
and/or an inconsistent implementation -- the time for
realizing those goals has been superceded by the 
deployment of SSM and Bi-dir which can much more
effectively and reliably realize the goals of multicast
packet delivery.

> -----Original Message-----
> From: Shankar Vasudevan [mailto:[email-masked]] 
> Sent: Tuesday, January 15, 2002 2:14 AM
> To: [email-masked]
> for example, if the inherited_olist(S,G,rpt) becomes non-NULL 
> and given that RPF_interface(S) == RPF_interface(RP) and 
> RPF`(S,G) != RPF`(*,G) and DirectlyConnected(S) is false,
> 
> _______________________________________________
> Pim-external mailing list
> [email-masked]
> http://mailist.procket.com/mailman/listinfo/pim-external
>

---

From: Mathur Sonum-CSM109 <[email-masked]>
Date: Tue, 15 Jan 2002 15:14:40 -0600

> RPF`(S,G) != RPF`(*,G) and DirectlyConnected(S) is false,

If the above conditions are true i.e.
	- RPF_interface(S) == RPF_interface(RP) AND
	- RPF`(S,G) != RPF`(*,G) AND
	- DirectlyConnected(S) == FALSE

then, it means that the interface is on a shared link with one upstream neighbor towards source and other towards RP. In this case, if inherited_olist(S,G,RPT) is NULL, then there should not be any states at all - (*,G) or (S,G). Now, when there is a (*,G) OIF, it should create (*,G) state and then (S,G) state and set the SPT or RPT bit depending on the fact that you want to switch to SPT or not. There should not be any question of unsetting SPT bit here. 

If we can have topology, it would really help, otherwise we assume a lot

--
Sonum