Re: [Geopriv] LIS discovery implementation thoughts

"Richard L. Barnes" <rbarnes@bbn.com> Fri, 14 January 2011 04:45 UTC

Return-Path: <rbarnes@bbn.com>
X-Original-To: geopriv@core3.amsl.com
Delivered-To: geopriv@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0CC283A6C4C for <geopriv@core3.amsl.com>; Thu, 13 Jan 2011 20:45:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.469
X-Spam-Level:
X-Spam-Status: No, score=-102.469 tagged_above=-999 required=5 tests=[AWL=0.130, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WRzY4EwH3EaU for <geopriv@core3.amsl.com>; Thu, 13 Jan 2011 20:45:38 -0800 (PST)
Received: from smtp.bbn.com (smtp.bbn.com [128.33.1.81]) by core3.amsl.com (Postfix) with ESMTP id 798253A6C48 for <geopriv@ietf.org>; Thu, 13 Jan 2011 20:45:38 -0800 (PST)
Received: from [128.89.253.213] (port=58754 helo=[192.168.1.16]) by smtp.bbn.com with esmtps (TLSv1:AES128-SHA:128) (Exim 4.71 (FreeBSD)) (envelope-from <rbarnes@bbn.com>) id 1PdbZy-000McS-FE; Thu, 13 Jan 2011 23:48:02 -0500
Mime-Version: 1.0 (Apple Message framework v1082)
Content-Type: text/plain; charset="us-ascii"
From: "Richard L. Barnes" <rbarnes@bbn.com>
In-Reply-To: <E969A511-E6D1-4437-829D-8A08437431DD@bbn.com>
Date: Thu, 13 Jan 2011 23:47:58 -0500
Content-Transfer-Encoding: quoted-printable
Message-Id: <5125204A-95F5-42E3-9EE5-DEAC5F3273A1@bbn.com>
References: <E969A511-E6D1-4437-829D-8A08437431DD@bbn.com>
To: "Richard L. Barnes" <rbarnes@bbn.com>
X-Mailer: Apple Mail (2.1082)
Cc: geopriv@ietf.org
Subject: Re: [Geopriv] LIS discovery implementation thoughts
X-BeenThere: geopriv@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Geographic Location/Privacy <geopriv.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/geopriv>, <mailto:geopriv-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/geopriv>
List-Post: <mailto:geopriv@ietf.org>
List-Help: <mailto:geopriv-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/geopriv>, <mailto:geopriv-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 14 Jan 2011 04:45:41 -0000

One additional note: Our client is not technically compliant with RFC 5986, since it doesn't validate the URI with a HELD request:
"
   A Device that discovers a LIS URI MUST attempt to verify that the LIS
   is able to provide location information.  For the HELD protocol, the
   Device verifies the URI by making a location request to the LIS.  
"

--Richard


On Jan 13, 2011, at 11:45 PM, Richard L. Barnes wrote:

> Hey all,
> 
> Just wanted to share some impressions of the LIS discovery process, including NAT traversal, based on our experience implementing this function in the igtk project [1].  (Note: The techniques here haven't yet been merged into the sourceforge version.)
> 
> The basic flow-chart in RFC 5986 is pretty easy to implement, although it wasn't really clear what to do for step (3), "Check URI", beyond verifying that it's a well-formed URI.  In pseudo-code, we ended up with something like this:
> 
> foreach (NetworkInterface iface) {
>    DomainIterator it(iface);
>    while (it.hasNext()) {
>        string lisUri = performDdds(it.next());
> 	if (valid(lisUri)) { return lisUri; }
>    }
> }
> 
> Here the DomainIterator supplies the following domains, if they are available:
> 1. Option 213 [NB: Not DHCPv6 capable]
> 2. Option 15
> 
> The DomainIterator construct also allows us to easily extend the process to support NAT traversal.  If neither of the above options works, the DomainIterator looks at the IP address for the interface, and if it's private (any of the IANA reserved ranges [2]), then it does a STUN request to find a public address.  Using either the interface address or the STUN address, it then provides the following domains:
> 3. The reverse domain
> 4. The reverse domain with the first label dropped
> 5. The reverse domain with the first two labels dropped 
> 
> The entire LIS discovery service, which listens for network interface changes and emits alerts when it finds a new LIS URI, required 584 lines of C++.  A very basic STUN client was another 293.
> 
> So in a nutshell, extending a client from RFC 5986 to draft-thomson-geopriv-res-gw-lis-discovery was pretty trivial, just a matter of adding a few domains to the search list.  We hope to have the code posted to the igtk site soon; if you're interested in an advance copy, let me know and I can send you an interim snapshot.
> 
> --Richard
> 
> 
> [1] <http://igtk.sourceforge.net/>
> [2] <http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml>
> _______________________________________________
> Geopriv mailing list
> Geopriv@ietf.org
> https://www.ietf.org/mailman/listinfo/geopriv