Subject: Re: RE: [pim] ??confused state?? :-)

From: "Prashant Jhingran" <[email-masked]>
Date: 29 Aug 2002 05:19:51 -0000

hi Sonum,
       Thanks for a prompt reply, I am convinced regarding the 
Assert mechanism suggested by you but my doubt is now regarding 
the IR and SDR interaction. SDR will continue to send native data 
packets only if it shall receive (S, G) joins...now do u mean to 
say that IR will keep on sending SG joins towards SDR (as it will 
be having an inherited oif in the (S, G) entry) ???....
Lets also assume that the receiver has a pretty high data 
threshold so it never switches to SPT, meaning never tries to form 
a SPT.

regards,
Prashnat

On Thu, 29 Aug 2002 Mathur Sonum-CSM109 wrote :
>
>Prashant,
>
>After step 6, RP will send Assert packet, but this Assert (with 
>RPT bit set) will be ignored by IR as IR has no (*,G) downstream 
>on that interface. So there should not be any chaos. And there 
>will not be more than one Assert messages as this branch will be 
>Pruned by RP when RP gets (S,G,RPT) Prune from IR.
>
>As soon as IR gets the first native data packet, it sends 
>(S,G,RPT) Prune towards RP, and RP will then send (S,G) Prune to 
>IR. This (S,G) Prune will not be forwarded by IR to SDR. This is 
>because IR will have interface towards receiver in the downstream 
>list of (S,G) entry. IR will be in the (S,G) forwarding state, 
>which would be refreshed by data packets. RP will remain in 
>Pruned state and should send Register Stop to the next and 
>subsequent periodic Null Register messages.
>
>Hope my assumptions are correct about the topology.
>--
>Sonum
>
>
>
>
> > -----Original Message-----
> > From: Prashant Jhingran [mailto:[email-masked]]
> > Sent: Wednesday, August 28, 2002 6:55 AM
> > To: [email-masked]
> > Subject: [pim] ??confused state?? :-)
> >
> >
> > hi all,
> >         Please have a look at the following topology:-
> >
> >   The following topology can be a part of a large multicast
> > network.
> >
> >  	RECEIVER       SENDER
> >       |_| DDR           |_| SDR
> >   	|		      |
> >   	|			|
> >   	|			|
> >   	|			|
> >   	|			|
> >   	|			|
> >   	|    _____________|
> >   	|___|
> >   	|   | IR
> >   	|___|
> >   	|
> >   	|
> >   	|
> >   	|
> >        |___| other links
> >   	|   |_
> >       _|___| RP
> >   	|   |
> >
> >   Now my doubt is regarding the sequence of events which 
>shall
> > take place once the SDR starts sending Register messages 
>towards
> > the RP.
> > Lets assume that the (*, G) tree is already stabilished before 
>the
> > source starts pumping datapackets.
> >
> > At the RP,interface to reach both the source and the receivers 
>is
> > same so there is a possibility of an assert like but not 
>exactly
> > assert situation at the RP,if not always but at least for 
>some
> > time.
> >
> >   I feel that the following should be the sequence of 
>events:-
> >
> >   1. RP receives Register mesg. from SDR.
> >   2. RP de-capsulates the same and sends multicast data 
>towards
> > DDR    via IR.
> >   3. Register threshold exceeds at RP and hence it sends a SG 
>join
> > towards Source.
> >   4. SDR starts sending native data packet along with 
>register
> > mesg towards RP, again via IR.
> >   5. IR should maintain both (S, G) and (*, G) entries as a 
>result
> > of which it should fwd the data packets to RP as well as 
>towards
> > DDR.
> >   6. Now RP receives datapacket on the (*, G) Out going 
>interface
> > and as a result might indicate Assert..but truly speaking 
>assert
> > can happen on a multi-access link !!!
> >             And the chaos begins!!!
> >   7. IR should also trigger (S, G, rpt) prune towards RP.
> >   8. RP should respond to it by pruning off the interface 
>towards
> > IR.
> >   9. RP should also send Register Stop towards the SDR.
> >   10. SDR should stop sending registers.
> >   11. RP should also sent (S, G) prune towards the Source 
>via
> > IR.
> >   12. IR has to fwd the (S, G) prune towards SDR !! (should 
>it
> > really do this ?????)
> >   13. Source is pruned off at SDR.
> >
> >   And a fresh cycle starting from the step1 begins(once the 
>keep
> > alive timer expires at IR).
> >
> > I would like to have comments on my thinking and please 
>suggest
> > the correct set of actions.I feel the above topology is very
> > different from the normal ones and it would be nice to have
> > comments from the authors too. Please note that i am following 
>the
> > draft and not the old RFC.
> >
> > thanks and regards,
> > Prashant
> >
> >
> >
> > _______________________________________________
> > pim mailing list
> > [email-masked]
> > http://catarina.usc.edu/mailman/listinfo/pim
> >

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

---

From: John Zwiebel <[email-masked]>
Date: Thu, 29 Aug 2002 11:45:25 -0700

> threshold so it never switches to SPT, meaning never tries to form

One point of clarification, when the RP asserts and loses, it will
 delete the interface from the (S,G) olist and at that point send
 the (S,G) prune, ie. -before- the (S,G,R) prune is sent from IR.
 (One must recognize that the data rate may change the order in
 which these events happen.  Ie the last-hop router -may- have
 joined to the SPT prior to the assert happening beteen the RP and
 IR which would then result in the order of events Sonum stated.
 The important thing to understand here is that order doesn't matter)

The question Prashant has to ask himself is: "why does IR forward
 the (S,G) prune received from the RP to the SDR?"

I would say that it won't.  (BTW, the topology map didn't come
 through very well so, I'm making certain assumptions that may
 be incorrect.)

Why won't the prune be forwarded?  What is the (*,G) state in
 IR?  Doesn't it have a (*,G) with an OIF toward the DDR (receiver)?
 Yes, therefore the (S,G) will have "inherited" that interface when
 the (S,G) state is created by the (S,G) join triggered from
 the RP when it joins the SPT.  -OR- DDR will have joined the SPT
 so that same interface will be an "immediate" interface.

In any case, IR does not have a NULL olist for (S,G) and so will not
 trigger a prune toward SDR.

Going back to the original steps outlined:

 Step 5: Yes IR has both (*,G) and (S,G), but all packet
    forwarding for this source will be via the (S,G) route
    which will 'inherit' the (*,G) olist. The router should
    -never- forward on both (*,G) and (S,G) at the same time
    or you will have forwarding loops in your network.

  Step 6: Yes an assert does happen.  But the SPT -always- wins over
    the RPT so the RP will delete its interface from the Olist, which
    (as already stated) causes a triggered (S,G) prune toward the source.

  Step 7: NO, absolutely not.  IR is an -intermediate- router.  Only the
    last-hop router has the power to make the decision whether or not
    an (S,G,R) prune is TRIGGERED.  Yes, if DDR has joined the SPT and
    sent an (S,G,R) prune to IR then IR does indeed forward that message.
    (NOTE: its the description of the prune message being "TRIGGERED" that
    I'm discussing.  IR does indeed send periodic (S,G,R) prunes because
    the IIF for the (*,G) and (S,G) are different.  It would be
    very easy to ignore this subtle difference.  Kind of like saying
    "IGMP join" rather than "IGMP report", which can get very confusing
    when you shorten this to just "join" vs "report" because now you
    are talking about a PIM join vs an IGMP report.  Perhaps I should
    have just left this one alone. <sigh>).

  Step 8:  Yes, it is important to identify the interface as
    'inherited' though.

  Step 12: Does IR have a NULL olist?   Yes, then a prune is sent to
    SDR.  But how can IR have a NULL olist if it is receiving
    (*,g) joins from DDR?  It can't, so no Prune is forwarded.
    {NOTE: this is assuming I understand your topology.)

Since there may be a misunderstanding about the topology...
The following assumes that DDR and IR and RP all have an
 interface on the same subnet and that DDR does -NOT- wish
 to join to the SPT.  This 'should be' a very rare occurrence
 and so you may not want to get into this too deeply.

 -- if the RP forwards a packet down the shared tree, then DDR
    must have (S,G) state and so will trigger a (S,G) join toward
    the source, meaning the assert between the RP and IR which
    results in a (S,G) prune from the RP, will cause a (S,G) join
    override to be sent from DDR.

 -- if DDR has an infinite SPT threshold, when it sees the (S,G)
    assert, it has to create (S,G) state and again, when the
    RP prune is seen override that message.

This (S,g) state creation isn't directly
    addressed by the spec, but in 4.2.2 the note after
    "Update_SPTbit" that says: "Additionally a router sets SPTbit(S,G)
    to TRUE when it receives an Assert(S,G) on RPR_interface(S)."
    implies that (S,G) state must be created.

Alternatively, IR is sending an (S,G,R) prune and DDR has
  (*,G) state which means it has to override that prune.  See
  section 4.5.9 Figure 9.  You are in the "not pruned" state so you
  have to trigger an (S,G,R) join override so the RP does not
  delete the inherited interface, so it does not send the (S,g)
  prune to IR.

What one hopes is that by this time, the RP has sent a register-stop
  to SDR so the assert process won't happen any longer.  Which is
  why I advocate creation of (S,G) state on DDR when it sees the
  upstream assert, but this is an implementation option.

Ask yourself though, do you want to have to send a (S,G,R) join
  override for every (S,G,R) prune you see?

(Of course, if DDR joins to the SPT, this becomes a non-issue and
 since this list is working very diligently on SSM <right?> this
  problem will quickly become a non-issue.)

z