ecrit@ietf.org
[Top] [All Lists]

Re: [Ecrit] LoST Review

Subject: Re: [Ecrit] LoST Review
From: Hannes Tschofenig
Date: Thu, 01 Feb 2007 11:14:06 -0500
Hi Patrik,

thank your for your review comments. I will try to address some of them below:

Marc Linsner wrote:
Hannes and I asked Patrik Falstrom to review the LoST/Mapping Arch
drafts....here is the first of his comments.....
............................................................................
........................................

-----Original Message-----
From: Patrik Fältström [mailto:paf@xxxxxxxxx] Sent: Wednesday, January 31, 2007 9:13 AM
To: Marc Linsner
Cc: leslie@xxxxxxxxxxxxxxx; 'Hannes Tschofenig'
Subject: Re: ECRIT help please?

First of all, I read documents serially. So, some concern I have had might
be resolved later on. Because of that, read my comments from top to bottom
and interpret as I have not seen what is below the comment.

            LoST: A Location-to-Service Translation Protocol
                      draft-ietf-ecrit-lost-03.txt

Abstract

   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.

FYI: I have always been nervous when using as an index something that is a
well known abstraction of a location, such as a civic location. My argument all the time has been that the most important piece of the
puzzle is that "the device" have some kind of identifier that later can be
mapped to a PSAP. Secondly (and not the same, note that) that the device can
send information to the PSAP so that the PSAP can (at least in Sweden) (a)
locate the device and (b) reinitiate the connection if the communication
breaks.

I have seen too many discussions in ECRIT where the two uses of "the
location" (the routing issue, and the data that is sent to the PSAP) is
claimed to be the same.

Anyway... You have heard me saying this before :-)

I am not sure about this comment. I think you need to provide more backgroup regarding your question.

Table of Contents

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
   2.  Terminology and Requirements
Notation  . . . . . . . . . . . .  6
   3.  Overview of Protocol
Usage . . . . . . . . . . . . . . . . . .  7
4. LoST Uniform Resource Locators and Their Resolution . . . . . 8
   5.  The <mapping>
Element  . . . . . . . . . . . . . . . . . . . .  9
     5.1.  Data source and version: The 'source', 'sourceId' and
'version' Attributes . . . . . . . . . . . . . . . . . . . 9 5.2. Time of Last Update: The 'lastUpdated' Attribute . . . . . 9 5.3. Validity: The 'expires' Attribute . . . . . . . . . . . . 9 5.4. Describing the Service with the <displayName> Element . . 10 5.5. The Mapped Service: the <service> Element . . . . . . . . 10
     5.6.  Defining the Service Region with the <serviceBoundary>
Element . . . . . . . . . . . . . . . . . . . . . . . . . 10
     5.7.  Service Boundaries by Reference: the
<serviceBoundaryReference> Element . . . . . . . . . . . . 11
     5.8.  The Service
Number . . . . . . . . . . . . . . . . . . . . 11
     5.9.  Service URLs: the <uri>
Element  . . . . . . . . . . . . . 11
   6.  Path of Request:  <path>
Element . . . . . . . . . . . . . . . 12
7. Mapping a Location and Service to URLs: <findService> . . . . 13 7.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 13 7.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 13 7.2.1. Example Using Geodetic Coordinates . . . . . . . . . . 13 7.2.2. Civic Address Mapping Example . . . . . . . . . . . . 14 7.3. Components of the <findService> Request . . . . . . . . . 16
       7.3.1.  The <location>
Element . . . . . . . . . . . . . . . . 16
7.3.2. Identifying the Service: The <service> Element . . . 17 7.3.3. Recursion . . . . . . . . . . . . . . . . . . . . . . 17
       7.3.4.  Service
Boundary . . . . . . . . . . . . . . . . . . . 17
7.3.5. Requesting Civic Location Validation . . . . . . . . . 17
     7.4.  Components of the Mapping Response
<findServiceResponse> . . . . . . . . . . . . . . . . . . 19 7.4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 19
       7.4.2.  Civic Address Validation:  the
               <locationValidation>
Element . . . . . . . . . . . . . 20
8. Retrieving the Service Boundary via <getServiceBoundary> . . . 21 9. List Services: <listServices> . . . . . . . . . . . . . . . . 24 10. List Services By Location: <listServicesByLocation> . . . . . 25
   11. Location
Profiles  . . . . . . . . . . . . . . . . . . . . . . 27



Hardie, et al. Expires July 21, 2007 [Page 2] Internet-Draft LoST January 2007


     11.1. Location Profile
Usage . . . . . . . . . . . . . . . . . . 28
     11.2. Two Dimensional Geodetic
Profile . . . . . . . . . . . . . 30
     11.3. Basic Civic
Profile  . . . . . . . . . . . . . . . . . . . 31
   12. Errors, Warnings, and
Redirects  . . . . . . . . . . . . . . . 32
12.1. Errors . . . . . . . . . . . . . . . . . . . . . . . . . . 32 12.2. Warnings . . . . . . . . . . . . . . . . . . . . . . . . . 33 12.3. Redirects . . . . . . . . . . . . . . . . . . . . . . . . 34
   13. LoST
Transport . . . . . . . . . . . . . . . . . . . . . . . . 35
   14. Relax NG
Schema  . . . . . . . . . . . . . . . . . . . . . . . 36
   15. Internationalization
Considerations  . . . . . . . . . . . . . 43
   16. IANA
Considerations  . . . . . . . . . . . . . . . . . . . . . 44
     16.1. U-NAPTR
Registrations  . . . . . . . . . . . . . . . . . . 44
     16.2. Content-type registration for 'application/lost
+xml' . . . 44
     16.3. LoST Relax NG Schema
Registration  . . . . . . . . . . . . 46
     16.4. LoST Namespace
Registration  . . . . . . . . . . . . . . . 46
     16.5. URL Registration
Template  . . . . . . . . . . . . . . . . 47
     16.6. LoST Location Profile
Registry . . . . . . . . . . . . . . 48
   17. Security
Considerations  . . . . . . . . . . . . . . . . . . . 49
18. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 50
   19. Open
Issues  . . . . . . . . . . . . . . . . . . . . . . . . . 52
20. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53
     20.1. Normative
References . . . . . . . . . . . . . . . . . . . 53
     20.2. Informative
References . . . . . . . . . . . . . . . . . . 54
Appendix A. Non-Normative RELAX NG Schema in XML Syntax . . . . . 55 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 69 Intellectual Property and Copyright Statements . . . . . . . . . . 70

























Hardie, et al. Expires July 21, 2007 [Page 3] Internet-Draft LoST January 2007


1.  Introduction

   This document describes a protocol for mapping a service identifier
   [10] and location information compatible with PIDF-LO [8], namely
revised civic location information [11] and GML [13]) to one or more
   service URL.  Example service URL schemes include sip [14], xmpp
[15], and tel [16]. While the initial focus is on providing mapping
   functions for emergency services, it is likely that the protocol is
   applicable to any service URN.  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.

   This document names this protocol "LoST", for Location-to-Service
   Translation.  LoST Satisfies the requirements [18] for mapping
   protocols.  LoST provides a number of operations, centered around
   mapping locations and service URNs to service URLs and associated
   information.  LoST mapping queries can contain either civic or
   geodetic location information.  For civic addresses, LoST can
   indicate which parts of the civic address are known to be valid or
   invalid, thus providing address validation (see Section 3.5 of [18]
   for a description of validation).  LoST indicates errors in the
   location data to facilitate debugging and proper user feedback, but
   also provides best-effort answers.

LoST queries can be resolved recursively or iteratively. To minimize round trips and to provide robustness against network failures, LoST
   caches individual mappings and indicates the region for which the
   same answer would be returned ("service region").

Hmm...so LoST include caching. This is the first thing I think one should
look at. Who defines the appropriate caching time? Do you need notifications
for emergency updates? Etc?

Henning provided an answer for this one already. The caching aspect in LoST refers to the mapping. When a resolver is unable to interact with an authoritive server due to, for example, intermitted connectivity then it can use the cached mapping. The lifetime of the cached mapping is set by the authoritive server.


   As defined in this document, LoST messages are carried in HTTP and
HTTPS protocol exchanges, facilitating use of TLS for protecting the
   integrity and confidentiality of requests and responses.

Oh, no! Not HTTP again!!! Why? Also, you can not rely on client certificates
or other mechanisms for the authentication of the client sending the query.
You need another layer of username/password/ whatever on top of TLS. TLS is
usable for the encryption of the traffic, but not (much) more.
There is nothing wrong with HTTP. It is possible to define other bindings for LoST but at the moment we stick with HTTP.

Regarding the security mechanisms. We assume that server-side authentication and that works with TLS perfectly fine. For client-side authentication TLS can also be used but we assume that the client will typically not be authenticated by the LoST server since it does not provide a particular advantage. For the resolver to a Forest Guide TLS with client-side authentication can be used and there is no big magic about it. Both pre-shared secret and asymmetric cryptography can be used for that purpose.

Also, if a SIP proxy runs the LoST clients towards a LoST resolver then mutual TLS based authentication can be used without major problems particularly when someone considers an architecture similarly to the one envisioned by the 3GPP or ETSI TISPAN right now.


This implies to me that the payload that is moved with the HTTP protocol
have to include enough signatures, passwords, usernames and possibly
encryption to handle the authentication and authorization of the LoST
transaction.

There might be a need to sign individual XML elements at the LoST layer but this is not described at the moment. This might be useful when dealing with forged LoST location->PSAP service area mappings.

Lets see below how this problem is resolved.

This document focuses on the description of the protocol between the mapping client (seeker or resolver) and the mapping server (resolver or other servers). The relationship between other functions, such as
   discovery of mapping servers, data replication and the overall
   mapping server architecture are described in a separate document
   [19].

   The query message carries location information and a service
   identifier encoded as a Uniform Resource Name (URN) (see [10]) from
   the LoST client to the LoST server.  The LoST server uses its
   database to map the input values to one or more Uniform Resource
   Identifiers (URI) and returns those URIs along with optional
information, such as hints about the service boundary, in a response
   message to the LoST client.  If the server cannot resolve the query
itself, it may in turn query another server or return the address of



Hardie, et al. Expires July 21, 2007 [Page 4] Internet-Draft LoST January 2007


   another LoST server, identified by a LoST URL (Section 4).

I am a little bit nervous about the fact that the server can either give back a referral OR do a recursive query. For the client the difference is of course that all clients MUST implement the ability to handle referrals, but on the other hand, the ability for a server to query another server might not have to be in this document. Why is that needed? Because it is needed to know wether the data comes from an authoritative source? Or "just" because it imitates the way DNS works?

We'll see.
Henning responded to this issue already.

   In
addition to the mapping function described in Section 7, the protocol
   also allows to retrieve the service boundary (see Section 8) and to
   list the services available for a particular location (see
   Section 10) or supported by a particular server (see Section 9).














































Hardie, et al. Expires July 21, 2007 [Page 5] Internet-Draft LoST January 2007


2.  Terminology and Requirements Notation

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [1].

   This document furthermore uses the terminology defined in [18].

"Warning" :-) I have not read this [18] document.











































Hardie, et al. Expires July 21, 2007 [Page 6] Internet-Draft LoST January 2007


3.  Overview of Protocol Usage

   The client may perform the mapping at any time.  Among the common
   triggers for mapping requests are:

   1.  When the client initially starts up or attaches to a network.

   2.  When the client detects that its location has changed
sufficiently that it is outside the bounds of the service region
       returned in an earlier LoST query.

   3.  When cached mapping information has expired.

   4.  When invoking a particular service.  At that time, a client may
       omit requests for service boundaries or other auxiliary
       information.

   A service-specific Best Current Practice (BCP) document, such as
   [20], governs whether a client is expected to invoke the mapping
service just before needing the service or whether to rely on cached
   answers.  Cache entries expire at their expiration time (see
   Section 5.3), or they become invalid if the caller's device moves
   beyond the boundaries of the service region.




























Hardie, et al. Expires July 21, 2007 [Page 7] Internet-Draft LoST January 2007


4.  LoST Uniform Resource Locators and Their Resolution

LoST servers are identified by LoST Uniform Resource Locators (URLs),
   which follow the format of URLs defined in RFC 3986 [7], with the
   following ABNF:

      LoST-URI = "lost:" host

   'host' is defined in Section 3.2.2 of RFC 3986 [7].

   An example is 'lost:lostserver.example.com'

Have this URI spec been reviewed on the URI-review list? If not, I urge you to pass it on asap.

That's a good hint. I will do that.

If a LoST URL contains a host name rather than an IP address, clients
   need to use U-NAPTR [12] using the U-NAPTR specification described
   below to obtain a URI (indicating host and protocol) for the
   applicable LoST service.  In this document, only the HTTP and HTTPS
   URL schemes are defined.  Note that the HTTP URL can be any valid
   HTTP URL, including those containing path elements.

The following two DNS entries resolve the LoST URL "lost:example.com" to the HTTPS URL https://lostserv.example.com/secure or the HTTP URL
   http://lostserver.example.com, with the former being preferred.

(1) Please use the same examples all the time. Above you use the example lostserver.example.com, and now example.com.

(2) Why do you not only use SRV records for this as lost is only defined for HTTP/HTTPS?

lost:example.com -> _lost._tcp.example.com:80

I do not see any need for NAPTR records, unless LOST can be used with some other protocol than HTTP. That is though not what it seems the overall design is for.

I.e. possible over-engineering for an abstraction that in reality is not, and will never, be used.


I don't think it is a too complex design. Furthermore, in the beginning we also spoke about other LoST bindings.


       example.com.

       IN NAPTR 100  10   "u"    "LoST:https"
            "!*.!https://lostserver.example.com/secure!";  ""

       IN NAPTR 200  10   "u"    "LoST:http"
            "!*.!http://lostserver.example.com!";  ""

How do the end device get the LOST URL?



















Hardie, et al. Expires July 21, 2007 [Page 8] Internet-Draft LoST January 2007


5.  The <mapping> Element

The <mapping> element is the core data element in LoST, describing a
   service region and the associated service URLs.  Its parameters
indicate when the mapping was last updated, how long it is valid, its
   version and the authoritative source for the mapping, along with a
   unique identifier.  Elements within the <mapping> element then
   provide a human-readable description, the service URN, a service
   boundary, the service URIs, and a service number.  All elements
   except the service URN are optional.


Are really all elements optional? sourceId, version, and source attributes as well?

This draft contain a lot of words. Not as crisp as I would like to see a protocol specification. Why for example does the above paragraph point out "...provide a human-readable description..." etc, and then the first thing that happen below in 5.1 is that it talks about "Data source and version". Attributes that are not mentioned above?

Improving readability is a good thing. We should probably shorten the above paragraphs to avoid too much repetition.

  Below, we describe the
   components in turn.

Unnecessary text.

5.1.  Data source and version: The 'source', 'sourceId' and 'version'
      Attributes

The 'source', 'sourceId' and 'version' attributes uniquely identify a
   particular mapping record.  They are created by the authoritative
source for a mapping and never modified when a mapping is served from a cache. The 'source' attribute contains a LoST URL identifying the
   authoritative generator of the mapping.  The 'sourceId' attribute
   identifies a particular mapping.

Should not the URI definition include the ability to also include the sourceId and version in the URI?

Else you will not be able to get a URI for the record itself, and I think that would be an opportunity that should not be missed.


   The attribute contains a token,
   which is opaque, but MUST be unique among all different mappings
   maintained by the authoritative source for that particular service.

"The attribute" that this sentence talks about, is that the "sourceId" attribute? Not clear.

Why btw are several attributes in the same section of the spec? Better with one attribute per section and a crisp short definition of that attribute.

In previous versions of the document we had each attribute and each element in a separate subsection. Unfortunately, it does not well describe the relationship between the elements that really belong together. Hence, we changed the style a bit.

For example, a UUID is a suitable format. The 'version' attribute is a positive integer that is incremented by one for each change in the
   mapping.

So if the difference between two records I happen to have is 4, there MUST have been that number of versions in between? It is unclear in this text as no MUST, SHOULD etc is in use if this increment of one is mandatory or not. Makes the protocol unclear and might lead to incompatible implementations.

   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. A receiver should

Lower case "should" here...

   be able to replace a mapping with another one having the same
   'source' and 'sourceId' and a higher version number.  All three
   attributes are REQUIRED for all <mapping> elements.

This is not what section 5 said above.

You have an attack vector if someone manage to spoof a record into a cache with a version number that is extremely high. How large can this version number be?

5.2.  Time of Last Update: The 'lastUpdated' Attribute

   The 'lastUpdated' attribute describes when the mapping was last
   changed.  The contents of this attribute is a timezoned XML type
   dateTime, in canonical representation.  The attribute is REQUIRED.

Note that according to 3.2.7.2 of http://www.w3.org/TR/2001/REC- xmlschema-2-20010502/#dateTime (maybe I am looking at the wrong source) the canonical representation of a time is always in UTC, so the timezoned canonical version will always have 'Z' as the timezone indicator.

This is what you want?

We probably should be explicit that the canonical representation is UTC with the 'Z' as the timezone indicator.
5.3.  Validity: The 'expires' Attribute

   The 'expires' attribute contains the absolute time until which the
   mapping is to be considered valid.

Does not "expires" contain the dateTime spec of when the mapping is changing state from valid to not valid? The text above to me seems to be the reverse.

Henning indicated that it might be good to change the text. That's fine with me.

   The contents of this attribute is
   a timezoned XML type dateTime, in canonical representation.  See
   Section 3 regarding how this value is to be utilized with a cache.
   The 'expires' attribute is REQUIRED to be included in the <mapping>
   element.




Hardie, et al. Expires July 21, 2007 [Page 9] Internet-Draft LoST January 2007


On occasion, a resolver may be forced to return an expired mapping if
   it cannot reach the authoritative server or the server fails to
return a usable answer. Seekers and resolvers MAY cache the mapping
   so that they have at least some information available.  Resolvers
   SHOULD re-attempt the query each time a seeker requests a mapping.

I think you should try to only use the terms "client" and "server" throughout the document when you talk about the protocol. We already know that a server can act as a proxy, and then act as a client.

Try to not use the term "resolver". Experience from the DNS show it is a confusing term.

Good hint

5.4.  Describing the Service with the <displayName> Element

The <displayName> element describes the service with a string that is
   suitable for display to human users, annotated with the 'xml:lang'
   attribute that contains a language tag to aid in the rendering of
   text.

Why is lang tag needed for the rendering? Because of alternate displayName elements with different lang tags?

As indicated by Henning people in the working group believed that the text will be different in different regions and potentially multiple versions might be returned.

5.5.  The Mapped Service:  the <service> Element

Here you start talking about elements and not attributes. That is confusing.

   The 'service' element identifies the service for which this mapping
   applies.  It is usually the same service URN as in the request.

Usually? That is an interesting term to have in a protocol specification... :-)

We will remove it.

However, if the requested service, identified by the service URN [10]
   in the <service> element in the request, does not exist for the
   location indicated, the server can either return an
   <serviceNotImplemented> (Section 12.1) error or can provide an
   alternate service that approximates the desired service for that
   location.

But if the response is <serviceNotImplemented>, is that "error" part of the <service> element? We talk about the content of the <service> element here, and I see either the URN of the service, or the URN of an alternative service. Not a third alternative.

Once again, not crisp enough, risk that the result is non- interoperable implementations.

   In the latter case, the server MUST include a <service>
element with the alternative service URN. The choice of service URN is left to local policy, but the alternate service should be able to satisfy the original service request. The <service> element may also
   be required if the mapping is to be digitally signed.

Resolvability of that URN? It is not a lost URL that is given back so it is a referral within the protocol?

The service element contains a URN based on the service URN document. It is not meant to be resolved into something else.

5.6.  Defining the Service Region with the <serviceBoundary> Element

Element and not attribute again.

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

What is "can" in this sentence? What does that word imply? That it might not indicate the same region as in the actual query?

   The service region can be indicated by value or by
   reference (see Section 5.7).  If a client moves outside the service
   area and wishes to obtain current service data, it MUST send a new
   query with its current location.

It is interesting to have "if...wishes...MUST" in the same sentence. What if he do not wish to obtain current service data? I.e. the "if" make the MUST loose its power.

This sentence should be removed since this aspect is covered in the Phone BCP document.

   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.

Change the order of the attributes...to me it seems this is a forward reference to "profile" attribute that btw is not defined in section 5.

The profile attribute is not described in Section 5. That's true.
We have designated a separate section for the aspect of location profiles in Section 11.

It might not hurt to put a reference to Section 11 in there.

   The client only processes the first element that
   it can understand according to its list of supported location
   profiles.  Thus, the elements are alternative descriptions of the
   same service region, not additive geometries.

What if there is a difference? Is a difference allowed?

That's something that has to be described in the Phone BCP for emergency services.
Not in this document since it is application specific.

The server returns all suitable service regions, using all available location profiles, so that intermediate caches have this information
   available for future queries.

Is "suitable" same as "match the query"?




Hardie, et al. Expires July 21, 2007 [Page 10] Internet-Draft LoST January 2007


5.7.  Service Boundaries by Reference: the <serviceBoundaryReference>
      Element

Since geodetic service boundaries may contain thousands of points and
   thus be quite large,

Can it? Hmmm....(reader start to think here)...yes it can! :-)

   clients may opt to conserve bandwidth and
   request a reference to the service boundary instead of the value
described in Section 5.6. The identifier of the service boundary is
   returned as an attribute of the <serviceBoundaryReference> element,
   along with a LoST URL identifying the server from where it can be
   retrieved.

Should the reference not be "just" a URL? (See above)

You mean " A URL instead of a LoST URL"?

   The actual value of the service boundary is then
   retrieved with the getServiceBoundary (Section 8) request.

   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.

Should the reference then not be a URL plus an identifier?

Currently, the structure is as follows:

   <serviceBoundaryReference
     source="lost:authoritative.example"
     key="7214148E0433AFE2FA2D48003D31172E" />

The identifier is in a separate attribute.

   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 refreshing the boundary information even if the cached service
   response has gotten stale.

...even if the URL changes for the object.

5.8.  The Service Number

Element or attribute?

Element

Has to be added.

   The service number is returned in the optional <serviceNumber>
   element.

Aha, 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
   service.

Reference a syntax specification. Max 15 char in the string as in E.164?

5.9.  Service URLs: the <uri> Element

The response returns the service URLs in one or more <uri> elements.
   The URLs MUST be absolute URLs.  The ordering of the URLs has no
   particular significance.  Each URL scheme MUST only appear at most
   once, but it is permissible to include both secured and regular
versions of a protocol, such as both 'http' and 'https' or 'sip' and
   'sips'.

How to handle load balancing, or the fact two PSAPs might cover the same area?

Does that NEVER happen?

Did this document not say earlier that all matching service areas (and for me because of that srevice URLs) should be returned that matches? This "one scheme only" to me say that the server must choose "the best one", which seems weird. Or am I confused?

We had a discussion about load balancing here. See http://www.tschofenig.com:8080/lost/issue9. After the discussion the person that initially proposed it decided to withdraw the issue.












Hardie, et al. Expires July 21, 2007 [Page 11] Internet-Draft LoST January 2007


6.  Path of Request:  <path> Element

To prevent loops and to allow tracing of request and response paths,
   all requests that allow recursion include a <path> element that
   contains one or more <via> elements, each possessing an attribute
   containing a LoST URL.  The order of <via> elements corresponds to
   the order of LoST servers, i.e., the first <via> element identifies
   the server that first received the request from the seeker.  The
   authoritative server copies the <path> element verbatim into the
   response.

I don't know enough about XML to say whether this ordering is ok or not. This is the first time ordering among elements exists in this spec though.
The order matters here in order to determine which server was traversed first.

If a query is answered iteratively, the querier includes all servers
   that it has already contacted.

   The example in Figure 5 indicates that the answer was given to the
   responding server by the LoST server at esgw.ueber-110.de.example,
   which got the answer from the LoST server at
   polizei.muenchen.de.example.

This is also sent in a request? How else can one prevent loops if a server is acting as a client and do a recursive search, walking into servers that the originator already have queried?

I don't understand exactly how this can help with loop prevention. Just how it can help loop detection on the client side. If it is not passed also in requests.
































Hardie, et al. Expires July 21, 2007 [Page 12] Internet-Draft LoST January 2007


7.  Mapping a Location and Service to URLs: <findService>

7.1.  Overview

   The <findService> query constitutes the core of the LoST
   functionality, mapping civic or geodetic locations to URLs and
associated data. After giving an example, we enumerate the elements
   of the query and response.

7.2.  Examples

7.2.1.  Example Using Geodetic Coordinates

The following is an example of mapping a service to a location using
   geodetic coordinates, for the service associated with the police
   (urn:service:sos.police).


   <?xml version="1.0" encoding="UTF-8"?>
   <findService
     xmlns="urn:ietf:params:xml:ns:lost1"
     xmlns:p2="http://www.opengis.net/gml";
     serviceBoundary="value"
     recursive="true">

     <location profile="geodetic-2d">
       <p2:Point id="point1" srsName="urn:ogc:def:crs:EPSG::4326">
          <p2:pos>37.775 -122.422</p2:pos>
       </p2:Point>
     </location>
     <service>urn:service:sos.police</service>

   </findService>

                 Figure 2: A <findService> geodetic query

   Given the query above, a server would respond with a service, and
   information related to that service.  In the example below, the
   server has mapped the location given by the client for a police
service to the New York City Police Deparment, instructing the client
   that it may contact them via the URIs "sip:nypd@xxxxxxxxxxx" and
   "xmpp:nypd@xxxxxxxxxxx".  The server has also given the client a
geodetic, two-dimensional boundary for this service. The mapping was
   last updated on November 1, 2006 and expires on January 1, 2007.
   This instructs the client that if its location changes beyond the
   give service boundary or the expiration time has been reached, it
   would need to requery for this information.

Does "lastUpdated" imply that it is correct from that point in time? To me that is not crystal clear. One might update a record one month ahead of a move for example.



Hardie, et al. Expires July 21, 2007 [Page 13] Internet-Draft LoST January 2007


   <?xml version="1.0" encoding="UTF-8"?>
   <findServiceResponse xmlns="urn:ietf:params:xml:ns:lost1"
     xmlns:p2="http://www.opengis.net/gml";>
     <mapping
       expires="2007-01-01T01:44:33Z"
       lastUpdated="2006-11-01T01:00:00Z"
       source="lost:authoritative.example"
       sourceId="7e3f40b098c711dbb6060800200c9a66" version="1">
       <displayName xml:lang="en">
         New York City Police Department
       </displayName>
       <service>urn:service:sos.police</service>
       <serviceBoundary profile="geodetic-2d">
         <p2:Polygon srsName="urn:ogc:def::crs:EPSG::4326">
           <p2:exterior>
             <p2:LinearRing>
               <p2:pos>37.775 -122.4194</p2:pos>
               <p2:pos>37.555 -122.4194</p2:pos>
               <p2:pos>37.555 -122.4264</p2:pos>
               <p2:pos>37.775 -122.4264</p2:pos>
               <p2:pos>37.775 -122.4194</p2:pos>
             </p2:LinearRing>
           </p2:exterior>
         </p2:Polygon>
       </serviceBoundary>
       <uri>sip:nypd@xxxxxxxxxxx</uri>
       <uri>xmpp:nypd@xxxxxxxxxxx</uri>
       <serviceNumber>911</serviceNumber>
     </mapping>
     <path>
       <via source="lost:authoritative.example"/>
       <via source="lost:resolver.example"/>
     </path>
   </findServiceResponse>

             Figure 3: A <findServiceResponse> geodetic answer

7.2.2.  Civic Address Mapping Example

   The following is an example of mapping a service to a location much
   like the example in Section 7.2.1, but using civic address location
   information.  In this example, the client requests the service
associated with police (urn:service:sos.police) along with a specific
   civic address (house number 6 on a street named Otto-Hahn-Ring in
   Munich, Germany).






Hardie, et al. Expires July 21, 2007 [Page 14] Internet-Draft LoST January 2007


   <?xml version="1.0" encoding="UTF-8"?>
   <findService xmlns="urn:ietf:params:xml:ns:lost1"
     recursive="true" serviceBoundary="value">
     <location
       profile="civic">
       <civicAddress
         xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr">
         <country>Germany</country>
         <A1>Bavaria</A1>
         <A3>Munich</A3>
         <A6>Otto-Hahn-Ring</A6>
         <HNO>6</HNO>
         <PC>81675</PC>
       </civicAddress>
     </location>
     <service>urn:service:sos.police</service>
   </findService>

               Figure 4: A <findService> civic address query

   Given the query above, a server would respond with a service, and
   information related to that service.  In the example below, the
   server has mapped the location given by the client for a police
   service to the Muenchen Polizei-Abteilung, instructing the client
   that it may contact them via the URIs sip:munich-police@xxxxxxxxxxx
   and xmpp:munich-police@xxxxxxxxxxxx  The server has also given the
   client a civic address boundary (the city of Munich) for this
   service.  The mapping was last updated on November 1, 2006 by the
   authoritative source "lost:polizei.muenchen.de.example" and expires
   on January 1, 2007.  This instructs the client to requery for the
information if its location changes beyond the given service boundary
   (i.e., beyond the city of Munich) or after January 1, 2007.



















Hardie, et al. Expires July 21, 2007 [Page 15] Internet-Draft LoST January 2007


   <?xml version="1.0" encoding="UTF-8"?>
   <findServiceResponse xmlns="urn:ietf:params:xml:ns:lost1">
     <mapping
       expires="2007-01-01T01:44:33Z"
       lastUpdated="2006-11-01T01:00:00Z"
       source="lost:esgw.ueber-110.de.example"
       sourceId="e8b05a41d8d1415b80f2cdbb96ccf109" version="1" >
       <displayName xml:lang="de">
         Muenchen Polizei-Abteilung
       </displayName>
       <service>urn:service:sos.police</service>
       <serviceBoundary
         profile="urn:ietf:params:lost:location-profile:basic-civic">
         <civicAddress
           xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr">
           <country>Germany</country>
           <A1>Bavaria</A1>
           <A3>Munich</A3>
           <PC>81675</PC>
         </civicAddress>
       </serviceBoundary>
       <uri>sip:munich-police@xxxxxxxxxxx</uri>
       <uri>xmpp:munich-police@xxxxxxxxxxx</uri>
       <serviceNumber>110</serviceNumber>
     </mapping>
     <path>
       <via source="lost:esgw.ueber-110.de.example"/>
       <via source="lost:polizei.muenchen.de.example"/>
     </path>
   </findServiceResponse>

          Figure 5: A <findServiceResponse> civic address answer

7.3.  Components of the <findService> Request

The <findService> request includes attributes that govern whether the
   request is handled iteratively or recursively, whether location
   validation is performed and which elements must be contained in the
   response.

7.3.1.  The <location> Element

   The <findService> query communicates location using one or more
   <location> elements, which MUST conform to a location profile (see
   Section 11).  There MUST be no more than one location element for
   each distinct location profile.  The order of location objects is
   significant; the server uses the first location object where it
   understands the location profile.

Ok, more ordering here. I presume that is ok...

Using the first it understand is good.


Hardie, et al. Expires July 21, 2007 [Page 16] Internet-Draft LoST January 2007


7.3.2.  Identifying the Service:  The <service> Element

   The type of service desired is specified by the <service> element.
   It contains service URNs from the registry established in [10].

7.3.3.  Recursion

   LoST <findService> and <listServicesByLocation> queries can be
   recursive, as indicated by the 'recursive' attribute.  A value of
   "true" indicates a recursive query, with the default being "false"
   when the attribute is omitted.  In recursive mode, the LoST server
   initiates queries on behalf of the requester and returns the result
   to the requester, inserting a <via> element to track the response
   chain.  The <via> elements are appended in responses in order of
   visit, i.e., the first <via> element contains the authoritative
   server and <via> elements below indicate servers that the response
   traversed on its way back to the original querier.

Do you need time stamps on the via headers?

7.3.4.  Service Boundary

   LoST <mapping> elements can describe the service boundary either by
   value or by reference.  Returning a service boundary reference is
   generally more space-efficient for geospatial (polygon) boundaries
   and if the boundaries change rarely, but does incur an additional
   <getServiceBoundary> request.  The querier can express a preference
for one or the other modality with the 'serviceBoundary' attribute in the <findService> request, but the server makes the final decision as
   to whether to return a reference or a value.  Servers SHOULD NOT
   return a by-value service boundaries if the querier requested a
   reference.

7.3.5.  Requesting Civic Location Validation

   Civic address validation is requested by setting the optional
   attribute 'validateLocation' to true.  If the attribute is omitted,
   it is assumed to be false.  The response is described in
   Section 7.4.2.  The example in Figure 6 demonstrates address
   validation, omitting the standard response elements.













Hardie, et al. Expires July 21, 2007 [Page 17] Internet-Draft LoST January 2007


   <?xml version="1.0" encoding="UTF-8"?>
   <findService
     xmlns="urn:ietf:params:xml:ns:lost1"
     recursive="true"
     validateLocation="true"
     serviceBoundary="value">
     <location profile="civic">
       <civicAddress
         xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr">
         <country>DE</country>
         <A1>Bavaria</A1>
         <A3>Munich</A3>
         <A6>Otto-Hahn-Ring</A6>
         <HNO>6</HNO>
         <PC>81675</PC>
       </civicAddress>
     </location>
     <service>urn:service:sos.police</service>
   </findService>

      Figure 6: A <findService> query with address validation request






























Hardie, et al. Expires July 21, 2007 [Page 18] Internet-Draft LoST January 2007


   <?xml version="1.0" encoding="UTF-8"?>
   <findServiceResponse xmlns="urn:ietf:params:xml:ns:lost1">
     <mapping
       expires="2007-01-01T01:44:33Z"
       lastUpdated="2006-11-01T01:00:00Z"
       source="lost:authoritative.example"
       sourceId="4db898df52b84edfa9b6445ea8a0328e"
       version="1" >
       <displayName xml:lang="de">
         Muenchen Polizei-Abteilung
       </displayName>
       <service>urn:service:sos.police</service>
       <serviceBoundary profile="civic">
         <civicAddress
           xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr">
           <country>Germany</country>
           <A1>Bavaria</A1>
           <A3>Munich</A3>
           <PC>81675</PC>
         </civicAddress>
       </serviceBoundary>
       <uri>sip:munich-police@xxxxxxxxxxx</uri>
       <uri>xmpp:munich-police@xxxxxxxxxxx</uri>
       <serviceNumber>110</serviceNumber>
     </mapping>
     <locationValidation>
       <valid>country A1 A3 A6</valid>
       <invalid>PC</invalid>
     </locationValidation>
     <path>
       <via source="lost:authoritative.example"/>
       <via source="lost:resolver.example"/>
     </path>
   </findServiceResponse>

     Figure 7: A <findServiceResponse> message with address validation
                                information


I stopped here, as the findServiceResponse needed a lot of thinking. I do not have that before monday next week.

Thanks for the review.


Ciao
Hannes

     Patrik

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


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

<Prev in Thread] Current Thread [Next in Thread>