TOC 
ECRITH. Schulzrinne
Internet-DraftColumbia U.
Intended status: Standards TrackFebruary 25, 2008
Expires: August 28, 2008 


Synchronizing Location-to-Service Translation (LoST) Servers
draft-schulzrinne-ecrit-lost-sync-01.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 August 28, 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.



Table of Contents

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




 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,” May 2008.) [I‑D.ietf‑ecrit‑lost] maps geographic locations to service URLs. 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 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. [TBD: How referenced?]

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.



 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 <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 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 'version' 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 (Example pushMappingsRequest and pushMappingsResponse). In the example, the last mapping, with source lost:nj.us.example and mapping ID 'englewood', is being removed.



<?xml version="1.0" encoding="UTF-8"?>
<pushMappingsRequest xmlns="urn:ietf:params:xml:ns:lost1:sync">
<mappings>
  <mapping sourceId="lost:leonia.nj.us.example"
    version="1" lastUpdated="2006-11-26T01:00:00Z"
    timeToLive="2007-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="2007-01-01T01:44:33Z"
    lastUpdated="2006-11-01T01:00:00Z"
    source="lost:authoritative.example"
    sourceId="abc123" version="1">
    <displayName xml:lang="en">
      New York City Police Department
    </displayName>
    <service>urn:service:sos.police</service>
    <serviceBoundary profile="geodetic-2d">
      <p2:Polygon srsName="urn:ogc:def::crs:EPSG::4326">
        <p2:exterior>
          <p2:LinearRing>
            <p2:pos>37.775 -122.4194</p2:pos>
            <p2:pos>37.555 -122.4194</p2:pos>
            <p2:pos>37.555 -122.4264</p2:pos>
            <p2:pos>37.775 -122.4264</p2:pos>
            <p2:pos>37.775 -122.4194</p2:pos>
          </p2:LinearRing>
        </p2:exterior>
      </p2:Polygon>
    </serviceBoundary>
    <uri>sip:nypd@example.com</uri>
    <uri>xmpp:nypd@example.com</uri>
    <serviceNumber>911</serviceNumber>
  </mapping>

  <mapping source="lost: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 



 TOC 

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.



 TOC 

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 'version' attributes to <getMappingsRequest>. 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. If 'version' is specified, 'sourceId' needs to be specified as well. If 'sourceId' is provided, the 'source' attribute also needs to be included. In other words, a querier cannot ask for all version 17 mappings 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 (Example getMappingsRequest and getMappingsResponse)



<?xml version="1.0" encoding="UTF-8"?>
<getMappingsRequest xmlns="urn:ietf:params:xml:ns:lost1:sync"
  sourceId="lost:authoritative.example">
  <m sourceId="lost:authoritative.example"
    sourceId="abc123" version="1" />
  <get sourceId="lost: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="2007-01-26T01:44:33Z"
     lastUpdated="2006-11-26T01:00:00Z"
     source="lost: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 



 TOC 

6.  Security Considerations

The LoST security considerations are discussed in [I‑D.ietf‑ecrit‑lost] (Hardie, T., Newton, A., Schulzrinne, H., and H. Tschofenig, “LoST: A Location-to-Service Translation Protocol,” May 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, 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.



 TOC 

7.  IANA Considerations



 TOC 

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



 TOC 

8.  Acknowledgments

Andrew Newton provided helpful input.



 TOC 

9.  RelaxNG

TBD



 TOC 

10.  References



 TOC 

10.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).
[I-D.ietf-ecrit-lost] 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 (TXT).


 TOC 

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

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


 TOC 

Full Copyright Statement

Intellectual Property