ECRIT                                                     H. Schulzrinne
Internet-Draft                                               Columbia U.
Intended status: Standards Track                            July 7, 2008
Expires: January 8, 2009


      Synchronizing Location-to-Service Translation (LoST) Servers
                   draft-ietf-ecrit-lost-sync-00.txt

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of 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 January 8, 2009.

Copyright Notice

   Copyright (C) The IETF Trust (2008).

Abstract

   The LoST (Location-to-Service Translation) protocol is used to map
   locations to service URLs.  This document defines a set of LoST
   extensions that allow LoST servers to synchronize their lists of
   mappings.







Schulzrinne              Expires January 8, 2009                [Page 1]


Internet-Draft                  LoST Sync                      July 2008


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Distributing Mappings via <pushMappingsRequest>  . . . . . . .  4
   4.  Synchronizing Mapping Stores via <getMappingsRequest> and
       <getMappingsResponse>  . . . . . . . . . . . . . . . . . . . .  6
   5.  Synchronizing Mapping Stores via <syncMappingsRequest> and
       <syncMappingsResponse> . . . . . . . . . . . . . . . . . . . .  6
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . .  9
   7.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  9
     7.1.  LoST Synchronization Namespace Registration  . . . . . . .  9
   8.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . .  9
   9.  RelaxNG  . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
   10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
     10.1. Normative References . . . . . . . . . . . . . . . . . . . 10
     10.2. Informative References . . . . . . . . . . . . . . . . . . 10
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 10
   Intellectual Property and Copyright Statements . . . . . . . . . . 11
































Schulzrinne              Expires January 8, 2009                [Page 2]


Internet-Draft                  LoST Sync                      July 2008


1.  Introduction

   The LoST (Location-to-Service Translation) protocol [2] maps
   geographic locations to service URLs.  As specified in the LoST
   architecture description [3], there are a variety of LoST servers
   that cooperate to provide a global, scalable and resilient mapping
   service.  The LoST protocol specification only describes the protocol
   used for individual seeker-originated queries.  This document adds
   LoST operations that 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, <pushMappingsRequest> and
   <getMappingsRequest>, 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.


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 [1].

   This document reuses terminology introduced by the mapping
   architecture document [3].




Schulzrinne              Expires January 8, 2009                [Page 3]


Internet-Draft                  LoST Sync                      July 2008


3.  Distributing Mappings via <pushMappingsRequest>

   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.
   Mappings in that request replace existing mappings with the same 'id'
   parameter and a more recent 'created' parameter.  (Enforcing the
   latter avoids that a crashed node that wakes up injects outdated
   information into the system.)

   Each peer keeps track of which peer it has exchanged which mapping
   elements with.  Mapping elements are identified by the 'source',
   'sourceID' and 'lastUpdated' parameters.  A mapping is considered the
   same if these three attributes match.  Nodes never push the same
   information to the same peer twice.

   Instead of providing the mappings themselves, the LoST client can
   include references to mappings that have changed since the last
   request, by including <m> entries.  The server then requests any out-
   of-date or missing mappings by including a subset of that list as <m>
   elements in a <getMappingsRequest> request.

   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
   mapping is identified only by the 'sourceId' and 'source' parameters;
   the other parameters are ignored if present.  In other words, the
   delete operation affects all versions of a mapping.

   The response to <pushMappingsRequest> is <pushMappingsResponse>.  It
   only contains <errors> elements if there is an error condition.  Only
   the .... errors are defined (TBD).

   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, giving the relatively low volume of data.)

   An example is shown in Figure 1.  In the example, the last mapping,
   with source nj.us.example and mapping ID 'englewood', is being
   removed.


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



Schulzrinne              Expires January 8, 2009                [Page 4]


Internet-Draft                  LoST Sync                      July 2008


   <pushMappingsRequest xmlns="urn:ietf:params:xml:ns:lost1:sync">
   <mappings>
     <mapping sourceId="leonia.nj.us.example"
       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@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="abc123">
       <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>



Schulzrinne              Expires January 8, 2009                [Page 5]


Internet-Draft                  LoST Sync                      July 2008


     </mapping>

     <mapping source="nj.us.example" sourceId="englewood"/>

   </mappings>
   </pushMappingsRequest>

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


      Figure 1: Example pushMappingsRequest and pushMappingsResponse


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

   Get list of mappings identified by <m> elements.  The server may not
   be able to return all such mappings, but the client can easily tell
   which mappings were unavailable since it can compare the mapping
   identifiers to those returned in the mapping elements.

   Errors TBD.


5.  Synchronizing Mapping Stores via <syncMappingsRequest> and
    <syncMappingsResponse>

   While the <pushMappingsRequest> request allows new mappings to
   propagate, it does not allow a newly-arriving node to acquire all
   mappings maintained by another node.  Therefore, we introduce
   <syncMappingsRequest> and <syncMappingsResponse> to synchronize two
   mapping stores.  A LoST node wanting to synchronize its mapping store
   with another node issues a <getMappingsRequest>, containing an
   enumeration of the current mapping sources, source identifiers and
   versions in <m> elements.  The recipient of the request compares that
   list to its own list of mappings.  It then returns an unordered set
   of mappings that are more recent than the ones identified in the
   <getMappingsRequest>.  It also returns any mappings that it knows
   about that are not contained in the list at all.  Thus, a querier can
   get the complete listing of mappings by omitting 'm' elements
   altogether.

   The querier can limit the scope of the mappings returned by adding
   'source', 'sourceId', and 'lastUpdated' attributes to
   <getMappingsRequest>.  If the 'source' attribute is specified, only
   mappings with that particular source attribute are considered.



Schulzrinne              Expires January 8, 2009                [Page 6]


Internet-Draft                  LoST Sync                      July 2008


   Similarly, the 'sourceId' attribute restricts mappings to those
   matching the attribute.  If 'sourceId' is specified, the 'source'
   attribute also needs to be provided, since the 'sourceId' attribute
   is only defined for a particular source.  Similarly, if 'lastUpdated'
   is specified, 'source' and 'sourceId' need to be specified as well.
   In other words, a querier cannot ask for all mappings last updated
   today regardless of source, for example. 'm' elements that do not
   match the <getMappingsRequest> attributes are silently ignored.

   Errors TBD.

   An example request and response is shown in Figure 2







































Schulzrinne              Expires January 8, 2009                [Page 7]


Internet-Draft                  LoST Sync                      July 2008


   <?xml version="1.0" encoding="UTF-8"?>
   <getMappingsRequest xmlns="urn:ietf:params:xml:ns:lost1:sync"
     sourceId="authoritative.example">
     <m sourceId="authoritative.example"
       sourceId="abc123" version="1" />
     <get sourceId="munich.example.de"
       sourceId="xx" version="2" />
   </getMappingsRequest>

   <?xml version="1.0" encoding="UTF-8"?>
   <getMappingsResponse xmlns="urn:ietf:params:xml:ns:lost1:sync"
     xmlns:p2="http://www.opengis.net/gml">
     <mappings>
       <mapping
        expires="2009-01-26T01:44:33Z"
        lastUpdated="2008-11-26T01:00:00Z"
        source="authoritative.example"
         sourceId="abc123" version="2">
         <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@ny.example.com</uri>
         <uri>xmpp:nypd@example.com</uri>
         <serviceNumber>911</serviceNumber>
       </mapping>
     </mappings>
   </getMappingsResponse>

       Figure 2: Example getMappingsRequest and getMappingsResponse








Schulzrinne              Expires January 8, 2009                [Page 8]


Internet-Draft                  LoST Sync                      July 2008


6.  Security Considerations

   The LoST security considerations are discussed in [2].  The
   operations described in this document involve mutually-trusting LoST
   nodes.  These nodes need to authenticate each other, using mechanisms
   such as HTTP Digest, HTTP Basic over TLS or TLS client and server
   certificates.  Nodes implementing LoST MUST implement HTTP Basic
   authentication over TLS and MAY implement other authentication
   mechanisms.


7.  IANA Considerations

7.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


8.  Acknowledgments

   Andrew Newton and Cullen Jennings provided helpful input.






Schulzrinne              Expires January 8, 2009                [Page 9]


Internet-Draft                  LoST Sync                      July 2008


9.  RelaxNG

   TBD


10.  References

10.1.  Normative References

   [1]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", BCP 14, RFC 2119, March 1997.

   [2]  Hardie, T., Newton, A., Schulzrinne, H., and H. Tschofenig,
        "LoST: A Location-to-Service Translation Protocol",
        draft-ietf-ecrit-lost-10 (work in progress), May 2008.

10.2.  Informative References

   [3]  Schulzrinne, H., "Location-to-URL Mapping Architecture and
        Framework", draft-ietf-ecrit-mapping-arch-03 (work in progress),
        September 2007.


Author's Address

   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
















Schulzrinne              Expires January 8, 2009               [Page 10]


Internet-Draft                  LoST Sync                      July 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.


Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).





Schulzrinne              Expires January 8, 2009               [Page 11]