[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Ecrit] comments on LoST



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 at cisco.com FAX: (973) 952-5050 http://www.jdrosen.net PHONE: (973) 952-5000 http://www.cisco.com

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