Subject: question for igmpv3 and its api draft.

From: Hitoshi Asaeda <[email-masked]>
Date: Thu, 05 Jul 2001 19:41:41 +0900

I have several question and comments for IGMPv3 and its API's draft.

First, let's see an example.
One application calls IPMulticastListen as
	socket s1: ( i, m, INCLUDE, {a, b, c} ),
then kerel sends
	ALLOW ( i, m, {a, b, c} ).
After this, another application calls the one as
	socket s2: ( i, m, EXCLUDE, {c} ).
At this time, kernel sends
	TO_EX ( i, m, {} ),
since the interface state becomes EXCLUDE ( i, m, {} )? Right?
If so, it seems strange that we would request to receive the group
packet from every source to upper router when we newly request EXCLUDE
filter.
Is it Okay?

And this is a tiny question.
Why did you name ALLOW_*NEW*_SOURCES and BLOCK_*OLD*_SOURCES?
When source list is changed from the state of EXCLUDE to EXCLUDE, we
may make a BLOCK report for *new* sources, like BLOCK_*NEW*_SOURCES.
I mean we had better not specify *NEW* or *OLD* for these report
types. Just ALLOW_SOURCES and BLOCK_SOURCES are reasonable for me.

This may also be a tiny question.:)
MSF draft defines filter_mode and number_of_sources whose sizes are
u_int32_t.
Why they are 32bit long?
Especially, igmpv3's draft says number_of_sources in igmp header is
16bit long.
These should be same values, I feel.
Also, 8bit long filter_mode is enough.
Is their any reason to define these values?

Thanks.
--
Hitoshi Asaeda

---

From: Wilbert de Graaf <[email-masked]>
Date: Thu, 5 Jul 2001 07:39:32 -0700

> packet from every source to upper router when we newly request EXCLUDE

The socket s1 won't necessarily get all packets from all sources, since the
OS or socket library can filter the packets it delivers to the socket. Is
this what you mean ?

> types. Just ALLOW_SOURCES and BLOCK_SOURCES are reasonable for me.

If you look at it from the 'age' of the source probably yes. But if you look
at it from the host sending the packets they're always new I guess. In your
example even a 'new' source used to be an 'allowed' source when it's not in
the exclude list. So you can argue that makes it an old (allowed) source.

> These should be same values, I feel.

Because a host isn't limited to send only one IGMP record per group, but
could send multiple records in multiple messages, they don't have to be the
same. Example:
socket s: ( i, m, BLOCK, {a, b, c} )
msg 1: BLOCK { i, m, {a, b} }
msg 2: BLOCK { i, m, {c} }

> Is their any reason to define these values?
Yes & don't know.

Wilbert

---

From: Hitoshi Asaeda <[email-masked]>
Date: Fri, 06 Jul 2001 14:01:58 +0900

> OS or socket library can filter the packets it delivers to the socket. Is

I doubt there is some strange situation when the node behaves based on
the I-D. I'll show more datail example.
One node sequentially has moved following filter modes for group m.
	0. IN() as initial state.
	1. IN(a,b,c) by application-1.
	   node filter becomes IN(a,b,c).
	   this triggers sending ALW(a,b,c).
	2. EX(c) by application-2.
	   node filter becomes EX().
	   this triggers sending TO_EX() (hereafter, let's call
	   pattern-1), or nothing (hereafter, pattern-2) ?
So, now, I may say two patterns for 3rd step.
	3. IN(d) by application-3.
	   node filter still be EX().
	   pattern-1. if last change sends TO_EX(),
		      this *would* trigger sending nothing.
	   pattern-2. if last change sends nothing,
		      this *should* trigger sending ALW(d).

In my understanding, it seems that I-D tells pattern-1, although I-D
says;
	If the computed source list for either an ALLOW or a BLOCK
	record is empty, that record is omitted from the State-Change
	report.
This is because this statement doesn't say about TO_IN/TO_EX here. So,
we may be able to think "sending TO_EX with NULL source list" at this
situation may be the answer.
However, if we select pattern-1 with sending TO_EX(), at the moment
2nd step, the node is ready to receive every source's data (i.e., no
source filter). This is strange because application-2 just requests
not to receive the data from source-c.
Neverthless, oppositely, if we select pattern-2 at 2nd step, we should
send ALW(d) at 3rd step. But this report is not made along I-D's
calculation rules.

This is my thought.

> the exclude list. So you can argue that makes it an old (allowed) source.

So, you also mean specifying old/new is no meaning, don't you?

Thanks.
--
Hitoshi Asaeda