ECRIT H. Schulzrinne
Internet-Draft Columbia U.
Intended status: Standards Track H. Tschofenig
Expires: May 6, 2009 NSN
November 2, 2008
Synchronizing Location-to-Service Translation (LoST) Servers
draft-ietf-ecrit-lost-sync-01
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 May 6, 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 & Tschofenig Expires May 6, 2009 [Page 1]
Internet-Draft LoST Sync November 2008
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Distributing Mappings via <pushMappings> and
<pushMappingsResponse> . . . . . . . . . . . . . . . . . . . . 4
4. Synchronizing Mapping Stores via <getMappings> and
<getMappingsResponse> . . . . . . . . . . . . . . . . . . . . 6
5. Security Considerations . . . . . . . . . . . . . . . . . . . 8
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
6.1. LoST Synchronization Namespace Registration . . . . . . . 8
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9
8. RelaxNG . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
9.1. Normative References . . . . . . . . . . . . . . . . . . . 11
9.2. Informative References . . . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12
Intellectual Property and Copyright Statements . . . . . . . . . . 13
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 2]
Internet-Draft LoST Sync November 2008
1. Introduction
The LoST (Location-to-Service Translation) protocol [RFC5222] maps
geographic locations to service URLs. As specified in the LoST
architecture description [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.
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.
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].
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 3]
Internet-Draft LoST Sync November 2008
This document reuses terminology introduced by the mapping
architecture document [I-D.ietf-ecrit-mapping-arch].
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], 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 remove a non-existent mapping, the query is silently
ignored.
The response to a <pushMappings> request is a <pushMappingsResponse>,
currently without additional elements, if the request was successful
or an <errors> response if the request failed. Only the
<badRequest>, <forbidden>, <internalError> or <serverTimeout> errors
defined in Section 13.1 of [RFC5222] are used. Neither the
<redirect> nor the <warnings> messages are used for this query.
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.)
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. In the example, the mappings with
sourceId 7e3f40b098c711dbb6060800200c9a66 sourceId
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 4]
Internet-Draft LoST Sync November 2008
7e3f40b098c711dbb606011111111111 are added by the recipient. The
last mapping, with source 'nj.us.example' and sourceID 'englewood',
is removed.
<?xml version="1.0" encoding="UTF-8"?>
<sync:pushMappings
xmlns:sync="urn:ietf:params:xml:ns:lost-sync1"
xmlns:p2="http://www.opengis.net/gml"
xmlns="urn:ietf:params:xml:ns:lost1:sync">
<sync:mappings>
<mapping source="leonia.nj.us.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@leonianj.example.org</uri>
<serviceNumber>911</serviceNumber>
</mapping>
<mapping source="authoritative.example"
sourceId="7e3f40b098c711dbb606011111111111"
expires="2009-01-01T01:44:33Z"
lastUpdated="2008-11-01T01:00:00Z">
<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>
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 5]
Internet-Draft LoST Sync November 2008
<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="nj.us.example"
sourceId="englewood"
lastUpdated="2008-11-01T01:00:00Z"
expires="2008-11-01T01:00:00Z"/>
</sync:mappings>
</sync:pushMappings>
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.
<?xml version="1.0" encoding="UTF-8"?>
<pushMappingsResponse xmlns="urn:ietf:params:xml:ns:lost1:sync" />
</pushMappingsResponse>
Figure 2: Example <pushMappingsResponse>
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
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 6]
Internet-Draft LoST Sync November 2008
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
o source
o source, sourceID
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] are used. Neither the <redirect> nor the
<warnings> messages are used for this query.
An example request is shown in Figure 3, the corresponding response
in Figure 4. In the example, the queried node did not have anything
newer for mapping 7e3f40b098c711dbb606011111111111, but did have a
mapping with sourceId 7b7c9630-a93b-11dd-ad8b-0800200c9a66 that
matched the source parameter 'authoritative.example'.
<?xml version="1.0" encoding="UTF-8"?>
<getMappings xmlns="urn:ietf:params:xml:ns:lost1:sync"
source="authoritative.example">
<m sourceId="7e3f40b098c711dbb606011111111111"
lastUpdated="2008-11-26T01:00:00Z" />
</getMappings>
Figure 3: Example <getMappings> request
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 7]
Internet-Draft LoST Sync November 2008
<?xml version="1.0" encoding="UTF-8"?>
<sync:getMappingsResponse
xmlns="urn:ietf:params:xml:ns:lost1:sync"
xmlns:sync="urn:ietf:params:xml:ns:lost-sync1">
<sync:mappings>
<mapping
expires="2007-01-01T01:44:33Z"
lastUpdated="2006-11-01T01:00:00Z"
source="authoritative.example"
sourceId="7b7c9630-a93b-11dd-ad8b-0800200c9a66"
<displayName xml:lang="en">
Englewood Police Department
</displayName>
<service>urn:service:sos.police</service>
<serviceBoundary profile="civic">
...
</serviceBoundary>
<uri>sip:police@englewood.example.com</uri>
<serviceNumber>911</serviceNumber>
</mapping>
</sync:mappings>
</sync:getMappingsResponse>
Figure 4: Example <getMappingsResponse>
5. Security Considerations
The LoST security considerations are discussed in [RFC5222]. The
operations described in this document involve mutually-trusting LoST
nodes. These nodes need to authenticate each other, using mechanisms
such as HTTP Digest [RFC2617], HTTP Basic [RFC2617] over TLS
[RFC5246] or TLS client and server certificates. Nodes implementing
LoST MUST implement HTTP Basic authentication over TLS and MAY
implement other authentication mechanisms.
6. IANA Considerations
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).
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 8]
Internet-Draft LoST Sync November 2008
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
7. Acknowledgments
Robins George, Cullen Jennings and Andrew Newton provided helpful
input. Jari Urpalainen assisted with the Relax NG schema.
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"/>
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 9]
Internet-Draft LoST Sync November 2008
<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">
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 10]
Internet-Draft LoST Sync November 2008
<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>
9. References
9.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 11]
Internet-Draft LoST Sync November 2008
Leach, P., Luotonen, A., and L. Stewart, "HTTP
Authentication: Basic and Digest Access Authentication",
RFC 2617, June 1999.
[RFC5222] Hardie, T., Newton, A., Schulzrinne, H., and H.
Tschofenig, "LoST: A Location-to-Service Translation
Protocol", RFC 5222, August 2008.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246, August 2008.
9.2. Informative References
[I-D.ietf-ecrit-mapping-arch]
Schulzrinne, H., "Location-to-URL Mapping Architecture and
Framework", draft-ietf-ecrit-mapping-arch-03 (work in
progress), September 2007.
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
Schulzrinne & Tschofenig Expires May 6, 2009 [Page 12]
Internet-Draft LoST Sync November 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 & Tschofenig Expires May 6, 2009 [Page 13]