[Ecrit] comments on LoST

Jonathan Rosenberg <jdrosen@cisco.com> Tue, 13 February 2007 16:18 UTC

Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1HH0MZ-0008LO-CM; Tue, 13 Feb 2007 11:18:39 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1HH0MY-0008L4-6a for ecrit@ietf.org; Tue, 13 Feb 2007 11:18:38 -0500
Received: from sj-iport-3-in.cisco.com ([171.71.176.72] helo=sj-iport-3.cisco.com) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1HH0MQ-0003D5-24 for ecrit@ietf.org; Tue, 13 Feb 2007 11:18:38 -0500
Received: from sj-dkim-1.cisco.com ([171.71.179.21]) by sj-iport-3.cisco.com with ESMTP; 13 Feb 2007 08:18:29 -0800
X-IronPort-AV: i="4.14,163,1170662400"; d="scan'208"; a="464187578:sNHT73369272"
Received: from sj-core-5.cisco.com (sj-core-5.cisco.com [171.71.177.238]) by sj-dkim-1.cisco.com (8.12.11/8.12.11) with ESMTP id l1DGIT2i020718 for <ecrit@ietf.org>; Tue, 13 Feb 2007 08:18:29 -0800
Received: from xbh-sjc-221.amer.cisco.com (xbh-sjc-221.cisco.com [128.107.191.63]) by sj-core-5.cisco.com (8.12.10/8.12.6) with ESMTP id l1DGI8VY002694 for <ecrit@ietf.org>; Tue, 13 Feb 2007 08:18:29 -0800 (PST)
Received: from xfe-sjc-211.amer.cisco.com ([171.70.151.174]) by xbh-sjc-221.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Tue, 13 Feb 2007 08:18:08 -0800
Received: from [10.32.241.151] ([10.32.241.151]) by xfe-sjc-211.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Tue, 13 Feb 2007 08:18:08 -0800
Message-ID: <45D1E4BE.9020205@cisco.com>
Date: Tue, 13 Feb 2007 11:18:06 -0500
From: Jonathan Rosenberg <jdrosen@cisco.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: ECRIT <ecrit@ietf.org>
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 13 Feb 2007 16:18:08.0175 (UTC) FILETIME=[8C5413F0:01C74F8A]
DKIM-Signature: v=0.5; a=rsa-sha256; q=dns/txt; l=18195; t=1171383509; x=1172247509; c=relaxed/simple; s=sjdkim1004; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version; d=cisco.com; i=jdrosen@cisco.com; z=From:=20Jonathan=20Rosenberg=20<jdrosen@cisco.com> |Subject:=20comments=20on=20LoST |Sender:=20 |To:=20ECRIT=20<ecrit@ietf.org> |Content-Type:=20text/plain=3B=20charset=3Dus-ascii=3B=20format=3Dflowed |Content-Transfer-Encoding:=207bit |MIME-Version:=201.0; bh=FKAm8+gPtbYHu/zZnh/XuO+jHpf8KWERPq2KdcDLcvo=; b=pisfDLIeM1vlVFPff2ghiK6IpaJGmN10ajdPr8uwsdI/pOh8doFspvRBw/USSCiM78F1ie/e 1jd0DJfMF77DsSRdDFldILzdxWmqXmECrCc9BhfB/yUpWE2BXBOIz0VGQhc3i8yL0r+uVr1vfo SJDamN+K0fbxOQWEv4WKFpNc8=;
Authentication-Results: sj-dkim-1; header.From=jdrosen@cisco.com; dkim=pass ( sig from cisco.com/sjdkim1004 verified; );
X-Spam-Score: 0.0 (/)
X-Scan-Signature: b6e18fadcfab41fa5e7faede753de4c2
Subject: [Ecrit] comments on LoST
X-BeenThere: ecrit@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: ecrit.ietf.org
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/ecrit>, <mailto:ecrit-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:ecrit@ietf.org>
List-Help: <mailto:ecrit-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/ecrit>, <mailto:ecrit-request@ietf.org?subject=subscribe>
Errors-To: ecrit-bounces@ietf.org

Here are my comments on the latest version of LoST from SVN 
(http://www.tschofenig.priv.at/svn/draft-ietf-ecrit-lost/draft-ietf-ecrit-lost-04.txt).


I have several high level comments.

Firstly, the specification is somewhat confused about whether it is 
specifying a data object (like a presence document), in which case the 
semantics of the fields are critical, or whether it is specifying a 
protocol, in which case state machines, transactions, timers, failures, 
element behaviors, and so on, are relevant. I believe LoST is the latter 
not the former, yet the spec is mostly written as if it was the former 
and not the latter.

Secondly, I think the binding to http and https is not well specified, 
and many important details (minimum baseline mandatory requirements, 
timer considerations, usage of security techniques, pipelining, etc.) 
are not discussed at all.

Thirdly, I have some concerns over the requirement for servers to 
support both geodesic-2d and civic for all queries. IN particular, I 
fear that it will be common for boundary objects to exist in only one 
form or the other, and I don't see how conversion can easily be done 
between the two.

More specific comments below:



> This document describes an XML-based protocol for mapping service
>    identifiers and geodetic or civic location information to service
>    contact URIs.  In particular, it can be used to determine the
>    location-appropriate PSAP for emergency services.

expand PSAP acronym

> This document describes a protocol for mapping a service identifier
>    [10] and location information compatible with PIDF-LO [7], namely
>    revised civic location information [11] and GML [13]) 

missing open paren


> While the initial focus is on providing mapping
>    functions for emergency services, it is likely that the protocol is
>    applicable to any service URN. 

the first sentence mentions service identifiers but doesn't actually say 
service URN. Suggest that you add in the first sentence:

"..for mapping a service identifier (in the form of a service URN [10]).."

> Example service URL schemes include sip [14], xmpp
>    [15], and tel [16]. 

I'm gonna be a nit-picker and point out that these are actually URI and 
not URL. That error occurs in many places in the document.

>  For example, in the United States,
>    the "2-1-1" and "3-1-1" service numbers follow a similar location-to-
>    service behavior as emergency services.

might be good to mention what these are


> This document names this protocol "LoST", for Location-to-Service
>    Translation.  LoST Satisfies the requirements [18] for mapping

satisfies

THe last paragraph in the introduction repeats most of which is said 
already above. I'll note it does so more clearly than the rest of the 
intro. I suggest moving it up towards the front of the introduction.

Also, the introduction is missing an important point that is obvious for 
us in this field but probably non-obvious for newbies. I'd suggesting 
adding the following text in the intro:

"Numerous techniques have been specified for the discovery of servers 
for a particular service, including NAPTR records, SVRLOC and similar 
protocols. However, there are an important class of services where the 
specific service instance that is to be connected to depends on the 
identity of the service and the location of the entity that needs to 
reach it. An example of this is emergency telecommunications services, 
where the service instance is a Public Safety Answering Point (PSAP) 
that has jurisdiction over the location of the user making the call. 
Here, the desired PSAP isn't necessarily the one that is topologically 
or even line-of-sight closest to the caller; rather, it is the one that 
serves the callers location based on geopolitical boundaries. For this 
reason, the selected service instance is a function of location and the 
desired service."



Section 3 isn't really an overview of operation at all. It mainly 
addresses the question of WHEN a user invokes LoST. I was expecting 
first an architecture picture that shows a client, a server, and some 
backend stuff (other servers). LosT is show as between client and 
server. The section would talk about clients issuing requests and 
servers answering them. It would mention HTTP and indicate what is 
contained in a request, whats in an answer. Mention caching and the use 
of regions as a technique to avoid repeated queries on the server. It 
would mention the primary primitives provided by lost.

> 4.  LoST servers and Their Resolution

LoST Servers and their Resolution


I wonder if there should be a separate port number for LoST. See RFC 3205.

> A receiver can replace a mapping with another one having
>    the same 'source' and 'sourceId' and a higher version number.

You have not used the term receiver before. Client you mean?

>  The 'version' attribute is a positive integer that is incremented for
>    each change in the mapping.  The XML data type does not specify an
>    upper bound for this attribute and thus, the value MUST NOT wrap
>    around.  Thus, a higher version number refers to a more recent
>    mapping.  A mapping maintains its sourceId value as long as it
>    remains logically the same, e.g., represents the same service
>    boundary or replaces an earlier service boundary.

Do these have to increase by 1 for each update, or just increase? SHould 
be clear.

> The contents of this attribute is a
>    timezoned XML type dateTime, in canonical representation.  See

contents are

>  The 'expires' attribute is REQUIRED to be included in the <mapping>
>    element.

Is there a way to use LoST without caching? To specify that this result 
is valid only for the purposes of satisfying this one query? Or to say 
that the results never expire?

> On occasion, a server may be forced to return an expired mapping if
>    it cannot reach the authoritative server or the server fails to
>    return a usable answer.  Clients and servers MAY cache the mapping so
>    that they have at least some information available.  Caching servers
>    that have such stale information SHOULD re-attempt the query each
>    time a client requests a mapping.

A meta-issue here, is whether the LoST protocol is meant to just be a 
client-server protocol, or whether we are specifying rules for the 
entire system. This SHOULD here is a rule for a server to follow when 
contacting other servers and thus would not be present in a 
client-server protocol spec.

As another issue, this section (section 5) is a mix of behaviors that 
define rules around construction of objects and for behaviors of 
servers. WHich is it?

>  Zero or more <displayName> elements describe the service with a
>    string that is suitable for display to human users, each annotated
>    with the 'xml:lang' attribute that contains a language tag to aid in
>    the rendering of text.

Presumably the presence of more than one is to allow responses to convey 
multiple languages. Might want to state that.

> The <service> element is optional but may also be required if the
>    mapping is to be digitally signed.

seems like a normative statement is needed here - The <service> element 
MUST be present if the mapping is to be digitally signed.

>  A response MAY indicate the region for which the service URL returned
>    would be the same as in the actual query, the so-called _service
>    region_. 

I don't understand this definition. I thought it would be something 
like: The service region is a set of locations, such that if a client 
generates a new query with the same service URN and a location within 
the set, the server would return the same service URI in its response.

> The service region is described by value
>    in one or more <serviceBoundary> elements, each formatted according
>    to a different location profile, identified by the 'profile' atribute
>    (see Section 11).

and:

>  A response MAY contain more than one <serviceBoundary> element with
>    profile 'civic'.

appear to contradict each other. Which is it?

> The identifier is a random token with at least 128 bits of entropy
>    and can be assumed to be globally unique.  It uniquely references a
>    particular boundary.  If the boundary changes, a new identifier MUST
>    be chosen.  Because of these properties, a client receiving a mapping
>    response can simply check if it already has a copy of the boundary
>    with that identifier.  If so, it can skip checking with the server
>    whether the boundary has been updated.  Since service boundaries are
>    likely to remain unchanged for extended periods of time, possibly
>    exceeding the normal lifetime of the service URL, this approach
>    avoids unnecessarily refreshing the boundary information just because
>    the the remainder of the mapping has become invalid.

Any guidelines about when a server is supposed to send a service 
boundary reference as opposed to the actual service boundary in a response?

> The Service Number Element
> 
>    The service number is returned in the optional <serviceNumber>
>    element.  It contains a string of digits, * and # that a user on a
>    device with a 12-key dial pad could use to reach that particular
> 
> 
> 
> Hardie, et al.           Expires August 13, 2007               [Page 11]
> 
> Internet-Draft                    LoST                     February 2007
> 
> 
>    service.

This is not true.

So if I'm in an enterprise which requires '9' for an outside line, 
wouldn't I have to dial 9 first before this sequence? I think these 
service numbers represent numbers that are part of the local *numbering 
plan*, and are accessed based on the *dial plan* configured into the device.

> 7.3.3.  Recursion
> 
>    LoST <findService> and <listServicesByLocation> queries can be
>    recursive, as indicated by the 'recursive' attribute.  A value of

You haven't mentioned the listServicesByLocation query yet.

> The example in Figure 6 demonstrates address
>    validation, omitting the standard response elements.

but figure 6 is a request, not a response. So how can it omit response 
elements? Maybe you mean figure 7?

> true.  Each element contains a list of tokens separated by white
>    space, enumerating the civic location lables used in child elements

labels

>  Note that the same address can yield different responses if parts of
>    the civic address contradict each other.  For example, if the postal
>    code does not match the city, local server policy determines whether
>    the postal code or the city is considered valid.  The mapping
>    naturally corresponds to the valid elements.

I think you need a bit more guidance on how to construct the validation 
responses. In particular, I think that you would want to indicate that 
the most specific address component that is in conflict is the one 
listed as in error. For example, if a street address is 65 Main St. and 
there is no number 65 on Main St., you would indicate that "65" is in 
error, not Main St.

>  <?xml version="1.0" encoding="UTF-8"?>
>    <listServices
>      xmlns="urn:ietf:params:xml:ns:lost1">
>      <service>urn:service:sos</service>
>    </listServices>
> 
>                 Figure 12: Example of <ListServices> query

The text in section 9 doesnt mention that the query can contain a 
service. Presumably this is a request for the server to indicate which 
services it supports beneath this root? And that, if absent, its a 
request for all services?

There is an assumption that the server knows all of the services it 
supports. What about a LoST server that front ends a large number of 
back-end servers, forwarding requests to a particular back-end server 
based on location? THis front end server doesn't really know what 
services it supports.

>  define the manner in which location information is transmitted.  It
>    possible to standardize other profiles in the future.  The two
>    baseline profiles are:

It is

>  4.  The declaration of whether geodetic-2d or civic is to be used as
>        the baseline profile.  It is necessary to explicitly declare the
>        baseline profile as future profiles may be combinations of
>        geodetic and civic location information.

This doesn't make sense to me; I thought this spec defined both 
geodetic-2d and civic as baseline mandatory-to-implement.

> Requests and responses containing <location> or <serviceBoundary>
>    elements MUST contain location information in exactly one of the two
>    baseline profiles, in addition to zero or more additional profiles.
>    The ordering of location information indicates a preference on the
>    part of the sender.

THis seems odd. Why can't you include location in both of the location 
profiles if you have it? It might allow the server to figure out which 
is more accurate and use that one.

>  1.  A client MUST be capable of understanding the response for the
>        baseline profiles it used in the request.

The word 'profiles' (plural) makes me think you can in fact have 
multiple baseline profiles in the request, though the words above forbid it.

>   4.  Servers MUST implement the geodetic-2d and civic profiles.

What does this mean? Does it mean that it must be able to process 
requests with <location> objects in either format? Does it mean it needs 
to be able to represent a boundary in either of the two formats? Thats 
actually a tall order; I would tend to think that boundaries in 
particular would typically exist in only one format and that conversion 
is not going to be easy or possible in many cases.

>  6.  If a server receives a request that only contains location
>        information using profiles it does not understand, the server
>        responds with a <locationProfileError> (Section 12.1).

based on your rules this should never happen.

>  7.  The <serviceBoundary> element MUST use the same location profile
>        that was used to retrieve the answer and indicates which profile
>        has been used with the 'profile' attribute.

'used to retrieve the answer' - what does that mean? What if the server 
converts the input format internally prior to looking up the answer in a 
backend store?

Also these rules do not place any requirements on clients. Do they need 
to support both geodesic-2d and civic? Should be clear either way.

>  These rules enable the use of location profiles not yet specified,
>    while ensuring baseline interoperability.  Take, for example, this
>    scenario.  Client X has had its firmware upgraded to support the
>    uber-complex-3D location profile.  Client X sends location

You are talking about figures 16 and 17 though you don't reference them.

>  Servers use this profile by placing a GML [13] <Polygon> element
>    within the <serviceBoundary> element.  This is defined by the
>    'polygon' pattern in the LoST schema (see Section 14).

Well, servers 'use this profile' by processing <location> requests and 
constructing serviceBoundary objects in responses. I think you mean to 
say that <location> objects are constructed using <position> and 
serviceBoundary elemenets by <Polygon> elements.

Same comment on 11.3.

> A LoST server can respond indicating that the querier should redirect
>    the query to another server, using the <redirect> element.  The
>    element includes a 'target' attribute indicating the LoST application
>    unique string (see Section 4) that the client SHOULD be contacting
>    next, as well as the 'source' attribute indicating the server that
>    generated the redirect response and a 'message' attribute explaining
>    the reason for the redirect response. 

Is there support for multiple languages at once here, as is the case 
with warnings and errors?

> 13.  LoST Transport

You might want to include some discussion on timers. LoST layers a 
transaction protocol ontop of HTTP. How long should a client wait for a 
response?

Do LoST servers need to support pipelining? Do they have to provide both 
http and https support? Do clients need to support both?

What about authentication? Can digest be used? What about mutual TLS?

I think this section is a bit underspecified.


> 16.5.  LoST Location Profile Registry
> 
>    This document seeks to create a registry of location profile names
>    for the LoST protocol.  Profile names are XML tokens.  This registry
>    will operate in accordance with RFC 2434 [2], Standards Action.

I'd suggest you actually include the table that IANA is supposed to 
create. I think you want it to look like this:


LoST Location Profiles

Profile Name             Specification
--------------------------------------
geodetic-2d              RFCXXXX
civic                    RFCXXXX


> Generally, authentication and authorization is not required for
>    mapping queries.  If it is, authentication mechanism of the
>    underlying transport mechanism, such as HTTP basic and digest
>    authentication, MAY be used.  (Basic authentication SHOULD only be
>    used in combination with TLS.)

I this this last SHOULD has to be a MUST.

> 17.  Security Considerations

Text in the body of the specification discusses body signatures, but 
there is no treatment on how this is done.

> In protocols that support
>    content type indication, LoST uses the media type application/
>    lost+xml.

What does this mean? That when used with HTTP, LoST objects use this 
content-type?



Thanks,
JOnathan R.




-- 
Jonathan D. Rosenberg, Ph.D.                   600 Lanidex Plaza
Cisco Fellow                                   Parsippany, NJ 07054-2711
Cisco Systems
jdrosen@cisco.com                              FAX:   (973) 952-5050
http://www.jdrosen.net                         PHONE: (973) 952-5000
http://www.cisco.com

_______________________________________________
Ecrit mailing list
Ecrit@ietf.org
https://www1.ietf.org/mailman/listinfo/ecrit