diff options
Diffstat (limited to 'doc/rfc/rfc5222.txt')
-rw-r--r-- | doc/rfc/rfc5222.txt | 3867 |
1 files changed, 3867 insertions, 0 deletions
diff --git a/doc/rfc/rfc5222.txt b/doc/rfc/rfc5222.txt new file mode 100644 index 0000000..2229c6f --- /dev/null +++ b/doc/rfc/rfc5222.txt @@ -0,0 +1,3867 @@ + + + + + + +Network Working Group T. Hardie +Request for Comments: 5222 Qualcomm, Inc. +Category: Standards Track A. Newton + American Registry for Internet Numbers + H. Schulzrinne + Columbia University + H. Tschofenig + Nokia Siemens Networks + August 2008 + + + LoST: A Location-to-Service Translation Protocol + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +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 Public Safety Answering Point (PSAP) for + emergency services. + +Table of Contents + +1. Introduction .................................................. 3 +2. Terminology and Requirements Notation ......................... 4 +3. Overview of Protocol Usage .................................... 5 +4. LoST Servers and Their Resolution ............................ 6 +5. The <mapping> Element ........................................ 7 + 5.1. The Mapping Data Source: 'source', 'sourceId', and + 'lastUpdated' Attributes .................................. 7 + 5.2. Mapping Validity: The 'expires' Attribute ................ 8 + 5.3. Describing the Service with the <displayName> Element .... 8 + 5.4. The Mapped Service: The <service> Element ................. 8 + 5.5. Defining the Service Region with the <serviceBoundary> + Element .................................................. 9 + 5.6. Service Boundaries by Reference: The + <serviceBoundaryReference> Element ........................ 9 + 5.7. The Service Number: The <serviceNumber> Element ......... 10 + 5.8. Service URLs: The <uri> Element ......................... 10 + + + + +Hardie, et al. Standards Track [Page 1] + +RFC 5222 LoST August 2008 + + +6. Path of a Request: The <path> Element ....................... 10 +7. Identifying the Location Element Used for Mapping: + <locationUsed> ............................................... 11 +8. Mapping a Location and Service to URLs: <findService> ....... 11 + 8.1. Overview ................................................. 11 + 8.2. Examples ................................................. 11 + 8.2.1. Example Using Geodetic Coordinates ................... 11 + 8.2.2. Civic Address Mapping Example ....................... 13 + 8.3. Components of the <findService> Request ................. 15 + 8.3.1. The <location> Element ............................... 15 + 8.3.2. Identifying the Service: The <service> Element ..... 16 + 8.3.3. Recursion and Iteration ............................. 16 + 8.3.4. Service Boundary ..................................... 16 + 8.3.5. Requesting Civic Location Validation ................. 16 + 8.4. Components of the Mapping Response + <findServiceResponse> ................................... 18 + 8.4.1. Overview ............................................. 18 + 8.4.2. Civic Address Validation: The <locationValidation> + Element ............................................. 19 +9. Retrieving the Service Boundary via <getServiceBoundary> ..... 19 +10. List Services: <listServices> ............................... 21 +11. List Services By Location: <listServicesByLocation> ......... 22 +12. Location Profiles ........................................... 24 + 12.1. Location Profile Usage ................................... 25 + 12.2. Two-Dimensional Geodetic Profile ......................... 30 + 12.3. Basic Civic Profile ..................................... 31 +13. Errors, Warnings, and Redirects ............................. 32 + 13.1. Errors ................................................... 32 + 13.2. Warnings ................................................. 34 + 13.3. Redirects ............................................... 36 +14. LoST Transport: HTTP ......................................... 36 +15. Relax NG Schema ............................................. 37 +16. Internationalization Considerations ......................... 44 +17. IANA Considerations ......................................... 44 + 17.1. U-NAPTR Registrations ................................... 44 + 17.2. Content-Type Registration for 'application/lost+xml' ..... 44 + 17.3. LoST Relax NG Schema Registration ....................... 46 + 17.4. LoST Namespace Registration ............................. 46 + 17.5. LoST Location Profile Registry ........................... 47 +18. Security Considerations ..................................... 47 +19. Acknowledgments ............................................. 48 +20. References ................................................... 51 + 20.1. Normative References ..................................... 51 + 20.2. Informative References ................................... 52 +Appendix A. Non-Normative RELAX NG Schema in XML Syntax ......... 54 +Appendix B. Examples Online ..................................... 67 + + + + + +Hardie, et al. Standards Track [Page 2] + +RFC 5222 LoST August 2008 + + +1. Introduction + + Protocols such as Naming Authority Pointer (NAPTR) records and the + Service Location Protocol (SLP) can be used to discover servers + offering a particular service. However, for an important class of + services the appropriate specific service instance depends both on + the identity of the service and the geographic location of the entity + that needs to reach it. Emergency telecommunications services are an + important example; here, the service instance is a Public Safety + Answering Point (PSAP) that has jurisdiction over the location of the + user making the call. 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 caller's location based on + jurisdictional boundaries. + + This document describes a protocol for mapping a service identifier + and location information compatible with the Presence Information + Data Format Location Object (PIDF-LO) [6] to one or more service + URIs. Service identifiers take the form of the service URNs + described in [9]. Location information here includes revised civic + location information [10] and a subset of the PIDF-LO profile [13], + which consequently includes the Geo-Shapes [12] defined for GML [11]. + Example service URI 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 + other service URNs. 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, as described in Section + 3.5 of [18]. 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 + supports caching of individual mappings and indicates the region for + which the same answer would be returned ("service region"). + + + + + + +Hardie, et al. Standards Track [Page 3] + +RFC 5222 LoST August 2008 + + + 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. + + This document focuses on the description of the protocol between the + mapping client and the mapping server. 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 [9]) 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 (URIs) 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 + another LoST server, identified by a LoST server name. In addition + to the mapping function described in Section 8, the protocol also + allows to retrieve the service boundary (see Section 9) and to list + the services available for a particular location (see Section 11) or + supported by a particular server (see Section 10). + +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 uses the following terms: + + Mapping: + Mapping is a process that takes a location and a service + identifier as inputs and returns one or more URIs. Those URIs can + point either to a host providing that service or to a host that in + turn routes the request to the final destination. This definition + is a generalization of the term "mapping" as used in [18], because + LoST can be used for non-emergency services. + + LoST client: + A host acts as a LoST client if it sends LoST query messages and + receives LoST response messages. + + LoST server: + A host acts as a LoST server if it receives LoST query messages + and sends LoST response messages. In recursive operation, the + same entity may be both a client and a server. + + + +Hardie, et al. Standards Track [Page 4] + +RFC 5222 LoST August 2008 + + + Authoritative LoST server: + An authoritative server acts only as a server and successfully + resolves the input location and service identifier to a URI or set + of URIs. + + Service boundary: + A service boundary circumscribes the region within which all + locations map to the same service URI or set of URIs for a given + service. A service boundary may consist of several non-contiguous + geometric shapes. + + Validation: + The term "validation" describes the behavior defined as "location + validation" in Section 3.5 of [18]. + + Additional emergency service terminology can be found in [18]. + +3. Overview of Protocol Usage + + The LoST protocol supports the following types of queries and + responses: + + <findService> and <findServiceResponse> + A LoST client retrieves contact URIs based on location information + and a service identifier with this request and response. The same + query type may also ask for location validation and for service + numbers, either combined with a mapping request or separately. + The details can be found in Section 8. + + <getServiceBoundary> and <getServiceBoundaryResponse> + A LoST client obtains a service boundary with this request and + response, as described in Section 9. + + <listServices> and <listServicesResponse> + With this request and response, a LoST client can find out which + services a LoST server supports, as described in Section 10. + + <listServicesByLocation> and <listServicesByLocationResponse> + A LoST client can determine with this request and response which + services are available for a specific location region. Section 11 + describes the details. + + LoST clients may initiate any of the above queries at any time. + Among the common triggers are: + + 1. when the client initially starts up or attaches to a network; + + + + + +Hardie, et al. Standards Track [Page 5] + +RFC 5222 LoST August 2008 + + + 2. when the client detects that its location has changed + sufficiently that it is outside the bounds of the service region; + + 3. when a SIP message arrives at a SIP proxy performing location- + based call routing; + + 4. when cached mapping information has expired; and + + 5. 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 + [21], 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.2), or they become invalid if the caller's device moves + beyond the boundaries of the service region. Service-specific Best + Current Practice documents may also provide guidance on the contact + URI schemes most appropriate to the service. As a general set of + guidelines, URI schemes that do not provide mechanisms for actually + initiating a contact method should be avoided (examples include data, + info, cid, and tag) as transforming those references into contact + mechanisms requires a layer of indirection that makes the overall + mechanism more fragile. Provisionally registered URI schemes should + also be carefully considered before use, because they are subject to + change in core semantics. + +4. LoST Servers and Their Resolution + + LoST servers are identified by U-NAPTR/DDDS (URI-Enabled NAPTR/ + Dynamic Delegation Discovery Service) [8] application unique strings, + in the form of a DNS name. An example is 'lostserver.example.com'. + + Clients need to use the U-NAPTR [8] 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 show the U-NAPTR resolution for + "example.com" to the HTTPS URL https://lostserv.example.com/secure or + the HTTP URL http://lostserver.example.com, with the former being + preferred. + + + + + + + +Hardie, et al. Standards Track [Page 6] + +RFC 5222 LoST August 2008 + + + 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!" "" + + Clients learn the LoST server's host name by means beyond the scope + of this specification, such as SIP configuration and DHCP [25]. + +5. The <mapping> Element + + The <mapping> element is the core data element in LoST, describing a + service region and the associated service URLs. Its attributes and + elements are described in subsections below. + +5.1. The Mapping Data Source: 'source', 'sourceId', and 'lastUpdated' + Attributes + + The 'source', 'sourceId', and 'lastUpdated' attributes uniquely + identify a particular mapping record. They are created by the + authoritative source for a mapping and are never modified when a + mapping is served from a cache. All three attributes are REQUIRED + for all <mapping> elements. A receiver can replace a mapping with + another one having the same 'source' and 'sourceId' and a more recent + time in 'lastUpdated'. + + The 'source' attribute contains a LoST application unique string + identifying the authoritative generator of the mapping (Section 4). + + The 'sourceId' attribute identifies a particular mapping and contains + an opaque token that MUST be unique among all different mappings + maintained by the authoritative source for that particular service. + For example, a Universally Unique Identifier (UUID) is a suitable + format. + + The 'lastUpdated' attribute describes when a specific instance of + mapping, identified by the combination of 'source' and 'sourceId', + was last changed. The contents of this attribute has the XML data + type dateTime in its timezoned form, using the canonical UTC + representation with the letter 'Z' as the timezone indicator. + + + + + + + + + +Hardie, et al. Standards Track [Page 7] + +RFC 5222 LoST August 2008 + + +5.2. Mapping Validity: The 'expires' Attribute + + The 'expires' attribute contains the absolute time at which the + mapping becomes invalid. The contents of this attribute is a + timezoned XML type dateTime, in canonical representation. The + <mapping> element MUST include the 'expires' attribute. + + Optionally, this attribute may contain the values of 'NO-CACHE' and + 'NO-EXPIRATION' instead of a dateTime value. The value 'NO-CACHE' is + an indication that the mapping should not be cached. The value of + 'NO-EXPIRATION' is an indication that the mapping does not 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. Since the expired mapping will be + returned to the client as a non-error/non-warning response, the + client MUST check the 'expires' attribute; if the mapping has + expired, local policy at the client determines whether it discards + the answer and tries again later or uses the possibly stale response. + +5.3. Describing the Service with the <displayName> Element + + 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. + +5.4. The Mapped Service: The <service> Element + + The mandatory <service> element identifies the service for which this + mapping applies. Two cases need to be distinguished when the LoST + server sets the <service> element in the response message: + + 1. If the requested service, identified by the service URN [9] in + the <service> element of the request, exists for the location + indicated, then the LoST server copies the service URN from the + request into the <service> element. + + 2. If, however, the requested service, identified by the service URN + [9] in the <service> element in the request, does not exist for + the location indicated, the server either can return a + <serviceNotImplemented> (Section 13.1) error or can provide an + alternate service that approximates the desired service for that + + + + + +Hardie, et al. Standards Track [Page 8] + +RFC 5222 LoST August 2008 + + + location. 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. + +5.5. Defining the Service Region with the <serviceBoundary> Element + + 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. The service region can be indicated by value or by reference + (see Section 5.6). If a client moves outside the service area and + wishes to obtain current service data, it sends a new query with its + current location. The service region is described by value in one or + more <serviceBoundary> elements, each formatted according to a + specific location profile, identified by the 'profile' attribute (see + Section 12). <serviceBoundary> elements formatted according to + different location profiles are alternative representations of the + same area, not additive to one another; this allows a client + understanding only one of the profile types to be sure it has a + complete view of the serviceBoundary. Within a serviceBoundary + element there may, however, be multiple locations which are additive; + this is necessary because some <serviceBoundary> areas could not be + easily expressed with a single shape or civic location. If included + in a response, the <serviceBoundary> element MUST contain at least + one service boundary that uses the same profile as the request. + + A service boundary is requested by the client, using the + 'serviceBoundary' attribute in the request with the value set to + "value". + +5.6. Service Boundaries by Reference: The <serviceBoundaryReference> + Element + + Since geodetic service boundaries may contain thousands of points and + can thus be quite large, clients may wish to conserve bandwidth by + requesting a reference to the service boundary instead of the value + described in Section 5.5. The identifier of the service boundary is + returned as an attribute of the <serviceBoundaryReference> element, + along with a LoST application unique string (see Section 4) + identifying the server from where it can be retrieved. The actual + value of the service boundary is then retrieved with the + getServiceBoundary (Section 9) request. + + A reference to a service boundary is requested by the client using + the 'serviceBoundary' attribute in the request with the value set to + "reference". A LoST server may decide, based on local policy, to + return the service boundary by value or to omit the + <serviceBoundaryReference> element in the response. + + + +Hardie, et al. Standards Track [Page 9] + +RFC 5222 LoST August 2008 + + + 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 remainder of the mapping has become invalid. + +5.7. The Service Number: The <serviceNumber> 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 + service. + +5.8. 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'. + +6. Path of a Request: The <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 application unique string (see Section 4). The + order of <via> elements corresponds to the order of LoST servers, + i.e., the first <via> element identifies the server that initially + received the request from the client issuing the request. Every + server in a recursive query operation is included in the <path> + element, including the first server to receive it. + + The server that answers the request instead of forwarding it, such as + the authoritative server, copies the <path> element verbatim into the + response. The <path> element is not modified in responses as the + responses traverses the server chain back to the querying client. + + If a query is answered iteratively, the querier includes all servers + that it has already contacted. + + + + +Hardie, et al. Standards Track [Page 10] + +RFC 5222 LoST August 2008 + + + When a cached mapping is returned, then the <path> element cached + together with the mapping is returned. + + The example in Figure 4 indicates that the answer was given to the + client by the LoST server at esgw.ueber-110.de.example, which got the + answer from the (authoritative) LoST server at + polizei.muenchen.de.example. + +7. Identifying the Location Element Used for Mapping: <locationUsed> + + Several of the requests can provide one or more <location> elements, + among which the server gets to choose. It is useful for the client + to be able to determine which one was actually used in producing the + result. For that purpose, the <location> tag MUST contain an 'id' + attribute that uniquely identifies the <location> element. The + format of the identifier is left to the client; it could, for + example, use a hash of the location information. The server returns + the identifier for the <location> element it used in the + <locationUsed> tag. + +8. Mapping a Location and Service to URLs: <findService> + +8.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. + +8.2. Examples + +8.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). + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 11] + +RFC 5222 LoST August 2008 + + + <?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 id="6020688f1ce1896d" 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 1: 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 Department, instructing the + client that it may contact them via the URIs "sip:nypd@example.com" + and "xmpp:nypd@example.com". 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. If + the client's location changes beyond the given service boundary or + the expiration time has been reached, it may want to requery for this + information, depending on the usage environment of LoST. + + + + + + + + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 12] + +RFC 5222 LoST August 2008 + + + <?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="authoritative.example" + sourceId="7e3f40b098c711dbb6060800200c9a66"> + <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@example.com</uri> + <uri>xmpp:nypd@example.com</uri> + <serviceNumber>911</serviceNumber> + </mapping> + <path> + <via source="resolver.example"/> + <via source="authoritative.example"/> + </path> + <locationUsed id="6020688f1ce1896d"/> + </findServiceResponse> + + Figure 2: A <findServiceResponse> geodetic answer + +8.2.2. Civic Address Mapping Example + + The example below shows how to map a service to a location much like + the example in Section 8.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. Standards Track [Page 13] + +RFC 5222 LoST August 2008 + + + <?xml version="1.0" encoding="UTF-8"?> + <findService xmlns="urn:ietf:params:xml:ns:lost1" + recursive="true" serviceBoundary="value"> + <location id="627b8bf819d0bad4d" 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 3: 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@example.com + and xmpp:munich-police@example.com. 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 "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 indicated district of Munich) or after January 1, + 2007. + + + + + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 14] + +RFC 5222 LoST August 2008 + + + <?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="esgw.ueber-110.de.example" + sourceId="e8b05a41d8d1415b80f2cdbb96ccf109"> + <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>DE</country> + <A1>Bavaria</A1> + <A3>Munich</A3> + <PC>81675</PC> + </civicAddress> + </serviceBoundary> + <uri>sip:munich-police@example.com</uri> + <uri>xmpp:munich-police@example.com</uri> + <serviceNumber>110</serviceNumber> + </mapping> + <path> + <via source="esgw.ueber-110.de.example"/> + <via source="polizei.muenchen.de.example"/> + </path> + <locationUsed id="627b8bf819d0bad4d"/> + </findServiceResponse> + + Figure 4: A <findServiceResponse> civic address answer + +8.3. Components of the <findService> Request + + The <findService> request includes attributes and elements that + govern whether the request is handled iteratively or recursively, + whether location validation is performed, and which elements may be + contained in the response. + +8.3.1. The <location> Element + + The <findService> query communicates location information using one + or more <location> elements, which MUST conform to a location profile + (see Section 12). There MUST NOT be more than one location element + + + + + +Hardie, et al. Standards Track [Page 15] + +RFC 5222 LoST August 2008 + + + for each distinct location profile. The order of location elements + is significant; the server uses the first location element where it + understands the location profile. + +8.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 [9]. + +8.3.3. Recursion and Iteration + + LoST can operate in either recursive or iterative mode, on a request- + by-request basis. In recursive mode, the LoST server initiates + queries on behalf of the requester and returns the result to the + requester. + + In iterative mode, the server contacted returns a redirection + response indicating the next server to be queried if the server + contacted cannot provide an answer itself. + + For the queries defined in this document, only the 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. Regardless of the attribute, a server MAY always answer a + query by providing a LoST application unique string (see Section 4), + i.e., indirection; however, it MUST NOT recurse if the attribute is + "false". + +8.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. + +8.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 8.4.2. The example in Figure 5 demonstrates address + validation. If the server chooses a geodetic location among the + locations provided in a request, the attribute is ignored. + + + +Hardie, et al. Standards Track [Page 16] + +RFC 5222 LoST August 2008 + + + <?xml version="1.0" encoding="UTF-8"?> + <findService + xmlns="urn:ietf:params:xml:ns:lost1" + recursive="true" + validateLocation="true" + serviceBoundary="value"> + <location id="627b8bf819d0bad4d" 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 5: A <findService> query with address validation request + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 17] + +RFC 5222 LoST August 2008 + + + <?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="authoritative.example" + sourceId="4db898df52b84edfa9b6445ea8a0328e"> + <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>DE</country> + <A1>Bavaria</A1> + <A3>Munich</A3> + <PC>81675</PC> + </civicAddress> + </serviceBoundary> + <uri>sip:munich-police@example.com</uri> + <uri>xmpp:munich-police@example.com</uri> + <serviceNumber>110</serviceNumber> + </mapping> + <locationValidation> + <valid>country A1 A3 A6</valid> + <invalid>PC</invalid> + <unchecked>HNO</unchecked> + </locationValidation> + <path> + <via source="resolver.example"/> + <via source="authoritative.example"/> + </path> + <locationUsed id="627b8bf819d0bad4d"/> + </findServiceResponse> + + Figure 6: A <findServiceResponse> message with address validation + information + +8.4. Components of the Mapping Response <findServiceResponse> + +8.4.1. Overview + + Mapping responses consist of the <mapping> element (Section 5) + describing the mapping itself, possibly followed by warnings + (Section 13.2), location validation information (Section 8.4.2), and + an indication of the path (Section 6) the response has taken. + + + + +Hardie, et al. Standards Track [Page 18] + +RFC 5222 LoST August 2008 + + +8.4.2. Civic Address Validation: The <locationValidation> Element + + A server can indicate in its response which civic address elements it + has recognized as valid, which ones it has ignored, and which ones it + has checked and found to be invalid. The server SHOULD include this + information if the 'validateLocation' attribute in the request was + true, but local policy at the server may allow this information to be + omitted. Each element contains a list of tokens separated by + whitespace, enumerating the civic location labels used in child + elements of the <civicAddress> element. The <valid> element + enumerates those civic address elements that have been recognized as + valid by the LoST server and that have been used to determine the + mapping. The <unchecked> elements enumerates the civic address + elements that the server did not check and that were not used in + determining the response. The <invalid> element enumerate civic + address elements that the server attempted to check, but that did not + match the other civic address elements found in the <valid> list. + Civic location tokens that are not listed in either the <valid>, + <invalid>, or <unchecked> element belong to the class of unchecked + tokens. + + 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. + + The example shown in Figure 5 and in Figure 6 indicates that the + tokens 'country', 'A1', 'A3', and 'A6' have been validated by the + LoST server. The server considered the postal code 81675 in the <PC> + element as not valid for this location. The 'HNO' token belongs to + the class of unchecked location tokens. + +9. Retrieving the Service Boundary via <getServiceBoundary> + + As discussed in Section 5.5, the <findServiceResponse> can return a + globally unique identifier in the 'serviceBoundary' attribute that + can be used to retrieve the service boundary, rather than returning + the boundary by value. This is shown in the example in Figure 7 and + Figure 8. The client can then retrieve the boundary using the + <getServiceBoundary> request and obtains the boundary in the + <getServiceBoundaryResponse>, illustrated in the example in Figure 9 + and Figure 10. The client issues the request to the server + identified in the 'server' attribute of the + <serviceBoundaryReference> element. These requests are always + directed to the authoritative server and do not recurse. + + + + + +Hardie, et al. Standards Track [Page 19] + +RFC 5222 LoST August 2008 + + + <?xml version="1.0" encoding="UTF-8"?> + <findService + xmlns="urn:ietf:params:xml:ns:lost1" + xmlns:p2="http://www.opengis.net/gml" + recursive="true" + serviceBoundary="reference"> + <location id="6020688f1ce1896d" 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 7: <findService> request and response with service boundary + reference + + <?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="authoritative.example" + sourceId="7e3f40b098c711dbb6060800200c9a66"> + <displayName xml:lang="en"> + New York City Police Department + </displayName> + <service>urn:service:sos.police</service> + <serviceBoundaryReference + source="authoritative.example" + key="7214148E0433AFE2FA2D48003D31172E"/> + <uri>sip:nypd@example.com</uri> + <uri>xmpp:nypd@example.com</uri> + <serviceNumber>911</serviceNumber> + </mapping> + <path> + <via source="resolver.example"/> + <via source="authoritative.example"/> + </path> + <locationUsed id="6020688f1ce1896d"/> + </findServiceResponse> + + Figure 8: <findServiceResponse> message with service boundary + reference + + + + + + +Hardie, et al. Standards Track [Page 20] + +RFC 5222 LoST August 2008 + + + <?xml version="1.0" encoding="UTF-8"?> + <getServiceBoundary xmlns="urn:ietf:params:xml:ns:lost1" + key="7214148E0433AFE2FA2D48003D31172E"/> + + Figure 9: Requesting a service boundary with <getServiceBoundary> + + <?xml version="1.0" encoding="UTF-8"?> + <getServiceBoundaryResponse + xmlns="urn:ietf:params:xml:ns:lost1"> + <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> + <path> + <via source="resolver.example"/> + <via source="authoritative.example"/> + </path> + </getServiceBoundaryResponse> + + Figure 10: Geodetic service boundary response + +10. List Services: <listServices> + + A LoST client can ask a LoST server for the list of services that it + understands, primarily for diagnostic purposes. The query does not + contain location information, as it simply provides an indication of + which services the server can look up, not whether a particular + service is offered for a particular area. Typically, only top-level + services are included in the answer, implying support for all sub- + services. Since the query is answered by the queried server, there + is no notion of recursion or indirection. The + <listServicesByLocation> (Section 11) query below can be used to find + out whether a particular service is offered for a specific location. + An example request and response are shown in Figure 11. + + + + + + + + +Hardie, et al. Standards Track [Page 21] + +RFC 5222 LoST August 2008 + + + <?xml version="1.0" encoding="UTF-8"?> + <listServices + xmlns="urn:ietf:params:xml:ns:lost1"> + <service>urn:service:sos</service> + </listServices> + + Figure 11: Example of <ListServices> query + + <?xml version="1.0" encoding="UTF-8"?> + <listServicesResponse + xmlns="urn:ietf:params:xml:ns:lost1"> + <serviceList> + urn:service:sos.ambulance + urn:service:sos.animal-control + urn:service:sos.fire + urn:service:sos.gas + urn:service:sos.mountain + urn:service:sos.marine + urn:service:sos.physician + urn:service:sos.poison + urn:service:sos.police + </serviceList> + <path> + <via source="authoritative.example"/> + </path> + </listServicesResponse> + + Figure 12: Example of <ListServicesResponse> + +11. List Services By Location: <listServicesByLocation> + + A LoST client can ask a LoST server for the list of services it knows + about for a particular area. The <listServicesByLocation> query + contains one or more <location> elements, each from a different + location profile (Section 12), and may contain the <service> element. + As for <findService>, the server selects the first location element + that has a profile the server understands and it can operate either + recursively or iteratively; <via> elements track the progress of the + request. The query indicates the services that the server can + enumerate from within the forest structure of which it is a part. + Because LoST does not presume a single, overarching organization of + all potential service types, there may be services available within a + geographic area that could be described by other LoST servers + connected to other forest structures. As an example, the emergency + services forest for a region may be distinct from the forests that + locate commercial services within the same region. + + + + + +Hardie, et al. Standards Track [Page 22] + +RFC 5222 LoST August 2008 + + + If the query contains the <service> element, the LoST server returns + only immediate child services of the queried service that are + available for the provided location. If the <service> element is + absent, the LoST service returns all top-level services available for + the provided location that it knows about. + + A server responds to this query with a + <listServicesByLocationResponse> response. This response MAY contain + <via> elements (see Section 6) and MUST contain a <serviceList> + element, consisting of a whitespace-separated list of service URNs. + The query and response are illustrated in Figure 13 and in Figure 14, + respectively. + + <?xml version="1.0" encoding="UTF-8"?> + <listServicesByLocation + xmlns="urn:ietf:params:xml:ns:lost1" + xmlns:p2="http://www.opengis.net/gml" + recursive="true"> + <location id="3e19dfb3b9828c3" profile="geodetic-2d"> + <p2:Point srsName="urn:ogc:def:crs:EPSG::4326"> + <p2:pos>-34.407 150.883</p2:pos> + </p2:Point> + </location> + <service>urn:service:sos</service> + </listServicesByLocation> + + Figure 13: Example of <ListServicesbyLocation> query + + + + + + + + + + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 23] + +RFC 5222 LoST August 2008 + + + <?xml version="1.0" encoding="UTF-8"?> + <listServicesByLocationResponse + xmlns="urn:ietf:params:xml:ns:lost1"> + <serviceList> + urn:service:sos.ambulance + urn:service:sos.animal-control + urn:service:sos.fire + urn:service:sos.gas + urn:service:sos.mountain + urn:service:sos.marine + urn:service:sos.physician + urn:service:sos.poison + urn:service:sos.police + </serviceList> + <path> + <via source="resolver.example"/> + <via source="authoritative.example"/> + </path> + <locationUsed id="3e19dfb3b9828c3"/> + </listServicesByLocationResponse> + + Figure 14: Example of <ListServicesByLocationResponse> response + +12. Location Profiles + + LoST uses location information in <location> elements in requests and + <serviceBoundary> elements in responses. Such location information + may be expressed in a variety of ways. This variety can cause + interoperability problems where a request or response contains + location information in a format not understood by the server or the + client, respectively. To achieve interoperability, this document + defines two mandatory-to-implement baseline location profiles to + define the manner in which location information is transmitted. It + is possible to standardize other profiles in the future. The + baseline profiles are: + + geodetic-2d: + a profile for two-dimensional geodetic location information, as + described in Section 12.2;. + + civic: + a profile consisting of civic address location information, as + described in Section 12.3. + + + + + + + + +Hardie, et al. Standards Track [Page 24] + +RFC 5222 LoST August 2008 + + + 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. + + Standards action is required for defining new profiles. A location + profile MUST define: + + 1. The token identifying it in the LoST location profile registry. + + 2. The formal definition of the XML to be used in requests, i.e., an + enumeration and definition of the XML child elements of the + <location> element. + + 3. The formal definition of the XML to be used in responses, i.e., + an enumeration and definition of the XML child elements of the + <serviceBoundary> element. + + 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. + +12.1. Location Profile Usage + + A location profile is identified by a token in an IANA-maintained + registry (Section 17.5). Clients send location information compliant + with a location profile, and servers respond with location + information compliant with that same location profile. + + When a LoST client sends a <findService> request that provides + location information, it includes one or more <location> elements. A + <location> element carries an optional 'profile' attribute that + indicates the location format of the child elements. A client may + obtain location information that does not conform to a profile it + recognizes, or it may not have the capability to map XML to profiles. + In that case, a client MAY omit the profile attribute and the server + should interpret the XML location data to the best of its ability, + returning a "locationProfileUnrecognized" error if it is unable to do + so. + + The concept of location profiles is described in Section 12. With + the ability to specify more than one <location> element, the client + is able to convey location information for multiple location profiles + in the same request. + + + + + +Hardie, et al. Standards Track [Page 25] + +RFC 5222 LoST August 2008 + + + When a LoST server sends a response that contains location + information, it uses the <serviceBoundary> elements much like the + client uses the <location> elements. Each <serviceBoundary> element + contains location information conforming to the location profile + specified in the 'profile' attribute. A response MAY contain + multiple mappings or boundaries for the different <location> + elements, subject to the restrictions below. + + Using the location profiles defined in this document, the following + rules ensure interoperability between clients and servers: + + 1. A client MUST be capable of understanding the response for the + baseline profiles it used in the request. + + 2. If a client sends location information conformant to any location + profile other than the ones described in this document, it MUST + also send, in the same request, location information conformant + to one of the baseline profiles. Otherwise, the server might not + be able to understand the request. + + 3. A client MUST NOT send multiple <location> objects that are + derived from different baseline profiles. In other words, a + client MUST only send location objects according to the same + baseline profile in a query, but it MAY contain a location + element following a baseline profile in addition to some other + profile. + + 4. If a client has both location information primarily of geodetic + nature and location information primarily of a civic nature, it + MUST send separate requests containing each type of location + information. + + 5. There can only be one instance of each location profile in a + query. + + 6. Servers MUST implement all profiles described in this document. + + 7. A server uses the first-listed location profile that it + understands and ignores the others. + + 8. If a server receives a request that only contains location + information using profiles it does not understand, the server + responds with a <locationProfileError> (Section 13.1). + + + + + + + + +Hardie, et al. Standards Track [Page 26] + +RFC 5222 LoST August 2008 + + + 9. 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. + + These rules enable the use of location profiles not yet specified, + while ensuring baseline interoperability. Take, for example, this + scenario illustrated in Figure 15 and 16. Client X has had its + firmware upgraded to support the 'not-yet-standardized-prism-profile' + location profile. Client X sends location information to Server Y, + which does not understand the 'not-yet-standardized-prism-profile' + location profile. If Client X also sends location information using + the geodetic-2D baseline profile, then Server Y will still be able to + understand the request and provide an understandable response, though + with location information that might not be as precise or expressive + as desired. This is possible because both Client X and Server Y + understand the baseline profile. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 27] + +RFC 5222 LoST August 2008 + + + <?xml version="1.0" encoding="UTF-8"?> + <findService + xmlns="urn:ietf:params:xml:ns:lost1" + xmlns:gml="http://www.opengis.net/gml" + xmlns:gs="http://www.opengis.net/pidflo/1.0" + recursive="true" + serviceBoundary="value"> + <location id="ABC 123" + profile="not-yet-standardized-prism-profile"> + <gs:Prism srsName="urn:ogc:def:crs:EPSG::4979"> + <gs:base> + <gml:Polygon> + <gml:exterior> + <gml:LinearRing> + <gml:posList> + 42.556844 -73.248157 36.6 + 42.656844 -73.248157 36.6 + 42.656844 -73.348157 36.6 + 42.556844 -73.348157 36.6 + 42.556844 -73.248157 36.6 + </gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </gs:base> + <gs:height uom="urn:ogc:def:uom:EPSG::9001"> + 2.4 + </gs:height> + </gs:Prism> + </location> + <location id="DEF 345" profile="geodetic-2d"> + <gml:Point id="point1" srsName="urn:ogc:def:crs:EPSG:4326"> + <gml:pos>42.656844 -73.348157</gml:pos> + </gml:Point> + </location> + <service>urn:service:sos.police</service> + </findService> + + Figure 15: Example of a <findServices> query with baseline profile + interoperability + + + + + + + + + + + +Hardie, et al. Standards Track [Page 28] + +RFC 5222 LoST August 2008 + + + <?xml version="1.0" encoding="UTF-8"?> + <findServiceResponse + xmlns="urn:ietf:params:xml:ns:lost1" + xmlns:p2="http://www.opengis.net/"> + <mapping + expires="2007-01-01T01:44:33Z" + lastUpdated="2006-11-01T01:00:00Z" + source="authoritative.example" + sourceId="cf19bbb038fb4ade95852795f045387d"> + <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@example.com</uri> + <serviceNumber>911</serviceNumber> + </mapping> + <path> + <via source="resolver.example"/> + <via source="authoritative.example"/> + </path> + <locationUsed id="DEF 345"/> + </findServiceResponse> + + Figure 16: Example of a <findServiceResponse> message with baseline + profile interoperability + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 29] + +RFC 5222 LoST August 2008 + + +12.2. Two-Dimensional Geodetic Profile + + The "geodetic-2d" location profile is identified by the token + "geodetic-2d". Clients and servers use this profile by placing the + following location shapes into the <serviceBoundary> or into the + <location> element (unless indicated otherwise): + + Point: + The <Point> element is described in Section 5.2.1 of [13]. + Section 5.2.1 of [13] shows also the specification of a <Point> + with either a two-dimensional position (latitude and longitude) or + three-dimensional position (latitude, longitude, and altitude). A + client MAY use the three-dimensional position, and servers MAY + interpret a three-dimensional position as a two-dimensional + position by ignoring the altitude value. A <Point> element is not + placed into a <serviceBoundary> element. + + Polygon: + The <Polygon> element is described in Section 5.2.2 of [13]. The + restriction to 16 points for a polygon contained in Section 7.2.2 + of [12] is not applicable to this document. + + Circle: + The <Circle> element is described in Section 5.2.3 of [13]. + + Ellipse: + The <Ellipse> element is described in Section 5.2.4 of [13]. + + ArcBand: + The <ArcBand> element is described in Section 5.2.5 of [13]. + + When a client uses a <Polygon>, <Circle>, <Ellipse>, or <ArcBand> + element within the <location> element, it is indicating that it will + be satisfied by query results appropriate to any portion of the + shape. It is left to the server to select an appropriate matching + algorithm. A server MAY return multiple <mapping> elements if the + shape extends across multiple service areas. Servers are not + required to return all possible <mapping> elements to avoid denial- + of-service attacks in which clients present queries that span a very + large number of service boundaries (e.g., presenting a shape covering + all of the United States). + + In the case where the server does not return multiple <mapping> + elements, but the shape extends across a service boundary, it is + possible that the matching algorithm selected by the LoST server will + return results that match a portion of the shape but do not match + those specific to a particular point. A client may always select a + point from within the shape to avoid this condition. The cases where + + + +Hardie, et al. Standards Track [Page 30] + +RFC 5222 LoST August 2008 + + + it does not are generally those where it knows its own position only + within the shape given. In emergency service use cases, that may + result in the PSAP contacted at the URI provided by LoST being + required to forward a call to one of its neighbors; this is an + expected part of the overall emergency response system. In non- + emergency service use cases, the service deployment model should take + into account this issue as part of the provisioning model, as the + combination of the data in the LoST server and the algorithm used for + mapping determine which contact URIs are returned when shapes are + used that overlap multiple service areas. + + As a general guideline, any deployed matching algorithm should ensure + that the algorithm used does not needlessly return no results if + there are valid results for any portion of the shape. If an + authoritative server receives a query for which the area in the query + overlaps the area for which the server has mapping information, then + it MUST return either a mapping whose coverage area intersects the + query area or a redirect to another server whose coverage area is a + subset of the server's coverage area. + + When geodetic location information of this location profile is placed + in the <serviceBoundary> element, then the elements with geospatial + coordinates are alternative descriptions of the same service region, + not additive geometries. + +12.3. Basic Civic Profile + + The basic civic location profile is identified by the token 'civic'. + Clients use this profile by placing a <civicAddress> element, defined + in [10], within the <location> element. + + Servers use this profile by placing a <civicAddress> element, defined + in [10], within the <serviceBoundary> element. + + A response MAY contain more than one <serviceBoundary> element with + profile 'civic'. Each <serviceBoundary> element describes a set of + civic addresses that fall within the service boundary, namely, all + addresses that textually match the civic address elements provided, + regardless of the value of other address elements. A location falls + within the mapping's service boundary if it matches any of the + <serviceBoundary> elements. Hence, a response may contain multiple + <serviceBoundary> elements with civic and/or geodetic location + profiles. + + + + + + + + +Hardie, et al. Standards Track [Page 31] + +RFC 5222 LoST August 2008 + + +13. Errors, Warnings, and Redirects + + When a LoST server cannot fulfill a request completely, it can return + either an error or a warning, depending on the severity of the + problem. It returns an <errors> element if no useful response can be + returned for the query. It returns a <warnings> element as part of + another response element if it was able to respond in part, but the + response may not be quite what the client had desired. For both + elements, the 'source' attribute names the server that originally + generated the error or warning, such as the authoritative server. + Unless otherwise noted, all elements below can be either an error or + a warning, depending on whether a default response, such as a + mapping, is included. + +13.1. Errors + + LoST defines a pattern for errors, defined as <errors> elements in + the Relax NG schema. This pattern defines a 'message' attribute + containing human-readable text and an 'xml:lang' attribute denoting + the language of the human-readable text. One or more such error + elements are contained in the <errors> element. + + The following errors follow this basic pattern: + + badRequest + The server could not parse or otherwise understand a request, + e.g., because the XML was malformed. + + forbidden + The server refused to send an answer. This generally only occurs + for recursive queries, namely, if the client tried to contact the + authoritative server and was refused. + + internalError + The server could not satisfy a request due to misconfiguration or + other operational and non-protocol-related reasons. + + locationProfileUnrecognized + None of the profiles in the request were recognized by the server + (see Section 12). + + locationInvalid + The geodetic or civic location in the request was invalid. For + example, the longitude or latitude values fall outside the + acceptable ranges. + + + + + + +Hardie, et al. Standards Track [Page 32] + +RFC 5222 LoST August 2008 + + + SRSInvalid + The spatial reference system (SRS) contained in the location + element was not recognized or does not match the location profile. + + loop + During a recursive query, the server was about to visit a server + that was already in the server list in the <path> element, + indicating a request loop. + + notFound + The server could not find an answer to the query. + + serverError + An answer was received from another LoST server, but it could not + be parsed or otherwise understood. This error occurs only for + recursive queries. + + serverTimeout + A time out occurred before an answer was received. + + serviceNotImplemented + The requested service URN is not implemented and no substitution + was available. + + An example is below: + + <?xml version="1.0" encoding="UTF-8"?> + <errors xmlns="urn:ietf:params:xml:ns:lost1" + source="resolver.example"> + <internalError message="Software bug." xml:lang="en"/> + </errors> + + Figure 17: Example of an error response + + + + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 33] + +RFC 5222 LoST August 2008 + + +13.2. Warnings + + A response MAY contain zero or more warnings. This pattern defines a + 'message' attribute containing human-readable text and an 'xml:lang' + attribute denoting the language of the human-readable text. One or + more such warning elements are contained in the <warnings> element. + To provide human-readable text in an appropriate language, the HTTP + content negotiation capabilities (see Section 14) MAY be utilized by + a server. + + This version of the specification defines the following warnings: + + locationValidationUnavailable + The <locationValidationUnavailable> element MAY be returned when a + server wishes to notify a client that it cannot fulfill a location + validation request. This warning allows a server to return + mapping information while signaling this exception state. + + serviceSubstitution + The <serviceSubstitution> element MAY be returned when a server + was not able to fulfill a <findService> request for a given + service URN. For example, a <findService> request with the + 'urn:service:sos.police' service URN for a location in Uruguay may + cause the LoST service to return a mapping for the + 'urn:service:sos' service URN since Uruguay does not make use of + the sub-services police, fire, and ambulance. If this warning is + returned, then the <service> element in the response provides + information about the service URN that refers to the mapping. + + defaultMappingReturned + The <defaultMappingReturned> element MAY be returned when a server + was not able to fulfill a <findService> request for a given + location but is able to respond with a default URI. For example, + a nearby PSAP may be returned. + + + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 34] + +RFC 5222 LoST August 2008 + + + An example of a warning is shown below: + + <?xml version="1.0" encoding="UTF-8"?> + <findServiceResponse xmlns="urn:ietf:params:xml:ns:lost1" + xmlns:p2="http://www.opengis.net/"> + <mapping + expires="2007-01-01T01:44:33Z" + lastUpdated="2006-11-01T01:00:00Z" + source="authoritative.example" + sourceId="fb8ed888433343b7b27865aeb38f3a99"> + <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@example.com</uri> + <serviceNumber>911</serviceNumber> + </mapping> + <warnings source="authoritative.example"> + <defaultMappingReturned + message="Unable to determine PSAP for the given location; + using default PSAP" + xml:lang="en"/> + </warnings> + <path> + <via source="resolver.example"/> + <via source="authoritative.example"/> + </path> + </findServiceResponse> + + Figure 18: Example of a warning response + + + + + + + + +Hardie, et al. Standards Track [Page 35] + +RFC 5222 LoST August 2008 + + +13.3. Redirects + + 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. During a recursive query, a + server receiving a <redirect> response can decide whether it wants to + follow the redirection or simply return the response to its upstream + querier. The "expires" value in the response returned by the server + handling the redirected query indicates the earliest time at which a + new query might be needed (see Section 5.2). The query for the same + tuple of location and service SHOULD NOT be directed to the server + that gave redirect prior to that time. + + An example is below: + + <?xml version="1.0" encoding="UTF-8"?> + <redirect xmlns="urn:ietf:params:xml:ns:lost1" + target="eastpsap.example" + source="westpsap.example" + message="We have temporarily failed over." xml:lang="en"/> + + Figure 19: Example of a redirect response + +14. LoST Transport: HTTP + + LoST needs an underlying protocol transport mechanism to carry + requests and responses. This document defines the use of LoST over + HTTP and LoST over HTTP-over-TLS. Client and server developers are + reminded that full support of RFC 2616 HTTP facilities is expected. + If LoST clients or servers re-implement HTTP, rather than using + available servers or client code as a base, careful attention must be + paid to full interoperability. Other transport mechanisms are left + to future documents. The available transport mechanisms are + determined through the use of the LoST U-NAPTR application. In + protocols that support content type indication, LoST uses the media + type application/lost+xml. + + When using HTTP [3] and HTTP-over-TLS [4], LoST requests use the HTTP + POST method. The HTTP request MUST use the Cache-Control response + directive "no-cache" to disable HTTP-level caching even by caches + that have been configured to return stale responses to client + requests. + + + + + +Hardie, et al. Standards Track [Page 36] + +RFC 5222 LoST August 2008 + + + All LoST responses, including those indicating a LoST warning or + error, are carried in 2xx responses, typically 200 (OK). Other 2xx + responses, in particular 203 (Non-authoritative information), may be + returned by HTTP caches that disregard the caching instructions. 3xx, + 4xx, and 5xx HTTP response codes indicate that the HTTP request + itself failed or was redirected; these responses do not contain any + LoST XML elements. The 3xx responses are distinct from the redirects + that are described in Section 13.3; the redirect operation in + Section 13.3 occur after a LoST server processes the request. Where + an HTTP-layer redirect will be general, a LoST server redirect as + described in Section 13.3 might be specific to a specific service or + be the result of other processing by the LoST server. + + The HTTP URL is derived from the LoST server name via U-NAPTR + application, as discussed above. + +15. Relax NG Schema + + This section provides the Relax NG schema used by the LoST protocol + in the compact form. The verbose form is included in Appendix A. + +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +default namespace ns1 = "urn:ietf:params:xml:ns:lost1" + +## +## Location-to-Service Translation (LoST) Protocol + +## +## A LoST XML instance has three request types, each with +## a corresponding response type: find service, list services, +## and get service boundary. +## +start = + findService + | listServices + | listServicesByLocation + | getServiceBoundary + | findServiceResponse + | listServicesResponse + | listServicesByLocationResponse + | getServiceBoundaryResponse + | errors + | redirect + +## +## The queries. +## +div { + + + +Hardie, et al. Standards Track [Page 37] + +RFC 5222 LoST August 2008 + + + findService = + element findService { + requestLocation, + commonRequestPattern, + attribute validateLocation { + xsd:boolean >> a:defaultValue [ "false" ] + }?, + attribute serviceBoundary { + ("reference" | "value") >> a:defaultValue [ "reference" ] + }?, + attribute recursive { xsd:boolean >> a:defaultValue [ "false" ] }? + } + listServices = element listServices { commonRequestPattern } + listServicesByLocation = + element listServicesByLocation { + requestLocation, + commonRequestPattern, + attribute recursive { xsd:boolean >> a:defaultValue [ "true" ] }? + } + getServiceBoundary = + element getServiceBoundary { serviceBoundaryKey, extensionPoint } +} + +## +## The responses. +## +div { + findServiceResponse = + element findServiceResponse { + mapping+, locationValidation?, commonResponsePattern, locationUsed + } + listServicesResponse = + element listServicesResponse { serviceList, commonResponsePattern } + listServicesByLocationResponse = + element listServicesByLocationResponse { + serviceList, commonResponsePattern, locationUsed + } + getServiceBoundaryResponse = + element getServiceBoundaryResponse { + serviceBoundary, commonResponsePattern + } +} + +## +## A pattern common to some of the queries. +## +div { + commonRequestPattern = service, path?, extensionPoint + + + +Hardie, et al. Standards Track [Page 38] + +RFC 5222 LoST August 2008 + + +} + +## +## A pattern common to responses. +## +div { + commonResponsePattern = warnings*, path, extensionPoint +} + +## +## Location in Requests +## +div { + requestLocation = + element location { + attribute id { xsd:token }, + locationInformation + }+ +} + +## +## Location Information +## +div { + locationInformation = + extensionPoint+, + attribute profile { xsd:NMTOKEN }? +} + +## +## Service Boundary +## +div { + serviceBoundary = element serviceBoundary { locationInformation }+ +} + +## +## Service Boundary Reference +## +div { + serviceBoundaryReference = + element serviceBoundaryReference { + source, serviceBoundaryKey, extensionPoint + } + serviceBoundaryKey = attribute key { xsd:token } +} + +## + + + +Hardie, et al. Standards Track [Page 39] + +RFC 5222 LoST August 2008 + + +## Path - +## Contains a list of via elements - +## places through which information flowed +## +div { + path = + element path { + element via { source, extensionPoint }+ + } +} + +## +## Location Used +## +div { + locationUsed = + element locationUsed { + attribute id { xsd:token } + }? +} + +## +## Expires pattern +## +div { + expires = + attribute expires { xsd:dateTime | "NO-CACHE" | "NO-EXPIRATION" } +} + +## +## A QName list +## +div { + qnameList = list { xsd:QName* } +} + +## +## A location-to-service mapping. +## +div { + mapping = + element mapping { + element displayName { + xsd:string, + attribute xml:lang { xsd:language } + }*, + service, + (serviceBoundary | serviceBoundaryReference)?, + + + +Hardie, et al. Standards Track [Page 40] + +RFC 5222 LoST August 2008 + + + element uri { xsd:anyURI }*, + element serviceNumber { + xsd:token { pattern = "[0-9*#]+" } + }?, + extensionPoint, + expires, + attribute lastUpdated { xsd:dateTime }, + source, + attribute sourceId { xsd:token }, + message + } +} + +## +## Location validation +## +div { + locationValidation = + element locationValidation { + element valid { qnameList }?, + element invalid { qnameList }?, + element unchecked { qnameList }?, + extensionPoint + } +} + +## +## Errors and Warnings Container. +## +div { + exceptionContainer = + (badRequest? + & internalError? + & serviceSubstitution? + & defaultMappingReturned? + & forbidden? + & notFound? + & loop? + & serviceNotImplemented? + & serverTimeout? + & serverError? + & locationInvalid? + & locationProfileUnrecognized?), + extensionPoint, + source + errors = element errors { exceptionContainer } + warnings = element warnings { exceptionContainer } +} + + + +Hardie, et al. Standards Track [Page 41] + +RFC 5222 LoST August 2008 + + +## +## Basic Exceptions +## +div { + + ## + ## Exception pattern. + ## + basicException = message, extensionPoint + badRequest = element badRequest { basicException } + internalError = element internalError { basicException } + serviceSubstitution = element serviceSubstitution { basicException } + defaultMappingReturned = + element defaultMappingReturned { basicException } + forbidden = element forbidden { basicException } + notFound = element notFound { basicException } + loop = element loop { basicException } + serviceNotImplemented = + element serviceNotImplemented { basicException } + serverTimeout = element serverTimeout { basicException } + serverError = element serverError { basicException } + locationInvalid = element locationInvalid { basicException } + locationValidationUnavailable = + element locationValidationUnavailable { basicException } + locationProfileUnrecognized = + element locationProfileUnrecognized { + attribute unsupportedProfiles { xsd:NMTOKENS }, + basicException + } +} + +## +## Redirect. +## +div { + + ## + ## Redirect pattern + ## + redirect = + element redirect { + attribute target { appUniqueString }, + source, + message, + extensionPoint + } +} + + + + +Hardie, et al. Standards Track [Page 42] + +RFC 5222 LoST August 2008 + + +## +## Some common patterns. +## +div { + message = + (attribute message { xsd:token }, + attribute xml:lang { xsd:language })? + service = element service { xsd:anyURI }? + appUniqueString = + xsd:token { pattern = "([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]+" } + source = attribute source { appUniqueString } + serviceList = + element serviceList { + list { xsd:anyURI* } + } +} + +## +## Patterns for inclusion of elements from schemas in +## other namespaces. +## +div { + + ## + ## Any element not in the LoST namespace. + ## + notLost = element * - (ns1:* | ns1:*) { anyElement } + + ## + ## A wildcard pattern for including any element + ## from any other namespace. + ## + anyElement = + (element * { anyElement } + | attribute * { text } + | text)* + + ## + ## A point where future extensions + ## (elements from other namespaces) + ## can be added. + ## + extensionPoint = notLost* +} + + Figure 20: RelaxNG schema + + + + + +Hardie, et al. Standards Track [Page 43] + +RFC 5222 LoST August 2008 + + +16. Internationalization Considerations + + The LoST protocol is mostly meant for machine-to-machine + communications; as such, most of its elements are tokens not meant + for direct human consumption. If these tokens are presented to the + end user, some localization may need to occur. The content of the + <displayName> element and the 'message' attributes may be displayed + to the end user, and they are thus complex types designed for this + purpose. + + LoST exchanges information using XML. All XML processors are + required to understand UTF-8 and UTF-16 encodings, and therefore all + LoST clients and servers MUST understand UTF-8 and UTF-16 encoded + XML. Additionally, LoST servers and clients MUST NOT encode XML with + encodings other than UTF-8 or UTF-16. + +17. IANA Considerations + +17.1. U-NAPTR Registrations + + This document registers the following U-NAPTR application service + tag: + + Application Service Tag: LoST + + Defining Publication: The specification contained within this + document. + + This document registers the following U-NAPTR application protocol + tags: + + o Application Protocol Tag: http + + Defining Publication: RFC 2616 [3] + + o Application Protocol Tag: https + + Defining Publication: RFC 2818 [4] + +17.2. Content-Type Registration for 'application/lost+xml' + + This specification requests the registration of a new MIME type + according to the procedures of RFC 4288 [7] and guidelines in RFC + 3023 [5]. + + + + + + + +Hardie, et al. Standards Track [Page 44] + +RFC 5222 LoST August 2008 + + + MIME media type name: application + + MIME subtype name: lost+xml + + Mandatory parameters: none + + Optional parameters: charset + Indicates the character encoding of enclosed XML. + + Encoding considerations: Uses XML, which can employ 8-bit + characters, depending on the character encoding used. See RFC + 3023 [5], Section 3.2. + + Security considerations: This content type is designed to carry LoST + protocol payloads. + + Interoperability considerations: None + + Published specification: RFC 5222 + + Applications that use this media type: Emergency and location-based + systems + + Additional information: + + Magic Number: None + + File Extension: .lostxml + + Macintosh file type code: 'TEXT' + + Personal and email address for further information: + Hannes Tschofenig, Hannes.Tschofenig@nsn.com + + Intended usage: LIMITED USE + + Author: + This specification is a work item of the IETF ECRIT working group, + with mailing list address <ecrit@ietf.org>. + + Change controller: + The IESG <iesg@ietf.org> + + + + + + + + + +Hardie, et al. Standards Track [Page 45] + +RFC 5222 LoST August 2008 + + +17.3. LoST Relax NG Schema Registration + + URI: urn:ietf:params:xml:schema:lost1 + + Registrant Contact: IETF ECRIT Working Group, Hannes Tschofenig + (Hannes.Tschofenig@nsn.com). + + Relax NG Schema: The Relax NG schema to be registered is contained + in Section 15. Its first line is + + default namespace = "urn:ietf:params:xml:ns:lost1" + + and its last line is + + } + +17.4. LoST Namespace Registration + + URI: urn:ietf:params:xml:ns:lost1 + + Registrant Contact: IETF ECRIT Working Group, Hannes Tschofenig + (Hannes.Tschofenig@nsn.com). + + XML: + +BEGIN +<?xml version="1.0"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" + "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="content-type" + content="text/html;charset=iso-8859-1"/> + <title>LoST Namespace</title> +</head> +<body> + <h1>Namespace for LoST</h1> + <h2>urn:ietf:params:xml:ns:lost1</h2> +<p>See <a href="http://www.rfc-editor.org/rfc/rfc5222.txt"> + RFC5222</a>.</p> +</body> +</html> +END + + + + + + + + +Hardie, et al. Standards Track [Page 46] + +RFC 5222 LoST August 2008 + + +17.5. LoST Location Profile Registry + + This document creates a registry of location profile names for the + LoST protocol. Profile names are XML tokens. This registry will + operate in accordance with RFC 5226 [2], Standards Action. + + geodetic-2d: + Defined in Section 12.2. + + civic: + Defined in Section 12.3. + +18. Security Considerations + + There are several threats to the overall system of which service + mapping forms a part. An attacker that can obtain service contact + URIs can use those URIs to attempt to disrupt those services. An + attacker that can prevent the lookup of contact URIs can impair the + reachability of such services. An attacker that can eavesdrop on the + communication requesting this lookup can surmise the existence of an + emergency and possibly its nature, and may be able to use this to + launch a physical attack on the caller. + + To avoid an attacker modifying the query or its result, Transport + Layer Security (TLS) MUST be implemented and SHOULD be used. Use is + RECOMMENDED both for clients' queries to servers and for queries + among servers; this latter recommendation is to help avoid LoST cache + poisoning attacks by replacing answers given to caching LoST servers. + + The use of server identity checks with TLS, as described in Section + 3.1 of [4], is also RECOMMENDED. Omitting the server identity check + allows an attacker to masquerade as a LoST server, so this approach + should be used only when getting any answer, even from a potentially + malicious LoST server, is preferred over closing the connection (and + thus not getting any answer at all). The host name compared against + the server certificate is the host name in the URI, not the DNS name + used as input to NAPTR resolution. + + Note that the security considerations in [22] recommend comparing the + input of NAPTR resolution to the certificate, not the output (host + name in the URI). This approach was not chosen because in emergency + service use cases, it is likely that deployments will see a large + number of inputs to the U-NAPTR algorithm resolving to a single + server, typically run by a local emergency services authority. In + this case, checking the input to the NAPTR resolution against the + certificates provided by the LoST server would be impractical, as the + list of organizations using it would be large, subject to rapid + change, and unknown to the LoST server operator. + + + +Hardie, et al. Standards Track [Page 47] + +RFC 5222 LoST August 2008 + + + The use of server identity does leave open the possibility of DNS- + based attacks, as the NAPTR records may be altered by an attacker. + The attacks include, for example, interception of DNS packets between + the client and the recursive name server, DNS cache poisoning, and + intentional modifications by the recursive name server; see [23] for + more comprehensive discussion. + + DNS Security (DNSSEC) [20] can be used to protect against these + threats. While DNSSEC is incompletely deployed, users should be + aware of the risk, particularly when they are requesting NAPTR + records in environments where the local recursive name server, or the + network between the client and the local recursive name server, is + not considered trustworthy. + + LoST deployments that are unable to use DNSSEC and unwilling to trust + DNS resolution without DNSSEC cannot use the NATPR-based discovery of + LoST servers as is. When suitable configuration mechanisms are + available, one possibility is to configure the LoST server URIs + (instead of the domain name to be used for NAPTR resolution) + directly. Future specifications for applying LoST in non-emergency + services may also specify additional discovery mechanisms and name + matching semantics. + + Generally, LoST servers will not need to authenticate or authorize + clients presenting mapping queries. If they do, an authentication 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. + + A more detailed description of threats and security requirements is + provided in [17]. The threats and security requirements in non- + emergency service uses of LoST may be considerably different from + those described here. For example, an attacker might seek monetary + benefit by returning service mapping information that directed users + to specific service providers. Before deploying LoST in new + contexts, a thorough analysis of the threats and requirements + specific to that context should be undertaken and decisions made on + the appropriate mitigations. + +19. Acknowledgments + + We would like to the thank the following working group members for + the detailed review of previous LoST document versions: + + o Martin Thomson (Review July 2006) + + o Jonathan Rosenberg (Review July 2006) + + + + +Hardie, et al. Standards Track [Page 48] + +RFC 5222 LoST August 2008 + + + o Leslie Daigle (Review September 2006) + + o Shida Schubert (Review November 2006) + + o Martin Thomson (Review December 2006) + + o Barbara Stark (Review January 2007) + + o Patrik Faltstrom (Review January 2007) + + o Shida Schubert (Review January 2007 as a designated expert + reviewer) + + o Jonathan Rosenberg (Review February 2007) + + o Tom Taylor (Review February 2007) + + o Theresa Reese (Review February 2007) + + o Shida Schubert (Review February 2007) + + o James Winterbottom (Review July 2007) + + o Karl Heinz Wolf (Review May and June 2007) + + We would also like to thank the following working group members for + their input to selected design aspects of the LoST protocol: + + o Leslie Daigle and Martin Thomson (DNS-based LoST discovery + procedure) + + o John Schnizlein (authoritive LoST answers) + + o Rohan Mahy (display names) + + o James Polk (error handling) + + o Ron Watro and Richard Barnes (expiry of cached data) + + o Stephen Edge, Keith Drage, Tom Taylor, Martin Thomson, and James + Winterbottom (indication of PSAP confidence level) + + o Martin Thomson (service boundary references) + + o Martin Thomson (service URN in LoST response message) + + o Clive D.W. Feather, Martin Thomson (validation functionality) + + + + +Hardie, et al. Standards Track [Page 49] + +RFC 5222 LoST August 2008 + + + o Roger Marshall (PSAP preference in LoST response) + + o James Winterbottom, Marc Linsner, Keith Drage, Tom Taylor, Martin + Thomson, John Schnizlein, Shida Schubert, Clive D.W. Feather, + Richard Stastny, John Hearty, Roger Marshall, Jean-Francois Mule, + Pierre Desjardins (location profiles) + + o Michael Hammer, Patrik Faltstrom, Richard Stastny, Martin Thomson, + Roger Marshall, Tom Taylor, Spencer Dawkins, Keith Drage (list + services functionality) + + o Martin Thomson, Michael Hammer (mapping of services) + + o Shida Schubert, James Winterbottom, Keith Drage (default service + URN) + + o Otmar Lendl (LoST aggregation) + + o Tom Taylor (terminology) + + Klaus Darilion and Marc Linsner provided miscellaneous input to the + design of the protocol. Finally, we would like to thank Brian Rosen, + who participated in almost every discussion thread. + + Early implementation efforts led to good feedback by two open source + implementation groups. We would like to thank the implementers for + their work and for helping us to improve the quality of the + specification: + + o Wonsang Song + + o Jong-Yul Kim + + o Anna Makarowska + + o Krzysztof Rzecki + + o Blaszczyk Piotr + + We would like to thank Jon Peterson, Dan Romascanu, Lisa Dusseault, + and Tim Polk for their IESG review comments. Blocking IESG comments + were also received from Pasi Eronen (succeeding Sam Hartman's review) + and Cullen Jennings. Adjustments have been made to several pieces of + text to satisfy these requests for changes, most notably in the + Security Considerations and in the discussion of redirection in the + presence of overlapping coverage areas. + + + + + +Hardie, et al. Standards Track [Page 50] + +RFC 5222 LoST August 2008 + + +20. References + +20.1. Normative References + + [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [2] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA + Considerations Section in RFCs", BCP 26, RFC 5226, May 2008. + + [3] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., + Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- + HTTP/1.1", RFC 2616, June 1999. + + [4] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. + + [5] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", + RFC 3023, January 2001. + + [6] Peterson, J., "A Presence-based GEOPRIV Location Object + Format", RFC 4119, December 2005. + + [7] Freed, N. and J. Klensin, "Media Type Specifications and + Registration Procedures", BCP 13, RFC 4288, December 2005. + + [8] Daigle, L., "Domain-Based Application Service Location Using + URIs and the Dynamic Delegation Discovery Service (DDDS)", + RFC 4848, April 2007. + + [9] Schulzrinne, H., "A Uniform Resource Name (URN) for Emergency + and Other Well-Known Services", RFC 5031, January 2008. + + [10] Thomson, M. and J. Winterbottom, "Revised Civic Location Format + for Presence Information Data Format Location Object + (PIDF-LO)", RFC 5139, February 2008. + + [11] Cox, S., Daisey, P., Lake, R., Portele, C., and A. Whiteside, + "Geographic information - Geography Markup Language (GML)", OGC + Standard OpenGIS 03-105r1, April 2004. + + [12] Reed, C. and M. Thomson, "GML 3.1.1 PIDF-LO Shape Application + Schema for use by the Internet Engineering Task Force (IETF)", + Candidate OpenGIS Implementation Specification , December 2006. + + + + + + + + +Hardie, et al. Standards Track [Page 51] + +RFC 5222 LoST August 2008 + + +20.2. Informative References + + [13] Winterbottom, J., Thomson, M., and H. Tschofenig, "GEOPRIV + PIDF-LO Usage Clarification, Considerations and + Recommendations", Work in Progress, February 2008. + + [14] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., + Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: + Session Initiation Protocol", RFC 3261, June 2002. + + [15] Saint-Andre, P., Ed., "Extensible Messaging and Presence + Protocol (XMPP): Instant Messaging and Presence", RFC 3921, + October 2004. + + [16] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, + December 2004. + + [17] Taylor, T., Tschofenig, H., Schulzrinne, H., and M. Shanmugam, + "Security Threats and Requirements for Emergency Call Marking + and Mapping", RFC 5069, January 2008. + + [18] Schulzrinne, H. and R. Marshall, "Requirements for Emergency + Context Resolution with Internet Technologies", RFC 5012, + January 2008. + + [19] Schulzrinne, H., "Location-to-URL Mapping Architecture and + Framework", Work in Progress, September 2007. + + [20] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "DNS Security Introduction and Requirements", RFC 4033, + March 2005. + + [21] Rosen, B. and J. Polk, "Best Current Practice for + Communications Services in support of Emergency Calling", Work + in Progress, February 2008. + + [22] Daigle, L. and A. Newton, "Domain-Based Application Service + Location Using SRV RRs and the Dynamic Delegation Discovery + Service (DDDS)", RFC 3958, January 2005. + + [23] Atkins, D. and R. Austein, "Threat Analysis of the Domain Name + System (DNS)", RFC 3833, August 2004. + + [24] <http://www.tschofenig.priv.at/svn/draft-ietf-ecrit-lost/ + RelaxNG>. + + + + + + +Hardie, et al. Standards Track [Page 52] + +RFC 5222 LoST August 2008 + + + [25] Schulzrinne, H., Polk, J., and H. Tschofenig, "Discovering + Location-to-Service Translation (LoST) Servers Using the + Dynamic Host Configuration Protocol (DHCP)", RFC 5223, + August 2008. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 53] + +RFC 5222 LoST August 2008 + + +Appendix A. Non-Normative RELAX NG Schema in XML Syntax + + <?xml version="1.0" encoding="UTF-8"?> + <grammar ns="urn:ietf:params:xml:ns:lost1" + xmlns="http://relaxng.org/ns/structure/1.0" + xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" + datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + + <start> + <a:documentation> + Location-to-Service Translation (LoST) Protocol + + A LoST XML instance has three request types, each with + a corresponding response type: find service, list services, + and get service boundary. + </a:documentation> + <choice> + <ref name="findService"/> + <ref name="listServices"/> + <ref name="listServicesByLocation"/> + <ref name="getServiceBoundary"/> + <ref name="findServiceResponse"/> + <ref name="listServicesResponse"/> + <ref name="listServicesByLocationResponse"/> + <ref name="getServiceBoundaryResponse"/> + <ref name="errors"/> + <ref name="redirect"/> + </choice> + </start> + + <div> + <a:documentation> + The queries. + </a:documentation> + + <define name="findService"> + <element name="findService"> + <ref name="requestLocation"/> + <ref name="commonRequestPattern"/> + <optional> + <attribute name="validateLocation"> + <data type="boolean"/> + <a:defaultValue>false</a:defaultValue> + </attribute> + </optional> + <optional> + <attribute name="serviceBoundary"> + + + + +Hardie, et al. Standards Track [Page 54] + +RFC 5222 LoST August 2008 + + + <choice> + <value>reference</value> + <value>value</value> + </choice> + <a:defaultValue>reference</a:defaultValue> + </attribute> + </optional> + <optional> + <attribute name="recursive"> + <data type="boolean"/> + <a:defaultValue>false</a:defaultValue> + </attribute> + </optional> + </element> + </define> + + <define name="listServices"> + <element name="listServices"> + <ref name="commonRequestPattern"/> + </element> + </define> + + <define name="listServicesByLocation"> + <element name="listServicesByLocation"> + <ref name="requestLocation"/> + <ref name="commonRequestPattern"/> + <optional> + <attribute name="recursive"> + <data type="boolean"/> + <a:defaultValue>true</a:defaultValue> + </attribute> + </optional> + </element> + </define> + + <define name="getServiceBoundary"> + <element name="getServiceBoundary"> + <ref name="serviceBoundaryKey"/> + <ref name="extensionPoint"/> + </element> + </define> + </div> + + <div> + <a:documentation> + The responses. + </a:documentation> + + + + +Hardie, et al. Standards Track [Page 55] + +RFC 5222 LoST August 2008 + + + <define name="findServiceResponse"> + <element name="findServiceResponse"> + <oneOrMore> + <ref name="mapping"/> + </oneOrMore> + <optional> + <ref name="locationValidation"/> + </optional> + <ref name="commonResponsePattern"/> + <ref name="locationUsed"/> + </element> + </define> + + <define name="listServicesResponse"> + <element name="listServicesResponse"> + <ref name="serviceList"/> + <ref name="commonResponsePattern"/> + </element> + </define> + + <define name="listServicesByLocationResponse"> + <element name="listServicesByLocationResponse"> + <ref name="serviceList"/> + <ref name="commonResponsePattern"/> + <ref name="locationUsed"/> + </element> + </define> + + <define name="getServiceBoundaryResponse"> + <element name="getServiceBoundaryResponse"> + <ref name="serviceBoundary"/> + <ref name="commonResponsePattern"/> + </element> + </define> + </div> + + <div> + <a:documentation> + A pattern common to some of the queries. + </a:documentation> + + <define name="commonRequestPattern"> + <ref name="service"/> + <optional> + <ref name="path"/> + + + + + + +Hardie, et al. Standards Track [Page 56] + +RFC 5222 LoST August 2008 + + + </optional> + <ref name="extensionPoint"/> + </define> + </div> + + <div> + <a:documentation> + A pattern common to responses. + </a:documentation> + + <define name="commonResponsePattern"> + <zeroOrMore> + <ref name="warnings"/> + </zeroOrMore> + <ref name="path"/> + <ref name="extensionPoint"/> + </define> + </div> + + <div> + <a:documentation> + Location in Requests + </a:documentation> + + <define name="requestLocation"> + <oneOrMore> + <element name="location"> + <attribute name="id"> + <data type="token"/> + </attribute> + <ref name="locationInformation"/> + </element> + </oneOrMore> + </define> + </div> + + <div> + <a:documentation> + Location Information + </a:documentation> + + <define name="locationInformation"> + <oneOrMore> + <ref name="extensionPoint"/> + </oneOrMore> + <optional> + <attribute name="profile"> + <data type="NMTOKEN"/> + + + +Hardie, et al. Standards Track [Page 57] + +RFC 5222 LoST August 2008 + + + </attribute> + </optional> + </define> + </div> + + <div> + <a:documentation> + Service Boundary + </a:documentation> + + <define name="serviceBoundary"> + <oneOrMore> + <element name="serviceBoundary"> + <ref name="locationInformation"/> + </element> + </oneOrMore> + </define> + </div> + + <div> + <a:documentation> + Service Boundary Reference + </a:documentation> + + <define name="serviceBoundaryReference"> + + <element name="serviceBoundaryReference"> + <ref name="source"/> + <ref name="serviceBoundaryKey"/> + <ref name="extensionPoint"/> + </element> + </define> + + <define name="serviceBoundaryKey"> + <attribute name="key"> + <data type="token"/> + </attribute> + </define> + </div> + + <div> + <a:documentation> + Path - + Contains a list of via elements - + places through which information flowed + </a:documentation> + + + + + +Hardie, et al. Standards Track [Page 58] + +RFC 5222 LoST August 2008 + + + <define name="path"> + <element name="path"> + <oneOrMore> + <element name="via"> + <ref name="source"/> + <ref name="extensionPoint"/> + </element> + </oneOrMore> + </element> + </define> + </div> + + <div> + <a:documentation> + Location Used + </a:documentation> + + <define name="locationUsed"> + <optional> + <element name="locationUsed"> + <attribute name="id"> + <data type="token"/> + </attribute> + </element> + </optional> + </define> + </div> + + <div> + <a:documentation> + Expires pattern + </a:documentation> + + <define name="expires"> + <attribute name="expires"> + <choice> + <data type="dateTime"/> + <value>NO-CACHE</value> + <value>NO-EXPIRATION</value> + </choice> + </attribute> + </define> + </div> + + <div> + <a:documentation> + A QName list + </a:documentation> + + + +Hardie, et al. Standards Track [Page 59] + +RFC 5222 LoST August 2008 + + + <define name="qnameList"> + <list> + <zeroOrMore> + <data type="QName"/> + </zeroOrMore> + </list> + </define> + </div> + + <div> + <a:documentation> + A location-to-service mapping. + </a:documentation> + + <define name="mapping"> + <element name="mapping"> + <zeroOrMore> + <element name="displayName"> + <data type="string"/> + <attribute name="xml:lang"> + <data type="language"/> + </attribute> + </element> + </zeroOrMore> + <ref name="service"/> + <optional> + <choice> + <ref name="serviceBoundary"/> + <ref name="serviceBoundaryReference"/> + </choice> + </optional> + <zeroOrMore> + <element name="uri"> + <data type="anyURI"/> + </element> + </zeroOrMore> + <optional> + <element name="serviceNumber"> + <data type="token"> + <param name="pattern">[0-9*#]+</param> + </data> + </element> + </optional> + <ref name="extensionPoint"/> + <ref name="expires"/> + <attribute name="lastUpdated"> + <data type="dateTime"/> + </attribute> + + + +Hardie, et al. Standards Track [Page 60] + +RFC 5222 LoST August 2008 + + + <ref name="source"/> + <attribute name="sourceId"> + <data type="token"/> + </attribute> + <ref name="message"/> + </element> + </define> + </div> + + <div> + <a:documentation> + Location validation + </a:documentation> + + <define name="locationValidation"> + <element name="locationValidation"> + <optional> + <element name="valid"> + <ref name="qnameList"/> + </element> + </optional> + <optional> + <element name="invalid"> + <ref name="qnameList"/> + </element> + </optional> + <optional> + <element name="unchecked"> + <ref name="qnameList"/> + </element> + </optional> + <ref name="extensionPoint"/> + </element> + </define> + </div> + + <div> + <a:documentation> + Errors and Warnings Container. + </a:documentation> + + <define name="exceptionContainer"> + <interleave> + <optional> + <ref name="badRequest"/> + </optional> + <optional> + + + + +Hardie, et al. Standards Track [Page 61] + +RFC 5222 LoST August 2008 + + + <ref name="internalError"/> + </optional> + <optional> + <ref name="serviceSubstitution"/> + </optional> + <optional> + <ref name="defaultMappingReturned"/> + </optional> + <optional> + <ref name="forbidden"/> + </optional> + <optional> + <ref name="notFound"/> + </optional> + <optional> + <ref name="loop"/> + </optional> + <optional> + <ref name="serviceNotImplemented"/> + </optional> + <optional> + <ref name="serverTimeout"/> + </optional> + <optional> + <ref name="serverError"/> + </optional> + <optional> + <ref name="locationInvalid"/> + </optional> + <optional> + <ref name="locationProfileUnrecognized"/> + </optional> + </interleave> + <ref name="extensionPoint"/> + <ref name="source"/> + </define> + + <define name="errors"> + <element name="errors"> + <ref name="exceptionContainer"/> + </element> + </define> + + <define name="warnings"> + <element name="warnings"> + <ref name="exceptionContainer"/> + </element> + </define> + + + +Hardie, et al. Standards Track [Page 62] + +RFC 5222 LoST August 2008 + + + </div> + + <div> + <a:documentation> + Basic Exceptions + </a:documentation> + + <define name="basicException"> + <a:documentation> + Exception pattern. + </a:documentation> + <ref name="message"/> + <ref name="extensionPoint"/> + </define> + + <define name="badRequest"> + <element name="badRequest"> + <ref name="basicException"/> + </element> + </define> + + <define name="internalError"> + <element name="internalError"> + <ref name="basicException"/> + </element> + </define> + + <define name="serviceSubstitution"> + <element name="serviceSubstitution"> + <ref name="basicException"/> + </element> + </define> + + <define name="defaultMappingReturned"> + <element name="defaultMappingReturned"> + <ref name="basicException"/> + </element> + </define> + + <define name="forbidden"> + <element name="forbidden"> + <ref name="basicException"/> + </element> + </define> + + <define name="notFound"> + <element name="notFound"> + <ref name="basicException"/> + + + +Hardie, et al. Standards Track [Page 63] + +RFC 5222 LoST August 2008 + + + </element> + </define> + + <define name="loop"> + <element name="loop"> + <ref name="basicException"/> + </element> + </define> + + <define name="serviceNotImplemented"> + <element name="serviceNotImplemented"> + <ref name="basicException"/> + </element> + </define> + + <define name="serverTimeout"> + <element name="serverTimeout"> + <ref name="basicException"/> + </element> + </define> + + <define name="serverError"> + <element name="serverError"> + <ref name="basicException"/> + </element> + </define> + + <define name="locationInvalid"> + <element name="locationInvalid"> + <ref name="basicException"/> + </element> + </define> + + <define name="locationValidationUnavailable"> + <element name="locationValidationUnavailable"> + <ref name="basicException"/> + </element> + </define> + + <define name="locationProfileUnrecognized"> + <element name="locationProfileUnrecognized"> + <attribute name="unsupportedProfiles"> + <data type="NMTOKENS"/> + </attribute> + <ref name="basicException"/> + </element> + </define> + </div> + + + +Hardie, et al. Standards Track [Page 64] + +RFC 5222 LoST August 2008 + + + <div> + <a:documentation> + Redirect. + </a:documentation> + + <define name="redirect"> + <a:documentation> + Redirect pattern + </a:documentation> + <element name="redirect"> + <attribute name="target"> + <ref name="appUniqueString"/> + </attribute> + <ref name="source"/> + <ref name="message"/> + <ref name="extensionPoint"/> + </element> + </define> + </div> + + <div> + <a:documentation> + Some common patterns. + </a:documentation> + + <define name="message"> + <optional> + <group> + <attribute name="message"> + <data type="token"/> + </attribute> + <attribute name="xml:lang"> + <data type="language"/> + </attribute> + </group> + </optional> + </define> + + <define name="service"> + <optional> + <element name="service"> + <data type="anyURI"/> + </element> + </optional> + </define> + + + + + + +Hardie, et al. Standards Track [Page 65] + +RFC 5222 LoST August 2008 + + + <define name="appUniqueString"> + <data type="token"> + <param name="pattern">([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]+</param> + </data> + </define> + + <define name="source"> + <attribute name="source"> + <ref name="appUniqueString"/> + </attribute> + </define> + + <define name="serviceList"> + <element name="serviceList"> + <list> + <zeroOrMore> + <data type="anyURI"/> + </zeroOrMore> + </list> + </element> + </define> + </div> + + <div> + <a:documentation> + Patterns for inclusion of elements from schemas in + other namespaces. + </a:documentation> + + <define name="notLost"> + <a:documentation> + Any element not in the LoST namespace. + </a:documentation> + <element> + <anyName> + <except> + <nsName ns="urn:ietf:params:xml:ns:lost1"/> + <nsName/> + </except> + </anyName> + <ref name="anyElement"/> + </element> + </define> + + <define name="anyElement"> + <a:documentation> + + + + + +Hardie, et al. Standards Track [Page 66] + +RFC 5222 LoST August 2008 + + + A wildcard pattern for including any element + from any other namespace. + </a:documentation> + <zeroOrMore> + <choice> + <element> + <anyName/> + <ref name="anyElement"/> + </element> + <attribute> + <anyName/> + </attribute> + <text/> + </choice> + </zeroOrMore> + </define> + + <define name="extensionPoint"> + <a:documentation> + A point where future extensions + (elements from other namespaces) + can be added. + </a:documentation> + <zeroOrMore> + <ref name="notLost"/> + </zeroOrMore> + </define> + </div> + + </grammar> + + Figure 21 + +Appendix B. Examples Online + + The XML examples and Relax NG schemas may be found online [24]. + + + + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 67] + +RFC 5222 LoST August 2008 + + +Authors' Addresses + + Ted Hardie + Qualcomm, Inc. + + EMail: hardie@qualcomm.com + + + Andrew Newton + American Registry for Internet Numbers + 3635 Concorde Parkway, Suite 200 + Chantilly, VA 20151 + US + + Phone: +1 703 227 9894 + EMail: andy@hxr.us + + + Henning Schulzrinne + Columbia University + Department of Computer Science + 450 Computer Science Building + New York, NY 10027 + US + + Phone: +1 212 939 7004 + EMail: hgs+ecrit@cs.columbia.edu + URI: http://www.cs.columbia.edu + + + Hannes Tschofenig + Nokia Siemens Networks + Linnoitustie 6 + Espoo 02600 + Finland + + Phone: +358 (50) 4871445 + EMail: Hannes.Tschofenig@nsn.com + URI: http://www.tschofenig.priv.at + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 68] + +RFC 5222 LoST August 2008 + + +Full Copyright Statement + + Copyright (C) The IETF Trust (2008). + + This document is subject to the rights, licenses and restrictions + contained in BCP 78, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND + THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF + THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at + ietf-ipr@ietf.org. + + + + + + + + + + + + +Hardie, et al. Standards Track [Page 69] + |