draft-ietf-sipping-config-framework-10.txt | draft-ietf-sipping-config-framework-11.txt | |||
---|---|---|---|---|
SIPPING D. Petrie | SIPPING D. Petrie | |||
Internet-Draft SIPez LLC. | Internet-Draft SIPez LLC. | |||
Intended status: Standards Track S. Channabasappa, Ed. | Intended status: Standards Track S. Channabasappa, Ed. | |||
Expires: September 2, 2007 CableLabs | Expires: September 4, 2007 CableLabs | |||
March 3, 2007 | ||||
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-10 | draft-ietf-sipping-config-framework-11 | |||
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 34 | skipping to change at page 1, line 35 | |||
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 September 2, 2007. | This Internet-Draft will expire on September 4, 2007. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2007). | |||
Abstract | Abstract | |||
This document defines a framework to enable configuration of Session | This document defines a framework to enable configuration of Session | |||
Initiation Protocol (SIP) User Agents in SIP deployments. The | Initiation Protocol (SIP) User Agents in SIP deployments. The | |||
framework provides a means to deliver profile data that User Agents | framework provides a means to deliver profile data that User Agents | |||
skipping to change at page 2, line 14 | skipping to change at page 2, line 14 | |||
this framework, a new SIP event package is defined for notification | this framework, a new SIP event package is defined for notification | |||
of profile changes. The framework provides for multiple data | of profile changes. The framework provides for multiple data | |||
retrieval options, without requiring or defining retrieval protocols. | retrieval options, without requiring or defining retrieval protocols. | |||
The framework does not include specification of the profile data | The framework does not include specification of the profile data | |||
within its scope. | within its scope. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.2. Profile Life Cycle . . . . . . . . . . . . . . . . . . . 9 | 3.2. Data Model and Profile Types . . . . . . . . . . . . . . 9 | |||
3.3. Data Model and Profile Types . . . . . . . . . . . . . . 10 | 3.3. Profile Life Cycle . . . . . . . . . . . . . . . . . . . 9 | |||
4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1. Client with different Data and SIP Service Providers . . 11 | 4.1. Simple Deployment Scenario . . . . . . . . . . . . . . . 10 | |||
4.2. Clients supporting multiple users from different | 4.2. Devices supporting multiple users from different | |||
Service Providers . . . . . . . . . . . . . . . . . . . . 13 | Service Providers . . . . . . . . . . . . . . . . . . . . 12 | |||
5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 15 | 5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 14 | |||
5.1. Profile Discovery . . . . . . . . . . . . . . . . . . . . 18 | 5.1. Profile Enrollment . . . . . . . . . . . . . . . . . . . 17 | |||
5.1.1. SIP SUBSCRIBE for the Local-Network Profile Type . . . 19 | 5.1.1. Creation of Enrollment Subscription . . . . . . . . . 17 | |||
5.1.2. SIP SUBSCRIBE for the Device Profile Type . . . . . . 20 | 5.1.2. Profile Enrollment Request Transmission . . . . . . . 24 | |||
5.1.3. SIP SUBSCRIBE for the User Profile Type . . . . . . . 24 | 5.1.3. Profile Enrollment Notification . . . . . . . . . . . 24 | |||
5.1.4. Caching of SIP Subscription URIs . . . . . . . . . . . 24 | 5.2. Profile Content Retrieval . . . . . . . . . . . . . . . . 25 | |||
5.2. Profile Enrollment . . . . . . . . . . . . . . . . . . . 25 | 5.3. Profile Change Operation . . . . . . . . . . . . . . . . 25 | |||
5.3. Profile Notification . . . . . . . . . . . . . . . . . . 26 | 5.4. Profile Change Notification . . . . . . . . . . . . . . . 25 | |||
5.4. Profile Retrieval . . . . . . . . . . . . . . . . . . . . 26 | 5.5. Additional Considerations . . . . . . . . . . . . . . . . 25 | |||
5.5. Profile Change Upload . . . . . . . . . . . . . . . . . . 26 | 5.5.1. Manual retrieval of the Device Profile . . . . . . . . 26 | |||
5.6. Additional Considerations . . . . . . . . . . . . . . . . 27 | 5.5.2. Device Types . . . . . . . . . . . . . . . . . . . . . 26 | |||
5.6.1. Manual retrieval of the Device Profile . . . . . . . . 27 | 5.5.3. Profile Data . . . . . . . . . . . . . . . . . . . . . 27 | |||
5.6.2. Client Types . . . . . . . . . . . . . . . . . . . . . 28 | 5.5.4. Profile Data Frameworks . . . . . . . . . . . . . . . 27 | |||
5.6.3. Profile Data . . . . . . . . . . . . . . . . . . . . . 28 | 5.5.5. Additional Profile Types . . . . . . . . . . . . . . . 28 | |||
5.6.4. Profile Data Frameworks . . . . . . . . . . . . . . . 28 | 5.5.6. Deployment considerations . . . . . . . . . . . . . . 28 | |||
5.6.5. Additional Profile Types . . . . . . . . . . . . . . . 29 | 6. Event Package Definition . . . . . . . . . . . . . . . . . . . 28 | |||
6. Event Package Definition . . . . . . . . . . . . . . . . . . . 29 | ||||
6.1. Event Package Name . . . . . . . . . . . . . . . . . . . 29 | 6.1. Event Package Name . . . . . . . . . . . . . . . . . . . 29 | |||
6.2. Event Package Parameters . . . . . . . . . . . . . . . . 29 | 6.2. Event Package Parameters . . . . . . . . . . . . . . . . 29 | |||
6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . 33 | 6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . 32 | |||
6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 33 | 6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 33 | |||
6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 34 | 6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 33 | |||
6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 34 | 6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 33 | |||
6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . 35 | 6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . 34 | |||
6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . 35 | 6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . 35 | |||
6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 36 | 6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 35 | |||
6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 36 | 6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 35 | |||
6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . 36 | 6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . 35 | |||
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
7.1. Example 1: Client requesting profile . . . . . . . . . . 36 | 7.1. Example 1: Device requesting profile . . . . . . . . . . 36 | |||
7.2. Example 2: Client obtaining change notification . . . . . 40 | 7.2. Example 2: Device obtaining change notification . . . . . 39 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 43 | |||
8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 44 | 8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 43 | |||
8.2. New HTTP Event Header . . . . . . . . . . . . . . . . . . 44 | 8.2. New HTTP Event Header . . . . . . . . . . . . . . . . . . 43 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 45 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 44 | |||
9.1. Event Package . . . . . . . . . . . . . . . . . . . . . . 45 | 9.1. Profile Enrollment and Change Notification . . . . . . . 47 | |||
9.2. Profile Life Cycle . . . . . . . . . . . . . . . . . . . 46 | 9.2. Profile Content Retrieval . . . . . . . . . . . . . . . . 49 | |||
9.3. Profile Data . . . . . . . . . . . . . . . . . . . . . . 46 | 9.3. Profile Change Operation . . . . . . . . . . . . . . . . 50 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 47 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
11. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | 11. Change History . . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
12. Change History . . . . . . . . . . . . . . . . . . . . . . . . 48 | 11.1. Changes from | |||
12.1. Changes from | draft-ietf-sipping-config-framework-10.txt . . . . . . . 51 | |||
draft-ietf-sipping-config-framework-09.txt . . . . . . . 48 | 11.2. Changes from | |||
12.2. Changes from | draft-ietf-sipping-config-framework-09.txt . . . . . . . 52 | |||
draft-ietf-sipping-config-framework-08.txt . . . . . . . 49 | 11.3. Changes from | |||
12.3. Changes from | draft-ietf-sipping-config-framework-08.txt . . . . . . . 52 | |||
draft-ietf-sipping-config-framework-07.txt . . . . . . . 49 | 11.4. Changes from | |||
12.4. Changes from | draft-ietf-sipping-config-framework-07.txt . . . . . . . 53 | |||
draft-ietf-sipping-config-framework-06.txt . . . . . . . 49 | 11.5. Changes from | |||
12.5. Changes from | draft-ietf-sipping-config-framework-06.txt . . . . . . . 53 | |||
draft-ietf-sipping-config-framework-05.txt . . . . . . . 50 | 11.6. Changes from | |||
12.6. Changes from | draft-ietf-sipping-config-framework-05.txt . . . . . . . 54 | |||
draft-ietf-sipping-config-framework-04.txt . . . . . . . 50 | 11.7. Changes from | |||
12.7. Changes from | draft-ietf-sipping-config-framework-04.txt . . . . . . . 54 | |||
draft-ietf-sipping-config-framework-03.txt . . . . . . . 51 | 11.8. Changes from | |||
12.8. Changes from | draft-ietf-sipping-config-framework-03.txt . . . . . . . 54 | |||
draft-ietf-sipping-config-framework-02.txt . . . . . . . 51 | 11.9. Changes from | |||
12.9. Changes from | draft-ietf-sipping-config-framework-02.txt . . . . . . . 55 | |||
draft-ietf-sipping-config-framework-01.txt . . . . . . . 51 | 11.10. Changes from | |||
12.10. Changes from | draft-ietf-sipping-config-framework-01.txt . . . . . . . 55 | |||
draft-ietf-sipping-config-framework-00.txt . . . . . . . 51 | 11.11. Changes from | |||
12.11. Changes from | draft-ietf-sipping-config-framework-00.txt . . . . . . . 55 | |||
draft-petrie-sipping-config-framework-00.txt . . . . . . 52 | 11.12. Changes from | |||
12.12. Changes from draft-petrie-sip-config-framework-01.txt . . 52 | draft-petrie-sipping-config-framework-00.txt . . . . . . 56 | |||
12.13. Changes from draft-petrie-sip-config-framework-00.txt . . 52 | 11.13. Changes from draft-petrie-sip-config-framework-01.txt . . 56 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 11.14. Changes from draft-petrie-sip-config-framework-00.txt . . 56 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 53 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 54 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 57 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 54 | 12.2. Informative References . . . . . . . . . . . . . . . . . 58 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 56 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 58 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 60 | ||||
1. Introduction | 1. Introduction | |||
SIP User Agents require configuration data to function properly. | SIP User Agents require configuration data to function properly. | |||
Examples include network, Client and user specific information. | Examples include network, device and user specific information. | |||
Ideally, this configuration process should be automatic and require | Ideally, this configuration process should be automatic and require | |||
minimal or no user intervention. | minimal or no user intervention. | |||
Many deployments of SIP User Agents require dynamic configuration and | Many deployments of SIP User Agents require dynamic configuration and | |||
cannot rely on pre-configuration. This framework provides a standard | cannot rely on pre-configuration. This framework provides a standard | |||
means of providing dynamic configuration which simplifies deployments | means of providing dynamic configuration which simplifies deployments | |||
containing SIP User Agents from multiple vendors. | containing SIP User Agents from multiple vendors. | |||
This framework also addresses modifications to profiles and the | This framework also addresses modifications to profiles and the | |||
corresponding change notifications to the SIP User Agents using a new | corresponding change notifications to the SIP User Agents using a new | |||
event package. However, the framework does not define the content or | event package. However, the framework does not define the content or | |||
format of the actual profile data, leaving that to future | format of the actual profile data, leaving that to future | |||
standardization activities. | standardization activities. | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
In addition, this document introduces and utilizes the following | This document also reuses the SIP terminology defined in [RFC3261] | |||
terms: | and [RFC3265], and specifies the usage of the following terms. | |||
Client: software or hardware entity containing one or more SIP user | Device: software or hardware entity containing one or more SIP user | |||
agents. | agents. It may also contain entities such as a DHCP client. | |||
Device: the terms 'Client' and 'Device' are used interchangeably | Device Provider: the entity responsible for managing a given device | |||
within this framework. | ||||
Service Provider: a logical entity providing one or more services. | Local Network Provider: the entity that controls the local network | |||
to which a given device is connected | ||||
SIP Service Provider: the entity providing SIP services to users. | ||||
This can refer to private enterprises or public entities. | This can refer to private enterprises or public entities. | |||
Profile: configuration data set specific to an entity (for example, | Profile: configuration data set specific to an entity (for example, | |||
user, device, local network or other). | user, device, local network or other). | |||
Profile Type: a particular category of Profile data (for example, | Profile Type: a particular category of Profile data (for example, | |||
User, Device, Local Network or other). | User, Device, Local Network or other). | |||
Profile Delivery Server (PDS): the source of a Profile, it is the | Profile Delivery Server (PDS): the source of a Profile, it is the | |||
logical collection of the Profile Notification Component (PNC) and | logical collection of the Profile Notification Component (PNC) and | |||
the Profile Content Component(PCC). | the Profile Content Component(PCC). | |||
Profile Notification Component (PNC): the logical component of a | Profile Notification Component (PNC): the logical component of a | |||
Profile Delivery Server that is responsible for enrolling Clients | Profile Delivery Server that is responsible for enrolling devices | |||
and providing profile notifications. | and providing profile notifications. | |||
Profile Content Component (PCC): the logical component of a Profile | Profile Content Component (PCC): the logical component of a Profile | |||
Delivery Server that is responsible for storing, providing and | Delivery Server that is responsible for storing, providing access | |||
accepting profile content. | to, 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 | ||||
with profile data or URIs (Uniform Resource Identifiers) that | ||||
point to the data. | ||||
Instance ID: text identifier globally unique across all Clients. | ||||
3. Overview | 3. Overview | |||
This section provides an overview of the configuration framework. It | This section provides an overview of the configuration framework. It | |||
introduces the reference model and explains key concepts such as the | introduces the reference model and explains key concepts such as the | |||
Profile Life Cycle and the Profile types. The framework is presented | Profile Life Cycle and the Profile Types. It is meant to serve as a | |||
in Section 5. | reference section for the document, rather than providing a specific | |||
logical flow of material, as it may be necessary to revisit these | ||||
sections for a complete understanding of this document. The detailed | ||||
framework for the profile delivery, presented in Section 5, is based | ||||
on the concepts introduced in this section. | ||||
3.1. Reference Model | 3.1. Reference Model | |||
The design of the framework was the result of a careful analysis to | The design of the framework was the result of a careful analysis to | |||
identify the configuration needs of a wide range of SIP deployments. | identify the configuration needs of a wide range of SIP deployments. | |||
As such, the reference model provides for a great deal of | As such, the reference model provides for a great deal of | |||
flexibility, while breaking down the interactions to their basic | flexibility, while breaking down the interactions to their basic | |||
forms which can be reused in many different scenarios. | forms which can be reused in many different scenarios. | |||
In its simplest form, the reference model for the framework defines | In its simplest form, the reference model for the framework defines | |||
the interactions between the Profile Delivery Server(PDS) and the | the interactions between the Profile Delivery Server(PDS) and the | |||
Client. The Client is a SIP UA which needs the profile data to | device. The device needs the profile data to effectively function in | |||
effectively function in the network. The PDS is responsible for | the network. The PDS is responsible for responding to device | |||
responding to Client requests and providing the profile data. The | requests and providing the profile data. The set of interactions | |||
set of interactions between these entities is referred to as the | between these entities is referred to as the Profile Life Cycle. | |||
Profile Life Cycle. This reference model is illustrated in the | ||||
diagram below. | This reference model is illustrated in the diagram below. | |||
+-------------------------+ | +-------------------------+ | |||
+---------+ Interactions | Profile Delivery Server | | +--------+ Interactions | Profile Delivery Server | | |||
| Client |<==========================>| +---+ +---+ | | | Device |<==========================>| +---+ +---+ | | |||
| (SIP UA)| (Profile Life Cycle) | |PNC| |PCC| | | +--------+ (Profile Life Cycle) | |PNC| |PCC| | | |||
+---------+ | +---+ +---+ | | | +---+ +---+ | | |||
+-------------------------+ | +-------------------------+ | |||
PNC = Profile Notification Component | PNC = Profile Notification Component | |||
PCC = Profile Content Component | PCC = Profile Content Component | |||
Framework Reference Model | Framework Reference Model | |||
The PDS is subdivided into two logical components: | The PDS is subdivided into two logical components: | |||
o Profile Notification Component (PNC), responsible for enrolling | o Profile Notification Component (PNC), responsible for enrolling | |||
Clients in Profile event subscriptions and providing Profile | devices in Profile event subscriptions and providing Profile | |||
change notifications; | change notifications; | |||
o Profile Content Component (PCC), responsible for storing, | o Profile Content Component (PCC), responsible for storing, | |||
providing access to, and accepting updates related to profile | providing access to, and accepting modifications related to | |||
content. | profile content. | |||
SIP deployments vary considerably. To be effective, the | SIP deployments vary considerably. For the sake of simplicity, two | |||
configuration framework needs to consider a comprehensive set of | deployment scenarios representing either end of the SIP deployment | |||
scenarios that is representative of most deployments. The figure | spectrum are presented. | |||
below provides a system level view of the device, user and Service | ||||
Provider relationships that may be involved. | In the simplest scenario, a device connects through a network that is | |||
controlled by a single provider who provides the local-network, | ||||
manages the devices, and offers services to the users. The Provider | ||||
propogates profile data to the device that contains all the necessary | ||||
information to obtain services in the network (including information | ||||
related to the local-network and the users). This is illustrated in | ||||
the following diagram. | ||||
-------------- | ||||
/ Local-network, \ | ||||
| Device & Service | | ||||
\ Provider / | ||||
---------------- | ||||
| | ||||
| | ||||
-------- | -------- | |||
/ \ | | Device | | |||
| Service | | ||||
| Provider | - > Provides 'Client'(e.g. allowed Users) | ||||
\ Y / & 'User'(such as Services) profile | ||||
-------- | -------- | |||
| ----- | | | |||
| / Local \ | | | |||
| | Network | | ---- | |||
| | Provider| - > Provides 'Local Network' profile | |User| | |||
| \ Z / data (e.g. STUN Server Address) | ---- | |||
| ----- | ||||
| / | Simple System Level Model | |||
There are also deployments where the device can connect via a local | ||||
network that is not controlled by the SIP Service Provider, for | ||||
example, devices that connect via available public WiFi hotspots. In | ||||
such cases, Local Network Providers may wish to provide local network | ||||
information such as bandwidth constraints to the devices. | ||||
Devices may also be controlled by Device Providers that are | ||||
independent of the SIP Service Provider who provides user services, | ||||
for example, kiosks that allow users to access services anywhere. In | ||||
such cases the profile data may have to be obtained from different | ||||
profile sources: local network provider, device provider and SIP | ||||
service provider. This is indicated in the following diagram. | ||||
-------- | ||||
/ SIP \ | ||||
| Service | -> Provides 'user' profile | ||||
| Provider | data (e.g., services | ||||
\ / configuration) | ||||
-------- -------- | ||||
| / \ | ||||
| | Device | -> Provides 'device' profile | ||||
| | Provider | data (e.g., device specifics) | ||||
| \ / | ||||
| --------- | ||||
| / | | / | |||
=============== | | / ------- | |||
| / / Local \ | ||||
| / | Network | | ||||
| | | Provider | -> Provides 'local-network' profile | ||||
| | \ / data (e.g., bandwidth) | ||||
| | ------- | ||||
| | / | ||||
| | / | ||||
| | | | ||||
=================== | ||||
( Local Network ) | ( Local Network ) | |||
=============== | =================== | |||
| | ||||
| | | | |||
| | | | |||
--------- | -------- | |||
| Client X| - > Needs the 'Client' profile (from Y) | | Device | -> Needs the 'local-network' | |||
--------- & 'local network' profile (from Z) | -------- and 'device' profile | |||
/ \ | / \ | |||
/ \ | / \ | |||
------ ------ | ------ ------ | |||
|User A| |User B| - > Users need 'User' profile (from Y) | |User A| |User B| -> Users need 'user' profiles | |||
------ ------ | ------ ------ | |||
Framework System Level Model | ||||
Based on the system level model, the following considerations are | ||||
relevant. | ||||
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. | ||||
Service provider relationships: | ||||
o The local network provider (the network the Client connects to) | ||||
and the Service Provider (that hosts the actual voice or other | ||||
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; | ||||
User-Client relationship: | ||||
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 observations above show a need for a clear distinction between | ||||
different Profile Types, based on the source and purpose of the | ||||
configuration data contained, and a need for these profiles to be | ||||
manageable by different PDSs. Accordingly, the framework identifies | ||||
the following minimal Profile Types. | ||||
Local-Network Profile: refers to profile data as provided by the | ||||
Local Network to which a Client is directly connected; | ||||
Device Profile: refers to profile data provided by the Service | ||||
Provider or other entity which is specific to the particular | ||||
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 | General System Level Model | |||
allowed, but is outside the scope of this document. | ||||
The remainder of this section provides more information on the two | As illustrated, the simplest deployments present a single profile | |||
vital components of the framework: Profile Life Cycle and Profile | source whereas others may present multiple profile sources. To be | |||
Types. | effective, a configuration framework needs to address various | |||
deployment scenarios. To address a vast majority of deployments this | ||||
framework specifies three distinct profiles, each of which can be | ||||
obtained from a different provider, and a profile life cycle common | ||||
to any profile type. | ||||
3.2. Profile Life Cycle | The understanding is that deployments in general will support the | |||
defined profile types. However, the framework allows for flexibility | ||||
in specialized cases. The devices are required to support all the | ||||
three profile types, unless configured otherwise (at a minimum they | ||||
need to support the device profile). The deployments are required to | ||||
support the device profile, and user profiles for known users. In | ||||
the presence of multiple profiles, a retrieval order is specified for | ||||
the devices. Additional profiles may also be specified outside the | ||||
scope of this document, but are expected to follow the same profile | ||||
life cycle. | ||||
Automated Profile delivery to Clients requires proactive behavior on | 3.2. Data Model and Profile Types | |||
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, | This framework specifies the following three profiles. Additional | |||
collectively termed Profile Life Cycle, are as follows: | extended profiles may also be defined. | |||
Profile Discovery: The process by which a Client finds PDS(s) | Local Network Profile: contains configuration data related to the | |||
capable of providing the Profiles it requires. This Framework | local network to which a device is directly connected. It is | |||
defines multiple Profile Types which may be served by one or more | expected to be provided by the Local Network Provider. | |||
PDSs. | ||||
Profile Enrollment: The process by which a Client makes itself known | Device Profile: cContains configuration data related to a specific | |||
to a PDS. While enrolling, the Client provides identity | device, provided by the Device Provider. | |||
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 | User Profile: contains configuration data related to a specific | |||
Client that either requested Profile contents are available, or | User, as required to reflect that user's preferences and the | |||
the content of one or more of the Profiles has changed. If the | particular services subscribed to. It is expected to be provided | |||
content is provided indirectly, the Client may retrieve the | by the SIP Service Provider providing services. | |||
profile from the specified URI upon receipt of the change | ||||
notification. | ||||
Profile Retrieval: The process of retrieving the content for each of | 3.3. Profile Life Cycle | |||
the Profiles requested by the Client. | ||||
Profile Change Upload: The process by which a Client or other entity | Automated profile delivery requires proactive behavior on the part of | |||
(for example, configuration management server) pushes a change to | a device. It also requires one or more PDSs which provide the | |||
Profile data to the PDS. | profile data. The set of communications that results in profile | |||
delivery is characterized by the profile life cycle. Each profile is | ||||
propogated using the profile life cycle. | ||||
3.3. Data Model and Profile Types | The life cycle is initiated when the device enrolls for profile data. | |||
Enrollment either results in profile data or in information | ||||
referencing content indirection. In the case of content indirection, | ||||
the provided retrieval procedures are used to retrieve the profile. | ||||
Additionally, the profile life cycle allows for profile change | ||||
operations by authorized entities. If a profile change operation is | ||||
successful, it results in profile change notifications to all | ||||
enrolled devices. | ||||
As outlined previously, this framework defines three specific Profile | The specific functional steps are as follows: | |||
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 | Profile Enrollment: the process by which a device requests, and if | |||
Local Network to which a Client is directly connected, as required | successful, enrolls with a PDS capable of providing a profile. A | |||
for the Client to operate effectively in that network. It is | successful enrollment is indicated by a notification containing | |||
expected to be provided by a PDS in the Local Network (or proxied | the profile information (contents or content indirection | |||
in some way). | information). Depending on the request, this could also result in | |||
a subscription to notification of profile changes. | ||||
Device Profile: Contains configuration data related to a specific | Profile Content Retrieval: the process by which a device retrieves | |||
Client, required for operation in the Service Provider's | profile contents, if the profile enrollment resulted in content | |||
environment. It is expected to be provided by the Service | indirection information. | |||
Provider responsible for configuring the Client. | ||||
User Profile: Contains configuration data related to the specific | Profile Change Notification: the process by which a device is | |||
User, as required to reflect that User's preferences and the | notified of any changes to an enrolled profile. This may provide | |||
particular services subscribed to. It is expected to be provided | the device with modified profile data or content indirection | |||
by Service Provider(s) responsible for maintaining the User's | information. | |||
configuration data. | ||||
To function effectively, the Client should obtain all of the | Profile Change Operation: The process by which an authorized entity | |||
necessary Profiles. Since each profile may potentially be served by | - such as a configuration management server or a device - pushes a | |||
a different source and the Client has no way of ascertaining that in | profile change to the PDS. | |||
advance, the framework requires the Client to discover the PDS | ||||
sources independently and request the corresponding Profiles from | ||||
each individually. | ||||
4. Use Cases | 4. Use Cases | |||
This section provides a small - non-comprehensive - set of | This section provides a small - non-comprehensive - set of | |||
representative use cases to further illustrate how this Framework can | representative use cases to further illustrate how this Framework can | |||
be utilized in SIP deployments. | be utilized in SIP deployments. The first use case is simplistic in | |||
nature, where as the second is relatively complex. The use cases | ||||
illustrate the effectiveness of the framework in either scenario. | ||||
For Security Considerations please refer to Section 9. | For Security Considerations please refer to Section 9. | |||
4.1. Client with different Data and SIP Service Providers | 4.1. Simple Deployment Scenario | |||
Description: Consider a user who obtains data (broadband) and SIP | Description: Consider a deployment scenario (for example, a small | |||
Services from two different Service Providers. For example, a user | private enterprise) where a single entity enables the local network, | |||
obtaining SIP services from a SIP Service Provider, via data | manages deployed devices and provides SIP services. The devices | |||
connectivity provided through a WiFi hotspot or hotel network. | never connect outside the local network and are each pre-configured | |||
with a single user. | ||||
The following assumptions apply: | The following assumptions apply: | |||
o For the sake of simplicity, the Client is assumed to be pre- | o The device profile data contains all the information necessary | |||
configured with a) the domain name of the SIP Service Provider, | for the device to participate in the local network and obtain | |||
b) the ability to generate a Client identifier (such as, based | services | |||
on MAC address) that can be used to request the device profile, | o The device is pre-configured to only request the device profile | |||
and b) a user identity which can be used to request the user | o The enrollment notification contains the profile data (profile | |||
profile | content retrieval is not required) | |||
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 | The following diagram illustrates this use case and highlights the | |||
communications relevant to the framework specified in this document. | communications relevant to the framework specified in this document. | |||
+-----------------+ +----------------------+ | +----------------------+ | |||
+--------+ | Data Service | | SIP Service Provider | | +--------+ | Local Network, Device| | |||
| Client | | Provider | | | | | Device | |& SIP Service Provider| | |||
|(SIP UA)| | | | SIP PDS PDS | | |(SIP UA)| | | | |||
+--------+ | DHCP PDS | | PROXY (Client) (User)| | +--------+ | DHCP PDS | | |||
+-----------------+ +----------------------+ | +----------------------+ | |||
| | | | | | | ||||
(A) |<==== DHCP ===>| | | | | | ||||
| | | | | | ||||
| | | | | | ||||
| SUBSCRIBE/NOTIFY | | | | | ||||
(B) |<=== local-network ===>| | | | | ||||
| profile | ||||
| | ||||
| <<Profile Retrieval>> | ||||
| | ||||
| SUBSCRIBE/NOTIFY | | | | ||||
(C) |<========= device profile ========>|<=====>| | | ||||
| | | | | ||||
| <<Profile Retrieval>> | ||||
| | ||||
| | ||||
| SUBSCRIBE/NOTIFY | | | ||||
(D) |<========== user profile ========>|<============>| | ||||
| | | | | | | | |||
| <<Profile Retrieval>> | (A) |<============== DHCP =============>| | | |||
| | | | | |||
| | | ||||
| | | ||||
(B) |<=========== Profile Enrollment ============>| | ||||
| | Profile data | ||||
| | is modified | ||||
| | via "Profile | ||||
| | Change Operation" | ||||
| | | ||||
(C) |<============ Profile Change ================| | ||||
| Notification | | ||||
| | | ||||
| | | ||||
The following is an explanation of the interactions in the diagram. | The following is an explanation of the interactions in the diagram. | |||
(A) Upon initialization, the Client obtains IP parameters (IP | (A) Upon initialization, the device obtains IP configuration | |||
address, DNS) using DHCP (as an example) | parameters using DHCP | |||
(B) The Client proceeds to request the 'local-network' Profile Type. | (B) The device performs Profile Enrollment for the device profile; | |||
The PDS in the local network responds, allowing the Client to | the device profile data is contained in the enrollment | |||
retrieve the local-network profile | notification | |||
(C) The Client then proceeds to request the 'device' Profile Type | (C) Due to a modification of the device profile, a Profile Change | |||
using the pre-configured SIP Service Provider's domain name. | Notification is sent across to the device, along with the | |||
This request is received by a SIP Proxy in the SIP Service | modified profile | |||
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 | 4.2. Devices supporting multiple users from different Service Providers | |||
Description: Consider a single Client (for example, Kiosk at an | Description: Consider a single device (for example, Kiosk at an | |||
airport) that allows for multiple users to obtain services from a | airport) that allows for multiple users to obtain services from a | |||
list of pre-configured SIP Service Providers. | list of pre-configured SIP Service Providers. | |||
The following assumptions apply: | The following assumptions apply: | |||
o The Client is provided and managed by SIP Service Provider A. It | o Provider A is the Device and Local Network Provider for the | |||
is not pre-configured with any User Identities, but offers an | device, and the SIP Service Provider for user A; Provider B is | |||
interactive User Interface to enter Service Provider and User | the SIP Service Provider for user B | |||
information | o Profile enrollment always results in content indirection | |||
o SIP Service Provider A provides the local network connectivity, | information requiring profile content retrieval | |||
'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 | The following diagram illustrates the use case and highlights the | |||
communications relevant to the framework specified in this document. | communications relevant to the framework specified in this document. | |||
User User | User User | |||
A B +----------------------+ +----------------------+ | A B +----------------------+ +----------------------+ | |||
+--------+ | SIP Service Provider | | SIP Service Provider | | +--------+ | Provider | | Provider | | |||
| Client | | A | | B | | | Device | | A | | B | | |||
|(SIP UA)| | | | | | |(SIP UA)| | | | | | |||
+--------+ | DHCP PROXY PDS | | PROXY PDS | | +--------+ | DHCP PROXY PDS | | PROXY PDS | | |||
+----------------------+ +----------------------+ | +----------------------+ +----------------------+ | |||
| | | | | | | | | | | | | | |||
(A) |<====DHCP====>| | | | | | (A) |<====DHCP====>| | | | | | |||
| | | | | | | | | | | | |||
| | | | | | | | | | | | |||
| SUBSCRIBE/NOTIFY | | | | | | Profile Enrollment | | | | | |||
(B) |<local-network profile>|<====>| | | | (B) |<local-network profile>|<====>| | | | |||
| | | | |||
| <<Profile Retrieval>> | | <<Profile content retrieval>> | |||
| | | | |||
| | | | |||
| SUBSCRIBE/NOTIFY | | | | | | Profile Enrollment | | | | | |||
(C) |<== device profile ==> |<====>| | | | (C) |<== device profile ==> |<====>| | | | |||
| | | | |||
| <<Profile Retrieval>> | | <<Profile content retrieval>> | |||
| | | | |||
. | . | |||
. | . | |||
. | . | |||
[[User A attempts services]] | [[User A obtains services]] | |||
| SUBSCRIBE/NOTIFY | | | | | | Profile Enrollment | | | | | |||
(D) |<= user profile (A) => |<====>| | | | (D) |<= user profile (A) => |<====>| | | | |||
| | | | | | | | | | | | |||
| | | | |||
| <<Profile Retrieval>> | | <<Profile content retrieval>> | |||
. | . | |||
. | . | |||
. | . | |||
. | . | |||
[[User B attempts services]] | [[User B obtains services]] | |||
| | | | |||
| SUBSCRIBE/NOTIFY | | | | Profile Enrollment | | | |||
(E) |<=========== user profile (B) ==========>|<=========>| | (E) |<=========== user profile (B) ==========>|<=========>| | |||
| | | | | | | | |||
| <<Profile Retrieval>> | | <<Profile content retrieval>> | |||
| | | | |||
The following is an explanation of the interactions in the diagram. | The following is an explanation of the interactions in the diagram. | |||
(A) Upon initialization, the Client obtains IP parameters (IP | (A) Upon initialization, the device obtains IP configuration | |||
address, DNS) using DHCP | parameters using DHCP. This also provides the local domain | |||
(B) Once local IP connectivity is established and the SIP stack | information to help with local-network profile enrollment | |||
initialized, the Client proceeds to request the 'local-network' | (B) The device requests profile enrollment for the local network | |||
Profile Type. It receives a response from the PDS in Service | profile. It receives an enrollment notification containing | |||
Provider A's network (the local network). The Client retrieves | content indirection information from Provider A's PDS. The | |||
the profile (this may contain useful information such as | device retrieves the profile (this contains useful information | |||
firewall port restrictions, available bandwidth etc) | such as firewall port restrictions and available bandwidth) | |||
(C) The Client then proceeds to request the 'device' Profile Type. | (C) The device then requests profile enrollment for the device | |||
It receives a response containing the profile retrieval from the | profile. It receives an enrollment notification resulting in | |||
PDS in Service Provider A's network. The Client retrieves the | device profile content retrieval. The device initializes the | |||
data provided in the Client Profile (this may provide data | User interface for services. | |||
regarding Users such as the list of SIP Service Providers the | (D) User A with a pre-existing subscription with Provider A attempts | |||
Client can communicate with). The Client initializes the User | communication via the user Interface. The device uses the user | |||
interface for services. | supplied information (including any credential information) and | |||
(D) User A with a pre-existing subscription with Service Provider A | requests profile enrollment for user A's profile. Successful | |||
attempts communication via the User Interface. This results in | enrollment and profile content retrieval results in services for | |||
a prompt - and responses - for identification and | user A. | |||
authentication. The Client uses the provided information and | (E) At a different point in time, user B with a pre-existing | |||
communicates with Service Provider A. Once authenticated and | subscription with Provider B attempts communication via the user | |||
authorized, it proceeds to request the 'User' Profile Type. The | Interface. It enrolls and retreives user B's profile and this | |||
PDS responds with the profile retrieval information. The Client | results in services for user B. | |||
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 | 5. Profile Delivery Framework | |||
This section details the framework requirements. The Profile Life | This section details the framework requirements. The Profile Life | |||
Cycle (introduced in Section 3), is examined in further detail, with | Cycle (introduced in Section 3), is examined in further detail, with | |||
requirements that apply to the Client and the PDS. Unless explicitly | requirements that apply to the device and the PDS. Unless explicitly | |||
enhanced or indicated by an implementing specification, the Client | enhanced or indicated by an implementing specification, the device | |||
and the PDS MUST follow the Profile Life Cycle requirements stated in | and the PDS MUST follow the Profile Life Cycle requirements stated in | |||
this section for all supported Profile Types. | this section for all supported profile types. | |||
A high-level representation of the framework is shown in the | A high-level representation of the framework is shown in the | |||
following state diagram. Each of the specified Profile Types is | following state diagram. Each of the specified profile types is | |||
retrieved individually, in the specified order (see below), until all | retrieved individually, in the specified order (see below), until all | |||
needed Profiles have been received. For each retrieved Profile, the | needed Profiles have been received. | |||
Client then awaits any Change Notifications | ||||
--------------- | --------------- | |||
/ Client \ | / Device \ | |||
\ Initialization/ | \ Initialization/ | |||
--------------- | --------------- | |||
| | | | |||
| Completes IP initialization; | | Completes IP initialization; | |||
| Initializes SIP stack | | Initializes SIP stack | |||
| | | | |||
V | V | |||
-------------- YES --------------- | -------------- | |||
________\ / All profiles?\_____\ | Await Change | | ________\ / All profiles?\ | |||
| / \ retrieved? / / | Notifications | | | / \ retrieved? / | |||
| -------------- --------------- | | -------------- | |||
| | | | | | |||
| | NO; attempt | | | NO; attempt | |||
| | Profile Request | | | Profile Request | |||
| | in specified order | | | in specified order | |||
| | | | | | |||
| V | | V | |||
| ------------ | | ------------ | |||
___________/ Profile \ | ___________/ Profile \ | |||
\ Life Cycle / | \ Life Cycle / | |||
------------ | ------------ | |||
Framework state diagram | Framework state diagram | |||
The Profile Life Cycle, within each Profile Type, is illustrated | The Profile Life Cycle, for each profile, is illustrated in the | |||
further as in the state diagram below. | diagram below. | |||
------------- All methods -------- | ------------- { Device enrolls | |||
________\ / Profile \ ............\ / Error \ | / Profile \ ...{ and obtains | |||
| / \ Discovery / exhausted / \Handling/ | \ Enrollment / { enrollment | |||
| ------------- -------- | ------------- { notification | |||
| | | | | |||
| | | | | |||
| Try | Send request | SUCCESS | |||
| alternate | for Profile | | | |||
| method(s) | Enrollment | | | |||
| | | ...PDS... V ...DEVICE... | |||
__________________________________ | ||||
| | | | | | |||
| V | ||||
| FAILURE ------------ | ||||
|__________/ Profile \ | ||||
^ \ Enrollment / | ||||
^ ------------ | ||||
| | | | | | |||
| FAILURE | | Active | | |||
Subscription? | | ||||
(i.e, not a one | | ||||
time fetch) | | ||||
| | | | | | |||
| YES | | ||||
| | | | | | |||
V V | ||||
-------------- | ||||
/ Profile Change \ __________________\ Content | ||||
\ Notification / / Indirection? | ||||
-------------- | | ||||
^ | | ||||
| | YES | ||||
| SUCCESS | | ||||
| V | | V | |||
| Timeout ------------- | -------------- ---------------- | |||
_________ / Profile \ | / Profile Change\ / Profile Content \ | |||
\ Notification/ | \ Operation / \ Retrieval / | |||
------------- | --------------- ----------------- | |||
| | ||||
| | ||||
|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). | ||||
'Profile Discovery' and 'Profile Enrollment' are closely coupled. | ||||
Failure to enroll (for example, no response is received for the | ||||
SUBSCRIBE) results in alternate 'Profile Discovery' methods until | ||||
success is achieved or all the methods are exhausted (resulting in | ||||
error handling). Simiarly, the initial 'Profile Notification' is | ||||
closely coupled to enrollment. Failure to receive the initial | ||||
notification also results in alternate discovery methods. | ||||
'Profile Retrieval' is accomplished using the contents of the Profile | The Profile Life Cycle is initiated when the device transmits an | |||
Notification. This can either contain the profile data or a content | enrollment request for a specific profile. If this is accepted, it | |||
indirection method to achieve it. | results in an enrollment notification that contains the profile data | |||
or profile content indirection information. Unless the enrollment | ||||
request indicates a one-time profile request, it also results in | ||||
enrollment for profile change notifications. If the profile is | ||||
modified at any point in time, the profile change notification is | ||||
transmitted to the device. Notifications due to profile enrollment | ||||
or change operation may result in content indirection in which case | ||||
the device uses profile content retrieval to obtain the profile data. | ||||
The Profile Life Cycle is the same for all the Profile Types, but | The Profile Life Cycle is the same for all the profile types, but | |||
there are different requirements in each step based on the Profile | there are different requirements in each step based on the profile | |||
Types. This framework defines three Profile Types and an order that | types. This framework defines three profile types and an order that | |||
MUST be followed by the Client in requesting them (when it retrieves | MUST be followed by the device in requesting them (when it retrieves | |||
two or more of the defined Profile Types), as follows: | two or more of the defined profile types), as follows: | |||
o local-network | o local-network | |||
o device | o device | |||
o user | o user | |||
The sub-sections that follow specify the Profile Life Cycle details, | The sub-sections that follow specify the Profile Life Cycle details, | |||
with specific requirements based on each Profile Type. | with specific requirements based on each profile type. | |||
5.1. Profile Discovery | 5.1. Profile Enrollment | |||
The first step to obtaining a profile is PDS Discovery. This is | The first step to obtaining a profile is PDS Enrollment. This is | |||
accomplished by creating a profile subscription using the Event | initiated by the device and involves: | |||
Package described in Section 6, and preparing for Profile Enrollment. | ||||
Each Profile Type requires its own subscription and based on the | o creating a profile enrollment subscription | |||
o transmitting a profile enrollment request | ||||
o receiving a profile enrollment notification | ||||
The processes are interlinked and retries encompass all three phases. | ||||
For example, if the enrollment request does not result in a profile | ||||
enrollment notification, the device is required to retry alternate | ||||
profile enrollment subscription creation options. Only when all the | ||||
enrollment subscription creation options are exhausted does the | ||||
device assume that the profile enrollment has failed. The processes | ||||
themselves are illustrated in the following sub-sections. | ||||
5.1.1. Creation of Enrollment Subscription | ||||
Each profile type requires its own subscription and based on the | ||||
entity requesting it, presents certain unique requirements (for | entity requesting it, presents certain unique requirements (for | |||
example, the Client identifier is provided for the Device Profile | example, the device identifier is provided for the device profile | |||
Type where as the User identifier is provided for the User Profile | type where as the user identifier is provided for the user profile | |||
Type). Further, the Profile Types are aimed at different PDSs and | type). Further, the profile types are aimed at different PDSs and | |||
hence are identified differently (for example, the local-network is | hence are identified differently (for example, the local-network is | |||
identified by the local domain name where as the Service Provider is | identified by the local domain name where as the Service Provider is | |||
identified based on the Service Provider's domain name). Some of | identified based on the Service Provider's domain name). Some of | |||
this information can be obtained in multiple ways (such as local | this information can be obtained in multiple ways (such as local | |||
domain information that can be configured statically or dynamically) | domain information that can be configured statically or dynamically) | |||
and the Client may have to try different information sources to | and the device may have to try different information sources to | |||
obtain the required information (for example, dynamic configuration | obtain the required information (for example, dynamic configuration | |||
can override statically configured information). Based on these | can override statically configured information). Based on these | |||
considerations, the framework defines different rules for obtaining | considerations, the framework defines different rules for obtaining | |||
and presenting the information for each Profile Type. Additionally, | and presenting the information for each profile type. Additionally, | |||
when more than one information source is possible for the | when more than one information source is possible for the | |||
information, it is presented as well. This is highlighted in the | information, it is presented as well. This is highlighted in the | |||
following sub-sections. | following sub-sections. | |||
5.1.1. SIP SUBSCRIBE for the Local-Network Profile Type | 5.1.1.1. SIP SUBSCRIBE for the Local-Network profile type | |||
Before attempting to create a SIP SUBSCRIBE requesting the Local- | Before attempting to create a SIP SUBSCRIBE requesting the local- | |||
Network Profile, the Client MUST have established local network | network profile, the device MUST have established local network | |||
connectivity. It MUST also have knowledge of the local network | connectivity. It MUST also have knowledge of the local network | |||
domain either via static configuration or dynamic discovery (using | domain either via static configuration or dynamic discovery via | |||
DHCP [RFC2131], option 15 [RFC2132]). The following requirements | DHCPv4 ([RFC2131]) or DHCPv6 ([RFC3315]). The following requirements | |||
apply: | apply: | |||
o the user part of the Request URI MUST NOT be provided. The host | o the user part of the Request URI MUST NOT be provided. The host | |||
and port part of the Request URI MUST be set to the local network | and port part of the Request URI MUST be set to the concatenation | |||
domain | of "sipuaconfig" and the local network domain | |||
o the user part of the "From" field MUST be the Identifier that the | o a user AOR, if known to the device MUST be used to populate the | |||
Client will use to request the 'device' Profile Type | "From" field, unless privacy requirements prohibit its use (this | |||
o the host and port part of the "From" field MUST be set to the | is useful if the user has privileges in the local network beyond | |||
local network domain | those of the default user) | |||
o a user AOR, if known to the Client MUST be provided in the | o if a user AOR is not known, the user portion of the "From" field | |||
"network-user" event header parameter, unless privacy requirements | MUST be set to "anonymous"; the host and port portion of the | |||
prohibit its use (this is useful if the user has privileges in the | Request URI MUST be set to the concatenation of "sipuaconfig" and | |||
local network beyond those of the default user) | the local network domain | |||
o the "device-id" event header parameter MUST be set to the device | ||||
identifier that the device will use to request the device profile | ||||
For example: If the Client requested and received the local domain | For example: If the device requested and received the local domain | |||
name via DHCP to be: airport.example.net, then the Local-Network | name via DHCP to be: airport.example.net, then the Local-Network | |||
Profile SUBSCRIBE Request URI would look like: | Profile SUBSCRIBE Request URI would look like: | |||
sip:airport.example.net | sip:sipuaconfig.airport.example.net | |||
The Event header would look like the following if the Client decided | The Event header would look like the following if the device decided | |||
to provide sip:alice@example.com as the user's AOR. (Alice may have | to provide MAC%3a00DF1E004CD0@airport.example.net as the device | |||
a prior arrangement with the local network operator giving her | identifier. (Alice may have a prior arrangement with the local | |||
special privileges.): | network operator giving her special privileges.) | |||
Event: ua-profile;profile-type=local-network; | Event: ua-profile;profile-type=local-network; | |||
network-user="sip:alice@example.com" | device-id="sip:MAC%3a00DF1E004CD0@airport.example.net" | |||
The Local-Network Profile SUBSCRIBE Request URI does not have a user | ||||
The local-network profile SUBSCRIBE Request URI does not have a user | ||||
part so that the URI is distinct between the "local" and "device" | 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 | 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 | 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 | servers. | |||
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 | The From field is populated with the user AOR, if available. This | |||
same (or similar) Local-Network Profile, the uniqueness of the From | allows the local network provider to propagate user-specific profile | |||
field provides an important capability. Having unique From fields | data, if available. The "device-id" event header parameter is set to | |||
allows the management of the local network to track user agents | the device identifier. Even though every device may get the same (or | |||
similar) Local-Network Profile, the uniqueness of the "device-id" | ||||
event header provides an important capability. Having unique From | ||||
fields allows the management of the local network to track devices | ||||
present in the network and consequently also manage resources such as | present in the network and consequently also manage resources such as | |||
bandwidth and port allocation. | bandwidth and port allocation. | |||
For example: If the Client requested and received the local domain | 5.1.1.2. SIP SUBSCRIBE for the Device Profile Type | |||
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 | The device profile type allows the Service Provider managing a device | |||
to provide Client-specific configuration information. To enable | to provide device-specific configuration information. To enable | |||
this, the Request URI needs to identify the Client and the PDS domain | this, the Request URI needs to identify the device and the PDS domain | |||
within which it is recognizable. Accordingly, this Framework | within which it is recognizable. Accordingly, this Framework | |||
presents the following requirements for the formation of a | presents the following requirements for the formation of a | |||
Subscription Request URI to request the "device" Profile Type | Subscription Request URI to request the "device" profile type | |||
o the user portion of the Request URI MUST be set to a unique Client | o the user portion of the Request URI MUST be set to a unique device | |||
Identifier | Identifier | |||
o the host and port portion of the Request URI MUST be set to the | o the host and port portion of the Request URI MUST be set to the | |||
PDS domain | PDS domain | |||
The following sub-sections explain identification of - and the | The following sub-sections explain identification of - and the | |||
requirements related to - the Client Identifier and the PDS domain | requirements related to - the device Identifier and the PDS domain | |||
discovery. | discovery. | |||
5.1.2.1. Client Identifier | 5.1.1.2.1. Device Identifier | |||
The Client profile could be specific to each Client in a SIP | The device profile could be specific to each device in a SIP | |||
deployment (for example, vendor/model) or shared across Client types | deployment (for example, vendor/model) or shared across device types | |||
(for example, based on services and service tiers). Further, the | (for example, based on services and service tiers). Further, the | |||
same Client might be provided different configuration profiles based | same device might be provided different configuration profiles based | |||
on deployment models. Client Identifiers play a significant role in | on deployment models. Device Identifiers play a significant role in | |||
ensuring delivery of the correct profile and hence need to be unique | ensuring delivery of the correct profile and hence need to be unique | |||
within a PDS domain to support the various deployment models. | within a PDS domain to support the various deployment models. | |||
This Framework requires that Client Identifiers MUST be unique and | This Framework requires that device Identifiers MUST be unique and | |||
persistent over the lifetime of a Client. Client Identifier | persistent over the lifetime of a device. Device Identifier | |||
representations auto-generated by Clients SHOULD be based on MAC | representations auto-generated by devices SHOULD be based on MAC | |||
address or UUID ([RFC4122]) based representations. A Client may use | address or UUID ([RFC4122]) based representations. A device may use | |||
alternate Client identifiers (for example, SIP URIs) obtained via | alternate device identifiers (for example, SIP URIs) obtained via | |||
pre-configuration or dynamic configuration (for example, Client | pre-configuration or dynamic configuration (for example, device | |||
profile). | profile). | |||
If a MAC address is used, the following requirements apply: | If a MAC address is used, the following requirements apply: | |||
o the Client identifier MUST be formatted as the characters "MAC:" | o the device identifier MUST be formatted as the characters "MAC:" | |||
followed by a twelve digit hexadecimal upper case representation | followed by a twelve digit hexadecimal upper case representation | |||
of the MAC address to form a proper URN ([RFC2141]). The MAC | of the MAC address to form a proper URN ([RFC2141]). The MAC | |||
address representation MUST NOT include visual separators such as | address representation MUST NOT include visual separators such as | |||
colons and whitespaces. The representation is denoted using the | colons and whitespaces. The representation is denoted using the | |||
following ABNF syntax | following ABNF syntax | |||
mac-ident = MAC ":" 12UHEX | mac-ident = MAC ":" 12UHEX | |||
MAC = %x4d.41.43 ; MAC in caps | MAC = %x4d.41.43 ; MAC in caps | |||
UHEX = DIGIT / %x41-46 ; uppercase A-F | UHEX = DIGIT / %x41-46 ; uppercase A-F | |||
o the MAC address MUST only be used to represent a single Client. | o the MAC address MUST only be used to represent a single device. | |||
It MUST NOT be used if more than one Client can potentially use | It MUST NOT be used if more than one device can potentially use | |||
the same MAC Address (for example, multiple software Clients on a | the same MAC Address (for example, multiple software entities on a | |||
single platform). In such cases, the UUID representation SHOULD | single platform). In such cases, the UUID representation SHOULD | |||
be used | be used | |||
If a UUID is used, the following requirements MUST apply: | If a UUID is used, the following requirements MUST apply: | |||
o the same approach to defining a user agent Instance ID as | o the same approach to defining a user agent Instance ID as | |||
[RFC4122] MUST be used | [RFC4122] MUST be used | |||
o when the URN is used as the user part of the URI, it MUST be URL | o when the URN is used as the user part of the URI, it MUST be URL | |||
escaped | escaped | |||
The colon (":") is not a legal character (without being | The colon (":") is not a legal character (without being | |||
escaped) in the user part of an addr-spec ([RFC4122]). | escaped) in the user part of an addr-spec ([RFC4122]). | |||
For example the instance ID: | For example the instance ID: | |||
urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com | urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com | |||
would be escaped to look as follows in a URI: | would be escaped to look as follows in a URI: | |||
sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@ | sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@ | |||
example.com | example.com | |||
The ABNF for the UUID representation is provided in [RFC4122] | The ABNF for the UUID representation is provided in [RFC4122] | |||
5.1.2.2. PDS Domain Discovery | 5.1.1.2.2. PDS Domain Discovery | |||
A Client needs to identify the PDS domain to form the host and port | A device needs to identify the PDS domain to form the host and port | |||
part of the Request URI. Ideally, this information should be | part of the Request URI. Ideally, this information should be | |||
obtained via a single method. However, support for various | obtained via a single method. However, support for various | |||
deployment models implies multiple Client environments (for example, | deployment models implies multiple device environments (for example, | |||
residential routers, enterprise LANs, WLAN hotspots, dialup modem | residential routers, enterprise LANs, WLAN hotspots and dialup modem) | |||
etc) and presents hurdles to specifying a single method (for example, | and presents hurdles to specifying a single method (for example, if a | |||
if a Client is always in the SIP Service Provider's network one could | device is always in the SIP Service Provider's network one could use | |||
use DHCP). To accommodate multiple deployment scenarios, the | DHCP). To accommodate multiple deployment scenarios, the framework | |||
framework specified in this document presents multiple approaches. | specified in this document presents multiple approaches. | |||
Clients MUST follow the procedures specified below in the order | Devices MUST follow the procedures specified below in the order | |||
presented, unless exceptions are made by Client manufacturers or | presented, unless exceptions are made by device manufacturers or | |||
Service Providers who may provide an option for the user to choose | Device Providers who may provide an option for the user to choose the | |||
the order (to suit specific deployment models, for example). | order (to suit specific deployment models, for example). | |||
1. Service Provider pre-configuration | 1. Service Provider pre-configuration | |||
The Client MAY be pre-configured with information that can be | The device MAY be pre-configured with information that can be | |||
utilized to identify the host and port of the Request URI. The | utilized to identify the host and port of the Request URI. The | |||
information can be provided - as examples - when the Client is | information can be provided - as examples - when the device is | |||
manufactured, by using Service Provider entities (flash card, SIM | manufactured, by using Service Provider entities (flash card, SIM | |||
card) or via a Service Provider specific method (for example, | card) or via a Service Provider specific method (for example, | |||
information or methods that lead to self subscription). If the | information or methods that lead to self subscription). If the | |||
Client is specified to utilize this approach, it MUST attempt to | device is specified to utilize this approach, it MUST attempt to | |||
do so before trying other methods. The details of how this is | do so before trying other methods. The details of how this is | |||
accomplished are beyond the scope of this document. | accomplished are beyond the scope of this document. | |||
2. IP Configuration | 2. IP Configuration | |||
If pre-configuration is not an option, or not available, IP | If pre-configuration is not an option, or not available, IP | |||
configuration MUST be utilized to try and obtain information that | configuration MUST be utilized to try and obtain information that | |||
can help with identification of the host and port for the Request | can help with identification of the host and port for the Request | |||
URI. The framework defines the following methods within this | URI. The framework defines the following methods within this | |||
procedure to accomplish this. Clients MUST follow the methods | procedure to accomplish this. device MUST follow the methods | |||
defined, in the order specified, i.e. if the first option cannot | defined, in the order specified, i.e. if the first option cannot | |||
be accomplished or results in a failure, then next method is | be accomplished or results in a failure, then next method is | |||
tried. Failure of a specific method is indicated when the Client | tried. Failure of a specific method is indicated when the device | |||
cannot successfully complete Profile Enrollment. | cannot successfully complete Profile Enrollment. | |||
2a. DHCP option 120: | 2a. DHCP option for SIP server: | |||
Clients that support DHCP MUST attempt to obtain the host and | Devices that support DHCP MUST attempt to obtain the host and | |||
port of the outbound proxy during the DHCP process, using the | port of the outbound proxy during the DHCP process, using the | |||
SIP DHCP option 120 [RFC3361] and use these as the host and | DHCP option for SIP servers defined in [RFC3361] or [RFC3319] | |||
(for IPv4 and IPv6 respectively), and use these as the host and | ||||
port part of the request URI. | port part of the request URI. | |||
For example, a MAC based Client Identifier with a DHCP option | For example, a MAC based device identifier with a DHCP SIP | |||
120 indicating example.com, the Request URI would be | servers option indicating example.com, the Request URI would be | |||
constructed as sip:MAC%3aABC123EFD456@example.com | constructed as sip:MAC%3aABC123EFD456@example.com | |||
2b. Local IP Network Domain: | 2b. Local IP Network Domain: | |||
- Clients that support DHCP MUST attempt to obtain the local IP | - devices that support DHCP MUST attempt to obtain the local IP | |||
network domain during the DHCP process, using DHCP option 15 | network domain during the DHCP process, using DHCP option 15 | |||
and use these as the host and port part of the request URI | and use these as the host and port part of the request URI | |||
using the technique specificed in [RFC3263] | using the technique specificed in [RFC3263] | |||
+ For example, a MAC based devices identifier with a DHCP | ||||
+ For example, a MAC based Client Identifier with a DHCP | ||||
option 15 indicating local.example.com, the Request URI | option 15 indicating local.example.com, the Request URI | |||
would be constructed as | would be constructed as | |||
sip:MAC%3aABC123EFD456@local.example.com | sip:MAC%3aABC123EFD456@local.example.com | |||
- If the local IP network domain is available (previous | - If the local IP network domain is available (previous | |||
method), but the usage of the local IP Network domain results | method), but the usage of the local IP Network domain results | |||
in a failure, the Client MUST use the local IP network domain, | in a failure, the device MUST use the local IP network domain, | |||
prefixing it using the label "sipuaconfig." | prefixing it using the label "sipuaconfig." | |||
+ For example, a MAC based Client Identifier with a DHCP | + For example, a MAC based device Identifier with a DHCP | |||
option 15 indicating local.example.com, the Request URI | option 15 indicating local.example.com, the Request URI | |||
would be constructed as | would be constructed as | |||
sip:MAC%3aABC123EFD456@sipuaconfig.local.example.com | sip:MAC%3aABC123EFD456@sipuaconfig.local.example.com | |||
3. Manual | 3. Manual | |||
If pre-configuration and IP Configuration are not options or | If pre-configuration and IP Configuration are not options or | |||
result in failures, the Client SHOULD provide a means for the user | result in failures, the device SHOULD provide a means for the user | |||
to present information that may help with the retrieval process. | to present information that may help with the retrieval process. | |||
Exceptions to this requirement MAY include Clients with no user | Exceptions to this requirement MAY include devices with no user | |||
interface appropriate for such entry. | interface appropriate for such entry. | |||
This framework provides the following alternatives which can be | This framework provides the following alternatives which can be | |||
considered individually or together, in any order. | considered individually or together, in any order. | |||
Service Provider PDS information: The user SHOULD be allowed to | Device Provider PDS information: The user SHOULD be allowed to | |||
present the host and port information which can help with the | present the host and port information which can help with the | |||
creation of the Subscription URI to locate a PDS capable of | creation of the Subscription URI to locate a PDS capable of | |||
providing the profile. | providing the profile. | |||
Service Provider Configuration Server information The user MAY be | Device Provider Configuration Server information The user MAY be | |||
allowed to present information pertaining to a configuration | allowed to present information pertaining to a configuration | |||
server that provides the Device Profile, not using a PDS as | server that provides the device profile, not using a PDS as | |||
defined in this framework. This framework specifies one such | defined in this framework. This framework specifies one such | |||
possible process in Section 5.6.1. | possible process in Section 5.5.1. | |||
5.1.3. SIP SUBSCRIBE for the User Profile Type | 5.1.1.3. SIP SUBSCRIBE for the User Profile Type | |||
The User Profile allows the responsible SIP Service Provider to | The user profile allows the responsible SIP Service Provider to | |||
provide user-specific configuration. This is based on the User's | provide user-specific configuration. This is based on the user's | |||
Identity that is usually known in the network (for example, | identity that is usually known in the network (for example, | |||
associated with a subscription). Similar to the profiles provided to | associated with a subscription). Similar to the profiles provided to | |||
Clients, the content and propagation of User Profiles may partake | devices, the content and propagation of user Profiles may partake | |||
differently, based on deployment scenarios (for example, users | differently, based on deployment scenarios (for example, users | |||
belonging to the same subscription might - or might not - be provided | belonging to the same subscription might - or might not - be provided | |||
the same profile). However, each User is uniquely identified in a | the same profile). However, each user is uniquely identified in a | |||
SIP Service Provider's network using an Address Of Record (AOR). | SIP Service Provider's network using an Address Of Record (AOR). | |||
Clients implementing this framework MUST use the User's AOR to | Devices implementing this framework MUST use the user's AOR to | |||
populate the Request URI. | populate the Request URI. | |||
A Client MAY obtain the User's AOR using various methods such as pre- | A device MAY obtain the user's AOR using various methods such as pre- | |||
configuration, via the Device Profile or dynamically via a User | configuration, via the device profile or dynamically via a user | |||
Interface. | Interface. | |||
5.1.4. Caching of SIP Subscription URIs | 5.1.1.4. Caching of SIP Subscription URIs | |||
Creation of Subscription URIs is vital for successful Profile | Creation of Subscription URIs is vital for successful Profile | |||
Enrollment, required for Profile Notification and ultimately Profile | Enrollment. Unlike the user Profile - Local-Network and device | |||
Retrieval. Further - unlike the User Profile - Local-Network and | profiles are expected to be requested based on discovered information | |||
Device Profiles are expected to be requested based on discovered | (for example, domain name discovered via DHCP). These profile types | |||
information (for example, domain name discovered via DHCP). These | have different goals and hence, caching of the Subscription URI | |||
Profile Types have different goals and hence, caching of the | should be carefully considered. | |||
Subscription URI should be carefully considered. | ||||
The Local-Network Profile Type is aimed at obtaining information from | The Local-Network profile type is aimed at obtaining information from | |||
the local network. The local network can change across Client | the local network. The local network can change across device | |||
initializations (for example, User moves the Client from a home | initializations (for example, user moves the device from a home | |||
network to a workplace LAN). Thus, the Client SHOULD NOT remember | network to a workplace LAN). Thus, the device SHOULD NOT remember | |||
local-network profile subscription URIs across initializations. The | local-network profile subscription URIs across initializations. The | |||
Client SHOULD re-create the Subscription URI every time it moves to a | device SHOULD re-create the Subscription URI every time it moves to a | |||
new network or gets re-initialized. Exceptions may be cases where | new network or gets re-initialized. Exceptions may be cases where | |||
the Client can unambiguously determine changes to the local network. | the device can unambiguously determine changes to the local network. | |||
The Device Profile Type is aimed at obtaining information from the | The device profile type is aimed at obtaining information from the | |||
SIP Service Provider managing the Client. Once established, the | SIP Service Provider managing the device. Once established, the | |||
Service Provider does not change often (an example of an exception | Service Provider does not change often (an example of an exception | |||
would be the re-use of Clients across Service Providers). However, | would be the re-use of devices across Service Providers). However, | |||
if the discovery process is used, the Client can only be sure of | if the discovery process is used, the device can only be sure of | |||
having reached the Service Provider upon successful Profile | having reached the Service Provider upon successful Profile | |||
Enrollment and Profile Notification. Thus, the Client SHOULD cache | Enrollment and Profile Notification. Thus, the device SHOULD cache | |||
the Subscription URI for the Device Profile. When cached, the Client | the Subscription URI for the device profile. When cached, the device | |||
should use the cached Subscription URI upon a reset. Exceptions | should use the cached Subscription URI upon a reset. Exceptions | |||
include cases where the Client identifier has changed (for example, | include cases where the device identifier has changed (for example, | |||
new network card with a new MAC address), Service Provider | new network card with a new MAC address), Service Provider | |||
information has changed (for example, user initiates change) or the | information has changed (for example, user initiates change) or the | |||
Client cannot obtain its profile using the Subscription URI. | device cannot obtain its profile using the Subscription URI. | |||
Clients SHOULD NOT cache the Subscription URI for the Device | Devices SHOULD NOT cache the Subscription URI for the device | |||
Profile Type until successful Profile Notification. The reason | profile type until successful Profile Notification. The reason | |||
for this is that a PDS may send 202 responses to SUBSCRIBE | for this is that a PDS may send 202 responses to SUBSCRIBE | |||
requests and NOTIFY responses to unknown Clients (see Section 6.6) | requests and NOTIFY responses to unknown devices (see Section 6.6) | |||
with no profile data or URIs. Thus, successful Profile | with no profile data or URIs. Thus, successful Profile | |||
Notification is the only sure way to know that the Subscription | Notification is the only sure way to know that the Subscription | |||
URI is valid. | URI is valid. | |||
5.2. Profile Enrollment | 5.1.2. Profile Enrollment Request Transmission | |||
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 - | A device requesting a profile type specified in this document - and | |||
and is successful in forming a Subscription URI - MUST enroll using | is successful in forming a Subscription URI - MUST enroll using the | |||
the event package defined, and as specified, in this framework (see | event package defined, and as specified, in this framework (see | |||
Section 6) . The following requirements apply: | Section 6) . The following requirements apply: | |||
o the Client MUST cater to the Event Package requirements specified | o the device MUST cater to the Event Package requirements specified | |||
in Section 6.2 (for example, indicate the Profile Type being | in Section 6.2 (for example, indicate the profile type being | |||
requested in the profile-type parameter) | requested in the profile-type parameter) | |||
o the Client MUST use the Subscription URI pertaining to the Profile | o the device MUST use the Subscription URI pertaining to the profile | |||
Type being requested, as specified in Section 5.1 | type being requested, as specified in Section 5.1 | |||
The SIP infrastructure receiving such requests is expected to relay | The SIP infrastructure receiving such requests is expected to relay | |||
and process profile enrollment requests. When a Profile Enrollment | and process profile enrollment requests. When a Profile Enrollment | |||
request is received by a PDS, it SHOULD accept and respond to any | request is received by a PDS, it SHOULD accept and respond to any | |||
profile requests. Exceptions are when Service Provider policy | profile requests. Exceptions are when Service Provider policy | |||
prevents such a response (for example, requesting entity is unknown). | prevents such a response (for example, requesting entity is unknown). | |||
Successful Profile Enrollment involves the following | Successful Profile Enrollment involves the following | |||
o Acceptance of the SUBSCRIBE request by a PDS (indicated via a 200 | o Acceptance of the SUBSCRIBE request by a PDS (indicated via a 200 | |||
response) | response) | |||
o Receipt of an initial Profile Notification within the timeouts as | o Receipt of an initial Profile Notification within the timeouts as | |||
specified in [RFC3265] | specified in [RFC3265] | |||
A Client SHOULD follow suitable BackOff and Retry mechanisms if a | ||||
A device SHOULD follow suitable BackOff and Retry mechanisms if a | ||||
successful Profile Enrollment does not happen within the expected | successful Profile Enrollment does not happen within the expected | |||
period. | period. | |||
5.3. Profile Notification | 5.1.3. Profile Enrollment Notification | |||
Successful Profile Enrollment leads to Profile Notification. This | Successful Profile Enrollment is indicated by an enrollment | |||
serves two purposes a) initial profile content following successful | notification. This provides either a) the profile contents b) | |||
Profile Enrollment and b) notification to the Client of modifications | content indirection information. If content indirection information | |||
to profile content. Failure to receive the initial NOTIFY following | is provided, the device retrieves the profile using Profile Content | |||
a successful enrollment MUST be treated the same as a failed | Retrieval. If the profile contents are provided, the following | |||
enrollment. Whenever a profile is changed, the PDS MUST NOTIFY all | requirements hold good: | |||
Clients currently subscribed to the changed profile. | ||||
For NOTIFY content please refer to Section 6.5. | o the device MUST make the new profiles effective within the | |||
specified timeframe, as described in Section 6.2 | ||||
o the device SHOULD cache (i.e. store persistently) the contents of | ||||
retrieved profiles, until overridden by subsequent Profile Change | ||||
Notifications (this avoids situations where a PDS is unavailable, | ||||
leaving the device without required configuration) | ||||
5.4. Profile Retrieval | Failure to receive the initial NOTIFY following a successful | |||
enrollment MUST be treated the same as a failed enrollment. In such | ||||
a scenario, the device MUST retry using alternate methods for | ||||
creation of the enrollment subscription and transmit an enrollment | ||||
request. If all the enrollment subscription creation have been | ||||
exhausted, the device MUST treat it as a failure to obtain the | ||||
profile and take appropriate measures. | ||||
Upon successful Profile Enrollment and Profile Notification, the | For NOTIFY content please refer to Section 6.5. | |||
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: | 5.2. Profile Content Retrieval | |||
o the PDS SHOULD secure the content of the profiles using one of the | Upon successful Profile Enrollment, the device can retrieve the | |||
techniques described in Section 9 | documents pertaining to the requested profile directly or via the | |||
o the Client MUST make the new profiles effective within the | URI(s) provided in the NOTIFY request as specified in Section 6.5. | |||
specified timeframe, as described in Section 6.2 | Profile Content Retrieval protocols and frameworks are out of scope | |||
o if content indirection is used, the Client SHOULD verify that it | for this specification. | |||
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 | 5.3. Profile Change Operation | |||
Configuration Profiles can change over time. This can be initiated | Configuration Profiles can change over time. Modifications can be | |||
by various entities (for example, via the Client, back-office | initiated by various entities (for example, via the device, back- | |||
components, end-user web interfaces into configuration servers, etc) | office components and end-user web interfaces for configuration | |||
and for various reasons (such as, change in user preferences, | servers) and for various reasons (such as, change in user | |||
modifications to services, enterprise-imposed common features or | preferences, modifications to services, enterprise-imposed common | |||
restrictions). This framework allows for such changes to be | features or restrictions). This framework allows for such changes to | |||
communicated to the PDS, using the term Profile Change Upload. | be communicated to the PDS, using the term Profile Change Operation. | |||
Any changes to a Profile as a result of Profile Change Upload MUST | Any changes to a Profile as a result of Profile Change Operation MUST | |||
result in a Profile Notification to all enrolled clients for that | result in a Profile Notification to all enrolled devices for that | |||
Profile, if any. | Profile, if any. | |||
Definition of specific mechanisms for Profile Change Upload are out | Definition of specific mechanisms for Profile Change Operation are | |||
of scope of this document. | out of scope of this document. | |||
5.6. Additional Considerations | 5.4. Profile Change Notification | |||
This section provides a special case for retrieval of the Device | Whenever a profile is changed, a PDS compliant with this framework | |||
Profile and highlights considerations and requirements on external | MUST NOTIFY all the devices currently subscribed to the profile under | |||
consideration. This process is termed Profile Change Notification. | ||||
For NOTIFY content please refer to Section 6.5. | ||||
5.5. 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. | entities such as Profile Data Frameworks. | |||
5.6.1. Manual retrieval of the Device Profile | 5.5.1. Manual retrieval of the Device Profile | |||
At a minimum, a Client requires the Device Profile to be able to | At a minimum, a device requires the device profile to be able to | |||
function effectively. However, the methods specified in this | function effectively. However, the methods specified in this | |||
document many fail to provide a Client with a profile. To illustrate | document may fail to provide a device with a profile. To illustrate | |||
with an example, consider the case of a Client that finds itself | with an example, consider the case of a device that finds itself | |||
behind a local network which does not provide information about DNS | behind a local network which does not provide information about DNS | |||
servers in the network (for example, misconfigured home network). In | servers in the network (for example, misconfigured home network). In | |||
such cases, it would be beneficial to employ an alternative means to | such cases, it would be beneficial to employ an alternative means to | |||
obtain the profile information (for example, resolvable DNS Servers | obtain the profile information (for example, resolvable DNS Servers | |||
could be part of the Client profile). While this specification | could be part of the device profile). While this specification | |||
recommends that such a method be made available, it also specifies | recommends that such a method be made available, it also specifies | |||
one such option using HTTP that is described in this sub-section. | one such option using HTTP that is described in this sub-section. | |||
Clients expected to encounter scenarios where Client profile | devices expected to encounter scenarios where propogation of the | |||
retrieval can be hindered may employ the specified - or any | device profile can be hindered may employ the specified - or any | |||
alternative - process. | alternative - process. | |||
The method being described involves the Client to utilize a HTTPS URI | The method being described involves the device to utilize a HTTPS URI | |||
(and any required credentials) based on either pre-configuration or | (and any required credentials) based on either pre-configuration or | |||
manual entry by the User (in cases where such an interface is | manual entry by the user (in cases where such an interface is | |||
possible). This can lead to the retrieval of the Device Profile | possible). This can lead to the retrieval of the device profile | |||
which may contain the properties for the SUBSCRIBE Request URI and | which may contain the properties for the SUBSCRIBE Request URI and | |||
credentials for Profile Enrollment and Profile Notification. This | credentials for Profile Enrollment and Profile Notification. This | |||
approach bootstraps the process in a different step in the cycle, but | approach bootstraps the process in a different step in the cycle, but | |||
uses the same framework. | uses the same framework. | |||
Further, this document defines a new HTTP request header "Event". | Further, this document defines a new HTTP request header "Event". | |||
The syntax of the HTTP Event header is the same as the SIP 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 | 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 | purpose of the HTTP Event header is to define the content of the | |||
state information to be retrieved. In particular, the state | state information to be retrieved. In particular, the state | |||
information is the Device, User or Local-Network Profile for the | information is the device, user or local-network profile for the | |||
Client. The SIP Event header parameters for this event package | device. The SIP Event header parameters for this event package | |||
("profile-type", "vendor", "model", "version") are also mandatory for | ("profile-type", "vendor", "model", "version") are also mandatory for | |||
the HTTP Event header as they are used to provide information as to | the HTTP Event header as they are used to provide information as to | |||
what profile type is requested along with information about the | what profile type is requested along with information about the | |||
device which may impact the contents of the profile.When the Client | device which may impact the contents of the profile. When the device | |||
starts with retrieval of the profile via HTTPS (instead of a SIP | starts with retrieval of the profile via HTTPS (instead of a SIP | |||
SUBSCRIBE to the event package), the device MUST provide the Event | SUBSCRIBE to the event package), the device MUST provide the Event | |||
header defined. | header defined. | |||
5.6.2. Client Types | 5.5.2. Device Types | |||
The examples in this framework tend to associate Clients with | The examples in this framework tend to associate devices with | |||
entities that are accessible to end-users. However, this is not | entities that are accessible to end-users. However, this is not | |||
necessarily the only type of Client that can utilize the specified | necessarily the only type of device that can utilize the specified | |||
Framework. Clients can be entities such as User Interfaces (that | Framework. devices can be entities such as user Interfaces (that | |||
allow for Client Configuration), entities in the network that do not | allow for device Configuration), entities in the network that do not | |||
directly communicate with any Users (for example, Service Provider | directly communicate with any users (for example, Service Provider | |||
deployed gateways) or elements in the Service Provider's network (for | deployed gateways) or elements in the Service Provider's network (for | |||
example, SIP servers). | example, SIP servers). | |||
5.6.3. Profile Data | 5.5.3. Profile Data | |||
This framework does not specify the contents for any Profile Type. | This framework does not specify the contents for any profile type. | |||
Follow-on standardization activities can address profile contents. | Follow-on standardization activities can address profile contents. | |||
However, it makes the following assumptions and recommendations: | However, it makes the following assumptions and recommendations: | |||
o When the Client receives multiple profiles, the contents of each | o When the device receives multiple profiles, the contents of each | |||
Profile Type will only contain data relevant to the entity it | profile type will only contain data relevant to the entity it | |||
represents. As an example, consider a Client that obtains all the | represents. As an example, consider a device that obtains all the | |||
defined profiles. Information pertaining to the local network is | defined profiles. Information pertaining to the local network is | |||
contained in the 'local-network' profile and not the'user' | contained in the 'local-network' profile and not the'user' | |||
profile. This does not preclude relevant data about a different | profile. This does not preclude relevant data about a different | |||
entity from being included in a Profile Type, for example, the | entity from being included in a profile type, for example, the | |||
'device' Profile Type may contain information about the Users | 'device' profile type may contain information about the users | |||
allowed to access services via the Client. A profile may also | allowed to access services via the device. A profile may also | |||
contain starting information to obtain subsequent Profiles | contain starting information to obtain subsequent Profiles | |||
o Data overlap SHOULD be avoided across Profile Types, unless | o Data overlap SHOULD be avoided across profile types, unless | |||
necessary. If data overlap is present, prioritization of the data | necessary. If data overlap is present, prioritization of the data | |||
is left to data definitions. As an example, the Device Profile | 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 | may contain the list of codecs to be used by the device and the | |||
User Profile (for a User on the Client) may contain the codecs | user Profile (for a user on the device) may contain the codecs | |||
preferred by the User. Thus, the same data (usable codecs) is | preferred by the user. Thus, the same data (usable codecs) is | |||
present in two profiles. However, the data definitions may | present in two profiles. However, the data definitions may | |||
indicate that to function effectively, any codec chosen for | indicate that to function effectively, any codec chosen for | |||
communication needs to be present in both the profiles. | communication needs to be present in both the profiles. | |||
5.6.4. Profile Data Frameworks | 5.5.4. Profile Data Frameworks | |||
This framework specified in this document does not address profile | This framework specified in this document does not address profile | |||
data representation, storage or retrieval protocols. It assumes that | data representation, storage or retrieval protocols. It assumes that | |||
the PDS has a PCC based on existing or other Profile Data Frameworks, | the PDS has a PCC based on existing or other Profile Data Frameworks, | |||
for example, XCAP ([I-D.ietf-simple-xcap]). | for example, XCAP ([I-D.ietf-simple-xcap]). | |||
While it does not impose vast constraints on any such framework, it | While it does not impose vast constraints on any such framework, it | |||
does allow for the propagation of profile content to PDS | does allow for the propagation of profile content to PDS | |||
(specifically the PCC). Thus, Profile Data or Retrieval frameworks | (specifically the PCC). Thus, Profile Data or Retrieval frameworks | |||
used in conjunction with this framework MAY consider techniques for | used in conjunction with this framework MAY consider techniques for | |||
propagating incremental, atomic changes to the PDS. For example, a | propagating incremental, atomic changes to the PDS. For example, a | |||
means for propagating changes to a PDS is defined in XCAP | means for propagating changes to a PDS is defined in XCAP | |||
([I-D.ietf-simple-xcap]). | ([I-D.ietf-simple-xcap]). | |||
5.6.5. Additional Profile Types | 5.5.5. Additional Profile Types | |||
This document specifies three profile types: local-network, device | This document specifies three profile types: local-network, device | |||
and user. However, there may be use cases for additional profile | and user. However, there may be use cases for additional profile | |||
types. For example, Profile Types for application specific profile | types. For example, profile types for application specific profile | |||
data. Definition of such additional Profile Types is not prohibited, | data. Definition of such additional profile types is not prohibited, | |||
but considered out of scope for this document. | but considered out of scope for this document. | |||
5.5.6. Deployment considerations | ||||
The framework defined in this document was designed to address | ||||
various deployment considerations, some of which are highlighted | ||||
below. | ||||
Provider relationships: | ||||
o The local network provider and the SIP service provider can often | ||||
be different entities, with no administrative or business | ||||
relationship with each other; | ||||
o There may be multiple SIP service providers involved, one for each | ||||
service that 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 the same device may subscribe to | ||||
different sets of services, from different Service Providers; | ||||
User-device relationship: | ||||
o The relationship between devices and users can be many-to-many | ||||
(for example, a particular device may allow for many users to | ||||
obtain subscription services through it, and individual users may | ||||
have access to multiple devices); | ||||
o Each user may have different preferences for use of services, and | ||||
presentation of those services in the device user interface; | ||||
o Each user may have different personal information applicable to | ||||
use of the device, either as related to particular services, or | ||||
independent of them. | ||||
6. Event Package Definition | 6. Event Package Definition | |||
The framework specified in this document proposes and specifies a new | The framework specified in this document proposes and specifies a new | |||
SIP Event Package as allowed by [RFC3265]. The purpose is to allow | SIP Event Package as allowed by [RFC3265]. The purpose is to allow | |||
for Clients to subscribe to specific Profile Types with PDSs and for | for devices to subscribe to specific profile types with PDSs and for | |||
the PDSs to notify the Clients with - or pointers to - profile data. | the PDSs to notify the devices with - or pointers to - profile data. | |||
The requirements specified in [RFC3265] apply to this package. The | The requirements specified in [RFC3265] apply to this package. The | |||
following sub-sections specify the Event Package description and the | following sub-sections specify the Event Package description and the | |||
associated requirements. The framework requirements are defined in | associated requirements. The framework requirements are defined in | |||
Section 5. | Section 5. | |||
6.1. Event Package Name | 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]. | |||
6.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: | header: | |||
"profile-type", "vendor", "model", "version", "effective-by" and | "profile-type", "vendor", "model", "version", "effective-by", | |||
"network-user". | "device-id" and "network-user". | |||
The following rules apply: | The following rules apply: | |||
o All the new parameters, with the exception of the "effective-by" | o All the new parameters, with the exception of the "effective-by" | |||
parameter MUST only be used in SUBSCRIBE requests and ignored if | parameter MUST only be used in SUBSCRIBE requests and ignored if | |||
they appear in NOTIFY requests | they appear in NOTIFY requests | |||
o The "effective-by" parameter is for use in NOTIFY requests only | o The "effective-by" parameter is for use in NOTIFY requests only | |||
and MUST be ignored if it appears in SUBSCRIBE requests | and MUST be ignored if it appears in SUBSCRIBE requests | |||
The semantics of these new parameters are specified in the following | The semantics of these new parameters are specified in the following | |||
sub-sections. | sub-sections. | |||
6.2.1. profile-type | 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. This document defines three | to be notified of subsequent changes. This document defines three | |||
logical types of profiles and their token names. They are as | logical types of profiles and their token names. They are as | |||
follows: | follows: | |||
local-network Specifying "local-network" type profile indicates the | local-network 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. | specific to the local network. | |||
device Specifying "device" type profile(s) indicates the desire for | device Specifying "device" type profile(s) indicates the desire for | |||
the profile data (URI when content indirection is used) and change | the profile data (URI when content indirection is used) and change | |||
notification of the contents of the profile that is specific to | notification of the contents of the profile that is specific to | |||
the device or user agent. | the device or user agent. | |||
user Specifying "user" type profile indicates the desire for the | user Specifying "user" type profile indicates the desire for the | |||
profile data (URI when content indirection is used) and change | profile data (URI when content indirection is used) and change | |||
notification of the profile content for the user. | notification of the profile content for the user. | |||
The "profile-type" is identified is identified in the Event header | The "profile-type" is identified is identified in the Event header | |||
parameter: profile-type. A separate SUBSCRIBE dialog is used for | parameter: profile-type. A separate SUBSCRIBE dialog is used for | |||
each Profile Type. The Profile Type associated with the dialog can | each profile type. The profile type associated with the dialog can | |||
then be used to infer which Profile Type changed and is contained in | then be used to infer which profile type changed and is contained in | |||
the NOTIFY or content indirection URI. The Accept header of the | the NOTIFY or content indirection URI. The Accept header of the | |||
SUBSCRIBE request MUST include the MIME types for all profile content | SUBSCRIBE request MUST include the MIME types for all profile content | |||
types for which the subscribing user agent wishes to retrieve | types for which the subscribing user agent wishes to retrieve | |||
profiles or receive change notifications. | profiles or receive change notifications. | |||
In the following syntax definition using ABNF, EQUAL and token are | In the following syntax definition using ABNF, EQUAL and token are | |||
defined in [RFC3261]. It is to be noted that additional Profile | defined in [RFC3261]. It is to be noted that additional profile | |||
Types may be defined in subsequent documents. | 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. | parameter may represent a class or set of profile properties. | |||
Follow-on standards defining specific profile contents may find it | Follow-on standards defining specific profile contents may find it | |||
desirable to define additional tokens for the profile-type parameter. | desirable to define additional tokens for the profile-type parameter. | |||
Also additional content types may be defined along with the profile | Also additional content types may be defined along with the profile | |||
formats that can be used in the Accept header of the SUBSCRIBE to | formats that can be used in the Accept header of the SUBSCRIBE to | |||
filter or indicate what data sets of the profile are desired. | filter or indicate what data sets of the profile are desired. | |||
6.2.2. vendor, model and version | 6.2.2. vendor, model and version | |||
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 (for example, | implementer SHOULD use their DNS domain name (for example, | |||
example.com) as the value of the "vendor" parameter so that it is | example.com) as the value of the "vendor" parameter so that it is | |||
known to be unique. These parameters are useful to the PDS 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 PDS the ability to compensate for or | same user agent. This gives the PDS the ability to compensate for or | |||
take advantage of the differences. In the following ABNF defining | take advantage of the differences. In the following ABNF defining | |||
the syntax, 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 | |||
6.2.3. network-user | 6.2.3. device-id | |||
The "network-user" parameter MUST be set when subscribing for "local- | The "device-id" parameter MUST be set when subscribing for "local- | |||
network" profiles if it is known, unless the Client is provisioned to | network" profiles. This identifies the device requesting the local- | |||
preserve privacy within the local network. This allows the Client to | network profile. | |||
indicate a user who may have special privileges in the local network | ||||
that impact the contents of the "local-network" profile. It MAY also | ||||
be provided in a subscription for a "device" profile. In such cases | ||||
the Client is requesting the PDS to recognize the indicated user as | ||||
the default user for itself. | ||||
The Notifier SHOULD authenticate the subscriber to verify the | If the value of the "profile-type" parameter is not "local-network", | |||
resource identifier in the "network-user" parameter, if the profile | the "device-id" parameter has no defined meaning and is ignored. In | |||
provided is specific to the user (for example, granting policies or | the following ABNF, EQUAL, LDQUOT, RDQUOT and addr-spec are defined | |||
privileges beyond those of a default user). If the value of the | in [RFC3261]. | |||
"profile-type" parameter is not "device" or "local-network", the | ||||
Device-Id = "device-id" EQUAL LDQUOT addr-spec RDQUOT | ||||
6.2.4. network-user | ||||
The "network-user" parameter MAY be provided in a subscription for a | ||||
"device" profile. In such cases the device is requesting the PDS to | ||||
recognize the indicated user as the default user for itself. | ||||
If the value of the "profile-type" parameter is not "device", 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 | |||
6.2.4. effective-by parameter | 6.2.5. effective-by parameter | |||
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 PDS the | (despite possible service interruptions). This gives the PDS the | |||
power to control when the profile is effective. This may be | power to control when the profile is effective. This may be | |||
important to resolve an emergency problem or disable a user agent | important to resolve an emergency problem or disable a user agent | |||
immediately. The "effective-by" parameter is ignored in all messages | immediately. The "effective-by" parameter is ignored in all messages | |||
other than the NOTIFY request. In the following ABNF, EQUAL and | other than the NOTIFY request. In the following ABNF, 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 | |||
6.2.5. Summary of event parameters | 6.2.6. Summary of event parameters | |||
The following are example Event headers which may occur in SUBSCRIBE | The following are example Event headers which may occur in SUBSCRIBE | |||
requests. These examples are not intended to be complete SUBSCRIBE | requests. These examples are not intended to be complete SUBSCRIBE | |||
requests. | 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 NOTIFY | The following are example Event headers which may occur in NOTIFY | |||
requests. These example headers are not intended to be complete | requests. These example headers are not intended to 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 | device-id || | | m | |||
network-user || o | | | ||||
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 | Non-specified means that the parameter has no meaning and should be | |||
ignored. | 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 | device-id || | | o | |||
network-user || o | | | ||||
effective-by || o | o | o | effective-by || o | o | o | |||
6.3. SUBSCRIBE Bodies | 6.3. SUBSCRIBE Bodies | |||
This package defines no use of the SUBSCRIBE request body. If | This package defines no use of the SUBSCRIBE request body. If | |||
present, it MUST be ignored. | present, it MUST be ignored. | |||
Future enhancements to the framework may specify a use for the | Future enhancements to the framework may specify a use for the | |||
SUBSCRIBE request body (for example,, mechanisms using etags to | SUBSCRIBE request body (for example,, mechanisms using etags to | |||
minimize Profile Notifications to Clients with current profile | minimize Profile Notifications to devices with current profile | |||
versions). | versions). | |||
6.4. Subscription Duration | 6.4. Subscription Duration | |||
The duration of a subscription is specific to SIP deployments and no | The duration of a subscription is specific to SIP deployments and no | |||
specific recommendation is made by this Event Package. If absent, a | specific recommendation is made by this Event Package. If absent, a | |||
value of 86400 seconds is RECOMMENDED since the presence (or absence) | value of 86400 seconds is RECOMMENDED since the presence (or absence) | |||
of a Client subscription is not time critical to the regular | of a device subscription is not time critical to the regular | |||
functioning of the PDS. | functioning of the PDS. | |||
It is to be noted that a one-time fetch of a profile can be | It is to be noted that a one-time fetch of a profile can be | |||
accomplished by setting the 'Expires' parameter to a value of Zero, | accomplished by setting the 'Expires' parameter to a value of Zero, | |||
as specified in [RFC3265]. | as specified in [RFC3265]. | |||
6.5. NOTIFY Bodies | 6.5. NOTIFY Bodies | |||
The framework specifying the Event Package allows for the NOTIFY body | The framework specifying the Event Package allows for the NOTIFY body | |||
to contain the profile data or a pointer to the profile data using | to contain the profile data or a pointer to the profile data using | |||
content direction. The framework does not define any profile data | content indirection. The framework does not define any profile data | |||
and delegates specification of utilized MIME types Profile Data | and delegates specification of utilized MIME types Profile Data | |||
Frameworks. For profile data delivered via content indirection, the | Frameworks. For profile data delivered via content indirection, the | |||
following apply: | following apply: | |||
o the Content-ID MIME header, as described in [RFC4483] MUST be used | o the Content-ID MIME header, as described in [RFC4483] MUST be used | |||
for each Profile document URI | for each Profile document URI | |||
o at a minimum, the "http:" and "https:" URI schemes MUST be | o at a minimum, the "http:" and "https:" URI schemes MUST be | |||
supported; other URI schemas MAY be supported based on the Profile | supported; other URI schemas MAY be supported based on the Profile | |||
Data Frameworks (examples include FTP [RFC0959], TFTP | Data Frameworks (examples include FTP [RFC0959], HTTP [RFC2616], | |||
[RFC3617],HTTP [RFC2616], HTTPS [RFC2818], LDAP [RFC3377], XCAP | HTTPS [RFC2818], LDAP [RFC4510], XCAP [I-D.ietf-simple-xcap], | |||
[I-D.ietf-simple-xcap], XCAP-DIFF [I-D.ietf-simple-xcap-diff]) | XCAP-DIFF [I-D.ietf-simple-xcap-diff]) | |||
The NOTIFY body SHOULD include a MIME type specified in the 'Accept' | The NOTIFY body SHOULD include a MIME type specified in the 'Accept' | |||
header of the SUBSCRIBE. Further, if the Accept header of the | header of the SUBSCRIBE. Further, if the Accept header of the | |||
SUBSCRIBE included the MIME type message/external-body (indicating | SUBSCRIBE included the MIME type message/external-body (indicating | |||
support for content indirection) the content indirection SHOULD be | support for content indirection) the content indirection SHOULD be | |||
used in the NOTIFY body for providing the profiles. If none are | used in the NOTIFY body for providing the profiles. If none are | |||
specified, the Profile Data frameworks are responsible for, and MUST | specified, the Profile Data frameworks are responsible for, and MUST | |||
specify, the MIME type to be assumed. | specify, the MIME type to be assumed. | |||
6.6. Notifier Processing of SUBSCRIBE Requests | 6.6. Notifier Processing of SUBSCRIBE Requests | |||
skipping to change at page 34, line 45 | skipping to change at page 34, line 12 | |||
unsure, the SUBSCRIBE SHOULD be either authenticated or transmitted | unsure, the SUBSCRIBE SHOULD be either authenticated or transmitted | |||
over an integrity protected SIP communication channels. Exceptions | over an integrity protected SIP communication channels. Exceptions | |||
to authenticating such SUBSCRIBEs include cases where the identity of | to authenticating such SUBSCRIBEs include cases where the identity of | |||
the Subscriber is unknown and the Notifier is configured to accept | the Subscriber is unknown and the Notifier is configured to accept | |||
such requests. | such requests. | |||
The Notifier MAY also authenticate SUBSCRIBE messages even if the | The Notifier MAY also authenticate SUBSCRIBE messages even if the | |||
NOTIFY is expected to only contain a pointer to profile data. | NOTIFY is expected to only contain a pointer to profile data. | |||
Securing data sent via Content Indirection is covered in Section 9. | Securing data sent via Content Indirection is covered in Section 9. | |||
If the Profile Type indicated in the "profile-type" Event header | If the profile type indicated in the "profile-type" Event header | |||
parameter is unavailable or the Notifier is configured not to provide | parameter is unavailable or the Notifier is configured not to provide | |||
it, the Notifier SHOULD return a 404 response to the SUBSCRIBE | it, the Notifier SHOULD return a 404 response to the SUBSCRIBE | |||
request. If the specific user or Client is unknown, the Notifier MAY | request. If the specific user or device is unknown, the Notifier MAY | |||
either accept or reject the subscription. | either accept or reject the subscription. | |||
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 Client indicated in the Subscription request. However, the | with the device indicated in the Subscription request. However, the | |||
Notifier SHOULD authenticate the user indicated before making such a | Notifier SHOULD authenticate the user indicated before making such a | |||
change. | change. | |||
6.7. Notifier Generation of NOTIFY Requests | 6.7. Notifier Generation of NOTIFY Requests | |||
As specified in [RFC3265], the Notifier MUST always send a NOTIFY | As specified in [RFC3265], the Notifier MUST always send a NOTIFY | |||
request upon accepting a subscription. If the Client or User is | request upon accepting a subscription. If the device or user is | |||
unknown and the Notifier choose to accept the subscription, the | unknown and the Notifier choose to accept the subscription, the | |||
Notifier MAY either respond with profile data (for example, default | Notifier MAY either respond with profile data (for example, default | |||
profile data) or provide no profile information (i.e. no body or | profile data) or provide no profile information (i.e. no body or | |||
content indirection). | content indirection). | |||
If the URI in the SUBSCRIBE request is a known identity and the | If the URI in the SUBSCRIBE request is a known identity and the | |||
requested profile information is available (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 Notifier SHOULD send | profile-type parameter of the Event header), the Notifier SHOULD send | |||
a NOTIFY with profile data. Profile data MAY be sent as profile | a NOTIFY with profile data. Profile data MAY be sent as profile | |||
contents or via Content Indirection (if the content indirection MIME | contents or via Content Indirection (if the content indirection MIME | |||
skipping to change at page 35, line 48 | skipping to change at page 35, line 15 | |||
6.8. Subscriber Processing of NOTIFY Requests | 6.8. Subscriber Processing of NOTIFY Requests | |||
A Subscriber to this event package MUST adhere to the NOTIFY request | A Subscriber to this event package MUST adhere to the NOTIFY request | |||
processing behavior specified in [RFC3265]. If the Notifier | processing behavior specified in [RFC3265]. If the Notifier | |||
indicated an effective time (using the "effective-by" Event Header | indicated an effective time (using the "effective-by" Event Header | |||
parameter), it SHOULD attempt to make the profiles effective within | parameter), it SHOULD attempt to make the profiles effective within | |||
the specified time. Exceptions include deployments that prohibit | the specified time. Exceptions include deployments that prohibit | |||
such behavior in certain cases (for example, emergency sessions are | such behavior in certain cases (for example, emergency sessions are | |||
in progress). When profile data cannot be applied within the | in progress). When profile data cannot be applied within the | |||
recommended timeframe and this affects Client behavior, any actions | recommended timeframe and this affects device behavior, any actions | |||
to be taken SHOULD be defined by the profile data definitions. By | to be taken SHOULD be defined by the profile data definitions. By | |||
default, the Subscriber is RECOMMENDED to make the profiles effective | default, the Subscriber is RECOMMENDED to make the profiles effective | |||
as soon as possible. | as soon as possible. | |||
The Subscriber MUST always support "http:" or "https:" and be | The Subscriber MUST always support "http:" or "https:" and be | |||
prepared to accept NOTIFY messages with those URI schemas.The | prepared to accept NOTIFY messages with those URI schemas.The | |||
subscriber MUST also be prepared to receive a NOTIFY request with no | 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 terminated by a NOTIFY | body. The subscription dialog MUST NOT be terminated by a NOTIFY | |||
with no body. | with no body. | |||
skipping to change at page 36, line 34 | skipping to change at page 35, line 49 | |||
between NOTIFY requests | between NOTIFY requests | |||
6.11. State Agents | 6.11. State Agents | |||
State agents are not applicable to this Event Package. | State agents are not applicable to this Event Package. | |||
7. Examples | 7. Examples | |||
This section provides examples along with sample SIP message bodies | This section provides examples along with sample SIP message bodies | |||
relevant to this framework. Both the examples are derived from a | relevant to this framework. Both the examples are derived from a | |||
snapshot of Section 4.1, specifically the request for the Device | snapshot of Section 4.1, specifically the request for the device | |||
Profile. The examples are purely informative and in case of | profile. The examples are purely informative and in case of | |||
conflicts with the framework or protocols used for illustration, the | conflicts with the framework or protocols used for illustration, the | |||
latter should be deemed normative. | latter should be deemed normative. | |||
7.1. Example 1: Client requesting profile | 7.1. Example 1: Device requesting profile | |||
This example illustrates the detailed message flows between the | This example illustrates the detailed message flows between the | |||
Client and the SIP Service Provider's network for requesting and | device and the SIP Service Provider's network for requesting and | |||
retrieving the profile (the flow uses the Device Profile as an | retrieving the profile (the flow uses the device profile as an | |||
example). | example). | |||
The following are assumed for this example: | The following are assumed for this example: | |||
o Client is assumed to have established local network connectivity; | o Device is assumed to have established local network connectivity; | |||
NAT and Firewall considerations are assumed to have been addressed | NAT and Firewall considerations are assumed to have been addressed | |||
by the SIP Service Provider | by the SIP Service Provider | |||
o examples are a snapshot only and do not illustrate all the | o examples are a snapshot only and do not illustrate all the | |||
interactions between the Client and the Service Provider's network | interactions between the device and the Service Provider's network | |||
(and none between the entities in the SIP Service Provider's | (and none between the entities in the SIP Service Provider's | |||
network) | network) | |||
o All SIP communication with the SIP Service Provider happens via a | o All SIP communication with the SIP Service Provider happens via a | |||
SIP Proxy | SIP Proxy | |||
o HTTP is assumed to be the Profile Data method used (any suitable | o HTTP is assumed to be the Profile Data method used (any suitable | |||
alternative can be used as well) | alternative can be used as well) | |||
o TLS is assumed to be the protocol for securing the Profile | o TLS is assumed to be the protocol for securing the Profile Content | |||
Retrieval (any other suitable protocol can be employed); | Retrieval (any other suitable protocol can be employed); | |||
authentication and security requirements are not addressed | authentication and security requirements are not addressed | |||
The flow diagram and an explanation of the messages follow. | The flow diagram and an explanation of the messages follow. | |||
+----------------------+ | +----------------------+ | |||
+--------+ | SIP Service Provider | | +--------+ | SIP Service Provider | | |||
| Client | | | | | Device | | | | |||
|(SIP UA)| | SIP PDS HTTP | | |(SIP UA)| | SIP PDS HTTP | | |||
+--------+ | PROXY Server | | +--------+ | PROXY Server | | |||
| | | | | | |||
+----------------------+ | +----------------------+ | |||
| | | | | | | | | | |||
| | | | | | | | | | |||
| SUBSCRIBE | | | | | SUBSCRIBE | | | | |||
(SReq)|--------device profile--------->| | | | (SReq)|--------device profile--------->| | | | |||
| |------>| | | | |------>| | | |||
| |200 OK | | | | |200 OK | | | |||
skipping to change at page 38, line 41 | skipping to change at page 37, line 41 | |||
| | | | | | |||
| HTTP Request | | | HTTP Request | | |||
(XReq)|---------------------------------------------->| | (XReq)|---------------------------------------------->| | |||
| | | | | | |||
| HTTP Response | | | HTTP Response | | |||
(XRes)|<----------------------------------------------| | (XRes)|<----------------------------------------------| | |||
| | | | | | |||
(SReq) | (SReq) | |||
the Client transmits a request for the 'device' profile using the | the device transmits a request for the 'device' profile using the | |||
SIP SUBSCRIBE utilizing the Event Package specified in this | SIP SUBSCRIBE utilizing the Event Package specified in this | |||
framework. | framework. | |||
* Note: Some of the header fields (for example, Event, via) are | * Note: Some of the header fields (for example, Event, via) are | |||
continued on a separate line due to format constraints of | continued on a separate line due to format constraints of | |||
this document | this document | |||
SUBSCRIBE sip:MAC%3a000000000000@sip.example.net SIP/2.0 | SUBSCRIBE sip:MAC%3a000000000000@sip.example.net SIP/2.0 | |||
Event: ua-profile;profile-type=device;vendor="vendor.example.net"; | Event: ua-profile;profile-type=device;vendor="vendor.example.net"; | |||
model="Z100";version="1.2.3";network-user="sip:user@sip.example.net" | model="Z100";version="1.2.3";network-user="sip:user@sip.example.net" | |||
From: sip:MAC%3A000000000000@sip.example.net;tag=1234 | From: sip:MAC%3A000000000000@sip.example.net;tag=1234 | |||
To: sip:MAC%3A000000000000@sip.example.net | To: sip:MAC%3A000000000000@sip.example.net | |||
Call-ID: 3573853342923422@10.1.1.44 | Call-ID: 3573853342923422@192.0.2.44 | |||
CSeq: 2131 SUBSCRIBE | CSeq: 2131 SUBSCRIBE | |||
Contact: sip:MAC%3A000000000000@sip.example.net | Contact: sip:MAC%3A000000000000@sip.example.net | |||
Via: SIP/2.0/TCP 10.1.1.41; | Via: SIP/2.0/TCP 192.0.2.41; | |||
branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | |||
Accept: message/external-body, application/x-z100-device-profile | Accept: message/external-body, application/x-z100-device-profile | |||
Content-Length: 0 | Content-Length: 0 | |||
(SRes) | (SRes) | |||
the SUBSCRIBE request is received by a SIP Proxy in the Service | the SUBSCRIBE request is received by a SIP Proxy in the Service | |||
Provider's network which transmits it to the PDS. The PDS accepts | Provider's network which transmits it to the PDS. The PDS accepts | |||
the response and responds with a 200 OK | the response and responds with a 200 OK | |||
* Note: The Client and the SIP proxy may have established a | * Note: The device and the SIP proxy may have established a | |||
secure communications channel (for example, TLS) | secure communications channel (for example, TLS) | |||
(NTFY) | (NTFY) | |||
subsequently, the PDS transmits a SIP NOTIFY message indicating | subsequently, the PDS transmits a SIP NOTIFY message indicating | |||
the profile location | the profile location | |||
* Note: Some of the fields (for example, content-type) are | * Note: Some of the fields (for example, content-type) are | |||
continued on a separate line due to format constraints of this | continued on a separate line due to format constraints of this | |||
document | document | |||
NOTIFY sip:MAC%3A000000000000@10.1.1.44 SIP/2.0 | NOTIFY sip:MAC%3A000000000000@192.0.2.44 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
From: sip:MAC%3A000000000000@sip.example.net;tag=abca | From: sip:MAC%3A000000000000@sip.example.net;tag=abca | |||
To: sip:MAC%3A000000000000@sip.example.net;tag=1231 | To: sip:MAC%3A000000000000@sip.example.net;tag=1231 | |||
Call-ID: 3573853342923422@10.1.1.44 | Call-ID: 3573853342923422@192.0.2.44 | |||
CSeq: 322 NOTIFY | CSeq: 322 NOTIFY | |||
Via: SIP/2.0/UDP 192.168.0.3; | Via: SIP/2.0/UDP 192.0.2.3; | |||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d0 | branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d0 | |||
MIME-Version: 1.0 | MIME-Version: 1.0 | |||
Content-Type: message/external-body; access-type="URL"; | Content-Type: message/external-body; access-type="URL"; | |||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | |||
URL="http://sip.example.net/z100-000000000000.html"; | URL="http://sip.example.net/z100-000000000000.html"; | |||
size=9999 | size=9999; | |||
hash=10AB568E91245681AC1B | hash=10AB568E91245681AC1B | |||
Content-Type: application/x-z100-device-profile | Content-Type: application/x-z100-device-profile | |||
Content-ID: <39EHF78SA@sip.example.net> | Content-ID: <39EHF78SA@sip.example.net> | |||
. | . | |||
. | . | |||
. | . | |||
(NRes) | (NRes) | |||
Client accepts the NOTIFY message and responds with a 200 OK | Device accepts the NOTIFY message and responds with a 200 OK | |||
(XReq) | (XReq) | |||
once the necessary secure communications channel is established, | once the necessary secure communications channel is established, | |||
the Client sends an HTTP request to the HTTP server indicated in | the device sends an HTTP request to the HTTP server indicated in | |||
the NOTIFY | the NOTIFY | |||
(XRes) | (XRes) | |||
the HTTP server responds to the request via a HTTP response | the HTTP server responds to the request via a HTTP response | |||
containing the profile contents | containing the profile contents | |||
7.2. Example 2: Client obtaining change notification | 7.2. Example 2: Device obtaining change notification | |||
The following example illustrates the case where a User (X) is | The following example illustrates the case where a user (X) is | |||
simultaneously accessing services via two different Clients (for | simultaneously accessing services via two different devices (for | |||
example, Multimedia Soft Clients on a PC and PDA) and has access to a | example, Multimedia entities on a PC and PDA) and has access to a | |||
User Interface (UI) that allows for changes to the User profile. | user Interface (UI) that allows for changes to the user profile. | |||
The following are assumed for this example: | The following are assumed for this example: | |||
o The Clients (A & B) obtain the necessary profiles from the same | o The devices (A & B) obtain the necessary profiles from the same | |||
SIP Service Provider | SIP Service Provider | |||
o The SIP Service Provider also provides a User Interface (UI) that | o The SIP Service Provider also provides a user Interface (UI) that | |||
allows the User to change preferences that impact the User profile | allows the user to change preferences that impact the user profile | |||
The flow diagram and an explanation of the messages follow. | The flow diagram and an explanation of the messages follow. | |||
o Note: The example only shows retrieval of User X's profile, but it | o Note: The example only shows retrieval of user X's profile, but it | |||
may request and retrieve other profiles (for example, local- | may request and retrieve other profiles (for example, local- | |||
network, Client). | network, Device). | |||
----- ----- | ----- ----- | |||
|User |_________| UI* | * = User Interface | |User |_________| UI* | * = User Interface | |||
| X | | | | | X | | | | |||
----- ----- | ----- ----- | |||
/ \ | / \ | |||
/ \ | / \ | |||
/ \ +----------------------+ | / \ +----------------------+ | |||
+--------+ +--------+ | SIP Service Provider | | +--------+ +--------+ | SIP Service Provider | | |||
| Client | | Client | | | | | Device | | Device | | | | |||
| A | | B | | SIP PDS HTTP | | | A | | B | | SIP PDS HTTP | | |||
+--------+ +--------+ | PROXY Server | | +--------+ +--------+ | PROXY Server | | |||
+----------------------+ | +----------------------+ | |||
| | | | | | | | | | |||
| | | | | | | | | | |||
(A-EX)|<=Enrolls for User X's profile=>|<=====>| | | (A-EX)|<=Enrolls for User X's profile=>|<=====>| | | |||
| | | | | | | | | | |||
| | | | | | |||
(A-RX)|<===Retrieves User X's profile================>| | (A-RX)|<===Retrieves User X's profile================>| | |||
| | | | | | |||
skipping to change at page 42, line 24 | skipping to change at page 41, line 24 | |||
| | |------>| | | | | |------>| | | |||
| | | | | | |||
| | | | | | |||
(A-RX)|<===Retrieves User X's profile================>| | (A-RX)|<===Retrieves User X's profile================>| | |||
| | | | | | |||
| | | | | | | | |||
| | | | | | | | |||
| (B-RX)|<= Retrieves User X's profile=>| | | (B-RX)|<= Retrieves User X's profile=>| | |||
| | | | | | | | |||
(A-EX) Client A discovers, enrolls and obtains notification related | (A-EX) Device A discovers, enrolls and obtains notification related | |||
to User X's profile | to user X's profile | |||
(A-RX) Client A retrieves User X's profile | (A-RX) Device A retrieves user X's profile | |||
(B-EX) Client B discovers, enrolls and obtains notification related | (B-EX) Device B discovers, enrolls and obtains notification related | |||
to User X's profile | to user X's profile | |||
(B-RX) Client B retrieves User X's profile | (B-RX) Device B retrieves user X's profile | |||
(HPut) Changes affected by the User via the User Interface (UI) are | (HPut) Changes affected by the user via the user Interface (UI) are | |||
uploaded to the HTTP Server | uploaded to the HTTP Server | |||
* Note: The UI itself can act as a Client and subscribe to User | * Note: The UI itself can act as a device and subscribe to user | |||
X's profile. This is not the case in the example shown. | X's profile. This is not the case in the example shown. | |||
(HRes) Changes are accepted by the HTTP server | (HRes) Changes are accepted by the HTTP server | |||
(A-NT) PDS transmits a NOTIFY message to Client A indicating the | (A-NT) PDS transmits a NOTIFY message to device A indicating the | |||
changed profile. A sample message is shown below: | changed profile. A sample message is shown below: | |||
Note: Some of the fields (for example, Via) are continued on a | Note: Some of the fields (for example, Via) are continued on a | |||
separate line due to format constraints of this document | separate line due to format constraints of this document | |||
NOTIFY sip:userX@10.1.1.44 SIP/2.0 | NOTIFY sip:userX@192.0.2.44 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
From: sip:userX@sip.example.net;tag=abcd | From: sip:userX@sip.example.net;tag=abcd | |||
To: sip:userX@sip.example.net.net;tag=1234 | To: sip:userX@sip.example.net.net;tag=1234 | |||
Call-ID: 3573853342923422@10.1.1.44 | Call-ID: 3573853342923422@192.0.2.44 | |||
CSeq: 322 NOTIFY | CSeq: 322 NOTIFY | |||
Via: SIP/2.0/UDP 192.168.0.3; | Via: SIP/2.0/UDP 192.0.2.3; | |||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | |||
MIME-Version: 1.0 | MIME-Version: 1.0 | |||
Content-Type: message/external-body; access-type="URL"; | Content-Type: message/external-body; access-type="URL"; | |||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | |||
URL="http://www.example.com/user-x-profile.html"; | URL="http://www.example.com/user-x-profile.html"; | |||
size=9999 | size=9999; | |||
hash=123456789AAABBBCCCDD | hash=123456789AAABBBCCCDD | |||
. | . | |||
. | . | |||
. | . | |||
(A-RS) Client A accepts the NOTIFY and sends a 200 OK | (A-RS) Device A accepts the NOTIFY and sends a 200 OK | |||
(B-NT) PDS transmits a NOTIFY message to Client B indicating the | (B-NT) PDS transmits a NOTIFY message to device B indicating the | |||
changed profile. A sample message is shown below: | changed profile. A sample message is shown below: | |||
Note: Some of the fields (for example, Via) are continued on a | Note: Some of the fields (for example, Via) are continued on a | |||
separate line due to format constraints of this document | separate line due to format constraints of this document | |||
NOTIFY sip:userX@10.1.1.43 SIP/2.0 | NOTIFY sip:userX@192.0.2.43 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
From: sip:userX@sip.example.net;tag=abce | From: sip:userX@sip.example.net;tag=abce | |||
To: sip:userX@sip.example.net.net;tag=1235 | To: sip:userX@sip.example.net.net;tag=1235 | |||
Call-ID: 3573853342923422@10.1.1.43 | Call-ID: 3573853342923422@192.0.2.43 | |||
CSeq: 322 NOTIFY | CSeq: 322 NOTIFY | |||
Via: SIP/2.0/UDP 192.168.0.3; | Via: SIP/2.0/UDP 192.0.2.3; | |||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d2 | branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d2 | |||
MIME-Version: 1.0 | MIME-Version: 1.0 | |||
Content-Type: message/external-body; access-type="URL"; | Content-Type: message/external-body; access-type="URL"; | |||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | |||
URL="http://www.example.com/user-x-profile.html"; | URL="http://www.example.com/user-x-profile.html"; | |||
size=9999 | size=9999; | |||
hash=123456789AAABBBCCCDD | hash=123456789AAABBBCCCDD | |||
. | . | |||
. | . | |||
. | . | |||
(B-RS) Client B accepts the NOTIFY and sends a 200 OK | (B-RS) Device B accepts the NOTIFY and sends a 200 OK | |||
(A-RX) Client A retrieves the updated profile pertaining to User X | (A-RX) Device A retrieves the updated profile pertaining to user X | |||
(B-RX) Client B retrieves the updated profile pertaining to User X | (B-RX) Device B retrieves the updated profile pertaining to user X | |||
8. IANA Considerations | 8. IANA Considerations | |||
There are two IANA considerations associated with this document, SIP | There are two IANA considerations associated with this document, SIP | |||
Event Package and HTTP header. These are outlined in this section. | Event Package and HTTP header. These are outlined in this section. | |||
8.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). | |||
Persons to Contact: Daniel Petrie dan.ietf AT SIPez DOT com, | Persons to Contact: Daniel Petrie dan.ietf AT SIPez DOT com, | |||
sumanth@cablelabs.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 (the profile-type parameter has | effective-by, device-id, network-user (the profile-type parameter | |||
predefined values. The new event header parameters do not) | has predefined values. The new 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 device-id No [RFCXXXX] | ||||
Event network-user No [RFCXXXX] | Event network-user No [RFCXXXX] | |||
8.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). | |||
9. Security Considerations | 9. Security Considerations | |||
The framework specified in this document allows Service Providers to | The framework specified in this document allows for the propagation | |||
propagate profile data to Clients. This is accomplished by requiring | of device profile data (Section 5.5.3). To accomplish this, it | |||
deployed Clients to implement the framework. The framework | specifies a Profile Life Cycle (Section 3.3) and an Event Package | |||
(explained in Section 5) specifies a Profile Life Cycle that allows | (Section 6). | |||
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. | ||||
9.1. Event Package | The Profile Life Cycle consists of three distinct communication | |||
channels: Profile Enrollment and Change Notification, Profile Content | ||||
Retrieval, and Profile Change Operation. | ||||
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) | |Device| | PNC | | |||
specified in Section 5 of [RFC3265]. Specifically for the Event | | | | | | |||
Package defined in this framework, this sub-section hightlights | +------+ +-----+ | |||
additional considerations and security requirements. | | | | |||
| Profile Enrollment | | ||||
|---------------------->| | ||||
| | | ||||
| Profile Notification | (initial | ||||
|<----------------------| or upon | ||||
| | a change) | ||||
The Notifier MUST authenticate any SUBSCRIBE request with a known | +------+ +-----+ | |||
identity. It MUST NOT accept any SUBSCRIBE requests that fail an | | | | | | |||
authentication challenge. Refer to [I-D.ietf-sip-identity] and | |Device| | PCC | | |||
[RFC3261] for RECOMMENDED SIP authentication methods. | | | | | | |||
+------+ +-----+ | ||||
| | | ||||
| Profile Request | (When content | ||||
|---------------------->| indirection | ||||
| | is used) | ||||
| Profile Response | | ||||
|<----------------------| | ||||
| | | ||||
Unless configured otherwise, the Notifier SHOULD NOT respond to | +------------+ +-----+ | |||
SUBSCRIBEs without an identity that can be authenticated. Exceptions | | Authorized | | PCC | | |||
include deployments catering to unknown Clients (for example, for | | Entity | | | | |||
self-subscription) or for troubleshooting (for example, credentials | +------------+ +-----+ | |||
misplaced by a user). Refer to Section 9.3 for Profile Data | | | | |||
considerations in such cases. | | | | |||
| Profile Change Request | | ||||
|---------------------------------->| | ||||
| | | ||||
| Profile Change Response | | ||||
|<----------------------------------| | ||||
| | | ||||
The Notifier MUST transmit NOTIFY messages with sensitive profile | PNC = Profile Notification Component | |||
data over an authenticated, integrity protected channel. Refer to | PCC = Profile Content Component | |||
Section 9.3 for information on profile data classification. It | Framework Reference Model | |||
SHOULD transmit Content Indirection information (without profile | ||||
data) over an integrity-protected channel, unless configured | ||||
otherwise (for example, if the Service Provider is catering to | ||||
unknown Clients). For data provided via content indirection, | ||||
Subscribers MUST implement the hash verification scheme described in | ||||
[RFC4483]. | ||||
Subscribers with the ability to authenticate a PDS (for example, | Profile enrollment and change notification allows a device to | |||
Service Provider Certificates, mutual shared secrets) MUST employ | transmit a request for a specific profile - relayed directly, or via | |||
such mechanisms prior to retrieving data. This framework RECOMMENDS | one or more SIP proxies - to a PNC. If the PNC accepts the profile | |||
that Service Providers consider providing this ability to deployed | request, it transmits a Profile Notification that contains either: | |||
Clients. | profile data or content indirection information. The profile data | |||
can contain information specific to an entity (such as the device or | ||||
a user) and may contain sensitive information (such as service | ||||
credentials). Compromise of such data can lead to threats such as | ||||
impersonation attacks (establishing rogue sessions), theft of service | ||||
(if services are obtainable), and zombie attacks. Even if the | ||||
profile data is provided using content indirection, PCC information | ||||
within the notification can lead to threats such as denial of service | ||||
attacks (rogue devices bombard the PCC with requests for a specific | ||||
profile) and attempts to modify erroneous data onto the PCC (since | ||||
the location and format may be known). It is also important for the | ||||
device to ensure the authenticity of the PNC since impersonation of | ||||
the Service Provider can lead to Denial of Service, Man-in-the-Middle | ||||
attacks, etc. | ||||
9.2. Profile Life Cycle | Profile Content retrieval allows a device to retrieve profile data | |||
from a PCC. This communication is accomplished using one of many | ||||
profile delivery protocols or frameworks, but is considered to be out | ||||
of scope within this document. However, since the profile data | ||||
returned is subject to the same considerations as that sent via | ||||
profile notification, the same threats exist. | ||||
Profile Discovery involves various protocols such as DHCP and DNS | Profile Change Operation allows an authorized entity to modify | |||
that may provide unauthenticated information. Thus, successful | profiles stored on a PCC. The specific entities are based on Service | |||
Profile Enrollment and subsequent Profile Notification with an | Provider's policy and can include trusted network elements and | |||
authenticated PDS (for example, via mutual authentication) are | devices alike. The profile information stored on a PCC can contain | |||
required to prevent threats such as impersonation or Denial of | information that directs device and user behavior, services offered | |||
Service. Given the nature of these mechanisms and to prevent service | and may contain sensitive information such as credentials. Thus, | |||
disruption due to such threats, the specification recommends caching | allowing entities that are not trusted to perform profile | |||
of retrieved profiles (see Section 5.4) by the Clients. It also | modifications presents threats such as denial-of-service, | |||
provides for multiple Profile Discovery mechanisms (based on Profile | manipulation of service, impersonation (for example, redirection to | |||
Types) which can minimally aid in thwarting security threats from | rogue networks) and man-in-the-middle attacks. | |||
individual mechanisms (for example, impersonated DNS). | ||||
The specification strongly RECOMMENDS that solutions implementing the | The framework specified in this document accomplishes the propagation | |||
Framework provide the Clients with the ability to recognize, mutually | of profile data by utilizing the specified "ua-profile" event package | |||
authenticate and establish integrity protected SIP communication | which is based on [RFC3265]. Thus, its usage is expected to comply | |||
channels (for example, mutual TLS using certificates). Clients | with the security considerations and requirements (access control, | |||
without such an ability SHOULD report changes to sensitive profile | Notifier privacy mechanism, Denial-of-Service attacks, replay | |||
data (refer to Profile Data) using suitable mechanisms (for example, | attacks, and Man-in-the Middle attacks) specified in Section 5 of | |||
management reporting). Further, Clients with access to credentials | [RFC3265]. The remainder of this section presents the specific | |||
(even if obtained via a User Interface) MUST respond to | security requirements for the framework. | |||
authentication challenges. | ||||
Profile Enrollment and Profile Notification are done via the Event | 9.1. Profile Enrollment and Change Notification | |||
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. | ||||
9.3. Profile Data | This framework specifies, and allows for the propagation of, three | |||
profile types: local-network, device and user. Enrollment and change | ||||
notification are expected to be accomplished over integrity-protected | ||||
SIP communication channels and following requirements are presented: | ||||
Profile data provided using any of the Profile Types is expected to | o devices and PNCs complying with this framework MUST implement TLS | |||
happen via suitable Profile Data Framework (such as XCAP) or suitable | as specified in [RFC3268], including support for both mutual and | |||
protocol (such as HTTP). Data defined using such frameworks may be | one-way authentication (server-side) | |||
sensitive (for example, user credentials) or non-sensitive (for | ||||
example, list of DNS servers). | ||||
If a profile contains sensitive data, it MUST be provided over a | o devices and PNCs complying with this framework MUST implement the | |||
mutual-authenticated, integrity protected channel. Even if the data | SIP Digest authentication scheme as specified in [RFC3261] | |||
is non-sensitive, it SHOULD still be provided over a secure channel. | ||||
Exceptions include cases where deployments cater to unknown Clients | ||||
or for troubleshooting. | ||||
For profile data delivered within the framework (i.e. data is | o a PNC capable of propagating device and user profiles MUST contain | |||
provided in the NOTIFY), the requirements specified in Section 9.1. | a X.509 certificate. This certificate MUST contain the PNC's | |||
Fully Qualified Domain Name in the 'SubjectAltName', establishing | ||||
the PNC as a host in the Service Provider's domain | ||||
When the profile data is delivered via content indirection, | o a PNC capable of propagating local-network profiles or | |||
authentication, integrity, confidentiality MUST be provided by the | unauthenticated device profiles MUST support the use of the SIP | |||
Profile Data Frameworks containing the retrieval mechanisms. | Identity header as defined in [RFC4474] for inclusion in profile | |||
Further, a non-replayable authentication mechanism (for example, | notifications | |||
Digest authentication) MUST be used. | ||||
Each profile type serves a different purpose, and is provided under | ||||
different circumstances and thus presents slightly different | ||||
requirements for authentication and protection of communication. | ||||
local-network profile | ||||
The local-network profile is provided by the local network and | ||||
usually contains non-sensitive data that is shared among all | ||||
participants in a local network. However, the framework also | ||||
allows for the presentation of the user's AOR, if known, for | ||||
possible privileged user data. This may, or may not, result in | ||||
user-specific information. | ||||
The following requirements are presented: | ||||
* the PNC MUST authenticate the identity of the user (if set to | ||||
anything other than the default) for local-network profile | ||||
requests that result in user-specific profile data containing | ||||
sensitive information; for authentication, unless other | ||||
mechanisms are employed, SIP Digest is used. If the | ||||
authentication fails, the PNC MUST not include any user- | ||||
specific information in the local-network profile | ||||
* the PNC MAY NOT authenticate requests for the local-network | ||||
profile that do not result in any user-specific sensitive data | ||||
(irrespective of the value of the From field) | ||||
* the PNC MUST include the SIP Identity header as defined in | ||||
[RFC4474] within profile notifications sent in response to | ||||
local-network profile enrollment, unless an integrity-protected | ||||
channel exists (for example, using S/MIME) | ||||
* a device receiving profile notifications for local-network | ||||
profiles MUST verify the SIP Identity header, unless | ||||
transmitted over a previously established authenticated, | ||||
integrity-protected channel. If the header verification fails, | ||||
the device MUST not use the provided profile and treat it as a | ||||
local-network profile enrollment failure and take measures such | ||||
as enrollment retries | ||||
device profile | ||||
The device profile is expected to contain data specific to the | ||||
device identity (AOR) being presented in the request. The | ||||
presented identity may be auto-generated (for example, based on | ||||
its hardware identity as allowed in section Section 5.1.1.2.1) or | ||||
obtained via configuration. This identity and associated | ||||
credentials have the following considerations: | ||||
* credentials can be provided via out-of-band mechanisms such as | ||||
pre-configuration or user interface | ||||
* credentials may not be present, but obtained via the initial | ||||
device profile, if allowed by the Service Provider | ||||
* device may use the user's AOR and associated credentials for | ||||
obtaining the device profile | ||||
If the AOR presented in device profile enrollment is known by the | ||||
PNC, the following requirements are presented: | ||||
* the PNC MUST authenticate the AOR presented for enrollment | ||||
using SIP Digest authentication, unless a previously | ||||
established mutually authenticated channel exists (for example, | ||||
using TLS). If the authentication fails, the PNC MUST not | ||||
provide the requested device-specific profile. In such a | ||||
scenario, the PNC MAY still provide a generic device profile | ||||
for minimal services (for example, emergency calls in a | ||||
telephony deployment, see [I-D.ietf-ecrit-phonebcp]) | ||||
* if the profile data is provided in the enrollment notificaiton, | ||||
the PNC MUST transmit it over an integrity-protected, | ||||
confidential communications channel such as TLS | ||||
If the AOR presented in device profile enrollment is not known by | ||||
the PNC, the following requirements are presented: | ||||
* the PNC MUST not provide any sensitive information in the | ||||
profile data | ||||
* the device MUST transmit the request over an integrity- | ||||
protected SIP communications channel. If none exists, the | ||||
device MUST establish a TLS connection with the PNC and verify | ||||
the PNC's certificate. If the PNC authentication fails or a | ||||
secure communications channel cannot be established, the device | ||||
MUST treat it as a device profile enrollment failure and take | ||||
measures such as retry enrollment | ||||
user profile | ||||
The user profile is expected to contain data specific to the user | ||||
identity (AOR) being presented in the request. This identity is | ||||
expected to be known in the network and associated with | ||||
credentials. Thus, the following requirements are presented: | ||||
* the device MUST transmit the request over an integrity- | ||||
protected SIP communications channel. If none exists, the | ||||
device MUST establish a TLS connection with the PNC and verify | ||||
the PNC's certificate. If the PNC authentication fails or a | ||||
secure communications channel cannot be established, the device | ||||
MUST treat this as a user profile enrollment failure and take | ||||
measures such as retry enrollment | ||||
* the PNC MUST authenticate the AOR presented for enrollment | ||||
using SIP Digest authentication, unless a previously | ||||
established mutually authenticated channel exists (for example, | ||||
using TLS). If the user authentication fails, the PNC MUST not | ||||
provide the requested user-specific information. It MAY | ||||
provide minimal profile information (such as connection to a | ||||
customer support webpage) | ||||
* if the profile data is provided in the enrollment notificaiton, | ||||
the PNC MUST transmit it over an integrity-protected, | ||||
confidential communications channel such as TLS | ||||
9.2. Profile Content Retrieval | ||||
This framework does not mandate specific profile delivery frameworks, | ||||
but presents security requirements for profile content retrieval | ||||
using content indirection. Given the nature of the profiles, the | ||||
requirements are as follows: | ||||
o devices and PCCs compliant with this framework MUST implement HTTP | ||||
Digest authentication as specified in [RFC2617]; this is used | ||||
whenever an authentication challenge is initiated using HTTP based | ||||
protocols specified for interoperability | ||||
o a PCC complying with this framework MUST implement HTTPS | ||||
[RFC2818]; this is used when there are no existing integrity- | ||||
protected communication channels | ||||
o a PCC complying with this framework MUST contain a X.509 | ||||
certificate. This certificate MUST contain the PNC's Fully | ||||
Qualified Domain Name in the 'SubjectAltName', establishing the | ||||
PNC as a host in the Service Provider's domain | ||||
The following general requirement applies to all profile types: | ||||
o a device MUST request profile content retrieval over an integrity | ||||
protected channel such as HTTPS. If one does not exist or cannot | ||||
be established, then the device MUST treat this as a profile | ||||
content retrieval failure and take measures such as profile | ||||
content retrieval retries or in the case of retry exhaustion, try | ||||
enrollment | ||||
The following profile-specific usage requirements are presented | ||||
local-network profile | ||||
* a PCC MUST challenge a profile content retrieval request if the | ||||
profile data contains user-specific information; this challenge | ||||
is against a user's AOR, known by the PCC and the device | ||||
* a PCC MAY challenge a profile content retrieval request even if | ||||
the profile data contains user-specific information; this | ||||
challenge is against a user's AOR, if provided | ||||
device profile | ||||
* a PCC MUST authenticate a profile content retrieval request if | ||||
the AOR presented is known. If the authentication fails, the | ||||
PCC MUST not provide device-specific information. In such a | ||||
scenario, the PCC MAY still provide a generic device profile | ||||
for minimal services (for example, emergency calls in a | ||||
telephony deployment, see [I-D.ietf-ecrit-phonebcp]) | ||||
user profile | ||||
* a PCC MUST authenticate a profile content retrieval request. | ||||
If the user authentication fails, the PNC MUST not provide the | ||||
requested user-specific information. It MAY provide minimal | ||||
profile information (such as connection to a customer support | ||||
webpage) | ||||
9.3. Profile Change Operation | ||||
Changes to profiles will only be made by authorized entities and | ||||
requires mutual authentication. The following requirements are | ||||
presented: | ||||
o a PCC complying with this framework MUST contain a X.509 | ||||
certificate. This certificate MUST contain the PNC's Fully | ||||
Qualified Domain Name in the 'SubjectAltName', establishing the | ||||
PNC as a host in the Service Provider's domain. This may be the | ||||
same, or different, from the certificate used for profile content | ||||
retrieval | ||||
o an entity that is allowed to make updates MUST contain a AOR that | ||||
is known to the network and the requirements for making changes | ||||
are the same as that for user profile content retrieval, with the | ||||
authorized entity playing the role of a user | ||||
10. Acknowledgements | 10. Acknowledgements | |||
Many thanks to those who contributed and commented on the many | Many thanks to those who contributed and commented on the many | |||
iterations of this document. Detailed comments were provided by the | iterations of this document. Detailed comments were provided by the | |||
following individuals: Jonathan Rosenberg from Cisco, Henning | following individuals: Jonathan Rosenberg from Cisco, Henning | |||
Schulzrinne from Columbia University, Cullen Jennings from Cisco, | Schulzrinne from Columbia University, Cullen Jennings from Cisco, | |||
Rohan Mahy from Plantronics, Rich Schaaf from Pingtel, Volker Hilt | Rohan Mahy from Plantronics, Rich Schaaf from Pingtel, Volker Hilt | |||
from Bell Labs, Adam Roach of Estacado Systems, Hisham Khartabil from | from Bell Labs, Adam Roach of Estacado Systems, Hisham Khartabil from | |||
Telio, Henry Sinnreich from MCI, Martin Dolly from AT&T Labs, John | Telio, Henry Sinnreich from MCI, Martin Dolly from AT&T Labs, John | |||
skipping to change at page 47, line 35 | skipping to change at page 51, line 26 | |||
Worley from Pingtel, Francois Audet from Nortel, Roni Even from | Worley from Pingtel, Francois Audet from Nortel, Roni Even from | |||
Polycom, Jason Fischl from Counterpath, Josh Littlefield from Cisco, | Polycom, Jason Fischl from Counterpath, Josh Littlefield from Cisco, | |||
Nhut Nguyen from Samsung. | Nhut Nguyen from Samsung. | |||
The editor would like to extend a special thanks to the experts who | The editor would like to extend a special thanks to the experts who | |||
contributed to the restructuring and revisions as proposed by the | contributed to the restructuring and revisions as proposed by the | |||
SIPPING WG, specifically Keith Drage from Lucent (restructuring | SIPPING WG, specifically Keith Drage from Lucent (restructuring | |||
proposal), Peter Blatherwick from Mitel (who also contributed to the | proposal), Peter Blatherwick from Mitel (who also contributed to the | |||
Overview and Introduction sections), Josh Littlefield from Cisco | Overview and Introduction sections), Josh Littlefield from Cisco | |||
(examples and diagram suggestions), Alvin Jiang of Engin, Martin | (examples and diagram suggestions), Alvin Jiang of Engin, Martin | |||
Dolly from AT&T, and Jason Fischl from Counterpath. Additionally, | Dolly from AT&T, Jason Fischl from Counterpath, Donald Lukacs from | |||
sincere appreciation is extended to the chairs (Mary Barnes from | Telcordia and Eugene Nechamkin from Broadcom. Additionally, sincere | |||
Nortel and Gonzalo Camarillo from Ericsson) and the Area Directors | appreciation is extended to the chairs (Mary Barnes from Nortel and | |||
(Cullen Jennings from Cisco and Jon Peterson and Cisco) for | Gonzalo Camarillo from Ericsson) and the Area Directors (Cullen | |||
facilitating discussions, and for reviews and contributions. | Jennings from Cisco and Jon Peterson and Cisco) for facilitating | |||
discussions, and for reviews and contributions. | ||||
11. Open Items | ||||
[[Editor's note: This is being used a place holder only and will be | ||||
removed once the items listed are addressed]] | ||||
The following comments are considered to be open (i.e. not addressed) | ||||
in this version of the I-D | ||||
o Replace 'Service Provider' with a term better representative of | ||||
its definition | ||||
o Analyze potential unformity in the formation of the Subscription | ||||
URI across Profile Types. If not, provide a bried explanation of | ||||
the analysis | ||||
o Analyze the current SHOULD v/s MUST requirements for the Profile | ||||
Framework to obtain consensus and facilitate interoperability | ||||
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 | 11. 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-09.txt | 11.1. Changes from draft-ietf-sipping-config-framework-10.txt | |||
The following are the changes that have been incorporated into this | ||||
I-D, resulting from the design team discussions based on Working | ||||
Group feedback. | ||||
o Modified the "From" header of the local network profile to reflect | ||||
the user's AOR, if any; delegated the device identifier to a new | ||||
event header termed "device-id"; removed use for 'network-user' | ||||
within the local-network profile; if there are objections to this, | ||||
please educate us! | ||||
o Added text to indicate DHCPv4 or DHCPv6 to accomodate IPv4 and | ||||
IPv6 environments | ||||
o Replaced generic 'Service Provider' with terms to better represent | ||||
scenarios | ||||
o Analyzed the current SHOULD v/s MUST requirements for the Profile | ||||
Framework and made modifications | ||||
o Referenced RFC4122 instead of OUTBOUND | ||||
o Simplified the introductory sections to better illustrate | ||||
potential deployment possibilities; indicated the minimum profile | ||||
supported to be 'device' | ||||
o Revamped the security considerations sections | ||||
11.2. Changes from draft-ietf-sipping-config-framework-09.txt | ||||
Following the ad-hoc SIPPING WG discussions at IETF#67 and as per the | 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 | email from Gonzalo Camarillo dated 12/07/2006, Sumanth was appointed | |||
as the new editor. This sub-section highlights the changes made by | as the new editor. This sub-section highlights the changes made by | |||
the editor (as per expert recommendations from the SIPPING WG folks | the editor (as per expert recommendations from the SIPPING WG folks | |||
interested in this effort) and the author. | interested in this effort) and the author. | |||
Changes incorporated by the editor: | Changes incorporated by the editor: | |||
o Document was restructured based on a) Keith's recommendations in | o Document was restructured based on a) Keith's recommendations in | |||
the email dated 11/09/2006 and responses (Peter, Sumanth, Josh) b) | the email dated 11/09/2006 and responses (Peter, Sumanth, Josh) b) | |||
skipping to change at page 49, line 8 | skipping to change at page 52, line 46 | |||
o General editorial updates were made | o General editorial updates were made | |||
Changes incorporated by the author: | Changes incorporated by the author: | |||
o Incorporated numerous edits and corrections from CableLabs review. | o Incorporated numerous edits and corrections from CableLabs review. | |||
o Used better ascii art picture of overview from Josh Littlefield | o Used better ascii art picture of overview from Josh Littlefield | |||
o Fixed the normative text for network-user so that it is now | o Fixed the normative text for network-user so that it is now | |||
consistant: MAY provide for device profile, MUST provide for | consistant: MAY provide for device profile, MUST provide for | |||
local-network profile. | local-network profile. | |||
12.2. Changes from draft-ietf-sipping-config-framework-08.txt | 11.3. Changes from draft-ietf-sipping-config-framework-08.txt | |||
The Request URI for profile-type=localnet now SHOULD not have a | 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.3. Changes from draft-ietf-sipping-config-framework-07.txt | 11.4. 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 device-id to be addr-spec only (not name-addr) and | |||
and to be quoted as well. | 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 device-id 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 device-id 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.4. Changes from draft-ietf-sipping-config-framework-06.txt | 11.5. 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. | |||
skipping to change at page 50, line 24 | skipping to change at page 54, line 17 | |||
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.5. Changes from draft-ietf-sipping-config-framework-05.txt | 11.6. 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.6. Changes from draft-ietf-sipping-config-framework-04.txt | 11.7. 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 | |||
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 | |||
user" parameter. | "device-id" parameter. | |||
A bunch of editorial nits and fixes. | A bunch of editorial nits and fixes. | |||
12.7. Changes from draft-ietf-sipping-config-framework-03.txt | 11.8. 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.8. Changes from draft-ietf-sipping-config-framework-02.txt | 11.9. 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.9. Changes from draft-ietf-sipping-config-framework-01.txt | 11.10. 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.10. Changes from draft-ietf-sipping-config-framework-00.txt | 11.11. 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 52, line 9 | skipping to change at page 56, line 4 | |||
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. | |||
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.11. Changes from draft-petrie-sipping-config-framework-00.txt | 11.12. 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 [RFC4483] | [RFC3263], SIP Events [RFC3265] and content indirection [RFC4483] | |||
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.12. Changes from draft-petrie-sip-config-framework-01.txt | 11.13. 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.13. Changes from draft-petrie-sip-config-framework-00.txt | 11.14. 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. | |||
Removed the Config-Expires header as it is largely superfluous with | Removed the Config-Expires header as it is largely superfluous with | |||
the SUBSCRIBE Expires header. | the SUBSCRIBE Expires header. | |||
Eliminated some of the complexity in the discovery mechanism. | Eliminated some of the complexity in the discovery mechanism. | |||
Suggest caching information discovered about a profile delivery | Suggest caching information discovered about a profile delivery | |||
server to avoid an avalanche problem when a whole building full of | server to avoid an avalanche problem when a whole building full of | |||
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 | 12. References | |||
13.1. Normative References | ||||
[I-D.ietf-sip-identity] | 12.1. Normative References | |||
Peterson, J. and C. Jennings, "Enhancements for | ||||
Authenticated Identity Management in the Session | ||||
Initiation Protocol (SIP)", draft-ietf-sip-identity-06 | ||||
(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 | ||||
Extensions", RFC 2132, March 1997. | ||||
[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. | |||
[RFC3265] Roach, A., "Session Initiation Protocol (SIP)-Specific | [RFC3265] Roach, A., "Session Initiation Protocol (SIP)-Specific | |||
Event Notification", RFC 3265, June 2002. | Event Notification", RFC 3265, June 2002. | |||
[RFC3268] Chown, P., "Advanced Encryption Standard (AES) | ||||
Ciphersuites for Transport Layer Security (TLS)", | ||||
RFC 3268, June 2002. | ||||
[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., | ||||
and M. Carney, "Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)", RFC 3315, July 2003. | ||||
[RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration | ||||
Protocol (DHCPv6) Options for Session Initiation Protocol | ||||
(SIP) Servers", RFC 3319, July 2003. | ||||
[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. | |||
[RFC4474] Peterson, J. and C. Jennings, "Enhancements for | ||||
Authenticated Identity Management in the Session | ||||
Initiation Protocol (SIP)", RFC 4474, August 2006. | ||||
[RFC4483] Burger, E., "A Mechanism for Content Indirection in | [RFC4483] Burger, E., "A Mechanism for Content Indirection in | |||
Session Initiation Protocol (SIP) Messages", RFC 4483, | Session Initiation Protocol (SIP) Messages", RFC 4483, | |||
May 2006. | May 2006. | |||
13.2. Informative References | 12.2. Informative References | |||
[I-D.ietf-ecrit-phonebcp] | ||||
Rosen, B. and J. Polk, "Best Current Practice for | ||||
Communications Services in support of Emergency Calling", | ||||
draft-ietf-ecrit-phonebcp-00 (work in progress), | ||||
October 2006. | ||||
[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-12 (work in progress), | draft-ietf-simple-xcap-12 (work in progress), | |||
October 2006. | 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 | |||
skipping to change at page 54, line 29 | skipping to change at page 58, line 42 | |||
October 2006. | October 2006. | |||
[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. | |||
[RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access | [RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol | |||
Protocol (v3): Technical Specification", RFC 3377, | (LDAP): Technical Specification Road Map", RFC 4510, | |||
September 2002. | June 2006. | |||
[RFC3617] Lear, E., "Uniform Resource Identifier (URI) Scheme and | ||||
Applicability Statement for the Trivial File Transfer | ||||
Protocol (TFTP)", RFC 3617, October 2003. | ||||
Authors' Addresses | Authors' Addresses | |||
Daniel Petrie | Daniel Petrie | |||
SIPez LLC. | SIPez LLC. | |||
34 Robbins Rd | 34 Robbins Rd | |||
Arlington, MA 02476 | Arlington, MA 02476 | |||
USA | USA | |||
Email: dan.ietf AT SIPez DOT com | Email: dan.ietf AT SIPez DOT com | |||
End of changes. 302 change blocks. | ||||
943 lines changed or deleted | 1109 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/ |