TOC 
ECRITH. Schulzrinne
Internet-DraftColumbia University
Intended status: Standards TrackH. Tschofenig
Expires: July 28, 2009Nokia Siemens Networks
 January 24, 2009


Synchronizing Location-to-Service Translation (LoST) Protocol based Service Boundaries and Mapping Elements
draft-ietf-ecrit-lost-sync-02.txt

Status of this Memo

This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.”

The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.

The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.

This Internet-Draft will expire on July 28, 2009.

Copyright Notice

Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents in effect on the date of publication of this document (http://trustee.ietf.org/license-info). Please review these documents carefully, as they describe your rights and restrictions with respect to this document.

Abstract

The Location-to-Service Translation (LoST) protocol is an XML-based protocol for mapping service identifiers and geodetic or civic location information to service URIs and service boundaries. In particular, it can be used to determine the location-appropriate Public Safety Answering Point (PSAP) for emergency services.

The main data structure, the XML <mapping> element, used for encapsulating information about service boundaries is defined in the LoST protocol specification and circumscribes the region within which all locations map to the same service URI or set of URIs for a given service.

This document defines an XML protocol to exchange these mappings between two nodes. As motived in the Location-to-URL Mapping Architecture document this mechanism is useful for the synchronization of top-level LoST Forest Guides. This document is, however, even useful in a deployment that does not make use of the LoST protocol but purely wants to distribute service boundaries.



Table of Contents

1.  Introduction
2.  Terminology
3.  Distributing Mappings via <pushMappings> and <pushMappingsResponse>
4.  Synchronizing Mapping Stores via <getMappings> and <getMappingsResponse>
5.  Security Considerations
6.  IANA Considerations
    6.1.  LoST Synchronization Namespace Registration
7.  Acknowledgments
8.  RelaxNG
9.  References
    9.1.  Normative References
    9.2.  Informative References
§  Authors' Addresses




 TOC 

1.  Introduction

The LoST (Location-to-Service Translation) protocol (Hardie, T., Newton, A., Schulzrinne, H., and H. Tschofenig, “LoST: A Location-to-Service Translation Protocol,” August 2008.) [RFC5222] maps service identifiers and geodetic or civic location information to service URIs. As specified in the LoST architecture description (Schulzrinne, H., “Location-to-URL Mapping Architecture and Framework,” March 2009.) [I‑D.ietf‑ecrit‑mapping‑arch], there are a variety of LoST servers that cooperate to provide an ubiquitous, globally scalable and resilient mapping service. The LoST protocol specification only describes the protocol used for individual seeker-originated queries. This document allow forest guides, resolver clusters and authoritative servers to synchronize their database of mappings.

In the LoST architecture, servers can peer, i.e., have an on-going data exchange relationship. Peering relationships are set up manually, based on local policies. A server can peer with any number of other servers. Forest guides peer with other forest guides; resolvers peer with forest guides and other resolvers (in the same cluster); authoritative mapping servers peer with forest guides and other authoritative servers, either in the same cluster or above or below them in the tree. If the type of LoST role does not matter, we refer to LoST protocol participants as LoST nodes.

Authoritative mapping servers push coverage regions "up" the tree, i.e., from child nodes to parent nodes. The child informs the parent of the geospatial or civic region that it covers.

The coverage regions of different authoritative servers can overlap. This should only happen if the authoritative servers are misconfigured or if there is a political dispute that involves competing claims for the same region. A server MUST detect such colliding claims and implement a policy to resolve the collision, either through an automated policy mechanism or manual intervention.

This extension defines two new requests, <pushMappings> and <getMappings>, that allow peering servers to exchange mappings. These requests are used for all peering relationships and always contain mapping entries, but naturally the content of the data exchanged differs. <pushMappings> allows a peer to send newer mappings to another peer; with a <getMappings> query, a node can obtain mappings that are newer than those it already has.



 TOC 

2.  Terminology

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 RFC 2119 [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.).

This document reuses terminology introduced by the mapping architecture document (Schulzrinne, H., “Location-to-URL Mapping Architecture and Framework,” March 2009.) [I‑D.ietf‑ecrit‑mapping‑arch].



 TOC 

3.  Distributing Mappings via <pushMappings> and <pushMappingsResponse>

When a LoST node obtains new information that is of interest to its peers, it pushes the new mappings to its peers. This information might arrive through non-LoST means, such as a manual addition to the local mappings database, or through another LoST node, via a <pushMappings> request or a <getMappingsResponse> described later.

Each peer keeps track of which peer it has exchanged which mapping elements with. As discussed in Section 5.1 of [RFC5222] (Hardie, T., Newton, A., Schulzrinne, H., and H. Tschofenig, “LoST: A Location-to-Service Translation Protocol,” August 2008.), mapping elements are identified by the 'source', 'sourceID' and 'lastUpdated' attributes. A mapping is considered the same if these three attributes match. Nodes never push the same information to the same peer twice.

To delete a mapping, the content of the mapping is left empty. The node can delete the mapping from its internal mapping database, but has to remember which peers it has distributed this update to. The 'expires' attribute is required, but ignored. If the querier attempts to delete a non-existent mapping, the query is silently ignored.

The response to a <pushMappings> request is a <pushMappingsResponse> message. Currently, a successful response message returns no additional elements, whereas an <errors> response is returned in the response message, if the request failed. Only the <badRequest>, <forbidden>, <internalError> or <serverTimeout> errors defined in Section 13.1 of [RFC5222] (Hardie, T., Newton, A., Schulzrinne, H., and H. Tschofenig, “LoST: A Location-to-Service Translation Protocol,” August 2008.), are used. The <redirect> and <warnings> messages are not used for this query/response."

If the set of nodes that are synchronizing their data does not form a tree, it is possible that the same information arrives through several other nodes. This is unavoidable, but generally only imposes a modest overhead. (It would be possible to create a spanning tree in the same fashion as IP multicast, but the complexity does not seem warranted, given the relatively low volume of data.)

A newly received mapping M' replaces an existing mapping M if all of the following conditions hold:

  1. M'.source equals M.source, ignoring case
  2. M'.sourceID' equals M.sourceID, ignoring case
  3. M'.lastUpdated greater or equal to M.lastUpdated

An example is shown in Figure 1 (Example <pushMappings>). Image a LoST node that obtained two new mappings identified as follows:

These two mappings have to be added to the peer's mapping database.

Additionally, it determines that the following mapping has to be deleted:



<?xml version="1.0" encoding="UTF-8"?>
<sync:pushMappingsRequest
    xmlns:sync="urn:ietf:params:xml:ns:lost-sync1"
    xmlns="urn:ietf:params:xml:ns:lost1"
    xmlns:p2="http://www.opengis.net/gml";>

    <sync:mappings>

        <mapping source="authoritative.example"
            sourceId="7e3f40b098c711dbb6060800200c9a66"
            lastUpdated="2008-11-26T01:00:00Z"
            expires="2009-12-26T01:00:00Z">
            <displayName xml:lang="en">
                        Leonia Police Department
            </displayName>
            <service>urn:service:sos.police</service>
            <serviceBoundary
profile="urn:ietf:params:lost:location-profile:basic-civic">
                <civicAddress
xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr">
                    <country>US</country>
                    <A1>NJ</A1>
                    <A3>Leonia</A3>
                    <PC>07605</PC>
                </civicAddress>
            </serviceBoundary>
            <uri>sip:police at leonianj.example.org</uri>
            <serviceNumber>911</serviceNumber>
        </mapping>

        <mapping expires="2009-01-01T01:44:33Z"
            lastUpdated="2008-11-01T01:00:00Z"
            source="authoritative.example"
            sourceId="7e3f40b098c711dbb606011111111111">
            <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 at example.com</uri>
            <uri>xmpp:nypd at example.com</uri>
            <serviceNumber>911</serviceNumber>
        </mapping>

        <mapping source="nj.us.example"
                 sourceId="123"
                 lastUpdated="2008-11-01T01:00:00Z"
                 expires="2008-11-01T01:00:00Z"/>
    </sync:mappings>

</sync:pushMappingsRequest>


 Figure 1: Example <pushMappings> 

In response, the peer performs the necessary operation and updates its mapping database. In particular, it will check whether the querier is authorized to perform the update and whether the elements and attributes contain values that it understands. In our example, a positive response is returned as shown in Figure 2 (Example <pushMappingsResponse>).



<?xml version="1.0" encoding="UTF-8"?>
<pushMappingsResponse xmlns="urn:ietf:params:xml:ns:lost1:sync" />

 Figure 2: Example <pushMappingsResponse> 



 TOC 

4.  Synchronizing Mapping Stores via <getMappings> and <getMappingsResponse>

Instead of pushing mappings to another LoST node, a LoST client can declare all the mappings it has, via a sequence of <m> elements in the <getMappings>, and then obtain any missing or outdated mappings in the <getMappingsResponse>. Specifying the existing mappings avoids retransmitting data that the querier has already stored.

If the <getMappings> query has no attributes, the <getMappingsResponse> contains all mappings that are either newer than the <m> elements or not contained in the sequence of <m> elements. The querier can restrict the mappings returned by adding 'source' and 'sourceId' attributes to the <getMappings> query. Only the combinations

are allowed.

If the 'source' attribute is specified, only mappings with that particular source attribute are considered. Similarly, the 'sourceId' attribute restricts mappings to those matching the attribute from the 'source' named.

<m> elements MUST only contain the 'source', 'sourceId' and 'lastUpdated' attributes that are not contained in the <GetMappings> element itself. Extra attributes that do not match the values of the <getMappings> attributes are silently ignored. (This structure reduces the query size for the common case that there are many mappings from the same source.)

Processing a <getMappings> message may lead to a successful response in the form of a &tl;getMappingsResponse> or an <errors> message. Only the <badRequest>, <forbidden>, <internalError>, <serverTimeout> errors defined in [RFC5222] (Hardie, T., Newton, A., Schulzrinne, H., and H. Tschofenig, “LoST: A Location-to-Service Translation Protocol,” August 2008.) are used. Neither the <redirect> nor the <warnings> messages are used for this query.

An example request is shown in Figure 3 (Example <getMappings> request), the corresponding response in Figure 4 (Example <getMappingsResponse>). In this example a LoST node requests a specific mapping for source="authoritative.bar.example" and sourceId="7e3f40b098c711dbb6060800200c9a66" that is fresher than "2006-11-01T01:00:00Z". Additionally, all mappings that match source="authoritative.foo.example" are requested.



<?xml version="1.0" encoding="UTF-8"?>
<getMappingsRequest xmlns="urn:ietf:params:xml:ns:lost-sync1">
    <m source="authoritative.bar.example"
sourceId="7e3f40b098c711dbb6060800200c9a66"
        lastUpdated="2006-11-01T01:00:00Z"/>
    <m source="authoritative.foo.example"/>
</getMappingsRequest>

 Figure 3: Example <getMappings> request 

The response is shown in Figure 4 (Example <getMappingsResponse>). A more recent mapping was available with the identification of source="authoritative.bar.example" and sourceId="7e3f40b098c711dbb6060800200c9a66". Only one mapping that matched source="authoritative.foo.example" was found and returned.



<?xml version="1.0" encoding="UTF-8"?>
<sync:getMappingsResponse
    xmlns:sync="urn:ietf:params:xml:ns:lost-sync1"
    xmlns="urn:ietf:params:xml:ns:lost1"
    xmlns:p2="http://www.opengis.net/gml";>

    <sync:mappings>

        <mapping source="authoritative.bar.example"
            sourceId="7e3f40b098c711dbb6060800200c9a66"
            lastUpdated="2008-11-26T01:00:00Z"
            expires="2009-12-26T01:00:00Z">
            <displayName xml:lang="en">
                      Leonia Police Department
            </displayName>
            <service>urn:service:sos.police</service>
            <serviceBoundary
profile="urn:ietf:params:lost:location-profile:basic-civic">
                <civicAddress
xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr">
                    <country>US</country>
                    <A1>NJ</A1>
                    <A3>Leonia</A3>
                    <PC>07605</PC>
                </civicAddress>
            </serviceBoundary>
            <uri>sip:police at leonianj2.example.org</uri>
            <serviceNumber>911</serviceNumber>
        </mapping>

        <mapping expires="2009-01-01T01:44:33Z"
            lastUpdated="2008-11-01T01:00:00Z"
            source="authoritative.foo.example"
            sourceId="7e3f40b098c711dbb606011111111111">
            <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 at example.com</uri>
            <uri>xmpp:nypd at example.com</uri>
            <serviceNumber>911</serviceNumber>
        </mapping>

    </sync:mappings>

</sync:getMappingsResponse>

 Figure 4: Example <getMappingsResponse> 



 TOC 

5.  Security Considerations

The LoST security considerations are discussed in [RFC5222] (Hardie, T., Newton, A., Schulzrinne, H., and H. Tschofenig, “LoST: A Location-to-Service Translation Protocol,” August 2008.). The operations described in this document involve mutually-trusting LoST nodes. These nodes need to authenticate each other, using mechanisms such as HTTP Digest (Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, “HTTP Authentication: Basic and Digest Access Authentication,” June 1999.) [RFC2617], HTTP Basic (Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, “HTTP Authentication: Basic and Digest Access Authentication,” June 1999.) [RFC2617] over TLS (Dierks, T. and E. Rescorla, “The Transport Layer Security (TLS) Protocol Version 1.2,” August 2008.) [RFC5246] or TLS client and server certificates. Nodes implementing LoST MUST implement HTTP Basic authentication over TLS and MAY implement other authentication mechanisms.



 TOC 

6.  IANA Considerations



 TOC 

6.1.  LoST Synchronization Namespace Registration

URI:
urn:ietf:params:xml:ns:lost1:sync
Registrant Contact:
IETF ECRIT Working Group, Henning Schulzrinne (hgs@cs.columbia.edu).
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 Synchronization Namespace</title>
</head>
<body>
  <h1>Namespace for LoST server synchronization</h1>
  <h2>urn:ietf:params:xml:ns:lost1:sync</h2>
<p>See <a href="[URL of published RFC]">RFCXXXX
    [NOTE TO IANA/RFC-EDITOR:
     Please replace XXXX with the RFC number of this
    specification.]</a>.</p>
</body>
</html>
END



 TOC 

7.  Acknowledgments

Robins George, Cullen Jennings and Andrew Newton provided helpful input. Jari Urpalainen assisted with the Relax NG schema. We would also like to thank our PROTO shepherd Roger Marshall for his help with the document.



 TOC 

8.  RelaxNG

<?xml version="1.0" encoding="utf-8"?>

<grammar ns="urn:ietf:params:xml:ns:lost-sync1"
   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">

   <include href="lost.rng"/>

   <start combine="choice">

       <a:documentation> Location-to-Service Translation (LoST)
Synchronization Protocol</a:documentation>

       <choice>
           <ref name="pushMappings"/>
           <ref name="pushMappingsResponse"/>
           <ref name="getMappings"/>
           <ref name="getMappingsResponse"/>
       </choice>
   </start>


   <define name="pushMappings">
       <element name="pushMappings">
           <element name="mappings">
               <oneOrMore>
                   <ref name="mapping"/>
               </oneOrMore>
           </element>

           <ref name="extensionPoint"/>
       </element>
   </define>

   <define name="pushMappingsResponse">
       <element name="pushMappingsResponse">
           <ref name="extensionPoint"/>
       </element>
   </define>

   <define name="getMappings">
       <element name="getMappings">
           <choice>
              <ref name="ScopeSource"/>
              <ref name="ScopeSourceId"/>
           </choice>
           <oneOrMore>
               <element name="m">
                   <choice>
                       <ref name="ScopeSource"/>
                       <ref name="ScopeSourceId"/>
                       <ref name="ScopeLastUpdated"/>
                   </choice>
               </element>
           </oneOrMore>
           <ref name="extensionPoint"/>
       </element>
   </define>

   <define name="getMappingsResponse">
       <element name="getMappingsResponse">

           <element name="mappings">
               <oneOrMore>
                   <ref name="mapping"/>
               </oneOrMore>
           </element>

           <ref name="extensionPoint"/>

       </element>
   </define>

   <define name="ScopeSource">
       <attribute name="source">
           <data type="token"/>
       </attribute>
   </define>

   <define name="ScopeSourceId">
       <attribute name="source">
           <data type="token"/>
       </attribute>
       <attribute name="sourceId">
           <data type="token"/>
       </attribute>
   </define>

   <define name="ScopeLastUpdated">
       <attribute name="source">
           <data type="token"/>
       </attribute>
       <attribute name="sourceId">
           <data type="token"/>
       </attribute>
       <attribute name="lastUpdated">
           <data type="dateTime"/>
       </attribute>
   </define>

</grammar>


 TOC 

9.  References



 TOC 

9.1. Normative References

[RFC2119] Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” BCP 14, RFC 2119, March 1997 (TXT, HTML, XML).
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, “HTTP Authentication: Basic and Digest Access Authentication,” RFC 2617, June 1999 (TXT, HTML, XML).
[RFC5222] Hardie, T., Newton, A., Schulzrinne, H., and H. Tschofenig, “LoST: A Location-to-Service Translation Protocol,” RFC 5222, August 2008 (TXT).
[RFC5246] Dierks, T. and E. Rescorla, “The Transport Layer Security (TLS) Protocol Version 1.2,” RFC 5246, August 2008 (TXT).


 TOC 

9.2. Informative References

[I-D.ietf-ecrit-mapping-arch] Schulzrinne, H., “Location-to-URL Mapping Architecture and Framework,” draft-ietf-ecrit-mapping-arch-04 (work in progress), March 2009 (TXT).


 TOC 

Authors' Addresses

  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@gmx.net
URI:  http://www.tschofenig.priv.at