SIP Working Group James Polk Internet Draft Cisco Systems Expiration:May 16th,Aug 24, 2008 Brian Rosen Intended Status: Standards Track (PS) NeuStar February 24, 2008 Location Conveyance for the Session Initiation Protocoldraft-ietf-sip-location-conveyance-09.txt Nov 16th, 2007draft-ietf-sip-location-conveyance-10.txt Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire onMay 16th,August 24, 2008. Copyright Notice Copyright (C) The IETF Trust(2007).(2008). Abstract This document defines an extension to the Session Initiation Protocol (SIP) to convey geographic location information from one SIP entity to another SIP entity. The extension covers end to end conveyance as well as location-based routing, where proxy servers make routing decisions based on the location of the SIP user agents. Table of Contents 1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2.Conventions and Terminology used in this document . . . . . . 2 2. Introduction . . . . . . . .4 3. Mechanisms. . . . . . . . . . . . . . . . 4 3. Overview of SIP Location Conveyance . . . . . . . . . .4 3.1 Overview of SIP Location Conveyance. . . 5 4. SIP Modifications for Geolocation Conveyance . . . . . . . .4 3.27 4.1 The Geolocation Header . . . . . . . . . . . . . . . . .5 3.37 4.2 424 (Bad Location Information) Response Code . . . . . .8 3.49 4.3 The Geolocation-Error Header . . . . . . . . . . . . . .9 3.510 4.4 TheGeolocation'geolocation' Option Tag . . . . . . . . . . . . . ..183.64.5 Using sip/sips/pres as a Dereference Scheme . . . . . . .19 4.18 5. Geolocation Examples . . . . . . . . . . . . . . . . . . . . 204.15.1 Location-by-value (Coordinate Format) . . . . . . . . . . 204.25.2 Location-by-reference . . . . . . . . . . . . . . . . . . 225.6. SIP Element Behavior . . . . . . . . . . . . . . . . . . . .23 5.122 6.1 UAC Behavior . . . . . . . . . . . . . . . . . . . . . .24 5.223 6.2 UAS Behavior . . . . . . . . . . . . . . . . . . . . . . 265.36.3 Proxy Behavior . . . . . . . . . . . . . . . . . . . . .29 6.30 7. Geopriv Privacy Considerations . . . . . . . . . . . . . . .32 7.33 8. Security Considerations . . . . . . . . . . . . . . . . . . .33 8.34 9. IANA Considerations . . . . . . . . . . . . . . . . . . . .34 8.135 9.1 IANA Registration for New SIP Geolocation Header . . . .34 8.235 9.2 IANA Registration for New SIPGeolocation'geolocation' Option Tag .. 35 8.336 9.3 IANA Registration for New 424 Response Code . . . . . . .35 8.436 9.4 IANA Registration for New SIP Geolocation-Error Header .35 8.536 9.5 IANA Registration for New SIP Geolocation-Error Codes . .35 9.36 9.6 IANA Registration of LbyR Schemes . . . . . . . . . . . 37 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 3710.11. References . . . . . . . . . . . . . . . . . . . . . . . . .37 10.138 11.1 Normative References . . . . . . . . . . . . . . . . .37 10.238 11.2 Informative References . . . . . . . . . . . . . . . . .3839 Author Information . . . . . . . . . . . . . . . . . . . . .3839 Appendix A. Requirements for SIP Location Conveyance . . . . 39 Appendix B. Example of Civic-based PIDF-LO w/ S/MIME . . . . 41 Intellectual Property and Copyright Statements . . . . . . .4243 1.Introduction ThisConventions and Terminology used in this documentdescribes how Location canThe key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be"conveyed" (that is, transmitted overinterpreted as described in [RFC2119]. The following terms and acronyms used throughout this document are defined here: "cid=" = content-ID URI. See Section 4.1 for more details. Content-ID - Defined in RFC 2392 as a URL reference to find message body parts within theInternet)same message, to ease parsing. LbyR = Location-by-Reference LbyV = Location-by-Value locationErrorValue - contains an actionable error code from a Location Recipient, identifying the location "inserter=", and optionally a test string describing the type of error. There can be oneSIP user agent (UA),orin some circumstances,more locationErrorValues within aproxy server actingGeolocation-Error header insupport ofaUA, to another entity usingSIP[RFC3261]. Here "Location" isresponse. See Section 4.3 for more details. locationValue - contains adescription of the physical geographical area where something currently exists. The phrase "location conveyance" describes scenarios in whichURI pointing to aSIP user agent client (UAC) is informingLocation Target's location (as auser agent server (UAS),PIDF-LO), and one orintermediate SIP server where the UAC is. A superset of thismore header parameters about that URI. There canalsobetrue as well, in whichoneUA(1) is telling another UA(2) where another Target is, meaning not necessarily where UA(1) is. The key to this is whether UA(1) has permission to retransmit that other Target's location. If yes, then this is valid. If no, then this is breaking a fundamental ruleor more locationValues withinthis extension. Location Conveyance is different from a UAC seeking the location the UAS. Location conveyance isa'sending location outGeolocation header in a SIP request. See Section 4.1 for more details. Location Generator - therequest' model, where 'askingfirst IP enabled device thatsomeone else'sbuilds the IP packet that transmits the PIDF-LO containing the Target's locationbe inLocation Information Server (LIS) - aresponse' is not discussed here. Geographic location in the IETF is discussedlogical server that stores geolocation records, which correspond to LbyR URIs, which point to those records. Location Object - Defined in RFC3693 (Geopriv Requirements) [RFC3693]. It defines a "Target"4119 as theentity whose location is being sought. In this case, this is the UA's (UA) location. A [RFC3693] "Using Protocol" defines how a "location Server" transmits a "Location Object" to a "Location Recipient" while maintainingPIDF-LO (XML scheme) format which includes thecontained privacy intentionsgeolocation oftheLocation Targetintact. This document describes the extension to SIP for how it complies with the Using Protocol requirements, where the location server is a UAin either civic address orProxy Server and thecoordinate form. Location Recipientis another UA- Defined in RFC3693 as any entity that understands geolocation (LbyR orProxy Server.LbyV) along a message path. Does not include entities that process a message containing geolocation that do not understand geolocation (i.e., layer 3 routers). Location Server - a logical IP server that transmits a PIDF-LO. This can betransmitted by-valuelogically combined with the Location Generator, orby-reference.could be an intermediary element - such as a LIS. Location Target - The entity whose location"value" inis being sought, whether or not thisSIP extensionentity isin the formaware ofa Presence Information Data Format - Location Object,this inquiry orPIDF-LO, as described in [RFC4119]. A PIDF-LOis even anXML Scheme specifically for carrying geographic location ofIP device. Location-by-Reference (more than one meaning) - aTarget. Location-by-value refers togeneral purpose term meaning aUA includingmessage containing aPIDF-LO asURI that points to abody partPIDF-LO (geolocation of aSIP message, sending thatLocationObject to another SIP element. Location-by-reference refers to a UA or proxy server includingTarget) not within this same message - a URIinthat logically locates aSIP message header field which can be dereferenced bygeolocation record of a LocationRecipient forTarget. The URI does not point to location within the same message as the URI. Location-by-Value - when a message contains the actual location of a LocationObject,Target, in the form of aPIDF-LO. Dereferencing can bePIDF-LO, within a part of the same message, usually pointed to by aSIP UA or"cid=" URI in aSIP server. As recitedGeolocation header. Using Protocol - as defined inRFC 3693, location often must be kept private. The Location Object (PIDF-LO) contains rules which provides guidance[RFC3693], a protocol that is deemed tothe Location Recipient and controls onward distribution and retention of the location. This document describesbe in compliance with the security and privacyconsiderations that must be applied to location conveyed with SIP. Another use for location is location-based routingaspects ofa SIP request, wherethechoiceGeopriv Requirements RFC [RFC3693], with good community verification. Instead of using thenext hop (and usually, the outgoing Request-URI) is determined byterms Location-by-Reference (or just by-reference) and Location-by-Value (or just by-value), this document will herein use thelocationacronyms LbyR and LbyV, respectively. The use of "cid=" implies LbyV, therefore, theUACuse of a "cid=" Reference URL, which isin the message by-value or by-reference.*not* a Location-by-Reference (LbyR). 2. Introduction This document describes howlocationLocation can beconveyed from"conveyed" (that is, transmitted over theUAC,Internet) from one SIP user agent (UA), or in some circumstances, a proxy server actingon its behalf, toin support of arouting proxy. How the location is actually usedUA, todetermine the next hop or Request-URIanother entity using SIP [RFC3261]. Here "Location" isbeyond the scopea description ofthis document. We refer tothe"emergency case". This refers tophysical geographical area where something currently exists. The phrase "location conveyance" describes scenarios in which aspecific, important use ofSIPlocation conveyanceuser agent client (UAC) is informing a user agent server (UAS), or intermediate SIP server where thelocationUAC is. A superset ofthe callerthis can also be true as well, in which one UA(1) isusedtelling another UA(2) where another Target is, meaning not necessarily where UA(1) is. The key todetermine which Public Safety Answering Point (PSAP)this isexpectedwhether UA(1) has permission toreceive an emergency call request for help (e.g., a call to 1-1-2 or 9-1-1). Thisretransmit that other Target's location. If yes, then this isan example of location-based routing. The location conveyedvalid. If no, then this isalso used by the PSAP to dispatch first responders to the caller's location. There are special security considerations, which make the emergency case unique, compared tobreaking anormal location conveyancefundamental rule withinSIP. 2. Conventions used in this document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" inthisdocument are to be interpreted as described in [RFC2119]. 3. Mechanisms 3.1 Overview of SIPextension. Location ConveyanceThis document defines a new SIP header: Geolocation. The Geolocation header field contains a URI which can either be a "cid:" URI (Content Identification), per [RFC2392], or a location-by-reference URI to be dereferenced byis different from aLocation Recipient to retrieveUAC seeking the locationof the Target UA. WheretheGeolocation header contains a "cid:", the URI points to a message body thatUAS. Location conveyance is a 'sending location out in theform of a PIDF [RFC3863], which was extendedrequest' model, where 'asking that someone else's location be in[RFC4119] to include location, asaPIDF-LO. Thisresponse' islocation-by-value, the actualnot discussed here. Geographic locationinformationin thePIDF-LOIETF isincluded in the body of the message. If the URIdiscussed inthe Geolocation header field isRFC 3693 (Geopriv Requirements) [RFC3693]. It defines ascheme other than "cid:", another protocol operation is needed by the SIP message recipient to obtain"Target" as the entity whose locationof the Target (UA). Thisislocation-by-reference. This document describesbeing sought. In this case, this is the UA's (UA) location. A [RFC3693] "Using Protocol" defines how a "location Server" transmits a "Location Object" to a "Location Recipient" while maintaining the contained privacy intentions of the Target intact. This document describes the extension to SIPpresence subscription [RFC3856]for how it complies with the Using Protocol requirements, where the location server is a UA or Proxy Server and the Location Recipient is another UA or Proxy Server. Location can beused as a dereference protocol.transmitted by-value or by-reference. TheGeolocation header, either with the PIDF-LOlocation "value" in this SIP extension is in the form of abodyPresence Information Data Format - Location Object, or PIDF-LO, as described in [RFC4119]. A PIDF-LO is an XML Scheme specifically for carrying geographic location of alocation-by-reference URI, can be included byTarget. LbyV refers to a UAinincluding a PIDF-LO as a body part of a SIPmessage. Arequest, sending that Location Object to another SIP element. LbyR refers to a UA or proxy servermay assert location of the UA by inserting the header field, which must specifyincluding alocation-by-reference URI. Since body parts cannot be inserted byURI in a SIPproxy server, location-by-value message body cannotrequest header field which can beinserteddereferenced by aproxy. The Geolocation header can have parameters that are associated withLocation Recipient for aURILocation Object, in theheader field. The "inserted-by" parameter has valuesform of"endpoint"a PIDF-LO. Dereferencing can be by a SIP UA or"server", indicating which entry addeda SIP server. As recited in RFC 3693, location often must be kept private. The Location Object (PIDF-LO) contains rules which provides guidance to themessage.Location Recipient and controls onward distribution and retention of the location. Thisheader parameter MAYdocument describes the security and privacy considerations that must beadded every time a newapplied to location conveyed with SIP. Another use for location isadded into a message. Retargeting means the Request-URIlocation-based routing ofthe request has changed to point at a new destination UAS. This is different than message routing, that all SIP proxies do. Ifa SIPrequest is retargeted based onrequest, where thelocation contained or referenced within that message,choice of the"used-for-routing" parameter MUST be added as a header parameter withinnext hop (and usually, theappropriate locationValue. Thereoutgoing Request-URI) isno mechanismdetermined bywhichtheveracitylocation ofthese parameters can be verified. They are hints to downstream entities on howthelocation informationUAC which is in the messagewas originated and used.by-value or by-reference. This documentcreatesdescribes how location can be conveyed from the UAC, or anew option tag: geolocation,proxy acting on its behalf, toindicate support fora routing proxy. How thethis extension by UAs. A new error message (424 Bad Location Information)location isalso defined inactually used to determine the next hop or Request-URI is beyond the scope of this document.Within this response is a new header indicating location-based errors, callWe refer to theGeolocation-Error header."emergency case". Thisheader has various codes that provide additional information about the typerefers to a specific, important use of SIP locationerror experienced by a Location Recipient. Both new headers, the header parameters,conveyance where thenew option-tag,location of thenew error response, and Geolocation-Error codes are IANA registered by this document. 3.2 The Geolocation Headercaller is used to determine which Public Safety Answering Point (PSAP) is expected to receive an emergency call request for help (e.g., a call to 1-1-2 or 9-1-1). Thisdocument definesis an example of location-based routing. The location conveyed is also used by the PSAP to dispatch first responders to the caller's location. There are special security considerations, which make the emergency case unique, compared to a normal location conveyance within SIP. Common terms are in Section 1. Section 3 provides an overview of SIP location conveyance. Section 4 details the modifications necessary to accomplish location conveyance. Section 5 gives decode examples of geolocation within SIP requests, both LbyV and LbyR. Section 6 articulates the SIP element type behaviors for location conveyance. Section 7 discusses Geopriv privacy considerations. Section 8 discusses security considerations. Section 9 IANA registers the modifications made to SIP by this document from section 4. 3. Overview of SIP Location Conveyance This document defines a new SIP header: Geolocation. The Geolocation header fieldMUST contain at least one of two types of URIs: ocontains alocation-by-reference URI,URI which can either be a "cid:" URI (Content Identification), as defined in [RFC2392], oroan LbyR -- to be dereferenced by acontent-ID indicating whereLocation Recipient to retrieve the locationis withinof the Target UA. Where the Geolocation header contains a "cid:", the URI points to a message bodyof this message A location-by-reference URIthat is in the form of apointerPIDF [RFC3863], which was extended in [RFC4119] to include location, as arecord on a remote node containing location ofPIDF-LO. This is LbyV, the actual locationTarget, typicallyinformation in theUAPIDF-LO is included inthis transaction. A location-by-value content-ID (cid-url) [RFC2392] indicates which messagethe bodypart contains location for this UA. Theof the message. If the URI in the Geolocation headerhasfield is a scheme other than "cid:", another protocol operation is needed by thefollowing BNF syntax: Geolocation = "Geolocation" HCOLON (locationValue *(COMMA locationValue)) locationValue = LAQUOT locationURI RAQUOT *(SEMI geoloc-param) locationURI = sip-URI / sips-URI / pres-URI / cid-url ; (from RFC 2392) / absoluteURI ; (from RFC 3261) geoloc-param = "inserted-by" EQUAL geoloc-inserter / "used-for-routing" / "recipient" EQUAL recipient-type / generic-param ; (from RFC 3261) geoloc-inserter = host-id / gen-value ; (from RFC 3261) recipient-type = "endpoint" / "routing-entity" / "both" / gen-value ; (from RFC 3261) sip-URI, sips-URI and absoluteURI are defined accordingSIP message recipient toRFC 3261. The pres-URIobtain the location of the Target (UA). This isdefined in RFC 3859 [RFC3859].LbyR. This document describes how a SIP presence subscription [RFC3856] can be used as a dereference protocol. Thecid-url is definedGeolocation header, either with the PIDF-LO in[RFC2392] to locate messagea bodyparts. This URI type MUSTor as a LbyR URI, can bepresentincluded by a UA in a SIPmessage ifrequest. A SIP proxy server can assert locationis by-value in that same message. Other protocols used inof theLocationUA by inserting the header field, by adding an LbyR URIMUST be reviewed againstinto theRFC 3693 criteria forGeolocation header value, even if there is aUsing Protocol.locationValue already there. Since body parts cannot be inserted by a SIP proxy server, LbyV message body cannot be inserted by a proxy. The Geolocation headerMAYcan haveone or more locationValues. SIP servers insertingparameters that are associated with alocationValue MUST add the new value to the end of the header value, such that the last locationValueURI in the headeris the most recent one added to the message. A locationValue has the following independent header parameters, o the "inserted-by="field. The "inserted-by" parameterprovidesindicates the host-id(alice.example.com -- which is the same as the "sent-by" parameter in a Via header)ofthe SIP entity that insertedwhich specific element added thislocationValue intoparticular location to the request. This header parameter isused to map to any Geolocation-Error message to determine which location, if thereincluded in every locationValue, and does not appear more than once per locationValue. The "inserted-by" parameter is especially useful for Location Recipients that receive more than oneinlocationValue within arequest, the error corresponds to. If an entity receives an Geolocation-Error withSIP request. Since implementations of ahost-idUA or SIP Server do notof this entity, the Geolocation-Error SHOULDknow they will beignored. o the "used-for-routing" parameter to inform recipients thatthelocation inlast entity before a Location Recipient, thislocationValue was used to routeoptional parameter is necessary within each locationValue. Retargeting means themessage towardsRequest-URI of theultimaterequest has changed to point at a new destination UAS. Thiscan occur more than once along the request's path. Because locationValues are inserted as last insertedislast in the header, the last locationValuedifferent than message routing, that all SIP proxies do. If a SIP request is retargeted based on themost recent one added to the message. This also giveslocation contained or referenced within that message, the "used-for-routing"headerparameter is addedintegrity -as a header parameter within thereceiving SIP entity knowsappropriate locationValue. There is no mechanism by whichlocationURIthemessage was routed upon. o the "recipient=" parameter to allow recipients to infer what SIP element type this locationValue was intended toveracity of these parameters can befor. The typesverified. They areo "endpoint" - meaning the ultimate destination UAS; o "routing-entity" - meaning SIP servers that route messages basedhints to downstream entities on how the locationcontents of requests;information in the message was originated ando "both" - meaning this locationValueused. Transport Layer Security isto be viewed by both types of SIP entities. Not all SIP entities have to read the locationValue withinexpected when aGeolocation header, thereforerequest contains aparameter value of "both" does not mean "every" SIP element receiving this request, it means all that careuser's location. Some implementations will choose topay attentionhave S/MIME to encrypt message bodies from source to destination. This document creates alocationValue. The default behavior of SIP entities readingnew option tag: geolocation, to indicate support for thelocationValue is that ifthisheader parameterextension by UAs. A new error response (424 Bad Location Information) isNOT present, the intended recipientalso defined in this document. Within this response isthe destination UAS. Each locationValue MUST contain exactly one "inserted-by" parameter,a new header indicatingwhich SIP entity addedlocation-based errors, call thelocationValue toGeolocation-Error header. This header has various codes that provide additional information about theSIP request. Eachtype of location error experienced by a Location Recipient. Both new headers, thethree types ofheaderparameters listed here MAY appear in any locationValue once. There MUST NOT be more than one "inserted-by=" parameter or one "used-for-routing" parameter or one "recipient=" parameter inparameters, thesame locationValue. However, there can be more than one locationValue innew option tag, thesame Geolocation header. This document defines the Geolocation header as validnew error response, and Geolocation-Error codes, which are defined inthe followingSection 4., are IANA registered by this document. 4. SIPrequests: INVITE [RFC3261], REGISTER [RFC3261], OPTIONS [RFC3261], BYE [RFC3261], UPDATE [RFC3311], INFO [RFC2976], MESSAGE [RFC3428], REFER [RFC3515], SUBSCRIBE [RFC3265], NOTIFY [RFC3265], PUBLISH [RFC3903] and PRACK [RFC3262] Discussing location using the PUBLISH Request Method is out of scopeModifications forthis document, but the Table 1 shows PUBLISH is to support LocationGeolocation Conveyancevia this extension.The followingtable extendsare sections detail thevalues in Table 2&3 of RFC 3261 [RFC3261]. Header field where proxy INV ACK CAN BYE REG OPT PRA ----------------------------------------------------------------standards track modifications to SIP for Location Conveyance. 4.1 The GeolocationR ar o - - o o o oHeaderfield where proxy SUB NOT UPD MSG REF INF PUB ---------------------------------------------------------------- Geolocation R ar o o o o o o o Table 1: Summary ofThis document defines and IANA registers a new SIP header: Geolocation, with the following ABNF [RFC5234]: GeolocationHeader= "Geolocation" HCOLON (locationValue *(COMMA locationValue)) locationValue = LAQUOT locationURI RAQUOT *(SEMI geoloc-param) locationURI = sip-URI / sips-URI / pres-URI / cid-url ; (from RFC 2392) / absoluteURI ; (from RFC 3261) geoloc-param = "inserted-by" EQUAL geoloc-inserter / "used-for-routing" / generic-param ; (from RFC 3261) geoloc-inserter = DQUOTE hostport DQUOTE / gen-value ; (from RFC 3261) sip-URI, sips-URI and absoluteURI are defined according to RFC 3261. TheGeolocation header field MAYpres-URI is defined in RFC 3859 [RFC3859]. The cid-url is defined in [RFC2392] to locate message body parts. This URI type MUST beincludedpresent inany one of the above requests byaUAC. A proxy MAY addSIP request if location is transmitted LbyV only. Other protocols used in theGeolocation header, butLocation URI MUSTNOT modify any pre-existing locationValue, including its associated header parameters of within an existingbe reviewed against the RFC 3693 criteria for a Using Protocol. The Geolocation headervalue, unlessMAY have oneofor more locationValues. SIP servers inserting a locationValue MUST add theexisting locationValues is usednew value toretargettherequest towards a new destination UAS. This is discussedend of the header value, such that the last locationValue insection 5.3. [RFC3261] states message bodies cannot be added by proxies. Therefore, any Geolocationthe headerfieldis the most recent one addedby a proxy MUST be into theform of a location-by-reference URI, in its ownmessage. A locationValue has the following independent headervalue. Addingparameters, o the "inserted-by=" parameter provides the hostport (alice.example.com -- which is the same as the "sent-by" parameter in anew locationValue to an existing Geolocation header SHOULD NOT occurVia header, with or withoutappropriate caution toa port number) of thefactSIP entity thatLocation Recipients might not understand how to process more than one location, giveninserted thisdocument's limited guidance as to whatlocationValue into the request. If a Location Recipientshould do when receiving more than onehas determined a supplied location(i.e., currently no priority instructions are given for which locationValue to use ifis in error, as thereare more than one). A Location Recipientcaneasilybeconfused by too much location information, producing undesirable results. The <tuple id> elementmore than one in any request, thePIDF-LO XML indicates whose location is contained in the PIDF-LO. Location Recipients receiving a location object, received directly or as the result of a dereference, MUST honor the usage element rules within that XML document, per RFC 4119. Such entities MUST NOT alter"inserted-by=" parameter is copied into therule set. 3.3 424 (Bad Location Information) Response Code If a UAS or SIP intermediary detects an errorlocationErrorValue ina request message specific tothelocation information supplied by-value or by-reference. The new 4XX level error is created here to indicate a problem withresponse indicating the locationin the request message. This document createserror, andIANA registersto whom thenewerrorcode: 424 (Bad Location Information) The 424 (Bad Location Information) response codeis for. Hence, this "inserted-by=" parameter MUST be present in each locationValue. If an entity receives an Geolocation-Error with arejection of the request, due to its location contents, indicating the location information was malformed orhostport notsatisfactory foridentifying this entity, therecipient's purpose, or could notGeolocation-Error MUST bedereferenced. Section 3.4 createsignored. o theGeolocation-Error header"used-for-routing" parameter toprovide more detail about what was wrong withinform recipients that the locationinformation in the request. This header MUST beinthe 424 response, containing a locationErrorValue for each invalidthis locationValueinwas used to route therequest (i.e., and one-for-one matching if all locationValues inmessage towards therequest were bad). Ifultimate destination UAS. "used-for-routing" can occur more thanone locationonce along the request's path. Because locationValues are inserted as last inserted ispresentlast ina request (by-value or by-reference), and any ofthelocationValuesheader, the last locationValue isgood fortheLocation Recipientmost recent one added toprocess, a 424the message. This also gives the "used-for-routing" header parameter added meaning - as the receiving SIP entity knows which locationURI the message was routed upon. Each locationValue MUST contain exactly one "inserted-by" parameter, indicating which SIP entity added the locationValue to the SIP request. There MUST NOT besent. The 424 is only appropriate whenmore than one "inserted-by=" parameter or one "used-for-routing" parameter in theLocation Recipient needs a locationValue andsame locationValue. However, thereare no locationValues includedcan be more than one locationValue inathe same Geolocation header. This document defines the Geolocation header as valid in the following SIPrequest that are usable by a recipient. A 424 (Bad Location Information) response is a final response within a transaction,requests: INVITE [RFC3261], REGISTER [RFC3261], OPTIONS [RFC3261], BYE [RFC3261], UPDATE [RFC3311], INFO [RFC2976], MESSAGE [RFC3428], REFER [RFC3515], SUBSCRIBE [RFC3265], NOTIFY [RFC3265], PUBLISH [RFC3903] anddoes not terminate a dialog. The UAC can use whatever means it knows of to verify/refresh itsPRACK [RFC3262] Discussing locationinformation before attempting a newusing the PUBLISH requestthat includes location. Thereisno cross-transaction awareness expected by either the UAS or SIP intermediary as a resultout of scope for thiserror message. The new 424 (Bad Location Information) error codedocument since it isIANA registered in Section 8part of Presence, therefore, for completeness, Table 1 shows PUBLISH is to support Location Conveyance via thisdocument. An initial set of location error of IANA registered Geolocation-Error codes areextension, but is not discussed further. The following table extends the values inSection 3.4Table 2&3 ofthis document. 3.4 The Geolocation-ErrorRFC 3261 [RFC3261]. HeaderProviding Error Granularity As discussedfield where proxy INV ACK CAN BYE REG OPT PRA ---------------------------------------------------------------- Geolocation R ar o - - o o o o Header field where proxy SUB NOT UPD MSG REF INF PUB ---------------------------------------------------------------- Geolocation R ar o o o o o o o Table 1: Summary of the Geolocation Header The Geolocation header field MAY be included inSection 3.3, more granular error notifications, specific to location errors within a received request, are required ifany one of theUAC is to know what was wrong withinabove requests by a UAC. A proxy MAY add theoriginal request. The Geolocation-ErrorGeolocation header, but MUST NOT modify any pre-existing locationValue, including its associated headeris created here for this purpose. Geolocation-Errorparameters of within an existing Geolocation header value, unless one of the existing locationValues is used toconvey location specific errors withinretarget the request towards aresponse. Additions to this IANA registered header require an RFCnew destination UAS. This is discussed in section 6.3. [RFC3261] states message bodies cannot bepublished. Geolocation-Error = "Geolocation-Error" HCOLON [locationErrorValue *(COMMA locationErrorValue)] locationErrorValue = location-error-code *(SEMI location-error-params) location-error-code = 1*3DIGIT location-error-params = location-error-node-id / DQOUTE location-error-host-id DQOUTE / CAtype *(SEMI CAtype) / DQOUTE location-error-code-text DQOUTE / generic-param ; from RFC3261 location-error-node-id = "node" EQUAL hostname; from RFC3261 location-error-host-id = "inserter" EQUAL hostname ; from RFC3261 CAtype = "CAtype" EQUAL civic-code *(SEMI "CAtype" EQUAL civic-code) location-error-code-text = "code" EQUAL quoted-string ; from RFC3261 civic-code = IANA registered CAtypes; from [IANA-civic] The Geolocation-Erroradded by proxies. Therefore, any Geolocation header field added by a proxy MUSTcontain at least one locationErrorValue to indicate what was wrong with the original locationValuebe in thecorresponding request. Ifform of aLocation Recipient experienced more than one errorLbyR URI, intheits own locationValueof the correspondingheader value. Adding a new locationValue to an an in-transit request SHOULD NOT occur for at least two reasons #1 - SIPrequest, thereServers are not the best Sighters, as defined by [RFC3693], of geographically where a UAC canbe one locationErrorValue per problem withbe; meaning thelocationValue inlocation information is not necessarily therequest (the except togreatest. There MAY be exceptions, but thisis involving CAtypes, which willSHOULD becovered later here). If there was something wrong withthe rule of thumb. #2 - without appropriate caution to the fact that Location Recipients might not understand how to process more than onelocationValue in a request, a corresponding locationErrorValue would be sent, one per error, in the response. Each locationErrorValue contains a 3-digit error code (defined in subsections to this section oflocation, given thisdoc) indicatingdocument's limited guidance as to whatwas wrong with the location(s) in the request. Each error type hasacorresponding quoted error text string that is human understandable. Also within the locationErrorValue is theLocation Recipientidentifier (the "node=") who experienced theshould do when receiving more than one locationerror, as well as an identifier of(i.e., currently no priority instructions are given for whichSIP entity (the "inserter=") the Location Recipient is told (in the locationValue) added thelocationValue tothis request. The "node=" and "inserter="use if there aredomain identifier of a SIP entity,more than one). A Location Recipient can easily be confused by too much location information, producing undesirable results. The <tuple id> element in thesame asPIDF-LO XML indicates whose location isenteredcontained in the"sent-by" parameter of the Via header for that entity [RFC3261]. As stated in section 18 of RFC 3261,PIDF-LO. Location Recipients receiving a location object, received directly or as theusage of FQDN is RECOMMENDED. Here are examplesresult ofboth node=bob.example.com inserter=alice.example.com Both "node=" and "inserter=" parameters MUST be present in all locationErrorValues inaresponse, unlessdereference, MUST honor the"inserted-by=" parameter was notusage element rules within that XML document, as defined in RFC 4119. Such entities MUST NOT alter therequest.rule set. 4.2 424 (Bad Location Information) Response Code This SIP extension creates a new Location specific response code, defined as follows. 424 (Bad Location Information) The"inserter=" parameter424 (Bad Location Information) response code iscopied from the "inserted-by=" parameter within the locationValue of the request. Here's why,aLocation Recipient that experienced the location problem withrejection of therequest needsrequest, due totell who added whichits locationintocontents, indicating theoriginal request. Since more than one SIP entity can insertlocationinto a request, all other SIP elements may be confused by receiving this error header. So, the header has to identify who it is for, so that all other SIP entities that read the header know to ignore it, since it isinformation was malformed or not satisfactory forthem. This is of particular use iftheoriginal UAC didrecipient's purpose, or could notinclude a locationValue in the original SIP request, but a SIP server alongbe dereferenced. Section 4.3 creates thepath did insert a locationValue. The locationErrorValue would travelGeolocation-Error header toeach SIP entity along the original path and tell both the server that included the locationValueprovide more detail about what was wrong with the locationand the UAC who did not know what the error meant. A worse case is when bothinformation in theoriginal UAC and a SIP server alongrequest. This header MUST be in thepath included424 response, containing alocationValue, but there was only something wrong with one of the locationValues. Without this identification of whichlocationErrorValue for each invalid locationValuewasinerror, both entities would reactthe request (i.e., andone would do so incorrectly. Finally, there can be a list of one or more CAtype civic-codes that are determined to beone-for-one matching if all locationValues inerror by the Location Recipient. PerhapstheLocation Recipient believesrequest were bad). If more than one location is present in a request (LbyV ormore CAtypes are missing,LbyR), andrequired in order to fully process the locationValue inany of therequest, or perhaps data entered in one or more CAtypeslocationValues iswrong, according togood for the LocationRecipient.Recipient to process, a 424 MUST NOT be sent. Thelist of CAtypes424 istaken from those thatonly appropriate when the Location Recipient needs a locationValue and there areIANA registered at [IANA-civic]. More than one locationErrorValueno locationValues included in aGeolocation-Error header is separatedSIP request that are usable by acomma. If more than one locationErrorValuerecipient. A 424 (Bad Location Information) response isinaresponse,final response within a transaction, andintended for the same "inserter=", the error codes SHOULD NOT conflict in meaning. In other words, two error codes (within separate locationErrorValues of the same response) SHOULD NOT give misleadingdoes not terminate a usage orinconsistent indicationsa dialog. The UAC can use whatever means it knows of totheverify/refresh its location"inserter=". Here is an example ofinformation before attempting aGeolocation-Error header Geolocation-Error: 106; "node=bob.example.com"; "inserter=alice.example.com"; CAtype=A3; CAtype=STS; code="incomplete location supplied" In this example, the Location Recipient (node=Bob) has determined the location suppliednew request that includes location. There is no cross-transaction awareness expected by either the"inserter=" (inserter=Alice) was not enough to determine where (Alice) was. Specifically, Bob has determined that CAtypes A3 (the city) and STS (the street type (Street, Road, Avenue, etc)) were not present to formUAS or any SIP intermediary as acomplete locationresult ofthe Alice. A subsequent request by Alice that included these two additional piecesthis error message. The new 424 (Bad Location Information) error code is IANA registered in Section 8 of this document. An initial set of locationinformation would tell Bob where Alice was. Notice the CAtypes that were inerrorare (in the above exampleof IANA registered Geolocation-Errorheader), according to the Location Recipient, listedcodes are inthe locationErrorValue.Section 4.3 of this document. 4.3 Theassociated CAtype values MUST NOT be listedGeolocation-Error Header As discussed inthe locationErrorValue. This is for privacy/security concerns. It is upSection 4.2, more granular error notifications, specific to location errors within a received request, are required if theLocation RecipientUAC is todetermine which CAtypes were in error, and only list those CAtypes inknow what was wrong within theresponse.original request. The"inserter=" entity MUST determine what to do about correcting each CAtype found in errorGeolocation-Error header is created here forsubsequent location conveyance. Usually,thiswould involve either refreshing its location information however it learned its location in the first place, or merely listing what informationpurpose. Geolocation-Error header islacking/wrongused totheconvey locationsender (i.e., the user) or its network management.specific errors within a response. Additions to this IANA registered header require an RFC be published. Thefollowing table extends the values in Table 2&3 of RFC 3261 [RFC3261]. Header field where proxy INV ACK CAN BYE REG OPT PRA ---------------------------------------------------------------- Geolocation-Error r ar o - - o o o o Header field where proxy SUB NOT UPD MSG REF INF PUB ---------------------------------------------------------------- Geolocation-Error r ar o o o o o o o Table 2: Summary ofGeolocation-Error header has the following ABNF [RFC5234]: Geolocation-ErrorHeader= "Geolocation-Error" HCOLON locationErrorValue *(COMMA locationErrorValue) locationErrorValue = location-error-code *(SEMI location-error-params) location-error-code = 1*3DIGIT location-error-params = location-error-node-id / location-error-host-id / location-error-code-text / generic-param ; from RFC3261 location-error-node-id = "node" EQUAL DQOUTE hostport DQOUTE ; from RFC3261 location-error-host-id = "inserter" EQUAL DQOUTE hostport DQOUTE ; from RFC3261 location-error-code-text = "code" EQUAL quoted-string ; from RFC3261 The Geolocation-Error headerfield MAY be included in any responseMUST contain at least one locationErrorValue to indicate what was wrong with the original locationValue in the corresponding request. If a Location Recipient experienced more than one error a particular locationValue of theabovecorresponding SIPrequests, so long as Geolocation wasrequest, there can be one locationErrorValue per problem with the locationValue in therequest part ofrequest. Each locationErrorValue contains one 3-digit error code indicating what was wrong with thetransaction. The choice of which SIP requests arelocation intable 2 above come from which Methods can optionally havetheGeolocation header (see section 3.2). Here is an example of a transaction thatrequest. Each error type has alocation error. In this case, Bob respondscorresponding quoted error text string that is human understandable. If there was something wrong with more than one locationValue in a424 (Bad Location Information) response, includingrequest, aGeolocation-Error header, is in Figure 1. Alice Bob | | | Request w/ Location | |--------------------------------------->| | | | | | 424 (Bad Location Information) | | with Geolocation-Error containing | | 106 (Incompletecorresponding locationErrorValue would be sent, one per error, in the response. Each locationErrorValue contains the LocationInformation) | |<---------------------------------------| | | Figure 1. Basic Transaction with 424 and Geolocation-Error Header The following subsections provideRecipient identifier (the "node=" parameter) which experienced the location error, as well as aninitial listidentifier oflocation specific granular codes for anywhich SIPresponses, includingentity (the "inserter=" parameter) thenew 424 (BadLocationInformation) response. If more than one specific Geolocation-Error codeRecipient isapplicable for a response, each MUST be intold (in theresponse. Geolocation-Error Code 100 islocationValue) added this problematic locationValue to thegeneric 'location was supplied, but not understood' error. Ifrequest. The "node=" and "inserter=" are the domain identifier of amoreSIP entity, with the ability to have the same host communicate on different ports - and have port specificcode applies, a code 100identification. This isunnecessary. 3.4.1 Geolocation-Error Code 100 Location Not Understood Geolocation-Error code 100 "Location Format not supported" meansthelocation format suppliedsame as is entered in therequest, by-value or by-reference, was not supported. This code means"sent-by" parameter of therecipient understoodVia header for thatlocation was includedentity [RFC3261]. As stated in section 18 of RFC 3261, themessage, but the formatusage of FQDN isnot supported. PerhapsRECOMMENDED. Here are examples of both locationErrorValue parameters node="bob.example.com" inserter="alice.example.com" Both theformat was a freeform text format or data-URL"node=" andthe recipient only understood location"inserter=" parameters MUST be present inRFC 4119 PIDF-LO format (civic or x.y(.z) coordinate). This error code applies when a recipient has difficulty parsing the location suppliedall locationErrorValues in a response, unless therequest. If the format is understood, but"inserted-by=" parameter was notdesired, an error code 101 or 102 MUST be returnedin the locationValue of a424 response, depending on which location format is desired. The Location Recipient returns an error code 101 or 102 when it only understands one location format (coordinate or civic) and did not receive that format. If a more specific error coderequest (which isappropriate inaresponse, including error code 100violation of this document). The "inserter=" parameter value isunnecessary. error-text-string: Location format not supported An example usage in a SIP 424 response: Geolocation-Error: 100; "node=bob.example.com"; "inserter=alice.example.com"; CAtype=A3; CAtype=STS; code="Location Format not supported" 3.4.2 Geolocation-Error Code 101 Coordinate-location Format Desired Geolocation-Error code 101 "Coordinate-location Format Desired" means the location format supplied incopied from therequest (probably formatted in civic), by-value or by-reference, was understood and supported, but that"inserted-by=" parameter within therecipient, or an application onlocationValue of therecipient, canrequest. No manipulation orprefers to only process location in the coordinate-location format. A typical reactioncalculation is necessary toreceivingaccomplish this. Here's why thiscodeisto resend the original message with location formatted in coordinate instead. error-text-string: Coordinate-location Format Desired An example usage innecessary, aSIP 424 response: Geolocation-Error: 101; "node=bob.example.com"; "inserter=alice.example.com"; code="Coordinate-location Format Desired" 3.4.3 Geolocation-Error Code 102 Civic-location Format Desired Geolocation-Error code 102 "Civic-location Format Desired" meansLocation Recipient that experienced the locationformat supplied inproblem with the request(probably formatted in coordinate), by-value or by-reference, was understood and supported, but thatneeds to tell therecipient, or an application onspecific SIP entity which added therecipient, can or prefers to only process locationlocationValue inthe civic-location format. A typical reaction to receiving this code is to resenderror into the originalmessage with location formatted in civic instead. error-text-string: Civic-location Format Desired An example usage in arequest. Since more than one SIP424 response: Geolocation-Error: 102; "node=bob.example.com"; "inserter=alice.example.com"; code="Civic-location Format Desired" 3.4.4 Geolocation-Error Code 103 Cannot Parse Location Supplied Geolocation-Error code 103 "Cannot parse location supplied" means theentity can insert locationprovided, whether by-value or by-reference, ininto a requestis not well formed. error-text-string: Cannot parse location supplied An example usageinatransit, all other SIP424 response: Geolocation-Error: 103; "node=bob.example.com"; "inserter=alice.example.com"; code="Cannot parse location supplied" 3.4.5 Geolocation-Error Code 104 Cannot Find Location Information Geolocation-Error code 104 "Cannot find location" means location was expectedelements may be confused by receiving this error header, were it to remain generic to all entities in therequest, but the recipient cannot find it. This can be either becauseresponse path. So, thecid: pointedheader has toa message body partidentify who it is for, so that all other SIP entities that read the header know to ignore it, since it is notpresentfor them. This is of particular use if the original UAC did not include a locationValue in the original SIP request,there was no location message body part, or what is dereferenced atbut a SIP server along thesupplied locationURIpath didnot returninsert aPIDF-LO, or location is encrypted/opaquelocationValue. The locationErrorValue would travel to each SIP entity along therecipient. A typical reaction to receiving this code is fororiginal path and tell both thelocation sender to verifyserver thatit has indeedincludedlocation information intherequest inlocationValue what was wrong with theproperly indicated placelocation andthen to sendtherequest again. error-text-string: Cannot find location An example usage inUAC who did not know what the error meant. This will cause confusion if left without this indication. A worse case is when both the original UAC and a SIP424 response: Geolocation-Error: 104; "node=bob.example.com"; "inserter=alice.example.com"; code="Cannot find location" 3.4.6 Geolocation-Error Code 105 Conflicting Locations Supplied Geolocation-Error code 105 "Conflicting Locations Supplied" meansserver along the path included aLocation Recipient received more thanlocationValue, but there was only something wrong with onelocation describing where the Target is, and is either unsure which whole location is true or which partsofmultiple locations make up wheretheTarget is. This is generally a caselocationValues. Without this identification ofeither too much information, and the information is pointing towards at least two different positions, confusing the recipient. A possible scenario exists inwhichat least two locations arelocationValue was inthe request, perhapserror, both entities would react and oneor more were addedwould do so incorrectly. More than one locationErrorValue in a Geolocation-Error header is separated byproxies along the path of the request, each pointing to where the UAC is. If these are pointing at different positions - the UAS does not know which to trust. This error code unfortunately means the UAS cannot solve for which location needs to be ignored to make upacomplete location, or how to prioritizecomma. If more than onelocation over all otherslocationErrorValue is in a response, and intended for the samerequest. A typical reaction to receiving this"inserter=", each error codeisMUST be unique toreducethis "inserter=" entity, and thenumber of different locations suppliederror codes SHOULD NOT conflict in meaning. In other words, two error codes (within separate locationErrorValues of therequest, if under control by the Target, and send another messagesame response) SHOULD NOT give misleading or inconsistent indications to theLocation Recipient. error-text-string: Conflicting Locations Supplied Anlocation "inserter=". Here is an exampleusage inof aSIP 424 response: Geolocation-Error: 105; "node=bob.example.com"; "inserter=alice.example.com"; code="Conflicting Locations Supplied" 3.4.7 Geolocation-Error Code 106 Incomplete Location SuppliedGeolocation-Errorcode 106 "Incompleteheader Geolocation-Error: 200; code="Retry LocationSupplied" means there is not enough location information, by-value or retrieved by-reference, to determine where the location Target is. Perhaps the coordinate precision is not fine enough, or the civic address lacks the fields to informLater"; node="bob.example.com"; inserter="alice.example.com"; The following table extends theUAS or proxyvalues in Table 2&3 of RFC 3261 [RFC3261]. Header field where proxy INV ACK CAN BYE REG OPT PRA ---------------------------------------------------------------- Geolocation-Error r ar o - - o o o o Header field where proxy SUB NOT UPD MSG REF INF PUB ---------------------------------------------------------------- Geolocation-Error r ar o o o o o o o Table 2: Summary of theTarget is. This might be true for request retargeting, or it might be true for first responder dispatch or pizza delivery (for example, because the street address is missing). A typical reactionGeolocation-Error Header The Geolocation-Error header field MAY be included in any response toreceiving this code is forone of thelocation sender to convey more (precise) location information, if doingabove SIP requests, sois allowed by local policy. error-text-string: Incomplete location supplied An example usagelong as Geolocation was ina SIP 424 response: Geolocation-Error: 106; "node=bob.example.com"; "inserter=alice.example.com"; code="Incomplete location supplied" 3.4.8 Geolocation-Error Code 107 Cannot Dereference Geolocation-Error code 107 "Cannot dereference" meanstheactrequest part ofdereferencing failed to return the Target's location. This generally meansthesupplied URI is bad. error-text-string: Cannot dereference An example usagetransaction. The choice of which SIP requests are in table 2 above come from which Methods can optionally have the Geolocation header (see section 4.1). That said, a UAC MUST ignore aSIP 424 response: Geolocation-Error: 107; "node=bob.example.com"; "inserter=alice.example.com"; code="Cannot dereference" 3.4.9 Geolocation-Error Code 108 Dereference DeniedGeolocation-Errorcode 108 "Dereference Denied" means there was insufficient authorization to dereferenceheader value if it did not include a Geolocation header value in theTarget's location. error-text-string: Dereference Denied Anrequest part of the transaction. Here is an exampleusage inof aSIP 424 response: Geolocation-Error: 108; "node=bob.example.com"; "inserter=alice.example.com"; code="Dereference Denied" 3.4.10 Geolocation-Error Code 109 Dereference Timeout Geolocation-Error code 109 "Dereference Timeout" means the dereferencing nodetransaction that hasnot received the Target's location withinareasonable timeframe. error-text-string: Dereference Timeout An example usage inlocation error. In this case, Bob responds with aSIP424response: Geolocation-Error: 109; "node=bob.example.com"; "inserter=alice.example.com"; code="Dereference Timeout" 3.4.11 Geolocation-Error Code 110 Cannot Process Dereference(Bad Location Information) response, including a Geolocation-Errorcode 110 "Cannot process Dereference" means the dereference protocol has receivedheader, is in Figure 1. Alice Bob | | | Request w/ Location | |------------------------------------------------>| | | | | | 424 (Bad Location Information) | | with Geolocation-Error containing | | 200 ("Retry Location Later" (with same data)) | |<------------------------------------------------| | | Figure 1. Basic Transaction with 424 and Geolocation-Error Header The following subsections provide anoverload condition error, indicating theinitial list of locationcannot be accessed at this time. If abased errors for any SIPor SIPS scheme were used to dereference the Target's location, and a 503 (Service Unavailable) were the response to the dereference query, this Geolocation-Error code 11 would be placed innon-100 response, including the new 424 (Bad Location Information)responseresponse. These error codes are divided into 5 categories, each based on receiver (of the response) actionable reactions to these errors. o 100 "Cannot Process Location" o 200 "Retry Location Later" (with same data) o 300 "Retry Location Later" (with device updated location) o 400 "Permission Necessary" o 500 "Location Information Denial" All 5 of thelocation sender. error-text-string: Cannot process Dereference An example usage inabove error codes MUST be implemented to comply with this specification. Each of these actionable errors is given aSIP 424 response: Geolocation-Error: 110; "node=bob.example.com"; "inserter=alice.example.com"; code="Cannot process Dereference" 3.4.12 Geolocation-Error Code 120 Unsupported Scheme - SIP desired Geolocation-Error3 digit error code120 "Unsupported Scheme - SIP desired" means the location dereferencer cannot dereference using the location-by-reference URI scheme supplied because it does not supportcategory, meaning any future 1XX, 2XX, 3XX, 4XX, and 5XX error codes defined will have thenecessary protocolsame action expected by X00 categories. If another action is expected todo this. This code meansoccur with a newly defined error code, it MUST outside the 100-599 range. 100 unit ranges are OPTIONAL for future error codes, but they apply here. 4.3.1 LocationRecipient can dereference the Target'sError: 100 "Cannot Process Location" The locationusing a SIP-URI scheme. There can be more than one locationErrorValue inerror 100 "Cannot Process Location" indicates to a Geolocation-Errorheader, indicatingrecipient that what they supplied in a request, as far as location is concerned, cannot be processed at thiscontexttime. This only has to do with therecipient can dereference using each scheme protocol included inlocation that theGeolocation-Error header. Notelocation "inserter=" added to the request, and not about the overall request thatindicating SIPwas sent. Action(s) to beusedtaken by Geolocation-Error receiver todereference location is requesting the transmissiona 1XX: This error gives no guidance on what tobe in cleartext, whichdo next. It is asecurity risk. Therefore,general information indication to a SIP "inserter=" entity that there was an unspecific problem with the location supplied in the SIPscheme SHOULDrequest. Implementations MAY choose to react in a way as if this "inserter=" entity received a 2XX or 3XX location error. A 4XX error MUST NOT beusedmisunderstood here, as that error category involves human intervention todereference. An exception can be made for emergency calling, preferably after SIPS has been attempted, and failed. A typical reactiongrant, or not, permission toreceivingreveal "inserter=" location when thiscode would beis likely not desired. The text string of "Cannot Process Location" is RECOMMENDED, but not mandatory forthe location sender to send a URI with the sip scheme. error-text-string: unsupported scheme - SIP desired An exampleusage ina SIP 424 response: Geolocation-Error: 120; "node=bob.example.com"; "inserter=alice.example.com"; code="unsupported scheme - SIP desired" 3.4.13 Geolocation-Error Code 121 Unsupported Scheme - SIPS desired Geolocation-Error code 121 "Unsupported Scheme - SIPS desired" means thethis error. Implementations MAY use another text string. An example of this locationdereferencer cannot dereference using the location-by-reference URI scheme supplied because it does not support the necessary protocol to do this.error is here: Geolocation-Error: 100; code="Cannot Process Location"; node="bob.example.com"; inserter="alice.example.com"; Thiscode means the Location Recipient can dereference the Target'scategory covers locationusing a SIPS-URI scheme. There canerrors 1XX; meaning there MAY be morethan one locationErrorValue in a Geolocation-Error header, indicating inspecific errors added to thiscontext the recipient can dereference using each scheme protocol included in the Geolocation-Error header. error-text-string: unsupported scheme - SIPS desired An example usagecategory in future effort(s). The same basic actionable reaction is expected by aSIP 424 response: Geolocation-Error: 121; "node=bob.example.com"; "inserter=alice.example.com"; code="unsupported scheme - SIPS desired" 3.4.14 Geolocation-Error Code 122 Unsupported Scheme - pres desired Geolocation-Error code 122 "Unsupported Scheme - pres desired" means thelocationdereferencer cannot dereference using the location-by-reference URI scheme supplied because it does not support the necessary protocol"inserter=" entity todo this. This code means theany 1XX location error. 4.3.2 LocationRecipient can dereference the Target'sError: 200 "Retry Location Later" (same data) The locationusing a PRES-URI scheme. There can be more than one locationErrorValue inerror 200 "Retry Location Later" (same data) indicates to a Geolocation-Errorheader, indicating in this context therecipientcan dereference using each scheme protocol includedthat what they supplied in a request, as far as location is concerned, cannot be processed at this time, but to retry this request, without changing theGeolocation-Error header. error-text-string: unsupported schemelocation information, at a later time -pres desired An example usagein aSIP 424 response: Geolocation-Error: 122; "node=bob.example.com"; "inserter=alice.example.com"; code="unsupported scheme - pres desired" 3.5 The Geolocation Option Tag This document creates and IANA registers onenewoption tag: "geolocation". This option tagSIP request. It is possible that the Location Recipient cannot process location at this time, or there was a timeout during dereferencing, if a LbyR were sent. Action(s) to beused, per RFC 3261, in the Require, Supported and Unsupported headers. Whenevertaken by Geolocation-Error receiver to aUA wants2XX: Reactions toindicate support for this SIP extension,a 2XX location error are to try again, without having to update thegeolocation option taglocation supplied originally. There is no constraints on how long this new try has to wait, unless there isincluded inaSupportedRetry-After headerof the SIP message. Including the geolocation option-tag within an Unsupported header of a 420 (Bad Extension) response is appropriate whenin aUAS424 response. Implementations SHOULD choose to react by preparing, however this "inserter=" does or can, to queue another message with the same location information, provided the "inserter=" does notsupportmove between the time of the original request and the transmission time of the new request. Implementations MAY choose whether or not to inform the user of thisGeolocation extension. A UAC addingerror. The text string of "Retry Location Later" is RECOMMENDED, but not mandatory for usage in thisoption-tag to a Require header field indicateserror. Implementations MAY use another text string toa UASinform the user that location was not received by the UASMUST support(i.e., the called party). An example of thisextension in orderlocation error is here: Geolocation-Error: 200; code="Retry Location Later"; node="bob.example.com"; inserter="alice.example.com"; This category covers location errors 2XX; meaning there MAY be more specific errors added tocontinue processing the message, or sendthis category in future effort(s). The same basic actionable reaction is expected by a420 response backlocation "inserter=" entity to any 2XX location error. 4.3.3 Location Error: 300 "Retry Location Later" (device updated location) The location error 300 "Retry Location Later" (device updated location) indicates tothe UAC. Some environments might useaRequire headerGeolocation-Error recipient that what they supplied in a request, as far as location is concerned, cannot be processed at thisway,time, butit should be used with cautiontoprevent unnecessary communications problems. A UAC SHOULD NOT includeretry thisoption tagrequest, once the location information has been updated, in aProxy-Require header, sincenew SIP request. Action(s) to be taken by Geolocation-Error receiver to aUAC is not likely3XX: 3XX location errors indicate the "inserter=" SIP entity needs tounderstandrefresh its location, or make thetopology oflocation information supplied more complete, without notifying theinfrastructure, and therefore would not understand which proxy will douser of this error. 3XX error are to be solved by without user intervention. This document gives no guidance how this is accomplished, given thelocation-based routing function, if any. A potentially bad scenario would havenumber of ways a UAC can learn its location, or a SIP intermediary can Sight a UAC, as defined in [RFC3693]. This 300 location error currently does not indicate what exactly was wrong with thefirst proxylocation supplied, according to the Location Recipient. That is left for a future effort. Implementations MAY choose whether or notsupportto inform the user of thisextension,error. The text string of "Retry Location Later" is RECOMMENDED, buta subsequent proxy does. This would resultnot mandatory for usage inno communications pastthis error. Implementation MAY use another text string to inform thefirst proxy, which MUST senduser that location was not received by the420 back under these circumstances. 3.6 Using sip/sips/pres asUAS (i.e., the called party). A 3XX location error would be used where the Location Recipient cannot find or cannot parse the location supplied, believing that aDereference Scheme Ifautomated refresh and retry could fix the problem. Also, alocation-by-reference (LbyR) URI is included3XX location error would be used when a Location Recipient did not find any location in a SIP request,it MUSTbut was expecting it. Perhaps an emergency request was made that did not contain location. The retry in this case would be ina locationValuethe form of an UPDATE Method request, containing location (LbyV or LbyR). An example of this location error is here: Geolocation-Error: 300; code="Retry Location Later"; node="bob.example.com"; inserter="alice.example.com"; This category covers location errors 3XX; meaning there MAY be more specific errors added to this category in future effort(s). The same basic actionable reaction is expected by a location "inserter=" entity to any 3XX location error. 4.3.4 Location Error: 400 "Permission Necessary" The location error 400 "Permission Necessary" indicates to a Geolocation-Error recipient that when they set a particular SIP request, they included location in that request without giving permission in the request for a (or any) SIP server to look at that location information to route the message at the intended recipient (i.e., the UAS, or the called party). Action(s) to be taken by Geolocation-Error receiver to a 4XX: 4XX location errors indicate to the UAC (i.e., the calling party), that they need to grant permission to a SIP intermediary server to look at the supplied location to complete the message routing. This indication MUST require human user intervention, as the rulemaker of the policy on whether or not their location is to be revealed. The user of the location "inserter=" device can choose to grant permission to this SIP intermediary server to allow this request to be routed, or the user can deny this location revelation (request by the server). It is the user's choice as rulemaker. Implementations MUST provide the user, as rulemaker, a clear indication that permission to consume their location is sought by an entity other than who that user is calling. The text string of "Permission Necessary" is RECOMMENDED, but not mandatory for usage in this error. Implementation MAY use another text string to inform the user that location is being sought by an intermediary (i.e., not the called party). This document gives no guidance how this intervention is accomplished, given the number of ways a UAC can accomplish this (i.e., audio prompt or toggle or keystroke on their UA). This 400 location error currently does not indicate exactly which SIP server indicates it needs the location revealed. That said, the "node=" FQDN address could be supplied, telling the user (via audio or video indication) which SIP entity wants this location. Perhaps the user can know in some circumstances whether this is an appropriate "node=" (domain). All of this is left for a future effort(s). An example of this location error is here: Geolocation-Error: 400; code="Permission Necessary"; node="bob.example.com"; inserter="alice.example.com"; This category covers location errors 4XX; meaning there MAY be more specific errors added to this category in future effort(s). The same actionable solution is expected to be afforded to the UAC user, as rulemaker, to any 4XX location error. 4.3.5 Location Error: 500 "Location Information Denial" The location error 500 "Location Information Denial" indicates to a Geolocation-Error recipient that what they supplied in a request, as far as location is concerned, has been denied at this time. This only has to do with the location that the location "inserter=" added to the request, and not about the overall request that was sent. If this were applied to the SIP request itself, this would equate to a 6XX Global error. Action(s) to be taken by Geolocation-Error receiver to a 1XX: This error gives no guidance on what to do next, other than to not try again with this same location supplied. If the Location Recipient believed that merely refreshing, or in some other way alter or augment the location supplied would work in a new request, then a 3XX location error SHOULD have been returned (to the "inserter="). An example of why this 5XX could have been returned is if location were sent as an LbyR, and the LIS denied the dereference request from the Location (reference) Recipient, this is the expected location error returned to the "inserter=" entity. Implementations MUST NOT interpret anything else into this location error other than it is considered a location based denial error. This does not mean the SIP request was denied, or even had an error, unless the response was a 424. Otherwise, this only has to do with the location part of the request. The difference between a 1XX and a 5XX location error is simple. A 1XX location error is a case of a Location Recipient either not knowing or not being able to tell the "inserter=" entity what was wrong with the location supplied in a SIP request. Whereas, a 5XX location error is where the location was purposely, and actively denied (or declined) from being received by the Location Recipient entity, or its user. This could occur in a UAS or SIP server. If implementations choose to inform the UAC user of this error, the text string of "Location Information Denial" is RECOMMENDED, but not mandatory for usage in this error. Implementations MAY use another text string. An example of this location error is here: Geolocation-Error: 500; code="Location Information Denial"; node="bob.example.com"; inserter="alice.example.com"; This category covers location errors 5XX; meaning there MAY be more specific errors added to this category in future effort(s). The same basic actionable reaction is expected by a location "inserter=" entity to any 5XX location error. The following are some additional failure scenarios, with which error code is to be used for each at the time of this document: - Scheme (sip:, or sips:, or pres:, or another one) of the LbyR URI isn't supported (100) - Format (geo or civic) isn't supported (100) - Cannot parse location (100) - Can't find LIS (no access or no path (100) or denied access(500)) - Dereference failed (timeout) (200) - Insufficient location info supplied (300) - Cannot find location in message (300) 4.4 The 'geolocation' Option Tag This document creates and IANA registers one new option tag: "geolocation". This option tag is to be used, as defined in RFC 3261, in the Require, Supported and Unsupported headers. Whenever a UA wants to indicate support for this SIP extension, the geolocation option tag is included in a Supported header of the SIP request. 4.5 Using sip/sips/pres as a Dereference Scheme If a LbyR (LbyR) URI is included in a SIP request, it MUST be a SIP, SIPS or PRES-URI. When PRES: is used, if the resulting resolution, as defined in [RFC3856], resolves to a SIP: or SIPS: URI, this section applies. This document IANA registers 3 mandatory to implement URI schemes for LbyR: o SIP: o SIPS: o PRES: These 3 are IANA registered in Section 9.6. These schemes MUST be implemented according to this document. absoluteURI is not mandatory to implement. Dereferencing a Target's location using SIP or SIPS MUST be accomplished by treating the URI as a presence URI and generating a SUBSCRIBE request to a presence server as defined in [RFC3856] using the 'presence' event package. The resulting NOTIFY will contain a PIDF, which MUST contain a PIDF-LO. See Figure 2. for a basic message flow for a dereference. When used in this manner, SIP is a Using Protocol as defined in [RFC3693] and elements receiving location MUST honor the 'usage-element' rules as defined in this extension. Alice Location Server Bob | | | INVITE w/ LbyR URI | |-------------------------------------------------------->| | | | | 200 (OK) | |<--------------------------------------------------------| | | | | | SUBSCRIBE to LbyR URI | | |<-----------------------------| | | 200 (OK) | | |----------------------------->| | | | | | NOTIFY w/ PIDF-LO | | |----------------------------->| | | 200 (OK) | | |<-----------------------------| | | | Figure 2. Location-by-Reference and Dereferencing In Figure 2., Alice sends Bob her location in a LbyR URI. Bob receives this LbyR URI in the INVITE and generates a new transaction (SUBSCRIBE) to retrieve the PIDF-LO of Alice. If accepted, the PIDF-LO will be in the NOTIFY request from the Location Server. This is the first instance between Alice and Bob that Alice's location is in any message, therefore it is sent only once, from the Location Server to Bob. A dereference of a LbyR URI using SUBSCRIBE is not violating a PIDF-LO 'retransmission-allowed' element value set to 'no', as the NOTIFY is the only message in this multi-message set of transactions that contains the Target's location, with the location recipient being the only SIP element to receive location - which is the purpose of this extension: to convey location to a specific destination. 5. Geolocation Examples This section contains are two examples of messages providing location. One shows LbyV with coordinates, the other shows LbyR. The example for (Coordinate format) is taken from [RFC3825]. A civic format example of the same position on the earth as is in the coordinate format example is in appendix B, which is taken from [RFC4776]. The differences between the two formats are within the <gp:location-info> of the examples. Other than this portion of each PIDF-LO, the rest is the same for both location formats. The key to the provided samples is in the Geolocation header, which has a different type of URI, based on the different means of location conveyance. Section 5.1 shows a "cid:" URI, indicating this SIP request contains a LbyV message body - which is in the form of a PIDF-LO. Section 5.2 shows a LbyR URI indicating location is to be acquired via an indirection dereference mechanism, which is determined by the scheme of URI supplied. 5.1 Location-by-value (Coordinate Format) This example shows an INVITE message with a coordinate, or coordinate location. In this example, the SIP request uses a sips-URI [RFC3261], meaning this message is TLS protected on a hop-by-hop basis all the way to Bob's domain. INVITE sips:bob@biloxi.example.com SIP/2.0 Via: SIPS/2.0/TLS pc33.atlanta.example.com;branch=z9hG4bK74bf9 Max-Forwards: 70 To: Bob <sips:bob@biloxi.example.com> From: Alice <sips:alice@atlanta.example.com>;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.example.com Geolocation: <cid:target123@atlanta.example.com> ;inserted-by="alice@atlanta.example.com" Supported: geolocation Accept: application/sdp, application/pidf+xml CSeq: 31862 INVITE Contact: <sips:alice@atlanta.example.com> Content-Type: multipart/mixed; boundary=boundary1 Content-Length: ... --boundary1 Content-Type: application/sdp ...SDP goes here --boundary1 Content-Type: application/pidf+xml Content-ID: alice123@atlanta.example.com <?xml version="1.0" encoding="UTF-8"?> <presence xmlns="urn:ietf:params:xml:ns:pidf" xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" xmlns:cl="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr" entity="pres:alice@atlanta.example.com"> <tuple id="sg89ae"> <timestamp>2007-12-02T14:00:00Z</timestamp> <status> <gp:geopriv> <gp:location-info> <gml:location> <gml:Point srsName="urn:ogc:def:crs:EPSG::4326"> <gml:pos>33.001111 -96.68142</gml:pos> </gml:Point> </gml:location> </gp:location-info> <gp:usage-rules> <gp:retransmission-allowed>no</gp:retransmission-allowed> <gp:retention-expiry>2007-12-07T18:00:00Z</gp:retention- expiry> </gp:usage-rules> <gp:method>DHCP</gp:method> <gp:provided-by>www.example.com</gp:provided-by> </gp:geopriv> </status> </tuple> </presence> --boundary1-- The Geolocation header field from the above INVITE... Geolocation: <cid:target123@atlanta.example.com> ...indicates the content-ID location [RFC2392] within the multipart message body of where location information is, with SDP being the other message body part. The "cid:" eases parsing of message bodies. If the Geolocation headerand it MUST be a SIP, SIPS or PRES-URI . When PRES: is used, if the resulting resolution, per [RFC3856], resolves to a SIP: or SIPS: URI,field were thissection applies. Useinstead: Geolocation: <sips:server5.atlanta.example.com/target123> ...the presence of something otherprotocols for dereferencing of a PRES: URIthan "cid:" indicates an LbyR isnot defined, and such useincluded in this message. It issubjectexpected that any node wanting toreview against RFC 3693 Using Protocol criteria. Dereferencing a Target's location using SIP or SIPS MUST be accomplished by treating the URI as a presence URI and generating a SUBSCRIBE requestknow where user target123 is would subscribe toa presence server as per [RFC3856] usingserver5 to dereference the'presence' event package. The resulting NOTIFY will contain a PIDF, which MUST contain a PIDF-LO. Seesips-URI (see Figure 2. fora basicthis messageflowflow, and Section 5.2 fora dereference. When used inthismanner, SIP is a Using Protocol per [RFC3693] and elements receivingdecoded example). The returning NOTIFY would contain Alice's locationMUST honor the 'usage-element' rulesin a PIDF-LO, asdefinedif it were included inthis extension. Alice Location Server Bob | | |a message body (part) of the original INVITEw/ Location-by-Reference URI | |-------------------------------------------------------->| | | | | 200 (OK) | |<--------------------------------------------------------| | | | | | SUBSCRIBE to LbyR URI | | |<-----------------------------| | | 200 (OK) | | |----------------------------->| | | | | | NOTIFY w/ PIDF-LO | | |----------------------------->| | | 200 (OK) | | |<-----------------------------| | | | Figure 2. Location-by-Reference and Dereferencing In Figure 2., Alice sends Bob her location inhere. 5.2 Location-by-reference Below is an INVITE request with a LbyRURI. Bob receives this LbyRURI instead of a LbyV PIDF-LO message body part shown in Section 5.1. It is up to theINVITE and generates a new transaction (SUBSCRIBE)location recipient toretrievedereference Alice's location at thePIDF-LO of Alice. If accepted,Atlanta LIS server containing thePIDF-LO will be inlocation record. Dereferencing, if done with SIP, is accomplished by theNOTIFYLocation Recipient sending a SUBSCRIBE requestfromto theLocation Server. ThisURI reference for Alice's location. The received NOTIFY is the firstinstance between Alice and Bob thatSIP request containing Alice'slocation isUA location, as a PIDF-LO message body (see Figure 2 for this message flow example). The NOTIFY, inany message, therefore itthis case, issent only once, fromtheLocation Server to Bob. A dereference of a location-by-reference URI using SUBSCRIBESIP request that is conveying location, and notviolating a PIDF-LO 'retransmission-allowed' element value set to 'no', astheNOTIFYINVITE. There is no retransmission of location in this usage. INVITE sips:bob@biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS pc33.atlanta.example.com ;branch=z9hG4bK74bf9 Max-Forwards: 70 To: Bob <sips:bob@biloxi.example.com> From: Alice <sips:alice@atlanta.example.com>;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.example.com Geolocation: <sips:3sdefrhy2jj7@lis.atlanta.example.com> ;inserted-by="bigbox3.atlanta.example.com" Supported: geolocation Accept: application/sdp, application/pidf+xml CSeq: 31862 INVITE Contact: <sips:alice@pc33.atlanta.example.com> ...SDP goes here as the only message body A Location Recipient would need to dereference the sips-URI inthis multi-message set of transactions that containstheTarget's location, withGeolocation header field to retrieve Alice's location. If the atlanta.example.com domain chooses to implement locationrecipient beingconveyance and delivery in this fashion (i.e., LbyR), it is RECOMMENDED that entities outside this domain be able to reach the dereference server, otherwise this model of implementation is only viable within the atlanta.example.com domain. 6. SIPelement to receiveElement Behavior Because a device's location- whichisthe purpose of this extension:generally considered toconveybe sensitive in nature, location information needs toa specific destination. 4. Geolocation Examplesbe protected when transmitted. Thissection contains are two examplescan be addressed through securing the location information to prevent either viewing or changing the PIDF-LO. Section 26 of [RFC3261] defines the security functionality SIPS by transporting SIP messagesproviding location. One shows location-by-valuewithcoordinates, the other shows location-by-reference. The example for (Coordinate format) is takeneither TLS or IPSec protection between SIP entities. If a SIP entity wants to prevent all SIP entities in a request path from[RFC3825]. A civic format exampleviewing or just changing the contents of thesame position onPIDF-LO, save those that possess decryption key, theearthmessage body needs to be secure by a means such asis inS/MIME. This would be thecoordinate format example iscase inappendix B,whichis taken from [RFC4776]. The differences betweena UAC wants to make sure only thetwo formats are withindestination UAS can read the<gp:location-info> ofPIDF-LO. S/MIME can be used for just signing, and not encrypting, a PIDF-LO message body to ensure theexamples. Other than this portionintegrity ofeach PIDF-LO,therestPIDF-LO isthe same for bothmaintained. 6.1 UAC Behavior A UAC can send locationformats. The key to the provided samples isinthe Geolocation header, which hasadifferent typeSIP request, either because it is expected to facilitate location-based routing ofURI, based onthedifferent means of location conveyance. Section 4.1 showsrequest, or spontaneously (i.e., a"cid:" URI, indicatingpurpose not defined in this document but known to the UAC). Alice communicating to Bob her location in a SIP Message requestcontainsis a simple example of this. If Alice wanted to include her location as alocation-by-valuemessage body- which isinthe form of a PIDF-LO. Section 4.2 shows a location-by-reference URI indicating location is to be acquired via an indirection dereference mechanism, which is determined by the scheme of URI supplied. 4.1 Location-by-value (Coordinate Format) This example showsan INVITE that also has an SDP messagewith a coordinate, or coordinate location. In this example,body, theSIP request uses a sips-URI [RFC3261], meaningContent-Type: Multipart MUST be supported by both UAC and UAS. Multipart comes in many forms (/mixed, /alternative, etc), and thismessagedocument does not limit which type of Multipart isTLS protected onused, though future documents MAY specify or limit Multipart to ahop-by-hop basissubset of all theway to Bob's domain. INVITE sips:bob@biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS pc33.atlanta.example.com;branch=z9hG4bK74bf9 Max-Forwards: 70 To: Bob <sips:bob@biloxi.example.com> From: Alice <sips:alice@atlanta.example.com>;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.example.com Geolocation: <cid:target123@atlanta.example.com> ;inserted-by=alice@atlanta.example.com ;recipient=endpoint Supported: geolocation Accept: application/sdp, application/pidf+xml CSeq: 31862 INVITE Contact: <sips:alice@atlanta.example.com> Content-Type: multipart/mixed; boundary=boundary1 Content-Length: ... --boundary1 Content-Type: application/sdp ...SDP goes here --boundary1 Content-Type: application/pidf+xml Content-ID: alice123@atlanta.example.com <?xml version="1.0" encoding="UTF-8"?> <presence xmlns="urn:ietf:params:xml:ns:pidf" xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" xmlns:cl="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr" entity="pres:alice@atlanta.example.com"> <tuple id="sg89ae"> <timestamp>2007-12-02T14:00:00Z</timestamp> <status> <gp:geopriv> <gp:location-info> <gml:location> <gml:Point srsName="urn:ogc:def:crs:EPSG::4326"> <gml:pos>33.001111 -96.68142</gml:pos> </gml:Point> </gml:location> </gp:location-info> <gp:usage-rules> <gp:retransmission-allowed>no</gp:retransmission-allowed> <gp:retention-expiry>2007-12-07T18:00:00Z</gp:retention- expiry> </gp:usage-rules> <gp:method>DHCP</gp:method> <gp:provided-by>www.example.com</gp:provided-by> </gp:geopriv> </status> </tuple> </presence> --boundary1-- Thechoices for a given use. A UAC conveying location MUST include a locationValue in a Geolocation header (see section 4.1) with either an LbyV indication (a cid-URL), or an LbyR. An LbyV message body sent without a Geolocation header fieldfrom the above INVITE... Geolocation: <cid:target123@atlanta.example.com> ...indicatesMUST NOT occur. The UAC supporting this extension MUST include a Supported header with thecontent-ID'geolocation' option tag. More than one location[RFC2392] withinformat (civic and coordinate) can be included in themultipartsame message bodyof wherepart, but all locationinformation is, with SDP beingparts of theother message body part. Ifsame PIDF-LO MUST point at theGeolocation header field were this instead: Geolocation: <sips:server5.atlanta.example.com/target123> ...this would indicatesame position on the earth, identifying the same target. The same locationby-reference was includedinthis message.multiple formats, for example, a partial or complete geodetic and a partial or complete civic, can allow the recipient to use the most convenient or preferable format for its use. Multiple PIDF-LOs are allowed in the same request, with each allowed to point at separate positions - however, each PIDF-LO MUST identify a different Target. Therefore, there will be no confusion by a Location Recipient receiving more than one PIDF-LO (in a message body or when dereferenced, or a combination). It isexpected that any node wanting to know where user target123RECOMMENDED there iswould subscribeonly one locationValue in a single SIP request for the same Target. More than one will likely lead toserver5confusion by a Location Recipient because this extension does not provide guidance on what a recipient is todereferencedo with more than one location, nor does it give any preference regarding which location is better or worse than another location in thesips-URI.same request. Thereturning NOTIFY would contain Alice's location'geolocation' option tag is inserted in aPIDF-LO, as if it were included inSupported header by amessage body (part)UAC to provide an indication of support for this extension. The presence of theoriginal INVITE here. 4.2 Location-by-reference Below is an INVITE request with'geolocation' option tag in alocation-by-reference URI instead ofSupported header without alocation-by-value PIDF-LO message body part shownGeolocation header field inSections 4.1. It is up tothelocation recipientsame message informs a SIP element receiving this request that the UAC understands this extension, but it does not know or wish todereference Alice'sconvey its location atthe Atlanta server containing thethis time. Certain scenarios exist (location-based retargeting) in which locationrecord. Dereferencing, if done with SIP,isaccomplished by the Location Recipient sendingrequired in aSUBSCRIBESIP request in order to retarget theURI reference for Alice's location. The received NOTIFY is the first SIPmessagecontaining Alice's UA location, asproperly. This affects how aPIDF-LO message body.UAS or SIP server processes such a request. TheNOTIFY,'geolocation' option tag SHOULD NOT be used inthis case, istheSIPProxy-Require Header, because the UAC often will not know the underlying topology to know which proxy will do the retargeting, thus increasing the likelihood of a request failure by the first hop proxy thatis conveying location, anddoes notthe INVITE. Thereunderstand this extension, but isno retransmissionrequired to by inclusion oflocationthe option tag in thisusage. INVITE sips:bob@biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS pc33.atlanta.example.com ;branch=z9hG4bK74bf9 Max-Forwards: 70 To: Bob <sips:bob@biloxi.example.com> From: Alice <sips:alice@atlanta.example.com>;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.example.com Geolocation: <sips:3sdefrhy2jj7@lis.atlanta.example.com> ;inserted-by=bigbox3.atlanta.example.com ;recipient=both Supported: geolocation Accept: application/sdp, application/pidf+xml CSeq: 31862 INVITE Contact: <sips:alice@pc33.atlanta.example.com> ...SDP goes here as the only message bodyheader. ALocation Recipient would needUAC inserting a locationValue MUST include an "inserted-by=" parameter todereference the sips-URI in the Geolocation header fieldindicate its hostport. This is copied toretrieve Alice's location. Iftheatlanta.example.com domain chooses to implement location conveyance and delivery"inserter=" parameter of the Geolocation-Error header inthis fashion (i.e., location-by-reference), ita response if a Location Recipient determines there isRECOMMENDED that entities outsidesomething wrong with the locationValue in thisdomainrequest. Because more than one locationValue can beable to reachinserted along thedereference server, otherwise this modelpath ofimplementation is only viable withintheatlanta.example.com domain. 5. SIP Element Behavior Because a device's locationrequest, this indication isgenerally considerednecessary tobe sensitiveshow which locationValue had the problem innature, privacy ofthelocation information needs to be protected when transmitting such information. Section 26 of [RFC3261] definesresponse, and who thesecurity functionality SIPS for transporting SIP messages with either TLS or IPSec,locationErrorValue is for. For example: Geolocation: <cid:alice123@atlanta.example.com>; inserted-by="alice@atlanta.example.com" If a UAC does not learn andS/MIME for encrypting message bodiesstore its location locally (a GPS chip) or fromSIP intermediaries that would otherwise have access to readingtheclear-text bodies. SIP endpoints SHOULD implement S/MIME to encryptnetwork (DHCP or LLDP-MED), thePIDF-LO message body (part) end-to-end whenUAC MAY learn its LbyR URI (from DHCP for example. If theLocation Recipientlatter isintendedthe case, the UAC MAY SUBSCRIBE tobe another UA. The SIPS-URI from [RFC3261] MUST be implemented for message protection (message integrity and confidentiality)this LbyR URI, using the 'presence' event package, to get andSHOULD be used when S/MIME isstore its own location. This document does notused.give a reason why a UAC would want to do this. Possession of adereferenceable locationTarget's LbyR, even though the act of dereferencing this URIcanwill be challenged by a LIS were this location record is - providing a good deal of protection, SHOULD still be treated as equivalent to possession of the location information itself and thus TLS SHOULD be used when transmittinglocation-by-referenceLbyR hop-by-hop along the path to the Location Recipient. A PIDF includes identity information. It is possible for the identity in the PIDF to be anonymous. Implementations of this extensionshouldSHOULD consider the appropriateness of including an anonymous identity in the location information where a realidentity is not required. When using location-by-reference, it is RECOMMENDED that the URI doesidentity is not required. When using LbyR, the LbyR MUST NOT contain any user identifyinginformation (for exampleinformation. For example, use3fg5t5yqw@example.comsomething unidentifiable like 3fg5t5yqw@example.atlanta.com rather thanalice@example.com). Location Recipients MUST obey the privacy and security rules in the PIDF-LO as described in RFC 4119 regarding retransmission and retention. Self-signedaliceishere@example.atlanta.com). Use of elf-signed certificatesSHOULD NOT be usedis inappropriate for used in protecting a PIDF, as the sender does not have a secure identity of the recipient.More than one location format (civic and coordinate) MAY be included in the same message body part, but all location parts of the same PIDF-LO MUST point at the same position on the earth. The same location in multiple formats can allow the recipient to use the most convenient or preferable format for its use. Multiple PIDF-LOs are allowed in the same request, with each allowed to point at separate positions - because each PIDF-LO has a Target identifier in it. Therefore, there will be no confusion by6.1.1 UAC Receiving a LocationRecipient receiving more than one PIDF-LO (in a message body or when dereferenced, or a combination). It is RECOMMENDED there is only one "location" in a single SIP Request for a given Target. This means SIP servers SHOULD NOT add another locationValue to a SIP request that already contains location. This will likely lead to confusion at the ultimate location recipient because this extension does not provide guidance on what a recipient is to do with more than one location, nor does it give any preference regarding which location is betterFailure Indication Location Recipients can be either, orworse than another location in the same request. It is allowed, but NOT RECOMMENDED, for more than one SIP element to insertboth, destination UASs and intermediate servers that use the locationintoinformation for location-based routing decisions. If a sent requestalong its path. As described earlier in this document, each insertion offails based on the locationintoinformation in the request, aSIP request424 (Bad Location Information) response isaccompanied bysent back to the UAC. The 424 MUST have alocationValueGeolocation-Error header containing one or more locationErrorValues in the response message. A locationErrorValue has aGeolocation header. Also described earlier, eachheader parameter indicating which entity inserted the locationValueMUST contain an "inserted-by=" value indicatedcorrelated toathis error, called the "inserter=" parameter. This "inserter=" parameter (in the locationErrorValue) is copied from the "inserted-by=" parameter (from the locationValue) by the Location Recipientwhich host inserted location into a particular request. 5.1 UAC Behavior(UAS or proxy) sending the error response. A UACcan send location inreceiving aSIP request, because it is expected to facilitate location-based routing ofGeolocation-Error in any response type MUST review therequest, or spontaneously (i.e., a purpose not defined"inserter=" parameter inthis document but knownthe locationErrorValue to see if it indicates this UAC. If locationErrorValue does not match, theUAC). A UAC conveying locationlocationErrorValue MUSTincludebe ignored. If alocationValuelocationErrorValue is in aGeolocation header (see section 3.2) with either a location-by-value indication (a cid-URL), or a location-by-reference indication (a dereferenceable URI). A location-by-value message body sent without424, and the "inserter=" entity is not this UAC, the response SHOULD be treated as aGeolocation header field MUST NOT occur. The UAC supporting400 response. If locationErrorValue does indicate thisextensionUAC, this UAC MUSTinclude a Supported header withprocess thegeolocation option tag. The geolocation option-tag is insertedresponse, including the Geolocation-Error code (defined in section 4.3). Further, UAC MUST ignore aSupportedGeolocation-Error headerby a UAC to provide an indication of supportvalue, even for thisextension. The presence of the geolocation option tagUAC, even in aSupported header without424 response if the UAC did not include a Geolocation headerfieldvalue (with locationValue) in thesame message informs a receiving SIP elementrequest part of the transaction. A UACunderstands this extension, butMAY reattempt a new request if itdoes not know or wish to convey its location at this time. Certain scenarios exist (location-based retargeting)believes it can correct the stated failure inwhichthe Geolocation-Error header, unless the location error isrequired inaSIP request5XX level error - which clearly states inorderSection 4.3 not toretargetdo this. A UAC MUST follow all themessage properly. This affects how a UAS or SIP server processesguidance that pertains tosuch a request. The geolocation option tag SHOULD NOT be usedUACs from Section 4.3 (Geolocation-Error header), heeding what to do in case it receives any of theProxy-Require Header, because theerror codes articulated in that section. Any UACoften will not know the underlying topologythat inserted location into a request SHOULD be prepared toknow which proxy will doreceive theretargeting, thus increasingGeolocation-Error header in any response, looking to determine if a locationErrorValue is meant for thelikelihood ofUAC, and to react accordingly. If arequest failure byUAC includes location in a request, and either thefirst hop proxy thatUAS does notunderstand this extension, but is requireddetermine errored location was critical toby inclusion oftheoption-tag in this header. A UAC inserting a locationValue MUST include an "inserted-by=" parameter to indicate its host-id. This is copied totransaction and accept the"inserter=" parameter ofrequest, or the request failed for reason other than location, any response MAY contain a Geolocation-Error headerincontaining aresponse if there is something wronglocationErrorValue with the details of the locationinerror. 6.2 UAS Behavior If theoriginal request. Because more than one locationValue can be inserted alongGeolocation header field is present in a received SIP request, thepathtype of URI contained in therequest, this indication is necessary to show whichlocationValuehad the problemwill indicate if location is an LbyV inthe response. For example: Geolocation: <cid:alice123@atlanta.example.com>; inserted-by=alice@atlanta.example.com The UAC MAY includea message body (part) or LbyR, requiring anintended target of this location parameter by addingadditional dereference transaction. If the"recipient=" parameterLbyR URI is sip:, sips: or pres:, and the UAS wants to leran thelocationValue like this: Geolocation: <cid:alice123@atlanta.example.com>; inserted-by=alice@atlanta.example.com; recipient=endpoint See section 3.2 for further details about allUAC's location, theheader parameters ofUAS MUST initiate alocationValue. A UAC MAYSUBSCRIBE toa LbyR URI, usingthe'presence' event package, for its own location. The obvious reason for this is forURI provided to retrieve the PIDF-LO being conveyed by the UAC as defined in [RFC3856]. If successful, the PIDF-LO will be returned in the NOTIFY request from the remote host. The UAS is not REQUIRED tohave its LbyV local to it. This documentdereference the LbyR if it does notgive a reason why a UAC wouldwant to (by configuration or user choice). It is RECOMMENDED the UAS render the location sent to it, however it is configured to dothis. 5.1.1so. A Require header with the 'geolocation' option tag indicates the UACReceiving a Location Failure Indication Ifis requiring the UAS understand this extension or else send an error response. A 420 (Bad Extension) with asent request failed based on the location'geolocation' option tag in an Unsupported header would be theoriginal request, a 424 (Bad Location Information)appropriate response in this case. It issent backpossible, but undesirable, for a message tothe UAC. The 424 MUST havearrive with aGeolocation-Error headerbody containingone or more locationErrorValues ina LbyV, but with no Geolocation header field value pointing to it (potentially no Geolocation header field at all). In this case, theresponse message. A locationErrorValue hasrecipient MAY still read and use the message body. Unless stated otherwise by future standards-track publication(s), a LbyR URI only has meaning within the Geolocation header field and MUST NOT appear in any other SIP header field. There are 2 Geolocation header parameters, o "inserted-by=" o "used-for-routing" The "inserted-by=" parameterindicatinginforms a Location Recipient whichentity inserted the location pertaining toSIP element added thiserror, calledlocationValue to the"inserter=" parameter.SIP request. This"inserter="parameter iscopied frommandatory for each locationValue in the request. The value in the "inserted-by=" parameterof the locationValue by the UAS or proxy sendingis copied into theerror response. A UAC receiving this 424 should review this"inserter=" parameter intheeach locationErrorValueto seeifit indicates this UAC. If locationErrorValue does not, the locationErrorValue should be ignored, andthere is an error in theresponse SHOULDlocation to betreated as a 4XX response. If locationErrorValue does indicate this UAC, this UAC MUST process the response, including the Geolocation-Error code (defined in section 3.4). In additionreported back to theerror code, there MAY be a list of CAtypeslocation sender. See section 6.2.1. The "used-for-routing" parameter is included in thelocationErrorValue. If there are any, these are what the UAS or proxy determined was wrong withlocationValue if a SIP server used the locationcontainedin theoriginal response. The listed CAtypes will not containrequest to determine how to route or forward thevalues sent bymessage towards theUACultimate destination. If there are more than one locationValues in therequest. ThisGeolocation header, and it isfor security/privacy reasons. The UAC SHOULD take correct stepspossible that different locationValues were used torectify future errors, based onroute thereceived error code and any CAtypes listed,message at different times of this request's journey. This is allowed, as it is consistent with the rule that anytime a message is routed based upon a locationValue, a "used-for-routing" parameter is added toincreasetheprobability of successful requestsapplicable locationValue. This parameter should be present in each locationValue used along thefuture.path. AUAC MAY reattempt"used-for-routing" parameter MUST NOT ever be removed from anew request if it believes it can correct the stated failurelocationValue inthe Geolocation-Error header. Any UAC thata request. Additional locationValues insertedlocationinto a requestshouldSHOULD beprepared to receiveplaced theGeolocation-Error headerorder they were generated, and not rearranged. This informs a Location Recipient which was the last locationValue inany response, lookingthe message that was used todetermine ifroute theheadermessage. This ismeantforthe UAC,troubleshooting andto react accordingly. If a UAC includes locationmanagement reasons. Individual header parameters ina request, and eitherany received locationValue MUST NOT be modified or deleted in transit to the ultimate destination. A UASdoes not determine erroredMUST NOT send locationwas critical to the transactionin a response message, as there can be any number of issues/problems with receiving location, andaccepttherequest,UAC or proxy servers cannot error a response. Therefore, therequest failed for another reason than location, any response MAY containUAS, if it wants to send aGeolocation-Error header containingUAC its location, SHOULD do so in alocationErrorValue with the details of the location error. 5.2 UAS Behavior If the Geolocation header field is presentnew request in areceivedseparate transaction. This document gives no guidance which SIPrequest, the type of URI containedrequest to use, but SIP MESSAGE is a viable choice. A UAS MAY include a 'geolocation' option tag in thelocationValue will indicateSupported header of a response, indicating it does understand this extension, even if locationhas been conveyed by-valuewas not in amessage body (part) or by-reference, requiring an additional dereference transaction. Ifrequest to theby-referenceUAS. A UAS wishing to dereference a LbyR URIis sip:, sips: or pres:,contained in a received request will use theUAS MUST initiate'presence' event package in a SUBSCRIBE request to theURI provided to retrieve the PIDF-LO being conveyed by the UAC per [RFC3856].URI. Ifsuccessful,accepted, the PIDF-LO willbe returned inreturn to the UAS in a NOTIFYrequest from the remote host. A Require header with the geolocation option tag indicatesrequest. If there are any errors during dereferencing, or in theUAC is requiringPIDF-LO itself, the UASunderstand this extension or else send anwill errorresponse. A 420 (Bad Extension) with a geolocation option tag in an Unsupported header would betheappropriate response in this case. It is possible, but undesirable, for a messageoriginal request toarrivethe UAC with abody containing a location-by-value, butlocationErrorValue indicating what the UAS concluded was wrong withno Geolocation header field value pointingthe location. This is toit (potentially no Geolocation header field at all). Ininclude any dereferencing problems encountered. Section 4.5 of thiscase, the recipient MAY still read and usedocument called for themessage body. Unless stated otherwise by future standards-track publications, a Location-by-referenceIANA registration of 3 URIonly has meaning within the Geolocation header fieldschemes (sip:, sips:, andMUST NOT appear in any other SIP header field. Therepres:) that are3 Geolocation header parameters, o "inserted-by=" o "used-for-routing" o "recipient=" The "inserted-by=" parameter informsmandatory to implement for dereferencing. If there is more than one location (any combination of LbyV and LbyR), this document does not give guidance what a Location Recipientwhich SIP element addeddoes with each location. There are no priority or more-trusted indications given by this document. All thislocationValue to the SIP request. This parameterismandatory forconsidered application specific, and out-of-scope of this document. This document makes it clear that if when there are more than one location, eachlocationValuein therequest. The value insame PIDF-LO MUST be about the"inserted-by=" parametersame Target (identifier) and point at the same position on the earth. If there are more than one PIDF-LOs with different Target identifiers, then the UAC iscopied intomerely telling the"inserter=" parameterUAS where more than one Target is, and there should not be any conflict. 6.2.1 UAS Generating a Location Failure Indication If a UAS receives location ineach locationErrorValue ifa request, but determines there isan error ina problem with the locationto be reported back toin the request, it is the responsibility of the UAS to inform whomever inserted locationsender. See section 5.2.1.into that request there was a problem experienced. The"used-for-routing" parameter is includedGeolocation header in thelocationValue ifrequest has aSIP server usedlocationValue, providing the UAS a URI indicating where the Target's location is. The Location Target identified in therequest to determine how to routePIDF-LO may orforwardmay not be themessage towardslocation inserter, or theultimate destination. If there are more than one locationValue ingenerator of theGeolocation header, and itrequest (the UAC or SIP server). Ultimately, location ispossible that different locationValues were used to route the message at different times of this request's journey.in a PIDF-LO. This isallowed, as it is consistent witheither in therule that anytimerequest as a messageis routed based upon a locationValue, a "used-for-routing" parameter is addedbody (LbyV), or it has tothe applicable locationValue. This parameter shouldbepresentdereferenced from the LbyR ineach locationValue used alongthepath. More than onelocationValueinsertedina request should be placedtheorder it was placed, and not rearranged. This informsrequest. LbyR records are typically kept on aLocation RecipientLIS, whichwascan challenge all dereference requests. All PIDF-LOs have a Location Target identifier. This is who the location is about. The "inserted-by=" parameter of thelastlocationValueintells themessageUAS who inserted thatwas used to route the message.locationValue. This "inserted-by=" parameter isfor troubleshooting and management reasons. The "recipient=" headercopied into the "inserter=" parameterallow recipientsof the locationErrorValue generated by the Location Recipient (the UAS), in a response, when it wants toinferinform theSIPlocation "inserter=" entitytype this locationValue is intended tothere was a problem with the location it received. There can befor.more than one locationValues in a request. Thetypes are "endpoint", meaning"inserter=" parameter in the locationErrorValue will distinguish it from being misunderstood by entities that did not insert theultimate destination UAS; "routing-entity", meaning SIP servers; and "both" meaning this locationValueerrored location. If there isto be viewed by both types of SIP entities. Individual header parameters in any receivedone valid locationValueMUST NOT be modified or deletedintransit toa request, even if all theultimate destination. A UASothers have errors with them, a 424 (Bad Location Information) response MUST NOT be sent. The Location Recipient (the UAS) is RECOMMENDED to sendlocationa locationErrorValue for each errored locationValue, with unique "inserter=" parameters to make sure the right entities know which locations were in error. As hinted at, aresponse message, as therelocation "inserter=" can beany number of issues/problems with receiving location, and thea UAC orproxy servers cannot error a response. Therefore, the UAS, ifitwants to sendcan be an in-signaling-path SIP server, who is acting as a UACits location, SHOULD do so in a new requestSighter, as defined ina separate transaction.RFC3693. Thisdocument gives no guidance which SIP request to use. A UAS MAY include a geolocation option-tag inmeans theSupported headerSIP server is including its version ofa response, indicatingwhere itdoes understand this extension, even if location was not in a request tothinks theUAS. A UAS wishingUAC is, geographically. This "inserter=" has todereference a location-by-reference URI containedbe ina received request will usethe'presence' event package inform of aSUBSCRIBE request to the URI. If accepted, the PIDF-LO will return to the UASLbyR URI in aNOTIFY request. If therelocationValue, because SIP servers areany errors during dereferencing, or in the PIDF-LO itself,not allowed to insert message bodies, as of theUAS will errortime of this publication, from all theoriginal requestway back tothe UAC with aRFC3261. Each locationErrorValueindicating whathas a error code, letting theUAS concludedlocation "inserter=" entity know what was wrong with thelocation. This is to include any dereferencing problems encountered. 5.2.1 UAS Generatinglocation supplied. See Section 4.3 for the 5 actionable responses aLocation Failure Indication IfUAC can take from areceived request conveys location, butlocationErrorValue. If theUAS has onelocation "inserted-by=" entity, meaning either the UAC ormore problems with a locationValueproxy in therequest (to include while attemptingmessage path, chose todereference the UAC's location), the UAS MUSTindicateeach problem experienced with thethat location was so important in the request to include a 'geolocation' option tag in a Require header, the response SHOULD be a 424 (Bad Location Information)responseback to theinserting"inserter=" entityif(knowing theUAS wantsresponse will ultimately go torejecttherequestUAC regardless) if there needs to be a locationErrorValue sent becauseofthelocation. Alocation was bad. Only entities identified in a locationErrorValue as the "inserter=" entity will pay attention to this locationErrorValue. All other entities MUST ignore any locationErrorValue not directed towards them. See section 4.3 for more information on this, including all the location specific errors and Geolocation-Error headeris howparameters. In theUAS informsabove scenario ('geolocation' option tag in a Require header), theUAC ofonly other response can be alocation-based error within420, but only if therequest. Section 3.4 lists these errors, which are all IANA registered. BecauseUAS does not support this Geolocation extension toSIP allows more than one locationValueSIP, else the 424 is sent. If the location "inserted-by=" entity placed the 'geolocation' option tag in aGeolocationSupported header,each from separate SIP entities, there needs to be a means of identifying which entity inserted a particular locationValue for single errorthe responsepurposes. This is further complicated because SIP sendscan be asingle rejection response, that in this case, needs to go to more than one entity, and424 if it chooses, but also can beignored by allany otherentitiesSIP response, including a 200 OK. A locationErrorValue in a Geolocation-Error header that is notidentifiedinsuchaway as to424 (Bad Location Information) response is considered informational by the Location Recipient, and notconfuse other SIP entities. Each locationValue has an "inserted-by=" parameter identifying which SIP entity added this locationValueconsidered important enough to reject therequest. This value is copiedrequest based solely on bad location information. For example, Alice INVITEs Bob to a dialog, and includes geolocation in thelocationErrorValue "inserter=" parameter if one needs to be sent, thus identifyingrequest. Bob can accept theintended target of this locationErrorValue. ThisINVITE with a 200 OK and still add a locationErrorValue in the 200 OK indicating "yes, I accept your request, and btw, something was wrong with the location you provided (in the INVITE)". What was wrong with the location isignoredindicated byall other receivers ofthe Geolocation-Error code. Who thisSIP response. EachlocationErrorValuecan have more than one error code within it.is for is indicated by the "inserter=" parameter. Each locationErrorValue is destined for one "inserter=" entity. This gives aUASLocation Recipient one mechanism to tell each inserter what the Location Recipientconcluded was wrong with what the inserter included (as far as location is concerned). Therefore, o there MUST be a locationErrorValue for each locationValue that was considered bad by the UAS to ensure each upstream location inserter understands which error code(s)is intended for them (and which to ignore). o if the PIDF-LO (received by-value or after dereference) contains civic CAtypes that the Location Recipient considers malformed or bad, each CAtype SHOULD be listed in the locationErrorValue to inform the "inserter=" entity what specificallyconcluded was wrong withthe locationValue, in addition to the error code. Without these details, the location inserter might not knowwhatpart was malformed or incomplete about the information supplied intherequest."inserter=" included (as far as location is concerned). Therefore, othe CAtype valuesthere MUSTNOTbesent along with the CAtype names listed ina locationErrorValue for each locationValue that was considered bad by thelocationErrorValue. ThisUAS to ensure each upstream location inserter understands which error code(s) is intended forprivacy/security reasons.them (and which to ignore). o there MUST NOT be more than one locationErrorValue in the response per locationValue in the request. o there MUST NOT be more than one locationErrorValuein the response forto the samelocationValue"inserter=" in the request. o there MUST NOT be a locationErrorValue in the response for a locationValue in the request that was not in error, according to the Location Recipient. Here is an example of a Geolocation-Error header Geolocation-Error:106; "node=bob.example.com"; "inserter=alice.example.com"; CAtype=A3; CAtype=STS; code="incomplete location supplied" See Section 3.4 for further rules about the Geolocation-Error header and the locationErrorValue.400; code="Permission Necessary"; node="server42.example2.com"; inserter="alice.example.com"; TheGeolocation-Error header is permitted in any response. For example, Bob can reply to Alice with a 486 because he's not willing to acceptabove example says that thecall at this time,Location Recipient is server42.example.com, andinform Alice thatthis entity believes it cannot route this message without knowing the "inserter="'s location. This locationcontainedmay be in the request, or it may need to be in the request and wasbadnot. If location is encrypted, server42 doesn't know it is insome way. In this case,the486 would containrequest. server42.example.com sends aGeolocation-Error header424 (Bad Location Information) response with a locationErrorValue indicating a 400 location error, which means it requires permission to view Alice's location to proceed with processing her signaling. Section 4.3 highlights this example, stating thespecificuser, Alice, MUST be made aware of this locationerror experienced If there is more than one locationValue in a request, andrevelation request. This document does not give anyone of themguidance how Alice isvalidto be informed (i.e.,one contains enough informationaudio, visual, etc). Alice can grant permission or choose not to, knowing this SIP request attempt (to this destination, at this time) will fail. The problem could be corrected if a future SIP request were tonot generatetravel through a424 if that was the only location present indifferent server than server42 (or it might not). See Section 4.3 for further rules about therequest), all other locations MAY be ignored,Geolocation-Error header anda 424 MUST NOT be sent because of these other locations intherequest. Another response MAY be sent, which includes alocationErrorValue. This document says nothing about what a Location Recipient does with more than one 'good'locationlocationValue in a request (i.e., which to choose to use). This scenario MAY be addressed in a future effort. Further, more than one error code is allowed in the locationErrorValue - each havinganone "inserter=" parameter. The error codes destined for the same inserter MUST NOT contradict the meaning of the problem theUASLocation Recipient had with a particular locationValue.A Geolocation-Error is permissible in a 200 OK response. This means everything else in the request was acceptable, but the location was not for a given error code(s). One exception to this set of rules is if a geolocation option-tag was in the Require header in the request. This would necessitate a 424 response. 5.36.3 Proxy Behavior [RFC3261] states message bodies cannot be added by proxies. However, proxies are permitted to add a header to a request. This implies that a proxy can add a Geolocation locationValue withlocation-by-referenceLbyR URI, but notlocation-by-valueLbyV message body. It is allowed, but NOT RECOMMENDED, for more than one SIP element to insert location into a request along its path. As described earlier in this document, each insertion of location into a SIP request is accompanied by a new locationValue in a Geolocation header. Also described earlier, each locationValue MUST contain an "inserted-by=" value indicating to a Location Recipient which host inserted location into a particular request. However, if location is already in a SIP request, a SIP server SHOULD NOT add anotherinstance of the UAC's location toLbyR that identifies the samerequest. This will likely cause confusion at the Location Recipient as to which to use. This document gives no guidance how a UAS is to deal with more than one location in a SIP request, other than the intended "recipient=" parameter, which has no integrity protection in transit. If more than one locationValue states "recipient=endpoint", this document gives no guidance whattarget in theUAS isPIDF-LO (in the <tuple-id> element) todo.the same request. This will likely cause confusion at the Location Recipient as to which to use. A proxy is permitted to read any locationValue, and the associated body, if not S/MIME protected, in transit if present, andMUSTcan use the contents of the header field to make location-based retargeting decisions, if retargeting requests based on location is a function of that proxy. Retargeting is defined in [RFC3261]. More than one Geolocation locationValue in a message is permitted, but can cause confusion at the recipient. If a proxy chooses to add a locationValue to a Geolocation header, which would be a local policy decision, the new locationValue MUST be added to the end of the header (after previous locationValue(s)). This is done to create an order of insertion of locationValues along the path. Proxies MUST NOT modify the order of locationValues in a geolocation header. A proxy wishing to dereference alocation-by-referenceLbyR URI contained in a received request will use the 'presence' event package in a SUBSCRIBE request to the URI. If accepted, the PIDF-LO will return to the proxy in a NOTIFY request. If there are any errors during dereferencing, or in the PIDF-LO itself, the proxy will error the original request to the UAC with a locationErrorValue indicating what the proxy concluded was wrong with the location. This is to include any dereferencing problems encountered.5.3.16.3.1 Proxy Behavior with Geolocation Header Parameters SIP servers MUST NOT delete any existing Geolocation locationValue (URI or header parameter) from a request.A GeolocationAn existing locationValue (URI or header parameter) MAY only be modifiedtoby adding a "used-for-routing" parameter to an existing locationValue, if the request was retargeted based on the location within that locationValue. Further modification of this Geolocation header field MUST NOT occur. For example, an existing Geolocation locationValue in a request of: Geolocation: <cid:alice123@atlanta.example.com>;inserted-by=alice123@atlanta.example.com;inserted-by="alice123@atlanta.example.com"; can be modified by a proxy to add the "used-for-routing" parameter, like this: Geolocation: <cid:alice123@atlanta.example.com>;inserted-by=alice123@atlanta.example.com;inserted-by="alice123@atlanta.example.com"; used-for-routing if this is the locationValue the proxy used to make a retargeting decision based upon, but make no other modification. A SIP server MAY add a new Geolocation locationValue to a SIP request. The proxy SHOULD NOT insert a locationValue ofthe UACa Location Target unless it is reasonably certain it knows the actual location of theendpoint,Location Target, for example, if it thoroughly understands the topology of the underlying access network and it can identify the device reliably (in the presence of, for example,NAT).NAT or VPN). A server adding a locationValue to an existing Geolocation header would look like: Geolocation: <cid:alice123@atlanta.example.com>;inserted-by=alice123@atlanta.example.com,inserted-by="alice123@atlanta.example.com", <sips:3sdefrhy2jj7@lis1.atlanta.example.com>;inserted-by=lis1.atlanta.example.com;inserted-by="lis1.atlanta.example.com" Notice the locationValue added by the proxy is last among locationValues. This practice MUST be done for all added locationValues. If this request was then retargeted by an intermediary using the locationValue inserted by the server, the intermediary would add a "used-for-routing" parameter like this: Geolocation: <cid:alice123@atlanta.example.com>;inserted-by=alice123@atlanta.example.com,inserted-by="alice123@atlanta.example.com", <sips:3sdefrhy2jj7@lis1.atlanta.example.com>;inserted-by=lis1.atlanta.example.com;inserted-by="lis1.atlanta.example.com"; used-for-routing It is conceivable that an initial routing decision is made onanone locationValue, and subsequently another routing decision is made on a differentlocationValue.locationValue further towards the ultimate destination. This retargeting decision can be made on a newly inserted locationValue. While unusual, it can occur. In such a case, proxies MUST NOT remove any existing "used-for-routing" header parameter. In this instance, the SIP server retargeting based on another locationValue MUST add the "used-for-routing" header parameter to the locationValue used for retargeting by this server. This will result in a Geolocation header looking as if it were retargeting more than once, which would be true - and is the desired outcome.5.3.2A Proxy that inserts or adds locationValue into a request MAY move a 'geolocation' option that is in a Supported header into a Require header if this proxy deems geolocation to be that important to Location Recipient(s) of this request. 6.3.2 Proxy Error Behavior for Sending or Receiving locationErrorValues For proxies that receive a SIP request that contains a location error, either in a contained message body or after the proxy does a dereference of the LbyR URI, all the rules applicable to a UAS apply here (see Section5.2.1.),6.2.1.), since in this case, the proxy is considered a Location Recipient. Therefore, there is no reason to restate them here, and potentially have the twosectionsections be inconsistent. The one thing to add is that a proxy does not need to examine location contained in a request. Section5.2.1.6.2.1. only applies to proxies that are needing, monitoring or policing location within requests (for whatever reason). If a proxy inserted a locationValue into a request, it SHOULD be ready to examine the response to that request, in case there is one or more location errors in the response. To a great degree, this scenario has the proxy behaving as a UAC (see section5.1.1.)6.1.1.) that included a locationValue a request, which then receives an error to that locationValue.If there is one or more locationErrorValues in the response, theThis location inserting proxy SHOULDexamine each "inserter=" parameter in each locationErrorValue - lookingbe transaction stateful forone that identifiestheproxy.response. Ifone matchestheproxy's "inserted-by" value, that locationErrorValueproxy is configured as a stateless proxy, and it inserts location, it MUST process and monitor all SIP responses, looking foronlylocationErrorValues thatproxy. This locationErrorValue needsindicate it was the "inserter=" tobe reviewed for each error code and CAtype containedlearn that location it supplied was inthe value. The proxyerror. It SHOULDattemptreact accordingly tocorrect forthe errorreported to it for future insertion of location into requests.code received. This document gives no guidance what the proxy should do to rectify the bad location information, but a future document MAY address this.6.7. Geopriv Privacy ConsiderationsTransmitting locationLocation information is considered by most to be highly sensitive information, requiring protection from eavesdropping,tracking,and altering in transit. [RFC3693] articulates rules to be followed by any protocol wishing to be considered aGeopriv"Using Protocol", specifying how a transport protocolmeetingsmeets those rules. This section describes how SIP as a Using Protocol meets those requirements. Quoting requirement #4 of [RFC3693]: "The Using Protocol has to obey the privacy and security instructions coded in the Location Object and in the corresponding Rules regarding the transmission and storage of the LO." This document requires that SIP entities sending or receiving location MUST obey such instructions. Quoting requirement #5 of [RFC3693]: "The Using Protocol will typically facilitate that the keys associated with the credentials are transported to the respective parties, that is, key establishment is the responsibility of the Using Protocol." [RFC3261] and the documents it references define the key establishment mechanisms. Quoting requirement #6 of [RFC3693]: "(Single Message Transfer) In particular, for tracking of small Target devices, the design should allow a single message/packet transmission of location as a complete transaction." When used for tracking, a simple NOTIFY or UPDATE normally is relatively small, although the PIDF itself can get large. Normal RFC 3261 procedures of reverting to TCP when the MTU size is exceeded would be invoked.7.8. Security Considerations Conveyance of physical location of a UAC raises privacy concerns, and depending on use, there probably will be authentication and integrity concerns. This document calls for conveyance to normally be accomplished through secure mechanisms, like S/MIME protecting message bodies (but this is not widely deployed) or TLS protecting the overall signaling. In cases where a session set-up is retargeted based on the location of the UAC initiating the call or SIP MESSAGE, securing theby-valueLbyV location with an end-to-end mechanism such as S/MIME is problematic, because one or more proxies on the path need the ability to read the location information to retarget the message to the appropriate new destination UAS. Securing the location hop-by-hop, using TLS, protects the message from eavesdropping and modification, but exposes the information to all proxies on the path as well as the endpoint. In most cases, the UAC does not know the identity of the proxy or proxies providing location-based routing services, so that end-to-middle solutions might not be appropriate either. These same issues exist for basic SIP signaling, but SIP normally does not carry information to physically track a user; making this extension especially sensitive. When location is inserted by a UAC, which is RECOMMENDED, it can decide whether to reveal its location using hop-by-hop methods. UAC implementations MUST make such capabilities conditional on explicit user permission, and SHOULD alert a user that location is being conveyed. Proxies inserting location for location-based routing are unable to meet this requirement, and such use is NOT RECOMMENDED. Proxies conveying location using this extension MUST have the permission of the Target to do so. One facet within this extension is such that locations can be placed on a remote server, accessible with the possession of a URI. The concept of alocation-by-referenceLbyR URI has its own security considerations. It is tempting to assume that the dereference would have authentication, authorization and other security mechanisms that limit the access to information. Unfortunately, this might not be true. The access network the UAC is connected to can be the source of location reference, and it might not have any credentialing mechanism suitable for controlling access to location. Consider, specifically, a nomadic user connected to an access network in a hotel. The UAC has no way to provide a credential acceptable to the hotel Location Server (LS) to any of its intended Location Recipients. The recipient of a reference does not know if a reference has appropriate authorization policies or not. The LS should provide location to any requestor. Accordingly, possession of the reference should be considered equivalent to possession of the value, and the reference should be treated with the same degree of care as the value.Specifically, TLS MUST be used to protect the security of the reference. Notice that this does not constrain the dereference protocol to use TLS. That specification is left entirely to the dereferencing protocol Because SIP servers can add location in transit, made more easy of the server is a Session Border Controller or B2BUA, this might cause there to be conflicting location information (error-code=6), which couldSpecifically, TLS MUST bepurposefulused toerrorprotect therequest or just cause operation problems. This problem might be inadvertent, compounded bysecurity of thefact that there will likely be some SIP serversreference. Notice thatadd location on every call set-up.this does not constrain the dereference protocol to use TLS. That specification is left entirely to the dereferencing protocol documents. There is no integrity on any locationValue or locationErrorValue headerparameter,parameter end-to-end (or middle-to-end if the value was inserted by a intermediary), so recipients of either header need to implicitly trust the header contents, and take whatever precautions each entity deems appropriate give these facts.8.9. IANA Considerations The following are the IANA considerations made by this SIP extension. Modifications and additions to these registrations require a standards track RFC (Standards Action).8.19.1 IANA Registration for the SIP Geolocation Header The SIP Geolocation header is created by this document, with its definition and rules in Section3.24.1 of this document, to be added to thesip-parameters. The Geolocation Header has the following header parameters to be Registeredsip-parameters, ina new table: Geolocation Header parameters Headerthe portion titled "Header Field ParametersParameter-valuesand Parameter Values". Predefined Header Field Parameter Name Values Reference -------------------------------- -------------- recipient endpoint RFC XXXX (this document) recipient routing-entity RFC XXXX (this document) recipient both RFC XXXX (this document) 8.2------------------- ---------- --------- Geolocation inserted-by= no [this doc] Geolocation used-for-routing no [this doc] 9.2 IANA Registration for New SIP Option Tag The SIPoption-tagoption tag "geolocation" is created by this document, with the definition and rule in Section3.54.4 of this document, to be added to sip-parameters within IANA.8.39.3 IANA Registration for Response Code 424 Reference: RFC-XXXX (i.e., this document) Response code: 424 (recommended number to assign) Default reason phrase: Bad Location Information This SIP Response code is defined in section3.34.2 of this document.8.49.4 IANA Registration of New Geolocation-Error Header The SIP Geolocation-error header is created by this document, with its definition and rules in Section3.44.3 of this document, to be added to thesip-parameters. 8.5sip-parameters, in the portion titled "Header Field Parameters and Parameter Values". Predefined Header Field Parameter Name Values Reference ----------------- ------------------- ---------- --------- Geolocation-Error inserter= no [this doc] Geolocation-Error node= no [this doc] Geolocation-Error code= no [this doc] 9.5 IANA Registration for the SIP Geolocation-Error Codes New location specific Geolocation-Error codes are created by this document, and registered in a new table at sip-parameters within IANA. Details of these error codes are in Section3.44.3 of this document. Geolocation-Error codes ----------------------- Geolocation-Error codes provide reason for the error discovered by Location Recipients, categorized by action to be taken by error recipient toplacebe placed into SIPresponse messagesresponses to inform the location inserter of the error. Code Description Reference ---- --------------------------------------------------- --------- 100Location Format Not Supported: the location format [this doc] supplied in the request, by-value or by-reference, was not supported. 101 Coordinate-location Format Desired: the"Cannot Process Location" General location error, [this doc]format supplied in the request was understood and supported, but that the recipient, or an application on the recipient, can or prefers to only process location in the coordinate-location format. 102 Civic-location Format Desired: themeaning location[this doc] format suppliedin the requestwas understood and supported, but that the recipient, or an application on the recipient, cancannot be processed at this time. No actionable guidance. Can be treated as a 200 orprefers to only process location in the civic-location format. 103 Cannot Parse300 error by error recipient. 200 "Retry Location Later" (with same data) LocationSupplied: the location [this doc] provided, whether by-value or by-reference, in a request is not well formed. 104 Cannot Find Location: the location was expected in[this doc]the request, but thecannot be processed at this time. Error recipientcannot find it. 105 Conflicting Locations Supplied: ashould try again with same data. 300 "Retry LocationRecipientLater" (with device updated location) [this doc]received more than one location describing where the Target is, and is either unsure which whole location is true or which parts of multiple locations make up where the Target is. 106 IncompleteLocationSupplied: there is not enoughcannot be processed at this time. Error recipient should try again with same data. 400 "Permission Necessary" Permission from calling user [this doc] to reveal locationinformationintherequestto determine wherebefore request can be processed. This is a routing by location error. User MUST be informed of permission request. 500 "Location Information Denial" Request was actively denied because of the locationTarget is. 107 Cannot Dereference:in theactrequest. Recipient should not try again. 9.6 IANA Registration ofdereferencing failed [this doc] to return the Target's location.LbyR Schemes Thisgenerally means the supplied URI is bad. 108 Dereference Denied: there was insufficient [this doc] authorizationdocument directs IANA todereferencecreate a new set of parameters in a separate location from SIP and Geopriv, called theTarget's location. 109 Dereference Timeout:"Location Reference URI" registry, containing thedereferencing node has not [this doc] receivedURI scheme, theTarget's location within a reasonable. timeframe 110 Cannot Process Dereference:Content-Type, and thedereference protocol [this doc] has receivedreference. Below is anoverload condition error, indicating the location cannot be accessed at this time. 120 Unsupportedexample of how it could look URI Scheme- sip desired: the locationContent-Type Reference ---------- ------------ --------- SIP: [this doc]dereferencer cannot dereference using the location-by-reference URI scheme supplied, and prefers a sip-uri. 121 Unsupported Scheme - sips desired: the locationSIPS: [this doc]dereferencer cannot dereference using the location-by-reference URI scheme supplied, and prefers a sips-uri. 122 Unsupported Scheme - pres desired: the locationPRES: [this doc]dereferencer cannot dereference using the location-by-reference URI scheme supplied, and prefers a pres-uri. 9.Additions to this registry require an industry specification. 10. Acknowledgements To Dave Oran for helping to shape this idea. To Jon Peterson and Dean Willis on guidance of the effort. To Allison Mankin, Dick Knight, Hannes Tschofenig, Henning Schulzrinne, James Winterbottom, Jeroen van Bemmel, Jean-Francois Mule, Jonathan Rosenberg, Keith Drage, Marc Linsner, Martin Thomson, Mike Hammer, Paul Kyzivat, Shida Shubert, Umesh Sharma, Richard Barnes, Ted Hardie and Matt Lepinski for constructive feedback. A special thanks to Dan Wing for help with the S/MIME example, and to Robert Sparks for many helpful comments and the proper building of the Geolocation-Error header.10.11. References10.111.1 References - Normative [RFC3261] J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J. Peterson, R. Sparks, M. Handley, and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, May 2002. [RFC4119] J. Peterson, "A Presence-based GEOPRIV Location Object Format", RFC 4119, December 2005 [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate [RFC2392] E. Levinson, " Content-ID and Message-ID Uniform Resource Locators", RFC 2393, August 1998 [RFC3863] H. Sugano, S. Fujimoto, G. Klyne, A. Bateman, W. Carr, J. Peterson, "Presence Information Data Format (PIDF)", RFC 3863, August 2004 [RFC3856] J. Rosenberg, " A Presence Event Package for the Session Initiation Protocol (SIP)", RFC 3856, August 2004 [RFC3859] J. Peterson, "Common Profile for Presence (CPP)", RFC 3859, August 2004 [RFC3428] B. Campbell, Ed., J. Rosenberg, H. Schulzrinne, C. Huitema, D. Gurle, "Session Initiation Protocol (SIP) Extension for Instant Messaging" , RFC 3428, December 2002 [RFC3311] J. Rosenberg, "The Session Initiation Protocol (SIP) UPDATE Method", RFC 3311, October 2002 [RFC3265] Roach, A., "Session Initiation Protocol (SIP)-Specific Event Notification", RFC 3265, June 2002. [RFC3262] Rosenberg, J. and H. Schulzrinne, "Reliability of Provisional Responses in Session Initiation Protocol (SIP)", RFC 3262, June 2002. [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008. [IANA-civic] http://www.iana.org/assignments/civic-address-types- registry10.211.2 References - Informative [RFC3693] J. Cuellar, J. Morris, D. Mulligan, J. Peterson. J. Polk, "Geopriv Requirements", RFC 3693, February 2004 [RFC3825] J. Polk, J. Schnizlein, M. Linsner, "Dynamic Host Configuration Protocol Option for Coordinate-based Location [RFC4776] H. Schulzrinne, " Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Option for Civic Addresses Configuration Information ",draft-ietf-geopriv-dhcp-civil-09, "work in progress", JanuaryRFC 4776, October 2006 Author Information James Polk Cisco Systems 3913 Treemont Circle 33.00111N Colleyville, Texas 76034 96.68142W Phone: +1-817-271-3552 Email: jmpolk@cisco.com Brian Rosen NeuStar, Inc. 470 Conrad Dr. 40.70497N Mars, PA 16046 80.01252W US Phone: +1 724 382 1051 Email: br@brianrosen.net Appendix A. Requirements for SIP Location Conveyance The following subsections address the requirements placed on the UAC, the UAS, as well as SIP proxies when conveying location. There is a motivational statement below each requirements that is not obvious in intent A.1 Requirements for a UAC Conveying Location UAC-1 The SIP INVITE Method [RFC3261] must support location conveyance. UAC-2 The SIP MESSAGE method [RFC3428] must support location conveyance. UAC-3 SIP Requests within a dialog should support location conveyance. UAC-4 Other SIP Requests may support location conveyance. UAC-5 There must be one, mandatory to implement means of transmitting location confidentially. Motivation: interoperability UAC-6 It must be possible for a UAC to update location conveyed at any time in a dialog, including during dialog establishment. Motivation: in case a UAC has moved prior to the establishment of a dialog between UAs, the UAC must be able to send new location information. In the case of location having been conveyed, and the UA moves, it needs a means to update the conveyed to party of this location change. UAC-7 The privacy and security rules established within [RFC3693] that would categorize SIP as a 'Using Protocol' must be met. UAC-8 The PIDF-LO [RFC 4119] is a mandatory to implement format for location conveyance within SIP, whether includedby-valueLbyV orby-reference.LbyR. Motivation: interoperability with other IETF location protocols and mechanisms UAC-9 There must be a mechanism for the UAC to request the UAS send its location UAC-9 has been DEPRECATED by the SIP WG, due to the many problems this requirement would have caused if implemented. The solution is for the above UAS to send a new request to the original UAC with the UAS's location. UAC-10 There must be a mechanism to differentiate the ability of the UAC to convey location from the UACs lack of knowledge of its location Motivation: Failure to receive location when it is expected can be because the UAC does not implement this extension, or it can be that the UAC implements the extension, but does not know where it is. This may be, for example, due to the failure of the access network to provide a location acquisition mechanisms the UAC understands. These cases must be differentiated. UAC-11 It must be possible to convey location to proxy servers along the path. Motivation: Location-based routing. A.2 Requirements for a UAS Receiving Location The following are the requirements for location conveyance by a UAS: UAS-1 SIP Responses must support location conveyance. Just as with UAC-9, UAS-1 has been DEPRECATED by the SIP WG, due to the many problems this requirement would have caused if implemented. The solution is for the above UAS to send a new request to the original UAC with the UAS's location. UAS-2 There must be a unique 4XX response informing the UAC it did not provide applicable location information. In addition, requirements UAC-5, 6, 7 and 8 apply to the UAS A.3 Requirements for SIP Proxies and Intermediaries The following are the requirements for location conveyance by a SIP proxies and intermediaries: Proxy-1 Proxy servers must be capable of adding a Location header field during processing of SIP requests. Motivation: Provide the capability of network assertion of location when UACs are unable to do so, or when network assertion is more reliable than UAC assertion of location Note: Because UACs connected to sip signaling networks may have widely varying access network arrangements, including VPN tunnels and roaming mechanisms, it may be difficult for a network to reliably know the location of the endpoint. Proxy assertion of location is NOT RECOMMENDED unless the sip signaling network has reliable knowledge of the actual location of the Targets. Proxy-2 There must be a unique 4XX response informing the UAC it did not provide applicable location information. Appendix B. Example of INVITE with S/MIME encrypted Civic PIDF-LO This appendix gives an *EXAMPLE* (meaning this might contain errors based on future review) of a SIP INVITE request that points to the same position on the earth as the coordinate based example that's in section4.15.1 in the body of this document: The INVITE request is TLS hop-by-hop encrypted, and thelocation-by-valueLbyV message body is S/MIME encrypted. This example shows the location message body in its unencrypted form for clarity. The message body lines below that have the '$' signs are S/MIME encrypted. In this example, the SDP is not S/MIME encrypted. INVITE sips:bob@biloxi.example.com SIP/2.0 Via: SIP/2.0/TLS pc33.atlanta.example.com ;branch=z9hG4bK74bf9 Max-Forwards: 70 To: Bob <sips:bob@biloxi.example.com> From: Alice <sips:alice@atlanta.example.com>;tag=9fxced76sl Call-ID: 3848276298220188511@atlanta.example.com Geolocation: <cid:alice123@atlanta.example.com>;inserted-by=alice@atlanta.example.com ;recipient=endpoint;inserted-by="alice@atlanta.example.com" Supported: geolocation Accept: application/sdp, application/pidf+xml CSeq: 31862 INVITE Contact: <sips:alice@pc33.atlanta.example.com> Content-Type: multipart/mixed; boundary=boundary1 Content-Length: ... --boundary1 Content-Type: application/sdp ...SDP goes here --boundary1 Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name=smime.p7m Content-ID: alice123@atlanta.example.com $ Content-Type: application/pidf+xml $ $ <?xml version="1.0" encoding="UTF-8"?> $ <presence xmlns="urn:ietf:params:xml:ns:pidf" $ xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" $ xmlns:cl="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr" $ entity="pres:alice@atlanta.example.com"> $ <tuple id="sg89ae"> $ <timestamp>2007-07-09T14:00:00Z</timestamp> $ <status> $ <gp:geopriv> $ <gp:location-info> $ <cl:civicAddress> $ <cl:country>US</cl:country> $ <cl:A1>Texas</cl:A1> $ <cl:A3>Colleyville</cl:A3> $ <cl:HNO>3913</cl:HNO> $ <cl:A6>Treemont</cl:A6> $ <cl:STS>Circle</cl:STS> $ <cl:PC>76034</cl:PC> $ <cl:NAM>Haley's Place</cl:NAM> $ <cl:FLR>1</cl:FLR> $ <cl:civicAddress> $ </gp:location-info> $ <gp:usage-rules> $ <gp:retransmission-allowed>no</gp:retransmission-allowed> $ <gp:retention-expiry>2007-07-27T18:00:00Z</gp:retention- $ expiry> $ </gp:usage-rules> $ <gp:method>DHCP</gp:method> $ <gp:provided-by>www.example.com</gp:provided-by> $ </gp:geopriv> $ </status> $ </tuple> $ </presence> --boundary1-- Full Copyright Statement Copyright (C) The IETF Trust(2007).(2008). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Acknowledgment Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA).