Indirect Presence Publication with the
Session Initiation Protocol(SIP) EricssonCalle Via de los Poblados 13MadridES28033Spainmiguel.a.garcia@ericsson.comNokia Siemens NetworksOtto-Hahn-Ring 6MunichBavaria81739GermanyHannes.Tschofenig@gmx.nethttp://www.tschofenig.priv.atColumbia UniversityDepartment of Computer Science450 Computer Science BuildingNew YorkNY10027USA+1 212 939 7042schulzrinne@cs.columbia.eduhttp://www.cs.columbia.edu/~hgsAndrew CorporationPO Box U40University of WollongongNSW2500AU+61 242 212915martin.thomson@andrew.comhttp://www.andrew.com/
RAI
GEOPRIVSIPindirectPUBLISHA method for indirectly publishing presence information is described. This allows a
presentity user agent to publish a URI that can be used by the presence agent to retrieve
presence information. A presence agent is then better able to acquire dynamic presence
information without relying on the presentity user agent. This also allows a presentity user
agent to delegate responsibility for managing changing presence data to the source of that
information.
The Session Initiation Protocol (SIP) is extended by the
SIP-events framework to provide subscriptions and notifications
of SIP events. One example of such event notification mechanism is 'presence' and this
presence information is carried in Presence Information Data Format
(PIDF) documents.Two sources of presence information have been established. The presence agent might be
able to acquire presence data independently, or it might rely on the presentity user agent
providing that information. Use of the SIP PUBLISH method for the purpose of informing the
presence agent of state is described in RFC 3903.Many existing elements of presence information, such as the Presence
Data Model , Rich Presence Extensions to PIDF (RPID) , or
the Contact Information to the Presence Information Data Format
(CIPID), are acquired directly from the presentity user agent. However, there are
cases when the presentity user agent is not the direct source of the presence information.
One such example is location information. A presentity user agent might acquire location
information from a Location Information Server (LIS). Due to the dynamic nature of location
information, a LIS might provide location information by reference rather than value. One of
these cases occurs when a presentity user agent acquires its own location information from a
LIS using HELD. A reference in
the form of a location URI allows the holder of the reference to obtain location information
at any time directly from the LIS.
This document describes a means for a presentity user agent to publish presence information
indirectly using a URI. The presence agent is then able to obtain information directly from
the source of the data. This removes some of the burden of managing dynamic content from the
presentity user agent, as they do not need to monitor changes to presence data and publish
updates as changes occur.
Presence agents might provide a complex presence document that is assembled from multiple
sources. A means is provided where the presence agent is able to assemble a presence
document.
The mechanism in this document was originally designed with location information in mind,
but it can be equally applied to any other form of dynamic presence data.
[ED: move these pictures out of here. We need pictures that aren't location-specific so
that readers don't mistakenly think that this is just about location. That's already compounded by using "Location", so this needs to be very clear. Maybe this could be made an appendix.]
The PIDF location object (PIDF-LO) establishes location
information as a form of presence information. Therefore, a presence agent might provide
location information along with other information such as status or mood ().
A presence service commonly needs to rely on other entities to provide it with location
information. A presentity user agent might be able to provide location information, or it
might interact with a Location Information Server
(LIS) to acquire that information.
depicts the geolocation protocol relationship. A
location URI points to a resource on a LIS that is able to provide location of a specific
Target. The LIS is able to associate the Location URI to the location of the Target inside
its administrative domain. In this case, the Target in question is the presentity user
agent.
The following three steps are followed in :
The presentity user agent (or Target) acquires a location URI from the Location
Information Server (LIS) using a Location Configuration Protocol (LCP).
Before publishing location information to the presence agent, the target must first
de-reference the location URI to acquire a location value. Alternatively, location
information might be acquired from the LIS by value.
Finally, the presentity user agent assembles an updated presence document and publishes
this to the presence agent.
A location URI provides
additional flexibility that this process does not take advantage of. A location URI
provides a way for a location recipient to have control over when and how location
information is acquired. A location URI can be used by the presence agent to acquire
location information according to the needs of the watchers that require the information.
This document enables the scenario shown in ,
where the presentity user agent is able to acquire a location URI (step 1) and publish the
URI (step 2). The presence agent is then able to acquire location information directly from
the LIS (step 3).
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14, RFC 2119. This document uses SIP events terminology from , presence
terminology from , and Geopriv terminology from .
A presentity user agent first acquires a reference to presence information in the form of a
URI.
For location information, a location URI can be obtained using a
location configuration protocol, such as HELD . For HELD, this is done by
including a locationType element with the value set to locationURI.
The presentity user agent then publishes the URI (or URIs) to a presence agent, using the
Location header (see ).
This header is not specific to physical location information. Do
not confuse the Location: header with the Geolocation: header. The former inherits its meaning from the HTTP header of the same name, the name being a logical location or
address. The latter is specifically restricted to physical location
information.The presence agent de-references URIs to acquire the referenced information. A sip:, sips: or pres: URI is dereferenced by subscribing for the presence event package
at the given URI; a http: or https:
URI is dereferenced following the rules in . Other URIs MUST not be used unless a
method is defined for that URI that produces a presence document.
Indirect publish establishes multiple presence sources for a presence agent. In addition
to the presentity user agent, multiple indirect sources of presence data can be identified
using the Location header.
The presence agent acquires presence information from each source. This results in
multiple presence documents. These documents are combined to produce a single document.
The single presence document contains the union of the set of tuples (or the equivalents of device or person) from every presence document thus obtained. Tuple identifiers
are modified as necessary to prevent collisions in the identifier namespace; this might be
done be prefixing each tuple with the source identifier.
The presentity identifier in the final document is the presentity identifier in any
presence document provided by the presentity user agent itself. Presentity identifiers from
other sources are ignored.
The presence agent then monitors the state of the referenced presence document according
to the needs of watchers. The presence agent updates its own copy of the presence data from
each source. As presence state provided by each source changes, this is combined with data
from other sources and watchers are notified accordingly.
A partial presence document MAY be used if the presence
agent supports this format. In this case, partial differences (pidf-diff documents) provided from a given source are applied the
information retrieved previously from the same source.
The Location header includes a URI for information that might
otherwise be included in the body of a request. It is defined by the following ABNF, using the conventions and definitions in :
This document defines the Location header field as valid in
SIP PUBLISH requests only.
Each URI in the Location header MAY be tagged with a src parameter, identifying the source of the data that is found at the
URI. This identifier is an opaque tag that is used to identify different URIs as having the
same source. An included URI with no src parameter is
considered to have a different src parameter to any other
included URI. URIs with identical src parameters indicate that
they are alternative URIs (possibly with different schemes) for the same information.
A presence agent MUST only attempt to use a single URI from each set with a unique src parameter. Presence information from any given URI can only be
updated or replaced with presence information from a URI with the same src parameter.
Each PUBLISH message contains a complete set of URIs. The presence agent MUST NOT use a
URI if the most recent Location header received does not include
that URI. The Location header can be omitted in a request, which
does not alter the set of URIs used by the presence agent. Providing an empty Location header stops the presence agent from using any URIs.
A SIP option tag of indirectpub is created for use in the
Require header. This is used by a presentity user agent to
provide surety that any request to indirectly publish presence data has been understood by the
presence agent.
Attempts to publish indirectly MUST use this option tag in the Require header. If an attempt to publish information indirectly fails,
the presence agent includes the tag in the Unsupported header of a
420 (Bad Extension) response. Upon receiving this response, the presentity user agent SHOULD
attempt to de-reference the URI and re-attempt the request with the presence information
included directly unless it is unable or local policy dictates otherwise.
Indirect publish adds an additional de-reference step to the publish process. This adds
additional failure scenarios. The presence agent might be unable to de-reference a URI for a
number of reasons:
the indicated host might be unreachable
the URI might be badly formed or it might refer to a non-existent destination
the URI schemes - and the de-reference mechanisms they indicate - provided might not be
supported by the presence agentthe URI might produce information that is not presence data
the presence agent might not be authorized to retrieve the indicated data and the
de-reference request might be rejected by the server
Some of these errors might be detected during the processing of the request. Others might
be encountered later by the presence agent. A mechanism is provided to indicate to the
presentity user agent when the presence agent detects an error while processing the request.
[TBD: need to work out how to do this. Either way, it's almost essential to indicate to
the presentity user agent that something has failed. There are many reasons that a URI might not be
accessible, in many cases, it might be useful if the presentity user agent could fall back on providing
information by value if the URI can't be used. It might be that the presentity user agent is more able
to dereference the URI, or might be able to look for alternative sources for the information.]
[The lessons of the Geolocation header might be of some use here.]
[ED: Useful? Unnecessary complication? Initial inclination is toward the latter.]A presence agent MAY choose to treat a Geolocation header in a PUBLISH request
as though it were a Location header. The Require header of the request MUST include indirectpub in this case; if it does not, the presence agent cannot
assume that the information was intended to be published.
The contents of the Geolocation header MUST be ignored if a
Location header is present.
In the , the presentity user agent (PUA) acquires and publishes a
reference to presence data that is served by a presence source (PS). The presence agent (PA)
provides this information to a watcher along with information included by the presentity user
agent. Only request messages are shown for clarity.
A presentity user agent acquires a URI that refers to presence information. In this
example, it is also assumed that the watcher has also established a subscription.
From this point, changes in presence state at the source trigger notifications to the
presence agent. This in turn triggers notifications to any watchers.
TBD: register SIP header, indirectpub option tag and establish
parameter registry (pah).The security considerations described in SIP Location Conveyance are applicable to this document. Privacy protections are extremely important for presence information. Indirect publish
potentially provides watchers and presence agents greater access to a user's private data. A
presence source [ED: this section is a mess; it should be cleaned up and moved to an appendix.]
The following alternative solutions were considered in the design of this solution:
Rather than using a header, additional SIP bodies could be defined. This could be a
PIDF extension, or a specialized format. This has a number of advantages, particularly in
terms of good protocol hygiene. This potentially runs afoul of the shy support for
multipart MIME in SIP agents. As a PIDF extension, it's possible that multipart support
is not required, but it would potentially be difficult to ensure that it is the presence
agent that is performing the de-reference.
Integration with partial presence publish was considered.
Including a URI in a pidf-diff document would provide an
elegant way to integrate indirectly published data. However, RFC 5264 defines a format
that cannot be extended. The scheme chosen also provides less flexibility and is
consequently significantly simpler.
It's possible that a mechanism is not necessary at all. Presence sources could be
given the information necessary to PUBLISH the information. Mechanisms would need to be
provided for this purpose. Aside from the complexity of managing this relationship, it
does not benefit from the ability to use an event-based subscription. It is also more
difficult to ensure that the presence source publishes when the presence agent (and
watchers) need the information.
The SIP Location Conveyance
defines a Geolocation header field that could be used for indirect publish. Limiting this
solution to location information would be a constraint that would prevent this from use
for other types of information.