One document matched: draft-thomson-geopriv-grip-02.xml


<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC1305 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1305.xml">
<!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2616 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">
<!ENTITY RFC2818 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2818.xml">
<!ENTITY RFC3023 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3023.xml">
<!ENTITY RFC3688 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml">
<!ENTITY RFC4119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4119.xml">
<!ENTITY RFC4330 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4330.xml">
<!ENTITY RFC5226 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY RFC5491 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5491.xml">
<!ENTITY RFC5808 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5808.xml">
<!ENTITY RFC5870 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5870.xml">
<!ENTITY W3C.REC-xml-names-20060816 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xml-names-20060816.xml">
<!ENTITY W3C.REC-xmlschema-1-20010502 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xmlschema-1-20010502.xml">

]>

<?rfc rfcedstyle="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="no"?>
<?rfc iprnotified="yes"?>
<?rfc strict="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>

<rfc category="exp" ipr="trust200902">
  <front>
    <title abbrev="GRIP">
      Global Navigation Satellite System (GNSS) Reference Information Protocol (GRIP)
    </title>

    <author initials="M." surname="Thomson"
	    fullname="Martin Thomson">
      <organization>Andrew Corporation</organization>

      <address>
	<postal>
	  <street>PO Box U40</street>
	  <city>Wollongong University Campus</city>
	  <region>NSW</region>
	  <code>2500</code>
	  <country>AU</country>
	</postal>

	<phone>+61 2 4221 2915</phone>
	<email>martin.thomson@andrew.com</email>
	<uri>http://www.andrew.com/</uri>
      </address>
    </author>

    <date month="June" year="2011"/>
    <area>RAI</area>
    <workgroup>GEOPRIV</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>GRIP</keyword>
    <keyword>GNSS</keyword>
    <keyword>A-GNSS</keyword>
    <keyword>Assistance</keyword>

    <abstract>
      <t>This document describes a means of acquiring Global Navigation Satellite System (GNSS) assistance data using HTTP.  Assistance data aids GNSS receivers in acquiring and measuring satellite signals, as well as being useful in calculating positions.  The GNSS Reference Information Protocol (GRIP) provides a framework for discovering resources capable of providing any kind of location-based assistance data.
      </t>
    </abstract>
  </front>

  <middle>

    <section title="Introduction">
      <t>A Global Navigation Satellite System (GNSS) provides a signal that enables accurate determination of the position of a receiver in space and time.  A constellation of satellites transmit radio signals that the receiver is able to measure.  From these measurements, the location of the receiver and the time of measurement can be determined using knowledge about the position and velocity of the satellites and the signal they transmit.
      </t>

      <t>Acquisition of satellite signals requires searching for the extremely weak signal transmitted by each satellite.  Satellites transmit a distinct repeating code that is used by the receiver for signal acquisition.  Acquiring the signal is done by synchronizing with the received signal in both frequency and time.  In order to synchronize, the receiver searches in two dimensions:
      <list style="hanging">
	<t hangText="time/code phase:">The distance between the satellite and receiver means that the receiver sees a signal that is offset in time.  The amount of time shift is known as code phase since it is measured within the window of the repeated code sequence.  Code phase forms the primary measurement used in calculating a position.
	</t>
	<t hangText="frequency:">The relative speed of satellite and receiver causes Doppler shift of the satellite signal.</t>
      </list></t>

      <t>To make use of satellite measurements, information about the satellite and the signal that it transmits is required.  To achieve this, satellite signals are typically modulated at a low rate with a navigation message.  The navigation message provides information that is used in calculation of location and time, including information on satellite orbit, satellite health, time model, and atmospheric effects on the signal.  The navigation message is transmitted by satellites at very low rates to avoid hampering the measurement process.
      </t>

      <t>Once satellite signals have been acquired and measured, the measurement information is combined with the information from the navigation message and a position (and time) can be calculated.  Successful calculation of a position typically requires measurement data for a minimum of 5 satellites unless otherwise supplemented, or 4 satellites if the receiver has accurate time.
      </t>

      <t>If a receiver has to perform all these steps independently, satellite acquisition and receipt of the navigation message can take significant amounts of time.  Improvements in receiver design have increased receiver sensitivity and the speed that signals are acquired.  However, the low data rates used for the navigation message adds a fixed delay to this process.  Use of assistance data provides a dramatic improvement in the time taken to acquire signals and produce a result.  Dedicated data networks are able to provide the information contained in the navigation message much more efficiently.
      </t>

      <t>An assistance data server uses a reference network - a distributed set of GNSS receivers - to acquire information about satellite signals.  The server is then able to provide this information to receivers and aid in GNSS signal measurement and position calculation.
      </t>

      <t>This document provides a means of acquiring GNSS assistance data using GRIP, a protocol based on <xref target="RFC2616">HTTP</xref>.  Basic mechanisms are specified for extending the use of GRIP to any form of assistance data.
      </t>

      <t><xref target="I-D.thomson-geopriv-grip-gps"/> defines assistance data for the Global Positioning System (GPS).
      </t>

      <section title="Advantages of Assistance Data">
	<t>GNSS assistance data is information provided to a receiver that is provided to improve the quality and timeliness of GNSS measurements or positioning.  The most basic set of assistance data includes the same information provided in the navigation message.  Additional forms of assistance data include information customized to a particular receiver to assist it in acquiring signals, or information about satellite ephemerides (orbits) that is useful over a longer period of time.
	</t>

	<t>Acquiring assistance data from the network completely removes the need to receive the navigation message.  Navigation message content can be transmitted to the receiver using the vastly more efficient communication paths provided by a data network.  This removes a significant step from the process of determining a position.
	</t>

	<t>Knowing what satellites to search for can reduce signal acquisition time.  One of the most basic pieces of information provided by assistance data is knowledge of which satellites are above the horizon and can therefore be measured.  Concentrating on "visible" satellites ensures that less time is wasted on attempting to measure signals that could not possibly be found.
	</t>

	<t>Assistance data can provide information about where in the frequency/code phase space to search for a particular satellite signal.  This reduces the time required to acquire a satellite signal.  Since an approximate frequency and code phase can be known, it becomes feasible to spend more time searching for weaker signals, improving receiver sensitivity.  Improved sensitivity ensures that GNSS can be used in areas where signal penetration is poor, like buildings and other areas with poor sky visibility, and increases the likelihood of getting sufficient satellite measurements to calculate a position.
	</t>

	<t>Assistance data also enables compensation for the effects of the navigation message.  Knowing the content of the navigation message ahead of time means that the receiver is able to anticipate the effect of its modulation on the signal and compensate accordingly.  This increases the sensitivity of the receiver and allows for faster signal acquisition.
	</t>

	<t>Specialized assistance data types can also provide further assistance.  Assistance data can provide more sophisticated models of satellite orbits, or localized data relating to signal propagation or interference.
	</t>
      </section>

    </section>

    <section anchor="conventions" title="Conventions used in this document">
      <t>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 <xref target="RFC2119"/>.
      </t>
    </section>

    <section title="GRIP Operation Overview">
      <t>A client is configured with the location of a GRIP server, or follows a hyperlink that leads to a GRIP server.  This URI indicates the location of a <xref target="grip">GRIP metadata document</xref>, which describes all that the server is capable of.
      </t>

      <t>From the metadata document, the client is able to determine what information is made available by the GRIP server and where that information is available from.  The client <xref target="request">retrieves</xref> one or more resources to acquire assistance data.
      </t>
    </section>

    <section anchor="grip" title="GRIP Metadata">
      <t>A server providing a GRIP service might provide a certain subset of assistance data to clients.  Conveying the set of assistance data types that it is capable of providing to clients is the basis of GRIP.  To that end, a metadata document format is defined.
      </t>

      <t>A client retrieves a GRIP metadata document using an HTTP <spanx style="verb">GET</spanx> request.  The metadata document contains a listing of each of the supported assistance data types, plus a URI indicating where each type can be requested.
      </t>

      <figure>
	<preamble>The following GRIP metadata document shows support for three global assistance data types, support for two local assistance data types over a small area.
	</preamble>
<artwork><![CDATA[
  <grip xmlns="urn:ietf:params:xml:ns:grip"
	xmlns:gps="urn:ietf:params:xml:ns:grip:gps">
    <global>
      <ad type="gps:utcModel">/grip/utc</ad>
      <ad type="gps:ephemeris">/grip/ephemeris</ad>
      <ad type="gps:ionosphere">/grip/ionosphere</ad>
    </global>

    <local>
      <coverage>
	<gml:Polygon xmlns:gml="http://www.opengis.net/gml"
		     srsName="urn:ogc:def:crs:EPSG::4326">
	  <gml:exterior>
	    <gml:LinearRing>
	      <gml:posList>
		-33.856625 151.215906 -33.856299 151.215343
		-33.856326 151.214731 -33.857533 151.214495
		-33.857720 151.214613 -33.857369 151.215375
		-33.856625 151.215906
	      </gml:posList>
	    </gml:LinearRing>
	  </gml:exterior>
	</gml:Polygon>
      </coverage>
      <ad type="gps:ephemeris">/grip/ephemeris</ad>
      <ad type="gps:acqAssist">/grip/acqAssist</ad>
    </local>
  </grip>
]]></artwork>
      </figure>

      <t>A GRIP metadata document can be provided in response to an HTTP <spanx style="verb">OPTIONS</spanx> request made to any GRIP resource.  This metadata document can include information about that resource (global and local elements with coverage), or it can include information on other resources.
      </t>

      <section anchor="local-global" title="Local and Global Assistance Data">
	<t>The GRIP metadata format describes the types of assistance data that the server is willing to provide, separated into two sections: local and global.
	</t>

	<t>Local assistance data applies to a particular position on the Earth.  When requesting this information, the client indicates the location of interest.  The server constructs assistance data that is specific to that location.
	</t>

	<t>Global assistance data can be acquired that is useful to a receiver regardless of the position of the receiver.  For instance, in GPS the relationship between the GPS time system and Universal Coordinated Time (UTC) is globally applicable.
	</t>

	<t>Some assistance data types are always localized, other items are always global.  In some cases, the localized data provided for some types of assistance data is simply a subset of the global data that is useful at the specified location.
	<list style="empty"><t>For instance, a satellite navigation model, which includes information on the position of the satellite, can be provided as both global and local data.  A global request might provide navigation parameters for all satellites in the constellation; a local request might only include those satellites that can be viewed from the indicated location.
	</t></list>
	</t>
      </section>

      <section title="GRIP Metadata Format">
	<t>GRIP metadata is specified as an XML document of type <spanx style="verb">application/grip+xml</spanx>.  This document is split into three sections:
	<list style="hanging">
	  <t hangText="global:">This element describes what forms of global assistance data are made available and where each may be retrieved.
	  </t>
	  <t hangText="local:">This element describes what forms of local assistance data are made available and where each may be retrieved.
	  </t>
	</list>
	</t>

	<section anchor="coverage" title="'coverage' element">
	  <t>In order to provide GNSS assistance data, receivers need to observe and record satellite signals across a large area.  These receivers either need to receive a signal from a satellite (such as the GPS navigation message) or take measurements of the satellite signal.
	  </t>

	  <t>Each receiver can only measure or observe a satellite for part of its orbit.  A global distribution of receivers is necessary to be able to provide assistance data for the entire planet.  Where receivers are distributed over a smaller area, GRIP provides a means to indicate where receivers are able to measure satellite signals.
	  </t>

	  <t>Both global and local sections optionally include a <spanx style="verb">coverage</spanx> element.  The <spanx style="verb">coverage</spanx> specifies the region where the provided information provided is applicable.  Outside this area, the assistance data might not be comprehensive or completely accurate.
	  </t>

	  <t>The coverage region is specified using a GML <spanx style="verb">Polygon</spanx> or <spanx style="verb">Envelope</spanx>, or a <spanx style="verb">Circle</spanx> as defined in <xref target="RFC5491"/>.  If no <spanx style="verb">coverage</spanx> element is specified, this indicates that assistance data can be provided for any location on the Earth.
	  </t>

	  <t>A GRIP service MAY provide information outside its indicated coverage area.  Clients need to be aware that this information could be inaccurate, missing certain elements, or it could be extrapolated from old information.
	  </t>

	  <t>Coverage might vary depending on the type of assistance data.  Some forms of assistance data, such as differential corrections, can only be collected for a small geographic area.  Therefore, multiple <spanx style="verb">global</spanx> or <spanx style="verb">local</spanx> elements can be specified with different coverage areas.
	  </t>

	  <t>If the same assistance data type appears multiple times, or if multiple coverage elements are included, the coverage for that assistance data type is the union of the associated coverage regions.
	  </t>
	</section>

	<section anchor="ad" title="'ad' element">
	  <t>The <spanx style="verb">ad</spanx> element indicates availability of a specific type of assistance data.
	  </t>

	  <t>The text content of the <spanx style="verb">ad</spanx> element indicates a URI where assistance data can be acquired.  This URI is either an absolute URI or specified relative to the base URI of the GRIP index document.
	  </t>

	  <t>The type of assistance data provided is specifed in the <spanx style="verb">type</spanx> attribute of the <spanx style="verb">ad</spanx> element.  This identifies an XML element by its <xref target="W3C.REC-xml-names-20060816">qualified name</xref>, using the namespace context from the enclosing document.
	  </t>

	  <t>When included as a child of the <spanx style="verb">global</spanx> element, the <spanx style="verb">ad</spanx> element describes the location of resources that contain the indicated items of global assistance data.  Similarly, when included in the <spanx style="verb">local</spanx> element, it indicates where local assistance can be acquired.
	  </t>
	</section>
      </section>
    </section>

    <section anchor="request" title="GRIP Assistance Data Requests">
      <t>A GRIP assistance data request is a HTTP GET to the URI indicated in the GRIP index.
      </t>

      <t>For global assistance data resources, an unmodified request is sufficient to retrieve the indicated information.
      </t>

      <t>For local assistance data resources, a <spanx style="verb">GeoLocation</spanx> header is included in the request.
      </t>

      <t>The same resource MAY provide both global and local assistance data of the same type, using the presence or absence of the <spanx style="verb">Geolocation</spanx> header to determine which of these is requested.
      </t>

      <t>The MIME type of all assistance data documents is <spanx style="verb">application/grip-ad+xml</spanx>.  The document contains an XML document with a document element of the type indicated in the GRIP index.
      </t>

      <t>A server MUST generate appropriate HTTP status codes in response to errors.  As long as it is acceptable to clients, the HTTP response SHOULD contain a GRIP <spanx style="verb">error</spanx> in the body of the message, using a MIME type of <spanx style="verb">application/grip+xml</spanx>.
      </t>

      <section anchor="location" title="Location Parameters">
	<t>The client MUST specify the location that the local assistance data is applicable to in a <spanx style="verb">Geolocation</spanx> header.  Location information can be provided in the body of the request or by providing a URI to an external resource.
	</t>

	<t>If location information is necessary, but not provided, the server responds with an <xref target="errors">error</xref> contained in an HTTP 427 (Bad Geolocation) response.
	</t>

	<figure>
	  <artwork><![CDATA[
   GET /grip/acqAssist HTTP/1.1
   Host: grip.example.com
   Accept: application/grip-ad+xml,application/grip+xml;q=0.5
   Geolocation: geo:-35.406,150.882;u=1200

]]></artwork>
	</figure>

	<t>Latitude, longitude and altitude specified in URI parameters use the World Geodetic System 1984 (WGS 84) coordinate reference system.
	</t>

	<t>Location information MAY be provided by reference.  The <spanx style="verb">locationuri</spanx> parameter is used to include a URI.  Percent-encoding MUST be used to ensure that reserved characters in the URI are correctly escaped.
	</t>

	<t>The location URI either takes the form of an indirect reference, or <xref target="RFC5808">location URI</xref>.  A location URI MUST resolve to a <xref target="RFC4119">presence data information format - location object (PIDF-LO)</xref> document.  Alternatively, information can be provided directly in URI form using a <xref target="RFC5870">geo: URI</xref>.
	</t>

	<t>A server MAY choose to not support the <spanx style="verb">locationuri</spanx> parameter, or to limit the URI schemes that it accepts.  If this is not the case, an error with a code of <spanx style="verb">unsupportedLocation</spanx> MUST be provided.  A client MUST be prepared to receive this code and either dereference the URI and either provide the values directly or abandon the request.
	</t>
      </section>

    </section>

    <section anchor="errors" title="GRIP Errors">
      <t>Errors in the URIs provided are firstly indicated using HTTP errors.  However, the body of the HTTP error MUST contain a GRIP document that describes the error.
      </t>

      <t>An error document consists of an <spanx style="verb">error</spanx> element, with a mandatory <spanx style="verb">code</spanx> attribute.  Any number of <spanx style="verb">message</spanx> elements MAY be added to convey human-readable feedback on the error; each <spanx style="verb">message</spanx> element contains an <spanx style="verb">xml:lang</spanx> attribute that identifies the language of the text.
      </t>

      <figure>
	<artwork><![CDATA[
  <error xmlns="urn:ietf:params:xml:ns:grip" code="noLocation">
    <message xml:lang="en">Missing Geolocation header.</message>
  </error>
]]></artwork>
      </figure>

      <t>The following values for the <spanx style="verb">code</spanx> attribute and the values of corresponding HTTP errors are defined:
      <list style="hanging">
	<t hangText="noLocation:">(HTTP 427) A request for local assistance data did not contain location information.
	</t>
	<t hangText="badLocation:">(HTTP 427) A request for local assistance data contained location information that was badly formatted or was not understood by the server.
	</t>
	<t hangText="unsupportedLocation:">(HTTP 427) A request for local assistance data contained location information that might be valid, but the server is not able to use the provided form.
	</t>
	<t hangText="noCoverage:">(HTTP 400) A request for assistance data indicated a location that the server has no coverage for.
	</t>
	<t hangText="noData:">(HTTP 503) The identified assistance data type is currently unavailable.  Used when the server is temporarily unable to provide assistance data.
	</t>
      </list>
      </t>
    </section>

    <section title="Assistance Data">
      <t>Assistance data that can be expressed in XML form is supported by this protocol.  The XML element is the basic unit of assistance data, since this is what is identified in the <spanx style="verb">ad</spanx> element.
      </t>

      <t>All assistance data is provided with the same MIME type, <spanx style="verb">application/grip-ad+xml</spanx>.  The document element determines the type.
      </t>

      <t>New definitions of assistance data only require the definition of an XML format and the use of a unique <xref target="W3C.REC-xml-names-20060816">namespace URI</xref>.  Formal schema definitions, such as <xref target="W3C.REC-xmlschema-1-20010502">XML Schema</xref> or <xref target="ISO.19757-2.2008">RelaxNG</xref> SHOULD be used, but are not necessary as long as structure and semantics are clearly defined.
      </t>

      <t>Assistance data for the Global Position System (GPS) is defined in <xref target="I-D.thomson-geopriv-grip-gps"/>.  These assistance data are used in examples throughout this document.
      </t>

      <section title="Caching Assistance Data">
	<t>Caching of assistance data is particularly useful in improving responsiveness and alleviating server load.  Standard HTTP mechanisms are suitable for controlling caching of global assistance data, but local assistance data introduces complications.  Adding a <spanx style="verb">geolocation</spanx> tag to the <spanx style="verb">Vary</spanx> header ensures that values are properly cached.
	</t>

	<t>Assistance data for two locations within close proximity might not vary significantly.  However, HTTP caches place significance in any change in a URI, including trivially significant decimal places in numbers and even the ordering of URI parameters.  Therefore, small changes in location can result in a completely different URI.  A server MAY redirect requests that include <spanx style="verb">Geolocation</spanx> headers to location-specific resources in order to provide better support for caching.
	</t>

	<t>In serving a large number of requests, a server might choose to cache assistance data that is applicable over a geographic area.  A method of caching optimization relies on fixing the locations that assistance data is provided for to a grid.  Assistance data is only provided for the center point of the grid.  All other points in the grid receive the same assistance data.
	</t>

	<t>The grid-based method allows caching by the server itself, but not a generic HTTP cache.  A server MAY use HTTP redirection to more efficiently use generic HTTP caches.  An HTTP 303 (See Other) is appropriate when responses are dependent on location.  This improves cacheability at a cost in latency.  Alternatively, using the <spanx style="verb">Content-Location</spanx> header doesn't aid caching of an immediate request, but improves cacheability for subsequent requests that are directed at resource identified in the <spanx style="verb">Content-Location</spanx> header.
	</t>

	<t>Local assistance data that is based on a location URI can change if the referenced document also changes.  A server MUST either indicate that such local assistance data is not cacheable through the use of <spanx style="verb">Cache-Control</spanx> headers or indicate validity times with an <spanx style="verb">Expires</spanx>.  The server might also include a <spanx style="verb">Geolocation</spanx> header that indicates the area that the assistance data applies to.
	</t>

	<t>Assistance data itself can be used to derive the location of a client.  Servers MUST NOT allow assistance data based on location information to enter a shared cache.  The <spanx style="verb">Cache-Control</spanx> headers for such requests MUST be set to <spanx style="verb">private</spanx> or <spanx style="verb">no-cache</spanx>.  Where redirection is used, the redirection response cannot be placed in a shared cache, but the resulting document is cacheable.
	</t>
      </section>

      <section title="Time Assistance">
	<t>It is common for GNSS systems to use a different time model than UTC.  Commonly assistance data is used to relate the GNSS time to UTC.  This allows a client that is accurately synchronized to the GNSS time (a necessary outcome or prerequisite of location determination) to very accurately synchronize with UTC time.
	</t>

	<t>Assistance data that relates time systems is an important part of this protocol.  Indeed, assistance data that relates GNSS time with other time systems is also useful.
	</t>

	<t>It is not the intent for this protocol to itself provide time synchronization functions.  Other protocols, such as <xref target="RFC1305">Network Time Protocol (NTP)</xref>, or <xref target="RFC4330">Simple NTP</xref>, perform this task efficiently and accurately.  Specific access technologies also provide time synchronization services that are linked to access technology specific timing characteristics.
	</t>
      </section>

    </section>

    <section anchor="schema" title="XML Schema">
      <figure>
	<artwork><![CDATA[
<xs:schema
    targetNamespace="urn:ietf:params:xml:ns:grip"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:grip="urn:ietf:params:xml:ns:grip"
    xmlns:gml="http://www.opengis.net/gml"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">

  <xs:annotation>
    <xs:appinfo
	source="urn:ietf:params:xml:schema:grip">
      GNSS Reference Information Protocol (GRIP) Schema
    </xs:appinfo>
    <xs:documentation source="http://www.ietf.org/rfc/rfcXXXX.txt">
      <!-- [[NOTE TO RFC-EDITOR: Please replace above URL with URL of
	   published RFC and remove this note.]] -->
      This document defines core elements of GRIP documents.
    </xs:documentation>
  </xs:annotation>

  <xs:import namespace="http://www.w3.org/XML/1998/namespace"/>
  <xs:import namespace="http://www.opengis.net/gml"/>

  <xs:element name="grip" type="grip:gripType"/>
  <xs:complexType name="gripType">
    <xs:complexContent>
      <xs:restriction base="xs:anyType">
	<xs:sequence>
	  <xs:element name="global" type="grip:adSetType"
		      minOccurs="0" maxOccurs="unbounded"/>
	  <xs:element name="local" type="grip:adSetType"
		      minOccurs="0" maxOccurs="unbounded"/>
	  <xs:any namespace="##other" processContents="lax"
		  minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="adSetType">
    <xs:complexContent>
      <xs:restriction base="xs:anyType">
	<xs:sequence>
	  <xs:element name="coverage" type="grip:coverageType"
		      minOccurs="0" maxOccurs="unbounded"/>
	  <xs:element name="ad" type="grip:adType"
		      minOccurs="0" maxOccurs="unbounded"/>
	  <xs:any namespace="##other" processContents="lax"
		  minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="coverageType">
    <xs:complexContent>
      <xs:restriction base="xs:anyType">
	<xs:choice>
	  <xs:element ref="gml:_Geometry"/>
	  <xs:element ref="gml:Envelope"/>
	</xs:choice>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="adType">
    <xs:simpleContent>
      <xs:extension base="xs:anyURI">
	<xs:attribute name="type" type="xs:QName" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- Errors -->
  <xs:element name="error" type="grip:errorType"/>
  <xs:complexType name="errorType">
    <xs:complexContent>
      <xs:restriction base="xs:anyType">
	<xs:sequence>
	  <xs:element name="message" type="grip:errorMsgType"
		      minOccurs="0" maxOccurs="unbounded"/>
	  <xs:any namespace="##other" processContents="lax"
		  minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="code" type="xs:token"
		      use="required"/>
	<xs:anyAttribute namespace="##any" processContents="lax"/>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="errorMsgType">
    <xs:simpleContent>
      <xs:extension base="xs:token">
	<xs:attribute ref="xml:lang"/>
	<xs:anyAttribute namespace="##any" processContents="lax"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

</xs:schema>
]]></artwork>
      </figure>
    </section>

    <section anchor="security" title="Security Considerations">
      <t>A server MAY individually authorize clients and challenge clients to provide authentication credentials.  How authentication credentials are negotiated is outside the scope of this specification.
      </t>

      <t>Receivers need to be aware that falsified assistance data can be used to cause a location calculation to be arbitrarily incorrect.  In particular, falsifying the location of a satellite by altering ephemeris information could be used to cause the receiver to calculate any location.  Small changes in location caused by this methods are difficult to detect, but larger changes can be identified through inconsistency in Doppler shift and comparison of basic satellite location with previously acquired (and trusted) estimates, such as the GPS almanac.
      </t>

      <t>Location information provided by a client in making a request for local assistance data is potentially privacy sensitive.  A client SHOULD use <xref target="RFC2818">HTTP over TLS</xref> to ensure that only the identified server is able to use this information.  Location URIs SHOULD use similarly secured channels to prevent attackers from intercepting or falsifying this information.
      </t>

      <t>Because location information is potentially sensitive, servers MUST NOT use location information for anything other than serving the request that contains it.
      </t>

      <t>GRIP metadata is designed to carry descriptions of how assistance data can be retrieved.  This document could contain references to resources under the control of other parties that might be unaware of this linkage.  The only authoritative source of metadata for a resource is the resource itself; all other links are informative only.
      </t>
<t>A malicious server might use links to cause a client to leak information or trigger unintended actions.  For instance, links in metadata might refer to files on the client system, or they might invoke specific protocol actions.  Clients MUST validate any URI it receives before using it.  Restricting use of URIs to <spanx style="verb">https:</spanx> (and optionally <spanx style="verb">http:</spanx>) URIs limits the scope of any attack.  Only accepting responses of the MIME type <spanx style="verb">application/grip-ad+xml</spanx> further reduces the ability of an attacker to trigger client behavior.
      </t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>This section registers two MIME types: <spanx style="verb">application/grip+xml</spanx> for GRIP metadata and control documents in <xref target="mime-grip"/>, <spanx style="verb">application/grip-ad+xml</spanx> for GRIP assistance data documents  in <xref target="mime-grip-ad"/>.
      </t>

      <t>A registry for GRIP errors is defined in <xref target="iana-errors"/>.
      </t>

      <t>The XML namespace used in GRIP metadata and control documents is registered in <xref target="iana-ns"/>, the corresponding schema definition is registered in <xref target="iana-schema"/>.
      </t>
      <section anchor="mime-grip" title="Registration of MIME type 'application/grip+xml'">
	<t>This section registers the <spanx style="verb">application/grip+xml</spanx> MIME type, used for GRIP metadata and the core protocol.
	<list style="hanging">
	  <t hangText="To:">ietf-types@iana.org</t>
	  <t hangText="Subject:">Registration of MIME media type application/grip+xml
	  </t>
	  <t hangText="MIME media type name:">application</t>
	  <t hangText="MIME subtype name:">grip+xml</t>
	  <t hangText="Required parameters:">(none)</t>
	  <t hangText="Optional parameters:">
	    charset
	    <vspace />
	    Same as the charset parameter of application/xml as specified in Section 3.2 of <xref target="RFC3023">RFC 3023</xref>.
	  </t>
	  <t hangText="Encoding considerations:">
	    Same as the encoding considerations of application/xml as specified in Section 3.2 of <xref target="RFC3023">RFC 3023</xref>.
	  </t>
	  <t hangText="Security considerations:">

	    Security considerations are described in <xref target="security"/>.  Many of the security considerations in Section 10 of <xref target="RFC3023">RFC 3023</xref> also apply.
	  </t>

	  <t hangText="Interoperability considerations:">
	    This content type provides a basis for a protocol.
	  </t>

	  <t hangText="Published specification:">
	    RFC XXXX [NOTE TO IANA/RFC-EDITOR:
	    Please replace XXXX with the RFC number for this specification.]
	  </t>

	  <t hangText="Applications which use this media type:">
	    Global Navigation Satellite System (GNSS) receivers and servers that provide assistance data for GNSS receivers.
	  </t>

	  <t hangText="Additional Information:">
	    Magic Number(s): (none)
	    <vspace />File extension(s): .grip
	    <vspace />Macintosh File Type Code(s): TEXT
	  </t>

	  <t
	      hangText="Person & email address to contact for further information:">
	    Martin Thomson <martin.thomson@andrew.com>
	  </t>

	  <t hangText="Intended usage:">LIMITED USE</t>

	  <t hangText="Author/Change controller:">The IETF</t>

	  <t hangText="Other information:">
	    This media type is a specialization of <xref target="RFC3023">application/xml</xref>, and many of the considerations described there also apply to application/grip+xml.
	  </t>
	</list></t>
      </section>

      <section anchor="mime-grip-ad" title="Registration of MIME type 'application/grip-ad+xml'">
	<t>This section registers the <spanx style="verb">application/grip-ad+xml</spanx> MIME type, used for the expression of assistance data.
	<list style="hanging">
	  <t hangText="To:">ietf-types@iana.org</t>
	  <t hangText="Subject:">Registration of MIME media type application/grip-ad+xml
	  </t>
	  <t hangText="MIME media type name:">application</t>
	  <t hangText="MIME subtype name:">grip-ad+xml</t>
	  <t hangText="Required parameters:">(none)</t>
	  <t hangText="Optional parameters:">
	    charset
	    <vspace />
	    Same as the charset parameter of application/xml as specified in Section 3.2 of <xref target="RFC3023">RFC 3023</xref>.
	  </t>
	  <t hangText="Encoding considerations:">
	    Same as the encoding considerations of application/xml as specified in Section 3.2 of <xref target="RFC3023">RFC 3023</xref>.
	  </t>
	  <t hangText="Security considerations:">
	    Many of the security considerations in Section 10 of <xref target="RFC3023">RFC 3023</xref> apply.
	  </t>

	  <t hangText="Interoperability considerations:">
	    This content type is used to provide an interoperable format for assistance data.  Interoperability depends on the definition of the assistance data, which is not proscribed to allow for new assistance data definitions.  The document element of this XML document determines the nature of the content.
	  </t>

	  <t hangText="Published specification:">
	    RFC XXXX [NOTE TO IANA/RFC-EDITOR: Please replace XXXX with the RFC number for this specification.]
	  </t>

	  <t hangText="Applications which use this media type:">
	    Global Navigation Satellite System (GNSS) receivers and servers that provide assistance data for GNSS receivers.
	  </t>

	  <t hangText="Additional Information:">
	    Magic Number(s): (none)
	    <vspace />File extension(s): .grip
	    <vspace />Macintosh File Type Code(s): TEXT
	  </t>

	  <t
	      hangText="Person & email address to contact for further information:">
	    Martin Thomson <martin.thomson@andrew.com>
	  </t>

	  <t hangText="Intended usage:">LIMITED USE</t>

	  <t hangText="Author/Change controller:">The IETF</t>

	  <t hangText="Other information:">
	    This media type is a specialization of <xref target="RFC3023">application/xml</xref>, and many of the considerations described there also apply to application/grip-ad+xml.
	  </t>
	</list></t>

      </section>

      <section anchor="iana-errors" title="Error code Registry">
	<t>This document requests that the IANA create a new registry for         GRIP, including an initial registry for error codes.   Error codes are included in GRIP error documents as described in <xref target="errors"/> and MAY be any sequence of characters.</t>

	<t>The following summarizes the requested registry:</t>

	<t><list style="hanging">
	    <t hangText="Related Registry:">Geopriv GRIP Registries, Error codes for GRIP</t>

	    <t hangText="Defining RFC:">RFC XXXX [NOTE TO IANA/RFC-EDITOR: Please replace XXXX with the RFC number for this specification.]</t>

	    <t hangText="Registration/Assignment Procedures:">
	      Following the policies outlined in <xref target="RFC5226"/>, the IANA policy for assigning new values for the Error codes for GRIP registry shall be Standards Action: Values are assigned only for Standards Track RFCs approved by the IESG.
	    </t>

	    <t hangText="Registrant Contact:">IETF, GEOPRIV working group,
	    (geopriv@ietf.org), Martin Thomson (martin.thomson@andrew.com).</t>
	  </list></t>

	<t>This section pre-registers the error codes defined in <xref target="errors"/>.
	</t>
      </section>

      <section anchor="iana-ns" title="URN Sub-Namespace Registration for 'urn:ietf:params:xml:ns:grip'">
	<t>This section registers a new XML namespace, <spanx style="verb">urn:ietf:params:xml:ns:grip</spanx>, per the guidelines in <xref target="RFC3688"/>.
	<list style="empty">
	  <t>URI: urn:ietf:params:xml:ns:grip</t>
	  <t>Registrant Contact: IETF, GEOPRIV working group, (geopriv@ietf.org), Martin Thomson (martin.thomson@andrew.com).</t>
	  <t>XML: <figure>
	  <artwork><![CDATA[
      BEGIN
	<?xml version="1.0"?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
	  <head>
	    <title>GRIP Metadata</title>
	  </head>
	  <body>
	    <h1>Namespace for GRIP Metadata Definitions</h1>
	    <h2>urn:ietf:params:xml:ns:grip</h2>
    [NOTE TO IANA/RFC-EDITOR: Please replace XXXX
    with the RFC number for this specification.]
	    <p>See RFCXXXX</p>
	  </body>
	</html>
      END
]]></artwork>
	  </figure></t>
	</list></t>
      </section>

      <section anchor="iana-schema" title="XML Schema Registration">

	<t>This section registers an XML schema as per the guidelines in <xref target="RFC3688"></xref>.
	<list style="hanging">
	  <t hangText="URI:">urn:ietf:params:xml:schema:grip</t>
	  <t hangText="Registrant Contact:">IETF, GEOPRIV working group, (geopriv@ietf.org), Martin Thomson (martin.thomson@andrew.com).
	  </t>
	  <t hangText="Schema:">
	    The XML for this schema can be found as the entirety of <xref target="schema"></xref> of this document.
	  </t>
	</list></t>
      </section>

    </section>

   <section title="Acknowledgements">
      <t>This document is part of the definition of GRIP.  The original GRIP protocol was developed by the University of New South Wales through the OSGRS project <eref target="http://osgrs.sourceforge.net/"/>.  The GPS expertise of Neil Harper was invaluable in assembling this document.
      </t>
    </section>
<!--
    <appendix title="Change Log">
      <t>[[The RFC Editor is requested to remove this section at publication.]]</t>
      <t>Changes since -0-1:
      <list style="symbols">
	<t>Document created.</t>
      </list>
      </t>
    </appendix>
-->
  </middle>

  <back>

    <references title="Normative References">
      &RFC2119;
      &RFC2616;
      &RFC2818;
      &RFC3023;
      &RFC3688;
      &RFC5491;
    </references>

    <references title="Informative References">
      &RFC1305;
      &RFC4119;
      &RFC4330;
      &RFC5226;
      &RFC5808;
      &RFC5870;
      &W3C.REC-xml-names-20060816;

      <reference anchor="I-D.thomson-geopriv-grip-gps">
	<front>
	  <title>Global Position System (GPS) Assistance Data for GRIP</title>

	  <author initials="M" surname="Thomson" fullname="Martin Thomson">
	    <organization>Commscope</organization>
	  </author>

	  <date month="Jun" year="2011"/>
	</front>

	<seriesInfo name="Internet-Draft" value="draft-thomson-geopriv-grip-gps-02"/>
	<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-thomson-geopriv-grip-gps-02.txt"/>
      </reference>

      &W3C.REC-xmlschema-1-20010502;
      <reference anchor="ISO.19757-2.2008">
	<front>
	  <title>Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG</title>
	  <author>
	    <organization>International Organization for Standardization</organization>
	  </author>
	  <date month="" year="2008" />
	</front>

	<seriesInfo name="ISO" value="Standard 19757-2" />

      </reference>

    </references>

  </back>
</rfc>

PAFTECH AB 2003-20262026-04-24 05:58:35