Subject: (IPng 7158) RE: neighbor discovery spec hole (link-layer addr)

From: Richard Draves <[email-masked]>
Date: Tue, 9 Feb 1999 08:59:12 -0800

> 	As I commented at interm meeting, I would like to raise 
> this again.
> 
> 	I believe this is serious (or not minor) problem, not 
> an implementation
> 	issue, because:
> 	- If an implementation initializes state into STALE on 
> receipt of RA,
> 	  that host will not be able to communicate with the router for
> 	  certain period of time.  Spec must clearly describe 
> this situation.
> 	- NDP module has to be implemented in link-layer 
> independent manner.
> 	  We'll have serious problem if we once start using 
> some link-layer
> 	  without explicit link-layer address.

You describe a situation where the implementation would like to create a
Neighbor Cache Entry (NCE) for a neighbor, to record some state (IsRouter
bit) and perhaps so other data structures (eg Default Router List) and point
to the NCE. However the implementation does not have a link-layer address
with which to initialize the NCE. And the interface is on a link that uses
link-layer addresses.

You note that the INCOMPLETE state implies that link-layer address
resolution is active, while the non-INCOMPLETE states (eg STALE) imply
knowledge of a link-layer address. So none of the defined states are
appropriate.

My solution for this situation in our implementation is to have two flavors
of the INCOMPLETE state, an "active" mode in which link-layer address
resolution is proceeding and a "passive" mode in which it is not. An attempt
to send a packet to the neighbor transitions the NCE from the passive
INCOMPLETE state to the active INCOMPLETE state, causing a Neighbor
Solicitation to be sent.

Now the question is whether this needs to be specified. It's not clear to me
that it must be specified. For example an alternative implementation might
not create an NCE in this situation. The spec needs to be clear about an
implementation's observable behavior, or explicitly allow different
observable behaviors. It's desirable that it also be a good guide to
implementators but it can and should leave some room for creativity in that
department.

Rich
--------------------------------------------------------------------
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: Jun-ichiro itojun Hagino <[email-masked]>
Date: Fri, 19 Feb 1999 17:49:36 +0900

Sorry for my delayed reply, I was on vacation...

>with which to initialize the NCE. And the interface is on a link that uses
(snip)
>implementators but it can and should leave some room for creativity in that

	RFC2461 describes the neighbor discovery by taking neighbor cache
	entry with 5 states, and IsRouter bit in it, as example.  I believe
	RFC2461 itself must present complete working example.
	Most of implementers will start designing their NDP code by using
	the example.  If the example is incomplete, they will get very
	confused.

itojun