draft-ietf-ecrit-lost-servicelistboundary-01.txt | draft-ietf-ecrit-lost-servicelistboundary-02.txt | |||
---|---|---|---|---|
ECRIT K. Wolf | ECRIT K. Wolf | |||
Internet-Draft nic.at | Internet-Draft nic.at | |||
Expires: May 13, 2010 November 9, 2009 | Expires: August 13, 2010 February 9, 2010 | |||
Location-to-Service Translation Protocol (LoST) Extension: | Location-to-Service Translation Protocol (LoST) Extension: | |||
ServiceListBoundary | <serviceListBoundary> | |||
draft-ietf-ecrit-lost-servicelistboundary-01 | draft-ietf-ecrit-lost-servicelistboundary-02 | |||
Abstract | Abstract | |||
LoST maps service identifiers and location information to service | LoST maps service identifiers and location information to service | |||
contact URIs. If a LoST client wants to discover available services | contact URIs. If a LoST client wants to discover available services | |||
for a particular location, it will perform a <listServicesByLocation> | for a particular location, it will perform a <listServicesByLocation> | |||
query to the LoST server. However, the response from the LoST server | query to the LoST server. However, the LoST server, in its response, | |||
does not provide information about the geographical region for which | does not provide context information, that is, it does not provide | |||
the returned service list is valid. Therefore, this document | any additional information about the geographical region for which | |||
proposes a ServiceListBoundary to assist the client to not miss a | the returned list of services is considered valid within. Therefore, | |||
change in available services when moving. | this document proposes a <serviceListBoundary> element that returns a | |||
local context along with the list of services returned, in order to | ||||
assist the client to not miss a change in available services when | ||||
moving. | ||||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted to IETF in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at page 1, line 43 | skipping to change at page 1, line 46 | |||
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." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on May 13, 2010. | This Internet-Draft will expire on August 13, 2010. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | ||||
Copyright (c) 2009 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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the BSD License. | described in the BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. LoST Extensions . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. LoST Extensions . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Extensions to <ListServiceByLocation> . . . . . . . . . . 4 | 3.1. Extensions to <listServicesByLocation> . . . . . . . . . . 4 | |||
3.2. Retrieving the serviceList Boundary via | 3.2. Retrieving the <serviceListBoundary> via | |||
getServiceListBoundary . . . . . . . . . . . . . . . . . . 6 | <getServiceListBoundary> . . . . . . . . . . . . . . . . . 6 | |||
3.3. Service List Boundary . . . . . . . . . . . . . . . . . . 7 | 3.3. <serviceListBoundary> . . . . . . . . . . . . . . . . . . 7 | |||
3.4. Implementation Considerations . . . . . . . . . . . . . . 8 | 3.4. Implementation Considerations . . . . . . . . . . . . . . 8 | |||
3.4.1. Server Side . . . . . . . . . . . . . . . . . . . . . 8 | 3.4.1. Server Side . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.4.2. Client Side . . . . . . . . . . . . . . . . . . . . . 8 | 3.4.2. Client Side . . . . . . . . . . . . . . . . . . . . . 9 | |||
4. Security & Privacy Considerations . . . . . . . . . . . . . . 9 | 4. Security & Privacy Considerations . . . . . . . . . . . . . . 9 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
5.1. Relax NG Schema Registration . . . . . . . . . . . . . . . 9 | 5.1. Relax NG Schema Registration . . . . . . . . . . . . . . . 9 | |||
5.2. Namespace Registration . . . . . . . . . . . . . . . . . . 11 | 5.2. Namespace Registration . . . . . . . . . . . . . . . . . . 12 | |||
6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 12 | 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
7. Normative References . . . . . . . . . . . . . . . . . . . . . 12 | 7. Normative References . . . . . . . . . . . . . . . . . . . . . 12 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 13 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
1. Introduction | 1. Introduction | |||
Location based service providers as well as Public Safety Answering | Location based service providers as well as Public Safety Answering | |||
Points (PSAPs) only serve a specific geographic region. Therefore | Points (PSAPs) only serve a specific geographic region. Therefore | |||
the LoST protocol [RFC5222] defines the ServiceBoundary, which | the LoST protocol [RFC5222] defines the Service Boundary, which | |||
indicates the service region for a specific service URL. However, | indicates the service region for a specific service URL. However, | |||
not all services are available everywhere. Clients can discover | not all services are available everywhere. Clients can discover | |||
available services for a particular location by the | available services for a particular location by the | |||
<listServicesByLocation> query in LoST. The LoST server returns a | <listServicesByLocation> query in LoST. The LoST server returns a | |||
list of services that are available at this particular location. But | list of services that are available at this particular location. But | |||
the server does not inform the client for which geographical region | the server does not inform the client as to the extent of coverage | |||
the returned service list is valid. This may lead to the situation | for which geographical region the returned Service List is valid. | |||
where a client initially discoveres all available services by the | This may lead to the situation where a client initially discovers all | |||
<listServicesByLocation> query, and then moves to a different | available services by the <listServicesByLocation> query, and then | |||
location (while refreshing the service mappings), but without | moves to a different location (while refreshing the service | |||
noticing the availability of other services. The following imaginary | mappings), but without noticing the availability of other services. | |||
example illustrates the problem for emergency calling: | The following imaginary example illustrates the problem for emergency | |||
calling: | ||||
The client is powered-up, does location determination (resulting in | The client is powered-up, does location determination (resulting in | |||
location A) and performs an initial <listServicesByLocation> query | location A) and performs an initial <listServicesByLocation> query | |||
with location A requesting urn:services:sos. | with location A requesting urn:services:sos. | |||
The LoST server returns the following services list: | The LoST server returns the following list of services: | |||
urn:service:sos.police | urn:service:sos.police | |||
urn:service:sos.ambulance | urn:service:sos.ambulance | |||
urn:service:sos.fire | urn:service:sos.fire | |||
The client does the initial LoST mapping and discovers the | The client does the initial LoST mapping and discovers the | |||
dialstrings for each service. Then the client moves, refreshing the | dialstrings for each service. Then the client moves, refreshing the | |||
individual service mappings when necessary as told by the | individual service mappings when necessary as told by the Service | |||
ServiceBoundary. However, when arriving in location B (close to a | Boundary. However, when arriving in location B (close to a | |||
mountain), service sos.mountainrescue is available, which was not | mountain), service sos.mountainrescue is available, which was not | |||
available in location A. Nevertheless, the client does not detect | available in location A. Nevertheless, the client does not detect | |||
this, because only the mapping of the initially discovered services | this, because only the mapping of the initially discovered services | |||
(police, ambulance, fire) are refreshed. Consequently, the | (police, ambulance, fire) are refreshed. Consequently, the | |||
dialstring for the mountain rescue is not known by the client, and | dialstring for the mountain rescue is not known by the client. | |||
the emergency call to the mountain rescue service will certainly | Hence, the client is unable to recognize an emergency call when the | |||
fail. | user enters the dialstring of the mountain rescue and thus the | |||
emergency call may fail altogether. | ||||
Note that the ServiceBoundary (service region for an individual | Note that the Service Boundary (service region for an individual | |||
service) cannot be considered as an indicator for the region a | service) cannot be considered as an indicator for the region a | |||
specific service list is valid for. The service list may even change | specific Service List is valid for. The Service List may even change | |||
within the ServiceBoundary of another service. For example, the | within the Service Boundary of another service. For example, the | |||
ambulance mapping is valid for a whole state, but for a part of the | ambulance mapping is valid for a whole state, but for a part of the | |||
state there is an additional mountain rescue service. | state there is an additional mountain rescue service. | |||
Consequently, there are two ways to tackle this issue: | Consequently, there are two ways to tackle this issue: | |||
o clients continuously ask for the Service List, although it may not | ||||
o clients continuously ask for the service list, although it may not | ||||
have changed | have changed | |||
o a boundary information (telling the client that the service list | o a boundary information (telling the client that the Service List | |||
does not change inside this area) | does not change inside this area) | |||
Since the LoST protocol has the ServiceBoundary concept in order to | Since the LoST protocol employs the Service Boundary concept in order | |||
avoid that clients continuously try to refresh the mapping of a | to avoid having clients continuously trying to refresh the mapping of | |||
specific service, a ServiceListBoundary would provide a similar | a specific service, a Service List Boundary mechanism would provide | |||
mechanism for service lists. | similar advantages for Service Lists. | |||
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]. | |||
3. LoST Extensions | 3. LoST Extensions | |||
This chapter describes the necessary modifications to the LoST | This chapter describes the necessary modifications to the LoST | |||
protocol in order to support the proposed ServiceListBoundary in a | protocol in order to support the proposed <serviceListBoundary> in a | |||
similar way as the ServiceBoundary. | similar way as the <serviceBoundary>. | |||
3.1. Extensions to <ListServiceByLocation> | 3.1. Extensions to <listServicesByLocation> | |||
The query <listServicesByLocation> may contain an additional | The query <listServicesByLocation> may contain an additional | |||
serviceListBoundary element to request the boundary for the service | <serviceListBoundaryRequest> element to additionally request the | |||
list, either by value or by reference. In the example below the | boundary for the service list based on the location provided, with | |||
value of the serviceListBoundary element ist set to "value": | the resulting location for the list to be presented either in a by | |||
value or by reference form. In the example below the value of the | ||||
<serviceListBoundaryRequest> element is set to "value": | ||||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<listServicesByLocation | <listServicesByLocation | |||
xmlns="urn:ietf:params:xml:ns:lost1" | xmlns="urn:ietf:params:xml:ns:lost1" | |||
xmlns:gml="http://www.opengis.net/gml" | xmlns:gml="http://www.opengis.net/gml" | |||
xmlns:slb="urn:ietf:params:xml:schema:lost1:slb" | xmlns:slb="urn:ietf:params:xml:schema:lost1:slb" | |||
recursive="true"> | recursive="true"> | |||
<location id="mylocation" profile="civic"> | <location id="5415203asdf548" profile="civic"> | |||
<civicAddress | <civicAddress xml:lang="en" | |||
xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"> | xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"> | |||
<country>AT</country> | <country>AT</country> | |||
<A1>Lower Austria</A1> | <A1>Lower Austria</A1> | |||
<A3>Wolfsthal</A3> | <A2>Bruck an der Leitha</A2> | |||
<RD>Hauptplatz</RD> | <A3>Wolfsthal</A3> | |||
<HNO>1</HNO> | <RD>Hauptplatz</RD> | |||
<PC>2412</PC> | <HNO>1</HNO> | |||
</civicAddress> | <PC>2412</PC> | |||
</location> | </civicAddress> | |||
<service>urn:service:sos</service> | </location> | |||
<slb:serviceListBoundary>value</slb:serviceListBoundary> | <service>urn:service:sos</service> | |||
</listServicesByLocation> | <slb:serviceListBoundaryRequest>value</slb:serviceListBoundaryRequest> | |||
</listServicesByLocation> | ||||
A possible response is shown below: | A possible response is shown below: | |||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<listServicesByLocationResponse | <listServicesByLocationResponse | |||
xmlns="urn:ietf:params:xml:ns:lost1"> | xmlns="urn:ietf:params:xml:ns:lost1"> | |||
xmlns:slb="urn:ietf:params:xml:schema:lost1:slb" | xmlns:slb="urn:ietf:params:xml:schema:lost1:slb" | |||
<serviceList expires="2010-01-01T00:00:00Z"> | <serviceList expires="2010-01-01T00:00:00Z"> | |||
urn:service:sos.ambulance | urn:service:sos.ambulance | |||
urn:service:sos.fire | urn:service:sos.fire | |||
urn:service:sos.gas | urn:service:sos.gas | |||
urn:service:sos.mountain | urn:service:sos.mountain | |||
urn:service:sos.poison | urn:service:sos.poison | |||
urn:service:sos.police | urn:service:sos.police | |||
</serviceList> | </serviceList> | |||
<path> | <path> | |||
<via source="resolver.example"/> | <via source="resolver.example"/> | |||
<via source="authoritative.example"/> | <via source="authoritative.example"/> | |||
</path> | </path> | |||
<locationUsed id="mylocation"/> | <locationUsed id="5415203asdf548"/> | |||
<slb:serviceListBoundary profile="civic"> | <slb:serviceListBoundary profile="civic"> | |||
<civicAddress | <civicAddress xml:lang="en" | |||
xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"> | xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"> | |||
<country>AT</country> | <country>AT</country> | |||
<A1>Lower Austria</A1> | <A1>Lower Austria</A1> | |||
</civicAddress> | </civicAddress> | |||
</slb:serviceListBoundary> | </slb:serviceListBoundary> | |||
</listServicesByLocationResponse> | ||||
This response above indicates that the service list is valid for | </listServicesByLocationResponse> | |||
This response above indicates that the Service List is valid for | ||||
Lower Austria. The <listServicesByLocation> request has to be | Lower Austria. The <listServicesByLocation> request has to be | |||
repeated by the client only when moving out of Lower Austria. | repeated by the client only when moving out of Lower Austria. | |||
However, the mappings of the services itself may have other service | However, the mappings of the services itself may have other service | |||
boundaries. Additionally, the expires attribute indicates the | boundaries. Additionally, the expires attribute indicates the | |||
absolute time when this service list becomes invalid. | absolute time when this Service List becomes invalid. | |||
The boundary can also be requested by reference when setting the | The boundary can also be requested by reference when setting the | |||
attribute serviceListBoundary to "reference". Then the response | value of the <serviceListBoundaryRequest> element to "reference". | |||
contains a serviceListBoundaryReference element, as shown below. | Then the response contains a <serviceListBoundaryReference> element, | |||
as shown below. | ||||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<listServicesByLocationResponse | <listServicesByLocationResponse | |||
xmlns="urn:ietf:params:xml:ns:lost1"> | xmlns="urn:ietf:params:xml:ns:lost1"> | |||
xmlns:slb="urn:ietf:params:xml:schema:lost1:slb" | xmlns:slb="urn:ietf:params:xml:schema:lost1:slb" | |||
<serviceList expires="2010-01-01T00:00:00Z"> | <serviceList expires="2010-01-01T00:00:00Z"> | |||
urn:service:sos.ambulance | urn:service:sos.ambulance | |||
urn:service:sos.fire | urn:service:sos.fire | |||
urn:service:sos.gas | urn:service:sos.gas | |||
urn:service:sos.mountain | urn:service:sos.mountain | |||
urn:service:sos.poison | urn:service:sos.poison | |||
urn:service:sos.police | urn:service:sos.police | |||
</serviceList> | </serviceList> | |||
<path> | <path> | |||
<via source="resolver.example"/> | <via source="resolver.example"/> | |||
<via source="authoritative.example"/> | <via source="authoritative.example"/> | |||
</path> | </path> | |||
<locationUsed id="mylocation"/> | <locationUsed id="5415203asdf548"/> | |||
<serviceListBoundaryReference | <serviceListBoundaryReference | |||
source="authoritative.example" | source="authoritative.example" | |||
serviceListKey="123567890123567890123567890" /> | serviceListKey="123567890123567890123567890" /> | |||
</listServicesByLocationResponse> | </listServicesByLocationResponse> | |||
3.2. Retrieving the serviceList Boundary via getServiceListBoundary | 3.2. Retrieving the <serviceListBoundary> via <getServiceListBoundary> | |||
In order to retrieve the boundary corresponding a specific | In order to retrieve the boundary corresponding a specific | |||
serviceListKey, the client issues a <getServiceListBoundary> request, | 'serviceListKey', the client issues a <getServiceListBoundary> | |||
similar to the <getServiceBoundary> request. | request to the server identified in the 'source' attribute of the | |||
<serviceListBoundaryReference> element, similar to the | ||||
<getServiceBoundary> request. | ||||
An example is shown below: | An example is shown below: | |||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<getServiceListBoundary xmlns="urn:ietf:params:xml:ns:lost1" | <getServiceListBoundary xmlns="urn:ietf:params:xml:ns:lost1" | |||
serviceListKey="123567890123567890123567890"/> | serviceListKey="123567890123567890123567890"/> | |||
The LoST server response is shown below: | The LoST server response is shown below: | |||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<getServiceListBoundaryResponse xmlns="urn:ietf:params:xml:schema:lost1:slb"> | <getServiceListBoundaryResponse xmlns="urn:ietf:params:xml:schema:lost1:slb"> | |||
<serviceListBoundary profile="civic" expires="2010-01-01T00:00:00Z"> | <serviceListBoundary profile="civic" expires="2010-01-01T00:00:00Z"> | |||
<civicAddress | <civicAddress xml:lang="en" | |||
xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"> | xmlns="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"> | |||
<country>AT</country> | <country>AT</country> | |||
<A1>Lower Austria</A1> | <A1>Lower Austria</A1> | |||
</civicAddress> | </civicAddress> | |||
</serviceListBoundary> | </serviceListBoundary> | |||
<path> | <path> | |||
<via source="resolver.example"/> | <via source="resolver.example"/> | |||
<via source="authoritative.example"/> | <via source="authoritative.example"/> | |||
</path> | </path> | |||
</getServiceListBoundaryResponse> | </getServiceListBoundaryResponse> | |||
The serviceListKey uniquely identifies a serviceListBoundary as the | The 'serviceListKey' uniquely identifies a Service List Boundary as | |||
key does for the service boundary (see Section 5.6 in RFC 5222). | the 'key' does for the service boundary (see Section 5.6 in RFC | |||
Therefore the serviceListKey is a random token with at least 128 bits | 5222). Therefore the 'serviceListKey' is a random token with at | |||
of entropy and can be assumed globally unique. Whenever the boundary | least 128 bits of entropy and can be assumed globally unique. | |||
changes, a new serviceListKey MUST be assigned. | Whenever the boundary changes, a new 'serviceListKey' MUST be | |||
assigned. | ||||
Note: since LoST does not define an attribute to indicate which | Note: since LoST does not define an attribute to indicate which | |||
profile the clients understands in a <getServiceListBoundary> | profile the clients understands in a <getServiceListBoundary> | |||
request, this document also does not define one for the | request, this document also does not define one for the | |||
<getServiceListBoundary> request. | <getServiceListBoundary> request. | |||
3.3. Service List Boundary | 3.3. <serviceListBoundary> | |||
The service list boundary indicates a region within which all | The <serviceListBoundary> information that gets returned, indicates | |||
<listServicesByLocation> queries with the same service identifiers | the geographic region in which all the service identifiers returned | |||
result in the same serviceList. A service list boundary may consist | from a <serviceList> element are the same, within a | |||
<listServicesByLocation> query. A <serviceListBoundary> may consist | ||||
of geometric shapes (both in civic and geodetic location format), and | of geometric shapes (both in civic and geodetic location format), and | |||
may be non-contiguous, like the service boundary. | may be non-contiguous, like the Service Boundary. | |||
The mapping of the specific services within the service list boundary | The mapping of the specific services within the Service List Boundary | |||
may be different at different locations. | may be different at different locations. | |||
The server may return the boundary information in multiple profiles, | The server may return the boundary information in multiple profiles, | |||
but has to use at least one profile that the client used in the | but has to use at least one profile that the client used in the | |||
request in order to ensure that the client is able to process the | request in order to ensure that the client is able to process the | |||
boundary information. | boundary information. | |||
There is no need to include boundary information to a | There is no need to include boundary information to a | |||
<listServicesResponse>. <ListServices> requests are purely for | <listServicesResponse>. <ListServices> requests are purely for | |||
diagnostic purposes and do not contain location information at all, | diagnostic purposes and do not contain location information at all, | |||
so no boundary information is reasonable. | so no boundary information is reasonable. | |||
Also note that the serviceListBoundary is optional and the LoST | Also note that the <serviceListBoundary> is optional and the LoST | |||
server may return it or not based on its local policy - like it is | server may return it or not based on its local policy - like it is | |||
the case with the service boundary. However, especially for | the case with the Service Boundary. However, especially for | |||
emergency services, the serviceListBoundary might be crucial to | emergency services, the <serviceListBoundary> might be crucial to | |||
ensure that moving clients do not miss changes in the available | ensure that moving clients do not miss changes in the available | |||
services. | services. | |||
3.4. Implementation Considerations | 3.4. Implementation Considerations | |||
The subsections below discuss implementations issues for the LoST | The subsections below discuss implementation issues for the LoST | |||
server and client for the serviceListBoundary support. | server and client for the serviceListBoundary support. | |||
3.4.1. Server Side | 3.4.1. Server Side | |||
The mapping architecture and framework [RFC5582] describes that each | The mapping architecture and framework [RFC5582] describes that each | |||
tree announces its coverage region (for one type of service, e.g. | tree announces its coverage region (for one type of service, e.g. | |||
sos.police) to one or more forest guides. Forest guides peer with | sos.police) to one or more forest guides. Forest guides peer with | |||
each other and synchronize their data. Hence, a forest guide has | each other and synchronize their data. Hence, a forest guide has | |||
sufficient knowledge (it knows all the services and their coverage | sufficient knowledge (it knows all the services and their coverage | |||
regions) to answer a listServicesByLocation query and additionally | regions) to answer a <listServicesByLocation> query and additionally | |||
add the serviceListBoundary as well. | add the <serviceListBoundary> as well. | |||
The calculation of the largest possible area for which the service | The calculation of the largest possible area for which the Service | |||
list stays the same might be a complex task. An alternative would be | List stays the same might be a complex task. An alternative would be | |||
to return smaller areas that are easier to compute. In such a case | to return smaller areas that are easier to compute. In such a case | |||
some unneeded queries to the LoST server are the consequence, but | some unneeded queries to the LoST server are the consequence, but | |||
still the main purpose of the serviceListBoundary is achieved: Never | still the main purpose of the <serviceListBoundary> is achieved: | |||
miss a change of available services. So a reasonable trade-off | Never miss a change of available services. So a reasonable trade-off | |||
between the effort to generate the boundary information and the saved | between the effort to generate the boundary information and the saved | |||
queries to the LoST server has to be considered. | queries to the LoST server has to be considered. | |||
Probably for some countries the county (or disrict, canton, state, | Probably for some countries the county (or disrict, canton, state, | |||
...) borders would be suitable as serviceListBoundary. Some | ...) borders would be suitable as <serviceListBoundary>. Some | |||
neighbouring counties may have implemented different services while a | neighbouring counties may have implemented different services while a | |||
listServicesByLocation query in other neighbouring counties still | <listServicesByLocation> query in other neighbouring counties still | |||
results in the same serviceList. So when moving across a county | results in the same Service List. So when moving across a county | |||
border, it is at least ensured, that every device fetches a new | border, it is at least ensured, that every device fetches a new | |||
service list from the LoST server. | Service List from the LoST server. | |||
Other countries might have different structures and the generation of | Other countries might have different structures and the generation of | |||
the serviceListBoundary might follow other rules as long as it is | the <serviceListBoundary> might follow other rules as long as it is | |||
ensured that a client is able to notice any change in the service | ensured that a client is able to notice any change in the Service | |||
list when moving. | List when moving. | |||
3.4.2. Client Side | 3.4.2. Client Side | |||
A mobile client that already implements LoST and evaluates the | A mobile client that already implements LoST and evaluates the | |||
serviceBoundary has almost everything that is needed to make use of | <serviceBoundary> has almost everything that is needed to make use of | |||
the serviceListBoundary. Since the integration into LoST follows the | the <serviceListBoundary>. Since the integration into LoST follows | |||
concept of the serviceBoundary (and also makes use of the same | the concept of the <serviceBoundary> (and also makes use of the same | |||
location profiles), just the additional serviceListBoundary has to be | location profiles), just the additional <serviceListBoundary> has to | |||
evaluated. Whenever moving outside a serviceListBoundary, the client | be evaluated. Whenever moving outside a <serviceListBoundary>, the | |||
must perform a new listServicesByLocation query with the new location | client must perform a new <listServicesByLocation> query with the new | |||
information in order to determine a change in available services. | location information in order to determine a change in available | |||
services. | ||||
4. Security & Privacy Considerations | 4. Security & Privacy Considerations | |||
Security considerations are discussed in [RFC5222]. | Security considerations for LoST are discussed in RFC5222. This | |||
document extends LoST to also carry Service List Boundaries (and | ||||
requests for them). These Service List Boundaries are calculated by | ||||
the server based on the individual Service Boundaries and sent to | ||||
clients in case the local policy allows this. Therefore it is | ||||
generally considered to have the same level of sensitivity as for the | ||||
Service Boundary and thus the same access control and confidentiality | ||||
requirements as the base LoST protocol. As a result, the security | ||||
measures incorporated in the base LoST specification provide | ||||
sufficient protection for LoST messages that use the Service List | ||||
Boundary extension. | ||||
5. IANA Considerations | 5. IANA Considerations | |||
This document requests two actions by IANA: a XML schema registration | This document requests two actions by IANA: a XML schema registration | |||
and namespace registration, according to the description in the | and namespace registration, according to the description in the | |||
following sections. | following sections. | |||
5.1. Relax NG Schema Registration | 5.1. Relax NG Schema Registration | |||
This document requests registration of the following Relax NG Schema | This document requests registration of the following Relax NG Schema | |||
skipping to change at page 9, line 30 | skipping to change at page 10, line 4 | |||
5.1. Relax NG Schema Registration | 5.1. Relax NG Schema Registration | |||
This document requests registration of the following Relax NG Schema | This document requests registration of the following Relax NG Schema | |||
to the IETF XML Registry [RFC3688]: | to the IETF XML Registry [RFC3688]: | |||
URI: urn:ietf:params:xml:schema:lost1:slb | URI: urn:ietf:params:xml:schema:lost1:slb | |||
Registrant Contact: IETF ECRIT Working Group, Karl Heinz Wolf | Registrant Contact: IETF ECRIT Working Group, Karl Heinz Wolf | |||
(karlheinz.wolf@nic.at) | (karlheinz.wolf@nic.at) | |||
Relax NG Schema: | Relax NG Schema: | |||
BEGIN | BEGIN | |||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<grammar ns="urn:ietf:params:xml:ns:lost1:slb" | ||||
xmlns="http://relaxng.org/ns/structure/1.0" | ||||
xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" | ||||
xmlns:ls="urn:ietf:params:xml:ns:lost1" | ||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> | ||||
<div xmlns:slb="urn:ietf:params:xml:schema:lost1:slb"> | ||||
<ls:listServicesByLocation> | ||||
... | ||||
... | ||||
<a:documentation> | ||||
Allows requesting the serviceListBoundary by reference or by value | ||||
</a:documentation> | ||||
<define name="serviceListBoundary"> | ||||
<element name="serviceListBoundary"> | ||||
<ref name="slb:serviceListBoundary"/> | ||||
<choice> | ||||
<value>value</value> | ||||
<value>reference</value> | ||||
</choice> | ||||
</element> | ||||
</define> | ||||
</ls:listServicesByLocation> | ||||
</div> | ||||
<div xmlns:slb="urn:ietf:params:xml:schema:lost1:slb"> | ||||
<ls:listServicesByLocationResponse> | ||||
... | ||||
... | ||||
<a:documentation> | ||||
Returns the serviceListBoundary by Reference | ||||
</a:documentation> | ||||
<define name="serviceListBoundaryReference"> | ||||
<element name="serviceListBoundaryReference"> | ||||
<ref name="slb:serviceListBoundaryReference"/> | ||||
<attribute name="source"/> | ||||
<attribute name="serviceListKey"/> | ||||
</element> | ||||
</define> | ||||
</ls:listServicesByLocationResponse> | ||||
</div> | ||||
<div xmlns:slb="urn:ietf:params:xml:schema:lost1:slb"> | ||||
<ls:listServicesByLocationResponse> | ||||
... | ||||
... | ||||
<a:documentation> | ||||
Returns the serviceListBoundary by Value | ||||
</a:documentation> | ||||
<define name="serviceListBoundary"> | <?xml version="1.0" encoding="UTF-8"?> | |||
<element name="serviceListBoundary"> | <grammar xmlns="urn:ietf:params:xml:ns:lost1" | |||
<ref name="slb:serviceListBoundary"/> | xmlns:slb="urn:ietf:params:xml:ns:lost1:slb"> | |||
<attribute name="profile"/> | ||||
<ref name="ls:locationInformation"/> | ||||
</element> | ||||
</define> | ||||
</ls:listServicesByLocationResponse> | ||||
</div> | <include href="lost.rng"> | |||
<!-- redefinition of LoST elements --> | ||||
<div xmlns:slb="urn:ietf:params:xml:schema:lost1:slb"> | <start> | |||
<choice> | ||||
<ref name="findService"/> | ||||
<ref name="listServices"/> | ||||
<ref name="listServicesByLocation"/> | ||||
<ref name="getServiceBoundary"/> | ||||
<ref name="findServiceResponse"/> | ||||
<ref name="listServicesResponse"/> | ||||
<ref name="listServicesByLocationResponse"/> | ||||
<ref name="getServiceBoundaryResponse"/> | ||||
<ref name="errors"/> | ||||
<ref name="redirect"/> | ||||
<ref name="slb:getServiceListBoundary"/> | ||||
<ref name="slb:getServiceListBoundaryResponse"/> | ||||
</choice> | ||||
</start> | ||||
<a:documentation> | <define name="listServicesByLocation"> | |||
Request for the serviceListBoundary | <element name="listServicesByLocation"> | |||
</a:documentation> | <ref name="commonRequestPattern"/> | |||
<ref name="slb:serviceListBoundaryRequest"/> | ||||
</element> | ||||
</define> | ||||
<define name="getServiceListBoundary"> | <define name="listServicesByLocationResponse"> | |||
<element name="getServiceListBoundary"> | <element name="listServicesByLocationResponse"> | |||
<ref name="slb:getServiceListBoundary"/> | <ref name="serviceList"/> | |||
<attribute name="serviceListKey"/> | <ref name="commonResponsePattern"/> | |||
</element> | <ref name="locationUsed"/> | |||
</define> | <choice> | |||
<ref name="slb:serviceListBoundaryResponse"/> | ||||
<ref name="slb:serviceListBoundaryReference"/> | ||||
</choice> | ||||
</element> | ||||
</define> | ||||
</div> | </include> | |||
<define name="serviceListBoundaryRequest"> | ||||
<element name="serviceListBoundary"> | ||||
<ref name="slb:serviceListBoundary"/> | ||||
<choice> | ||||
<value>value</value> | ||||
<value>reference</value> | ||||
</choice> | ||||
</element> | ||||
</define> | ||||
<div xmlns:slb="urn:ietf:params:xml:schema:lost1:slb"> | <define name="serviceListBoundaryResponse"> | |||
<element name="serviceListBoundary"> | ||||
<ref name="slb:serviceListBoundary"/> | ||||
<attribute name="profile"/> | ||||
<ref name="locationInformation"/> | ||||
</element> | ||||
</define> | ||||
<a:documentation> | <define name="serviceListBoundaryReference"> | |||
Response to getServiceListBoundary | <element name="serviceListBoundaryReference"> | |||
</a:documentation> | <ref name="slb:serviceListBoundaryReference"/> | |||
<attribute name="source"/> | ||||
<attribute name="serviceListKey"/> | ||||
</element> | ||||
</define> | ||||
<define name="getServiceListBoundaryResponse"> | <define name="getServiceListBoundary"> | |||
<element name="getServiceListBoundaryResponse"> | <element name="getServiceListBoundary"> | |||
<ref name="slb:getServiceListBoundaryResponse"/> | <ref name="slb:getServiceListBoundary"/> | |||
<attribute name="serviceListKey"/> | <attribute name="serviceListKey"/> | |||
<ref name="slb:serviceListBoundary"/> | </element> | |||
<ref name="ls:path"/> | </define> | |||
</element> | ||||
</define> | ||||
</div> | <define name="getServiceListBoundaryResponse"> | |||
</grammar> | <element name="getServiceListBoundaryResponse"> | |||
<ref name="slb:getServiceListBoundaryResponse"/> | ||||
<attribute name="serviceListKey"/> | ||||
<ref name="slb:serviceListBoundary"/> | ||||
<ref name="path"/> | ||||
</element> | ||||
</define> | ||||
END | </grammar> | |||
END | ||||
5.2. Namespace Registration | 5.2. Namespace Registration | |||
This document requests registration of the following namespace (below | This document requests registration of the following namespace (below | |||
the LoST namespace defined in [RFC5222]) to the IETF XML Registry | the LoST namespace defined in [RFC5222]) to the IETF XML Registry | |||
[RFC3688]: | [RFC3688]: | |||
URI: urn:ietf:params:xml:ns:lost1:slb | URI: urn:ietf:params:xml:ns:lost1:slb | |||
Registrant Contact: IETF ECRIT Working Group, Karl Heinz Wolf | Registrant Contact: IETF ECRIT Working Group, Karl Heinz Wolf | |||
skipping to change at page 12, line 24 | skipping to change at page 12, line 30 | |||
<?xml version="1.0"?> | <?xml version="1.0"?> | |||
<!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 serviceListBoundary Namespace</title> | <title>LoST serviceListBoundary Namespace</title> | |||
</head> | </head> | |||
<body> | <body> | |||
<h1>Namespace for the LoST serviceListBoundary</h1> | <h1>Namespace for the LoST Service List Boundary</h1> | |||
<h2>urn:ietf:params:xml:ns:lost1:slb</h2> | <h2>urn:ietf:params:xml:ns:lost1:slb</h2> | |||
<p>See <a href="http://www.rfc-editor.org/rfc/rfcXXXX.txt"> | <p>See <a href="http://www.rfc-editor.org/rfc/rfcXXXX.txt"> | |||
RFCXXXX</a>.</p> | RFCXXXX</a>.</p> | |||
</body> | </body> | |||
</html> | </html> | |||
END | END | |||
6. Acknowledgement | 6. Acknowledgement | |||
The author would like to thank Henning Schulzrinne for the discussion | The author would like to thank Henning Schulzrinne for the discussion | |||
on the draft. | on the draft and Martin Thomson, Richard Barnes and Roger Marshall | |||
for their valuable input and text suggestions during the WGLC. | ||||
7. Normative References | 7. Normative References | |||
[RFC5222] Hardie, T., Newton, A., Schulzrinne, H., and H. | [RFC5222] Hardie, T., Newton, A., Schulzrinne, H., and H. | |||
Tschofenig, "LoST: A Location-to-Service Translation | Tschofenig, "LoST: A Location-to-Service Translation | |||
Protocol", RFC 5222, August 2008. | Protocol", RFC 5222, August 2008. | |||
[RFC5582] Schulzrinne, H., "Location-to-URL Mapping Architecture and | [RFC5582] Schulzrinne, H., "Location-to-URL Mapping Architecture and | |||
Framework", RFC 5582, September 2009. | Framework", RFC 5582, September 2009. | |||
End of changes. 67 change blocks. | ||||
236 lines changed or deleted | 250 lines changed or added | |||
This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |