draft-ietf-sipping-config-framework-09.txt | draft-ietf-sipping-config-framework-10.txt | |||
---|---|---|---|---|
SIPPING D. Petrie | SIPPING D. Petrie | |||
Internet-Draft SIPez LLC. | Internet-Draft SIPez LLC. | |||
Expires: April 6, 2007 October 3, 2006 | Intended status: Standards Track S. Channabasappa, Ed. | |||
Expires: September 2, 2007 CableLabs | ||||
A Framework for Session Initiation Protocol User Agent Profile Delivery | A Framework for Session Initiation Protocol User Agent Profile Delivery | |||
draft-ietf-sipping-config-framework-09.txt | draft-ietf-sipping-config-framework-10 | |||
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 | |||
skipping to change at page 1, line 33 | skipping to change at page 1, line 34 | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on April 6, 2007. | This Internet-Draft will expire on September 2, 2007. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The Internet Society (2006). | Copyright (C) The IETF Trust (2007). | |||
Abstract | Abstract | |||
This document defines the application of a set of protocols for | This document defines a framework to enable configuration of Session | |||
providing profile data to SIP user agents. The objective is to | Initiation Protocol (SIP) User Agents in SIP deployments. The | |||
define a means for automatically providing profile data that a user | framework provides a means to deliver profile data that User Agents | |||
agent needs to be functional, without user or administrative | need to be functional, automatically and with minimal (preferably | |||
intervention. The framework for discovery, delivery, notification | none) User and Administrative intervention. The framework describes | |||
and updates of user agent profile data is defined here. As part of | how SIP User Agents can discover sources, request profiles and | |||
this framework a new SIP event package is defined here for the | receive notifications related to profile modifications. As part of | |||
notification of profile changes. This framework is also intended to | this framework, a new SIP event package is defined for notification | |||
ease ongoing administration and upgrading of large scale deployments | of profile changes. The framework provides for multiple data | |||
of SIP user agents. The contents and format of the profile data to | retrieval options, without requiring or defining retrieval protocols. | |||
be defined is outside the scope of this document. | The framework does not include specification of the profile data | |||
within its scope. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Requirements Terminology . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Profile Delivery Framework Terminology . . . . . . . . . . . . 5 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 6 | |||
5. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Profile Life Cycle . . . . . . . . . . . . . . . . . . . 9 | |||
5.1. Service Provider Use Case Scenario Bootstrapping with | 3.3. Data Model and Profile Types . . . . . . . . . . . . . . 10 | |||
Digest Authentication . . . . . . . . . . . . . . . . . . 7 | 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.2. Service Provider Use Case Scenario Bootstrapping with | 4.1. Client with different Data and SIP Service Providers . . 11 | |||
Device Certificate . . . . . . . . . . . . . . . . . . . 9 | 4.2. Clients supporting multiple users from different | |||
6. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | Service Providers . . . . . . . . . . . . . . . . . . . . 13 | |||
7. Profile Change Event Notification Package . . . . . . . . . . 11 | 5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 15 | |||
7.1. Event Package Name . . . . . . . . . . . . . . . . . . . 12 | 5.1. Profile Discovery . . . . . . . . . . . . . . . . . . . . 18 | |||
7.2. Event Package Parameters . . . . . . . . . . . . . . . . 12 | 5.1.1. SIP SUBSCRIBE for the Local-Network Profile Type . . . 19 | |||
7.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . 16 | 5.1.2. SIP SUBSCRIBE for the Device Profile Type . . . . . . 20 | |||
7.4. Subscription Duration . . . . . . . . . . . . . . . . . . 16 | 5.1.3. SIP SUBSCRIBE for the User Profile Type . . . . . . . 24 | |||
7.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 16 | 5.1.4. Caching of SIP Subscription URIs . . . . . . . . . . . 24 | |||
7.6. Notifier processing of SUBSCRIBE requests . . . . . . . . 17 | 5.2. Profile Enrollment . . . . . . . . . . . . . . . . . . . 25 | |||
7.7. Notifier generation of NOTIFY requests . . . . . . . . . 19 | 5.3. Profile Notification . . . . . . . . . . . . . . . . . . 26 | |||
7.8. Subscriber processing of NOTIFY requests . . . . . . . . 19 | 5.4. Profile Retrieval . . . . . . . . . . . . . . . . . . . . 26 | |||
7.9. Handling of forked requests . . . . . . . . . . . . . . . 20 | 5.5. Profile Change Upload . . . . . . . . . . . . . . . . . . 26 | |||
7.10. Rate of notifications . . . . . . . . . . . . . . . . . . 20 | 5.6. Additional Considerations . . . . . . . . . . . . . . . . 27 | |||
7.11. State Agents . . . . . . . . . . . . . . . . . . . . . . 20 | 5.6.1. Manual retrieval of the Device Profile . . . . . . . . 27 | |||
7.12. Examples . . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.6.2. Client Types . . . . . . . . . . . . . . . . . . . . . 28 | |||
7.13. Use of URIs to Retrieve State . . . . . . . . . . . . . . 21 | 5.6.3. Profile Data . . . . . . . . . . . . . . . . . . . . . 28 | |||
7.13.1. Device URIs . . . . . . . . . . . . . . . . . . . . . 22 | 5.6.4. Profile Data Frameworks . . . . . . . . . . . . . . . 28 | |||
7.13.2. User URIs . . . . . . . . . . . . . . . . . . . . . . 24 | 5.6.5. Additional Profile Types . . . . . . . . . . . . . . . 29 | |||
7.13.3. Local Network URIs . . . . . . . . . . . . . . . . . 24 | 6. Event Package Definition . . . . . . . . . . . . . . . . . . . 29 | |||
8. Profile Delivery Framework Details . . . . . . . . . . . . . . 25 | 6.1. Event Package Name . . . . . . . . . . . . . . . . . . . 29 | |||
8.1. Discovery of Subscription URI . . . . . . . . . . . . . . 25 | 6.2. Event Package Parameters . . . . . . . . . . . . . . . . 29 | |||
8.1.1. Discovery of Local Network URI . . . . . . . . . . . 25 | 6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . 33 | |||
8.1.2. Discovery of Device URI . . . . . . . . . . . . . . . 26 | 6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 33 | |||
8.1.3. Discovery of User URI . . . . . . . . . . . . . . . . 29 | 6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 34 | |||
8.2. Enrollment with Profile Server . . . . . . . . . . . . . 29 | 6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 34 | |||
8.3. Notification of Profile Changes . . . . . . . . . . . . . 29 | 6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . 35 | |||
8.4. Retrieval of Profile Data . . . . . . . . . . . . . . . . 30 | 6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . 35 | |||
8.5. Upload of Profile Changes . . . . . . . . . . . . . . . . 30 | 6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 36 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 | 6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 36 | |||
9.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 30 | 6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . 36 | |||
9.2. New HTTP Event Header . . . . . . . . . . . . . . . . . . 31 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 31 | 7.1. Example 1: Client requesting profile . . . . . . . . . . 36 | |||
10.1. Confidential Profile Content in NOTIFY Request . . . . . 32 | 7.2. Example 2: Client obtaining change notification . . . . . 40 | |||
10.2. Confidential Profile Content via Content Indirection . . 33 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44 | |||
10.3. Integrity protection for non-confidential profiles . . . 34 | 8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 44 | |||
10.4. Initial Enrollment Using a Manufacturer's Certificate . . 34 | 8.2. New HTTP Event Header . . . . . . . . . . . . . . . . . . 44 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 36 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 45 | |||
12. Change History . . . . . . . . . . . . . . . . . . . . . . . . 36 | 9.1. Event Package . . . . . . . . . . . . . . . . . . . . . . 45 | |||
9.2. Profile Life Cycle . . . . . . . . . . . . . . . . . . . 46 | ||||
9.3. Profile Data . . . . . . . . . . . . . . . . . . . . . . 46 | ||||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 47 | ||||
11. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | ||||
12. Change History . . . . . . . . . . . . . . . . . . . . . . . . 48 | ||||
12.1. Changes from | 12.1. Changes from | |||
draft-ietf-sipping-config-framework-08.txt . . . . . . . 36 | draft-ietf-sipping-config-framework-09.txt . . . . . . . 48 | |||
12.2. Changes from | 12.2. Changes from | |||
draft-ietf-sipping-config-framework-07.txt . . . . . . . 36 | draft-ietf-sipping-config-framework-08.txt . . . . . . . 49 | |||
12.3. Changes from | 12.3. Changes from | |||
draft-ietf-sipping-config-framework-06.txt . . . . . . . 37 | draft-ietf-sipping-config-framework-07.txt . . . . . . . 49 | |||
12.4. Changes from | 12.4. Changes from | |||
draft-ietf-sipping-config-framework-05.txt . . . . . . . 37 | draft-ietf-sipping-config-framework-06.txt . . . . . . . 49 | |||
12.5. Changes from | 12.5. Changes from | |||
draft-ietf-sipping-config-framework-04.txt . . . . . . . 38 | draft-ietf-sipping-config-framework-05.txt . . . . . . . 50 | |||
12.6. Changes from | 12.6. Changes from | |||
draft-ietf-sipping-config-framework-03.txt . . . . . . . 38 | draft-ietf-sipping-config-framework-04.txt . . . . . . . 50 | |||
12.7. Changes from | 12.7. Changes from | |||
draft-ietf-sipping-config-framework-02.txt . . . . . . . 38 | draft-ietf-sipping-config-framework-03.txt . . . . . . . 51 | |||
12.8. Changes from | 12.8. Changes from | |||
draft-ietf-sipping-config-framework-01.txt . . . . . . . 39 | draft-ietf-sipping-config-framework-02.txt . . . . . . . 51 | |||
12.9. Changes from | 12.9. Changes from | |||
draft-ietf-sipping-config-framework-00.txt . . . . . . . 39 | draft-ietf-sipping-config-framework-01.txt . . . . . . . 51 | |||
12.10. Changes from | 12.10. Changes from | |||
draft-petrie-sipping-config-framework-00.txt . . . . . . 39 | draft-ietf-sipping-config-framework-00.txt . . . . . . . 51 | |||
12.11. Changes from draft-petrie-sip-config-framework-01.txt . . 40 | 12.11. Changes from | |||
12.12. Changes from draft-petrie-sip-config-framework-00.txt . . 40 | draft-petrie-sipping-config-framework-00.txt . . . . . . 52 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | 12.12. Changes from draft-petrie-sip-config-framework-01.txt . . 52 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 40 | 12.13. Changes from draft-petrie-sip-config-framework-00.txt . . 52 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 41 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 44 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 53 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 45 | 13.2. Informative References . . . . . . . . . . . . . . . . . 54 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 54 | ||||
Intellectual Property and Copyright Statements . . . . . . . . . . 56 | ||||
1. Introduction | 1. Introduction | |||
Today all SIP (Session Initiation Protocol) [RFC3261] user agent | SIP User Agents require configuration data to function properly. | |||
implementers use proprietary means of delivering user, device and | Examples include network, Client and user specific information. | |||
local network policy profiles to the user agent. The profile | Ideally, this configuration process should be automatic and require | |||
delivery framework defined in this document is intended to enable a | minimal or no user intervention. | |||
first phase migration to a standard means of providing profiles to | ||||
SIP user agents. It is expected that UA (User Agent) implementers | ||||
will be able to use this framework as a means of delivering their | ||||
existing proprietary data profiles (i.e. using their existing | ||||
proprietary binary or text formats). This in itself is a tremendous | ||||
advantage in that a SIP environment can use a single profile delivery | ||||
server for profile data to user agents from multiple implementers. | ||||
Follow-on standardization activities can: | ||||
1. define a standard profile content format framework (e.g. XML | ||||
with namespaces [W3C.REC-xml-names11-20040204] or name-value | ||||
pairs [RFC0822]). | ||||
2. specify the content (i.e. name the profile data parameters, xml | ||||
schema, name spaces) of the data profiles. | ||||
One of the objectives of the framework described in this document is | Many deployments of SIP User Agents require dynamic configuration and | |||
to provide a start up experience similar to that of users of an | cannot rely on pre-configuration. This framework provides a standard | |||
analog telephone. When you plug in an analog telephone it just works | means of providing dynamic configuration which simplifies deployments | |||
(assuming the line is live and the switch has been provisioned). | containing SIP User Agents from multiple vendors. | |||
There is no end user configuration required to make analog phone | ||||
work, at least in a basic sense. So the objective here is to be able | ||||
to take a new SIP user agent out of the box, plug it in or install | ||||
the software and have it get its profiles without human intervention | ||||
other than security measures. This is necessary for cost effective | ||||
deployment of large numbers of user agents. | ||||
Another objective is to provide a scalable means for ongoing | This framework also addresses modifications to profiles and the | |||
administration of profiles. Administrators and users are likely to | corresponding change notifications to the SIP User Agents using a new | |||
want to make changes to profiles. | event package. However, the framework does not define the content or | |||
format of the actual profile data, leaving that to future | ||||
standardization activities. | ||||
Additional requirements for the framework defined in this document | 2. Terminology | |||
are described in: [I-D.ietf-sipping-ua-prof-framewk-reqs], | ||||
[I-D.sinnreich-sipdev-req] | ||||
2. Requirements Terminology | 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 RFC 2119 [RFC2119]. | ||||
Keywords "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT" and | In addition, this document introduces and utilizes the following | |||
"MAY" that appear in this document are to be interpreted as described | terms: | |||
in [RFC2119]. | ||||
3. Profile Delivery Framework Terminology | Client: software or hardware entity containing one or more SIP user | |||
agents. | ||||
profile - data set specific to a user, device, or the local network. | Device: the terms 'Client' and 'Device' are used interchangeably | |||
device - software or hardware appliance containing one or more SIP | within this framework. | |||
user agents. | ||||
profile content server - The server that provides the content of the | Service Provider: a logical entity providing one or more services. | |||
profiles using the protocol specified by the URI scheme. | This can refer to private enterprises or public entities. | |||
notifier - As defined in [RFC3265] the SIP user agent server which | ||||
Profile: configuration data set specific to an entity (for example, | ||||
user, device, local network or other). | ||||
Profile Type: a particular category of Profile data (for example, | ||||
User, Device, Local Network or other). | ||||
Profile Delivery Server (PDS): the source of a Profile, it is the | ||||
logical collection of the Profile Notification Component (PNC) and | ||||
the Profile Content Component(PCC). | ||||
Profile Notification Component (PNC): the logical component of a | ||||
Profile Delivery Server that is responsible for enrolling Clients | ||||
and providing profile notifications. | ||||
Profile Content Component (PCC): the logical component of a Profile | ||||
Delivery Server that is responsible for storing, providing and | ||||
accepting profile content. | ||||
Profile Discovery: discovery of a Profile Delivery Server (PDS) by | ||||
the Client. | ||||
Profile Enrollment: process of enrolling with one or more Profile | ||||
Delivery Server(s) by a Client. | ||||
Profile Notification: notification of a requested or changed profile | ||||
by the PDS. | ||||
Profile Retrieval: retrieval of Profile data from a PDS by a Client. | ||||
Profile Change Upload: upload of profile data changes to one or more | ||||
PDSs by authorized entities such as a Client | ||||
Notifier: as defined in [RFC3265] the SIP user agent server which | ||||
processes SUBSCRIBE requests for events and sends NOTIFY requests | processes SUBSCRIBE requests for events and sends NOTIFY requests | |||
with profile data or URIs (Uniform Resource Identifiers) that | with profile data or URIs (Uniform Resource Identifiers) that | |||
point to the data. | point to the data. | |||
profile delivery server - The logical collection of the notifier and | ||||
the server which provides the contents of the notification either | ||||
directly in the NOTIFY requests or indirectly via profile URI(s). | ||||
hotelling- when a user moves to a new user agent (i.e. that is not | ||||
already provisioned to know the user's identity, credentials or | ||||
profile data) and gives the user agent sufficient information to | ||||
retrieve the user's profile(s). The user agent either permanently | ||||
or temporarily makes the user's profiles effective on that user | ||||
agent. | ||||
nomadic- when the user agent moves to a different local network | ||||
instance id- text identifier globally unique across all user agent | ||||
(soft and hard devices) | ||||
4. Overview | Instance ID: text identifier globally unique across all Clients. | |||
The profile life cycle can be described by five functional steps. | 3. Overview | |||
These steps are not necessarily discrete. However it is useful to | ||||
describe these steps as logically distinct. These steps are named as | ||||
follows: | ||||
Discovery - discover a profile delivery server | This section provides an overview of the configuration framework. It | |||
Enrollment - enroll with the profile delivery server | introduces the reference model and explains key concepts such as the | |||
Profile Retrieval - retrieve profile data | Profile Life Cycle and the Profile types. The framework is presented | |||
Profile Change Notification - receive notification of profile changes | in Section 5. | |||
Profile Change Upload - upload profile data changes back to the | ||||
profile delivery server | ||||
Discovery is the process by which a UA finds the address and port at | 3.1. Reference Model | |||
which it enrolls with the profile delivery server. As there is no | ||||
single discovery mechanism which will work in all network | ||||
environments, a number of discovery mechanisms are defined with a | ||||
prescribed order in which the UA tries them until one succeeds. The | ||||
means of discovery is described in Section 8.1. | ||||
Enrollment is the process by which a UA makes itself known to the | The design of the framework was the result of a careful analysis to | |||
profile delivery server. In enrolling, the UA provides identity | identify the configuration needs of a wide range of SIP deployments. | |||
information, requested profile type(s) and supported protocols for | As such, the reference model provides for a great deal of | |||
profile retrieval. It also subscribes to a mechanism for | flexibility, while breaking down the interactions to their basic | |||
notification of profile changes. As a result of enrollment, the UA | forms which can be reused in many different scenarios. | |||
receives the data or the URI for each of the profiles that the | ||||
profile delivery server is able to provide. Each profile type (set) | ||||
requires a separate enrollment or SUBSCRIBE session. A profile type | ||||
may represent one or more data sets. Enrollment which is performed | ||||
by the device by constructing and sending a SUBSCRIBE request to | ||||
profile delivery server for the event package described in Section 7. | ||||
Profile Retrieval is the process of retrieving the content for each | In its simplest form, the reference model for the framework defines | |||
of the profiles requested by the UA. The profiles are retrieved | the interactions between the Profile Delivery Server(PDS) and the | |||
either directly or indirectly from the NOTIFY request body as | Client. The Client is a SIP UA which needs the profile data to | |||
described in Section 7.5 and Section 8.4. | effectively function in the network. The PDS is responsible for | |||
responding to Client requests and providing the profile data. The | ||||
set of interactions between these entities is referred to as the | ||||
Profile Life Cycle. This reference model is illustrated in the | ||||
diagram below. | ||||
Profile Change Notification is the process by which the profile | +-------------------------+ | |||
delivery server notifies the UA that the content of one or more of | +---------+ Interactions | Profile Delivery Server | | |||
the profiles has changed. If the content is provided indirectly, the | | Client |<==========================>| +---+ +---+ | | |||
UA MAY retrieve the profile from the specified URI upon receipt of | | (SIP UA)| (Profile Life Cycle) | |PNC| |PCC| | | |||
the change notification. Profile change notification is provided by | +---------+ | +---+ +---+ | | |||
the NOTIFY request for the event package as described in Section 7.8 | +-------------------------+ | |||
and Section 8.3. | ||||
Profile Change Upload is the process by which a UA or other entity | PNC = Profile Notification Component | |||
(e.g. corporate directory or configuration management server) pushes | PCC = Profile Content Component | |||
a change to the profile data back up to the profile delivery server. | ||||
This process is described in Section 8.5. | ||||
This framework defines a new SIP event package [RFC3265] to solve | Framework Reference Model | |||
enrollment and profile change notification steps. The event package | The PDS is subdivided into two logical components: | |||
in Section 7 defines everything but the mandatory content type. This | o Profile Notification Component (PNC), responsible for enrolling | |||
makes this event package abstract until the content type is bound. | Clients in Profile event subscriptions and providing Profile | |||
The profile content type definition is outside of scope for this | change notifications; | |||
document. It is the author's belief that it would be a huge | o Profile Content Component (PCC), responsible for storing, | |||
accomplishment if all SIP user agents used this framework for | providing access to, and accepting updates related to profile | |||
delivering their existing proprietary profiles. Even though this | content. | |||
does not accomplish interoperability of profiles, it is a big first | ||||
step in easing the administration of SIP user agents. The definition | ||||
of standard profiles and data sets (see [I-D.petrie-sipping-profile- | ||||
datasets] ) will enable interoperability as a subsequent step. | ||||
The question arises as to why SIP should be used for the profile | SIP deployments vary considerably. To be effective, the | |||
delivery framework. In this document SIP is used for only a small | configuration framework needs to consider a comprehensive set of | |||
portion of the framework. Other existing protocols are more | scenarios that is representative of most deployments. The figure | |||
appropriate for transport of the profile contents (to and from the | below provides a system level view of the device, user and Service | |||
user agent) and are suggested in this document. The discovery step | Provider relationships that may be involved. | |||
is simply a specified order and application of existing protocols | ||||
(see Section 8.1). SIP is only needed for the enrollment (see | ||||
Section 8.2) and change notification functionality (see Section 8.3) | ||||
of the profile delivery framework. In many SIP environments (e.g. | ||||
carrier/subscriber and multi-site enterprise) firewall, NAT (Network | ||||
Address Translation) and IP addressing issues make it difficult to | ||||
get messages between the profile delivery server and the user agent | ||||
requiring the profiles. | ||||
With SIP the users and devices already are assigned globally routable | -------- | |||
addresses. In addition the firewall and NAT problems are already | / \ | |||
presumably solved in the environments in which SIP user agents are to | | Service | | |||
be used. The local network profile (see Section 6, Section 7.13.3 | | Provider | - > Provides 'Client'(e.g. allowed Users) | |||
and Section 8.1.1) provides the means to get firewall and NAT | \ Y / & 'User'(such as Services) profile | |||
traversal mechanism information to the device. Therefore SIP is the | -------- | |||
best solution for allowing the user agent to enroll with the profile | | ----- | |||
delivery server, which may require traversal of multiple firewalls | | / Local \ | |||
and NATs. For the same reason the notification of profile changes is | | | Network | | |||
best solved by SIP. It should be noted that this document is scoped | | | Provider| - > Provides 'Local Network' profile | |||
to providing profiles for devices which contain one or more SIP user | | \ Z / data (e.g. STUN Server Address) | |||
agents. This framework may be applied to non-SIP devices, however | | ----- | |||
more general requirements for non-SIP devices are beyond the scope of | | / | |||
this document. | | / | |||
=============== | ||||
( Local Network ) | ||||
=============== | ||||
| | ||||
| | ||||
| | ||||
--------- | ||||
| Client X| - > Needs the 'Client' profile (from Y) | ||||
--------- & 'local network' profile (from Z) | ||||
/ \ | ||||
/ \ | ||||
------ ------ | ||||
|User A| |User B| - > Users need 'User' profile (from Y) | ||||
------ ------ | ||||
Framework System Level Model | ||||
The content delivery server may be either in the public network or | Based on the system level model, the following considerations are | |||
accessible through a private network. The user agents requiring | relevant. | |||
profiles may be behind firewalls and NATs and many protocols, such as | ||||
HTTP, may be used for profile content retrieval without special | ||||
consideration in the firewalls and NATs (e.g. an HTTP client on the | ||||
UA can typically pull content from a server outside the NAT/ | ||||
firewall.). | ||||
5. Use Cases | Client connectivity: | |||
o Clients can connect either directly to a Service Provider or via | ||||
other local networks (for example, home network, Public Wi-Fi | ||||
Hotspots, enterprise managed LAN, etc.); | ||||
o Local networks through which Clients connect may wish to provide | ||||
their own configuration information particular to that specific | ||||
network (for example, STUN server information, local Proxy, etc.) | ||||
which is independent of the Service Provider (who provides | ||||
services) or the particular User. | ||||
The following use cases are intended to help give an understanding of | Service provider relationships: | |||
how the profile delivery framework can be used. These use cases are | o The local network provider (the network the Client connects to) | |||
not intended to be exhaustive in demonstrating all of the | and the Service Provider (that hosts the actual voice or other | |||
capabilities or ways the framework can be applied. | services) can often be different entities, with no administrative | |||
or business relationship to each other; | ||||
o There may be multiple different Service Providers involved, one | ||||
for each service type a User subscribes to (telephony service, | ||||
instant messaging, etc); this Framework does not specify explicit | ||||
behavior in such a scenario, but it does not prohibit its usage | ||||
either | ||||
o Each User accessing services via a Client may subscribe to | ||||
different sets of services, from different Service Providers; | ||||
5.1. Service Provider Use Case Scenario Bootstrapping with Digest | User-Client relationship: | |||
Authentication | o The relationship between Clients and Users can be many-to-many | |||
(for example, a particular UA instance may allow for many Users to | ||||
obtain subscription services through it, and individual Users may | ||||
have access to multiple different UA devices); | ||||
o Each User may have different preferences for use of services, and | ||||
presentation of those services in the Client user interface; | ||||
o Each User may have different personal information applicable to | ||||
use of the Client device, either as related to particular | ||||
services, or independent of them. | ||||
The following describes a use case scenario for bootstrapping a new | The observations above show a need for a clear distinction between | |||
user agent, which has had no prior provisioned information, to the | different Profile Types, based on the source and purpose of the | |||
point of being functional with a SIP Service Provider's system. In | configuration data contained, and a need for these profiles to be | |||
this example scenario, the user has purchased a new SIP user agent. | manageable by different PDSs. Accordingly, the framework identifies | |||
The user signs up for the service to obtain three pieces of | the following minimal Profile Types. | |||
information: a hostname, a user ID and a password. These three | ||||
pieces of information may be one-time use, that become invalid after | ||||
the one use. This scenario assumes that no association or mapping | ||||
between the device and the user's account is created before the | ||||
following steps: | ||||
|Service Provider | | Local-Network Profile: refers to profile data as provided by the | |||
|Profile Delivery Server| | Local Network to which a Client is directly connected; | |||
| ___ _____ | | ||||
| |SIP| |HTTPS| | | Device Profile: refers to profile data provided by the Service | |||
|_|___|_________|_____|_| | Provider or other entity which is specific to the particular | |||
A A | Client; | |||
User Profile: refers to profile data provided by the Service | ||||
Provider or other entity which is specific to the particular User. | ||||
The definition of additional Profile Types and their usage is | ||||
allowed, but is outside the scope of this document. | ||||
The remainder of this section provides more information on the two | ||||
vital components of the framework: Profile Life Cycle and Profile | ||||
Types. | ||||
3.2. Profile Life Cycle | ||||
Automated Profile delivery to Clients requires proactive behavior on | ||||
the part of a Client. It also requires one or more PDSs which | ||||
provide the profile data. Profile Delivery is usually initiated when | ||||
the Client discovers PDSs and requests profile data. The profile | ||||
data can be modified by the Client (for example, by a User) and | ||||
subsequently uploaded to the PDS. Alternatively, the profile data | ||||
can be modified by an authorized entity such as an administrative or | ||||
user interface and the Client is notified through an event | ||||
notification. | ||||
The specific functional steps involved in these interactions, | ||||
collectively termed Profile Life Cycle, are as follows: | ||||
Profile Discovery: The process by which a Client finds PDS(s) | ||||
capable of providing the Profiles it requires. This Framework | ||||
defines multiple Profile Types which may be served by one or more | ||||
PDSs. | ||||
Profile Enrollment: The process by which a Client makes itself known | ||||
to a PDS. While enrolling, the Client provides identity | ||||
information and requested Profile Type(s) for profile retrieval. | ||||
It also subscribes for notification of profile changes. As a | ||||
result of enrollment, the Client receives profile information | ||||
(contents or content indirection information). Each Profile Type | ||||
requires a separate enrollment or SUBSCRIBE session. | ||||
Profile Notification: The process by which the PDS notifies the | ||||
Client that either requested Profile contents are available, or | ||||
the content of one or more of the Profiles has changed. If the | ||||
content is provided indirectly, the Client may retrieve the | ||||
profile from the specified URI upon receipt of the change | ||||
notification. | ||||
Profile Retrieval: The process of retrieving the content for each of | ||||
the Profiles requested by the Client. | ||||
Profile Change Upload: The process by which a Client or other entity | ||||
(for example, configuration management server) pushes a change to | ||||
Profile data to the PDS. | ||||
3.3. Data Model and Profile Types | ||||
As outlined previously, this framework defines three specific Profile | ||||
Types. Additional extended profiles may also be defined. The | ||||
Profile Types specified in this framework are: | ||||
Local Network Profile: Contains configuration data related to the | ||||
Local Network to which a Client is directly connected, as required | ||||
for the Client to operate effectively in that network. It is | ||||
expected to be provided by a PDS in the Local Network (or proxied | ||||
in some way). | ||||
Device Profile: Contains configuration data related to a specific | ||||
Client, required for operation in the Service Provider's | ||||
environment. It is expected to be provided by the Service | ||||
Provider responsible for configuring the Client. | ||||
User Profile: Contains configuration data related to the specific | ||||
User, as required to reflect that User's preferences and the | ||||
particular services subscribed to. It is expected to be provided | ||||
by Service Provider(s) responsible for maintaining the User's | ||||
configuration data. | ||||
To function effectively, the Client should obtain all of the | ||||
necessary Profiles. Since each profile may potentially be served by | ||||
a different source and the Client has no way of ascertaining that in | ||||
advance, the framework requires the Client to discover the PDS | ||||
sources independently and request the corresponding Profiles from | ||||
each individually. | ||||
4. Use Cases | ||||
This section provides a small - non-comprehensive - set of | ||||
representative use cases to further illustrate how this Framework can | ||||
be utilized in SIP deployments. | ||||
For Security Considerations please refer to Section 9. | ||||
4.1. Client with different Data and SIP Service Providers | ||||
Description: Consider a user who obtains data (broadband) and SIP | ||||
Services from two different Service Providers. For example, a user | ||||
obtaining SIP services from a SIP Service Provider, via data | ||||
connectivity provided through a WiFi hotspot or hotel network. | ||||
The following assumptions apply: | ||||
o For the sake of simplicity, the Client is assumed to be pre- | ||||
configured with a) the domain name of the SIP Service Provider, | ||||
b) the ability to generate a Client identifier (such as, based | ||||
on MAC address) that can be used to request the device profile, | ||||
and b) a user identity which can be used to request the user | ||||
profile | ||||
o The Client is pre-configured to request local-network, Client | ||||
and user profiles - in that order - to obtain information | ||||
related to the local-network, itself and the pre-configured user | ||||
o The profile data provided upon request are based on data models | ||||
that are comprehenisble by the Client, i.e. the Client | ||||
understands the data models used for the creation of the profile | ||||
data | ||||
The following diagram illustrates this use case and highlights the | ||||
communications relevant to the framework specified in this document. | ||||
+-----------------+ +----------------------+ | ||||
+--------+ | Data Service | | SIP Service Provider | | ||||
| Client | | Provider | | | | ||||
|(SIP UA)| | | | SIP PDS PDS | | ||||
+--------+ | DHCP PDS | | PROXY (Client) (User)| | ||||
+-----------------+ +----------------------+ | ||||
| | | | | | | ||||
(A) |<==== DHCP ===>| | | | | | ||||
| | | | | | ||||
| | | | | | ||||
| SUBSCRIBE/NOTIFY | | | | | ||||
(B) |<=== local-network ===>| | | | | ||||
| profile | ||||
| | ||||
| <<Profile Retrieval>> | ||||
| | ||||
| SUBSCRIBE/NOTIFY | | | | ||||
(C) |<========= device profile ========>|<=====>| | | ||||
| | | | | ||||
| <<Profile Retrieval>> | ||||
| | ||||
| | ||||
| SUBSCRIBE/NOTIFY | | | ||||
(D) |<========== user profile ========>|<============>| | ||||
| | | | ||||
| <<Profile Retrieval>> | ||||
| | ||||
The following is an explanation of the interactions in the diagram. | ||||
(A) Upon initialization, the Client obtains IP parameters (IP | ||||
address, DNS) using DHCP (as an example) | ||||
(B) The Client proceeds to request the 'local-network' Profile Type. | ||||
The PDS in the local network responds, allowing the Client to | ||||
retrieve the local-network profile | ||||
(C) The Client then proceeds to request the 'device' Profile Type | ||||
using the pre-configured SIP Service Provider's domain name. | ||||
This request is received by a SIP Proxy in the SIP Service | ||||
Provider's network. The request is then proxied to a relevant | ||||
PDS within its network. The PDS responds to the request and | ||||
provides profile retrieval information. The Client retrieves | ||||
the Device Profile (this can contain information such as | ||||
enabling or disabling usage, based on the subscription status) | ||||
(D) The Client then proceeds to request the 'User' Profile Type for | ||||
the pre-configured User. This message is proxied to the same or | ||||
different PDS (diagram assumes the latter) which responds with | ||||
the profile retrieval information. The Client retrieves the | ||||
User profile (this can contain information such as service | ||||
profiles to be retrieved, based on the subscription). The | ||||
Client then starts providing services. | ||||
4.2. Clients supporting multiple users from different Service Providers | ||||
Description: Consider a single Client (for example, Kiosk at an | ||||
airport) that allows for multiple users to obtain services from a | ||||
list of pre-configured SIP Service Providers. | ||||
The following assumptions apply: | ||||
o The Client is provided and managed by SIP Service Provider A. It | ||||
is not pre-configured with any User Identities, but offers an | ||||
interactive User Interface to enter Service Provider and User | ||||
information | ||||
o SIP Service Provider A provides the local network connectivity, | ||||
'local-network' and 'device' profiles for the Client. The | ||||
Service Provider also provides 'user' profiles for existing | ||||
subscribers | ||||
o SIP Service Provider B provides SIP services and has pre- | ||||
existing agreements with SIP Service Provider A. This Service | ||||
Provider also provides 'user' profiles for existing subscribers | ||||
The following diagram illustrates the use case and highlights the | ||||
communications relevant to the framework specified in this document. | ||||
User User | ||||
A B +----------------------+ +----------------------+ | ||||
+--------+ | SIP Service Provider | | SIP Service Provider | | ||||
| Client | | A | | B | | ||||
|(SIP UA)| | | | | | ||||
+--------+ | DHCP PROXY PDS | | PROXY PDS | | ||||
+----------------------+ +----------------------+ | ||||
| | | | | | | ||||
(A) |<====DHCP====>| | | | | | ||||
| | | | | | ||||
| | | | | | ||||
| SUBSCRIBE/NOTIFY | | | | | ||||
(B) |<local-network profile>|<====>| | | | ||||
| | ||||
| <<Profile Retrieval>> | ||||
| | ||||
| | ||||
| SUBSCRIBE/NOTIFY | | | | | ||||
(C) |<== device profile ==> |<====>| | | | ||||
| | ||||
| <<Profile Retrieval>> | ||||
| | ||||
. | ||||
. | ||||
. | ||||
[[User A attempts services]] | ||||
| SUBSCRIBE/NOTIFY | | | | | ||||
(D) |<= user profile (A) => |<====>| | | | ||||
| | | | | | ||||
| | ||||
| <<Profile Retrieval>> | ||||
. | ||||
. | ||||
. | ||||
. | ||||
[[User B attempts services]] | ||||
| | ||||
| SUBSCRIBE/NOTIFY | | | ||||
(E) |<=========== user profile (B) ==========>|<=========>| | ||||
| | | | ||||
| <<Profile Retrieval>> | ||||
| | ||||
The following is an explanation of the interactions in the diagram. | ||||
(A) Upon initialization, the Client obtains IP parameters (IP | ||||
address, DNS) using DHCP | ||||
(B) Once local IP connectivity is established and the SIP stack | ||||
initialized, the Client proceeds to request the 'local-network' | ||||
Profile Type. It receives a response from the PDS in Service | ||||
Provider A's network (the local network). The Client retrieves | ||||
the profile (this may contain useful information such as | ||||
firewall port restrictions, available bandwidth etc) | ||||
(C) The Client then proceeds to request the 'device' Profile Type. | ||||
It receives a response containing the profile retrieval from the | ||||
PDS in Service Provider A's network. The Client retrieves the | ||||
data provided in the Client Profile (this may provide data | ||||
regarding Users such as the list of SIP Service Providers the | ||||
Client can communicate with). The Client initializes the User | ||||
interface for services. | ||||
(D) User A with a pre-existing subscription with Service Provider A | ||||
attempts communication via the User Interface. This results in | ||||
a prompt - and responses - for identification and | ||||
authentication. The Client uses the provided information and | ||||
communicates with Service Provider A. Once authenticated and | ||||
authorized, it proceeds to request the 'User' Profile Type. The | ||||
PDS responds with the profile retrieval information. The Client | ||||
provides services to User A. | ||||
(E) At a different point in time, User B with a pre-existing | ||||
subscription with Service Provider B attempts communication via | ||||
the User Interface. This results in a prompt - and responses - | ||||
for identification and authentication. Since Service Provider B | ||||
is in the list of approved Service Provider, the Client uses the | ||||
provided information and communicates with Service Provider B. | ||||
Once authenticated and authorized, it proceeds to request the | ||||
'User' Profile Type. The PDS responds with the profile | ||||
retrieval information. The Client provides services to User B. | ||||
It is to be noted that this Client may allow for exclusive or | ||||
simultaneous access to both Users. | ||||
5. Profile Delivery Framework | ||||
This section details the framework requirements. The Profile Life | ||||
Cycle (introduced in Section 3), is examined in further detail, with | ||||
requirements that apply to the Client and the PDS. Unless explicitly | ||||
enhanced or indicated by an implementing specification, the Client | ||||
and the PDS MUST follow the Profile Life Cycle requirements stated in | ||||
this section for all supported Profile Types. | ||||
A high-level representation of the framework is shown in the | ||||
following state diagram. Each of the specified Profile Types is | ||||
retrieved individually, in the specified order (see below), until all | ||||
needed Profiles have been received. For each retrieved Profile, the | ||||
Client then awaits any Change Notifications | ||||
--------------- | ||||
/ Client \ | ||||
\ Initialization/ | ||||
--------------- | ||||
| | ||||
| Completes IP initialization; | ||||
| Initializes SIP stack | ||||
| | ||||
V | ||||
-------------- YES --------------- | ||||
________\ / All profiles?\_____\ | Await Change | | ||||
| / \ retrieved? / / | Notifications | | ||||
| -------------- --------------- | ||||
| | | | | | |||
\___ |-5A) HTTP GET of device profile | | | NO; attempt | |||
\ |-6) HTTPS response w/device profile | | | Profile Request | |||
\ | ______________ | | | in specified order | |||
\ | | Residential | | | | | |||
4) NOTIFY on-\ \ | Router ____ | | | V | |||
existing TLS \ \ | |DHCP| | | | ------------ | |||
connetion \ \ |_______|____|_| | ___________/ Profile \ | |||
\ \ A A | \ Life Cycle / | |||
\ \ 1B) SUBSCRIBE-| | | ------------ | |||
\ \ local network| | | ||||
\ \ profile| | | ||||
\ \ | | | ||||
\ \ | |-1A) DHCP | ||||
\ \ | |request | ||||
\ \ | | | ||||
\ \ C=======D | ||||
3) SIP/TLS SUBSCRIBE to device profile-\ \ /^\ | ||||
7) reSUBSCRIBE to device profile as-\ / \ | ||||
configured in device profile / Device \ | ||||
----------- | ||||
2) User enters service provider hostname | ||||
5B) User enters HTTP profile userID and password | ||||
1. The user plugs the device in to provide power and network | Framework state diagram | |||
connectivity the first time (or installs the software in the case | ||||
of a software user agent). The device subscribes to the local | ||||
network to get the local network profile. However as the device | ||||
is plugged into a residential LAN or router, there is no profile | ||||
delivery server for the local network profile (see Section 8.1.1 | ||||
and Section 7.13.3). | ||||
2. The device prompts the user for the hostname to subscribe to for | ||||
the device profile. The hostname was provided by the service | ||||
provider and is used as the host part of the SUBSCRIBE profile | ||||
URI described in Section 7.13.1. Note: in a scenario where the | ||||
system operator (e.g. enterprise) has control of the network, the | ||||
hostname for the SUBSCRIBE can be discovered (see Section 8.1.2) | ||||
to avoid the need for the user to enter the hostname. | ||||
3. The device creates a TLS [RFC2246] connection for the SIP | The Profile Life Cycle, within each Profile Type, is illustrated | |||
SUBSCRIBE request to the provided hostname. The device verifies | further as in the state diagram below. | |||
the server's certificate. If the SubjectAltName does not match | ||||
the hostname or the certificate is not valid (as described in | ||||
Section 23 of [RFC3261]), the device warns the user and prompts | ||||
whether to continue. | ||||
4. The profile delivery server receives the SUBSCRIBE request for | ||||
the device profile and sends a NOTIFY with content indirection | ||||
containing the HTTPS URI for the device profile (see | ||||
Section 7.5). | ||||
5. The device receives the NOTIFY request with the device profile | ||||
URI. The device prompts the user for the user ID and password | ||||
provided by the service provider. The device does an HTTPS GET | ||||
to retrieve the device profile (see Section 8.4 and Section 7.8). | ||||
The profile delivery server challenges for Digest authentication. | ||||
The device re-sends the HTTPS GET with Digest credentials using | ||||
the user ID and password entered by the user. | ||||
6. The profile delivery server receives the HTTP GET request for the | ||||
device profile along with the user ID and password for the | ||||
specific user. At this point, the profile delivery server has | ||||
authenticated the user and can create an association between a | ||||
specific device identified in the HTTPS URI and the user or user | ||||
account (see Section 10.2). The profile delivery server provides | ||||
the device profile which may contain the on-going SUBSCRIBE | ||||
request URIs for the device, user and other profiles along with | ||||
credentials for retrieving the profiles. | ||||
7. The device receives the device profile from the HTTPS response, | ||||
re-SUBSCRIBEs using the device profile URI provided in the | ||||
profile. The device profile also may contain URIs for the | ||||
default user's user and other profile SUBSCRIBE request URIs for | ||||
the SIP event package defined in Section 7. The device uses | ||||
these URIs to retrieve user and other profiles in a similar way | ||||
to the device profile. After retrieving these profiles the | ||||
device is fully functional in the service provider's SIP service. | ||||
5.2. Service Provider Use Case Scenario Bootstrapping with Device | ------------- All methods -------- | |||
Certificate | ________\ / Profile \ ............\ / Error \ | |||
| / \ Discovery / exhausted / \Handling/ | ||||
| ------------- -------- | ||||
| | | ||||
| | | ||||
| Try | Send request | ||||
| alternate | for Profile | ||||
| method(s) | Enrollment | ||||
| | | ||||
| | | ||||
| V | ||||
| FAILURE ------------ | ||||
|__________/ Profile \ | ||||
^ \ Enrollment / | ||||
^ ------------ | ||||
| | | ||||
| FAILURE | | ||||
| | | ||||
| | | ||||
| V | ||||
| Timeout ------------- | ||||
_________ / Profile \ | ||||
\ Notification/ | ||||
------------- | ||||
| | ||||
| | ||||
|SUCCESS | ||||
| | ||||
V | ||||
------- Failure --------- | ||||
/ Profile \ _________\ / Error \ | ||||
\Retrieval/ / \ Handling/ | ||||
------- --------- | ||||
. | ||||
. If allowed | ||||
. by Profile Retrieval | ||||
------ . Framework | ||||
(Client) -- V | ||||
------ \ ------------- | ||||
/Profile Change\ | ||||
\ Upload / | ||||
---------- / ------------- | ||||
{Authorized}-- | ||||
{ Entity } | ||||
---------- | ||||
The Profile Life Cycle is initiated when the Client starts the | ||||
'Profile Discovery' process for a particular Profile Type. Discovery | ||||
leads to transmission of a request for 'Profile Enrollment'. | ||||
Successful enrollment leads to 'Profile Notification'. Successful | ||||
initial notification results in 'Profile Retrieval' (either as data | ||||
within the notification or using content indirection). 'Profile | ||||
Change Upload' can be initiated by any authorized entity (examples | ||||
include Clients and administrative interfaces). | ||||
The following describes another use case scenario where the device | 'Profile Discovery' and 'Profile Enrollment' are closely coupled. | |||
implementor provides a certificate for the device which authenticates | Failure to enroll (for example, no response is received for the | |||
the device ID. In this scenario, the user signs up for the SIP | SUBSCRIBE) results in alternate 'Profile Discovery' methods until | |||
service with the service provider and provides the device ID (see | success is achieved or all the methods are exhausted (resulting in | |||
Section 7.13.1 for more information on device ID) to the service | error handling). Simiarly, the initial 'Profile Notification' is | |||
provider prior to the following steps, so that the service provider | closely coupled to enrollment. Failure to receive the initial | |||
has an association or mapping between the device ID and the user | notification also results in alternate discovery methods. | |||
account ahead of time. The service provider gives the user a | ||||
hostname to be entered on the device. | ||||
1. Steps 1-3 occur the same as in the prior use case described in | 'Profile Retrieval' is accomplished using the contents of the Profile | |||
Section 5.1. | Notification. This can either contain the profile data or a content | |||
2. The device receives the NOTIFY request with the device profile | indirection method to achieve it. | |||
URI. The device does an HTTPS GET to retrieve the device profile | ||||
(see Section 8.4 and Section 7.8). | ||||
3. The profile delivery server requests the device certificate in | ||||
the TLS connection used for the HTTPS GET. The device has a | ||||
certificate that contains the MAC address used in the device ID. | ||||
The device certificate is signed and provided by the implementor | ||||
for the purpose of authenticating the device ID in the initial | ||||
bootstrapping process only. The profile delivery server | ||||
validates the device ID and returns the device profile using | ||||
HTTPS. | ||||
4. The device receives the device profile in the HTTPS response. | ||||
The process continues in a similar way to step 7 in the above use | ||||
case. The device profile contains a more permanent device | ||||
certificate and private key or Digest authentication credentials | ||||
which are used for on-going device ID authentication. | ||||
6. Data Model | The Profile Life Cycle is the same for all the Profile Types, but | |||
there are different requirements in each step based on the Profile | ||||
Types. This framework defines three Profile Types and an order that | ||||
MUST be followed by the Client in requesting them (when it retrieves | ||||
two or more of the defined Profile Types), as follows: | ||||
A conscious separation of device, user and local network profiles is | o local-network | |||
made in this document. This is useful to provide features such as | o device | |||
hotelling (described above) as well as securing or restricting user | o user | |||
agent functionality. For example, by maintaining this separation, | ||||
Alice may walk up to Bob's user agent and direct Bob's user agent to | ||||
get the Alice's profile data. In doing so the user agent can replace | ||||
the previous user's profile data while still keeping the device's and | ||||
the local network's profile data which may be necessary for core | ||||
functionality and communication described in this document. The | ||||
local network profiles are relevant to a visiting device which gets | ||||
plugged in to a foreign network. The concept of the local network | ||||
providing profile data is useful to provide nomadic capabilities | ||||
(described above) as well as local policy data that may constrain the | ||||
user or device behavior relative to the local network. For example, | ||||
media types and codecs may be constrained to reflect the network's | ||||
capabilities. | ||||
The separation of these profiles also enables the separation of the | The sub-sections that follow specify the Profile Life Cycle details, | |||
management of the profiles. The user profile may be managed by a | with specific requirements based on each Profile Type. | |||
profile delivery server operated by the user's ISP. The device | ||||
profile may be delivered from a profile delivery server operated by | ||||
the user's employer. Other profile(s) may be delivered from the | ||||
user's ASP (Application Service Provider). The local network profile | ||||
may delivered by a WLAN (Wireless LAN) hotspot service provider. | ||||
Some interesting services and mobility applications are enabled with | ||||
this separation of profiles. | ||||
A very high level data model is implied here with the separation of | 5.1. Profile Discovery | |||
these three profile types. Each profile type instance requires a | ||||
separate subscription to retrieve the profile. A loose hierarchy | ||||
exists mostly for the purpose of bootstrapping and discovery or | ||||
formation of the profile URIs. No other meaning is implied by this | ||||
hierarchy. However, the profile format and data sets to be defined | ||||
outside this document may define additional meaning to this | ||||
hierarchy. In the bootstrapping scenario, a device straight out of | ||||
the box (software or hardware) does not know anything about its user | ||||
or local network. The one thing that it does know is its instance | ||||
id. So the hierarchy of the profiles exists as follows. | ||||
The local network profile is subscribed to and retrieved based upon a | The first step to obtaining a profile is PDS Discovery. This is | |||
URI formed from the local network domain. The local network profile | accomplished by creating a profile subscription using the Event | |||
is subscribed to first as it may contain information on how to | Package described in Section 6, and preparing for Profile Enrollment. | |||
communicate to the Internet or primary network from the local network | ||||
(e.g. HTTP proxy, SIP firewall or NAT traversal information). The | ||||
device instance id is used to form the user id part of the URI for | ||||
subscribing to the device and local network profiles. The device | ||||
profile may contain a default user AOR (Address of Record) for that | ||||
device. The default user AOR may then be used to retrieve the user | ||||
profile. Applications to be used on the device may be defined in the | ||||
device and user profiles. | ||||
7. Profile Change Event Notification Package | Each Profile Type requires its own subscription and based on the | |||
entity requesting it, presents certain unique requirements (for | ||||
example, the Client identifier is provided for the Device Profile | ||||
Type where as the User identifier is provided for the User Profile | ||||
Type). Further, the Profile Types are aimed at different PDSs and | ||||
hence are identified differently (for example, the local-network is | ||||
identified by the local domain name where as the Service Provider is | ||||
identified based on the Service Provider's domain name). Some of | ||||
this information can be obtained in multiple ways (such as local | ||||
domain information that can be configured statically or dynamically) | ||||
and the Client may have to try different information sources to | ||||
obtain the required information (for example, dynamic configuration | ||||
can override statically configured information). Based on these | ||||
considerations, the framework defines different rules for obtaining | ||||
and presenting the information for each Profile Type. Additionally, | ||||
when more than one information source is possible for the | ||||
information, it is presented as well. This is highlighted in the | ||||
following sub-sections. | ||||
This section defines a new SIP event package [RFC3265]. The purpose | 5.1.1. SIP SUBSCRIBE for the Local-Network Profile Type | |||
of this event package is to send to subscribers notification of | ||||
content changes to the profile(s) of interest and to provide the | ||||
location of the profile(s) via content indirection [I-D.ietf-sip- | ||||
content-indirect-mech] or directly in the body of the NOTIFY. | ||||
Frequently the profiles delivered to the user agent are much larger | ||||
(e.g. several KB or even several MB) than the MTU of the network. | ||||
These larger profiles will cause larger than normal SIP messages and | ||||
consequently higher impact on the SIP servers and infrastructure. To | ||||
avoid the higher impact and load on the SIP infrastructure, content | ||||
indirection SHOULD be used if the profile is large enough to cause | ||||
packet fragmentation over the transport protocol. The presence of | ||||
the MIME type for content indirection [I-D.ietf-sip-content-indirect- | ||||
mech] in the Accept header indicates that the user agent supports | ||||
content indirection and that the profile delivery server SHOULD use | ||||
content indirection. Similarly the content type for the differential | ||||
notification of profile changes [I-D.ietf-simple-xcap-diff] may be | ||||
used in the Accept header to express support for receiving profile | ||||
change deltas. | ||||
The MIME types or formats of profiles to be delivered via this | Before attempting to create a SIP SUBSCRIBE requesting the Local- | |||
framework are to be defined in the documents that define the profile | Network Profile, the Client MUST have established local network | |||
contents. These profile MIME types specified in the Accept header | connectivity. It MUST also have knowledge of the local network | |||
along with the profile types specified in the Event header parameter | domain either via static configuration or dynamic discovery (using | |||
"profile-type" SHOULD be used to specify which profiles get delivered | DHCP [RFC2131], option 15 [RFC2132]). The following requirements | |||
either directly or indirectly in the NOTIFY requests. As this event | apply: | |||
package does not specify the mandatory content type, this package is | o the user part of the Request URI MUST NOT be provided. The host | |||
abstract. The profile definition documents will specify the | and port part of the Request URI MUST be set to the local network | |||
mandatory content type to make a concrete event package. | domain | |||
o the user part of the "From" field MUST be the Identifier that the | ||||
Client will use to request the 'device' Profile Type | ||||
o the host and port part of the "From" field MUST be set to the | ||||
local network domain | ||||
o a user AOR, if known to the Client MUST be provided in the | ||||
"network-user" event header parameter, unless privacy requirements | ||||
prohibit its use (this is useful if the user has privileges in the | ||||
local network beyond those of the default user) | ||||
7.1. Event Package Name | For example: If the Client requested and received the local domain | |||
name via DHCP to be: airport.example.net, then the Local-Network | ||||
Profile SUBSCRIBE Request URI would look like: | ||||
sip:airport.example.net | ||||
The Event header would look like the following if the Client decided | ||||
to provide sip:alice@example.com as the user's AOR. (Alice may have | ||||
a prior arrangement with the local network operator giving her | ||||
special privileges.): | ||||
Event: ua-profile;profile-type=local-network; | ||||
network-user="sip:alice@example.com" | ||||
The Local-Network Profile SUBSCRIBE Request URI does not have a user | ||||
part so that the URI is distinct between the "local" and "device" | ||||
URIs when the domain is the same for the two. This provides a means | ||||
of routing to the appropriate PDS in domains where they are distinct | ||||
servers. The From field uses the device ID in the user part of the | ||||
local network Request URI so that every device in the network has a | ||||
unique and constant From field. Even though every client may get the | ||||
same (or similar) Local-Network Profile, the uniqueness of the From | ||||
field provides an important capability. Having unique From fields | ||||
allows the management of the local network to track user agents | ||||
present in the network and consequently also manage resources such as | ||||
bandwidth and port allocation. | ||||
For example: If the Client requested and received the local domain | ||||
name via DHCP to be: airport.example.net and the device ID is: MAC: | ||||
00DF1E004CD0, the From field would contain: | ||||
sip:MAC%3a00DF1E004CD0@airport.example.net | ||||
5.1.2. SIP SUBSCRIBE for the Device Profile Type | ||||
The Device Profile Type allows the Service Provider managing a Client | ||||
to provide Client-specific configuration information. To enable | ||||
this, the Request URI needs to identify the Client and the PDS domain | ||||
within which it is recognizable. Accordingly, this Framework | ||||
presents the following requirements for the formation of a | ||||
Subscription Request URI to request the "device" Profile Type | ||||
o the user portion of the Request URI MUST be set to a unique Client | ||||
Identifier | ||||
o the host and port portion of the Request URI MUST be set to the | ||||
PDS domain | ||||
The following sub-sections explain identification of - and the | ||||
requirements related to - the Client Identifier and the PDS domain | ||||
discovery. | ||||
5.1.2.1. Client Identifier | ||||
The Client profile could be specific to each Client in a SIP | ||||
deployment (for example, vendor/model) or shared across Client types | ||||
(for example, based on services and service tiers). Further, the | ||||
same Client might be provided different configuration profiles based | ||||
on deployment models. Client Identifiers play a significant role in | ||||
ensuring delivery of the correct profile and hence need to be unique | ||||
within a PDS domain to support the various deployment models. | ||||
This Framework requires that Client Identifiers MUST be unique and | ||||
persistent over the lifetime of a Client. Client Identifier | ||||
representations auto-generated by Clients SHOULD be based on MAC | ||||
address or UUID ([RFC4122]) based representations. A Client may use | ||||
alternate Client identifiers (for example, SIP URIs) obtained via | ||||
pre-configuration or dynamic configuration (for example, Client | ||||
profile). | ||||
If a MAC address is used, the following requirements apply: | ||||
o the Client identifier MUST be formatted as the characters "MAC:" | ||||
followed by a twelve digit hexadecimal upper case representation | ||||
of the MAC address to form a proper URN ([RFC2141]). The MAC | ||||
address representation MUST NOT include visual separators such as | ||||
colons and whitespaces. The representation is denoted using the | ||||
following ABNF syntax | ||||
mac-ident = MAC ":" 12UHEX | ||||
MAC = %x4d.41.43 ; MAC in caps | ||||
UHEX = DIGIT / %x41-46 ; uppercase A-F | ||||
o the MAC address MUST only be used to represent a single Client. | ||||
It MUST NOT be used if more than one Client can potentially use | ||||
the same MAC Address (for example, multiple software Clients on a | ||||
single platform). In such cases, the UUID representation SHOULD | ||||
be used | ||||
If a UUID is used, the following requirements MUST apply: | ||||
o the same approach to defining a user agent Instance ID as | ||||
[RFC4122] MUST be used | ||||
o when the URN is used as the user part of the URI, it MUST be URL | ||||
escaped | ||||
The colon (":") is not a legal character (without being | ||||
escaped) in the user part of an addr-spec ([RFC4122]). | ||||
For example the instance ID: | ||||
urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com | ||||
would be escaped to look as follows in a URI: | ||||
sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@ | ||||
example.com | ||||
The ABNF for the UUID representation is provided in [RFC4122] | ||||
5.1.2.2. PDS Domain Discovery | ||||
A Client needs to identify the PDS domain to form the host and port | ||||
part of the Request URI. Ideally, this information should be | ||||
obtained via a single method. However, support for various | ||||
deployment models implies multiple Client environments (for example, | ||||
residential routers, enterprise LANs, WLAN hotspots, dialup modem | ||||
etc) and presents hurdles to specifying a single method (for example, | ||||
if a Client is always in the SIP Service Provider's network one could | ||||
use DHCP). To accommodate multiple deployment scenarios, the | ||||
framework specified in this document presents multiple approaches. | ||||
Clients MUST follow the procedures specified below in the order | ||||
presented, unless exceptions are made by Client manufacturers or | ||||
Service Providers who may provide an option for the user to choose | ||||
the order (to suit specific deployment models, for example). | ||||
1. Service Provider pre-configuration | ||||
The Client MAY be pre-configured with information that can be | ||||
utilized to identify the host and port of the Request URI. The | ||||
information can be provided - as examples - when the Client is | ||||
manufactured, by using Service Provider entities (flash card, SIM | ||||
card) or via a Service Provider specific method (for example, | ||||
information or methods that lead to self subscription). If the | ||||
Client is specified to utilize this approach, it MUST attempt to | ||||
do so before trying other methods. The details of how this is | ||||
accomplished are beyond the scope of this document. | ||||
2. IP Configuration | ||||
If pre-configuration is not an option, or not available, IP | ||||
configuration MUST be utilized to try and obtain information that | ||||
can help with identification of the host and port for the Request | ||||
URI. The framework defines the following methods within this | ||||
procedure to accomplish this. Clients MUST follow the methods | ||||
defined, in the order specified, i.e. if the first option cannot | ||||
be accomplished or results in a failure, then next method is | ||||
tried. Failure of a specific method is indicated when the Client | ||||
cannot successfully complete Profile Enrollment. | ||||
2a. DHCP option 120: | ||||
Clients that support DHCP MUST attempt to obtain the host and | ||||
port of the outbound proxy during the DHCP process, using the | ||||
SIP DHCP option 120 [RFC3361] and use these as the host and | ||||
port part of the request URI. | ||||
For example, a MAC based Client Identifier with a DHCP option | ||||
120 indicating example.com, the Request URI would be | ||||
constructed as sip:MAC%3aABC123EFD456@example.com | ||||
2b. Local IP Network Domain: | ||||
- Clients that support DHCP MUST attempt to obtain the local IP | ||||
network domain during the DHCP process, using DHCP option 15 | ||||
and use these as the host and port part of the request URI | ||||
using the technique specificed in [RFC3263] | ||||
+ For example, a MAC based Client Identifier with a DHCP | ||||
option 15 indicating local.example.com, the Request URI | ||||
would be constructed as | ||||
sip:MAC%3aABC123EFD456@local.example.com | ||||
- If the local IP network domain is available (previous | ||||
method), but the usage of the local IP Network domain results | ||||
in a failure, the Client MUST use the local IP network domain, | ||||
prefixing it using the label "sipuaconfig." | ||||
+ For example, a MAC based Client Identifier with a DHCP | ||||
option 15 indicating local.example.com, the Request URI | ||||
would be constructed as | ||||
sip:MAC%3aABC123EFD456@sipuaconfig.local.example.com | ||||
3. Manual | ||||
If pre-configuration and IP Configuration are not options or | ||||
result in failures, the Client SHOULD provide a means for the user | ||||
to present information that may help with the retrieval process. | ||||
Exceptions to this requirement MAY include Clients with no user | ||||
interface appropriate for such entry. | ||||
This framework provides the following alternatives which can be | ||||
considered individually or together, in any order. | ||||
Service Provider PDS information: The user SHOULD be allowed to | ||||
present the host and port information which can help with the | ||||
creation of the Subscription URI to locate a PDS capable of | ||||
providing the profile. | ||||
Service Provider Configuration Server information The user MAY be | ||||
allowed to present information pertaining to a configuration | ||||
server that provides the Device Profile, not using a PDS as | ||||
defined in this framework. This framework specifies one such | ||||
possible process in Section 5.6.1. | ||||
5.1.3. SIP SUBSCRIBE for the User Profile Type | ||||
The User Profile allows the responsible SIP Service Provider to | ||||
provide user-specific configuration. This is based on the User's | ||||
Identity that is usually known in the network (for example, | ||||
associated with a subscription). Similar to the profiles provided to | ||||
Clients, the content and propagation of User Profiles may partake | ||||
differently, based on deployment scenarios (for example, users | ||||
belonging to the same subscription might - or might not - be provided | ||||
the same profile). However, each User is uniquely identified in a | ||||
SIP Service Provider's network using an Address Of Record (AOR). | ||||
Clients implementing this framework MUST use the User's AOR to | ||||
populate the Request URI. | ||||
A Client MAY obtain the User's AOR using various methods such as pre- | ||||
configuration, via the Device Profile or dynamically via a User | ||||
Interface. | ||||
5.1.4. Caching of SIP Subscription URIs | ||||
Creation of Subscription URIs is vital for successful Profile | ||||
Enrollment, required for Profile Notification and ultimately Profile | ||||
Retrieval. Further - unlike the User Profile - Local-Network and | ||||
Device Profiles are expected to be requested based on discovered | ||||
information (for example, domain name discovered via DHCP). These | ||||
Profile Types have different goals and hence, caching of the | ||||
Subscription URI should be carefully considered. | ||||
The Local-Network Profile Type is aimed at obtaining information from | ||||
the local network. The local network can change across Client | ||||
initializations (for example, User moves the Client from a home | ||||
network to a workplace LAN). Thus, the Client SHOULD NOT remember | ||||
local-network profile subscription URIs across initializations. The | ||||
Client SHOULD re-create the Subscription URI every time it moves to a | ||||
new network or gets re-initialized. Exceptions may be cases where | ||||
the Client can unambiguously determine changes to the local network. | ||||
The Device Profile Type is aimed at obtaining information from the | ||||
SIP Service Provider managing the Client. Once established, the | ||||
Service Provider does not change often (an example of an exception | ||||
would be the re-use of Clients across Service Providers). However, | ||||
if the discovery process is used, the Client can only be sure of | ||||
having reached the Service Provider upon successful Profile | ||||
Enrollment and Profile Notification. Thus, the Client SHOULD cache | ||||
the Subscription URI for the Device Profile. When cached, the Client | ||||
should use the cached Subscription URI upon a reset. Exceptions | ||||
include cases where the Client identifier has changed (for example, | ||||
new network card with a new MAC address), Service Provider | ||||
information has changed (for example, user initiates change) or the | ||||
Client cannot obtain its profile using the Subscription URI. | ||||
Clients SHOULD NOT cache the Subscription URI for the Device | ||||
Profile Type until successful Profile Notification. The reason | ||||
for this is that a PDS may send 202 responses to SUBSCRIBE | ||||
requests and NOTIFY responses to unknown Clients (see Section 6.6) | ||||
with no profile data or URIs. Thus, successful Profile | ||||
Notification is the only sure way to know that the Subscription | ||||
URI is valid. | ||||
5.2. Profile Enrollment | ||||
Clients implementing the framework specified in this document are | ||||
required to perform Profile Enrollment prior to Profile Retrieval | ||||
(the only exception is noted in Section 5.6.1). Enrollment for a | ||||
specific profile happens once the specific Subscription URI is formed | ||||
and is accomplished using the Event Package specified. | ||||
Thus, a Client requesting a Profile Type specified in this document - | ||||
and is successful in forming a Subscription URI - MUST enroll using | ||||
the event package defined, and as specified, in this framework (see | ||||
Section 6) . The following requirements apply: | ||||
o the Client MUST cater to the Event Package requirements specified | ||||
in Section 6.2 (for example, indicate the Profile Type being | ||||
requested in the profile-type parameter) | ||||
o the Client MUST use the Subscription URI pertaining to the Profile | ||||
Type being requested, as specified in Section 5.1 | ||||
The SIP infrastructure receiving such requests is expected to relay | ||||
and process profile enrollment requests. When a Profile Enrollment | ||||
request is received by a PDS, it SHOULD accept and respond to any | ||||
profile requests. Exceptions are when Service Provider policy | ||||
prevents such a response (for example, requesting entity is unknown). | ||||
Successful Profile Enrollment involves the following | ||||
o Acceptance of the SUBSCRIBE request by a PDS (indicated via a 200 | ||||
response) | ||||
o Receipt of an initial Profile Notification within the timeouts as | ||||
specified in [RFC3265] | ||||
A Client SHOULD follow suitable BackOff and Retry mechanisms if a | ||||
successful Profile Enrollment does not happen within the expected | ||||
period. | ||||
5.3. Profile Notification | ||||
Successful Profile Enrollment leads to Profile Notification. This | ||||
serves two purposes a) initial profile content following successful | ||||
Profile Enrollment and b) notification to the Client of modifications | ||||
to profile content. Failure to receive the initial NOTIFY following | ||||
a successful enrollment MUST be treated the same as a failed | ||||
enrollment. Whenever a profile is changed, the PDS MUST NOTIFY all | ||||
Clients currently subscribed to the changed profile. | ||||
For NOTIFY content please refer to Section 6.5. | ||||
5.4. Profile Retrieval | ||||
Upon successful Profile Enrollment and Profile Notification, the | ||||
Client can retrieve the documents pertaining to the requested profile | ||||
directly or via the URI(s) provided in the NOTIFY request as | ||||
specified in Section 6.5. | ||||
The following requirements hold good: | ||||
o the PDS SHOULD secure the content of the profiles using one of the | ||||
techniques described in Section 9 | ||||
o the Client MUST make the new profiles effective within the | ||||
specified timeframe, as described in Section 6.2 | ||||
o if content indirection is used, the Client SHOULD verify that it | ||||
has the latest profile content using the "hash" parameter defined | ||||
in [RFC4483] | ||||
o the Client SHOULD cache (i.e. store persistently) the contents of | ||||
retrieved profiles, until overridden by subsequent Profile | ||||
Notifications (this avoids situations where a PDS is unavailable, | ||||
leaving the Client without required configuration) | ||||
5.5. Profile Change Upload | ||||
Configuration Profiles can change over time. This can be initiated | ||||
by various entities (for example, via the Client, back-office | ||||
components, end-user web interfaces into configuration servers, etc) | ||||
and for various reasons (such as, change in user preferences, | ||||
modifications to services, enterprise-imposed common features or | ||||
restrictions). This framework allows for such changes to be | ||||
communicated to the PDS, using the term Profile Change Upload. | ||||
Any changes to a Profile as a result of Profile Change Upload MUST | ||||
result in a Profile Notification to all enrolled clients for that | ||||
Profile, if any. | ||||
Definition of specific mechanisms for Profile Change Upload are out | ||||
of scope of this document. | ||||
5.6. Additional Considerations | ||||
This section provides a special case for retrieval of the Device | ||||
Profile and highlights considerations and requirements on external | ||||
entities such as Profile Data Frameworks. | ||||
5.6.1. Manual retrieval of the Device Profile | ||||
At a minimum, a Client requires the Device Profile to be able to | ||||
function effectively. However, the methods specified in this | ||||
document many fail to provide a Client with a profile. To illustrate | ||||
with an example, consider the case of a Client that finds itself | ||||
behind a local network which does not provide information about DNS | ||||
servers in the network (for example, misconfigured home network). In | ||||
such cases, it would be beneficial to employ an alternative means to | ||||
obtain the profile information (for example, resolvable DNS Servers | ||||
could be part of the Client profile). While this specification | ||||
recommends that such a method be made available, it also specifies | ||||
one such option using HTTP that is described in this sub-section. | ||||
Clients expected to encounter scenarios where Client profile | ||||
retrieval can be hindered may employ the specified - or any | ||||
alternative - process. | ||||
The method being described involves the Client to utilize a HTTPS URI | ||||
(and any required credentials) based on either pre-configuration or | ||||
manual entry by the User (in cases where such an interface is | ||||
possible). This can lead to the retrieval of the Device Profile | ||||
which may contain the properties for the SUBSCRIBE Request URI and | ||||
credentials for Profile Enrollment and Profile Notification. This | ||||
approach bootstraps the process in a different step in the cycle, but | ||||
uses the same framework. | ||||
Further, this document defines a new HTTP request header "Event". | ||||
The syntax of the HTTP Event header is the same as the SIP Event | ||||
header defined in this document. Similar to the SIP Event header the | ||||
purpose of the HTTP Event header is to define the content of the | ||||
state information to be retrieved. In particular, the state | ||||
information is the Device, User or Local-Network Profile for the | ||||
Client. The SIP Event header parameters for this event package | ||||
("profile-type", "vendor", "model", "version") are also mandatory for | ||||
the HTTP Event header as they are used to provide information as to | ||||
what profile type is requested along with information about the | ||||
device which may impact the contents of the profile.When the Client | ||||
starts with retrieval of the profile via HTTPS (instead of a SIP | ||||
SUBSCRIBE to the event package), the device MUST provide the Event | ||||
header defined. | ||||
5.6.2. Client Types | ||||
The examples in this framework tend to associate Clients with | ||||
entities that are accessible to end-users. However, this is not | ||||
necessarily the only type of Client that can utilize the specified | ||||
Framework. Clients can be entities such as User Interfaces (that | ||||
allow for Client Configuration), entities in the network that do not | ||||
directly communicate with any Users (for example, Service Provider | ||||
deployed gateways) or elements in the Service Provider's network (for | ||||
example, SIP servers). | ||||
5.6.3. Profile Data | ||||
This framework does not specify the contents for any Profile Type. | ||||
Follow-on standardization activities can address profile contents. | ||||
However, it makes the following assumptions and recommendations: | ||||
o When the Client receives multiple profiles, the contents of each | ||||
Profile Type will only contain data relevant to the entity it | ||||
represents. As an example, consider a Client that obtains all the | ||||
defined profiles. Information pertaining to the local network is | ||||
contained in the 'local-network' profile and not the'user' | ||||
profile. This does not preclude relevant data about a different | ||||
entity from being included in a Profile Type, for example, the | ||||
'device' Profile Type may contain information about the Users | ||||
allowed to access services via the Client. A profile may also | ||||
contain starting information to obtain subsequent Profiles | ||||
o Data overlap SHOULD be avoided across Profile Types, unless | ||||
necessary. If data overlap is present, prioritization of the data | ||||
is left to data definitions. As an example, the Device Profile | ||||
may contain the list of codecs to be used by the Client and the | ||||
User Profile (for a User on the Client) may contain the codecs | ||||
preferred by the User. Thus, the same data (usable codecs) is | ||||
present in two profiles. However, the data definitions may | ||||
indicate that to function effectively, any codec chosen for | ||||
communication needs to be present in both the profiles. | ||||
5.6.4. Profile Data Frameworks | ||||
This framework specified in this document does not address profile | ||||
data representation, storage or retrieval protocols. It assumes that | ||||
the PDS has a PCC based on existing or other Profile Data Frameworks, | ||||
for example, XCAP ([I-D.ietf-simple-xcap]). | ||||
While it does not impose vast constraints on any such framework, it | ||||
does allow for the propagation of profile content to PDS | ||||
(specifically the PCC). Thus, Profile Data or Retrieval frameworks | ||||
used in conjunction with this framework MAY consider techniques for | ||||
propagating incremental, atomic changes to the PDS. For example, a | ||||
means for propagating changes to a PDS is defined in XCAP | ||||
([I-D.ietf-simple-xcap]). | ||||
5.6.5. Additional Profile Types | ||||
This document specifies three profile types: local-network, device | ||||
and user. However, there may be use cases for additional profile | ||||
types. For example, Profile Types for application specific profile | ||||
data. Definition of such additional Profile Types is not prohibited, | ||||
but considered out of scope for this document. | ||||
6. Event Package Definition | ||||
The framework specified in this document proposes and specifies a new | ||||
SIP Event Package as allowed by [RFC3265]. The purpose is to allow | ||||
for Clients to subscribe to specific Profile Types with PDSs and for | ||||
the PDSs to notify the Clients with - or pointers to - profile data. | ||||
The requirements specified in [RFC3265] apply to this package. The | ||||
following sub-sections specify the Event Package description and the | ||||
associated requirements. The framework requirements are defined in | ||||
Section 5. | ||||
6.1. Event Package Name | ||||
The name of this package is "ua-profile". This value appears in the | The name of this package is "ua-profile". This value appears in the | |||
Event header field present in SUBSCRIBE and NOTIFY requests for this | Event header field present in SUBSCRIBE and NOTIFY requests for this | |||
package as defined in [RFC3265]. | package as defined in [RFC3265]. | |||
7.2. Event Package Parameters | 6.2. Event Package Parameters | |||
This package defines the following new parameters for the event | This package defines the following new parameters for the event | |||
header: "profile-type", "vendor", "model", "version", "effective-by", | header: | |||
and "network-user". The "effective-by" parameter is for use in | "profile-type", "vendor", "model", "version", "effective-by" and | |||
NOTIFY requests only. The "effective-by" parameter is ignored if it | "network-user". | |||
appears in a SUBSCRIBE request. The other parameters are for use in | The following rules apply: | |||
the SUBSCRIBE request and are ignored if they appear in NOTIFY | o All the new parameters, with the exception of the "effective-by" | |||
requests. | parameter MUST only be used in SUBSCRIBE requests and ignored if | |||
they appear in NOTIFY requests | ||||
o The "effective-by" parameter is for use in NOTIFY requests only | ||||
and MUST be ignored if it appears in SUBSCRIBE requests | ||||
The semantics of these new parameters are specified in the following | ||||
sub-sections. | ||||
6.2.1. profile-type | ||||
The "profile-type" parameter is used to indicate the token name of | The "profile-type" parameter is used to indicate the token name of | |||
the profile type the user agent wishes to obtain data or URIs for and | the Profile Type the user agent wishes to obtain data or URIs for and | |||
to be notified of subsequent changes. Using a token in this | to be notified of subsequent changes. This document defines three | |||
parameter allows the URI semantics for retrieving the profiles to be | logical types of profiles and their token names. They are as | |||
opaque to the subscribing user agent. All it needs to know is the | follows: | |||
token value for this parameter. This document defines three logical | ||||
types of profiles and their token names. The contents or format of | ||||
the profiles is outside the scope of this document. | ||||
The three types of profiles defined here are "device", "user" and | local-network Specifying "local-network" type profile indicates the | |||
"local-network". Specifying "device" type profile(s) indicates the | ||||
desire for the profile data (URI when content indirection is used) | ||||
and change notification of the contents of the profile that is | ||||
specific to the device or user agent. Specifying "user" type profile | ||||
indicates the desire for the profile data (URI when content | ||||
indirection is used) and change notification of the profile content | ||||
for the user. Specifying "local-network" type profile indicates the | ||||
desire for profile data (URI when content indirection is used) | desire for profile data (URI when content indirection is used) | |||
specific to the local network. The device, user or local network is | specific to the local network. | |||
identified in the URI of the SUBSCRIBE request. A separate SUBSCRIBE | device Specifying "device" type profile(s) indicates the desire for | |||
dialog is used for each profile type. The profile type associated | the profile data (URI when content indirection is used) and change | |||
with the dialog can then be used to infer which profile type changed | notification of the contents of the profile that is specific to | |||
and is contained in the NOTIFY or content indirection URI. The | the device or user agent. | |||
Accept header of the SUBSCRIBE request MUST include the MIME types | user Specifying "user" type profile indicates the desire for the | |||
for all profile content types for which the subscribing user agent | profile data (URI when content indirection is used) and change | |||
wishes to retrieve profiles or receive change notifications. In the | notification of the profile content for the user. | |||
following ABNF, EQUAL and token are defined in [RFC3261]. Additional | The "profile-type" is identified is identified in the Event header | |||
profile types may be defined in subsequent documents. | parameter: profile-type. A separate SUBSCRIBE dialog is used for | |||
each Profile Type. The Profile Type associated with the dialog can | ||||
then be used to infer which Profile Type changed and is contained in | ||||
the NOTIFY or content indirection URI. The Accept header of the | ||||
SUBSCRIBE request MUST include the MIME types for all profile content | ||||
types for which the subscribing user agent wishes to retrieve | ||||
profiles or receive change notifications. | ||||
In the following syntax definition using ABNF, EQUAL and token are | ||||
defined in [RFC3261]. It is to be noted that additional Profile | ||||
Types may be defined in subsequent documents. | ||||
Profile-type = "profile-type" EQUAL profile-value | Profile-type = "profile-type" EQUAL profile-value | |||
profile-value = profile-types / token | profile-value = profile-types / token | |||
profile-types = "device" / "user" / "local-network" | profile-types = "device" / "user" / "local-network" | |||
The "device", "user" or "local-network" token in the profile-type | The "device", "user" or "local-network" token in the profile-type | |||
parameter may represent a class or set of profile properties. As | parameter may represent a class or set of profile properties. | |||
standards are defined for specific profile contents related to the | Follow-on standards defining specific profile contents may find it | |||
user, device or local network, it may be desirable to define | desirable to define additional tokens for the profile-type parameter. | |||
additional tokens for the profile-type parameter. Also additional | Also additional content types may be defined along with the profile | |||
content types may be defined along with the profile formats that | formats that can be used in the Accept header of the SUBSCRIBE to | |||
can be used in the Accept header of the SUBSCRIBE to filter or | filter or indicate what data sets of the profile are desired. | |||
indicate what data sets of the profile are desired. | ||||
The rationale for the separation of user, device and local network | ||||
type profiles is provided in Section 4. It should be noted that any | ||||
of the types may result in zero or more profiles or URIs being | ||||
provided in the NOTIFY request. As discussed, a default user may be | ||||
assigned to a device. The default user's AOR, if defined in the | ||||
device profile, may in turn be used as the URI to SUBSCRIBE to the | ||||
"user" profile type. | ||||
The data provided in the three types of profiles may overlap. As an | 6.2.2. vendor, model and version | |||
example, the codecs that a user prefers to use, the codecs that the | ||||
device supports (and the enterprise or device owner wishes to use), | ||||
the codecs that the local network can support (and the network | ||||
operator wishes to allow) all may overlap in how they are specified | ||||
in the three corresponding profiles. This policy for merging the | ||||
constraints across the multiple profile types can only unambiguously | ||||
be defined in the context of the profile syntax and semantics. This | ||||
is out of scope for this document and will be defined in a subsequent | ||||
document(s) that define the data profile format. | ||||
The "vendor", "model" and "version" parameter values are tokens | The "vendor", "model" and "version" parameter values are tokens | |||
specified by the implementer of the user agent. These parameters | specified by the implementer of the user agent. These parameters | |||
MUST be provided in the SUBSCRIBE request for all profile types. The | MUST be provided in the SUBSCRIBE request for all Profile Types. The | |||
implementer SHOULD use their DNS domain name (e.g. example.com) as | implementer SHOULD use their DNS domain name (for example, | |||
the value of the "vendor" parameter so that it is known to be unique. | example.com) as the value of the "vendor" parameter so that it is | |||
These parameters are useful to the profile delivery server to affect | known to be unique. These parameters are useful to the PDS to affect | |||
the profiles provided. In some scenarios it is desirable to provide | the profiles provided. In some scenarios it is desirable to provide | |||
different profiles based upon these parameters. For example, feature | different profiles based upon these parameters. For example, feature | |||
property X in a profile may work differently on two versions of the | property X in a profile may work differently on two versions of the | |||
same user agent. This gives the profile delivery server the ability | same user agent. This gives the PDS the ability to compensate for or | |||
to compensate for or take advantage of the differences. In the | take advantage of the differences. In the following ABNF defining | |||
following ABNF, EQUAL and quoted-string are defined in [RFC3261]. | the syntax, EQUAL and quoted-string are defined in [RFC3261]. | |||
Vendor = "vendor" EQUAL quoted-string | Vendor = "vendor" EQUAL quoted-string | |||
Model = "model" EQUAL quoted-string | Model = "model" EQUAL quoted-string | |||
Version = "version" EQUAL quoted-string | Version = "version" EQUAL quoted-string | |||
The "network-user" parameter MUST be set when subscribing for device | 6.2.3. network-user | |||
profiles if the user's AOR is known. The "network-user" parameter | ||||
MUST be set when subscribing for "local-network" profiles if it is | The "network-user" parameter MUST be set when subscribing for "local- | |||
known, unless the device is provisioned to preserve privacy within | network" profiles if it is known, unless the Client is provisioned to | |||
the local network. | preserve privacy within the local network. This allows the Client to | |||
When the profile-type is "device", the SUBSCRIBE URI addresses the | indicate a user who may have special privileges in the local network | |||
device which must contain the device identity (see Section 7.13). | that impact the contents of the "local-network" profile. It MAY also | |||
When the profile-type is "local-network", the SUBSCRIBE URI | be provided in a subscription for a "device" profile. In such cases | |||
addresses the local network profile resource id which must contain | the Client is requesting the PDS to recognize the indicated user as | |||
the localdomain with no user part (see Section 7.13). The URIs | the default user for itself. | |||
will not contain the user profile identifier. For this reason the | ||||
"network-user" parameter is needed to indicate the user profile | The Notifier SHOULD authenticate the subscriber to verify the | |||
resource identifier associated with the "device" or URI. | resource identifier in the "network-user" parameter, if the profile | |||
The SUBSCRIBE server SHOULD authenticate the subscriber to verify the | provided is specific to the user (for example, granting policies or | |||
resource identifier in the "network-user" parameter if the profile | ||||
provided is specific to the user (e.g. granting policies or | ||||
privileges beyond those of a default user). If the value of the | privileges beyond those of a default user). If the value of the | |||
"profile-type" parameter is not "device" or "local-network", the | "profile-type" parameter is not "device" or "local-network", the | |||
"network-user" parameter has no defined meaning and is ignored. If | "network-user" parameter has no defined meaning and is ignored. If | |||
the "network-user" parameter is provided in the SUBSCRIBE request, it | the "network-user" parameter is provided in the SUBSCRIBE request, it | |||
MUST be present in the NOTIFY request as well. In the following | MUST be present in the NOTIFY request as well. In the following | |||
ABNF, EQUAL, LDQUOT, RDQUOT and addr-spec are defined in [RFC3261]. | ABNF, EQUAL, LDQUOT, RDQUOT and addr-spec are defined in [RFC3261]. | |||
Network-User = "network-user" EQUAL LDQUOT addr-spec RDQUOT | Network-User = "network-user" EQUAL LDQUOT addr-spec RDQUOT | |||
The entity that is subscribing and getting the "device" and | 6.2.4. effective-by parameter | |||
"local-network" profiles is the device. For this reason the From | ||||
field should indicate the device's identity. These profiles types | ||||
contain device specific information and it is the device's | ||||
identity that gets authenticated for the "device" profile. | ||||
Depending upon the local administration policy and segmentation of | ||||
services, the device identity and user profile identity | ||||
association may not be known to the configuration delivery server | ||||
ahead of time. Since the From field and SUBSCRIBE request URI | ||||
indicate the "device" profile resource identifier, the "network- | ||||
user" parameter is needed to indicate the additional resource | ||||
identifier for the user associated with this device. | ||||
When the profile-type is "device", the user agent SHOULD set the | ||||
"network-user" parameter to the "user" profile resource identifier if | ||||
it is known. This is an indication to the profile delivery server to | ||||
set or change the association of the default user with the device | ||||
indicated in the SUBSCRIBE URI. If the profile delivery server | ||||
implements and allows this policy of setting the default user with a | ||||
device, the user agent can utilize this mechanism to allow a user to | ||||
login and make the user agent and user association permanent. | ||||
If the profile-type is "local-network" and users's AOR is known, the | ||||
user agent SHOULD assign the "network-user" parameter to be the | ||||
user's AOR. If the user has special privileges beyond that of a | ||||
default user in the local network, the "network-user" parameter | ||||
identifies the user to the local network. | ||||
The "effective-by" parameter in the Event header of the NOTIFY | The "effective-by" parameter in the Event header of the NOTIFY | |||
request specifies the maximum number of seconds before the user agent | request specifies the maximum number of seconds before the user agent | |||
must attempt to make the new profile effective. The "effective-by" | must attempt to make the new profile effective. The "effective-by" | |||
parameter MAY be provided in the NOTIFY request for any of the | parameter MAY be provided in the NOTIFY request for any of the | |||
profile types. A value of 0 (zero) indicates that the subscribing | Profile Types. A value of 0 (zero) indicates that the subscribing | |||
user agent must attempt to make the profiles effective immediately | user agent must attempt to make the profiles effective immediately | |||
(despite possible service interruptions). This gives the profile | (despite possible service interruptions). This gives the PDS the | |||
delivery server the power to control when the profile is effective. | power to control when the profile is effective. This may be | |||
This may be important to resolve an emergency problem or disable a | important to resolve an emergency problem or disable a user agent | |||
user agent immediately. The "effective-by" parameter is ignored in | immediately. The "effective-by" parameter is ignored in all messages | |||
all messages other than the NOTIFY request. In the following ABNF, | other than the NOTIFY request. In the following ABNF, EQUAL and | |||
EQUAL and DIGIT are defined in [RFC3261]. | DIGIT are defined in [RFC3261]. | |||
Effective-By = "effective-by" EQUAL 1*DIGIT | Effective-By = "effective-by" EQUAL 1*DIGIT | |||
The following are example Event headers which may occur in | 6.2.5. Summary of event parameters | |||
SUBSCRIBE requests. These examples are not intended to be | ||||
complete SUBSCRIBE requests. | The following are example Event headers which may occur in SUBSCRIBE | |||
requests. These examples are not intended to be complete SUBSCRIBE | ||||
requests. | ||||
Event: ua-profile;profile-type=device; | Event: ua-profile;profile-type=device; | |||
vendor="vendor.example.com";model="Z100";version="1.2.3" | vendor="vendor.example.com";model="Z100";version="1.2.3" | |||
Event: ua-profile;profile-type="user"; | Event: ua-profile;profile-type="user"; | |||
vendor="premier.example.com";model="trs8000";version="5.5" | vendor="premier.example.com";model="trs8000";version="5.5" | |||
The following are example Event headers which may occur in | The following are example Event headers which may occur in NOTIFY | |||
NOTIFY requests. These example headers are not intended to | requests. These example headers are not intended to be complete | |||
be complete SUBSCRIBE requests. | SUBSCRIBE requests. | |||
Event: ua-profile;effective-by=0 | Event: ua-profile;effective-by=0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
The following table shows the use of Event header parameters in | The following table shows the use of Event header parameters in | |||
SUBSCRIBE requests for the three profile types: | SUBSCRIBE requests for the three Profile Types: | |||
profile-type || device | user | local-network | profile-type || device | user | local-network | |||
============================================= | ============================================= | |||
vendor || m | m | m | vendor || m | m | m | |||
model || m | m | m | model || m | m | m | |||
version || m | m | m | version || m | m | m | |||
network-user || s | | s | network-user || s | | s | |||
effective-by || | | | effective-by || | | | |||
m - mandatory | m - mandatory | |||
s - SHOULD be provided | s - SHOULD be provided | |||
o - optional | o - optional | |||
Non-specified means that the parameter has no meaning and | ||||
should be ignored. | Non-specified means that the parameter has no meaning and should be | |||
ignored. | ||||
The following table shows the use of Event header parameters in | The following table shows the use of Event header parameters in | |||
NOTIFY requests for the three profile types: | NOTIFY requests for the three Profile Types: | |||
profile-type || device | user | local-network | profile-type || device | user | local-network | |||
============================================= | ============================================= | |||
vendor || | | | vendor || | | | |||
model || | | | model || | | | |||
version || | | | version || | | | |||
network-user || s | | s | network-user || s | | s | |||
effective-by || o | o | o | effective-by || o | o | o | |||
7.3. SUBSCRIBE Bodies | 6.3. SUBSCRIBE Bodies | |||
This package defines no use of the SUBSCRIBE request body. A body | ||||
contained in a SUBSCRIBE request for this event package is ignored. | ||||
Future documents may specify a filter-like mechanism using etags to | ||||
minimize the delivery or notification of profiles where the user | ||||
agent already has a current version. | ||||
7.4. Subscription Duration | This package defines no use of the SUBSCRIBE request body. If | |||
present, it MUST be ignored. | ||||
As the presence (or lack of) a device or user agent is not very time | Future enhancements to the framework may specify a use for the | |||
critical to the functionality of the profile delivery server, it is | SUBSCRIBE request body (for example,, mechanisms using etags to | |||
recommended that the default subscription duration be 86400 seconds | minimize Profile Notifications to Clients with current profile | |||
(one day). A one-time fetch of a profile can be accomplished by | versions). | |||
setting the Expires parameter to 0 as defined in [RFC3265] resulting | ||||
in a single NOTIFY with no change notification. | ||||
7.5. NOTIFY Bodies | 6.4. Subscription Duration | |||
The size of profile content is likely to be hundreds to several | The duration of a subscription is specific to SIP deployments and no | |||
thousands of bytes in size. For this reason, if the Accept header of | specific recommendation is made by this Event Package. If absent, a | |||
the SUBSCRIBE included the MIME type message/external-body, | value of 86400 seconds is RECOMMENDED since the presence (or absence) | |||
indicating support for content indirection, the profile delivery | of a Client subscription is not time critical to the regular | |||
server SHOULD use content indirection [I-D.ietf-sip-content-indirect- | functioning of the PDS. | |||
mech] in the NOTIFY body for providing the profiles. | ||||
When delivering profiles via content indirection, the profile | It is to be noted that a one-time fetch of a profile can be | |||
delivery server MUST include the Content-ID MIME header described in | accomplished by setting the 'Expires' parameter to a value of Zero, | |||
[I-D.ietf-sip-content-indirect-mech] for each profile URI. This is | as specified in [RFC3265]. | |||
to avoid unnecessary download of the profiles. Some user agents are | ||||
not able to make a profile effective without rebooting or restarting. | ||||
Rebooting is something to be avoided on a user agent performing | ||||
services such as telephony. By examining the Content-ID, the user | ||||
agent can recognize if it already has the indirected content, thus | ||||
avoiding unnecessary interruption of service. The Content-Type MUST | ||||
be specified for each URI. For minimal interoperability, the profile | ||||
delivery server MUST support the "http:" and "https:" URI schemes for | ||||
content indirection. Other URI schemes MAY also be provided in the | ||||
content indirection. However the security considerations are define | ||||
for content indirection using HTTP and HTTPS. Other protocols MAY be | ||||
supported for content indirection, but are out of scope of this | ||||
document. | ||||
Initially user agent implementers may use a proprietary content | 6.5. NOTIFY Bodies | |||
type for the profiles retrieved from the URI(s). This is a good | ||||
first step towards easing the management of user agents. Standard | ||||
profile contents, content type and formats will need to be defined | ||||
for true interoperability of profile delivery. The specification | ||||
of the content is out of the scope of this document. | ||||
The URI scheme [RFC2396] used in content indirection may be dictated | The framework specifying the Event Package allows for the NOTIFY body | |||
by the profile content that is required. It is expected that FTP | to contain the profile data or a pointer to the profile data using | |||
[RFC0959], HTTP [RFC2616], HTTPS [RFC2818], LDAP [RFC3377], XCAP | content direction. The framework does not define any profile data | |||
[I-D.ietf-simple-xcap] and other URI schemes could be used by this | and delegates specification of utilized MIME types Profile Data | |||
package and framework if the subscribing user agent and profile | Frameworks. For profile data delivered via content indirection, the | |||
delivery server both support the same scheme. The negotiation of the | following apply: | |||
URI scheme is described in the following sections. | ||||
7.6. Notifier processing of SUBSCRIBE requests | o the Content-ID MIME header, as described in [RFC4483] MUST be used | |||
for each Profile document URI | ||||
o at a minimum, the "http:" and "https:" URI schemes MUST be | ||||
supported; other URI schemas MAY be supported based on the Profile | ||||
Data Frameworks (examples include FTP [RFC0959], TFTP | ||||
[RFC3617],HTTP [RFC2616], HTTPS [RFC2818], LDAP [RFC3377], XCAP | ||||
[I-D.ietf-simple-xcap], XCAP-DIFF [I-D.ietf-simple-xcap-diff]) | ||||
The general rules for processing SUBSCRIBE requests [RFC3265] apply | The NOTIFY body SHOULD include a MIME type specified in the 'Accept' | |||
to this package. If content indirection is used for delivering the | header of the SUBSCRIBE. Further, if the Accept header of the | |||
profiles, the notifier does not need to authenticate the subscription | SUBSCRIBE included the MIME type message/external-body (indicating | |||
as the profile content is not transported in the SUBSCRIBE or NOTIFY | support for content indirection) the content indirection SHOULD be | |||
transaction messages. With content indirection, only URIs are | used in the NOTIFY body for providing the profiles. If none are | |||
transported in the NOTIFY request which may be secured using the | specified, the Profile Data frameworks are responsible for, and MUST | |||
techniques in Section 10. If content indirection is not used, the | specify, the MIME type to be assumed. | |||
subscribe server SHOULD reject SUBSCRIBE requests from connections | ||||
that are not over TLS and SHOULD challenge the SUBSCRIBE request with | ||||
SIP Digest authentication. The subscriber MUST support the "http:" | ||||
or "https:" URI scheme for content indirection. If the subscriber | ||||
wishes to use a URI scheme other than "http:", the subscriber must | ||||
use the "schemes" Contact header field parameter to indicate the URI | ||||
scheme as defined in [I-D.ietf-sip-content-indirect-mech]. For | ||||
example the subscriber may request that content indirection use the | ||||
"ldaps:" URI scheme by including "ldaps" in the "scheme" Contact | ||||
header parameter of the SUBSCRIBE request. If the subscriber does | ||||
not specify the URI scheme, the notifier may use either "http:" or | ||||
"https:". | ||||
The profile generation behavior of the profile delivery server is | 6.6. Notifier Processing of SUBSCRIBE Requests | |||
left to the implementer. The profile delivery server may be as | ||||
simple as a SIP SUBSCRIBE UAS and NOTIFY UAC front end to a simple | ||||
HTTP server delivering static files that are hand edited. At the | ||||
other extreme the profile delivery server can be part of a | ||||
configuration management system that integrates with a corporate | ||||
directory and IT system or carrier operations support systems, | ||||
where the profiles are automatically generated. The design of | ||||
this framework intentionally provides the flexibility of | ||||
implementation from simple/cheap to complex/expensive. | ||||
The "profile-type" parameter can be thought of as a filter to | A successful SUBSCRIBE request results in a NOTIFY with either | |||
indicate which profile(s) are to be provided. If the profile type | profile contents or a pointer to it (via Content Indirection). If | |||
indicated in the "profile-type" Event header parameter is not | the NOTIFY is expected to contain profile contents or the Notifier is | |||
provisioned or provided to any users in the domain, the profile | unsure, the SUBSCRIBE SHOULD be either authenticated or transmitted | |||
delivery server the Notifier SHOULD return a 404 responce to the | over an integrity protected SIP communication channels. Exceptions | |||
SUBSCRIBE request. | to authenticating such SUBSCRIBEs include cases where the identity of | |||
the Subscriber is unknown and the Notifier is configured to accept | ||||
such requests. | ||||
If the specific user or device is not known to the profile delivery | The Notifier MAY also authenticate SUBSCRIBE messages even if the | |||
server, the implementer MAY accept the subscription or reject it. It | NOTIFY is expected to only contain a pointer to profile data. | |||
is a policy decision whether to maintain the subscription dialog for | Securing data sent via Content Indirection is covered in Section 9. | |||
an unprovisioned user or device. It is recommended that the | ||||
implementer accept the subscription. It is useful for the profile | ||||
delivery server to maintain the subscription for unprovisioned users | ||||
or devices as an administrator may add the user or device to the | ||||
system after the initial subscription, defining the profile contents. | ||||
This allows the profile delivery server to immediately send a NOTIFY | ||||
request with the profile URIs. If the profile delivery server does | ||||
not accept the subscription from an unknown user or device, the | ||||
administer or user must manually provoke the user agent to re- | ||||
subscribe. This may be difficult if the user agent and administrator | ||||
are at different locations. | ||||
A user agent can provide hotelling by collecting a user's AOR and the | If the Profile Type indicated in the "profile-type" Event header | |||
credentials needed to SUBSCRIBE and retrieve the user's profiles. | parameter is unavailable or the Notifier is configured not to provide | |||
Hotelling functionality is achieved by subscribing to the user's AOR | it, the Notifier SHOULD return a 404 response to the SUBSCRIBE | |||
and specifying the "user" profile type. This same mechanism can also | request. If the specific user or Client is unknown, the Notifier MAY | |||
be used to secure a user agent, requiring a non-mobile user to login | either accept or reject the subscription. | |||
to enable functionality beyond the default user's restricted | ||||
functionality. | ||||
When the Event header "profile-type" is "device" and the user agent | When the Event header "profile-type" is "device" and the user agent | |||
has provided the user's AOR in the "network-user" parameter, the | has provided the user's AOR in the "network-user" parameter, the | |||
profile delivery server MAY set or change the default user associated | profile delivery server MAY set or change the default user associated | |||
with the device indicated in the SUBSCRIBE URI. This is an | with the Client indicated in the Subscription request. However, the | |||
implementation or policy decision. The profile delivery server | Notifier SHOULD authenticate the user indicated before making such a | |||
SHOULD authenticate the user for the SUBSCRIBE request before | change. | |||
changing the default user associated with the device. | ||||
7.7. Notifier generation of NOTIFY requests | 6.7. Notifier Generation of NOTIFY Requests | |||
As in [RFC3265], the profile delivery server MUST always send a | As specified in [RFC3265], the Notifier MUST always send a NOTIFY | |||
NOTIFY request upon accepting a subscription. If the device or user | request upon accepting a subscription. If the Client or User is | |||
is unknown to the profile delivery server and it chooses to accept | unknown and the Notifier choose to accept the subscription, the | |||
the subscription, the implementer has two choices. A NOTIFY MAY be | Notifier MAY either respond with profile data (for example, default | |||
sent with no body or content indirection containing the profile | profile data) or provide no profile information (i.e. no body or | |||
URI(s). Alternatively, a NOTIFY MAY be sent with a body or content | content indirection). | |||
indirection containing URI(s) pointing to a default data set. The | ||||
data sets provided may allow for only limited functionality of the | ||||
user agent (e.g. a telephony user agent that only permits calls to | ||||
the help desk and emergency services). This is an implementation and | ||||
business policy decision for the profile delivery server. | ||||
If the URI in the SUBSCRIBE request is a known identity and is | If the URI in the SUBSCRIBE request is a known identity and the | |||
provisioned with the requested profile type (i.e. as specified in the | requested profile information is available (i.e. as specified in the | |||
profile-type parameter of the Event header), the profile delivery | profile-type parameter of the Event header), the Notifier SHOULD send | |||
server SHOULD send a NOTIFY with profile data or content indirection | a NOTIFY with profile data. Profile data MAY be sent as profile | |||
(if the content indirection mime type was included in the Accept | contents or via Content Indirection (if the content indirection MIME | |||
header) containing the URI for the profile. To protect the integrity | type was included in the Accept header). To allow for Content | |||
of the profile data or indirect content profile data URIs, the | Indirection, the Subscriber MUST support the "http:" or "https:" URI | |||
notifier SHOULD send the NOTIFY request on the same TLS connection as | schemas. If the Subscriber wishes to support alternative URI schemas | |||
the SUBSCRIBE request came in on if TLS was used. | it MUST be indicated in the "schemes" Contact header field parameter | |||
as defined in [RFC4483]. If the subscriber does not specify the URI | ||||
scheme, the Notifier may use either "http:" or "https:". | ||||
The profile delivery server may specify when the new profiles must be | The Notifier MAY specify when the new profiles must be made effective | |||
made effective by the user agent. The profile delivery server MAY | by the Subscriber by specifying a maximum time in seconds (zero or | |||
specify a maximum time in seconds (zero or more) in the | more) in the "effective-by" event header parameter. | |||
"effective-by" event header parameter. The user agent uses the | ||||
"effective-by" parameter to determine when to make the new profiles | ||||
effective for all dialogs. | ||||
7.8. Subscriber processing of NOTIFY requests | If the SUBSCRIBE was received over an integrity protected SIP | |||
communications channel, the Notifier SHOULD send the NOTIFY over the | ||||
same channel. | ||||
The user agent subscribing to this event package MUST adhere to the | 6.8. Subscriber Processing of NOTIFY Requests | |||
NOTIFY request processing behavior specified in [RFC3265]. The user | ||||
agent MUST attempt to make the profiles effective within the time in | ||||
seconds given in the "effective-by" Event header parameter if present | ||||
in the NOTIFY request (see Section 7.7). By default, the user agent | ||||
makes the profiles effective as soon as it thinks that it is non- | ||||
obtrusive to do so. For example, when there are no active calls. | ||||
Profile changes SHOULD affect behavior on all new dialogs which are | ||||
created after the notification, but may not be able to affect | ||||
existing dialogs. The user agent SHOULD use one of the techniques | ||||
specified in Section 10 to securely retrieve the profiles. If the | ||||
subscriber included the MIME type message/external-body for content | ||||
indirection in the SUBSCRIBE request Accept header, the subscriber | ||||
MUST support the http: or https: URI schemes for content indirection. | ||||
If the subscriber indicated alternative URI schemes for content | ||||
indirection it MUST also indicate support for http: or https:. The | ||||
subscriber should still be prepared to use http: or https: as the | ||||
profile delivery server may not support the alternative URI schemes. | ||||
The subscriber MUST be prepared to receive a NOTIFY request with no | A Subscriber to this event package MUST adhere to the NOTIFY request | |||
processing behavior specified in [RFC3265]. If the Notifier | ||||
indicated an effective time (using the "effective-by" Event Header | ||||
parameter), it SHOULD attempt to make the profiles effective within | ||||
the specified time. Exceptions include deployments that prohibit | ||||
such behavior in certain cases (for example, emergency sessions are | ||||
in progress). When profile data cannot be applied within the | ||||
recommended timeframe and this affects Client behavior, any actions | ||||
to be taken SHOULD be defined by the profile data definitions. By | ||||
default, the Subscriber is RECOMMENDED to make the profiles effective | ||||
as soon as possible. | ||||
The Subscriber MUST always support "http:" or "https:" and be | ||||
prepared to accept NOTIFY messages with those URI schemas.The | ||||
subscriber MUST also be prepared to receive a NOTIFY request with no | ||||
body. The subscriber MUST NOT reject the NOTIFY request with no | body. The subscriber MUST NOT reject the NOTIFY request with no | |||
body. The subscription dialog MUST NOT be termnated by the NOTIFY | body. The subscription dialog MUST NOT be terminated by a NOTIFY | |||
with no body. | with no body. | |||
The subscriber should maintain the dialog as it was the profile | ||||
delivery server's policy decision to create the dialog. Most | ||||
likely the NOTIFY body is empty because the user or device is not | ||||
provisioned in the profile delivery server. The notifier decided | ||||
to maintain the dialog so that it can NOTIFY the subscribe of the | ||||
availablity of the profile immediately after the user or device | ||||
gets provisioned. If the subscriber ended the dialog after | ||||
receiving the NOTIFY with no body, the subscriber would need to be | ||||
manually provoked to resubscribe. | ||||
7.9. Handling of forked requests | ||||
This event package allows the creation of only one dialog as a result | 6.9. Handling of Forked Requests | |||
of an initial SUBSCRIBE request. The techniques to achieve this are | ||||
described in section 4.4.9 of [RFC3265]. | ||||
7.10. Rate of notifications | ||||
It is anticipated that the rate of change for user and device | ||||
profiles will be very infrequent (i.e. days or weeks apart). For | ||||
this reason no throttling or minimum period between NOTIFY requests | ||||
is specified for this package. | ||||
7.11. State Agents | ||||
State agents are not applicable to this event package. | ||||
7.12. Examples | ||||
Example SUBSCRIBE and NOTIFY request using content indirection: Note: | ||||
The Event and Via header fields are continued on a second line due to | ||||
format constraints of this document. | ||||
SUBSCRIBE sip:MAC%3aFF00000036C5@acme.example.com SIP/2.0 | ||||
Event: ua-profile;profile-type=device;vendor="vendor.example.com"; | ||||
model="Z100";version="1.2.3";network-user="sip:betty@example.com" | ||||
From: sip:MAC%3aFF00000036C5@acme.example.com;tag=1234 | ||||
To: sip:MAC%3aFF00000036C5@acme.example.com | ||||
Call-ID: 3573853342923422@10.1.1.44 | ||||
CSeq: 2131 SUBSCRIBE | ||||
Contact: sip:MAC%3aFF00000036C5@10.1.1.44 | ||||
Via: SIP/2.0/TCP 10.1.1.41; | ||||
branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | ||||
Accept: message/external-body, application/x-z100-device-profile | ||||
Content-Length: 0 | ||||
NOTIFY sip:MAC%3aFF00000036C5@10.1.1.44 SIP/2.0 | ||||
Event: ua-profile;effective-by=3600; | ||||
network-user="sip:betty@example.com" | ||||
From: sip:MAC%3aFF00000036C5@acme.example.com;tag=abcd | ||||
To: sip:MAC%3aFF00000036C5@acme.example.com;tag=1234 | ||||
Call-ID: 3573853342923422@10.1.1.44 | ||||
CSeq: 321 NOTIFY | ||||
Via: SIP/2.0/UDP 192.168.0.3; | ||||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | ||||
MIME-Version: 1.0 | ||||
Content-Type: multipart/mixed; boundary=boundary42 | ||||
Content-Length: ... | ||||
--boundary42 | ||||
Content-Type: message/external-body; | ||||
access-type="URL"; | ||||
expiration="Mon, 24 June 2002 09:00:00 GMT"; | ||||
URL="http://www.example.com/devices/ff00000036c5"; | ||||
size=1234 | ||||
Content-Type: application/x-z100-device-profile | ||||
Content-ID: <39EHF78SA@example.com> | ||||
--boundary42-- | ||||
7.13. Use of URIs to Retrieve State | ||||
The URI for the SUBSCRIBE request is formed differently depending | ||||
upon which profile type the subscription is for. This allows the | ||||
different profile types to be potentially managed by different | ||||
profile delivery servers (perhaps even operated by different | ||||
entities). The To and From field will typically contain the same URI | ||||
as is used in the original SUBSCRIBE request URI. | ||||
7.13.1. Device URIs | ||||
The URI for the "device" type profile (device URI) is based upon the | ||||
identity of the device. The device URI MUST be unique across all | ||||
devices and implementations. If an instance id is used as the user | ||||
part of the device URI, it SHOULD remain the same for the lifetime of | ||||
the user agent. The device URI is used to identify which profile is | ||||
associated with a specific instance of a user agent. | ||||
If the user agent changed its device URI, the profile delivery | ||||
server would not know the association between the profile and the | ||||
device. This would also make it difficult for the profile | ||||
delivery server to track user agents under profile management. | ||||
The profile delivery server may decide to provide the same device | ||||
profile to all devices of the same vendor, model and version. | ||||
However this is a implementation choice of the profile delivery | ||||
server. The subscribing device has no way of knowing whether the | ||||
profiles for each device are different. For this reason the | ||||
device must always use a unique id in the device SUBSCRIBE request | ||||
URI. As an example the device profile for similar devices may | ||||
differ with properties such as the default user. This is how the | ||||
bootstrapping mechanism works as described in Section 8.1.3. | ||||
The URI for the device type profile MUST use a unique identifier as | ||||
the user portion of the URI. The host and port portion of the URI is | ||||
set to that of the domain or address of the profile delivery server | ||||
which manages that user agent. A means of discovering the host and | ||||
port portion is discussed in Section 8.1. There is an administration | ||||
aspect of the unique identifier, that makes it desirable for the id | ||||
to be obtainable or predictable prior to installation of the device | ||||
(hard or soft). Also from a human factors perspective, ids that are | ||||
easily distinguished and communicated will make the administrators | ||||
job a little easier. The MAC address or a UUID [RFC4122] SHOULD be | ||||
used for constructing a unique identifier to be used in the user | ||||
portion of the device URI. | ||||
If the identifier is a MAC address, it MUST be formatted as the | ||||
characters "MAC:" followed by a 12 digit hexadecimal representation | ||||
of the MAC address. The address can not include ":", whitespace, or | ||||
other formatting. | ||||
The MAC address of the device may be used if there will always be | ||||
no more than one user agent using that MAC address over time (e.g. | ||||
a dedicated telephone appliance). The MAC address may not be used | ||||
if more than one user agent instance exists using the same MAC | ||||
address (e.g. multiple instances of a softphone may run on a | ||||
general purpose computing device). The advantage of the MAC | ||||
address is that many vendors put bar codes on the device with the | ||||
actual MAC address on it. A bar code scanner is a convenient | ||||
means of collecting the instance id for input and provisioning on | ||||
the profile delivery server. If the MAC address is used, it is | ||||
recommended that the MAC address is rendered in all upper case | ||||
with no punctuation for consistency across implementations. A | ||||
prefix of "MAC:" should be added to the MAC address to form a | ||||
proper URN [RFC2141]. For example a device managed by | ||||
sipuaconfig.example.com using its MAC address to form the device | ||||
URI might look like: | ||||
sip:MAC%3a00DF1E004CD0@sipuaconfig.example.com. | ||||
UHEX = DIGIT / %x41-46 ;uppercase A-F | ||||
MAC = %x4d.41.43 ; MAC in caps | ||||
mac-ident = MAC ":" 12UHEX | ||||
When the MAC address is not used in the device URI, a UUID [RFC4122] | ||||
for the device SHOULD be used. | ||||
For devices where there is no MAC address or the MAC address is | ||||
not unique to an instance of a user agent (e.g. multiple | ||||
softphones on a computer or a gateway with multiple logical user | ||||
agents) it is RECOMMENDED that a UUID [RFC4122] is used as the | ||||
user portion of the device URI. The same approach to defining a | ||||
user agent instance ID as [I-D.ietf-sip-outbound] should be used. | ||||
When constructing the instance id, the implementer should also | ||||
consider that a human may need to manually enter the instance id | ||||
to provision the device in the profile delivery server (e.g. | ||||
longer strings are more error prone in data entry). When the URN | ||||
is used as the user part of the URI, it MUST be URL escaped. The | ||||
":" is not a legal character (without being escaped) in the user | ||||
part of a addr-spec [RFC4122]. For example the instance ID: | ||||
urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6 would be escaped to | ||||
look as follows in a URI: | ||||
sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com. | ||||
Soft user agents are likely to need to use this approach due to | ||||
the multi-user nature of general purpose computers. The software | ||||
installer program might generate the uuid as part of the install | ||||
process so that it remains persistent for the installation. It | ||||
may also be desirable that any upgrades of the software maintain | ||||
the unique id. However these are all implementation choices. | ||||
7.13.2. User URIs | ||||
The URI for the "user" type profile is based upon the identity of the | ||||
user. It is an administration policy on how user profile identities | ||||
are assigned. Typically the user's address of record (AOR) is used | ||||
as the URI in the SUBSCRIBE request. A new user agent or device may | ||||
not know the user's AOR. The user's AOR may be obtained as part of a | ||||
default user property in the device profile. Alternatively the user | ||||
agent may prompt the user for an AOR and credentials to be used to | ||||
authenticate the request. This can provide a login and/or hotelling | ||||
feature on the user agent. The user agent may be pre-provisioned | ||||
with the user's AOR or provided as information on a SIM or flash key. | ||||
These are only examples and not an exhaustive list of sources for the | ||||
user AOR. | ||||
7.13.3. Local Network URIs | This Event package allows the creation of only one dialog as a result | |||
of an initial SUBSCRIBE request as described in section 4.4.9 of | ||||
[RFC3265]. It does not support the creation of multiple | ||||
subscriptions using forked SUBSCRIBE requests. | ||||
The URI for the "local-network" type profile is based upon the | 6.10. Rate of Notifications | |||
identity of the local network. When subscribing to the local network | ||||
profile, the user part of the SUBSCRIBE request URI SHOULD NOT be | ||||
provided. The From field user part of the SUBSCRIBE request SHOULD | ||||
be the same device ID used as the user part of the device profile | ||||
SUBSCRIBE request URI defined in Section 7.13.1. The host and port | ||||
part of the request URI and From field is the local network name/ | ||||
domain. The discovery of the local network name or domain is | ||||
discussed in Section 8.1. The user agent may provide the user's AOR | ||||
as the value to the "network-user" event header parameter. This is | ||||
useful if the user has privileges in the local network beyond those | ||||
of the default user. When "network-user" is provided the profile | ||||
delivery server SHOULD authenticate the user before providing the | ||||
profile if additional privileges are granted. Example URI: sip: | ||||
example.com | ||||
The local network profile SUBSCRIBE request URI does not have a | The rate of notifications for the profiles in this framework is | |||
user part so that the URI is distinct between the "local" and | deployment specific, but expected to be infrequent. Hence, the Event | |||
"device" URIs when the domain is the same for the two. This | Package specification does not specify a throttling or minimum period | |||
provides a means of routing to the appropriate profile delivery | between NOTIFY requests | |||
server in domains where they are distinct servers. The From field | ||||
uses the device ID in the user part of the local network request | ||||
URI so that every device in the network has a unique and constant | ||||
From field. Even though every device may get the same or similar | ||||
local network profiles, the uniqueness of the From field provides | ||||
an important capability. Having unique From fields allows the | ||||
management of the local network to track user agents present in | ||||
the network and consequently also manage resources such as | ||||
bandwidth and port allocation. | ||||
8. Profile Delivery Framework Details | 6.11. State Agents | |||
The following describes how different functional steps of the profile | State agents are not applicable to this Event Package. | |||
delivery framework work. Also described here is how the event | ||||
package defined in this document provides the enrollment and | ||||
notification functions within the framework. | ||||
8.1. Discovery of Subscription URI | 7. Examples | |||
The discovery approach varies depending upon which profile type URI | This section provides examples along with sample SIP message bodies | |||
is to be discovered. The order of discovery is important in the | relevant to this framework. Both the examples are derived from a | |||
bootstrapping situation as the user agent may not have any | snapshot of Section 4.1, specifically the request for the Device | |||
information provisioned. The local network profile should be | Profile. The examples are purely informative and in case of | |||
discovered first as it may contain key information such as how to | conflicts with the framework or protocols used for illustration, the | |||
traverse a NAT/firewall to get to outside services (e.g. the user's | latter should be deemed normative. | |||
profile delivery server). The device profile URI should be | ||||
discovered next. The device profile may contain the default user's | ||||
AOR or firmware/software information that should be updated first | ||||
before proceeding with the discovery process. The user profile | ||||
subscription URI should be discovered last. The URIs are formed | ||||
differently for each of the profile types. This is to support the | ||||
delegation of the profile management to potentially three different | ||||
entities. However all three profile types may be provided by the | ||||
same entity. As the user agent has no way of knowing whether the | ||||
profiles are provide by one or more different profile delivery | ||||
servers ahead of time, it must subscribe to all three profile types | ||||
in separate SUBSCRIBE requests to get the profiles. | ||||
8.1.1. Discovery of Local Network URI | 7.1. Example 1: Client requesting profile | |||
The "discovered" host for the "local-network" profile subscription | This example illustrates the detailed message flows between the | |||
URI is the local IP network domain for the user agent, either | Client and the SIP Service Provider's network for requesting and | |||
provisioned as part of the device's static network configuration or | retrieving the profile (the flow uses the Device Profile as an | |||
discovered via DHCP [RFC2131](option 15 [RFC2132]). The local | example). | |||
network profile subscription URI SHOULD not be remembered if the user | ||||
agent moves from one local network to another other. The user agent | ||||
should perform the local network discovery to construct the network | ||||
profile subscription request URI every time it starts up or network | ||||
connectivity is regained. | ||||
For example: The user agent requested and received the local | The following are assumed for this example: | |||
domain name via DHCP: airport.example.net. If the device ID is: | ||||
MAC:00DF1E004CD0, the local network profile SUBSCRIBE request URI | ||||
would look like: sip:MAC%3a00DF1E004CD0@airport.example.net. The | ||||
user agent should send this request using the normal SIP locating | ||||
mechanisms defined in [RFC3263]. The Event header would look like | ||||
the following if the user agent decided to provide | ||||
sip:alice@example.com as the user's AOR. (Alice may have a prior | ||||
arrangement with the local network operator giving her special | ||||
privileges.): | ||||
Event: ua-profile;profile-type=local-network; | o Client is assumed to have established local network connectivity; | |||
network-user="sip:alice@example.com" | NAT and Firewall considerations are assumed to have been addressed | |||
by the SIP Service Provider | ||||
o examples are a snapshot only and do not illustrate all the | ||||
interactions between the Client and the Service Provider's network | ||||
(and none between the entities in the SIP Service Provider's | ||||
network) | ||||
o All SIP communication with the SIP Service Provider happens via a | ||||
SIP Proxy | ||||
o HTTP is assumed to be the Profile Data method used (any suitable | ||||
alternative can be used as well) | ||||
o TLS is assumed to be the protocol for securing the Profile | ||||
Retrieval (any other suitable protocol can be employed); | ||||
authentication and security requirements are not addressed | ||||
8.1.2. Discovery of Device URI | The flow diagram and an explanation of the messages follow. | |||
The discovery function is needed to bootstrap user agents to the | +----------------------+ | |||
point of knowing where to enroll with the profile delivery server. | +--------+ | SIP Service Provider | | |||
Section 7.13.1 describes how to form the user part of the device | | Client | | | | |||
profile SUBSCRIBE request URI used for enrollment. However the | |(SIP UA)| | SIP PDS HTTP | | |||
bootstrapping problem for the user agent (out of the box) is what to | +--------+ | PROXY Server | | |||
use for the host and port in the device URI. Due to the wide | | | | |||
variation of environments in which the enrolling user agent may | +----------------------+ | |||
reside (e.g. behind residential router, enterprise LAN, WLAN hotspot, | | | | | | |||
ISP, dialup modem) and the limited control that the administrator of | | | | | | |||
the profile delivery server (e.g. enterprise, service provider) may | | SUBSCRIBE | | | | |||
have over that environment, no single discovery mechanism works | (SReq)|--------device profile--------->| | | | |||
everywhere. | | |------>| | | |||
| |200 OK | | | ||||
| 200 OK |<------| | | ||||
(SRes)|<-------------------------------| | | | ||||
| | | | | ||||
| | NOTIFY| | | ||||
| NOTIFY (Content Indirection)|<------| | | ||||
(NTFY)|<-------------------------------| | | | ||||
| 200 OK | | | | ||||
(NRes)|------------------------------->|200 OK | | | ||||
| |------>| | | ||||
| | | ||||
| | | ||||
| | | ||||
|<<<<<<<<<<<<< TLS establishment >>>>>>>>>>>>>| | ||||
| | | ||||
| HTTP Request | | ||||
(XReq)|---------------------------------------------->| | ||||
| | | ||||
| HTTP Response | | ||||
(XRes)|<----------------------------------------------| | ||||
| | | ||||
Therefore a number of mechanisms should be tried in the specified | (SReq) | |||
order: SIP DHCP option [RFC3361], SIP DNS SRV [RFC3263], DNS A record | ||||
and manual. The user agent may be pre-provisioned with the host and | ||||
port (e.g. service providers may pre-provision a device before | ||||
sending it to a subscriber, provide a SIM or flash key, etc.) in | ||||
which case this discovery mechanism is not needed. Before performing | ||||
the discovery steps, the user agent should provide a means to skip | ||||
the discovery stage and manually enter the device URI host and port. | ||||
In addition, the user agent should allow the user to accept or reject | ||||
the discovered host and port in case an alternative to the discovered | ||||
host and port is desired. | ||||
1. The first discovery mechanism for the device SUBSCRIBE request | the Client transmits a request for the 'device' profile using the | |||
URI Section 7.13.1 is to use the host and port of the outbound | SIP SUBSCRIBE utilizing the Event Package specified in this | |||
proxy discovered by the SIP DHCP option 120 [RFC3361]. If the | framework. | |||
SIP DHCP option is not provided in the DHCP response or if the | ||||
SUBSCRIBE request to the ua-profile event receives no response or | ||||
a failure response other than for authentication, the next | ||||
discovery mechanism should be tried. | ||||
For example: Consider a dedicated hardware device with a | * Note: Some of the header fields (for example, Event, via) are | |||
single user agent having the MAC address: abc123efd456. The | continued on a separate line due to format constraints of | |||
user agent sends a DHCP request including the request for the | this document | |||
DHCP option for SIP: 120 (see [RFC3361]). If the DHCP | SUBSCRIBE sip:MAC%3a000000000000@sip.example.net SIP/2.0 | |||
response includes an answer for option 120, then the DNS name | Event: ua-profile;profile-type=device;vendor="vendor.example.net"; | |||
or IP address included is used in the host part of the device | model="Z100";version="1.2.3";network-user="sip:user@sip.example.net" | |||
URI. For this example let's assume: example.com. The device | From: sip:MAC%3A000000000000@sip.example.net;tag=1234 | |||
URI would look like: sip:MAC%3aABC123EFD456@example.com. The | To: sip:MAC%3A000000000000@sip.example.net | |||
user agent should send this request using the normal SIP | Call-ID: 3573853342923422@10.1.1.44 | |||
locating mechanisms defined in [RFC3263]. If the response | CSeq: 2131 SUBSCRIBE | |||
fails then, the next discovery mechanism is tried. | Contact: sip:MAC%3A000000000000@sip.example.net | |||
Via: SIP/2.0/TCP 10.1.1.41; | ||||
branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | ||||
Accept: message/external-body, application/x-z100-device-profile | ||||
Content-Length: 0 | ||||
2. The local IP network domain for the user agent, either configured | (SRes) | |||
or discovered via DHCP option 15, should be used with the | ||||
technique in [RFC3263] to obtain a host and port to use in the | ||||
SUBSCRIBE URI. If no SIP response or a SIP failure response | ||||
other than for authorization is received for the SUBSCRIBE | ||||
request to the ua-profile event, the next discovery mechanism | ||||
should be tried. | ||||
For example: The user agent requested and received the local | the SUBSCRIBE request is received by a SIP Proxy in the Service | |||
domain name (option 15 [RFC2132]) in the DHCP response: | Provider's network which transmits it to the PDS. The PDS accepts | |||
boston.example.com. The device URI would look like: | the response and responds with a 200 OK | |||
sip:MAC%3aABC123EFD456@boston.example.com. The user agent | * Note: The Client and the SIP proxy may have established a | |||
should send this request using the normal SIP locating | secure communications channel (for example, TLS) | |||
mechanisms defined in [RFC3263]. If the response fails then, | ||||
the next discovery mechanism is tried. | ||||
3. The fully qualified host name constructed by concatenating | (NTFY) | |||
"sipuaconfig" and the local IP network domain (as provided via | ||||
DHCP option 15 or provisioned) should be tried next using the | ||||
technique in [RFC3263] to obtain a host and port to use in the | ||||
SUBSCRIBE URI. If no SIP response or a SIP failure response | ||||
other than for authorization is received for the SUBSCRIBE | ||||
request to the ua-profile event, the next discovery mechanism | ||||
should be tried. | ||||
For example: The user agent requested and received the local | subsequently, the PDS transmits a SIP NOTIFY message indicating | |||
domain name via DHCP as in the above example: | the profile location | |||
boston.example.com. The device URI would look like: | * Note: Some of the fields (for example, content-type) are | |||
sip:MAC%3aABC123EFD456@sipuaconfig.boston.example.com. The | continued on a separate line due to format constraints of this | |||
user agent should send this request using the normal SIP | document | |||
locating mechanisms defined in [RFC3263]. If the response | NOTIFY sip:MAC%3A000000000000@10.1.1.44 SIP/2.0 | |||
fails then, the next discovery mechanism is tried. | Event: ua-profile;effective-by=3600 | |||
From: sip:MAC%3A000000000000@sip.example.net;tag=abca | ||||
To: sip:MAC%3A000000000000@sip.example.net;tag=1231 | ||||
Call-ID: 3573853342923422@10.1.1.44 | ||||
CSeq: 322 NOTIFY | ||||
Via: SIP/2.0/UDP 192.168.0.3; | ||||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d0 | ||||
MIME-Version: 1.0 | ||||
Content-Type: message/external-body; access-type="URL"; | ||||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | ||||
URL="http://sip.example.net/z100-000000000000.html"; | ||||
size=9999 | ||||
hash=10AB568E91245681AC1B | ||||
4. If all other discovery techniques fail, a manual means for the | Content-Type: application/x-z100-device-profile | |||
user to enter the host and port used to construct the SUBSCRIBE | Content-ID: <39EHF78SA@sip.example.net> | |||
request URI MUST be provided by the user agent. | . | |||
. | ||||
. | ||||
Two approaches to the manual discovery process are suggested. In the | (NRes) | |||
first approach using SIP, the user agent provides a means for | ||||
entering the subscription host and port information for the request | ||||
URI along with the user id and password to be used for authentication | ||||
of the SUBSCRIBE request. With this approach the user agent begins | ||||
with the enrollment process followed by the change notification and | ||||
profile retrieval steps. | ||||
An alternative to the manual discovery using SIP, is to start with | Client accepts the NOTIFY message and responds with a 200 OK | |||
the retrieve process. The user agent provides a means of entering a | ||||
HTTPS URI along with the user id and password to be used for | ||||
authentication of the retrieval of the profile. The retrieved device | ||||
profile may contain the properties for the SUBSCRIBE request URI and | ||||
credentials to enroll and get change notification of profile changes. | ||||
This approach bootstraps the process in a different step in the | ||||
cycle, but uses the same profile framework. When the device starts | ||||
with retrieval of the profile via HTTPS (instead of a SIP SUBSCRIBE | ||||
to the event package), the device MUST provide the Event header in | ||||
the HTTPS request using the same format as described for the | ||||
SUBSCRIBE request (see Section 7.2) . The Event header is necessary | ||||
to determine which profile is requested as well as for providing | ||||
specific information about the device. | ||||
This document defines a new HTTP request header "Event". The syntax | (XReq) | |||
of the HTTP Event header is the same as the SIP Event header defined | ||||
in this document. The purpose of the HTTP Event header, just like | ||||
the SIP Event header is to define the content of the state | ||||
information to be retrieved. In particular, the state information is | ||||
the device, user or local network profile for the device. The SIP | ||||
Event header parameters for this event package ("profile-type", | ||||
"vendor", "model", "version") are also manditory for the HTTP Event | ||||
header as they are used to provide information as to what profile | ||||
type is requested along with information about the device which may | ||||
impact the contents of the profile. | ||||
Once a user agent has been successfully discovered, enrolled and | once the necessary secure communications channel is established, | |||
received a NOTIFY response with profile data or URI(s), the user | the Client sends an HTTP request to the HTTP server indicated in | |||
agent should cache (i.e. store persistently) the device profile | the NOTIFY | |||
SUBSCRIBE request URI (rather than reconstructing it as described in | ||||
the discovery process every time the device is restarted) to avoid | ||||
having to rediscover the profile delivery server again in the future. | ||||
Caching of the device URI is necessary when the user agent is likely | ||||
to move to different local network domains as the local network may | ||||
not be the provider for the device's profile. The user agent should | ||||
not cache the device URI until it receives a NOTIFY with profile data | ||||
or URI(s). The reason for this is that a profile delivery server may | ||||
send 202 responses to SUBSCRIBE requests and NOTIFY responses to | ||||
unknown user agent (see Section 7.6) with no profile data or URIs. | ||||
Until the profile delivery server has sent a NOTIFY request with | ||||
profile data or URI(s), it has not agreed to provide profiles. | ||||
To illustrate why the user agent should not cache the device | (XRes) | |||
profile SUBSCRIBE URI until profile data or URI(s) are provided in | ||||
the NOTIFY, consider the following example: a user agent running | ||||
on a laptop plugged into a visited LAN in which a foreign profile | ||||
delivery server is discovered. The profile delivery server never | ||||
provides profile URIs in the NOTIFY request as it is not | ||||
provisioned to accept the user agent. The user then takes the | ||||
laptop to their enterprise LAN. In this example, the user agent | ||||
cached the SUBSCRIBE URI from the visited LAN which did not | ||||
provide profiles. When the UA is subsequently placed in the | ||||
enterprise LAN which is provisioned to provide profiles to the | ||||
user agent, the user agent would not attempt to discover the | ||||
profile delivery server. | ||||
8.1.3. Discovery of User URI | the HTTP server responds to the request via a HTTP response | |||
containing the profile contents | ||||
The user's AOR may be pre-provisioned or provided via SIM or flash | 7.2. Example 2: Client obtaining change notification | |||
key, etc. The device profile may define a default user and AOR. If | ||||
provided in the device profile and a pre-provisioned user AOR is not | ||||
provided, the default user's AOR is used to subscribe to the "user" | ||||
profile. If not provided through the above two approaches, the AOR | ||||
to be used for the "user" subscription URI, is "discovered" manually | ||||
by prompting the user. The URI obtained in the discovery steps | ||||
described above for the "user" profile subscription is stored | ||||
persistently in the device until explicitly reset or updated by the | ||||
user or profile. | ||||
8.2. Enrollment with Profile Server | The following example illustrates the case where a User (X) is | |||
simultaneously accessing services via two different Clients (for | ||||
example, Multimedia Soft Clients on a PC and PDA) and has access to a | ||||
User Interface (UI) that allows for changes to the User profile. | ||||
Enrollment is accomplished by subscribing to the event package | The following are assumed for this example: | |||
described in Section 7. The enrollment process is useful to the | ||||
profile delivery server as it makes the server aware of user agents | ||||
to which it may deliver profiles. These include user agents that the | ||||
profile delivery server is provisioned to provide profiles to, those | ||||
present to which the server may provide profiles in the future, and | ||||
those that the server can automatically provide default profiles. It | ||||
is an implementation choice and business policy as to whether the | ||||
profile delivery server provides profiles to user agents that it is | ||||
not explicitly provisioned to do so. However the profile delivery | ||||
server SHOULD accept (with 2xx response) SUBSCRIBE requests from any | ||||
user agent as explained in Section 7.5. | ||||
8.3. Notification of Profile Changes | o The Clients (A & B) obtain the necessary profiles from the same | |||
SIP Service Provider | ||||
o The SIP Service Provider also provides a User Interface (UI) that | ||||
allows the User to change preferences that impact the User profile | ||||
The NOTIFY request in the ua-profile event package serves two | The flow diagram and an explanation of the messages follow. | |||
purposes. First it provides the user agent with a means to obtain | o Note: The example only shows retrieval of User X's profile, but it | |||
the profile data directly or via URI(s) for desired profiles without | may request and retrieve other profiles (for example, local- | |||
requiring the end user to manually enter them. It also provides the | network, Client). | |||
means for the profile delivery server to notify the user agent that | ||||
the content of the profiles has changed and should be made effective. | ||||
Optionally the differential changes may be obtained by notification | ||||
by including the content-type: "application/xcap-diff+xml" defined in | ||||
[I-D.ietf-simple-xcap-diff] in the Accept header of the SUBSCRIBE | ||||
request. | ||||
8.4. Retrieval of Profile Data | ----- ----- | |||
|User |_________| UI* | * = User Interface | ||||
| X | | | | ||||
----- ----- | ||||
/ \ | ||||
/ \ | ||||
/ \ +----------------------+ | ||||
+--------+ +--------+ | SIP Service Provider | | ||||
| Client | | Client | | | | ||||
| A | | B | | SIP PDS HTTP | | ||||
+--------+ +--------+ | PROXY Server | | ||||
+----------------------+ | ||||
| | | | | ||||
| | | | | ||||
(A-EX)|<=Enrolls for User X's profile=>|<=====>| | | ||||
| | | | | ||||
| | | ||||
(A-RX)|<===Retrieves User X's profile================>| | ||||
| | | ||||
| | | | | | ||||
| | Enrolls for | | | | ||||
| (B-EX)|<== User X's ==>|<=====>| | | ||||
| | profile | | | | ||||
| | | | | | ||||
| | | | ||||
| (B-RX)|<= Retrieves User X's profile=>| | ||||
| | | ||||
| | | | ||||
| (HPut)|---------------------->| | ||||
| | | | ||||
| (HRes)|<----------------------| | ||||
| | | ||||
| | | | | ||||
| | NOTIFY| | | ||||
| NOTIFY |<------| | | ||||
(A-NT)|<-------------------------------| | | | ||||
| 200 OK | | | | ||||
(A-RS)|------------------------------->|200 OK | | | ||||
| |------>| | | ||||
| | | ||||
| | | NOTIFY| | | ||||
| | NOTIFY |<------| | | ||||
| (B-NT)|<---------------| | | | ||||
| | 200 OK | | | | ||||
| (B-RS)|--------------->|200 OK | | | ||||
| | |------>| | | ||||
| | | ||||
| | | ||||
(A-RX)|<===Retrieves User X's profile================>| | ||||
| | | ||||
| | | | ||||
| | | | ||||
| (B-RX)|<= Retrieves User X's profile=>| | ||||
| | | | ||||
The user agent retrieves its needed profile(s) directly or via the | (A-EX) Client A discovers, enrolls and obtains notification related | |||
URI(s) provided in the NOTIFY request as specified in Section 7.5. | to User X's profile | |||
The profile delivery server SHOULD secure the content of the profiles | (A-RX) Client A retrieves User X's profile | |||
using one of the techniques described in Section 10. The user agent | (B-EX) Client B discovers, enrolls and obtains notification related | |||
SHOULD make the new profiles effective in the timeframe described in | to User X's profile | |||
Section 7.2. | (B-RX) Client B retrieves User X's profile | |||
(HPut) Changes affected by the User via the User Interface (UI) are | ||||
uploaded to the HTTP Server | ||||
* Note: The UI itself can act as a Client and subscribe to User | ||||
X's profile. This is not the case in the example shown. | ||||
(HRes) Changes are accepted by the HTTP server | ||||
(A-NT) PDS transmits a NOTIFY message to Client A indicating the | ||||
changed profile. A sample message is shown below: | ||||
Note: Some of the fields (for example, Via) are continued on a | ||||
separate line due to format constraints of this document | ||||
NOTIFY sip:userX@10.1.1.44 SIP/2.0 | ||||
Event: ua-profile;effective-by=3600 | ||||
From: sip:userX@sip.example.net;tag=abcd | ||||
To: sip:userX@sip.example.net.net;tag=1234 | ||||
Call-ID: 3573853342923422@10.1.1.44 | ||||
CSeq: 322 NOTIFY | ||||
Via: SIP/2.0/UDP 192.168.0.3; | ||||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | ||||
MIME-Version: 1.0 | ||||
Content-Type: message/external-body; access-type="URL"; | ||||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | ||||
URL="http://www.example.com/user-x-profile.html"; | ||||
size=9999 | ||||
hash=123456789AAABBBCCCDD | ||||
. | ||||
. | ||||
. | ||||
The contents of the profiles SHOULD be cached (i.e. stored | (A-RS) Client A accepts the NOTIFY and sends a 200 OK | |||
persistently) by the user agent. The cache should be used if the | (B-NT) PDS transmits a NOTIFY message to Client B indicating the | |||
user agent is unable to successfully SUBSCRIBE or receive the NOTIFY | changed profile. A sample message is shown below: | |||
providing the most recent profile. The cached profile should be | Note: Some of the fields (for example, Via) are continued on a | |||
replaced each time a profile is received in a NOTIFY or retrieved via | separate line due to format constraints of this document | |||
content indirection. This it to avoid the situation where the | ||||
content delivery server being not available, leaves the user agent | ||||
non-functional. The user agent should verify that it has the latest | ||||
profile content using the "hash" parameter defined in [I-D.ietf-sip- | ||||
content-indirect-mech]. | ||||
8.5. Upload of Profile Changes | NOTIFY sip:userX@10.1.1.43 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | ||||
From: sip:userX@sip.example.net;tag=abce | ||||
To: sip:userX@sip.example.net.net;tag=1235 | ||||
Call-ID: 3573853342923422@10.1.1.43 | ||||
CSeq: 322 NOTIFY | ||||
Via: SIP/2.0/UDP 192.168.0.3; | ||||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d2 | ||||
MIME-Version: 1.0 | ||||
Content-Type: message/external-body; access-type="URL"; | ||||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | ||||
URL="http://www.example.com/user-x-profile.html"; | ||||
size=9999 | ||||
hash=123456789AAABBBCCCDD | ||||
. | ||||
. | ||||
. | ||||
The user agent or other service MAY push changes up to the profile | (B-RS) Client B accepts the NOTIFY and sends a 200 OK | |||
delivery server using the technique appropriate to the profile's URI | (A-RX) Client A retrieves the updated profile pertaining to User X | |||
scheme (e.g. HTTP PUT method, FTP put command). The technique for | (B-RX) Client B retrieves the updated profile pertaining to User X | |||
pushing incremental or atomic changes MUST be described by the | ||||
specific profile data framework. A means for pushing changes up into | ||||
the profile delivery server for XCAP is defined in [I-D.ietf-simple- | ||||
xcap]. | ||||
9. IANA Considerations | 8. IANA Considerations | |||
There are several IANA considerations associated with this | There are two IANA considerations associated with this document, SIP | |||
specification. | Event Package and HTTP header. These are outlined in this section. | |||
9.1. SIP Event Package | 8.1. SIP Event Package | |||
This specification registers a new event package as defined in | This specification registers a new event package as defined in | |||
[RFC3265]. The following information required for this registration: | [RFC3265]. The following information required for this registration: | |||
Package Name: ua-profile | Package Name: ua-profile | |||
Package or Template-Package: This is a package | Package or Template-Package: This is a package | |||
Published Document: RFC XXXX (Note to RFC Editor: Please fill in | Published Document: RFC XXXX (Note to RFC Editor: Please fill in | |||
XXXX with the RFC number of this specification). | XXXX with the RFC number of this specification). | |||
Person to Contact: Daniel Petrie dan.ietf AT SIPez DOT com | Persons to Contact: Daniel Petrie dan.ietf AT SIPez DOT com, | |||
sumanth@cablelabs.com | ||||
New event header parameters: profile-type, vendor, model, version, | New event header parameters: profile-type, vendor, model, version, | |||
effective-by, network-user | effective-by, network-user (the profile-type parameter has | |||
The profile-type parameter has predefined values. The other new | predefined values. The new event header parameters do not) | |||
event header parameters do not. | ||||
The following table illustrates the additions to the IANA SIP Header | The following table illustrates the additions to the IANA SIP Header | |||
Field Parameters and Parameter Values: (Note to RFC Editor: Please | Field Parameters and Parameter Values: (Note to RFC Editor: Please | |||
fill in XXXX with the RFC number of this specification) | fill in XXXX with the RFC number of this specification) | |||
Predefined | Predefined | |||
Header Field Parameter Name Values Reference | Header Field Parameter Name Values Reference | |||
---------------------------- --------------- --------- --------- | ---------------------------- --------------- --------- --------- | |||
Event profile-type Yes [RFCXXXX] | Event profile-type Yes [RFCXXXX] | |||
Event vendor No [RFCXXXX] | Event vendor No [RFCXXXX] | |||
Event model No [RFCXXXX] | Event model No [RFCXXXX] | |||
Event version No [RFCXXXX] | Event version No [RFCXXXX] | |||
Event effective-by No [RFCXXXX] | Event effective-by No [RFCXXXX] | |||
Event network-user No [RFCXXXX] | Event network-user No [RFCXXXX] | |||
9.2. New HTTP Event Header | 8.2. New HTTP Event Header | |||
This document defines a new permanent HTTP request header field: | This document defines a new permanent HTTP request header field: | |||
Event | Event. | |||
Header field name: Event | Header field name: Event | |||
Applicable protocol: http | Applicable protocol: http | |||
Status: standard | Status: standard | |||
Author/Change controller: IETF | Author/Change controller: IETF | |||
Specification document(s): [RFCXXXX] (Note to RFC Editor: Please | Specification document(s): [RFCXXXX] (Note to RFC Editor: Please | |||
fill in XXXX with the RFC number of this specification). | fill in XXXX with the RFC number of this specification). | |||
10. Security Considerations | 9. Security Considerations | |||
Profiles may contain sensitive data such as user credentials and | ||||
personal information. The protection of this data depends upon how | ||||
the data is delivered. Some profiles may be safe to deliver without | ||||
the need to protect the content. For example in some environments | ||||
the local network profile may contain the list of codecs that are | ||||
acceptable for use in the network and information on NAT traversal | ||||
such as a STUN server to use. As the information in this example | ||||
local network profile does not contain passwords or sensitive | ||||
information it may be acceptable to provide it without authentication | ||||
or confidentiality (encryption). We refer to these as non- | ||||
confidential profiles. Non-confidential profiles require message | ||||
integrity and profile server authentication, as described in | ||||
Section 10.3. However any profiles that contain personal | ||||
information, passwords or credentials (confidential profiles) require | ||||
mutual authentication, confidentiality, and message integrity, and | ||||
must follow the guidance provided in the next two subsections. | ||||
Profile specifications that define schemas MUST identify if they | ||||
contain confidential data to indicate which of the security | ||||
approaches described here should be used. | ||||
The profile data is delivered in either the NOTIFY request or via the | The framework specified in this document allows Service Providers to | |||
URI scheme indicated in the content indirection in the NOTIFY | propagate profile data to Clients. This is accomplished by requiring | |||
request. The security approach is different for these two delivery | deployed Clients to implement the framework. The framework | |||
mechanisms. | (explained in Section 5) specifies a Profile Life Cycle that allows | |||
Clients to request and obtain profile data. The Profile Life Cycle | ||||
is enabled using an Event Package (defined in Section 6) as per | ||||
[RFC3265]. Thus, the primary components requiring security | ||||
considerations are: Event Package, Profile Life Cycle and Profile | ||||
Data. The considerations, requirements and recommendations are | ||||
presented in the following sub-sections. | ||||
Subscribers implementing this specification MUST implement either | 9.1. Event Package | |||
HTTP or HTTPS. Subscribers also MUST implement the hash verification | ||||
scheme described in SIP content indirection [I-D.ietf-sip-content- | ||||
indirect-mech]. SIP profile delivery servers MUST implement both | ||||
HTTP and HTTPS, and SHOULD implement a SIP Authentication Service as | ||||
described in the SIP Identity mechanism [I-D.ietf-sip-identity]. All | ||||
SIP entities are already required to implement SIP Digest | ||||
authentication [RFC3261]. | ||||
10.1. Confidential Profile Content in NOTIFY Request | The Event Package usage MUST adhere to the security considerations | |||
and requirements (access control, Notifier privacy mechanism, Denial- | ||||
of-Service attacks, replay attacks, and Man-in-the Middle attacks) | ||||
specified in Section 5 of [RFC3265]. Specifically for the Event | ||||
Package defined in this framework, this sub-section hightlights | ||||
additional considerations and security requirements. | ||||
When the profile data is delivered directly in the NOTIFY request, | The Notifier MUST authenticate any SUBSCRIBE request with a known | |||
the SUBSCRIBE request MUST be authenticated using the SIP Digest | identity. It MUST NOT accept any SUBSCRIBE requests that fail an | |||
authentication mechanism. As the profile content is delivered in the | authentication challenge. Refer to [I-D.ietf-sip-identity] and | |||
resulting NOTIFY request to the subscription, authenticating the | [RFC3261] for RECOMMENDED SIP authentication methods. | |||
SUBSCRIBE is the only way to prevent unauthorized access to the | ||||
profile data. To provide message integrity and confidentiality over | ||||
the profile data, a direct TLS connection MUST be established for the | ||||
SUBSCRIBE request. The device SHOULD authenticate the server via the | ||||
TLS connection, which also provides a means of verifying (as | ||||
described in [RFC3261]) that a direct TLS connection was used (e.g. | ||||
The device may prompt the user to verify the SubjectAltName in the | ||||
server's certificate.). The server may challenge the device for its | ||||
certificate, when establishing the TLS connection, to obtain the | ||||
public key to use to S/MIME encode the NOTIFY request body containing | ||||
the profile data. Because the device verified that it has a direct | ||||
TLS connection by verifying the server's certificate and the server | ||||
verified the identity of the device using Digest Authentication, the | ||||
server can assume the certificate provided by the device is | ||||
authenticated. The use of S/MIME in the NOTIFY request does not | ||||
relieve the need to authenticate the SUBSCRIBE request using SIP | ||||
Digest authentication. In this scenario S/MIME only provides message | ||||
integrity and confidentiality of the content of the profile. If | ||||
S/MIME is not used for the profile data in the NOTIFY request, the | ||||
notifier MUST use the same direct TLS connection established by the | ||||
device for the SUBSCRIBE request to send the notification. In this | ||||
scenario the use of a user-specific ID and secret for Digest | ||||
Authentication can be used to establish an association between the | ||||
user ID and the device ID provided in the device profile SUBSCRIBE | ||||
request. | ||||
10.2. Confidential Profile Content via Content Indirection | Unless configured otherwise, the Notifier SHOULD NOT respond to | |||
SUBSCRIBEs without an identity that can be authenticated. Exceptions | ||||
include deployments catering to unknown Clients (for example, for | ||||
self-subscription) or for troubleshooting (for example, credentials | ||||
misplaced by a user). Refer to Section 9.3 for Profile Data | ||||
considerations in such cases. | ||||
When the profile data is delivered via content indirection, | The Notifier MUST transmit NOTIFY messages with sensitive profile | |||
authentication, integrity, confidentiality are all provided in the | data over an authenticated, integrity protected channel. Refer to | |||
profile indirection retrieval scheme. When content indirection is | Section 9.3 for information on profile data classification. It | |||
used, the SUBSCRIBE request does not need to be authenticated. There | SHOULD transmit Content Indirection information (without profile | |||
is a TLS certificate approach and a Digest Authentication approach | data) over an integrity-protected channel, unless configured | |||
which may be used to provide the required security. The profile | otherwise (for example, if the Service Provider is catering to | |||
delivery server MUST support both of these methods. The device MUST | unknown Clients). For data provided via content indirection, | |||
support the Digest Authentication method to provide minimal | Subscribers MUST implement the hash verification scheme described in | |||
interoperability. | [RFC4483]. | |||
For the TLS certificate approach, the device requests the profile | Subscribers with the ability to authenticate a PDS (for example, | |||
using HTTPS. To provide authentication, the server challenges the | Service Provider Certificates, mutual shared secrets) MUST employ | |||
device for its certificate. The server obtains the user part of the | such mechanisms prior to retrieving data. This framework RECOMMENDS | |||
SIP URI in the Subject Alternative Name field of the device's | that Service Providers consider providing this ability to deployed | |||
certificate. The user part of the SIP URI in the device's | Clients. | |||
certificate is used as the device ID to authenticate if the device is | ||||
authorized to retrieve the specified profile. The device | ||||
certificates chain of authorities MUST also be verified. This | ||||
approach for providing security requires that the device ID and | ||||
associated user are provisioned for authentication as part of the | ||||
content indirection retrieval. | ||||
For the Digest Authentication approach, HTTPS SHOULD be used to | 9.2. Profile Life Cycle | |||
provide confidentiality of the profile data. HTTP Digest | ||||
Authentication [RFC2617] MUST be used to authenticate and authorize | ||||
the device to retrieve the profile. The shared secret used in the | ||||
Digest Authentication is provided through out of band means to the | ||||
device or user of the device. The same credentials used for SIP | ||||
Digest authentication (e.g. authentication of SIP SUBSCRIBE and | ||||
REGISTER requests) are used in the HTTPS request. Other URI schemes | ||||
may be used, but are not defined in this document. A non-replayable | ||||
authentication mechanism such as Digest authentication MUST be used | ||||
for the content indirection URI scheme which provides the profile | ||||
data (e.g. LDAP, HTTP and HTTPS all support Digest authentication). | ||||
URI schemes which provide no authentication or only clear-text | ||||
authentication SHOULD NOT be used for profile delivery as they are | ||||
vulnerable to replay attacks (e.g. TFTP does not provide | ||||
authentication). | ||||
Without a suitable authentication mechanism, the content | Profile Discovery involves various protocols such as DHCP and DNS | |||
indirection profile delivery URI scheme is susceptible to replay | that may provide unauthenticated information. Thus, successful | |||
attacks. Even if the profile is symmetrically encrypted, if it | Profile Enrollment and subsequent Profile Notification with an | |||
can be retrieved through a replay attack, the encrypted profile | authenticated PDS (for example, via mutual authentication) are | |||
can be used for offline attacks to crack the encryption key. | required to prevent threats such as impersonation or Denial of | |||
Service. Given the nature of these mechanisms and to prevent service | ||||
disruption due to such threats, the specification recommends caching | ||||
of retrieved profiles (see Section 5.4) by the Clients. It also | ||||
provides for multiple Profile Discovery mechanisms (based on Profile | ||||
Types) which can minimally aid in thwarting security threats from | ||||
individual mechanisms (for example, impersonated DNS). | ||||
The profile delivery scheme MUST use channel security such as TLS | The specification strongly RECOMMENDS that solutions implementing the | |||
(e.g. HTTPS) to protect the content from being snooped in transport | Framework provide the Clients with the ability to recognize, mutually | |||
to the user agent. Mutual authentication using the client and server | authenticate and establish integrity protected SIP communication | |||
certificates MAY be used to verify the authenticity of the user or | channels (for example, mutual TLS using certificates). Clients | |||
device identity and the profile delivery server identity. The user | without such an ability SHOULD report changes to sensitive profile | |||
agent SHOULD provide a mechanism for the user to approve the | data (refer to Profile Data) using suitable mechanisms (for example, | |||
SUBSCRIBE server identity or provision the acceptable server identity | management reporting). Further, Clients with access to credentials | |||
through out of band means. | (even if obtained via a User Interface) MUST respond to | |||
authentication challenges. | ||||
10.3. Integrity protection for non-confidential profiles | Profile Enrollment and Profile Notification are done via the Event | |||
Package definition and the security requirements have been presented | ||||
in Section 9.1. Profile Retrieval and Profile Change Upload are | ||||
accomplished using Profile Data Frameworks and are addressed in | ||||
Section 9.3. | ||||
Even for non-confidential profiles, the subscriber MUST verify the | 9.3. Profile Data | |||
authenticity of the profile delivery server, and MUST verify that the | ||||
integrity of the profile data and content indirection URI, if one is | ||||
provided. To meet these requirements in the SIP messaging the NOTIFY | ||||
request MUST use a SIP Identity header [I-D.ietf-sip-identity], or | ||||
S/MIME. If content is provided via redirection, the content | ||||
indirection "hash" parameter MUST be included unless the profile data | ||||
is delivered via a protocol which natively provides authentication | ||||
and message integrity, such as HTTP or LDAP protected by TLS. The | ||||
content retrieved via the content indirection URI MUST be integrity | ||||
checked using the "hash" parameter. | ||||
For example, Alice subscribes to the local domain profile for | Profile data provided using any of the Profile Types is expected to | |||
paris.example.com. She receives a NOTIFY request which uses content | happen via suitable Profile Data Framework (such as XCAP) or suitable | |||
indirection, including a "hash" parameter. Alice uses the Identity | protocol (such as HTTP). Data defined using such frameworks may be | |||
header from the NOTIFY to verify that the request came from | sensitive (for example, user credentials) or non-sensitive (for | |||
paris.example.com and that the body was not modified. Then she | example, list of DNS servers). | |||
fetches the content at the provided URI and verifies that the hash | ||||
she calculates from the profile matches the hash provided in the SIP | ||||
signaling. | ||||
10.4. Initial Enrollment Using a Manufacturer's Certificate | If a profile contains sensitive data, it MUST be provided over a | |||
mutual-authenticated, integrity protected channel. Even if the data | ||||
is non-sensitive, it SHOULD still be provided over a secure channel. | ||||
Exceptions include cases where deployments cater to unknown Clients | ||||
or for troubleshooting. | ||||
A UA with a manufacturer certificate can use this certificate for | For profile data delivered within the framework (i.e. data is | |||
initial enrollment into the configuration framework. In order to | provided in the NOTIFY), the requirements specified in Section 9.1. | |||
safely deploy this scenario, the profile delivery server MUST | ||||
maintain a list of enrolled devices and a separate list of devices | ||||
which it expects to enroll. | ||||
When the device sends a subscription request to the notifier, the | When the profile data is delivered via content indirection, | |||
notifier extracts the device-id from the user part of the Request URI | authentication, integrity, confidentiality MUST be provided by the | |||
and checks if the device is expected to enroll. If the device is | Profile Data Frameworks containing the retrieval mechanisms. | |||
expected, the notifier provides an https: URL to the subscriber and | Further, a non-replayable authentication mechanism (for example, | |||
uses the SIP Identity mechanism to protect the integrity of this URL. | Digest authentication) MUST be used. | |||
This URL MUST contain enough information that the profile content | ||||
server can correlate a request to this URL with the device-id that | ||||
was in the subscription. | ||||
The subscriber then establishes a TLS connection to the profile | 10. Acknowledgements | |||
content server and performs ordinary authentication of the server | ||||
certificate. During the TLS handshake, the profile content server | ||||
requests the certificate of the subscriber. The subscriber provides | ||||
its device certificate. Typically this certificate is created by the | ||||
manufacturer of the device. If no client certificate is provided, | ||||
the profile content server SHOULD return a 403 Forbidden response. | ||||
Next the profile content server checks the client certificate | Many thanks to those who contributed and commented on the many | |||
according to the following steps: | iterations of this document. Detailed comments were provided by the | |||
1. The client certificate MUST be valid, and MUST be rooted in a | following individuals: Jonathan Rosenberg from Cisco, Henning | |||
certificate authority that the administrator of the profile | Schulzrinne from Columbia University, Cullen Jennings from Cisco, | |||
content server trusts to assert a valid "enrollment identity", | Rohan Mahy from Plantronics, Rich Schaaf from Pingtel, Volker Hilt | |||
for example a MAC address, serial number, or device-id. | from Bell Labs, Adam Roach of Estacado Systems, Hisham Khartabil from | |||
2. The profile content server MUST verify that the device-id | Telio, Henry Sinnreich from MCI, Martin Dolly from AT&T Labs, John | |||
provided in the https: URL corresponds to the subject or | Elwell from Siemens, Elliot Eichen and Robert Liao from Verizon, Dale | |||
subjectAltName of the client certificate, in an implementation | Worley from Pingtel, Francois Audet from Nortel, Roni Even from | |||
specific way. For example, the profile content server could | Polycom, Jason Fischl from Counterpath, Josh Littlefield from Cisco, | |||
extract the MAC address from the device-id and the certificate | Nhut Nguyen from Samsung. | |||
and compare them. How device certificates are arranged is not | ||||
standardized at the time of this writing, and is outside the | ||||
scope of this document. | ||||
3. The profile content server SHOULD verify that the issuer of the | ||||
certificate is expected and authorized to assert an enrollment | ||||
identity for this type of device. In other words, the profile | ||||
content server should not allow acme.example to assert an | ||||
enrollment identity for a device manufactured by rival company | ||||
widgets.example. | ||||
4. The profile content server MUST verify that the device referred | ||||
to by the device-id is not already enrolled. | ||||
5. The profile content server MUST verify that the device referred | ||||
to by the device-id is expected to enroll at the current time. | ||||
Typically, an administrator would configure a time-window of | ||||
hours or days during which a new device can enroll. | ||||
If the profile content server successfully performs all these steps, | The editor would like to extend a special thanks to the experts who | |||
it provides an initial device profile to the subscriber in the body | contributed to the restructuring and revisions as proposed by the | |||
of the HTTP response. This initial device profile MUST contain new | SIPPING WG, specifically Keith Drage from Lucent (restructuring | |||
credentials (for example, credentials for Digest authentication) that | proposal), Peter Blatherwick from Mitel (who also contributed to the | |||
the subscriber can use for subsequent authentication. Integrity and | Overview and Introduction sections), Josh Littlefield from Cisco | |||
confidentiality of the new profile is provided since the response is | (examples and diagram suggestions), Alvin Jiang of Engin, Martin | |||
sent over a TLS channel. If one of the verification steps above | Dolly from AT&T, and Jason Fischl from Counterpath. Additionally, | |||
fails, the profile content server sends a 403 Forbidden response. | sincere appreciation is extended to the chairs (Mary Barnes from | |||
Nortel and Gonzalo Camarillo from Ericsson) and the Area Directors | ||||
(Cullen Jennings from Cisco and Jon Peterson and Cisco) for | ||||
facilitating discussions, and for reviews and contributions. | ||||
Entities other than the profile content server do not accept | 11. Open Items | |||
manufacturer device certificates to secure ordinary communications, | ||||
such as SIP TLS or SIP S/MIME. | ||||
11. Acknowledgements | [[Editor's note: This is being used a place holder only and will be | |||
removed once the items listed are addressed]] | ||||
Many thanks to those who contributed and commented on the many | The following comments are considered to be open (i.e. not addressed) | |||
iterations of this document. Detailed input was provided by Jonathan | in this version of the I-D | |||
Rosenberg from Cisco, Henning Schulzrinne from Columbia University, | o Replace 'Service Provider' with a term better representative of | |||
Cullen Jennings from Cisco, Rohan Mahy from Plantronics, Rich Schaaf | its definition | |||
from Pingtel, Volker Hilt from Bell Labs, Adam Roach of Estacado | o Analyze potential unformity in the formation of the Subscription | |||
Systems, Hisham Khartabil from Telio, Henry Sinnreich from MCI, | URI across Profile Types. If not, provide a bried explanation of | |||
Martin Dolly from AT&T Labs, John Elwell from Siemens, Elliot Eichen | the analysis | |||
and Robert Liao from Verizon, Dale Worley from Pingtel, Francois | o Analyze the current SHOULD v/s MUST requirements for the Profile | |||
Audet from Nortel, Roni Even from Polycom, Jason Fischl from | Framework to obtain consensus and facilitate interoperability | |||
Counterpath. | o Present an analysis of the Local Network Profile discovery methods | |||
in DNS-less environments | ||||
o Check on potentially referencing RFC4122 instead of OUTBOUND | ||||
o Security Considerations requires further review | ||||
12. Change History | 12. Change History | |||
[[RFC Editor: Please remove this entire section upon publication as | [[RFC Editor: Please remove this entire section upon publication as | |||
an RFC.]] | an RFC.]] | |||
12.1. Changes from draft-ietf-sipping-config-framework-08.txt | 12.1. Changes from draft-ietf-sipping-config-framework-09.txt | |||
The request URI for profile-type=localnet now SHOULD not have a | Following the ad-hoc SIPPING WG discussions at IETF#67 and as per the | |||
email from Gonzalo Camarillo dated 12/07/2006, Sumanth was appointed | ||||
as the new editor. This sub-section highlights the changes made by | ||||
the editor (as per expert recommendations from the SIPPING WG folks | ||||
interested in this effort) and the author. | ||||
Changes incorporated by the editor: | ||||
o Document was restructured based on a) Keith's recommendations in | ||||
the email dated 11/09/2006 and responses (Peter, Sumanth, Josh) b) | ||||
subsequent discussions by the ad-hoc group consisting of the | ||||
editor, the author, expert contributors (Peter Blatherwick, Josh | ||||
Littlefield, Alvin Jiang, Jason Fischl, Martin Dolly, Cullen | ||||
Jennings) and the co-chairs . Further changes follow. | ||||
o Use cases were made high-level with detailed examples added later | ||||
on | ||||
o Several sections were modified as part of the restructuring (for | ||||
example, Overview, Introduction, Framework Requirements, Security | ||||
Sections) | ||||
o General editorial updates were made | ||||
Changes incorporated by the author: | ||||
o Incorporated numerous edits and corrections from CableLabs review. | ||||
o Used better ascii art picture of overview from Josh Littlefield | ||||
o Fixed the normative text for network-user so that it is now | ||||
consistant: MAY provide for device profile, MUST provide for | ||||
local-network profile. | ||||
12.2. Changes from draft-ietf-sipping-config-framework-08.txt | ||||
The Request URI for profile-type=localnet now SHOULD not have a | ||||
user part to make routing easier. The From field SHOULD now | user part to make routing easier. The From field SHOULD now | |||
contain the device id so that device tracking can still be done. | contain the device id so that device tracking can still be done. | |||
Described the concept of profile-type as a filter and added | Described the concept of profile-type as a filter and added | |||
normative text requiring 404 for profile types not provided. | normative text requiring 404 for profile types not provided. | |||
Moved "application" profile type to | Moved "application" profile type to | |||
draft-ietf-sipping-xcap-config-01. The "application" value for | draft-ietf-sipping-xcap-config-01. The "application" value for | |||
the profile-type parameter will also be used as a requirement that | the profile-type parameter will also be used as a requirement that | |||
XCAP be supported. | XCAP be supported. | |||
Fixed text on certificate validation. | Fixed text on certificate validation. | |||
Added new HTTP header: Event to IANA section and clean up the IANA | Added new HTTP header: Event to IANA section and clean up the IANA | |||
section. | section. | |||
Added diagram for service provider use case schenario. | Added diagram for Service Provider use case schenario. | |||
Added clarification for HTTP Event header. | Added clarification for HTTP Event header. | |||
Added clarification of subscriber handling of NOTIFY with no body. | Added clarification of subscriber handling of NOTIFY with no body. | |||
12.2. Changes from draft-ietf-sipping-config-framework-07.txt | 12.3. Changes from draft-ietf-sipping-config-framework-07.txt | |||
Made XCAP informative reference. Removed "document" and "auid" | Made XCAP informative reference. Removed "document" and "auid" | |||
event header parameters, and Usage of XCAP section to be put in | event header parameters, and Usage of XCAP section to be put in | |||
separate supplementary draft. | separate supplementary draft. | |||
Fixed ABNF for network-user to be addr-spec only (not name-addr) | Fixed ABNF for network-user to be addr-spec only (not name-addr) | |||
and to be quoted as well. | and to be quoted as well. | |||
Synchronized with XCAP path terminology. Removed XCAP path | Synchronized with XCAP path terminology. Removed XCAP path | |||
definition as it is already defined in XCAP. | definition as it is already defined in XCAP. | |||
User agent instance ID is now defined in output (not GRUU). | User agent instance ID is now defined in output (not GRUU). | |||
Clarified the rational for the network-user parameter. | Clarified the rational for the network-user parameter. | |||
Added text to suggest URIs for To and From fields. | Added text to suggest URIs for To and From fields. | |||
Clarified use of network-user parameter. | Clarified use of network-user parameter. | |||
Allow the use of the auid and document parameters per request by | Allow the use of the auid and document parameters per request by | |||
the OMA. | the OMA. | |||
12.3. Changes from draft-ietf-sipping-config-framework-06.txt | 12.4. Changes from draft-ietf-sipping-config-framework-06.txt | |||
Restructured the introduction and overview section to be more | Restructured the introduction and overview section to be more | |||
consistent with other Internet-Drafts. | consistent with other Internet-Drafts. | |||
Added additional clarification for the Digest Authentication and | Added additional clarification for the Digest Authentication and | |||
Certificate based authentication cases in the security section. | Certificate based authentication cases in the security section. | |||
Added two use case scenarios with cross referencing to better | Added two use case scenarios with cross referencing to better | |||
illustrate how the framework works. Added better cross | illustrate how the framework works. Added better cross | |||
referencing in the overview section to help readers find where | referencing in the overview section to help readers find where | |||
concepts and functionality is defined in the document. | concepts and functionality is defined in the document. | |||
Clarified the section on the use of XCAP. Changed the Event | Clarified the section on the use of XCAP. Changed the Event | |||
parameter "App-Id" to "auid". Made "auid" mutually exclusive to | parameter "App-Id" to "auid". Made "auid" mutually exclusive to | |||
"document". "auid" is now only used with XCAP. | "document". "auid" is now only used with XCAP. | |||
Local network subscription URI changed to <device-id>@ | Local network subscription URI changed to <device-id>@ | |||
<local-network> (was anonymous@<local-network>). Having a | <local-network> (was anonymous@<local-network>). Having a | |||
different request URI for each device allows the network | different Request URI for each device allows the network | |||
management to track user agents and potentially manage bandwidth, | management to track user agents and potentially manage bandwidth, | |||
port allocation, etc. | port allocation, etc. | |||
Changed event package name from sip-profile to ua-profile per | Changed event package name from sip-profile to ua-profile per | |||
discussion on the list and last IETF meeting. | discussion on the list and last IETF meeting. | |||
Changed "local" profile type token to "local-network" per | Changed "local" profile type token to "local-network" per | |||
discussion on the list and last IETF meeting. | discussion on the list and last IETF meeting. | |||
Simplified "Vendor", "Model", "Version" event header parameters to | Simplified "Vendor", "Model", "Version" event header parameters to | |||
allow only quoted string values (previously allowed token as | allow only quoted string values (previously allowed token as | |||
well). | well). | |||
Clarified use of the term cache. | Clarified use of the term cache. | |||
Added references for ABNF constructs. | Added references for ABNF constructs. | |||
Numerous editorial changes. Thanks Dale! | Numerous editorial changes. Thanks Dale! | |||
12.4. Changes from draft-ietf-sipping-config-framework-05.txt | 12.5. Changes from draft-ietf-sipping-config-framework-05.txt | |||
Made HTTP and HTTPS profile transport schemes mandatory in the | Made HTTP and HTTPS profile transport schemes mandatory in the | |||
profile delivery server. The subscribing device must implement | profile delivery server. The subscribing device must implement | |||
HTTP or HTTPS as the profile transport scheme. | HTTP or HTTPS as the profile transport scheme. | |||
Rewrote the security considerations section. | Rewrote the security considerations section. | |||
Divided references into Normative and Informative. | Divided references into Normative and Informative. | |||
Minor edits throughout. | Minor edits throughout. | |||
12.5. Changes from draft-ietf-sipping-config-framework-04.txt | 12.6. Changes from draft-ietf-sipping-config-framework-04.txt | |||
Clarified usage of instance-id | Clarified usage of instance-id | |||
Specify which event header parameters are mandatory or optional | Specify which event header parameters are mandatory or optional | |||
and in which messages. | and in which messages. | |||
Included complete list of event header parameters in parameter | Included complete list of event header parameters in parameter | |||
overview and IANA sections. | overview and IANA sections. | |||
Removed TFTP reference as protocol for profile transport. | Removed TFTP reference as protocol for profile transport. | |||
Added examples for discovery. | Added examples for discovery. | |||
Added ABNF for all event header parameters. | Added ABNF for all event header parameters. | |||
Changed profile-name parameter back to profile-type. This was | Changed profile-name parameter back to profile-type. This was | |||
skipping to change at page 38, line 29 | skipping to change at page 51, line 4 | |||
Changed profile-name parameter back to profile-type. This was | Changed profile-name parameter back to profile-type. This was | |||
changed to profile-name in 02 when the parameter could contain | changed to profile-name in 02 when the parameter could contain | |||
either a token or a path. Now that the path is contained in the | either a token or a path. Now that the path is contained in the | |||
separate parameter: "document", profile-type make more sense as | separate parameter: "document", profile-type make more sense as | |||
the parameter name. | the parameter name. | |||
Fixed some statements that should have and should not have been | Fixed some statements that should have and should not have been | |||
normative. | normative. | |||
Added the ability for the user agent to request that the default | Added the ability for the user agent to request that the default | |||
user associated with the device be set/changed using the "network- | user associated with the device be set/changed using the "network- | |||
user" parameter. | user" parameter. | |||
A bunch of editorial nits and fixes. | A bunch of editorial nits and fixes. | |||
12.6. Changes from draft-ietf-sipping-config-framework-03.txt | 12.7. Changes from draft-ietf-sipping-config-framework-03.txt | |||
Incorporated changes to better support the requirements for the use | Incorporated changes to better support the requirements for the use | |||
of this event package with XCAP and SIMPLE so that we can have one | of this event package with XCAP and SIMPLE so that we can have one | |||
package (i.e. simple-xcap-diff now defines a content type not a | package (i.e. simple-xcap-diff now defines a content type not a | |||
package). Added an additional profile type: "application". Added | package). Added an additional profile type: "application". Added | |||
document and app-id Event header parameters in support of the | document and app-id Event header parameters in support of the | |||
application profile. Define a loose high level data model or | application profile. Define a loose high level data model or | |||
relationship between the four profile types. Tried to edit and fix | relationship between the four profile types. Tried to edit and fix | |||
the confusing and ambiguous sections related to URI formation and | the confusing and ambiguous sections related to URI formation and | |||
discovery for the different profile types. Better describe the | discovery for the different profile types. Better describe the | |||
importance of uniqueness for the instance id which is used in the | importance of uniqueness for the instance id which is used in the | |||
user part of the device URI. | user part of the device URI. | |||
12.7. Changes from draft-ietf-sipping-config-framework-02.txt | 12.8. Changes from draft-ietf-sipping-config-framework-02.txt | |||
Added the concept of the local network as a source of profile data. | Added the concept of the local network as a source of profile data. | |||
There are now three separate logical sources for profile data: user, | There are now three separate logical sources for profile data: user, | |||
device and local network. Each of these requires a separate | device and local network. Each of these requires a separate | |||
subscription to obtain. | subscription to obtain. | |||
12.8. Changes from draft-ietf-sipping-config-framework-01.txt | 12.9. Changes from draft-ietf-sipping-config-framework-01.txt | |||
Changed the name of the profile-type event parameter to profile-name. | Changed the name of the profile-type event parameter to profile-name. | |||
Also allow the profile-name parameter to be either a token or an | Also allow the profile-name parameter to be either a token or an | |||
explicit URI. | explicit URI. | |||
Allow content indirection to be optional. Clarified the use of the | Allow content indirection to be optional. Clarified the use of the | |||
Accept header to indicate how the profile is to be delivered. | Accept header to indicate how the profile is to be delivered. | |||
Added some content to the Iana section. | Added some content to the Iana section. | |||
12.9. Changes from draft-ietf-sipping-config-framework-00.txt | 12.10. Changes from draft-ietf-sipping-config-framework-00.txt | |||
This version of the document was entirely restructured and re-written | This version of the document was entirely restructured and re-written | |||
from the previous version as it had been micro edited too much. | from the previous version as it had been micro edited too much. | |||
All of the aspects of defining the event package are now organized in | All of the aspects of defining the event package are now organized in | |||
one section and is believed to be complete and up to date with | one section and is believed to be complete and up to date with | |||
[RFC3265]. | [RFC3265]. | |||
The URI used to subscribe to the event package is now either the user | The URI used to subscribe to the event package is now either the user | |||
or device address or record. | or device address or record. | |||
skipping to change at page 39, line 38 | skipping to change at page 52, line 12 | |||
The user agent information (vendor, model, MAC and serial number) are | The user agent information (vendor, model, MAC and serial number) are | |||
now provided as event header parameters. | now provided as event header parameters. | |||
Added a mechanism to force profile changes to be make effective by | Added a mechanism to force profile changes to be make effective by | |||
the user agent in a specified maximum period of time. | the user agent in a specified maximum period of time. | |||
Changed the name of the event package from sip-config to ua-profile | Changed the name of the event package from sip-config to ua-profile | |||
Three high level security approaches are now specified. | Three high level security approaches are now specified. | |||
12.10. Changes from draft-petrie-sipping-config-framework-00.txt | 12.11. Changes from draft-petrie-sipping-config-framework-00.txt | |||
Changed name to reflect SIPPING work group item | Changed name to reflect SIPPING work group item | |||
Synchronized with changes to SIP DHCP [RFC3361], SIP [RFC3261] and | Synchronized with changes to SIP DHCP [RFC3361], SIP [RFC3261] and | |||
[RFC3263], SIP Events [RFC3265] and content indirection [I-D.ietf- | [RFC3263], SIP Events [RFC3265] and content indirection [RFC4483] | |||
sip-content-indirect-mech] | ||||
Moved the device identity parameters from the From field parameters | Moved the device identity parameters from the From field parameters | |||
to User-Agent header parameters. | to User-Agent header parameters. | |||
Many thanks to Rich Schaaf of Pingtel, Cullen Jennings of Cisco and | Many thanks to Rich Schaaf of Pingtel, Cullen Jennings of Cisco and | |||
Adam Roach of Estacado Systems for the great comments and input. | Adam Roach of Estacado Systems for the great comments and input. | |||
12.11. Changes from draft-petrie-sip-config-framework-01.txt | 12.12. Changes from draft-petrie-sip-config-framework-01.txt | |||
Changed the name as this belongs in the SIPPING work group. | Changed the name as this belongs in the SIPPING work group. | |||
Minor edits | Minor edits | |||
12.12. Changes from draft-petrie-sip-config-framework-00.txt | 12.13. Changes from draft-petrie-sip-config-framework-00.txt | |||
Split the enrollment into a single SUBSCRIBE dialog for each profile. | Split the enrollment into a single SUBSCRIBE dialog for each profile. | |||
The 00 draft sent a single SUBSCRIBE listing all of the desired. | The 00 draft sent a single SUBSCRIBE listing all of the desired. | |||
These have been split so that each enrollment can be routed | These have been split so that each enrollment can be routed | |||
differently. As there is a concept of device specific and user | differently. As there is a concept of device specific and user | |||
specific profiles, these may also be managed on separate servers. | specific profiles, these may also be managed on separate servers. | |||
For instance in a nomadic situation the device might get its profile | For instance in a nomadic situation the device might get its profile | |||
data from a local server which knows the LAN specific profile data. | data from a local server which knows the LAN specific profile data. | |||
At the same time the user specific profiles might come from the | At the same time the user specific profiles might come from the | |||
user's home environment profile delivery server. | user's home environment profile delivery server. | |||
skipping to change at page 40, line 40 | skipping to change at page 53, line 11 | |||
devices powers up. | devices powers up. | |||
Added the User-Profile From header field parameter so that the device | Added the User-Profile From header field parameter so that the device | |||
can request a user specific profile for a user that is different from | can request a user specific profile for a user that is different from | |||
the device's default user. | the device's default user. | |||
13. References | 13. References | |||
13.1. Normative References | 13.1. Normative References | |||
[I-D.ietf-sip-content-indirect-mech] | ||||
Burger, E., "A Mechanism for Content Indirection in | ||||
Session Initiation Protocol (SIP) Messages", | ||||
draft-ietf-sip-content-indirect-mech-05 (work in | ||||
progress), October 2004. | ||||
[I-D.ietf-sip-identity] | [I-D.ietf-sip-identity] | |||
Peterson, J. and C. Jennings, "Enhancements for | Peterson, J. and C. Jennings, "Enhancements for | |||
Authenticated Identity Management in the Session | Authenticated Identity Management in the Session | |||
Initiation Protocol (SIP)", draft-ietf-sip-identity-06 | Initiation Protocol (SIP)", draft-ietf-sip-identity-06 | |||
(work in progress), October 2005. | (work in progress), October 2005. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | |||
Extensions", RFC 2132, March 1997. | Extensions", RFC 2132, March 1997. | |||
[RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | ||||
RFC 2246, January 1999. | ||||
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | ||||
Leach, P., Luotonen, A., and L. Stewart, "HTTP | ||||
Authentication: Basic and Digest Access Authentication", | ||||
RFC 2617, June 1999. | ||||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
Schooler, "SIP: Session Initiation Protocol", RFC 3261, | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
June 2002. | June 2002. | |||
[RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation | [RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation | |||
Protocol (SIP): Locating SIP Servers", RFC 3263, | Protocol (SIP): Locating SIP Servers", RFC 3263, | |||
June 2002. | June 2002. | |||
skipping to change at page 41, line 45 | skipping to change at page 53, line 49 | |||
Event Notification", RFC 3265, June 2002. | Event Notification", RFC 3265, June 2002. | |||
[RFC3361] Schulzrinne, H., "Dynamic Host Configuration Protocol | [RFC3361] Schulzrinne, H., "Dynamic Host Configuration Protocol | |||
(DHCP-for-IPv4) Option for Session Initiation Protocol | (DHCP-for-IPv4) Option for Session Initiation Protocol | |||
(SIP) Servers", RFC 3361, August 2002. | (SIP) Servers", RFC 3361, August 2002. | |||
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | |||
Unique IDentifier (UUID) URN Namespace", RFC 4122, | Unique IDentifier (UUID) URN Namespace", RFC 4122, | |||
July 2005. | July 2005. | |||
[RFC4483] Burger, E., "A Mechanism for Content Indirection in | ||||
Session Initiation Protocol (SIP) Messages", RFC 4483, | ||||
May 2006. | ||||
13.2. Informative References | 13.2. Informative References | |||
[I-D.ietf-simple-xcap] | [I-D.ietf-simple-xcap] | |||
Rosenberg, J., "The Extensible Markup Language (XML) | Rosenberg, J., "The Extensible Markup Language (XML) | |||
Configuration Access Protocol (XCAP)", | Configuration Access Protocol (XCAP)", | |||
draft-ietf-simple-xcap-11 (work in progress), May 2006. | draft-ietf-simple-xcap-12 (work in progress), | |||
October 2006. | ||||
[I-D.ietf-simple-xcap-diff] | [I-D.ietf-simple-xcap-diff] | |||
Rosenberg, J., "An Extensible Markup Language (XML) | Rosenberg, J., "An Extensible Markup Language (XML) | |||
Document Format for Indicating A Change in XML | Document Format for Indicating A Change in XML | |||
Configuration Access Protocol (XCAP) Resources", | Configuration Access Protocol (XCAP) Resources", | |||
draft-ietf-simple-xcap-diff-03 (work in progress), | draft-ietf-simple-xcap-diff-04 (work in progress), | |||
October 2006. | October 2006. | |||
[I-D.ietf-sip-outbound] | ||||
Jennings, C. and R. Mahy, "Managing Client Initiated | ||||
Connections in the Session Initiation Protocol (SIP)", | ||||
draft-ietf-sip-outbound-04 (work in progress), June 2006. | ||||
[I-D.ietf-sipping-ua-prof-framewk-reqs] | ||||
Petrie, D. and C. Jennings, "Requirements for SIP User | ||||
Agent Profile Delivery Framework", | ||||
draft-ietf-sipping-ua-prof-framewk-reqs-00 (work in | ||||
progress), March 2003. | ||||
[I-D.petrie-sipping-profile-datasets] | ||||
Petrie, D., "A Schema and Guidelines for Defining Session | ||||
Initiation Protocol User Agent Profile Data Sets", | ||||
draft-petrie-sipping-profile-datasets-03 (work in | ||||
progress), October 2005. | ||||
[I-D.sinnreich-sipdev-req] | ||||
Sinnreich, H., "SIP Telephony Device Requirements and | ||||
Configuration", draft-sinnreich-sipdev-req-08 (work in | ||||
progress), October 2005. | ||||
[RFC0822] Crocker, D., "Standard for the format of ARPA Internet | ||||
text messages", STD 11, RFC 822, August 1982. | ||||
[RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | |||
STD 9, RFC 959, October 1985. | STD 9, RFC 959, October 1985. | |||
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol", | [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", | |||
RFC 2131, March 1997. | RFC 2131, March 1997. | |||
[RFC2141] Moats, R., "URN Syntax", RFC 2141, May 1997. | [RFC2141] Moats, R., "URN Syntax", RFC 2141, May 1997. | |||
[RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
Resource Identifiers (URI): Generic Syntax", RFC 2396, | ||||
August 1998. | ||||
[RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access | [RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access | |||
Protocol (v3): Technical Specification", RFC 3377, | Protocol (v3): Technical Specification", RFC 3377, | |||
September 2002. | September 2002. | |||
[W3C.REC-xml-names11-20040204] | [RFC3617] Lear, E., "Uniform Resource Identifier (URI) Scheme and | |||
Hollander, D., Tobin, R., Bray, T., and A. Layman, | Applicability Statement for the Trivial File Transfer | |||
"Namespaces in XML 1.1", World Wide Web Consortium | Protocol (TFTP)", RFC 3617, October 2003. | |||
FirstEdition REC-xml-names11-20040204, February 2004, | ||||
<http://www.w3.org/TR/2004/REC-xml-names11-20040204>. | ||||
Author's Address | Authors' Addresses | |||
Daniel Petrie | Daniel Petrie | |||
SIPez LLC. | SIPez LLC. | |||
34 Robbins Rd | 34 Robbins Rd | |||
Arlington, MA 02476 | Arlington, MA 02476 | |||
US | USA | |||
Phone: "+1 617 273 4000 | ||||
Email: dan.ietf AT SIPez DOT com | Email: dan.ietf AT SIPez DOT com | |||
URI: http://www.SIPez.com/ | URI: http://www.SIPez.com/ | |||
Sumanth Channabasappa (Editor) | ||||
CableLabs | ||||
858 Coal Creek Circle | ||||
Louisville, Co 80027 | ||||
USA | ||||
Intellectual Property Statement | Email: sumanth@cablelabs.com | |||
URI: http://www.cablelabs.com/ | ||||
Full Copyright Statement | ||||
Copyright (C) The IETF Trust (2007). | ||||
This document is subject to the rights, licenses and restrictions | ||||
contained in BCP 78, and except as set forth therein, the authors | ||||
retain all their rights. | ||||
This document and the information contained herein are provided on an | ||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | ||||
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | ||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | ||||
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
Intellectual Property | ||||
The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
Intellectual Property Rights or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
this document or the extent to which any license under such rights | this document or the extent to which any license under such rights | |||
might or might not be available; nor does it represent that it has | might or might not be available; nor does it represent that it has | |||
made any independent effort to identify any such rights. Information | made any independent effort to identify any such rights. Information | |||
on the procedures with respect to rights in RFC documents can be | on the procedures with respect to rights in RFC documents can be | |||
found in BCP 78 and BCP 79. | found in BCP 78 and BCP 79. | |||
skipping to change at page 45, line 29 | skipping to change at page 56, line 45 | |||
such proprietary rights by implementers or users of this | such proprietary rights by implementers or users of this | |||
specification can be obtained from the IETF on-line IPR repository at | specification can be obtained from the IETF on-line IPR repository at | |||
http://www.ietf.org/ipr. | http://www.ietf.org/ipr. | |||
The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
this standard. Please address the information to the IETF at | this standard. Please address the information to the IETF at | |||
ietf-ipr@ietf.org. | ietf-ipr@ietf.org. | |||
Disclaimer of Validity | ||||
This document and the information contained herein are provided on an | ||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | ||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
Copyright Statement | ||||
Copyright (C) The Internet Society (2006). This document is subject | ||||
to the rights, licenses and restrictions contained in BCP 78, and | ||||
except as set forth therein, the authors retain all their rights. | ||||
Acknowledgment | Acknowledgment | |||
Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is provided by the IETF | |||
Internet Society. | Administrative Support Activity (IASA). | |||
End of changes. 202 change blocks. | ||||
1457 lines changed or deleted | 1805 lines changed or added | |||
This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |