Re: NHRP protocol modifications and clarifications

David Horton <horton@citr.uq.oz.au> Mon, 10 July 1995 14:07 UTC

Received: from ietf.nri.reston.va.us by IETF.CNRI.Reston.VA.US id aa03285; 10 Jul 95 10:07 EDT
Received: from [204.249.96.18] by IETF.CNRI.Reston.VA.US id aa03281; 10 Jul 95 10:07 EDT
Received: from maelstrom.acton.timeplex.com (maelstrom.nexen.com [204.249.97.5]) by nexen.nexen.com (8.6.12/8.6.12) with ESMTP id JAA03109; Mon, 10 Jul 1995 09:18:53 -0400
Received: (from root@localhost) by maelstrom.acton.timeplex.com (8.6.12/8.6.12) id JAA02875 for rolc-out; Mon, 10 Jul 1995 09:00:39 -0400
Received: from nexen.nexen.com ([204.249.96.18]) by maelstrom.acton.timeplex.com (8.6.12/8.6.12) with ESMTP id JAA02866 for <rolc@nexen.com>; Mon, 10 Jul 1995 09:00:34 -0400
Received: from bunyip.cc.uq.oz.au (bunyip.cc.uq.oz.au [130.102.2.1]) by nexen.nexen.com (8.6.12/8.6.12) with SMTP id JAA02769 for <rolc@nexen.com>; Mon, 10 Jul 1995 09:00:30 -0400
Received: from citrus.citr.uq.oz.au by bunyip.cc.uq.oz.au with SMTP (PP); Mon, 10 Jul 1995 22:59:09 +1000
Received: from durian.citr.uq.oz.au by citrus.citr.uq.oz.au (5.65c/CiTR-Generic) ; id <AA12073@citrus.citr.uq.oz.au>; Mon, 10 Jul 1995 22:59:03 +1000
Received: from localhost by durian.citr.uq.oz.au (8.6.11/CiTR-Generic) ; id <WAA06248@durian.citr.uq.oz.au>; Mon, 10 Jul 1995 22:59:01 +1000
Message-Id: <6248.199507101259@durian.citr.uq.oz.au>
To: rolc@nexen.com
Subject: Re: NHRP protocol modifications and clarifications
Date: Mon, 10 Jul 1995 22:59:00 +1000
Sender: ietf-archive-request@IETF.CNRI.Reston.VA.US
From: David Horton <horton@citr.uq.oz.au>
X-Orig-Sender: owner-rolc@nexen.com
Precedence: bulk
X-Info: Submissions to rolc@nexen.com
X-Info: [Un]Subscribe requests to rolc-request@nexen.com
X-Info: Archives for rolc via ftp://ietf.cnri.reston.va.us/ietf-mail-archive/rolc/

>There are a number of error conditions for which you just cannot test without a demux 
>mechanism.  If you get an error message, how do you intuit for whom it was sent?...  Lets say
>it is an error case of incorrect message type.

Can't you just look inside the returned erroneous packet that is 
enclosed in the error packet?

>
>What about the case when you have 2 or more NHCs which are co-resident with their NHS?  
>You can't figure out for whom the packet was sent in this case without burdening all 
>NHCs to check to their database.  Even then, it is not clear that you could resolve
>the who sent the request.

It seems to me that having multiple NHCs at a device, and each keeping
their own cache and request ID sequence is not in keeping with the spirit
of "Request ID" on page 14.  of the draft 4. i.e. each NHC can send 
requests for the same target address when there is an implication 
that the device should be conservative in how many requests  it sends.
Further each NHC has to register with the NHS. This will lead to
larger caches with multiple entries for the 'same' device (as 
identified by ATM address). Also aren't we trying to conserve IP addresses
these days.

>
>I have received several notes saying that others have run into this problem and have 
>either done what I suggested or used another form of demux (usually complex as opposed to 
>something as simple as a separate IP address).  

I am not sure that all OS will support multiple IP addresses on 
one interface. 

We are exploring various options on our prototype
with regards to flexibility, efficiency and deployability.
We currently use a separate protocol number for clients to listen to.
This means that a NHS has to know the type of peer it is talking to,
and is not compliant with the spec as it stands. However it
is not expensive in execution nor configuration nor coding time.
Another option we considered was having clients slaved to the server on a 
device.  This was compliant, but had limitations with performance and
reliability where a NHC required access to multiple NHS.

:
:

>I think it is much cleaner administratively to have one IP addresses for each NHS and NHC.  
>Also, let's keep in mind this is only an issue when they are co-resident.

IMHO, this is an implementors problem, not a true protocol problem. 
Suggestions made recently seem to reflect particular implementations
and what is easiest in them. (Including our own).

The de-muxing within the device is the job of the local device 
software since all the 'required' information is in the packet. Perhaps
NHRP is not yet as tightly integrated with the Unix OS as 
ethernet ARP, and UDP and that is what is causing the problem.

(I can't resist fiddling with the protocol either, so here is another hack).
Perhaps a local 'port' number could be added to the protocol to 
make it easier to have multiple NHRP entities on a device.
This port number would be an adjunct to  the source client, 
NHS and responder to allow the protocol to carry some local identification.
The NHRP spec would additionally have to indicate when these are copied (e.g. request->reply, request->purge and purge->purge ack).
However the 'other' side of the client/server should not try
to make any meaning of the value.
This could give an implementation the freedom to dispatch packets
to local entities based on the port, or to completely ignore the value
if their particular implementation was designed to have only the 
one NHRP entity per device.
I know there are problems with this model too, e.g. in the case where 
a particular local client goes away and an NHS sends purge 
packets specifically to that client.


>- -- Jim Luciani

regards,
David


- -------------------------------------------------------------------
David Horton
Centre for Information Technology Research
University of Queensland, 4072
Australia

Email: horton@citr.uq.oz.au           Phone +61 7 3654321     Fax +61 7 3654399