Subject: solicited group multicast address; prob of understanding

From: Jochen Kaiser <[email-masked]>
Date: Tue, 20 May 2003 00:01:45 +0200

HI,

I am reading about autocinfiguration DAD at the moment and have
a problem of understanding:

When an interface comes up, it gets a tentative ipv6 address.

I quote RFC 2491:
   Prior to performing Duplicate Address Detection, a host will join the
   all-nodes multicast address and the solicited-node multicast address
   corresponding to the host's tentative address (see 4.2.  Joining a
   Multicast Group). The IPv6 host initiates Duplicate Address Detection
   by sending a Neighbor Solicitation to solicited-node multicast
   address corresponding to the host's tentative address, with the
   tentative address as the target.

When I understand this correctly, a host joins his 'own' multicast
group "FF01::1:FF:aa:bb:cc" and then sends a NS packet to the 
solicited node multicast address of the node. So if there is
another host in this group, DAD gets an NA message and DAD fails.

Is it really that you generate a special mc group per node?
I don't believe this and think that I am misunderstanding this.
My netstat doesn't show it, too.

Any help to enlighten me strongly appreciated since I am a bit
confused right now.

with kind regards,
Jochen Kaiser
-- 
Dipl. Inf. Jochen Kaiser, GPG 0x3C93A870, phone +49 9131 85-28681
Network Administration  mailto:[email-masked]
Regionales Rechenzentrum Universitaet Erlangen-Nuernberg, Germany
Homepage and PublicKey: http://ipv6.rrze.uni-erlangen.de/~unrz111 
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [email-masked]
--------------------------------------------------------------------

---

From: Robert Elz <[email-masked]>
Date: Tue, 20 May 2003 08:56:30 +0700

Date:        Tue, 20 May 2003 00:01:45 +0200
    From:        Jochen Kaiser <[email-masked]>
    Message-ID:  <[email-masked]>

  | Is it really that you generate a special mc group per node?

Yes.

Note that a node is only ever a member of one of these (well, assuming
it forms all of its addresses from the same IID anyway, 3041 using
hosts have a more interesting life).

The practical effect of this is that ND packets need only be processed
by the node for whom they're intended in most cases (multicast group
clashes are possible, but aren't very likely).  Contrast this with ARP
where an ARP request wakens every node on the LAN, all but one of
which ignore it.

kre

---

From: Praveen Rajendran <[email-masked]>
Date: Wed, 21 May 2003 12:36:59 +0530

> another host in this group, DAD gets an NA message and DAD fails.
DAD can also fail when you get a NS message with the same target address.
This can happen when two nodes with the same address attempt to do DAD
simultaneously with each receiving the others NS message after transmitting
their
own.

> My netstat doesn't show it, too.
Yes you generate a special mc group per node in order to minimize the
number of nodes on the link processing your NS. Since the solicited node
Multicast
address is formed by taking the last 4 bytes of the IP address there only a
small
probability that more than one node in a link can be listening on that
address.

Praveen

---

From: Jochen Kaiser <[email-masked]>
Date: Wed, 21 May 2003 09:41:49 +0200

> where an ARP request wakens every node on the LAN, all but one of

  I understand this now. I just was confused, since I didn't
see this on my BSD boxes. But it seems to be implemented on
USAGI and Solaris. (Even ethereal didn't reveal this ...)

  Another point of confusion is the fact, that switches have to
be more complex so that this works efficient. In IPv4 I know
the CGMP and the IGMP-snooping mechanisms. What will it be
in ipv6, to make the switches L3 aware? Will it be called 
MLD-snooping or will there be another mechanism with interaction
of a router?

  Yet another point that makes me wondering: when you have a L2
flat network without any router you can't use this efficient
mechanism. Is there a concept of a 'stub' or 'one arm' router
to make such a network more efficient?

regards,
Jochen Kaiser

---

From: [email-masked]
Date: Thu, 22 May 2003 08:12:44 +0900

>USAGI and Solaris. (Even ethereal didn't reveal this ...)

	to know which IPv4/v6 multicast groups your node is joining, use
	ifmcstat(8).  it won't show in netstat.

itojun

---

From: JINMEI Tatuya / 神明達哉 <[email-masked]>
Date: Thu, 22 May 2003 11:58:27 +0900

>>>>> On Thu, 22 May 2003 08:12:44 +0900, 
>>>>> [email-masked] said:

>>> The practical effect of this is that ND packets need only be
>>> processed by the node for whom they're intended in most cases
>>> (multicast group clashes are possible, but aren't very likely).
>>> Contrast this with ARP where an ARP request wakens every node on
>>> the LAN, all but one of which ignore it.
>>  I understand this now. I just was confused, since I didn't see
>> this on my BSD boxes. But it seems to be implemented on USAGI and
>> Solaris. (Even ethereal didn't reveal this ...)

> 	to know which IPv4/v6 multicast groups your node is joining,
> use ifmcstat(8).  it won't show in netstat.

It does, actually (at least on some *BSDs).  Try netstat -ian.

But in the first place, I don't really understand what "I didn't see
this on my BSD boxes" means...

					JINMEI, Tatuya
					Communication Platform Lab.
					Corporate R&D Center, Toshiba Corp.
					[email-masked]
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [email-masked]
--------------------------------------------------------------------

---

From: Robert Elz <[email-masked]>
Date: Thu, 22 May 2003 12:39:49 +0700

Date:        Wed, 21 May 2003 09:41:49 +0200
    From:        Jochen Kaiser <[email-masked]>
    Message-ID:  <[email-masked]>

  |   I understand this now. I just was confused, since I didn't
  | see this on my BSD boxes. But it seems to be implemented on
  | USAGI and Solaris. (Even ethereal didn't reveal this ...)

Itojun and Jinmei have explained how to make *BSD boxes reveal it.

  |   Another point of confusion is the fact, that switches have to
  | be more complex so that this works efficient. In IPv4 I know
  | the CGMP and the IGMP-snooping mechanisms. What will it be
  | in ipv6, to make the switches L3 aware? Will it be called 
  | MLD-snooping or will there be another mechanism with interaction
  | of a router?

I have heard talk of MLD-snooping, yes - but someone else is going to
need to answer this part of your question.

  |   Yet another point that makes me wondering: when you have a L2
  | flat network without any router you can't use this efficient
  | mechanism. Is there a concept of a 'stub' or 'one arm' router
  | to make such a network more efficient?

I don't understand this at all?   Link level multicast doesn't require
routers at all.   The node simply computes the MAC (multicast) address
that corresponds to the protocol (IPv6 here of course) multicast, using
the defined rules, and sends to that MAC level multicast address, the
same as it would send to any other.

Where did you see a problem?

kre

---

From: [email-masked]
Date: Thu, 22 May 2003 15:11:10 +0900

>need to answer this part of your question.

	there are L2 switch product which does MLD snooping already,
	just like IGMP snooping.  in terms of complexity they are the same.

itojun

---

From: Jochen Kaiser <[email-masked]>
Date: Thu, 22 May 2003 11:32:04 +0200

On Thu, May 22, 2003 at 11:58:27AM +0900, JINMEI Tatuya / ?$B?@L@C#:H wrote:
[...]
> this on my BSD boxes" means...

I used an ethereal to sniff on the localhost and didn't see the usage
of these multicast groups ... just did see the "all nodes group" ...
I will give it a second try and look more briefly.

regards and thx,
Jochen Kaiser