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

From: "purvi desai" <[email-masked]>
Date: Mon, 2 Sep 2002 21:17:02 -0700

Hello group,

sorry for all the previous email spams. ( I guess hotmail was too eager to
send my email even before I complete it and this one is in text format, hope
all email clients are pleased :) )

So here finally is my doubt  based on draft-ietf-pim-sm-v2-new-05.txt
Doubt is at step 6 of the original email where RP receives the native
multicast packet from IR  .

I am referring to section 4.2 Data forwarding rules of draft according to
which I think that RP will confirm
the necessary and sufficient condition to accept the packet which is
(RPF_Interface(S) == iif)
and UpstreamJPState(S, G) == Joined .

Here it will forward that packet on interfaces (oiflist - iif) which should
be  (0)  if  the diagram is what I think.
So I am not able to figure out a condition of assert, though there won't be
any forwarding.

Now if there was another interface at RP where it had received a join then
the packet would be forwarded on that interface.
On the other hand if we have a case in draft which would end up sending
assert to IR since it received the packet on the interface under discussion
then I think that receivers downstream other interfaces on RP  would not
receive packet.

thanks,
Purvi

> > 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.
> >
> >
>
> 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
>
> >
> >
> > 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
> >

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

---

From: "Bakar" <[email-masked]>
Date: 4 Sep 2002 12:15:19 -0000

Hi Purvi,

   Just before the first packet via the IIF(S) at RP is received, 
IIF(S) happens to be the OIF for the data received via register 
encapsulation.
So if we check for assert condition (data rxd on oif) before 
forwarding rule is applied, assert mechanisms will be triggered at 
RP.

   Normally forwarding rule is processed first. (hence assert 
mechanism is not triggered at RP).

   But at IR, which recieves the data forwarded by RP from a 
register encap packet, will trigger the assert mechanism. Hence it 
will originate the (S,G) assert with RPT bit clear and 
subsequently wins the assert.

  IR also sends the (S,G,rpt) prune to RP. RP sends the (S,G) 
prune to IR. (S,G) forwarding state is removed and hence the 
assert state is also removed.

  IR will not send (S,G) prune to SDR. Once SPT switched for 
whatever reason, we dont switch back to shared tree.

regards,
Bakar