Re: sockets APIs extensions for Host Identity Protocol

Keith Moore <moore@cs.utk.edu> Fri, 11 May 2007 05:00 UTC

Return-path: <discuss-bounces@apps.ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1HmNFE-0003u9-Dq; Fri, 11 May 2007 01:00:44 -0400
Received: from discuss by megatron.ietf.org with local (Exim 4.43) id 1HmNFD-0003u4-PT for discuss-confirm+ok@megatron.ietf.org; Fri, 11 May 2007 01:00:43 -0400
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1HmNFD-0003tw-77 for discuss@apps.ietf.org; Fri, 11 May 2007 01:00:43 -0400
Received: from shu.cs.utk.edu ([160.36.56.39]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1HmNFB-0004o7-V3 for discuss@apps.ietf.org; Fri, 11 May 2007 01:00:43 -0400
Received: from localhost (localhost [127.0.0.1]) by shu.cs.utk.edu (Postfix) with ESMTP id 770121EE1CA; Fri, 11 May 2007 01:00:41 -0400 (EDT)
X-Virus-Scanned: by amavisd-new with ClamAV and SpamAssasin at cs.utk.edu
Received: from shu.cs.utk.edu ([127.0.0.1]) by localhost (shu.cs.utk.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bqxLr-SwOjEk; Fri, 11 May 2007 01:00:36 -0400 (EDT)
Received: from lust.indecency.org (user-119b1dm.biz.mindspring.com [66.149.133.182]) by shu.cs.utk.edu (Postfix) with ESMTP id 7F3041EE1AC; Fri, 11 May 2007 01:00:36 -0400 (EDT)
Message-ID: <4643F873.3000501@cs.utk.edu>
Date: Fri, 11 May 2007 01:00:35 -0400
From: Keith Moore <moore@cs.utk.edu>
User-Agent: Thunderbird 2.0.0.0 (Macintosh/20070326)
MIME-Version: 1.0
To: Miika Komu <miika@iki.fi>
Subject: Re: sockets APIs extensions for Host Identity Protocol
References: <Pine.SOL.4.64.0705041801060.14418@kekkonen.cs.hut.fi> <20070507082737.GB21759@nic.fr> <46413DD7.8020702@cs.utk.edu> <20070509121703.GA21070@nic.fr> <4641CA52.70504@cs.utk.edu> <Pine.LNX.4.64.0705091449360.26169@hermes-1.csi.cam.ac.uk> <4641D94C.9070304@cs.utk.edu> <Pine.SOL.4.64.0705102013550.10049@kekkonen.cs.hut.fi> <46436B10.5090706@cs.utk.edu> <Pine.SOL.4.64.0705102159020.10049@kekkonen.cs.hut.fi>
In-Reply-To: <Pine.SOL.4.64.0705102159020.10049@kekkonen.cs.hut.fi>
X-Enigmail-Version: 0.95.0
OpenPGP: id=E1473978
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.1 (/)
X-Scan-Signature: bb8f917bb6b8da28fc948aeffb74aa17
Cc: discuss@apps.ietf.org
X-BeenThere: discuss@apps.ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: general discussion of application-layer protocols <discuss.apps.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=unsubscribe>
List-Post: <mailto:discuss@apps.ietf.org>
List-Help: <mailto:discuss-request@apps.ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=subscribe>
Errors-To: discuss-bounces@apps.ietf.org

>> offhand, I think you need to support both.  HITs aren't very useful to
>> apps unless they are visible to them and globally-scoped.  HIP is still
>> useful without HIT visibility, but less useful.
>
> It does not mean that the HIT fingerprint, or preferably even the
> corresponding public key, are completely invisible to the application
> with locally-scoped identifiers. It is just a question of an extra
> function call that translates the local-scope identifier to the
> desired format (HIT or public key).
It strikes me that if I'm using opportunistic HIP, then I probably want
to use normal sockaddr_in* structures and do a setsockopt() that says
"give me HIP if both ends support it" before doing connect() or
listen().  In that case I'd want getpeername() to still return the
peer's (current) IP address, but I'd want additional functions to return
the peer's HIT.  In that case I don't see any real value in having
locally-scoped pseudo-HITs.  The reason for doing things this way is
that it would require fewer changes to legacy code to support
opportunistic HIP.

OTOH, if I'm doing "real" HIP then I want to use something like a
sockaddr_hip structure that lets me specify both the HIT (as the
"address") and a variable number of IP addresses (including both IPv4
and IPv6 addresses) at which the peer named by the HIT might be
reachable (or at which a redirect to the actual peer might be
obtainable).  And then you probably want a HIP-specific replacement for
getaddrinfo() that will return not only addresses but also the HIT
associated with a DNS name and whatever other information is useful in a
form that's easily stuffed into a sockaddr_hip.

really you want to be able to map a DNS name into multiple HITs, each of
which can have zero or more IPv* addresses associated with it.... and 
you want a standard data structure that consists of a HIT + IP addresses
that can be passed around in referrals.