| < draft-ietf-ecrit-lost-sync-15.txt | draft-ietf-ecrit-lost-sync-16.txt > | |||
|---|---|---|---|---|
| ECRIT H. Schulzrinne | ECRIT H. Schulzrinne | |||
| Internet-Draft Columbia University | Internet-Draft Columbia University | |||
| Intended status: Experimental H. Tschofenig | Intended status: Experimental H. Tschofenig | |||
| Expires: July 14, 2012 Nokia Siemens Networks | Expires: July 16, 2012 Nokia Siemens Networks | |||
| January 11, 2012 | January 13, 2012 | |||
| Synchronizing Location-to-Service Translation (LoST) Protocol based | Synchronizing Location-to-Service Translation (LoST) Protocol based | |||
| Service Boundaries and Mapping Elements | Service Boundaries and Mapping Elements | |||
| draft-ietf-ecrit-lost-sync-15.txt | draft-ietf-ecrit-lost-sync-16.txt | |||
| Abstract | Abstract | |||
| The Location-to-Service Translation (LoST) protocol is an XML-based | The Location-to-Service Translation (LoST) protocol is an XML-based | |||
| protocol for mapping service identifiers and geodetic or civic | protocol for mapping service identifiers and geodetic or civic | |||
| location information to service URIs and service boundaries. In | location information to service URIs and service boundaries. In | |||
| particular, it can be used to determine the location-appropriate | particular, it can be used to determine the location-appropriate | |||
| Public Safety Answering Point (PSAP) for emergency services. | Public Safety Answering Point (PSAP) for emergency services. | |||
| The main data structure, the <mapping> element, used for | The main data structure, the <mapping> element, used for | |||
| skipping to change at page 2, line 4 ¶ | skipping to change at page 2, line 4 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on July 14, 2012. | This Internet-Draft will expire on July 16, 2012. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2012 IETF Trust and the persons identified as the | Copyright (c) 2012 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 4, line 34 ¶ | skipping to change at page 4, line 34 ¶ | |||
| exchange relationship. Peering relationships are set up manually, | exchange relationship. Peering relationships are set up manually, | |||
| based on local policies. A LoST server may peer with any number of | based on local policies. A LoST server may peer with any number of | |||
| other LoST servers. Forest guides peer with other forest guides; | other LoST servers. Forest guides peer with other forest guides; | |||
| authoritative mapping servers peer with forest guides and other | authoritative mapping servers peer with forest guides and other | |||
| authoritative servers, either in the same cluster or above or below | authoritative servers, either in the same cluster or above or below | |||
| them in the tree. Authoritative mapping servers push coverage | them in the tree. Authoritative mapping servers push coverage | |||
| regions "up" the tree, i.e., from child nodes to parent nodes. The | 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 | child informs the parent of the geospatial or civic region that it | |||
| covers for a specific service. | covers for a specific service. | |||
| Consider a hypothetical deployent of LoST in two countries, we call | Consider a hypothetical deployent of LoST in two countries, for | |||
| them Austria and Finland. Austria, in our example, runs three | example Austria and Finland. Austria, in our example, runs three | |||
| authoritative mapping servers labeled as 'East', 'West' and 'Vienna' | authoritative mapping servers labeled as 'East', 'West' and 'Vienna' | |||
| whereby the former two cover the entire country expect for Vienna, | whereby the former two cover the entire country expect for Vienna, | |||
| which is covered by a separate LoST server. There may be other | which is covered by a separate LoST server. There may be other | |||
| caching LoST servers run by ISPs, universities, and VSPs but they are | caching LoST servers run by ISPs, universities, and VSPs but they are | |||
| not relevant for this illustration. Finland, on the other hand, | not relevant for this illustration. Finland, on the other hand, | |||
| decided to only deploy a single LoST server that also acts as a | decided to only deploy a single LoST server that also acts as a | |||
| Forest Guide. For this simplistic illustration we assume that only | Forest Guide. For this simplistic illustration we assume that only | |||
| one service is available, namely 'urn:service:sos' since otherwise | one service is available, namely 'urn:service:sos' since otherwise | |||
| the number of stored mappings would have to be multiplied by the | the number of stored mappings would have to be multiplied by the | |||
| number of used services. | number of used services. | |||
| skipping to change at page 8, line 43 ¶ | skipping to change at page 8, line 43 ¶ | |||
| |----------------------------->| | |----------------------------->| | |||
| | | | | | | |||
| | <getMappingsResponse> | | | <getMappingsResponse> | | |||
| |<-----------------------------| | |<-----------------------------| | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| Figure 5: Querying for Mappings with a <getMappingsRequest> Message | Figure 5: Querying for Mappings with a <getMappingsRequest> Message | |||
| Note that in the exchange illustrated in Figure 5 Node B issuing the | Note that in the exchange illustrated in Figure 5 Node B is issuing | |||
| first request and plays the role of the HTTPS client (with HTTP as | the first request and plays the role of the HTTPS client and Node A | |||
| selected transport) and Node A plays the role of the HTTPS server. | plays the role of the HTTPS server. | |||
| The <pushMappingsRequest> exchange allows a LoST Sync source to push | The <pushMappingsRequest> exchange allows a LoST Sync source to push | |||
| mappings to LoST Sync destination. The assumption is being made that | mappings to LoST Sync destination. The assumption is being made that | |||
| Node A and B have previously been configured in a way that they push | Node A and B have previously been configured in a way that they push | |||
| mappings in such a fashion and that Node A maintains state about the | mappings in such a fashion and that Node A maintains state about the | |||
| mappings have to be pushed to Node B. No subscribe mechanism is | mappings have to be pushed to Node B. No subscribe mechanism is | |||
| defined in this document that would allow Node B to tell Node A about | defined in this document that would allow Node B to tell Node A about | |||
| what mappings it is interested nor a mechanism for learning to which | what mappings it is interested nor a mechanism for learning to which | |||
| entities mappings have to be pushed. | entities mappings have to be pushed. | |||
| skipping to change at page 9, line 31 ¶ | skipping to change at page 9, line 31 ¶ | |||
| | | | | | | |||
| | <pushMappingsResponse> | | | <pushMappingsResponse> | | |||
| |<-----------------------------| | |<-----------------------------| | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| Figure 6: Pushing Mappings with a <pushMappingsRequest> Message | Figure 6: Pushing Mappings with a <pushMappingsRequest> Message | |||
| Note that in the exchange illustrated in Figure 6 Node A issuing the | Note that in the exchange illustrated in Figure 6 Node A issuing the | |||
| first request and plays the role of the HTTPS client (with HTTP as | first request and plays the role of the HTTPS client and Node B plays | |||
| selected transport) and Node B plays the role of the HTTPS server. | the role of the HTTPS server. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| This document reuses terminology introduced by the mapping | This document reuses terminology introduced by the mapping | |||
| architecture document [RFC5582], such as 'coverage region', 'forest | architecture document [RFC5582], such as 'coverage region', 'forest | |||
| guide', 'mapping', 'authoritative mapping server', etc.. | guide', 'mapping', 'authoritative mapping server', etc.. | |||
| skipping to change at page 11, line 32 ¶ | skipping to change at page 11, line 32 ¶ | |||
| these mappings have been updated in the meanwhile. The policy | these mappings have been updated in the meanwhile. The policy | |||
| when to poll for updated mapping information is outside the scope | when to poll for updated mapping information is outside the scope | |||
| of this document. The <getMappingsRequest> message with one or | of this document. The <getMappingsRequest> message with one or | |||
| multiple <exists> child element(s) allows to reduce the number of | multiple <exists> child element(s) allows to reduce the number of | |||
| returned mappings to those that have been updated and also to | returned mappings to those that have been updated and also to | |||
| those that are missing. | those that are missing. | |||
| In response to the <getMappingsRequest> message the LoST Sync | In response to the <getMappingsRequest> message the LoST Sync | |||
| destination waits for the <getMappingsResponse> message. In case of | destination waits for the <getMappingsResponse> message. In case of | |||
| a successful response the LoST Sync destination stores the received | a successful response the LoST Sync destination stores the received | |||
| mappings and determines which mappings to replace. | mappings and determines which mappings to update. | |||
| 3.2. Behavior of the LoST Sync Source | 3.2. Behavior of the LoST Sync Source | |||
| When a LoST Sync source receives an empty <getMappingsRequest> | When a LoST Sync source receives an empty <getMappingsRequest> | |||
| message then all locally available mappings MUST be returned. | message then all locally available mappings MUST be returned. | |||
| When a LoST Sync source receives a <getMappingsRequest> message with | When a LoST Sync source receives a <getMappingsRequest> message with | |||
| one or multiple <exists> child element(s) then it MUST consult with | one or multiple <exists> child element(s) then it MUST consult with | |||
| the local mapping database to determine whether any of the mappings | the local mapping database to determine whether any of the mappings | |||
| of the client is stale and whether there are mappings locally that | of the client is stale and whether there are mappings locally that | |||
| skipping to change at page 12, line 16 ¶ | skipping to change at page 12, line 16 ¶ | |||
| The first example shows an empty <getMappingsRequest> message that | The first example shows an empty <getMappingsRequest> message that | |||
| would retrieve all locally stored mappings at the LoST Sync source. | would retrieve all locally stored mappings at the LoST Sync source. | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <getMappingsRequest xmlns="urn:ietf:params:xml:ns:lostsync1"/> | <getMappingsRequest xmlns="urn:ietf:params:xml:ns:lostsync1"/> | |||
| Figure 7: Example of empty <getMappingsRequest> message | Figure 7: Example of empty <getMappingsRequest> message | |||
| A further example request is shown in Figure 8 and the corresponding | A further example request is shown in Figure 8 and the corresponding | |||
| response is depicted in Figure 9. In this example a request is made | response is depicted in Figure 9. In this example the | |||
| for a specific mapping (with source="authoritative.bar.example" and | <getMappingsRequest> element contains information about the mapping | |||
| sourceId="7e3f40b098c711dbb6060800200c9a66") that is more recent than | that is locally available to the client inside the <mapping- | |||
| "2006-11-01T01:00:00Z" as well as any missing mapping. | fingerprint> element (with source="authoritative.bar.example", | |||
| sourceId="7e3f40b098c711dbb6060800200c9a66", and lastUpdated="2006- | ||||
| 11-01T01:00:00Z"). The query asks for mappings that are more recent | ||||
| than the available one as well as any missing mapping. | ||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <getMappingsRequest xmlns="urn:ietf:params:xml:ns:lostsync1"> | <getMappingsRequest xmlns="urn:ietf:params:xml:ns:lostsync1"> | |||
| <exists> | <exists> | |||
| <mapping-fingerprint source="authoritative.bar.example" | <mapping-fingerprint source="authoritative.bar.example" | |||
| sourceId="7e3f40b098c711dbb6060800200c9a66" | sourceId="7e3f40b098c711dbb6060800200c9a66" | |||
| lastUpdated="2006-11-01T01:00:00Z"> | lastUpdated="2006-11-01T01:00:00Z"> | |||
| </mapping-fingerprint> | </mapping-fingerprint> | |||
| </exists> | </exists> | |||
| </getMappingsRequest> | </getMappingsRequest> | |||
| skipping to change at page 14, line 45 ¶ | skipping to change at page 14, line 45 ¶ | |||
| 01T01:00:00Z" is requested to be deleted. Note that the 'expires' | 01T01:00:00Z" is requested to be deleted. Note that the 'expires' | |||
| attribute is required per schema definition but will be ignored in | attribute is required per schema definition but will be ignored in | |||
| processing the request on the receiving side. A sync source may want | processing the request on the receiving side. A sync source may want | |||
| to delete the mapping from its internal mapping database, but has to | to delete the mapping from its internal mapping database, but has to | |||
| remember which peers it has distributed this update to unless it has | remember which peers it has distributed this update to unless it has | |||
| other ways to ensure that databases do not get out of sync. | other ways to ensure that databases do not get out of sync. | |||
| 4.2. Behavior of the LoST Sync Destination | 4.2. Behavior of the LoST Sync Destination | |||
| When a LoST Sync destination receives a <pushMappingsRequest> message | When a LoST Sync destination receives a <pushMappingsRequest> message | |||
| then a newly received mapping M' MUST replace an existing mapping M | then the cache with the existing mappings is inspected to determine | |||
| if all of the following conditions hold: | whether the received mapping should lead to an update of an already | |||
| existing mapping, should create a new mapping in the cache, or should | ||||
| 1. M'.source equals M.source | be discarded. | |||
| 2. M'.sourceID' equals M.sourceID | A newly received mapping MUST update an existing one having the same | |||
| 3. M'.lastUpdated is greater than M.lastUpdated | 'source' and 'sourceId' and a more recent time in 'lastUpdated'. | |||
| If the received mapping M' does not update any existing mapping M | If the received mapping does not match with any existing mapping | |||
| then it MUST be added to the local cache as an independent mapping. | based on the 'source' and 'sourceId' then it MUST be added to the | |||
| local cache as an independent mapping. | ||||
| If a <pushMappingsRequest> message with an empty <mapping> element is | If a <pushMappingsRequest> message with an empty <mapping> element is | |||
| received then a corresponding mapping has to be determined based on | received then a corresponding mapping has to be determined based on | |||
| the 'source', 'sourceID' and 'lastUpdated' attributes. If a mapping | the 'source', and the 'sourceID'. | |||
| has been found then it MUST be deleted. If no mapping can be | ||||
| identified then an <errors> response MUST be returned that contains | If no mapping can be identified then an <errors> response MUST be | |||
| the <notDeleted> child element. The <notDeleted> element MAY carry a | returned that contains the <notDeleted> child element. The | |||
| <message> element and MUST contain the <mapping> element(s) that | <notDeleted> element MAY contain a 'message' attribute with an error | |||
| caused the error. | description used for debugging purposes. The <notDeleted> element | |||
| MUST contain the <mapping> element(s) that caused the error. | ||||
| The response to a <pushMappingsRequest> request is a | The response to a <pushMappingsRequest> request is a | |||
| <pushMappingsResponse> message. With this specification, a | <pushMappingsResponse> message. With this specification, a | |||
| successful response message returns no additional elements, whereas | successful response message returns no additional elements, whereas | |||
| an <errors> response is returned in the response message, if the | an <errors> response is returned in the response message, if the | |||
| request failed. Only the <badRequest>, <forbidden>, <internalError> | request failed. Only the <badRequest>, <forbidden>, <internalError> | |||
| or <serverTimeout> errors defined in Section 13.1 of [RFC5222], are | or <serverTimeout> errors defined in Section 13.1 of [RFC5222], are | |||
| used. The <redirect> and <warnings> messages are not used for this | used. The <redirect> and <warnings> messages are not used for this | |||
| query/response. | query/response. | |||
| skipping to change at page 15, line 39 ¶ | skipping to change at page 15, line 40 ¶ | |||
| several other nodes. This is unavoidable, but generally only imposes | several other nodes. This is unavoidable, but generally only imposes | |||
| a modest overhead. (It would be possible to create a spanning tree | 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 | in the same fashion as IP multicast, but the complexity does not seem | |||
| warranted, given the relatively low volume of data.) | warranted, given the relatively low volume of data.) | |||
| 4.3. Example | 4.3. Example | |||
| An example is shown in Figure 10. Image a LoST node that obtained | An example is shown in Figure 10. Image a LoST node that obtained | |||
| two new mappings identified as follows: | two new mappings identified as follows: | |||
| o source="authoritative.example" | o | |||
| sourceId="7e3f40b098c711dbb6060800200c9a66" lastUpdated="2008-11- | ||||
| 26T01:00:00Z" | ||||
| o source="authoritative.example" | source="authoritative.example" | |||
| sourceId="7e3f40b098c711dbb606011111111111" lastUpdated="2008-11- | sourceId="7e3f40b098c711dbb6060800200c9a66" | |||
| 01T01:00:00Z" | lastUpdated="2008-11-26T01:00:00Z" | |||
| o | ||||
| source="authoritative.example" | ||||
| sourceId="7e3f40b098c711dbb606011111111111" | ||||
| lastUpdated="2008-11-01T01:00:00Z" | ||||
| These two mappings have to be added to the peer's mapping database. | These two mappings have to be added to the peer's mapping database. | |||
| Additionally, the following mapping has to be deleted: | Additionally, the following mapping has to be deleted: | |||
| o source="nj.us.example" sourceId="123" lastUpdated="2008-11- | o source="nj.us.example" sourceId="123" lastUpdated="2008-11- | |||
| 01T01:00:00Z" | 01T01:00:00Z" | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <sync:pushMappings | <sync:pushMappings | |||
| skipping to change at page 18, line 4 ¶ | skipping to change at page 18, line 20 ¶ | |||
| <sync:notDeleted | <sync:notDeleted | |||
| message="Could not delete the indicated mapping." | message="Could not delete the indicated mapping." | |||
| xml:lang="en"> | xml:lang="en"> | |||
| <mapping source="nj.us.example" | <mapping source="nj.us.example" | |||
| sourceId="123" | sourceId="123" | |||
| lastUpdated="2008-11-01T01:00:00Z" | lastUpdated="2008-11-01T01:00:00Z" | |||
| expires="2008-11-01T01:00:00Z"/> | expires="2008-11-01T01:00:00Z"/> | |||
| </sync:notDeleted> | </sync:notDeleted> | |||
| </errors> | </errors> | |||
| Figure 12: Example <errors> Message | Figure 12: Example <errors> Message | |||
| 5. Transport | 5. Transport | |||
| LoST Sync needs an underlying protocol transport mechanism to carry | LoST Sync needs an underlying protocol transport mechanism to carry | |||
| requests and responses. This document uses HTTPS as a transport to | requests and responses. This document uses HTTPS as a transport to | |||
| exchange XML documents. No fallback to HTTP is provided. | exchange XML documents. No fallback to HTTP is provided. | |||
| When using HTTP-over-TLS [RFC2818], LoST Sync messages use the POST | When using HTTP-over-TLS [RFC2818], LoST Sync messages use the POST | |||
| method. Request MUST use the Cache-Control response directive "no- | method. Request MUST use the Cache-Control response directive "no- | |||
| cache". | cache". | |||
| All LoST Sync responses, including those indicating a LoST warning or | All LoST Sync responses, including those indicating a LoST warning or | |||
| error, are carried in 2xx responses, typically 200 (OK). Other 2xx | error, are carried in 2xx responses, typically 200 (OK). 3xx, 4xx and | |||
| responses, in particular 203 (Non-authoritative information) may be | 5xx HTTP response codes indicates that the request itself failed or | |||
| returned by HTTP caches that disregard the caching instructions. 3xx, | was redirected; these responses do not contain any LoST Sync XML | |||
| 4xx and 5xx HTTP response codes indicates that the HTTP request | elements. | |||
| itself failed or was redirected; these responses do not contain any | ||||
| LoST Sync XML elements. | ||||
| 6. RelaxNG | 6. RelaxNG | |||
| Note: In order to avoid copying pattern definitions from the LoST | Note: In order to avoid copying pattern definitions from the LoST | |||
| Relax NG schema [RFC5222] to this document we include it as | Relax NG schema [RFC5222] to this document we include it as | |||
| "lost.rng" (XML syntax) in the Relax NG schema below. | "lost.rng" (XML syntax) in the Relax NG schema below. | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <grammar ns="urn:ietf:params:xml:ns:lostsync1" | <grammar ns="urn:ietf:params:xml:ns:lostsync1" | |||
| skipping to change at page 22, line 29 ¶ | skipping to change at page 22, line 29 ¶ | |||
| \ / | \ / | |||
| C | C | |||
| Figure 13: Synchronization Configuration Example | Figure 13: Synchronization Configuration Example | |||
| Now, imagine that server A adds a new mapping. This mapping is | Now, imagine that server A adds a new mapping. This mapping is | |||
| uniquely identified by the combination of "source", "sourceid" and | uniquely identified by the combination of "source", "sourceid" and | |||
| "last updated". Assume that A would push this new mapping to B and | "last updated". Assume that A would push this new mapping to B and | |||
| C. When B obtained this new mapping it would find out that it has to | C. When B obtained this new mapping it would find out that it has to | |||
| distribute it to its peer C. C would also want to distribute the | distribute it to its peer C. C would also want to distribute the | |||
| mapping to B (and vice versa). If the originally mapping with the | mapping to B. If the original mapping with the "source", "sourceid" | |||
| "source", "sourceid" and "last updated" is not modified by either B | and "last updated" is not modified by either B or C then these two | |||
| or C then these two servers would recognize that they already possess | servers would recognize that they already possess the mapping and can | |||
| the mapping and can ignore the update. | ignore the update. | |||
| It is important that implementations MUST NOT modify mappings they | It is important that implementations MUST NOT modify mappings they | |||
| receive. An entity acting maliciously would, however, intentially | receive. An entity acting maliciously would, however, intentially | |||
| modify mappings or inject bogus mappings. To avoid the possibility | modify mappings or inject bogus mappings. To avoid the possibility | |||
| of an untrustworthy member claiming a coverage region that it is not | of an untrustworthy member claiming a coverage region that it is not | |||
| authorized for, any node introducing a new service boundary MUST sign | authorized for, authoritative mapping server MUST sign mappings they | |||
| the object by protecting the data with an XML digital signature | distribute using an XML digital signature | |||
| [W3C.REC-xmldsig-core-20020212]. A recipient MUST verify that the | [W3C.REC-xmldsig-core-20020212]. A recipient MUST verify that the | |||
| signing entity is indeed authorized to speak for that region. | signing entity is indeed authorized to speak for that region. In | |||
| Determining who can speak for a particular region is inherently | many cases, this will require an out-of-band agreement to be in place | |||
| difficult unless there is a small set of authorizing entities that | to agree on specific entities to take on this role. Determining who | |||
| participants in the mapping architecture can trust. Receiving | can speak for a particular region is inherently difficult unless | |||
| systems should be particularly suspicious if an existing coverage | there is a small set of authorizing entities that participants in the | |||
| region is replaced with a new one with a new mapping address. With | mapping architecture can trust. Receiving systems should be | |||
| this mechanism it is also possible to avoid the distribution of | particularly suspicious if an existing coverage region is replaced by | |||
| mappings that have been modified by servers forwarding mappings as | a new one that contains a different value in the <uri> element. With | |||
| part of the synchronization procedure. | digitially singed mappings mappings cannot be modified by | |||
| intermediate LoST servers. | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| This document defines a protocol for exchange of mapping information | This document defines a protocol for exchange of mapping information | |||
| between two entities. Hence, the operations described in this | between two entities. Hence, the protocol operations described in | |||
| document involve mutually-trusting LoST nodes. These nodes MUST | this document require authentication of neighboring nodes. | |||
| authenticate each other, using mechanisms such as HTTP Digest | ||||
| [RFC2617] over TLS, HTTP Basic [RFC2617] over TLS [RFC5246] or TLS | The LoST Sync client and servers MUST implement TLS and use TLS. | |||
| client and server certificates. Manual configuration for the setup | Which version(s) ought to be implemented will vary over time, and | |||
| of the peering relationships is required and hence the choice of the | depend on the widespread deployment and known security | |||
| security mechanisms used between the two entities is a deployment | vulnerabilities at the time of implementation. At the time of this | |||
| specific decision. In any case, TLS MUST be implemented and used. | writing, TLS version 1.2 [RFC5246] is the most recent version, but | |||
| TLS provides a secure communication channel, an integrity and | has very limited actual deployment, and might not be readily | |||
| confidentiality protected exchange of data with the help of the TLS | available in implementation toolkits. TLS version 1.0 [RFC2246] is | |||
| Record Layer, and prevents intermediaries to injecting bogus | the most widely deployed version, and will give the broadest | |||
| mappings. | interoperability. | |||
| An additional threat is caused by compromised or misconfigured LoST | An additional threat is caused by compromised or misconfigured LoST | |||
| servers. A denial of service could be the consequence of an injected | servers. A denial of service could be the consequence of an injected | |||
| mapping. If the mapping data contains an URL that does not exist | mapping. If the mapping data contains an URL that does not exist | |||
| then emergency services for the indicated area are not reachable. If | then emergency services for the indicated area are not reachable. If | |||
| all mapping data contains URLs that point to a single PSAP (rather | all mapping data contains URLs that point to a single PSAP (rather | |||
| than a large number of PSAPs) then this PSAP is likely to experience | than a large number of PSAPs) then this PSAP is likely to experience | |||
| overload conditions. If the mapping data contains a URL that points | overload conditions. If the mapping data contains a URL that points | |||
| to a server controlled by the adversary itself then it might | to a server controlled by the adversary itself then it might | |||
| impersonate PSAPs. Section 7 discusses this issue and recommends | impersonate PSAPs. | |||
| individually signed mappings. For unusal changes to the mapping | ||||
| database approval by an expert may be required before any mappings | Section 7 discusses this security threat and mandates signed | |||
| are installed. | mappings. For unusal changes to the mapping database approval by a | |||
| system administrator of the emergency services infrastructure (or a | ||||
| similar expert) may be required before any mappings are installed. | ||||
| 9. IANA Considerations | 9. IANA Considerations | |||
| 9.1. Content-type registration for 'application/lostsync+xml' | 9.1. Content-type registration for 'application/lostsync+xml' | |||
| This specification requests the registration of a new MIME type | This specification requests the registration of a new MIME type | |||
| according to the procedures of RFC 4288 [RFC4288] and guidelines in | according to the procedures of RFC 4288 [RFC4288] and guidelines in | |||
| RFC 3023 [RFC3023]. | RFC 3023 [RFC3023]. | |||
| Type name: application | Type name: application | |||
| Subtype name: lostsync+xml | Subtype name: lostsync+xml | |||
| Required parameters: none | Required parameters: none | |||
| Optional parameters: charset | Optional parameters: charset | |||
| Indicates the character encoding of enclosed XML. | Indicates the character encoding of enclosed XML. | |||
| Encoding considerations: Identical to those of "application/xml" as | Encoding considerations: Identical to those of "application/xml" as | |||
| described in RFC 3023 [RFC3023], Section 3.2. | described in [RFC3023], Section 3.2. | |||
| Security considerations: This content type is designed to carry LoST | Security considerations: This content type is designed to carry LoST | |||
| Synchronization protocol payloads described in RFCXXXX. The | Synchronization protocol payloads and the security considerations | |||
| security considerations section of RFCXXXX is applicable. In | section of RFCXXXX is applicable. In addition, as this media type | |||
| addition, as this media type uses the "+xml" convention, it shares | uses the "+xml" convention, it shares the same security | |||
| the same security considerations as described in RFC 3023 | considerations as described in [RFC3023], Section 10. [NOTE TO | |||
| [RFC3023], Section 10. [NOTE TO IANA/RFC-EDITOR: Please replace | IANA/RFC-EDITOR: Please replace XXXX with the RFC number of this | |||
| XXXX with the RFC number of this specification.] | specification.] | |||
| Interoperability considerations: None | Interoperability considerations: None | |||
| Published specification: RFCXXXX [NOTE TO IANA/RFC-EDITOR: Please | Published specification: RFCXXXX [NOTE TO IANA/RFC-EDITOR: Please | |||
| replace XXXX with the RFC number of this specification.] | replace XXXX with the RFC number of this specification.] | |||
| Applications which use this media type: Emergency and Location-based | Applications which use this media type: Emergency and Location-based | |||
| Systems | Systems | |||
| Additional information: | Additional information: | |||
| skipping to change at page 26, line 26 ¶ | skipping to change at page 26, line 26 ¶ | |||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" | |||
| "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> | "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> | |||
| <html xmlns="http://www.w3.org/1999/xhtml"> | <html xmlns="http://www.w3.org/1999/xhtml"> | |||
| <head> | <head> | |||
| <meta http-equiv="content-type" | <meta http-equiv="content-type" | |||
| content="text/html;charset=iso-8859-1"/> | content="text/html;charset=iso-8859-1"/> | |||
| <title>LoST Synchronization Namespace</title> | <title>LoST Synchronization Namespace</title> | |||
| </head> | </head> | |||
| <body> | <body> | |||
| <h1>Namespace for LoST server synchronization</h1> | <h1>Namespace for LoST server synchronization</h1> | |||
| <h2>urn:ietf:params:xml:ns:lost1:sync</h2> | <h2>urn:ietf:params:xml:ns:lostsync1</h2> | |||
| <p>See <a href="[URL of published RFC]">RFCXXXX | <p>See <a href="[URL of published RFC]">RFCXXXX | |||
| [NOTE TO IANA/RFC-EDITOR: | [NOTE TO IANA/RFC-EDITOR: | |||
| Please replace XXXX with the RFC number of this | Please replace XXXX with the RFC number of this | |||
| specification.]</a>.</p> | specification.]</a>.</p> | |||
| </body> | </body> | |||
| </html> | </html> | |||
| END | END | |||
| 10. Acknowledgments | 10. Acknowledgments | |||
| Robins George, Cullen Jennings, Karl Heinz Wolf, Richard Barnes, | Robins George, Cullen Jennings, Karl Heinz Wolf, Richard Barnes, | |||
| Mayutan Arumaithurai, Alexander Mayrhofer, and Andrew Newton provided | Mayutan Arumaithurai, Alexander Mayrhofer, and Andrew Newton provided | |||
| helpful input. Jari Urpalainen assisted with the Relax NG schema. | helpful input. Jari Urpalainen assisted with the Relax NG schema. | |||
| We would also like to thank our PROTO shepherd Roger Marshall for his | We would also like to thank our document shepherd Roger Marshall for | |||
| help with the document. | his help with the document. | |||
| We would like to particularly thank Andrew Newton for his timely and | We would like to particularly thank Andrew Newton for his timely and | |||
| valuable review of the XML-related content. | valuable review of the XML-related content. | |||
| We would like to thank Robert Sparks for his AD review feedback, | We would like to thank Robert Sparks for his AD review feedback, | |||
| Bjoern Hoehrmann for his media type review, and Julian Reschke for | Bjoern Hoehrmann for his media type review, and Julian Reschke and | |||
| his applications area review. | Martin Duerst for their applications area reviews. | |||
| 11. References | 11. References | |||
| 11.1. Normative References | 11.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | ||||
| RFC 2246, January 1999. | ||||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
| Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
| Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
| [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | |||
| Leach, P., Luotonen, A., and L. Stewart, "HTTP | Leach, P., Luotonen, A., and L. Stewart, "HTTP | |||
| Authentication: Basic and Digest Access Authentication", | Authentication: Basic and Digest Access Authentication", | |||
| RFC 2617, June 1999. | RFC 2617, June 1999. | |||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
| End of changes. 27 change blocks. | ||||
| 85 lines changed or deleted | 99 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||