< draft-ietf-sip-location-conveyance-02.txt   draft-ietf-sip-location-conveyance-03.txt >
SIP Working Group James M. Polk SIP Working Group James Polk
Internet Draft Cisco Systems Internet Draft Cisco Systems
Expiration: Sept 6th, 2006 Brian Rosen Expiration: Dec 26th, 2006 Brian Rosen
NeuStar NeuStar
Session Initiation Protocol Location Conveyance Session Initiation Protocol Location Conveyance
draft-ietf-sip-location-conveyance-02.txt draft-ietf-sip-location-conveyance-03.txt
Mar 6th, 2006 June 26th, 2006
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware 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 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. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in reference material or to cite them other than as "work in
progress." progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 6th, 2006. This Internet-Draft will expire on December 26th, 2006.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2006). Copyright (C) The Internet Society (2006).
Abstract Abstract
This document defines how the Session Initiation Protocol (SIP) This document defines how the Session Initiation Protocol (SIP)
conveys, or pushes, user location information from one SIP entity conveys, or pushes, geographic location information from one SIP
to another SIP entity. SIP Location Conveyance is always end to entity to another SIP entity. SIP Location Conveyance is always end
end, but sometimes the embedded location information can be acted to end, but sometimes the embedded location information can be acted
upon by SIP Servers to direct where the message goes, based on where upon by SIP Servers to direct where the message goes, based on where
the user agent client is. the user agent client is.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Conventions . . . . . . . . . . . . . . . . . . . . . . . 4 1.1 Conventions used in this document . . . . . . . . . . . . 4
1.2 Changes from Prior Versions . . . . . . . . . . . . . . . 4 2. Location In the Body or in a Header . . . . . . . . . . . . . 5
2. Location In the Body or in a Header . . . . . . . . . . . . . 8 3. Requirements for SIP Location Conveyance . . . . . . . . . . 6
3. Requirements for SIP Location Conveyance . . . . . . . . . . 9 4. Location Conveyance Using SIP . . . . . . . . . . . . . . . . 9
4. Location Conveyance Using SIP . . . . . . . . . . . . . . . . 12 4.1 A New Option Tag and SIP Header . . . . . . . . . . . . . 11
4.1 New Option Tags and a Location Header Created . . . . . . 13 4.2 424 (Bad Location Information) Response Code . . . . . . 14
4.2 424 (Bad Location Information) Response Code . . . . . . 16 4.3 Example PIDF-LO in Geo Format . . . . . . . . . . . . . . 15
4.3 Example PIDF-LO in Geo Format . . . . . . . . . . . . . . 16 4.4 Example PIDF-LO in Civic Format . . . . . . . . . . . . . 16
4.3 Example PIDF-LO in Civic Format . . . . . . . . . . . . . 17 5. SIP Element Behavior When Conveying Location . . . . . . . . 17
5. SIP Element Behavior When Conveying Location . . . . . . . . 18 5.1 Location Conveyance Using the INVITE Method . . . . . . . 17
5.1 Location Conveyance Using the INVITE Method . . . . . . . 19 5.2 Location Conveyance Using the MESSAGE Method . . . . . . 19
5.2 Location Conveyance Using the MESSAGE Method . . . . . . 21 5.3 Location Conveyance Using the UPDATE Method . . . . . . . 20
5.3 Location Conveyance Using the UPDATE Method . . . . . . . 22 5.4 Location Conveyance Using the REGISTER Method . . . . . . 20
5.4 Location Conveyance Using the REGISTER Method . . . . . . 27 6. Special Considerations for Emergency Calls . . . . . . . . . 20
6. Special Considerations for Emergency Calls . . . . . . . . . 29 7. Meeting RFC 3693 Requirements . . . . . . . . . . . . . . . . 21
7. Meeting RFC 3693 Requirements . . . . . . . . . . . . . . . . 29 8. Security Considerations . . . . . . . . . . . . . . . . . . . 22
8. Open issues . . . . . . . . . . . . . . . . . . . . . . . . . 30 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 22
9. Security Considerations . . . . . . . . . . . . . . . . . . . 30 9.1 IANA Registration for the SIP Location Header . . . . . . 22
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . 31 9.2 IANA Registration of the Location Option Tags . . . . . . 23
10.1 IANA Registration for the SIP Location Header . . . . . 31 9.3 IANA Registration for Response Code 424 . . . . . . . . . 23
10.2 IANA Registration of the Location Option Tags. . . . . . 31 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 23
10.3 IANA Registration for Response Code 424 . . . . . . . . 31 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 23
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31 11.1 Normative References . . . . . . . . . . . . . . . . . 23
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 31 11.2 Informative References . . . . . . . . . . . . . . . . . 24
12.1 Normative References . . . . . . . . . . . . . . . . . 31 Author Information . . . . . . . . . . . . . . . . . . . . . 24
12.2 Informative References . . . . . . . . . . . . . . . . . 32 Appendix A. Changes from Prior Versions . . . . . . . . . . 24
Author Information . . . . . . . . . . . . . . . . . . . . . 32 Intellectual Property and Copyright Statements . . . . . . . 28
Intellectual Property and Copyright Statements . . . . . . . 33
1. Introduction 1. Introduction
There are several situations in which it is desired or necessary for There are several situations in which it is desired or necessary for
a Session Initiation Protocol (SIP) [RFC3261] user agent to convey, a Session Initiation Protocol (SIP) [RFC3261] user agent to convey,
or push Location Information (LI) from one SIP entity to another. or push its geographic Location Information (LI) from one SIP entity
This document discusses the scenarios for such conveyance, and to another. This document discusses the rules for such conveyance,
includes the requirements to be met when a SIP UAC wants or needs to and includes the requirements to be met when a SIP UAC wants or
convey its location to another SIP entity. A concept of inheritance needs to convey its location to another SIP entity. A concept of
exists in which the conveyance of the location of a user agent means inheritance exists in which the conveyance of the location of a user
conveying the location of a user of that user agent. This is not an agent means conveying the location of a user of that user agent.
absolute in SIP, but applies for the pushing of location using SIP. This is not an absolute in SIP, but applies for the pushing of
The privacy concerns of this topic are also discussed, and need to location using SIP. The privacy concerns of this topic are also
meet the requirements laid out in RFC 3693 [RFC3693]. This document discussed, and need to meet the requirements laid out in RFC 3693
does not discuss the pulling of location information from a user [RFC3693]. This document does not discuss the pulling of location
agent. This is left for a future effort. information from a remote element to learn that element's location.
This is left for a future effort.
Why would a SIP user agent (UA) push its location to another SIP UA? Why would a SIP user agent (UA) push its location to another SIP UA?
There are 3 reasonable scenarios why location can be, or needs to be There are 3 reasonable scenarios why location can be, or needs to be
conveyed to a remote SIP element: conveyed to a remote SIP element:
1) to include location in a request message seeking the nearest 1) to include location in a request message seeking the nearest
instance of destination, where there could be more than one instance of destination, where there could be more than one
choice; (hey, here I am, I want to talk to the nearest instance choice; (hey, here I am, I want to talk to the nearest instance
of you? i.e. where's the nearest Pizza Hut relative to where I of you? i.e. where's the nearest Pizza Hut relative to where I
am). am now).
2) to push the user's location to a server that can deal with all 2) to push the user agent's location to a server such that it can
the inquiries, leaving the UA to do other tasks; (Presence either deal with all the inquiries, leaving the UA to do other
Server) tasks (Presence Server), or allow the server to return
information to that UAC according to what the UAC is at this
time.
3) to inform the user of another UA where the sending user is; 3) to inform the user of another UA where the sending user is;
(dude, he is where I am) or (I need help, here I am) (dude, he is where I am) or (I need help, here I am)
Scenario #1 revolves around the idea of a user wanting to find the Scenario #1 revolves around the idea of a user wanting to find the
nearest instances of something else. For example, where is the nearest instances of something else. For example, where is the
nearest pizza parlor. A chain of pizza parlors may be contacted nearest pizza parlor. A chain of pizza parlors may be contacted
through a single well known URI (sip:pizzaparlor.example.com). This through a single well known URI (sip:pizzaparlor.example.com). This
by itself does not solve enough to the sending UA. The server at by itself does not solve enough to the sending UA. The server at
this well known URI needs to know where the nearest one is to the this well known URI needs to know where the nearest one is to the
requester. In SIP, this could be accomplished in the initial requester. In SIP, this could be accomplished in the initial
message by including the location of the UAC in the Request message. message by including the location of the UAC in the Request message.
This allows the SIP message to be forwarded to the closest physical This allows the SIP message to be forwarded to the closest physical
site by the pizzaparlor.com proxy server. Additionally, the site by the pizzaparlor.com proxy server. Additionally, the
receiving site's UAS uses the UAC's location to determine the receiving site's UAS uses the UAC's location to determine the
location your delivery. A more immediate example may be: where's location your delivery. A more immediate example may be: where's
the nearest (car) garage repair shop, because the user of the UAC the nearest (car) garage repair shop, because the user of the UAC
skipping to change at page 3, line 45 skipping to change at page 3, line 47
to an external server to deal with all location requests in the to an external server to deal with all location requests in the
future. This leaves a buffer layer between the user and the seeker future. This leaves a buffer layer between the user and the seeker
of the user's location. This server would typically handle all of the user's location. This server would typically handle all
security checks and challenges of those seeking the user's location, security checks and challenges of those seeking the user's location,
as well as handling all the processing of the location target's as well as handling all the processing of the location target's
profile rules entered into that server. This external server profile rules entered into that server. This external server
c/would be a Presence server. This scenario will not be addressed c/would be a Presence server. This scenario will not be addressed
in this document because of the prevailing Presence solutions for in this document because of the prevailing Presence solutions for
conveying location information. conveying location information.
Alternatively, a user agent pushing location to a server can allow
that server to provide back information pertinent to that UA's
location. Perhaps replying with certain information unique to the
country or region a mobile UA resides. This would not be possible
without the server knowing where the UA is.
Scenario #3 actually has a part A and a part B to it. Both involve Scenario #3 actually has a part A and a part B to it. Both involve
the UAC including its location in the request to the UAS within a the UAC including its location in the request to the UAS within a
SIP transaction. Part A simply has the user, Alice, informing SIP transaction. Part A simply has the user, Alice, informing
another user, Bob, where she is. This could be for the loan purpose another user, Bob, where she is. This could be the loan purpose
for this SIP message, or it could be part of another transaction - for this SIP message, or it could be part of another transaction -
in which location were merely included, such as within a call set- in which location were merely included, such as within a call set-
up. up.
Part B of this scenario has a user, Alice calling for help and Part B of scenario #3 has a user, Alice, calling for help and
including location to inform who she's calling where she is. This including location to inform who she's calling where she is. This
is where the called party needs to come bring help to. Within this is where the called party needs to come bring help to. Within this
scenario, the UAC will need to know this is an emergency SIP request scenario, the UAC will need to know this is a special SIP request
message, and to include the UAC's location in this message. message to include the UAC's location in this message. It is
envisioned that SIP elements along the path of the SIP request will
need to know where Alice's UA is for proper routing purposes. An
example of this special SIP request is an emergency call set-up.
While scenarios 1, 2 and 3A should use some form of SIP security, While scenarios 1, 2 and 3A should use some form of SIP security,
typically at the wishes of the user, scenario 3B may or may not typically at the wishes of the user, scenario 3B may or may not
involve SIP security measures. This is because including any involve SIP security measures. This is because including any
security measures may cause the SIP request to fail, and that is security measures may cause the SIP request to fail, and that is
likely not a good result. It is also conceivable that a first likely not a good result. It is also conceivable that a first
attempt with the user's security measures enabled is tried, and if attempt with the user's security measures enabled is tried, and if
there are any failures, the subsequent attempt or attempts do not there are any failures, the subsequent attempt or attempts do not
involve security measures. Most believe that completing the involve security measures. Most believe that completing the
emergency call is more important than protecting the information in emergency call is more important than protecting the information in
the SIP message. Obviously this is up to local and jurisdictional the SIP message. Obviously this is up to local and jurisdictional
policies, but is mentioned here as a hint of a rationale of a later policies, but is mentioned here as a hint of a rationale of a later
section of this document. section of this document.
This document does not discuss how the UAC discovers or is This document does not discuss how the UAC discovers or is
configured with its location, however will specify how this spec configured with its location. This document however will specify
meets the requirements for SIP qualifying as a "using protocol" as how it meets the requirements for SIP qualifying as a "using
defined in [RFC3693], in section 7. protocol" as defined in [RFC3693], in section 7.
Section 3 lists the requirements for SIP location conveyance. Section 3 lists the requirements for SIP location conveyance.
Section 4 defines how SIP conveys location. Section 5 illustrates Section 4 defines how SIP conveys location. Section 5 illustrates
specifics about location conveyance in certain SIP request messages. specifics about location conveyance in certain SIP request messages.
Section 6 briefly discusses pertinent behaviors with respect to the Section 6 briefly discusses pertinent behaviors with respect to the
unique nature of emergency calling. Section 9 provides the security unique nature of emergency calling. Section 9 provides the security
considerations and Section 10 IANA registers one new SIP header, two considerations and Section 9 IANA registers one new SIP header, two
new option tags and one new 4XX Response codes. new option tags and one new 4XX Response codes.
The "changes from prior versions" section (the old Section 1.2) has
been moved to the lone appendix, as its size is getting too large
for efficient reading of this document.
1.1 Conventions used in this document 1.1 Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described "OPTIONAL" in this document are to be interpreted as described
in [RFC2119]. in [RFC2119].
1.2 Changes from Prior Versions
[NOTE TO RFC-EDITOR: If this document is to be published as an RFC,
this section 1.2 is to be removed prior to that event.]
This is a list of the changes that have been made from the SIP WG
version -01 to this version -02:
- streamlined the doc by removing text (ultimately removing 42 pages
of text).
- Limited the scope of this document to SIP conveyance, meaning only
how SIP can push location information.
- reduced emergency calling text to just a few paragraphs now that
the ECRIT WG is taking most of that topic on.
- greatly reduced the number of requirements in this version.
- changed the requirements groups from "UA-to-UA", "UA-to-Proxy",
etc to "UAC Reqs", "UAS-Reqs" and "Proxy-Reqs" to focus on what is
being asked of each SIP element.
- Removed the full SIP message examples.
- completed the ABNF for the Location header, including a cid-url to
point at a message body part to help in parsing for location.
- Deleted the call for a new 425 (Retry Location) response code, as
it appears this can easily be used to spoof a UA into providing
where it is inadvertently, even if the intent is legitimate by the
UAC.
This is a list of the changes that have been made from the SIP WG
version -00 to this version -01:
- cleaned up a lot of loose ends in the text
- created a new Location header to convey many means (location is in
the body - even if not viewable, which location format is present,
which format is requested in a query, how to request more than one
location format in a query, whether the UAC understands location
at all, if the UA knows its location, how to push location from
one UA to through a second to a third UA, etc).
- added the ability to convey location by-reference, but only under
certain conditions.
- Added support for the OPTIONS Request to query a server for the
UAC's location, through the use of the new Location header.
- moved both new Response code sections forward in the document for
their meaning to be clearer, earlier for necessary discussion.
- Changed the message flows to only have the pertinent message
headers shown for brevity.
- Added text to the SUB/NOT section showing how and why the location
of a UA can be refreshed or updated with an interval, or by a
trigger.
This is a list of the changes that have been made from the SIPPING
WG version -02 to this SIP WG item document version -00:
- Changed which WG this document is in from SIPPING to SIP due to
the extension of the protocol with new Response codes (424 and
425) for when there is an error involving the LO message body.
- Moved most of the well formed SIP messages out of the main body of
this document and into separate appendixes. This should clean up
the document from a readability point of view, yet still provide
the intended decode examples to readers of this document who wish
that level of detail per flow. The first few flows still have the
decoded SIP messages (unencrypted and encrypted).
- Removed some flow examples which no longer made sense
- Changed all references of "ERC" (Emergency Response Center) to
"PSAP" (Public Safety Answering Point) as a result of discussion
within the new ECRIT WG to define a single term
This is a list of the changes that have been made from the sipping-
01 working group version of this effort to the sipping-02 version:
- added requirements for 2 new 4XX error responses (Bad Location
Information) and (Retry Location Body)
- added "Bad Location Information" as section 8.6
- added "Retry Location Body " as section 9.3
- added support for session mode to cover packet sizes larger than
the single packet limit of 1300 bytes in the message body
- added requirement for a SIP entity to SUBSCRIBE to another for
location information
- added SUBSCRIBE and NOTIFY as section 8.5
- added requirement to have user turn off any tracking created by
subscription
- removed doubt about which method to use for updating location
after a INVITE is sent (update)
- cleaned up which method is to be used if there is no dialog
existing (message)
- removed use of reINVITE to convey location
- clarified that UAs include <provided-by> element of PIDF-LO when
placing an emergency call (to inform PSAP who supplied Location
information)
- updated list of open issues
- added to IANA Considerations section for the two new 4XX level
error responses requested in the last meeting
This is a list of the changes that have been made from the sipping-
00 working group version of this ID to the sipping-01 version:
- Added the offered solution in detail (with message flows,
appropriate SIP Methods for location conveyance, and
- Synchronized the requirements here with those from the Geopriv
Working Group's (attempting to eliminate overlap)
- Took on the task of making this effort the SIP "using protocol"
specification from Geopriv's POV
- Refined the Open Issues section to reflect the progress we've made
here, and to indicate what we have discovered needs addressing,
but has not been to date.
This is a list of the changes that have been made from the -01
individual submission version to the sipping-00 version of this ID:
- Brian Rosen was brought on as a co-author
- Requirements that a location header were negatively received in
the previous version of this document. AD and chair advice was to
move all location information into a message body (and stay away
from headers)
- Added a section of "emergency call" specific requirements
- Added an Open Issues section to mention what hasn't been resolved
yet in this effort
This is a list of the changes that have been made from the
individual submission version -00 to the -01 version
- Added the IPR Statement section
- Adjusted a few requirements based on suggestions from the
Minneapolis meeting
- Added requirements that the UAC is to include from where it
learned its location in any transmission of its LI
- Distinguished the facts (known to date) that certain jurisdictions
relieve persons of their right to privacy when they call an PSAP,
while other jurisdictions maintain a person's right to privacy,
while still others maintain a person's right to privacy - but only
if they ask that their service be set up that way.
- Made the decision that TLS is the security mechanism for location
conveyance in emergency communications (vs. S/MIME, which is still
the mechanism for UA-to-UA non-emergency location conveyance
cases).
- Added the Open Issue of whether a Proxy can insert location
information into an emergency SIP INVITE message, and some of the
open questions surrounding the implications of that action
- added a few names to the acknowledgements section
2. Location In the Body or in a Header 2. Location In the Body or in a Header
In determining where "location" is placed in a SIP message, In determining where "location" is placed in a SIP message,
consideration is taken as to where the trust model is based on the consideration is taken as to where the trust model is based on the
architecture involved. architecture involved.
If the user agent has the location stored within it, and this user If the user agent has the location stored within it, and this user
agent wants to inform another user agent where it is, it seems agent wants to inform another user agent where it is, it seems
reasonable to have this accomplished by placing the location reasonable to have this accomplished by placing the location
information (coordinate or civic) in an S/MIME registered and information (coordinate or civic) in a message body (part), sending
encoded message body, and sending it as part of a SIP request or it as part of a SIP request or response. This is location by-value.
response. No routing of the request based on the location
information is required in this case; therefore no SIP Proxies
between these two UAs need to view the location information
contained in the SIP messages. The UAC should know messages will be
routed based on location when creating a message. This is location
by-value.
SIP currently does not permit SIP intermediaries to modify No routing of the request based on the location contents is required
or delete a message body [RFC3261]. There is, however, no in this case, therefore no SIP Proxies between these two UAs need to
restriction on intermediaries viewing message bodies. S/MIME view the location information contained in the SIP message(s). The
protected message bodies, implemented on bodies for end-to-end UAC should know certain types of messages will be routed based on
communications only (i.e. between user agents), would render the the UA's location when creating a message.
location object opaque to a proxy server from any viewing of the
message body. This problem is similar to that raised in Session RFC 3261 does not permit SIP intermediaries to modify or delete a
Policy [ID-Sess-Pol], where an intermediary may need information in message body [RFC3261]. There is, however, no restriction on
a body, such as IP address of media streams or codec choices to intermediaries viewing message bodies. S/MIME protected message
route a call properly. Requirements in [ID-Sess-Pol] are applicable bodies, implemented on bodies for end-to-end communications only
to routing based on location, and are incorporated in these (i.e. between user agents), would render the location object opaque
requirements by reference. to a proxy server from any viewing of the message body.
The location format is defined in [RFC4119] as a "Presence The location format is defined in [RFC4119] as a "Presence
Information Data Format - Location Object", or PIDF-LO. The amount Information Data Format - Location Object", or PIDF-LO. The amount
of information that is necessary to appropriately transmit location of information that is necessary to appropriately transmit location
information in a format that is understandable is larger than a SIP information in a format that is understandable is larger than a SIP
header could realistically include. However, there must be a means header could realistically include. However, there must be a means
for both a UAC to include a reference point to where location can be for both a UAC to include a reference point to where location can be
retrieved from a remote server, and in some cases, a SIP server retrieved from a remote server, and in some cases, for a SIP server
wants or needs to add location to a SIP message as it is processed to add a UAC's location to a SIP message as it is processed
by that server. This must be in a compact form in a SIP header. A by that element. This must be in a SIP header for the above stated
URI satisfies this description. This is location-by-reference. reason, and should therefore be in a compact form. A URI satisfies
this description. This is location-by-reference.
Location-by-Reference allows a UA to place its location on a remote The idea of Location-by-Reference is to allow a UA to store its
node, to be retrieved by who has this URI. This allows the server location on a remote node, to be retrieved by who has this URI.
to use its processing power to handle all policy rule operations the This concept allows the remote node to use its processing power to
user wants performed per request, and all security challenges done handle all policy rule operations the user wants performed per
as well. request, and all security challenges done as well.
[RFC3693] prefers S/MIME for security of Location Information, and Since location in a message body may be opaque to a routing element,
indeed S/MIME is preferable in SIP [RFC3261] for protecting a message needing to be routed based on the UAC's location should not
message body. Accordingly, these requirements specify location be have said location in the message body where it may not be seen. A
carried in a body when it is known to/stored in a user agent. UAC's Location in these cases should be in the Location header where
it can be dereferenced by a (SIP) routing element.
It is the use of S/MIME however, that limits message routing based [RFC3693] prefers S/MIME for confidentiality and integrity of
on the location of the UAC, scenario 3B from above. Therefore, it Location Information on an end-to-end basis, and indeed S/MIME is
seems appropriate to require that, where routing is dependent on preferable in SIP [RFC3261] for protecting a message body.
location, protection of the location information object be
accomplished by other mechanisms visible to SIP proxies: here TLS Accordingly, this document specifies location be carried in a body
("sips:" from [RFC3261]). The UAC will need to know the difference when it is known to/stored in a user agent for end-to-end conveyance
in the call's intent as to which security mechanism to engage for of location. The use of SIPS [RFC3261] is orthogonal to this
location conveyance. discussion and should always be used.
It is conceivable that an initial attempt to communicate with It is conceivable that an initial attempt to communicate with
location included may fail due to the security measures used. location included may fail due to the security measures used.
Subsequent requests ought to use less security. For example, if an Subsequent requests ought to use less security. For example, if an
initial request used S/MIME and failed. A subsequent request could initial request used S/MIME and failed. A subsequent request could
downgrade the security measures used to that of TLS. This is a downgrade the security measures used to that of TLS. A message may
matter for local and jurisdictional policy, and is merely a hint at be important enough, say an emergency call attempt, where TLS is not
implementation possibilities. used. This should not be a default configuration, but a fallback
usage. This is always a matter for local and jurisdictional policy.
3. Requirements for SIP Location Conveyance 3. Requirements for SIP Location Conveyance
The following subsections address the requirements placed on the The following subsections address the requirements placed on the
user agent client, the user agent server, as well as SIP proxies user agent client, the user agent server, as well as SIP proxies
when conveying location. when conveying location.
3.1 Requirements for a UAC Conveying Location 3.1 Requirements for a UAC Conveying Location
The following are the requirements for location conveyance by a user The following are the requirements for location conveyance by a user
skipping to change at page 10, line 9 skipping to change at page 6, line 48
Conveyance. Conveyance.
UAC-4 Other SIP Requests MAY support Location Conveyance. UAC-4 Other SIP Requests MAY support Location Conveyance.
UAC-5 There MUST be one, mandatory to implement means of UAC-5 There MUST be one, mandatory to implement means of
transmitting location confidentially. transmitting location confidentially.
Motivation: interoperability Motivation: interoperability
UAC-6 It MUST be possible for a UAC to update location conveyed UAC-6 It MUST be possible for a UAC to update location conveyed
prior to dialog establishment. at any time in a dialog, including during dialog
establishment.
Motivation: in case a UAC has moved prior to the establishment of a 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 dialog between UAs, the UAC must be able to send new location
information. 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] UAC-7 The privacy and security rules established within [RFC3693]
that would categorize SIP as a 'using protocol' MUST be met. that would categorize SIP as a 'using protocol' MUST be met.
See Section 7 for analysis. See Section 7 for analysis.
UAC-8 The PIDF-LO [RFC4119] is a mandatory to implement format for UAC-8 The PIDF-LO [RFC4119] is a mandatory to implement format for
location conveyance within SIP, whether included by-value or location conveyance within SIP, whether included by-value or
by-reference. by-reference.
If location is within the message, it is a PIDF-LO by-value in a
message body (part). If location is stored on an external node, it
is dereferenced as a PIDF-LO.
Motivation: interoperability Motivation: interoperability
UAC-9 A UAC MUST be capable of transmitting a SIP request without UAC-9 A UAC MUST be capable of transmitting a SIP request without
protecting the PIDF-LO message body. It is RECOMMENDED this protecting the PIDF-LO message body. It is RECOMMENDED this
not be the default configuration of any UA. This requirement not be the default configuration of any UA. This requirement
is orthogonal to the use of TLS or IPSec hop-by-hop between is orthogonal to the use of TLS or IPSec hop-by-hop between
SIP elements. SIP elements.
Motivation: If a SIP request is part of an emergency call, Motivation: If a SIP request is part of an emergency call,
therefore includes the UAC's location, the UAC may understand therefore includes the UAC's location, the UAC may understand
through local policy or configuration that a proxy server through local policy or configuration that a proxy server
will need to learn the UAC's location to route the message will need to learn the UAC's location to route the message
correctly. Using S/MIME on the PIDF-LO defeats this correctly. Using S/MIME on the PIDF-LO defeats this
capability in proxies. capability in proxies.
UAC-10 A UAC MUST allow its user to be able to disable providing UAC-10 A UAC MUST allow its user to be able to disable providing
location within any SIP request message. It is RECOMMENDED location within any SIP request message. It is RECOMMENDED
this not be the default configuration of any UA. this not is the default configuration of any UA.
Motivation: local laws may give this right to all users within a Motivation: local laws may give this right to all users within a
jurisdiction, even when the request is initiating an jurisdiction, even when the request is initiating an
emergency call. emergency call.
UAC-11 A UAC SHOULD NOT use the Proxy-Require header indicating a
SIP intermediary is required to act upon location within a
SIP message.
Motivation: This is because it is not expected that all SIP
elements will understand location, therefore the chances of a
message failure is high if proxies are required to support
location before forwarding a message. This will lead to
unnecessary message failures.
3.2 Requirements for a UAS Receiving Location 3.2 Requirements for a UAS Receiving Location
The following are the requirements for location conveyance by a user The following are the requirements for location conveyance by a user
agent server: agent server:
UAS-1 SIP Responses MUST support Location Conveyance. UAS-1 SIP Responses MUST support Location Conveyance.
UAS-2 There MUST be one, mandatory to implement means of UAS-2 There MUST be one, mandatory to implement means of
transmitting location confidentially. receiving location confidentially.
Motivation: interoperability Motivation: interoperability
UAS-3 The PIDF-LO [RFC4119] is a mandatory to implement format for UAS-3 The PIDF-LO [RFC4119] is a mandatory to implement format for
location conveyance within SIP, whether included by-value or location conveyance within SIP, whether included by-value or
by-reference. by-reference.
If location is within the message, it is a PIDF-LO by-value in a
message body (part). If location is stored on an external node, it
is dereferenced as a PIDF-LO.
Motivation: interoperability Motivation: interoperability
UAS-4 There MUST be a unique 4XX error response code informing UAS-4 There MUST be a unique 4XX error response code informing
the UAC it did not provide applicable location information. the UAC it did not provide applicable location information.
UAS-5 SIP UAs MUST be prepared to receive location without privacy UAS-5 UASs MUST be prepared to receive location without privacy
mechanisms enabled. It is RECOMMENDED this not be the mechanisms enabled. It is RECOMMENDED this not be the
default configuration of any UA, however, this is possible default configuration of any UA, however, this MUST be
based on local laws. possible for local laws that require this function.
Motivation: Because a SIP request can fail in transit for security Motivation: Because a SIP request can fail in transit for security
reasons, UACs are allowed to transmit, or retransmit requests reasons, UACs are allowed to transmit, or retransmit requests
including location without any security mechanisms utilized, including location without any security mechanisms utilized,
even when this SIP transaction is an emergency call. UAs even when this SIP transaction is an emergency call. UAs
must be prepared to receive the messages without confidential must be prepared to receive the messages without confidential
location. location.
UAS-6 There MUST be a unique 4XX error response code informing the UAS-6 There MUST be a unique 4XX error response code informing the
UAC it did not provide applicable location information. UAC it did not provide applicable location information.
skipping to change at page 11, line 52 skipping to change at page 9, line 8
to why location was included in this message (meaning it to why location was included in this message (meaning it
might need to be there), and should not remove this might need to be there), and should not remove this
critical piece of information. critical piece of information.
Proxy-2 Proxy servers MUST be capable of adding a Location header Proxy-2 Proxy servers MUST be capable of adding a Location header
during processing of SIP requests. during processing of SIP requests.
Motivation: If the proxy determines a message needs to have the Motivation: If the proxy determines a message needs to have the
location of the UAC in the message, and knows the UAC's location of the UAC in the message, and knows the UAC's
location by-reference, it must be able to add this header location by-reference, it must be able to add this header
and URI to the message during processing. This MUST NOT and URI to the message during processing. This SHOULD NOT
violate requirement Proxy-3 below. violate requirement Proxy-3 below.
Proxy-3 If a Proxy server detects "location" already exists within Proxy-3 If a Proxy server detects "location" already exists within
a SIP message, it MUST NOT add another location header or a SIP message, it SHOULD NOT add another location header or
location body to the message. location body to the message.
Motivation: This may lead to confusion, and should be left for the Motivation: This may lead to confusion downstream. Section 4.1
UAC to do on purpose. explains this more.
Proxy-4 There MUST be a unique 4XX error response code informing Proxy-4 There MUST be a unique 4XX error response code informing
the UAC it did not provide applicable location information. the UAC it did not provide applicable location information.
4. Location Conveyance Using SIP 4. Location Conveyance Using SIP
RFC 4119 defines the PIDF-LO location object to be inside a RFC 3693 RFC 4119 defines the PIDF-LO location object to be inside a RFC 3693
defined "using protocol" message from one entity to another entity. defined "using protocol" message from one entity to another entity.
For SIP location conveyance, using the PIDF-LO body satisfies the For SIP location conveyance, using the PIDF-LO body satisfies the
entire format and message-handling requirements as stated in the entire format and message-handling requirements as stated in the
baseline Geopriv Requirements [RFC3693]. baseline Geopriv Requirements [RFC3693].
Although a PIDF-LO is to be used to indicate location of a UA, the Although a PIDF-LO is to be used to indicate location of a UA, the
actual PIDF-LO does not need to be contained in the message itself, actual PIDF-LO does not need to be contained in the message itself,
it can be as a by-reference URI in a SIP header or message body it can be as a by-reference URI in a SIP header or message body
part, pointing to the PIDF-LO of that UA on a remote node. part, pointing to the PIDF-LO of that UA on a remote node.
Section 26 of [RFC3261] defines the security functionality SIPS for The basic operation of location conveyance is as easy as this in
transporting SIP messages with either TLS or IPSec, and S/MIME for Figure 1., showing a user agent conveying its location to another
encrypting message bodies from SIP intermediaries that would user agent:
otherwise have access to reading the clear-text bodies. SIP
endpoints MUST implement S/MIME to encrypt the PIDF-LO message body UA Alice UA Bob
(part) end-to-end. The SIPS-URI from [RFC3261] SHOULD be used for
message protection (message integrity and confidentiality) and MUST | [M1] Request (w/ Location) |
be used when S/MIME is not used (when not violating the requirements |---------------------------------->|
for emergency messaging detailed in section 3 of this document). | [M2] Response |
|<----------------------------------|
| |
Figure 1. Basic SIP Location Conveyance
Alice wants to inform Bob where she is. She includes location
by-value (in a message body) or by-reference (in a new Location
header) in her request message towards Bob. Bob MAY choose to
include his location in a response back to Alice.
Another usage of location conveyance is for a SIP Server route the
SIP request message based on included location information, by-value
or by-reference, to an appropriate destination. Figure 2 shows this
message flow to UAS-B, because that is determined to be the
appropriate destination for this message, based on the location of
Alice.
UA Alice SIP Server UAS-A UAS-B UAS-C
| [M1] Request (w/ Location) | | | |
|---------------------------->| | | |
| | |
| |----------------->|
| | |
| [M2] Response |
|<-----------------------------------------------|
| |
Figure 2. Message Routing based on Location Information
How a SIP Server would route a message based on the location in a
SIP message is out of scope for this document. But in Figure 2,
Alice's message could go to one of three destinations, with the SIP
server choosing destination B based on Alice's location.
A use-case for Figure 2 could be one in which Alice wants a pizza
delivered to her location, wherever she is. She calls her favorite
pizza store chain's main address, perhaps this is a single, national
URI, with her included location determining which specific store
this SIP request is routed to. In such a use-case, Alice can use
the same URI wherever she is to contact the same store chain she
prefers; never needing to look up the specifics of which store is
closest in a unfamiliar city.
Another use-case is emergency calling, in which the location of the
caller is the key trigger as to which emergency response center
receives this SIP request.
Because a person's location is generally considered to be sensitive
in nature, certain security measures need to be taken into account
when transmitting such information. Section 26 of [RFC3261] defines
the security functionality SIPS for transporting SIP messages with
either TLS or IPSec, and S/MIME for encrypting message bodies from
SIP intermediaries that would otherwise have access to reading the
clear-text bodies. SIP endpoints SHOULD implement S/MIME to encrypt
the PIDF-LO message body (part) end-to-end. The SIPS-URI from
[RFC3261] MUST be implemented for message protection (message
integrity and confidentiality) and SHOULD be used when S/MIME is not
used.
The entities sending and receiving location MUST obey the privacy The entities sending and receiving location MUST obey the privacy
and security rules in the PIDF-LO to be compliant with this and security rules in the PIDF-LO, regarding retransmission and
specification. retention, to be compliant with this specification.
Self-signed certificates SHOULD NOT be used for protecting PIDF-LO, Self-signed certificates SHOULD NOT be used for protecting PIDF-LO,
as the sender does not have a secure identity of the recipient. as the sender does not have a secure identity of the recipient.
More than one location representation or format MAY be included in More than one location representation or format MAY be included in
the same message body part, but all MUST point at the same position the same message body part, but all MUST point at the same position
on the earth (altitude not withstanding), as this would confuse the on the earth (altitude not withstanding), as this would confuse the
recipient by pointing at more than one position within the same recipient by pointing at more than one position within the same
PIDF-LO. There MAY be a case in which part of one location format message body part. There MAY be a case in which part or parts of
and part of another exist in the same message body part. These all one location format and part or parts of another format exist in the
still MUST point at the same position on the earth, yet are same message body part. These complementary pieces of information
incomplete within their own format. For example, there maybe be a MUST point at the same position on the earth, yet are incomplete
latitude and longitude in coordinate format and a civic altitude within their own format. For example, there maybe be a latitude and
value to complete a 3-dimenttional position of a thing (i.e. which longitude in coordinate format and a civic altitude value to
floor of a building the UA is on in a building at a particular complete a 3-dimensional position of a thing (i.e. which floor of a
lat/long coordinate pair). building the UA is on in a building at a particular lat/long
coordinates pair).
There MAY be several PIDF-LOs in separate message body parts in the There MAY be more than one PIDF-LO in the same SIP message, but each
same message, and each MAY point at different positions on the earth in separate message body parts. Each location body part MAY point at
(altitude not withstanding). If the message length exceeds the different positions on the earth (altitude not withstanding). If
maximum message length of a single packet (1300 bytes), TCP MUST to the message length exceeds the maximum message length of a single
be used for proper message fragmentation and reassembly. packet (1300 bytes), TCP MUST to be used for proper message
fragmentation and reassembly.
Several push-based SIP Request Methods are capable (and applicable) Several push-based SIP Request Methods are capable (and applicable)
of carrying location, including: of carrying location, including:
INVITE, INVITE,
REGISTER, REGISTER,
UPDATE, and UPDATE, and
MESSAGE, MESSAGE,
While the authors do not yet see a reason to have location conveyed While the authors do not yet see a reason to have location conveyed
skipping to change at page 13, line 37 skipping to change at page 12, line 5
location retrieval mechanism, and are therefore not part of this location retrieval mechanism, and are therefore not part of this
document. document.
A 200 OK to a SIP Request MAY carry the UAS's PIDF-LO back to the A 200 OK to a SIP Request MAY carry the UAS's PIDF-LO back to the
UAC that provided its location in the original request, but this is UAC that provided its location in the original request, but this is
not something that can be required due to the timing of the request not something that can be required due to the timing of the request
to 200 OK messages, with potential local/user policy requiring the to 200 OK messages, with potential local/user policy requiring the
called user to get involved in determining if the caller is someone called user to get involved in determining if the caller is someone
they wish to give their location to (and at what precision). they wish to give their location to (and at what precision).
4.1 New Option Tags and a Location Header Created 4.1 A New Option Tag and SIP Header
This document creates and IANA registers two new option tags, This document creates and IANA registers one new option tag:
"location" or "unknown-location". User agent clients who support "location". This option tag is to be used, per RFC 3261 in the
this specification will indicate that support by including either of Require, Supported and Unsupported headers. Whenever a UA wants to
these option-tags in a Supported header. indicate it understands this SIP extension, the location option tag
is included in a Supported header of the SIP message.
This document also creates and IANA registers a new Location header. This option tag SHOULD NOT be used in the Proxy-Require header.
The Location header, if present, will have one of three header
values defined by this document:
o a Location-by-reference URI This document also creates and IANA registers a new SIP header:
Location. The Location header, if present, will have one of two
header values defined by this document:
o a Content ID indicating where location is within the message body o a Location-by-reference URI
o a location based option tag o a Content-ID indicating where location is within the message body
A location-by-reference URI is a pointer to a record on a remote A location-by-reference URI is a pointer to a record on a remote
node containing the PIDF-LO of a UA. node containing the PIDF-LO of a UA.
If the PIDF-LO of a UA is contained in a SIP message, a Location If the PIDF-LO of a UA is contained in a SIP message, a Location
header will be present in the message with a content-ID (cid-url) header will be present in the message with a content-ID (cid-url)
[RFC2392] indicating where in the message body location is for this [RFC2392] indicating which message body part contains location for
UA. This is to aid a node in not having to parse the whole message this UA. This is to aid a node in not having to parse the whole
body or body parts looking for this body type. message body or body parts looking for this body type.
The Unknown-Location option tag in a Location header indicates a UA
understands the concept of location conveyance, but does not have
its location to provide. This can save error messages from being
generated looking for an answer the UA does not have to give. It
can also allow a processing entity the immediate knowledge it needs
to act as if the UA will not learn location on its own, and perhaps
call on another process to address the location needs for that
message.
The purpose of the Location option-tag is to indicate support for The purpose of the Location option-tag is to indicate support for
this document in the Requires, Supported and Unsupported headers. this document in the Require, Supported and Unsupported headers.
It gives a UAS the proper means to indicate it does not support the It gives a UAS the proper means to indicate it does not support the
concept of location in an Unsupported header in a response message concept of location in an Unsupported header in a response message
that might otherwise not be clear that the lack of support for that might otherwise not be clear that the lack of support for
location is the problem with the request message. location is the problem with the request message.
The presence of the Location option tag in a Supported header
without a Location header in the same message informs a receiving
SIP element the UAC understands the concept of location, but it does
not know its location at this time.
The new "Location" header has the following BNF syntax: The new "Location" header has the following BNF syntax:
Location = "Location" HCOLON Location-value *(COMMA Location = "Location" HCOLON (locationURI *(COMMA
Location-value) locationURI))
location-value = (addr-spec / option-tag / token) locationURI = absoluteURI / cidURI
addr-spec = cid-url / absoluteURI cidURI = "cid:" content-id
option-tag = string
token = token / quoted-string
cid-url = "cid" ":" content-id /
absoluteURI = SIP or SIPS-URI
content-id = url-addr-spec
url-addr-spec = addr-spec ; URL encoding of RFC 822 addr-spec
The Content-ID (cid) is defined in [RFC2392] to locate message body content-id = addr-spec ; URL encoding of RFC3261 addr-spec
parts.
The absoluteURI is the SIP or SIPS URI of the location-by-reference, The content-ID (cid:) is defined in [RFC2392] to locate message body
which points at a PIDF-LO of a UA in a record on a remote node. parts. This MUST be present if location is by-value in a message.
The following table extends the values in Table 2/3 of RFC3261 It is envisioned that HTTP, through the http_URL in [RFC216], and
HTTPS [RFC2818] MAY be used to dereference a location-by-reference
PIDF-LO.
The following table extends the values in Table 2&3 of RFC3261
[RFC3261]. [RFC3261].
Header field where proxy INV ACK CAN BYE REG OPT PRA Header field where proxy INV ACK CAN BYE REG OPT PRA
---------------------------------------------------------------- ----------------------------------------------------------------
Location Rr ar o - - o o o - Location Rr ar o - - o o o -
Header field where proxy SUB NOT UPD MSG REF INF PUB Header field where proxy SUB NOT UPD MSG REF INF PUB
---------------------------------------------------------------- ----------------------------------------------------------------
Location Rr ar - - o o o o - Location Rr ar - - o o o o -
The Location header MAY be added, or read if present in a Request The Location header MAY be added to, or read if present in, a
message listed above. A proxy MAY add the location header in request message listed above. A proxy MAY add the Location header
transit if one is not present. [RFC3261] states message bodies in transit if one is not present. [RFC3261] states message bodies
cannot be added by proxies. A proxy MAY read the location header in cannot be added by proxies. A proxy MAY read the location header in
transit if present. transit if present, and MAY use the contents of the location header
to make message routing decisions.
It is RECOMMENDED that only one Location header be in the same It is RECOMMENDED that only one Location header be in the same
message, but this is not mandatory. That said, there MUST NOT be message, but this is not mandatory. That said, there MUST NOT be
more than one cid-url pointing to a location message body (part) in more than one cid-url pointing to the same location message body
a SIP message, regardless of how many Location headers there are in (part) in a SIP message, regardless of how many Location headers
that message. There MUST NOT be more than one location by-reference there are in that message.
URI in any SIP message, regardless of how many Location headers
there are in a message.
Here is an example INVITE that includes the proper Location and As of the writing of this document, there is no means in a PIDF-LO
Supported headers (without the PIDF-LO message body part): to indicate which element generated that PIDF-LO. There is a means
of indicating what the subject of the location information is within
a PIDF-LO. Meaning, if more than one location, by-value and/or
by-reference is included in a message, the recipient, whether
intermediary or destination, will not know which location entry was
inserted by which element. This can lead to confusion in some
cases. Therefore, it is RECOMMENDED that there be a single location
representation referring to the same target/subject in a SIP
message. This PIDF-LO generation indication may be fixed in the
future, resolving this limitation, but that is not part of the scope
of this document.
Here is an example INVITE request message that includes the proper
Location and Supported headers:
INVITE sip:bob@biloxi.example.com SIP/2.0 INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP pc33.atlanta.example.com Via: SIP/2.0/TCP pc33.atlanta.example.com
;branch=z9hG4bK74bf9 ;branch=z9hG4bK74bf9
Max-Forwards: 70 Max-Forwards: 70
To: Bob <sip:bob@biloxi.example.com> To: Bob <sip:bob@biloxi.example.com>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com Call-ID: 3848276298220188511@atlanta.example.com
Location: cid:alice123@atlanta.example.com Location: cid:alice123@atlanta.example.com
Supported: location Supported: location
skipping to change at page 15, line 51 skipping to change at page 14, line 21
Content-Type: application/sdp Content-Type: application/sdp
...SDP here ...SDP here
--boundary1 --boundary1
Content-Type: application/pidf+xml Content-Type: application/pidf+xml
Content-ID: alice123@atlanta.example.com Content-ID: alice123@atlanta.example.com
...PIDF-LO with geo-location coordinates here ...PIDF-LO here
--boundary1-- --boundary1--
The location header from the above INVITE:
The Location header from the above INVITE:
Location: cid:alice123@atlanta.example.com Location: cid:alice123@atlanta.example.com
indicates the Content-ID location [RFC2392] within the multipart indicates the Content-ID location [RFC2392] within the multipart
message body of were location information is. message body of were location information is.
If the Location header were this instead: If the Location header were this instead:
Location: <server5@atlanta.example.com/alice123> Location: <server5@atlanta.example.com/alice123>
this would indicate location by-reference was included in this this would indicate location by-reference was included in this
message. It is expected that any node wanting to know where user message. It is expected that any node wanting to know where user
alice123 is would fetch the PIDF-LO from the server5 URI. alice123 is would fetch (dereference) the PIDF-LO from the server
URI.
4.2 424 (Bad Location Information) Response Code 4.2 424 (Bad Location Information) Response Code
In the case that a UAS or SIP intermediary detects an error In the case that a UAS or SIP intermediary detects an error
in a Request message specific to the location information supplied in a request message specific to the location information supplied
by-value or by-reference, a new 4XX level error is created here to by-value or by-reference, a new 4XX level error is created here to
indicate this is the problem with the request message. This indicate this is the problem with the request message. This
document creates the new error code: document creates the new error code:
424 (Bad Location Information) 424 (Bad Location Information)
The 424 (Bad Location Information) Response code is a rejection of The 424 (Bad Location Information) response code is a rejection of
the location contents, whether by-value or by-reference of the the location contents, whether by-value or by-reference of the
original SIP Request. The server function of the recipient (UAS or original SIP Request. The server function of the recipient (UAS or
intermediary) has deemed this location by-reference or location by- intermediary) has deemed this location by-reference or location by-
value to be bad. No further action by the UAC is required. The UAC value to be bad. No further action by the UAC is required. The UAC
can use whatever means it knows to verify/refresh its location can use whatever means it knows of to verify/refresh its location
information before attempting a new request. There is no cross- information before attempting a new request that includes location.
transaction awareness expected by either the UAS or SIP intermediary There is no cross-transaction awareness expected by either the UAS
as a result of this error message. or SIP intermediary as a result of this error message.
This new error code will be IANA registered in Section 10. This new error code will be IANA registered in Section 9.
4.3 Example PIDF-LO in Geo Format 4.3 Example PIDF-LO in Geo Format
This subsection will show a sample of what just the PIDF-LO can look This subsection will show a sample of what just the PIDF-LO can look
like, as defined in [RFC4119]. Having this here will first offer a like, as defined in [RFC4119]. Having this here will first offer a
look at a location by-value message body, and secondly, give readers look at a location by-value message body, and secondly, give readers
an appreciation for how large a location message body is so that an appreciation for how large a location message body is. This
this document does not have to show a PIDF-LO in every message flow section shows a coordinate position based PIDF-LO. Section 4.4
example. This section shows a coordinate position based PIDF-LO. shows this same position in a civic address format. Full example
Section 4.4 shows this same position in a civic address format. message flows will be left for another document.
Full example message flows will be left for another document.
Whether this PIDF-LO message body is S/MIME encrypted in the SIP Whether this PIDF-LO message body is S/MIME encrypted in the SIP
message or not, the PIDF-LO stays exactly the same. There is no message or not, the PIDF-LO stays exactly the same. There is no
change to its format, text or characteristics. Whether TLS or IPSec change to its format, text or characteristics. Whether TLS or IPSec
is used to encrypt this overall SIP message or not, the PIDF-LO is used to encrypt this overall SIP message or not, the PIDF-LO
stays exactly the same. There is no change to its format, text or stays exactly the same. There is no change to its format, text or
characteristics. The examples in section 4.3 (Geo format) taken characteristics. The examples in section 4.3 (Geo format) taken
from [RFC3825] and 4.4 (Civic format) taken from [ID-CIVIC] are for from [RFC3825] and 4.4 (Civic format) taken from [ID-CIVIC] are for
the exact same position on the Earth. The differences between the the exact same position on the Earth. The differences between the
two formats is within the <gp:location-info> are of the examples. two formats is within the <gp:location-info> are of the examples.
Other than this portion, of each PIDF-LO, the rest the same for both Other than this portion, of each PIDF-LO, the rest the same for both
location formats. location formats.
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf" <presence xmlns="urn:ietf:params:xml:ns:pidf"
xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10"
xmlns:gml="urn:opengis:specification:gml:schema- xmlns:cl="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
xsd:feature:v3.0" xmlns:gs="urn:ietf:params:xml:ns:pidf:geopriv10:geoShape"
entity="pres:alice@atlanta.example.com"> entity="pres:alice@atlanta.example.com">
<tuple id="sg89ae"> <tuple id="sg89ae">
<timestamp>2006-03-20T14:00:00Z</timestamp> <timestamp>2006-03-20T14:00:00Z</timestamp>
<status> <status>
<gp:geopriv> <gp:geopriv>
<gp:location-info> <gp:location-info>
<gml:location> <gml:location>
<gml:Point gml:id="point96" srsName="epsg:4326"> <gml:Point gml:id="point96" srsName="epsg:4326">
<gml:coordinates>33.001111N <gml:coordinates>33.001111N
96.68142W</gml:coordinates> 96.68142W</gml:coordinates>
</gml:Point> </gml:Point>
</gml:location> </gml:location>
</gp:location-info> </gp:location-info>
<method>dhcp</method>
<provided-by><nena>www.cisco.com</nena></provided-by/>
<gp:usage-rules> <gp:usage-rules>
<gp:retransmission-allowed>no</gp:retransmission-allowed> <gp:retransmission-allowed>no</gp:retransmission-allowed>
<gp:retention-expiry>2006-03-24T18:00:00Z</gp:retention- <gp:retention-expiry>2006-03-24T18:00:00Z</gp:retention-
expiry> expiry>
</gp:usage-rules> <gp:method>DHCP</gp:method>
<gp:provided-by>www.cisco.com</gp:provided-by>
</gp:usage-rules>
</gp:geopriv> </gp:geopriv>
</status> </status>
</tuple> </tuple>
</presence> </presence>
4.4 Example PIDF-LO in Civic Format 4.4 Example PIDF-LO in Civic Format
This subsection will show a sample of what just the PIDF-LO can look This subsection will show a sample of what just the PIDF-LO can look
like, as defined in [RFC4119]. Having this here will first offer a like, as defined in [RFC4119]. Having this here will first offer a
look at a location by-value message body, and secondly, give readers look at a location by-value message body, and secondly, give readers
an appreciation for how large a location message body is so that an appreciation for how large a location message body. This section
this document does not have to show a PIDF-LO in every message flow shows a civic address based PIDF-LO. Section 4.3 shows this same
example. This section shows a civic address based PIDF-LO. Section position in a coordinate format. Full example message flows will be
4.3 shows this same position in a coordinate format. Full example left for another document.
message flows will be left for another document.
Whether this PIDF-LO message body is S/MIME encrypted in the SIP Whether this PIDF-LO message body is S/MIME encrypted in the SIP
message or not, the PIDF-LO stays exactly the same. There is no message or not, the PIDF-LO stays exactly the same. There is no
change to its format, text or characteristics. Whether TLS or IPSec change to its format, text or characteristics. Whether TLS or IPSec
is used to encrypt this overall SIP message or not, the PIDF-LO is used to encrypt this overall SIP message or not, the PIDF-LO
stays exactly the same. There is no change to its format, text or stays exactly the same. There is no change to its format, text or
characteristics. The examples in section 4.3 (Geo format) taken characteristics. The examples in section 4.3 (Geo format) taken
from [RFC3825] and 4.4 (Civic format) taken from [ID-CIVIC] are for from [RFC3825] and 4.4 (Civic format) taken from [ID-CIVIC] are for
the exact same position on the Earth. The differences between the the exact same position on the Earth. The differences between the
two formats is within the <gp:location-info> are of the examples. two formats is within the <gp:location-info> are of the examples.
Other than this portion, of each PIDF-LO, the rest the same for both Other than this portion, of each PIDF-LO, the rest the same for both
location formats. location formats.
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf" <presence xmlns="urn:ietf:params:xml:ns:pidf"
xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10"
xmlns:gml="urn:opengis:specification:gml:schema- xmlns:cl="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
xsd:feature:v3.0" xmlns:gs="urn:ietf:params:xml:ns:pidf:geopriv10:geoShape"
entity="pres:alice@atlanta.example.com"> entity="pres:alice@atlanta.example.com">
<tuple id="sg89ae"> <tuple id="sg89ae">
<timestamp>2006-03-20T14:00:00Z</timestamp> <timestamp>2006-03-20T14:00:00Z</timestamp>
<status> <status>
<gp:geopriv> <gp:geopriv>
<gp:location-info> <gp:location-info>
<cl:civilAddress> <cl:civilAddress>
<cl:country>US</cl:country> <cl:country>US</cl:country>
<cl:A1>Texas</cl:A1> <cl:A1>Texas</cl:A1>
<cl:A3>Colleyville</cl:A3> <cl:A3>Colleyville</cl:A3>
<cl:HNO>3913</cl:HNO> <cl:HNO>3913</cl:HNO>
<cl:A6>Treemont</cl:A6> <cl:A6>Treemont</cl:A6>
<cl:STS>Circle</cl:STS> <cl:STS>Circle</cl:STS>
<cl:PC>76034</cl:PC> <cl:PC>76034</cl:PC>
<cl:LMK>Polk Place</cl:LMK> <cl:LMK>Polk Place</cl:LMK>
<cl:FLR>1</cl:FLR> <cl:FLR>1</cl:FLR>
<cl:civilAddress> <cl:civilAddress>
</gp:location-info> </gp:location-info>
<method>dhcp</method>
<provided-by><nena>www.cisco.com</nena></provided-by/>
<gp:usage-rules> <gp:usage-rules>
<gp:retransmission-allowed>no</gp:retransmission-allowed> <gp:retransmission-allowed>no</gp:retransmission-allowed>
<gp:retention-expiry>2006-03-24T18:00:00Z</gp:retention- <gp:retention-expiry>2006-03-24T18:00:00Z</gp:retention-
expiry> expiry>
<gp:method>DHCP</gp:method>
<gp:provided-by>www.cisco.com</gp:provided-by>
</gp:usage-rules> </gp:usage-rules>
</gp:geopriv> </gp:geopriv>
</status> </status>
</tuple> </tuple>
</presence> </presence>
5. SIP Element Behavior When Conveying Location 5. SIP Element Behavior When Conveying Location
The SIP Request Methods that MUST convey location are the INVITE, This specification includes requirements for the conveyance of
REGISTER, UPDATE and MESSAGE Methods. It is not forbidden by this location information in the INVITE, REGISTER, UPDATE, and MESSAGE
document to convey location with any other SIP method. However, no request methods. The mechanisms within this specification could
other methods are detailed here. presumably be used in other SIP requests types. However, since there
currently are no agreed upon requirement(s) for conveying location
in other request types, this specification only describes location
conveyance in the four request methods mentioned here.
The message flows in this document will be example messages The message flows in this document will be example messages
containing only the key headers to convey the point being made that containing only the key headers to convey the point being made that
do not include all the requisite SIP headers. All well formed SIP do not include all the requisite SIP headers. All well formed SIP
message flows are to be in a separate document for brevity here. message flows are to be in a separate document for brevity here.
5.1 Location Conveyance Using the INVITE Method 5.1 Location Conveyance Using the INVITE Method
Below is a common SIP session set-up sequence between two user Below is a common SIP session set-up sequence between two user
agents. In this example, Alice will provide Bob with her location agents. In this example, Alice will provide Bob with her location
skipping to change at page 19, line 30 skipping to change at page 17, line 52
| [M1] INVITE | | [M1] INVITE |
|---------------------------------------->| |---------------------------------------->|
| [M2] 200 OK | | [M2] 200 OK |
|<----------------------------------------| |<----------------------------------------|
| [M3] ACK | | [M3] ACK |
|---------------------------------------->| |---------------------------------------->|
| RTP | | RTP |
|<=======================================>| |<=======================================>|
| | | |
Figure 1. Location Conveyance in INVITE Requests Figure 3. Location Conveyance in INVITE Requests
User agent Alice invites user agent Bob to a session [M1 of Figure User agent Alice invites user agent Bob to a session [M1 of Figure
1]. 1].
INVITE sips:bob@biloxi.example.com SIP/2.0 INVITE sips:bob@biloxi.example.com SIP/2.0
To: Bob <sips:bob@biloxi.example.com> To: Bob <sips:bob@biloxi.example.com>
From: Alice <sips:alice@atlanta.example.com>;tag=1928301774 From: Alice <sips:alice@atlanta.example.com>;tag=1928301774
Supported: Location Supported: Location
Location: cid:alice123@atlanta.example.com Location: cid:alice123@atlanta.example.com
skipping to change at page 20, line 31 skipping to change at page 19, line 4
In the INVITE, Alice's UAC included the Supported header with the In the INVITE, Alice's UAC included the Supported header with the
location option tag, and the Location header with the cid:url location option tag, and the Location header with the cid:url
pointing at the by-value PIDF-LO. These two headers MAY be hidden pointing at the by-value PIDF-LO. These two headers MAY be hidden
in the S/MIME encrypted message body next to the topmost in the S/MIME encrypted message body next to the topmost
Content-Type header to hide the fact that this message is carrying Content-Type header to hide the fact that this message is carrying
location in transit. Bob's UAS, the destination UA of Alice's location in transit. Bob's UAS, the destination UA of Alice's
message, will read these headers when deciphering the overall message, will read these headers when deciphering the overall
message body. message body.
- If Bob's UA wants to join the call, his UA responses with a 200 OK - If Bob's UA wants to join the call, his UA responses with a 200 OK
[M2]. Bob can include his location in the 200 OK response, but [M2]. Bob can include his location in the 200 OK response, but
this shouldn't be expected to due to user timing. this shouldn't be expected to due to user timing.
A 424 (Bad Location Information) Response with a Unsupported header A 424 (Bad Location Information) Response is the proper response if
(option tag of 'location') is the proper response if Bob's UA cannot Bob's UA understands this SIP extension (location), but somehow
display this information, but does understand the concept of determines the supplied location information is bad.
location.
[Alternative M2 of Figure 2] [Alternative M2(1) of Figure 3]
SIP/2.0 424 Bad Location Information SIP/2.0 424 Bad Location Information
To: Bob <sips:bob@biloxi.example.com> To: Bob <sips:bob@biloxi.example.com>
From: Alice <sips:alice@atlanta.example.com>;tag=1928301774 From: Alice <sips:alice@atlanta.example.com>;tag=1928301774
Unsupported: location
The 424 is expected to be more commonly sent by SIP intermediaries
along the path between Alice and Bob, than from Bob's UA.
- If Bob's UA accepts with a 200 OK message, Alice's UA replies with - If Bob's UA accepts with a 200 OK message, Alice's UA replies with
an ACK and the session is set up. an ACK and the session is set up.
- If Bob's UA does not accept the INVITE for reasons other than - If Bob's UA does not accept the INVITE for reasons other than
location included, a 488 (Not Acceptable Here) may be the location included, a 488 (Not Acceptable Here) may be the
response. response.
Figure 1 does not include any Proxies because in it assumed they Figure 3 does not include any Proxies because in it assumed they
would not affect the session set-up with respect to whether or not would not affect the session set-up with respect to whether or not
Alice's location is in a message body part, and Proxies do not react Alice's location is in a message body part, and Proxies do not react
to S/MIME encrypted bodies, making their inclusion more or less moot to S/MIME encrypted bodies, making their inclusion more or less moot
and asking for more complex message flows than necessary here. and asking for more complex message flows than necessary here.
5.2 Location Conveyance Using the MESSAGE Method If Alice included a Require header such as this:
Alice can choose to merely want to communicate her location to Bob
point-to-point, without starting a (voice) conversation, the MESSAGE
Method MAY be used here.
To comply with privacy concerns raised in [RFC3693] and [RFC4119], a
MESSAGE Method Request would be built according to [RFC3428] that
includes a location message body. S/MIME encryption SHOULD be used
on the message body (part), as outlined in [RFC3261]. Figure 2 here
shows a simplistic MESSAGE method message flow.
UA Alice UA Bob
| MESSAGE [M1] |
|---------------------------------------->|
| 200 OK [M2] |
|<----------------------------------------|
| |
Figure 1. Location Conveyance in MESSAGE Requests
Below is a sample, non-well-formed MESSAGE Method message from Alice
to Bob conveying her geo location:
[M1 of Figure 2]
MESSAGE sips:bob@biloxi.example.com SIP/2.0
To: Bob
From: Alice
Supported: location
Location: cid:alice123@atlanta.example.com
If the message were S/MIME encrypted, this would be the Content-type
header:
Content-Type: application/pkcs7-mime;
smime-type=enveloped-data; name=smime.p7m
If this MESSAGE request were not S/MIME encrypted, this would be the
Content-Type header:
Content-Type: multipart/mixed; boundary=boundary1
--boundary1
Content-Type: text/plain
Here's my location, Bob?
--broundary1
Content-Type: application/pidf+xml
Content-Disposition: render
[Alice's PIDF-LO goes here]
--broundary1--
The Content-type of M1 here is "multipart/mixed" to have a text
message incorporated into the message. Within the PIDF-LO message
body, there is a Content-Disposition of "render" to display this
location information to Bob when his UA receives it. The cautions
about whether or not Bob actually reads this message are outlined in
[RFC3428].
The 200 OK to M1 of Figure 2 is a simple 200 OK. Require: Location
A 424 (Bad Location Information) Response with a Unsupported header and Bob did not understand this SIP extension, Bob's appropriate
(option tag of 'location') is the proper response if Bob's UA cannot response would be a 420 (Bad Extension) with an Unsupported header
display this information, but does understand the concept of containing the Location option tag. This is shown below as an
location. alternative (2) to M2 in Figure 3.
[Alternative M2 of Figure 2] [Alternative M2(2) of Figure 3]
SIP/2.0 424 Bad Location Information SIP/2.0 420 Bad Extension
To: Bob To: Bob <sips:bob@biloxi.example.com>
From: Alice From: Alice <sips:alice@atlanta.example.com>;tag=1928301774
Unsupported: location Unsupported: location
If Bob is declining the M2 MESSAGE Request message, a 488 (Not 5.2 Location Conveyance Using the MESSAGE Method
Acceptable Here) is the appropriate response. A Supported header
with a location option tag indicates location was not the reason
this message was declined.
[Alternative M2 of Figure 2] There are no additional rules regarding conveying location in a
SIP/2.0 488 Not Acceptable Here MESSAGE request verses an INVITE request.
To: Bob
From: Alice
Supported: location
5.3 Location Conveyance Using the UPDATE Method 5.3 Location Conveyance Using the UPDATE Method
The UPDATE Method [RFC3311] is to be used any time location The UPDATE Method [RFC3311] is to be used any time location
information is to be updated between UAs setting up a dialog or information is to be updated between UAs setting up a dialog or
after the dialog has been established, no matter how long that after the dialog has been established, no matter how long that
dialog has been operational. reINVITE is inappropriate here, and dialog has been operational. reINVITE is inappropriate here, and
the MESSAGE Method is for non-dialog location conveyance between UAs the MESSAGE Method is for non-dialog location conveyance between UAs
only. The same security properties used in the INVITE MUST be only. The same security properties used in the INVITE MUST be
applied in the UPDATE message. applied in the UPDATE message.
There are 3 conditions UPDATE is to be used to convey location There are 3 conditions UPDATE is used to convey location between
between UAs: UAs:
1) During dialog establishment, but before the final 200 OK (see 1) During dialog establishment, but before the final 200 OK
section 5.3.1)
2) After dialog establishment, but no prior location information has 2) After dialog establishment, but no prior location information has
been convey (see section 5.3.2), and been convey, and
3) After dialog establishment, when a UA has determined it has moved 3) After dialog establishment, when a UA has determined it has moved
(see section 5.3.3) (not specified here)
5.3.1 UPDATE Updates Location During Session Establishment
Figure 3a. shows the first example of what the UPDATE Method is
used: during dialog establishment when Alice updates Bob with her
location information [M3]. This might be different location
information than was in message [M1] of Figure 3a. or it could be
the first time Alice conveys location to Bob during the dialog
set-up.
UA Alice UA Bob
| INVITE [M1] |
|---------------------------------------->|
| UPDATE [M2] |
|---------------------------------------->|
| 200 OK (UPDATE) [M3] |
|<----------------------------------------|
| 200 OK (INVITE) [M4] |
|<----------------------------------------|
| ACK (UPDATE) [M5] |
|---------------------------------------->|
| RTP |
|<=======================================>|
| |
Figure 3a. Updating Location During Dialog Establishment
[M2 of Figure 3a]
UPDATE sips:bob@biloxi.example.com SIP/2.0
To: Bob
From: Alice
Supported: location
Location: cid:alice123@atlanta.example.com
Content-Type: multipart/mixed; boundary=boundary1
--boundary1
Content-Type: application/sdp
v=
...
--broundary1
Content-Type: application/pidf+xml
[Alice's PIDF-LO goes here]
--broundary1--
The above example has Alice also changing something within her
original SDP, but this is not necessary for this update of location
information.
- If Bob agrees with this INVITE and the UPDATE, there his UA
transits 200 OKs for each [M4] and [M5] in Figure 3a.
- Alice, upon receiving the 200 OKs, sends an ACK to establish the
dialog with her modified location.
Bob's UA should send a 424 (Bad Location Information) Response with
a Unsupported header (stating 'location') if his UA does not
understand the concept of location conveyance; meaning to the INVITE
in [M1]. Therefore, a 424 SHOULD NOT be sent to the UPDATE of
location information if the PIDF-LO is well formed and has valid
(not validated!) location fields. If Bob's UA sends a 424 to this
UPDATE without an Unsupported header containing a location option
tag, Alice's UA MUST interpret that to mean the location in the
PIDF-LO was poorly generated. Perhaps it was missing a field.
Perhaps a field was incomplete.
If Bob is declining the M2 UPDATE Request message, a 488 (Not
Acceptable Here) is the appropriate response. A Supported header
with a location option tag indicates location was not the reason
this message was declined.
[Alternative M3 of Figure 3a]
SIP/2.0 488 Not Acceptable Here
To: Bob
From: Alice
Supported: location
5.3.2 UPDATE Updates Location After Session Establishment
Figure 3b. shows the second example of what the UPDATE Method is
used for: if a dialog exists between Alice and Bob without location
having been conveyed previously in either direction, and one of the
UAs wants to convey location to the other. For example, if Alice
invites Bob to a dialog, but does not include her location in that
dialog establishment. Anytime during that dialog that Alice's UA
decides to convey location, she uses the UPDATE Method, not the
INVITE Method (in a reINVITE), to update the location parameters of
that dialog.
Once a dialog has been established, a UAC MUST NOT use the INVITE
Method as a reINVITE to convey location within a dialog. The UPDATE
Method MUST be used.
Consider the following example message flow in Figure 3b.:
UA Alice UA Bob
| INVITE [M1] |
|---------------------------------------->|
| 200 OK (INVITE) [M2] |
|<----------------------------------------|
| ACK [M3] |
|<----------------------------------------|
| RTP |
|<=======================================>|
| UPDATE [M4] |
|---------------------------------------->|
| 200 OK (UPDATE) [M5] |
|<----------------------------------------|
| |
Figure 3b. Updating Location After Dialog Establishment
For whatever reason, Alice decides to send Bob her location for the
first time. [M4] is an example of the UPDATE message used to
accomplish this.
[M4 of Figure 3b]
UPDATE sips:bob@biloxi.example.com SIP/2.0
To: Bob
From: Alice
Supported: location
Location: cid:alice123@atlanta.example.com
Content-Type: application/pidf+xml
[Alice's PIDF-LO goes here]
A 424 (Bad Location Information) Response with a Unsupported header
(stating Location) is the proper response if Bob's UA does not
understand the concept of location. In this case, the dialog MUST
remain unaffected by this rejection message. Here is a rough idea
of this 424:
[Alternative M5 of Figure 3b]
SIP/2.0 424 Bad Location Information
To: Bob
From: Alice
Unsupported: location
If Bob is declining the M4 UPDATE Request message, a 488 (Not
Acceptable Here) is the appropriate response. A Supported header
with a location option tag indicates location was not the reason
this message was declined.
[Alternative M5 of figure 3b]
SIP/2.0 488 Not Acceptable Here
To: Bob
From: Alice
Supported: location
5.3.3 UPDATE Updates Location After a UA Moves in a Dialog
Figure 3c. shows the first example of what the UPDATE Method is
used: if one UA that already conveyed location to the other UA, and
has moved since the dialog was originally sent up. How a UA
determines it has moved is out of scope for this document.
However that "movement" trigger occurred, M4 of Figure 3c. is the
result: an UPDATE Method Request indicating new location by Alice,
to keep Bob current with Alice's position.
UA Alice UA Bob
| INVITE [M1] |
|---------------------------------------->|
| 200 OK (INVITE) [M2] |
|<----------------------------------------|
| ACK [M3] |
|<----------------------------------------|
| RTP |
|<=======================================>|
**Alice's UA determines it has moved, and needs to update Bob**
| UPDATE [M4] |
|---------------------------------------->|
| 200 OK (UPDATE) [M5] |
|<----------------------------------------|
| |
Figure 3c. Updating Location During Dialog After Movement
This message flow assumes Alice conveyed location in [M1], and that
Bob's UA supports location conveyance by not rejecting the INVITE
request.
Message M4 of Figure 3c. shows the UPDATE of Alice's location
information to Bob. That message may look like this (non-well-
formed SIP message):
[M4 of Figure 3c]
UPDATE sips:bob@biloxi.example.com SIP/2.0
To: Bob
From: Alice
Supported: location
Location: cid:alice123@atlanta.example.com
Content-Type: application/pidf+xml
[Alice's PIDF-LO goes here]
There currently is not an indication within the PIDF-LO for Alice to
tell Bob this PIDF-LO is new, replacement location information from
a previous message (here in the M1 INVITE message).
Because of the 200 OK to the INVITE containing location, Alice knows
Bob's UA understands location conveyance. Therefore, if Bob's UA
sends a 424 to this UPDATE, it MUST NOT contain an Unsupported
header containing a location option tag.
If Alice does receive a 424 (with the Unsupported header with a
location option tag), Alice's UA MUST interpret that to mean the
location in the PIDF-LO was poorly generated. Perhaps it was
missing a field. Perhaps a field was incomplete.
If Bob is declining the M4 UPDATE Request message, a 488 (Not
Acceptable Here) is the appropriate response. A Supported header
with a location option tag indicates location was not the reason
this message was declined.
[Alternative M5 of figure 3c] There are no additional rules regarding conveying location in a
SIP/2.0 488 Not Acceptable Here UPDATE request verses an INVITE request.
To: Bob
From: Alice
Supported: location
5.4 Location Conveyance Using the REGISTER Method 5.4 Location Conveyance Using the REGISTER Method
Alice can choose to merely want to communicate her location to Bob Alice's user agent MAY choose to communicate its location during
point-to-point, without starting a (voice) conversation, the registration, the REGISTER Method is used here. This MAY be done to
REGISTER Method MAY be used here. inform the Registrar server where this UA is to provide it a
customized response based on the particulars of UAs in that
To comply with privacy concerns raised in [RFC3693] and [RFC4119], a jurisdiction. To indicate to a Registrar Server a UAC supports this
REGISTER Method Request MUST S/MIME encrypt the PIDF-LO, as outlined SIP extension, but does not include location in the message,
in [RFC3261]. A UAC SHOULD use a SIPS-URI, as outlined in including a Supported header with a location option tag does this.
[RFC3261]. Figure 4 here shows a simplistic REGISTER method Either transaction SHOULD an appropriate confidentiality mechanism.
message flow.
UA Alice Registrar
| REGISTER [M1] |
|---------------------------------------->|
| 200 OK [M2] |
|<----------------------------------------|
| |
Figure 4. Location Conveyance in REGISTER Requests
Below is a sample, non-well-formed REGISTER Method message from
Alice to Bob conveying her geo location:
[M1 of Figure 2]
REGISTER sips:registrar1@biloxi.example.com SIP/2.0
To: Alice <sips:alice@atlanta.example.com>;
From: Alice <sips:alice@atlanta.example.com>;tag=1928301774
Supported: location
Location: cid:alice123@atlanta.example.com
Expires: 21600
If the message were S/MIME encrypted, this would be the Content-type
header:
Content-Type: application/pkcs7-mime;
smime-type=enveloped-data; name=smime.p7m
If this REGISTER request were not S/MIME encrypted, this would be
the Content-Type header:
Content-Type: application/pidf+xml
provided there were no other registration event message bodies.
The 200 OK to M1 of Figure 2 is a simple 200 OK.
A 424 (Bad Location Information) Response with a Unsupported header
(option tag of 'location') is the proper response if the Registrar
server does not understand location conveyance.
[Alternative M2 of Figure 2]
SIP/2.0 424 Bad Location Information
To: Alice
From: Alice
Unsupported: location
If the Registrar Server is declining the original [M1] REGISTER
Request, a 488 (Not Acceptable Here) is the appropriate response. A
Supported header with a location option tag indicates location was
not the reason this message was declined.
[Alternative M2 of Figure 2]
SIP/2.0 488 Not Acceptable Here
To: Alice
From: Alice
Supported: location
6. Special Considerations for Emergency Calls 6. Special Considerations for Emergency Calls
Emergency calling, such as 911, 112 and 999 calling today, Emergency calling, such as 911, 112 and 999 calling today,
necessitates a UAC to understand the type of call it is about to necessitates a UAC to understand the type of call it is about to
generate with an INVITE message to a PSAP. First of all, the initiate with an INVITE message to a PSAP. First of all, the
purpose of calling for emergency help is to get someone to respond purpose of calling for emergency help is to get someone to respond
to the UAC's location, therefore, location MUST be included in the to the UAC's location, therefore, location MUST be included in the
INVITE, if known by the UAC. INVITE, if known by the UAC. If the UAC understands this, but does
not know its location at this time, it MUST include the location
option tag in the Supported header, and MUST NOT include the
Location header, as it would not have anything to put as a header
value.
The emergency services community strongly prefers that message The emergency services community strongly prefers that message
routing occur in the network with the freshest available Public routing occur in the network with the freshest available Public
Safety Answering Point (PSAP) information. Message routing, in this Safety Answering Point (PSAP) information. Message routing, in this
context, means choosing which SIP(S)-URI to place in the Request-URI context, means choosing which SIP(S)-URI to place in the Request-URI
field of the status line. field of the status line.
If a UAC knows it is generating an emergency request towards a PSAP, If a UAC knows it is generating an emergency request towards a PSAP,
there MAY be unique message handling characteristics that diminish there MAY be unique message handling characteristics that diminish
the level of confidentiality of the location information within the the level of confidentiality of the location information within the
skipping to change at page 29, line 36 skipping to change at page 21, line 24
emergency calls are directed to the PSAP local to the caller's emergency calls are directed to the PSAP local to the caller's
location. A proxy performing this function requires that proxy to location. A proxy performing this function requires that proxy to
learn the location of the UAC during message processing. learn the location of the UAC during message processing.
How a message is routed based on the location of the UAC, and if and How a message is routed based on the location of the UAC, and if and
by how much the level of confidentiality of location information is by how much the level of confidentiality of location information is
diminished when calling for emergency help are both out of scope of diminished when calling for emergency help are both out of scope of
this document. this document.
Hop-by-hop confidentiality mechanisms, as defined in [RFC3261] MUST Hop-by-hop confidentiality mechanisms, as defined in [RFC3261] MUST
be attempted initially by a UAC that includes location. Local be initially attempted by a UAC that includes location. Local
configuration MAY allow a subsequent retry, after a security related configuration MAY allow a subsequent retry, after a security related
failure, to be without hop-by-hop confidentiality. SIP elements failure, to be without hop-by-hop confidentiality. SIP elements
MUST obey the rules set forth in [RFC3261] regarding maintaining MUST obey the rules set forth in [RFC3261] regarding maintaining
hop-by-hop confidentiality when a message using a SIPS-URI. hop-by-hop confidentiality when a message using a SIPS-URI. If a
UAC retries an emergency request as the result of a 424 (Bad
Location) response, that new request MUST NOT include message body
encryption. Further details of emergency request messages are left
to future work to define.
While many jurisdictions force a user to reveal their location While many jurisdictions force a user to reveal their location
during an emergency call set-up, there is a small, but real, number during an emergency call set-up, there is a small, but real, number
of jurisdictions that allow a user to configure their calling device of jurisdictions that allow a user to configure their calling device
to disable providing location, even during emergency calling. This to disable providing location, even during emergency calling. This
capability MUST be configurable, but is not RECOMMENDED as the capability MUST be configurable, but is not RECOMMENDED as the
default configuration of any UA. Local policies will dictate this default configuration of any UA. Local policies will dictate this
ability. ability.
7. Meeting RFC3693 Requirements 7. Meeting RFC3693 Requirements
skipping to change at page 30, line 28 skipping to change at page 22, line 22
Req. 6. (Single Message Transfer) In particular, for tracking of Req. 6. (Single Message Transfer) In particular, for tracking of
small target devices, the design should allow a single small target devices, the design should allow a single
message/packet transmission of location as a complete message/packet transmission of location as a complete
transaction. transaction.
This document specifies that the LO be contained in the body of a This document specifies that the LO be contained in the body of a
single message, which may be fragmented via TCP, but is still not a single message, which may be fragmented via TCP, but is still not a
streaming delivery. streaming delivery.
8. Open issues 8. Security Considerations
This is a list of open issues that have not yet been addressed to
conclusion:
none
9. Security Considerations
Conveyance of physical location of a UAC is problematic for many Conveyance of physical location of a UAC is problematic for many
reasons. This document calls for that conveyance to normally be reasons. This document calls for that conveyance to normally be
accomplished through secure message body means (like S/MIME or TLS). accomplished through secure message body means (like S/MIME or TLS).
In cases where a session set-up is routed based on the location of In cases where a session set-up is routed based on the location of
the UAC initiating the session or SIP MESSAGE, securing the location the UAC initiating the session or SIP MESSAGE, securing the location
with an end-to-end mechanism such as S/MIME is problematic, due to with an end-to-end mechanism such as S/MIME is problematic, due to
the probability of a proxy from requiring the ability to read that the probability of a proxy from requiring the ability to read that
information to route the message appropriately. This means the use information to route the message appropriately. This means the use
of S/MIME may not be possible. This leaves location information of of S/MIME may not be possible. This leaves location information of
skipping to change at page 31, line 6 skipping to change at page 22, line 44
not be a perfect solution, but may be a pill we need to swallow to not be a perfect solution, but may be a pill we need to swallow to
enable this functionality. enable this functionality.
A bad implementation of SIP location conveyance would have a UAC A bad implementation of SIP location conveyance would have a UAC
send location in cleartext, without hop-by-hop confidentiality, or send location in cleartext, without hop-by-hop confidentiality, or
have any SIP element along the path towards the PSAP alter the have any SIP element along the path towards the PSAP alter the
transport of any message carrying location to be without hop-by-hop transport of any message carrying location to be without hop-by-hop
confidentiality between elements. The latter would be in clear confidentiality between elements. The latter would be in clear
violation of RFC3261 rules surrounding the use of a SIPS-URI. violation of RFC3261 rules surrounding the use of a SIPS-URI.
10. IANA Considerations 9. IANA Considerations
This section defines one new SIP header, two new option tags, and This section defines one new SIP header, one new option tag, and
one new 4XX error response code within the sip-parameters section of one new 4XX error response code within the sip-parameters section of
IANA. [NOTE: RFC XXXX denotes this document]. IANA. [NOTE: RFC XXXX denotes this document].
10.1 IANA Registration for the SIP Location Header 9.1 IANA Registration for the SIP Location Header
The Location header is created by this document, with its definition The SIP Location header is created by this document, with its
and rules in Section 4 of this document. definition and rules in Section 4 of this document.
10.2 IANA Registration for Two New SIP Option Tags 9.2 IANA Registration for New SIP Option Tag
Two new SIP option tags are created by this document, "Location" and The SIP option tag "Location" is created by this document, with the
"Unknown-location", with the definitions and rules for each in definition and rule in Section 4 of this document.
Section 4 of this document.
10.3 IANA Registration for Response Code 4XX 9.3 IANA Registration for Response Code 4XX
Reference: RFC-XXXX (i.e. this document) Reference: RFC-XXXX (i.e. this document)
Response code: 424 Response code: 424
Default reason phrase: Bad Location Information Default reason phrase: Bad Location Information
11. Acknowledgements This SIP Response code is defined in section 4.2 of this document.
10. Acknowledgements
To Dave Oran for helping to shape this idea. To Jon Peterson and To Dave Oran for helping to shape this idea. To Jon Peterson and
Dean Willis on guidance of the effort. To Henning Schulzrinne, Dean Willis on guidance of the effort. To Henning Schulzrinne,
Jonathan Rosenberg, Dick Knight, Mike Hammer and Keith Drage for Jonathan Rosenberg, Dick Knight, Mike Hammer, Paul Kyzivat,
constructive feedback. Jean-Francois Mule, Hannes Tschofenig, Marc Linsner, Jeroen van
Bemmel and Keith Drage for constructive feedback.
To Paul Kyzivat for inspiring some of the recent text addressing
lingering issues the authors could not resolve.
To Jon Peterson for his guidance in this effort.
12. References 11. References
12.1 References - Normative 11.1 References - Normative
[RFC3261] J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J. [RFC3261] J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J.
Peterson, R. Sparks, M. Handley, and E. Schooler, "SIP: Peterson, R. Sparks, M. Handley, and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, May 2002. Session Initiation Protocol", RFC 3261, May 2002.
[RFC3693] J. Cuellar, J. Morris, D. Mulligan, J. Peterson. J. Polk, [RFC3693] J. Cuellar, J. Morris, D. Mulligan, J. Peterson. J. Polk,
"Geopriv Requirements", RFC 3693, February 2004 "Geopriv Requirements", RFC 3693, February 2004
[RFC2119] S. Bradner, "Key words for use in RFCs to Indicate [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate
Requirement Levels", RFC 2119, March 1997 Requirement Levels", RFC 2119, March 1997
skipping to change at page 32, line 18 skipping to change at page 23, line 50
[RFC4119] J. Peterson, "draft-ietf-geopriv-pidf-lo-03", Internet [RFC4119] J. Peterson, "draft-ietf-geopriv-pidf-lo-03", Internet
Draft, Sept 2004, work in progress Draft, Sept 2004, work in progress
[RFC3428] B. Campbell, Ed., J. Rosenberg, H. Schulzrinne, C. Huitema, [RFC3428] B. Campbell, Ed., J. Rosenberg, H. Schulzrinne, C. Huitema,
D. Gurle, "Session Initiation Protocol (SIP) Extension for D. Gurle, "Session Initiation Protocol (SIP) Extension for
Instant Messaging" , RFC 3428, December 2002 Instant Messaging" , RFC 3428, December 2002
[RFC2392] E. Levinson, " Content-ID and Message-ID Uniform Resource [RFC2392] E. Levinson, " Content-ID and Message-ID Uniform Resource
Locators", RFC 2393, August 1998 Locators", RFC 2393, August 1998
[RFC2616] R. Fielding, J. Gettys, J., Mogul, H. Frystyk, L.,
Masinter, P. Leach, T. Berners-Lee, "Hypertext Transfer
Protocol - HTTP/1.1", RFC 2616, June 1999
[RFC2818] E. Rescorla, "HTTP Over TLS", RFC 2818, May 2000
[RFC3311] J. Rosenberg, "The Session Initiation Protocol (SIP) UPDATE [RFC3311] J. Rosenberg, "The Session Initiation Protocol (SIP) UPDATE
Method", RFC 3311, October 2002 Method", RFC 3311, October 2002
12.2 References - Informative 11.2 References - Informative
[ID-Sess-Pol] J. Rosenberg, "Requirements for Session Policy for the
Session Initiation Protocol”, draft-ietf-sipping-session-
policy-req-02", Internet Draft, July, 2004, "work in
progress"
[RFC3825] J. Polk, J. Schnizlein, M. Linsner, "Dynamic Host [RFC3825] J. Polk, J. Schnizlein, M. Linsner, "Dynamic Host
Configuration Protocol Option for Coordinate-based Location Configuration Protocol Option for Coordinate-based Location
Configuration Information", RFC 3825, July 2004 Configuration Information", RFC 3825, July 2004
[ID-CIVIC] H. Schulzrinne, " Dynamic Host Configuration Protocol [ID-CIVIC] H. Schulzrinne, " Dynamic Host Configuration Protocol
(DHCPv4 and DHCPv6) Option for Civic Addresses Configuration (DHCPv4 and DHCPv6) Option for Civic Addresses Configuration
Information ", draft-ietf-geopriv-dhcp-civil-09, "work in Information ", draft-ietf-geopriv-dhcp-civil-09, "work in
progress", January 2006 progress", January 2006
Author Information Author Information
James M. Polk James Polk
Cisco Systems Cisco Systems
3913 Treemont Circle 33.00111N 3913 Treemont Circle 33.00111N
Colleyville, Texas 76034 96.68142W Colleyville, Texas 76034 96.68142W
Phone: +1-817-271-3552 Phone: +1-817-271-3552
Email: jmpolk@cisco.com Email: jmpolk@cisco.com
Brian Rosen Brian Rosen
470 Conrad Dr. 40.70497N 470 Conrad Dr. 40.70497N
Mars, PA 16046 80.01252W Mars, PA 16046 80.01252W
US US
Phone: +1 724 382 1051 Phone: +1 724 382 1051
Email: br@brianrosen.net Email: br@brianrosen.net
Appendix A. Changes from Prior Versions
[NOTE TO RFC-EDITOR: If this document is to be published as an RFC,
this Appendix is to be removed prior to that event.]
This is a list of the changes that have been made from the SIP WG
version -02 to this version -03:
- general clean-up of some of the sections
- removed the message examples from the UPDATE, MESSAGE and REGISTER
sections, as these seemed to be making the doc less readable, and
not more readable
- removed the "unknown" option tag, as it was not needed with a
certain combination of the Supported and Location headers
- clarified the location option tag usage in Supported, Require,
Unsupported, and that it shouldn't be used in Proxy-Require, and
why not.
- Added a basic message flow to the basic operation section (Section
4) to aid in understanding of this SIP extension.
- Added a message routing flow, which is based on the location of
the requestor to show how a SIP server can make a routing decision
to a destination based on where the UAC is.
- Articulated how a UAS concludes a UAC understands this extension,
yet does not know its location to provide to the UAS. This is
helpful in those times where an intermediary will act differently
based on whether or not a UAC understands this extension, and
whether or not the UAC includes its location in the request.
- Corrected the erroneous text regarding an Unsupported header being
in a 424 response. It belongs in a 420 response. (Section 5.1)
- Corrected the BNF (I hope)
- Corrected some text in Section 5 that read like this document was
an update to RFC 3261.
This is a list of the changes that have been made from the SIP WG
version -01 to this version -02:
- streamlined the doc by removing text (ultimately removing 42 pages
of text).
- Limited the scope of this document to SIP conveyance, meaning only
how SIP can push location information.
- reduced emergency calling text to just a few paragraphs now that
the ECRIT WG is taking most of that topic on.
- greatly reduced the number of requirements in this version.
- changed the requirements groups from "UA-to-UA", "UA-to-Proxy",
etc to "UAC Reqs", "UAS-Reqs" and "Proxy-Reqs" to focus on what is
being asked of each SIP element.
- Removed the full SIP message examples.
- completed the ABNF for the Location header, including a cid-url to
point at a message body part to help in parsing for location.
- Deleted the call for a new 425 (Retry Location) response code, as
it appears this can easily be used to spoof a UA into providing
where it is inadvertently, even if the intent is legitimate by the
UAC.
This is a list of the changes that have been made from the SIP WG
version -00 to this version -01:
- cleaned up a lot of loose ends in the text
- created a new Location header to convey many means (location is in
the body - even if not viewable, which location format is present,
which format is requested in a query, how to request more than one
location format in a query, whether the UAC understands location
at all, if the UA knows its location, how to push location from
one UA to through a second to a third UA, etc).
- added the ability to convey location by-reference, but only under
certain conditions.
- Added support for the OPTIONS Request to query a server for the
UAC's location, through the use of the new Location header.
- moved both new Response code sections forward in the document for
their meaning to be clearer, earlier for necessary discussion.
- Changed the message flows to only have the pertinent message
headers shown for brevity.
- Added text to the SUB/NOT section showing how and why the location
of a UA can be refreshed or updated with an interval, or by a
trigger.
This is a list of the changes that have been made from the SIPPING
WG version -02 to this SIP WG item document version -00:
- Changed which WG this document is in from SIPPING to SIP due to
the extension of the protocol with new Response codes (424 and
425) for when there is an error involving the LO message body.
- Moved most of the well formed SIP messages out of the main body of
this document and into separate appendixes. This should clean up
the document from a readability point of view, yet still provide
the intended decode examples to readers of this document who wish
that level of detail per flow. The first few flows still have the
decoded SIP messages (unencrypted and encrypted).
- Removed some flow examples which no longer made sense
- Changed all references of "ERC" (Emergency Response Center) to
"PSAP" (Public Safety Answering Point) as a result of discussion
within the new ECRIT WG to define a single term
This is a list of the changes that have been made from the sipping-
01 working group version of this effort to the sipping-02 version:
- added requirements for 2 new 4XX error responses (Bad Location
Information) and (Retry Location Body)
- added "Bad Location Information" as section 8.6
- added "Retry Location Body " as section 9.3
- added support for session mode to cover packet sizes larger than
the single packet limit of 1300 bytes in the message body
- added requirement for a SIP entity to SUBSCRIBE to another for
location information
- added SUBSCRIBE and NOTIFY as section 8.5
- added requirement to have user turn off any tracking created by
subscription
- removed doubt about which method to use for updating location
after a INVITE is sent (update)
- cleaned up which method is to be used if there is no dialog
existing (message)
- removed use of reINVITE to convey location
- clarified that UAs include <provided-by> element of PIDF-LO when
placing an emergency call (to inform PSAP who supplied Location
information)
- updated list of open issues
- added to IANA Considerations section for the two new 4XX level
error responses requested in the last meeting
This is a list of the changes that have been made from the sipping-
00 working group version of this ID to the sipping-01 version:
- Added the offered solution in detail (with message flows,
appropriate SIP Methods for location conveyance, and
- Synchronized the requirements here with those from the Geopriv
Working Group's (attempting to eliminate overlap)
- Took on the task of making this effort the SIP "using protocol"
specification from Geopriv's POV
- Refined the Open Issues section to reflect the progress we've made
here, and to indicate what we have discovered needs addressing,
but has not been to date.
This is a list of the changes that have been made from the -01
individual submission version to the sipping-00 version of this ID:
- Brian Rosen was brought on as a co-author
- Requirements that a location header were negatively received in
the previous version of this document. AD and chair advice was to
move all location information into a message body (and stay away
from headers)
- Added a section of "emergency call" specific requirements
- Added an Open Issues section to mention what hasn't been resolved
yet in this effort
This is a list of the changes that have been made from the
individual submission version -00 to the -01 version
- Added the IPR Statement section
- Adjusted a few requirements based on suggestions from the
Minneapolis meeting
- Added requirements that the UAC is to include from where it
learned its location in any transmission of its LI
- Distinguished the facts (known to date) that certain jurisdictions
relieve persons of their right to privacy when they call a PSAP,
while other jurisdictions maintain a person's right to privacy,
while still others maintain a person's right to privacy - but only
if they ask that their service be set up that way.
- Made the decision that TLS is the security mechanism for location
conveyance in emergency communications (vs. S/MIME, which is still
the mechanism for UA-to-UA non-emergency location conveyance
cases).
- Added the Open Issue of whether a Proxy can insert location
information into an emergency SIP INVITE message, and some of the
open questions surrounding the implications of that action
- added a few names to the acknowledgements section
Intellectual Property Statement Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed Intellectual Property Rights or other rights that might be claimed
to pertain to the implementation or use of the technology described to pertain to the implementation or use of the technology described
in this document or the extent to which any license under such in this document or the extent to which any license under such
rights might or might not be available; nor does it represent that rights might or might not be available; nor does it represent that
it has made any independent effort to identify any such rights. it has made any independent effort to identify any such rights.
Information on the procedures with respect to rights in RFC Information on the procedures with respect to rights in RFC
documents can be found in BCP 78 and BCP 79. documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use attempt made to obtain a general license or permission for the use
of such proprietary rights by implementers or users of this of such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository specification can be obtained from the IETF on-line IPR repository
at http://www.ietf.org/ipr. at http://www.ietf.org/ipr.
 End of changes. 115 change blocks. 
825 lines changed or deleted 620 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/