Re: mboned: RE: suggestion for simplifying IGMPV3/MLDV2 to discard EXCLUDEmode

John Zwiebel <[email protected]>
Newsgroups gmane.ietf.magma,gmane.ietf.mboned
Message-ID <[email protected]>
Some of this may be rambling, some of it I've said already, some
other folks have already said, so my point is:
   1) routers have to protect receivers by doing what the receiver  
meant, not
	what the receiver asked for.  Routers should merge all their received
	records and determine for themselves whether or not to send a query.
   2) Everyone knows what SSM is but everyone only thinks they know  
what ASM is
	because what I think it is doesn't match other definitions I've heard.
	(for example allowing a router to send an (S,G) join for a bidir source
	would not be a "good thing" yet some insist that bidir is a subset of
	ASM.)
   3) Deleting the EXCLUDE filter-mode on the router would be a "good  
thing"

 From here on, you might not want to read.  :-)
-----------------------------------------------------

First WRT Mark Fine's point on receipt of an IS_EX followed closely  
by an IS_IN
   -- Why didn't the host that wanted to join the group send a TO_EX
	(or an ALLOW if we are talking about sources)?
   -- When the host left, why didn't the host sent a TO_IN?

Then what happens if you have two hosts, one sending IS_IN the other  
sending
IS_EX?  The router must query the subnet unless it is doing explicit  
tracking.

IMHO depending on messages from hosts to tell you whether or not to  
send a query
is a mistake.

If the router is doing explicit tracking, there is no advantage to  
assigning
different outcomes on receipt of IS_IN vs TO_IN.  In the following, I am
suggesting that the TO_x and IS_x messages be treated the same way in  
IGMPv3-lite.

Mark suggests the following:
>>
>> Router State   Report Rec'd  New Router State    Actions
>> ------------   ------------  ----------------    -------
>> EXCLUDE (X, )  IS_IN (A)     EXCLUDE (X+A, )     (A)=GMI

But, I thought the plan was to do away with EXCLUDE state
for specific sources and with an empty list of sources to
be BLOCKED, this state is equivalent to INCLUDE(A+).

OTOH, how this is realized by by different implementations
is not important and IF it is determined that a full implementation
of IGMPv3 is inappropriate, AFAIC, the router state can be
IN or EX just as long as the same sources are forwarded.

On Jun 25, 2006, at 6:26 PM, Hui Liu wrote:

>
> According to the previous discussions on the list the draft is  
> updated to
> version01:
>
> The key points of the simplification operations are:
> 1 On the host side, TO_EX(x) is not needed and IS_EX(NULL) is used to
> represents an ASM join.

FWIW: I don't see the need to differentiate between reports that are  
replies
to queries and reports that are triggered from the host.  ie, TO_IN  
is the
same as IS_IN as far as the router is concerned.  I do not see the  
advantages
outlined in the IGMPv3 RFC Appendix A because you never know when you  
receive
a IS_IN whether or not that information is already in the IGMP cache.

In other words, whether or not to send a query shouldn't be dictated  
by the
hosts but by the router when it merges all the reports and records and
doesn't know for sure which ones to add or delete.

As an example...
   (apologies to all who already understand this)

The difference between these two is only whether or not the Query is  
sent.
I can see that there may be some message savings, but I can't see  
that its
enough to make it worthwhile to differentiate between them.  Especially
since once the merge is processed there may not be any reason to send
the query.

INCLUDE (A)    TO_EX (B)    EXCLUDE (A*B,B-A)       (B-A)=0
                                                     Delete (A-B)
                                                     Send Q(G,A*B)
                                                     Group Timer=GMI
INCLUDE (A)    IS_EX (B)    EXCLUDE (A*B,B-A)       (B-A)=0
                                                      Delete (A-B)
                                                      Group Timer=GMI


> 2 Filter mode is not maintained in the router. Group timer  
> identifies the
> switching between ASM and SSM groups.

Isn't it true that the SSM group range is defined on the router and is
independent of what the host might think?

There is nothing to prevent the host from sending an IGMPv3 report for
an (S,G) when the router thinks the group is ASM.  There should be  
nothing
to prevent the router from establishing (S,G) state in that case.

However, if the router defines the group as Bidir and it receives a  
(S,G)
IGMP report, the router must drop that report.


> 3 When source timer expires, its source record should be deleted  
> without
> waiting for the  expiration of group timer. And do not remove  
> source records
> when IS_EX(NULL) is received.


FWIW: the hosts I've reviewed have all implemented the entire IGMPv3  
spec
although not exactly the same way.  Yet things still work "good enough".

In 3.1:
   If TO_EXCLUDE is going to be deleted then what is the use of  
TO_INCLUDE?
   specifically the state in 3.2:
         EXCLUDE (NULL)    INCLUDE (B)       TO_IN(B)

   should use IS_IN(B) instead since that is what is used to answer
   periodic reports.  It should be clear however that if an  
implementation
   uses TO_IN(B) that it isn't necessarily wrong.

In 4.1:
   I'm not sure that I like the introduction of ASM and SSM here.  I'd
   rather that -any- EXCLUDE be defined to mean INCLUDE(ALL) without
   expressly saying ASM or SSM.

   This is kind of complicated, but consider that the default SSM group
   range is 232.0.0.0/8.  Is it the purpose of this draft to say that
   if an EXCLUDE(232.1.1.1) is received that the router is suppose to
   join to the (*,G) for that group?  I hope not.

   Likewise, take an ASM group 224.1.1.1, obviously an EXCLUDE 
(224.1.1.1)
   will cause PIM to send a (*,G) join, but should an INCLUDE 
(1.1.1.1,224.1.1.1)
   cause a PIM (S,G) join be sent?  (I think so)  And if a (S,G) join  
is sent
   is 224.1.1.1 now an SSM group?  (I do not think so)

   ie, using SSM here expands the definition of what SSM is and may  
confuse things.



In 4.2:  doesn't the first rule obviate the second?  If not, why  
doesn't the second
    state that the group record should be deleted?

       G_Timer == 0   S_TIMER == 0          Suggest to stop forwarding
                                           traffic from source and
                                           remove source record. If
                                           there are no more source
                                           records for the group, delete
                                           group record.

       G_Timer == 0   No Source Elements    Suggest not to forward
                                           traffic from the source

In 4.3: Again, I'm concerned with the loose use of the term SSM.
    I think I can see a benefit derived from a change in
    exactly what it means to be an SSM range, but I don't think we  
want that
    to be defined in this document since it would be rather obscure.   
But
    if we go with what you seem to be suggesting, then it would seem  
to me
    that router configuration commands such as "ip multicast ssm- 
range" would
    become obsolete.  That's a good thing.

        sources to be forwarded by the router, while in ASM group  
(G_Timer >0)
        the source list remembers the sources to be forwarded after  
switching
        back to SSM mode.


In 4.4: IMHO maintaining the TO_IN  reports is going to severely limit
    the simplification of the protocol.  If these reports are handled  
in the
    same way that IS_IN/IS_EX then routers don't have to worry about  
complying
    with the triggered query.  If a host is expressly interested in  
BLOCKING
    a specific source, receipt of a BLOCK(B) report by the router  
explicitly
    causes the triggered query.  If the goal is to simplify things,  
letting
    unwanted sources timeout will be much easier.  (Like I said, an  
opinion).

    And since certain host implementations already send more records  
than are
    required (because it was easier).
    In other words TO_IN(A) can perhaps better be represented by a  
combination
    of BLOCK(B)/ALLOW(A) since (I believe) TO_IN is used to announce  
a change
    by the host from IS_EX.

    But there seem to be so many ways of interpreting what should be  
sent...
    (that is in the IGMPv3 RFC)

In 5.2:  I'd like to eliminate the TO_IN and make it, which I think  
would
    be handled the same way:

       TO_IN(x)                    IS_IN(x)


Bottom line:  I don't agree with the IGMPv3 RPC appendix A.1 which  
states:

        The inability to distinguish between the two types of reports  
would
        force a router to treat all Membership Reports as potential  
changes
        in state and could result in increased processing at the  
router as
        well as an increase in IGMP traffic on the network.

    I believe the router is going to have to treat all IS_IN messages as
    state changes now.  I'd appreciate someone explaining why that  
might not
    be so.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.