draft-ietf-sipping-config-framework-12.txt | draft-ietf-sipping-config-framework-13.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: November 2, 2007 CableLabs | Expires: April 27, 2008 CableLabs | |||
October 25, 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-12 | draft-ietf-sipping-config-framework-13 | |||
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 November 2, 2007. | This Internet-Draft will expire on April 27, 2008. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2007). | |||
Abstract | Abstract | |||
This document specifies a framework to enable configuration of | This document specifies a framework to enable configuration of | |||
Session Initiation Protocol (SIP) User Agents in SIP deployments. | Session Initiation Protocol (SIP) User Agents in SIP deployments. | |||
The framework provides a means to deliver profile data that User | The framework provides a means to deliver profile data that User | |||
Agents need to be functional, automatically and with minimal | Agents need to be functional, automatically and with minimal or no | |||
(preferably none) User and Administrative intervention. The | User and Administrative intervention. The framework describes how | |||
framework describes how SIP User Agents can discover sources, request | SIP User Agents can discover sources, request profiles and receive | |||
profiles and receive notifications related to profile modifications. | notifications related to profile modifications. As part of this | |||
framework, a new SIP event package is defined for notification of | ||||
As part of this framework, a new SIP event package is defined for | profile changes. The framework provides minimal data retrieval | |||
notification of profile changes. The framework provides minimal data | options to ensure interoperability. The framework does not include | |||
retrieval options to ensure interoperability. The framework does not | specification of the profile data within its scope. | |||
include specification of the profile data within its scope. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Executive Summary . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.2. Data Model and Profile Types . . . . . . . . . . . . . . 10 | 3.3. Profile Types . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.3. Profile Delivery Stages . . . . . . . . . . . . . . . . . 10 | 3.4. Profile delivery stages . . . . . . . . . . . . . . . . . 10 | |||
5. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.1. Simple Deployment Scenario . . . . . . . . . . . . . . . 11 | 4.1. Simple Deployment Scenario . . . . . . . . . . . . . . . . 11 | |||
5.2. Devices supporting multiple users from different | 4.2. Devices supporting multiple users from different | |||
Service Providers . . . . . . . . . . . . . . . . . . . . 12 | Service Providers . . . . . . . . . . . . . . . . . . . . 12 | |||
6. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 15 | 5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 14 | |||
6.1. Profile Delivery Stages . . . . . . . . . . . . . . . . . 15 | 5.1. Profile delivery stages . . . . . . . . . . . . . . . . . 14 | |||
6.1.1. Profile Enrollment . . . . . . . . . . . . . . . . . . 16 | 5.1.1. Profile Enrollment . . . . . . . . . . . . . . . . . . 14 | |||
6.1.2. Content Retrieval . . . . . . . . . . . . . . . . . . 18 | 5.1.2. Content Retrieval . . . . . . . . . . . . . . . . . . 17 | |||
6.1.3. Change Notification . . . . . . . . . . . . . . . . . 18 | 5.1.3. Change Notification . . . . . . . . . . . . . . . . . 17 | |||
6.1.4. Enrollment Data and Caching . . . . . . . . . . . . . 19 | 5.1.4. Enrollment Data and Caching . . . . . . . . . . . . . 18 | |||
6.1.5. User Profile Type . . . . . . . . . . . . . . . . . . 22 | 5.2. Securing Profile Delivery . . . . . . . . . . . . . . . . 21 | |||
6.2. Securing Profile Delivery . . . . . . . . . . . . . . . . 22 | 5.2.1. Securing Profile Enrollment . . . . . . . . . . . . . 21 | |||
6.2.1. General Requirements . . . . . . . . . . . . . . . . . 23 | 5.2.2. Securing Content Retrieval . . . . . . . . . . . . . . 23 | |||
6.2.2. Implementation Requirements . . . . . . . . . . . . . 23 | 5.2.3. Securing Change Notification . . . . . . . . . . . . . 24 | |||
6.2.3. Identities and Credentials . . . . . . . . . . . . . . 24 | 5.3. Additional Considerations . . . . . . . . . . . . . . . . 24 | |||
6.2.4. Securing Profile Enrollment . . . . . . . . . . . . . 25 | 5.3.1. Identities and Credentials . . . . . . . . . . . . . . 24 | |||
6.2.5. Securing Content Retrieval . . . . . . . . . . . . . . 28 | 5.3.2. Profile Enrollment Request Attempt . . . . . . . . . . 26 | |||
6.2.6. Securing Change Notification . . . . . . . . . . . . . 29 | 5.3.3. Device Types . . . . . . . . . . . . . . . . . . . . . 30 | |||
6.3. Additional Considerations . . . . . . . . . . . . . . . . 29 | 5.3.4. Profile Data . . . . . . . . . . . . . . . . . . . . . 30 | |||
6.3.1. Profile Enrollment Request Attempt . . . . . . . . . . 29 | 5.3.5. Profile Data Frameworks . . . . . . . . . . . . . . . 31 | |||
6.3.2. Device Types . . . . . . . . . . . . . . . . . . . . . 33 | 5.3.6. Additional Profile Types . . . . . . . . . . . . . . . 31 | |||
6.3.3. Profile Data . . . . . . . . . . . . . . . . . . . . . 33 | 5.3.7. Deployment considerations . . . . . . . . . . . . . . 32 | |||
6.3.4. Profile Data Frameworks . . . . . . . . . . . . . . . 34 | 5.4. Usage of Outbound . . . . . . . . . . . . . . . . . . . . 32 | |||
6.3.5. Additional Profile Types . . . . . . . . . . . . . . . 34 | 6. Event Package Definition . . . . . . . . . . . . . . . . . . . 33 | |||
6.3.6. Deployment considerations . . . . . . . . . . . . . . 35 | 6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 33 | |||
7. Event Package Definition . . . . . . . . . . . . . . . . . . . 35 | 6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 33 | |||
7.1. Event Package Name . . . . . . . . . . . . . . . . . . . 36 | 6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 36 | |||
7.2. Event Package Parameters . . . . . . . . . . . . . . . . 36 | 6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 36 | |||
7.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . 39 | 6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 37 | |||
7.4. Subscription Duration . . . . . . . . . . . . . . . . . . 39 | 6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 37 | |||
7.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 40 | 6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 37 | |||
7.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 40 | 6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 38 | |||
7.7. Notifier Generation of NOTIFY Requests . . . . . . . . . 41 | 6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 38 | |||
7.8. Subscriber Processing of NOTIFY Requests . . . . . . . . 41 | 6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 39 | |||
7.9. Handling of Forked Requests . . . . . . . . . . . . . . . 42 | 6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
7.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 42 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
7.11. State Agents . . . . . . . . . . . . . . . . . . . . . . 42 | 7.1. Example 1: Device requesting profile . . . . . . . . . . . 39 | |||
8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 7.2. Example 2: Device obtaining change notification . . . . . 42 | |||
8.1. Example 1: Device requesting profile . . . . . . . . . . 42 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
8.2. Example 2: Device obtaining change notification . . . . . 45 | 8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 46 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 49 | 8.2. Registry of SIP configuration profile types . . . . . . . 46 | |||
9.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 49 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | |||
9.2. Registry of SIP configuration profile types . . . . . . . 49 | 9.1. Local-network profile . . . . . . . . . . . . . . . . . . 49 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 50 | 9.2. Device profile . . . . . . . . . . . . . . . . . . . . . . 50 | |||
10.1. Local-network profile . . . . . . . . . . . . . . . . . . 52 | 9.3. User profile . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
10.2. Device profile . . . . . . . . . . . . . . . . . . . . . 53 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
10.3. User profile . . . . . . . . . . . . . . . . . . . . . . 54 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 55 | 11.1. Normative References . . . . . . . . . . . . . . . . . . . 53 | |||
12. Change History . . . . . . . . . . . . . . . . . . . . . . . . 55 | 11.2. Informative References . . . . . . . . . . . . . . . . . . 54 | |||
12.1. Changes from | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 54 | |||
draft-ietf-sipping-config-framework-11.txt . . . . . . . 56 | Intellectual Property and Copyright Statements . . . . . . . . . . 56 | |||
12.2. Changes from | ||||
draft-ietf-sipping-config-framework-10.txt . . . . . . . 56 | ||||
12.3. Changes from | ||||
draft-ietf-sipping-config-framework-09.txt . . . . . . . 56 | ||||
12.4. Changes from | ||||
draft-ietf-sipping-config-framework-08.txt . . . . . . . 57 | ||||
12.5. Changes from | ||||
draft-ietf-sipping-config-framework-07.txt . . . . . . . 57 | ||||
12.6. Changes from | ||||
draft-ietf-sipping-config-framework-06.txt . . . . . . . 58 | ||||
12.7. Changes from | ||||
draft-ietf-sipping-config-framework-05.txt . . . . . . . 58 | ||||
12.8. Changes from | ||||
draft-ietf-sipping-config-framework-04.txt . . . . . . . 59 | ||||
12.9. Changes from | ||||
draft-ietf-sipping-config-framework-03.txt . . . . . . . 59 | ||||
12.10. Changes from | ||||
draft-ietf-sipping-config-framework-02.txt . . . . . . . 59 | ||||
12.11. Changes from | ||||
draft-ietf-sipping-config-framework-01.txt . . . . . . . 59 | ||||
12.12. Changes from | ||||
draft-ietf-sipping-config-framework-00.txt . . . . . . . 60 | ||||
12.13. Changes from | ||||
draft-petrie-sipping-config-framework-00.txt . . . . . . 60 | ||||
12.14. Changes from draft-petrie-sip-config-framework-01.txt . . 60 | ||||
12.15. Changes from draft-petrie-sip-config-framework-00.txt . . 61 | ||||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 61 | ||||
13.1. Normative References . . . . . . . . . . . . . . . . . . 61 | ||||
13.2. Informative References . . . . . . . . . . . . . . . . . 62 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 63 | ||||
Intellectual Property and Copyright Statements . . . . . . . . . . 64 | ||||
1. Introduction | 1. Introduction | |||
SIP User Agents require configuration data to function properly. | SIP User Agents require configuration data to function properly. | |||
Examples include local network, device and user specific information. | Examples include local network, device and user specific information. | |||
Ideally, this configuration process should be automatic and require | A configuration data set specific to an entity is termed a profile. | |||
minimal or no user intervention. | For example, device profile contains the configuration data related | |||
to a device. The process of providing devices with one or more | ||||
profiles is termed profile delivery. Ideally, this profile delivery | ||||
process should be automatic and require 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. This framework | containing SIP User Agents from multiple vendors. This framework | |||
also addresses change notifications when profiles change. However, | also addresses change notifications when profiles change. However, | |||
the framework does not define the content or format of the actual | the framework does not define the content or format of the profile, | |||
profile data, leaving that to future standardization activities. | leaving that to future standardization activities. | |||
This document is organized as follows. Section 3 provides a brief | This document is organized as follows. Section 3 provides a high- | |||
executive summary of the framework operation. Section 4 provides a | level overview of the abstract components, profiles, and the profile | |||
high-level overview of the abstract components, profiles, and profile | delivery stages. Section 4 provides some motivating use cases. | |||
delivery stages. Section 5 provides some motivating use cases. | Section 5 provides details of the framework operation and | |||
Section 6 provides details of the framework operation and | requirements. Section 6 provides a concise event package definition. | |||
requirements. Section 7 provides a concise event package definition. | Section 7 follows with illustrative examples of the framework in use. | |||
Section 8 follows with illustrative examples of the framework in use. | ||||
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]. | |||
This document also reuses the SIP terminology defined in [RFC3261] | This document also reuses the SIP terminology defined in [RFC3261] | |||
and [RFC3265], and specifies the usage of the following terms. | and [RFC3265], and specifies the usage of the following terms. | |||
skipping to change at page 6, line 26 | skipping to change at page 5, line 26 | |||
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 devices | 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 access | Delivery Server that is responsible for storing, providing access | |||
to, and accepting profile content. | to, and accepting profile content. | |||
3. Executive Summary | Profile Delivery Stages: the processes that lead a device to obtain | |||
profile data, and any subsequent changes, are collectively called | ||||
profile delivery stages. | ||||
3. Overview | ||||
This section provides an overview of the configuration framework. It | ||||
presents the reference model, the motivation, the profile delivery | ||||
stages and a mapping of the concepts to specific use cases. It is | ||||
meant to serve as a reference section for the document, rather than | ||||
providing a specific logical flow of material, and it may be | ||||
necessary to revisit these sections for a complete appreciation of | ||||
the framework. | ||||
The SIP UA Profile Delivery Framework uses a combination of SIP event | The SIP UA Profile Delivery Framework uses a combination of SIP event | |||
messages (SUBSCRIBE and NOTIFY; [RFC3265]) and traditional file | messages (SUBSCRIBE and NOTIFY; [RFC3265]) and traditional file | |||
retrieval protocols, such as HTTP [RFC2616], to discover, monitor, | retrieval protocols, such as HTTP [RFC2616], to discover, monitor, | |||
and retrieve configuration profiles. The framework defines three | and retrieve configuration profiles. The framework defines three | |||
types of profiles (local-network, device, and user) in order to | types of profiles (local-network, device, and user) in order to | |||
separate aspects of the configuration which may be independently | separate aspects of the configuration which may be independently | |||
managed by different administrative domains. The initial SUBSCRIBE | managed by different administrative domains. The initial SUBSCRIBE | |||
for each profile allows the UA to describe itself (both its | message for each profile allows the UA to describe itself (both its | |||
implementation and its identity), while requesting access to a | implementation and the identity requesting the profile), while | |||
profile by type, without prior knowledge of the profile name or | requesting access to a profile by type, without prior knowledge of | |||
location. Discovery mechanisms are specified to help the UA form the | the profile name or location. Discovery mechanisms are specified to | |||
SUBSCRIBE request URI. The SIP UAS handling these subscriptions is | help the UA form the subscription URI (the Request URI for the SIP | |||
the Profile Delivery Server (PDS). When the PDS accepts a | SUBSCRIBE). The SIP UAS handling these subscriptions is the Profile | |||
subscription, it sends a NOTIFY to the device. The initial NOTIFY | Delivery Server (PDS). When the PDS accepts a subscription, it sends | |||
from the PDS for each profile may contain profile data or a reference | a NOTIFY to the device. The initial NOTIFY from the PDS for each | |||
to the location of the profile, to be retrieved using HTTP or similar | profile may contain profile data or a reference to the location of | |||
file transfer mechanisms. By maintaining a subscription to each | the profile, to be retrieved using HTTP or similar file retrieval | |||
profile, the UA will receive additional NOTIFY messages if the | protocols. By maintaining a subscription to each profile, the UA | |||
profile is later changed. These may contain a new profile, a | will receive additional NOTIFY messages if the profile is later | |||
reference to a new profile, or a description of profile changes, | changed. These may contain a new profile, a reference to a new | |||
depending on the Content-Type [RFC3261] in use by the subscription. | profile, or a description of profile changes, depending on the | |||
The framework describes the mechanisms for obtaining three different | Content-Type [RFC3261] in use by the subscription. The framework | |||
profile types, but does not describe the data model they utilize (the | describes the mechanisms for obtaining three different profile types, | |||
data model is out of scope for this specification). | but does not describe the data model they utilize (the data model is | |||
out of scope for this specification). | ||||
4. Overview | ||||
This section provides an overview of the configuration framework. It | ||||
introduces the reference model and explains the Profile Delivery | ||||
Stages and the Profile Types. It is meant to serve as a 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 6, is based | ||||
on the concepts introduced in this section. | ||||
4.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. | |||
The reference model for the framework defines the interactions | The reference model for the framework defines the interactions | |||
between the Profile Delivery Server(PDS) and the device. The device | between the Profile Delivery Server(PDS) and the device. The device | |||
needs the profile data to effectively function in the network. The | needs the profile data to function effectively in the network. The | |||
PDS is responsible for responding to device requests and providing | PDS is responsible for responding to device requests and providing | |||
the profile data. The reference model is illustrated in Figure 1. | the profile data. The reference model is illustrated in Figure 1. | |||
+-------------------------+ | +-------------------------+ | |||
+--------+ | Profile Delivery Server | | +--------+ | Profile Delivery Server | | |||
| Device |<==========================>| +---+ +---+ | | | Device |<==========================>| +---+ +---+ | | |||
+--------+ | |PNC| |PCC| | | +--------+ | |PNC| |PCC| | | |||
| +---+ +---+ | | | +---+ +---+ | | |||
+-------------------------+ | +-------------------------+ | |||
skipping to change at page 7, line 46 | skipping to change at page 7, line 4 | |||
+-------------------------+ | +-------------------------+ | |||
+--------+ | Profile Delivery Server | | +--------+ | Profile Delivery Server | | |||
| Device |<==========================>| +---+ +---+ | | | Device |<==========================>| +---+ +---+ | | |||
+--------+ | |PNC| |PCC| | | +--------+ | |PNC| |PCC| | | |||
| +---+ +---+ | | | +---+ +---+ | | |||
+-------------------------+ | +-------------------------+ | |||
PNC = Profile Notification Component | PNC = Profile Notification Component | |||
PCC = Profile Content Component | PCC = Profile Content Component | |||
Figure 1: Framework Reference Model | Figure 1: 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 | |||
devices for profiles and providing profile change notifications; | devices for profiles and providing profile change notifications; | |||
o Profile Content Component (PCC), responsible for storing, | o Profile Content Component (PCC), responsible for storing, | |||
providing access to, and accepting modifications related to | providing access to, and accepting modifications related to | |||
profile content. | profile content. | |||
The preceding framework reference model can be applied in a variety | 3.2. Motivation | |||
of deployments scenarios. Two deployment scenarios representing | ||||
different ends of the complexity spectrum are presented. | ||||
In the simplest scenario, a device connects through a network that is | The motivation for the framework can be demonstrated by applying the | |||
controlled by a single provider who provides the local-network, | reference model presented in Section 3.1 to two scenarios that are | |||
manages the devices, and offers services to the users. The provider | representative of the two ends of a spectrum of potential SIP | |||
propagates profile data to the device that contains all the necessary | deployments. | |||
information to obtain services in the network (including information | ||||
related to the local-network and the users). This is illustrated in | In the simplest deployment scenario, a device connects through a | |||
Figure 2. | network that is controlled by a single provider who provides the | |||
local-network, manages the devices, and offers services to the users. | ||||
The provider propagates 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 Figure 2. An example is a simple enterprise | ||||
network that supports SIP-based devices. | ||||
-------------- | -------------- | |||
/ Local-network, \ | / Local-network, \ | |||
| Device & Service | | | Device & Service | | |||
\ Provider / | \ Provider / | |||
---------------- | ---------------- | |||
| | | | |||
| | | | |||
-------- | -------- | |||
| Device | | | Device | | |||
-------- | -------- | |||
| | | | |||
| | | | |||
---- | ---- | |||
|User| | |User| | |||
---- | ---- | |||
Figure 2: Simple System Level Model | Figure 2: Simple Deployment Model | |||
In more complex deployments, devices connect via a local network that | In more complex deployments, devices connect via a local network that | |||
is not controlled by the SIP Service Provider, such as devices that | is not controlled by the SIP Service Provider, such as devices that | |||
connect via available public WiFi hotspots. In such cases, local | connect via available public WiFi hotspots. In such cases, local | |||
network providers may wish to provide local network information such | network providers may wish to provide local network information such | |||
as bandwidth constraints to the devices. | as bandwidth constraints to the devices. | |||
Devices may also be controlled by device providers that are | Devices may also be controlled by device providers that are | |||
independent of the SIP service provider who provides user services, | independent of the SIP service provider who provides user services, | |||
such as kiosks that allow users to access services anywhere. In such | such as kiosks that allow users to access services from remote | |||
cases the profile data may have to be obtained from different profile | locations. In such cases the profile data may have to be obtained | |||
sources: local network provider, device provider and SIP service | from different profile sources: local network provider, device | |||
provider. This is indicated in Figure 3 . | provider and SIP service provider. This is indicated in Figure 3 . | |||
-------- | -------- | |||
/ SIP \ | / SIP \ | |||
| Service | -> Provides 'user' profile | | Service | -> Provides 'user' profile | |||
| Provider | data (e.g., services | | Provider | data (e.g., services | |||
\ / configuration) | \ / configuration) | |||
-------- -------- | -------- -------- | |||
| / \ | | / \ | |||
| | Device | -> Provides 'device' profile | | | Device | -> Provides 'device' profile | |||
| | Provider | data (e.g., device specifics) | | | Provider | data (e.g., device specifics) | |||
skipping to change at page 9, line 44 | skipping to change at page 9, line 4 | |||
| | | | |||
| | | | |||
-------- | -------- | |||
| Device | -> Needs the 'local-network' | | Device | -> Needs the 'local-network' | |||
-------- and 'device' profile | -------- and 'device' profile | |||
/ \ | / \ | |||
/ \ | / \ | |||
------ ------ | ------ ------ | |||
|User A| |User B| -> Users need 'user' profiles | |User A| |User B| -> Users need 'user' profiles | |||
------ ------ | ------ ------ | |||
Figure 3: Complex Deployment Model | ||||
Figure 3: General System Level Model | In either case, Providers need to deliver to the device, profile data | |||
As illustrated, the simplest deployments present a single profile | that is required to participate in their network. Examples of | |||
source whereas others may present multiple profile sources. To | profile data include the list of codecs that can be used and the SIP | |||
address a vast majority of deployments, this framework specifies | proxies to connect to for services. Pre-configuration of such | |||
three distinct profiles, each of which can be obtained from a | information is one option if the device is always served by the same | |||
different provider, and set of a profile delivery stages that are | set of Providers. In all other cases, the profile delivery needs to | |||
common to any profile type. | be automated and consistent across Providers. Given the presence of | |||
a number of large deployments where pre-configuration is neither | ||||
desired nor optimal, there is a need for a common configuration | ||||
framework such as the one described in this document. | ||||
The understanding is that deployments in general will support the | Further, the former deployment model can be accomplished by the | |||
defined profile types. However, the framework allows for flexibility | device obtaining profile data from a single provider. However, the | |||
in specialized cases. PDSs and devices will implement all the three | latter deployment model requires the device to obtain profile data | |||
profile types. Unless configured otherwise, a device will try to | from different providers. To address either deployment, or any | |||
obtain all the three profile types. A retrieval order is specified | variation in between, one needs to allow for profile delivery via | |||
for the profile. Additional profiles may also be specified outside | one, or more, Providers. The framework accomplishes this by | |||
the scope of this document, but are expected to follow the same | specifying multiple profile types and a set of profile delivery | |||
profile delivery stages. | stages to obtain them. These are introduced in the sub-sections to | |||
follow. | ||||
4.2. Data Model and Profile Types | 3.3. Profile Types | |||
This framework specifies the following three profiles. Additional | The framework handles the presence of potentially different Providers | |||
extended profiles may also be defined. | by allowing for multiple profile types. Clients request each profile | |||
and obtain them from the same, or different, Providers. Additional | ||||
profile types may also be specified. A deployment can also choose to | ||||
pre-configure the device to request only a subset of the specified | ||||
profile types. The framework specifies three basic profile types, as | ||||
follows: | ||||
Local Network Profile: contains configuration data related to the | Local Network Profile: contains configuration data related to the | |||
local network to which a device is directly connected. It is | local network to which a device is directly connected, provided by | |||
expected to be provided by the Local Network Provider. | the Local Network Provider. | |||
Device Profile: Contains configuration data related to a specific | Device Profile: contains configuration data related to a specific | |||
device, provided by the Device Provider. | device, provided by the Device Provider. | |||
User Profile: contains configuration data related to a specific | User Profile: contains configuration data related to a specific | |||
User, as required to reflect that user's preferences and the | User, as required to reflect that user's preferences and the | |||
particular services subscribed to. It is expected to be provided | particular services subscribed to. It is provided by the SIP | |||
by the SIP Service Provider. | Service Provider. | |||
4.3. Profile Delivery Stages | PDSs and devices will implement all the three profile types. Unless | |||
configured otherwise, a device will try to obtain all the three | ||||
profile types. A retrieval order is specified by the framework. The | ||||
data models associated with each profile type is out of scope for | ||||
this document. Follow-on standardization activities are expected to | ||||
specify such data models. | ||||
3.4. Profile delivery stages | ||||
The framework specified in this document requires a device to | The framework specified in this document requires a device to | |||
explicitly request profiles. It also requires one or more PDSs which | explicitly request profiles. It also requires one or more PDSs which | |||
provide the profile data. The processes that lead a device to obtain | provide the profile data. The processes that lead a device to obtain | |||
profile data, and any subsequent changes, can be explained in three | profile data, and any subsequent changes, can be explained in three | |||
stages, termed the Profile Delivery Stages. | stages, termed the profile delivery stages. | |||
Profile Enrollment: the process by which a device requests, and if | Profile Enrollment: the process by which a device requests, and if | |||
successful, enrolls with a PDS capable of providing a profile. A | successful, enrolls with a PDS capable of providing a profile. A | |||
successful enrollment is indicated by a notification containing | successful enrollment is indicated by a notification containing | |||
the profile information (contents or content indirection | the profile information (contents or content indirection | |||
information). Depending on the request, this could also result in | information). Depending on the request, this could also result in | |||
a subscription to notification of profile changes. | a subscription to notification of profile changes. | |||
Profile Content Retrieval: the process by which a device retrieves | Profile Content Retrieval: the process by which a device retrieves | |||
profile contents, if the profile enrollment resulted in content | profile contents, if the profile enrollment resulted in content | |||
indirection information. | indirection information. | |||
Profile Change Notification: the process by which a device is | Profile Change Notification: the process by which a device is | |||
notified of any changes to an enrolled profile. This may provide | notified of any changes to an enrolled profile. This may provide | |||
the device with modified profile data or content indirection | the device with modified profile data or content indirection | |||
information. | information. | |||
5. 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. The first use case is simplistic in | be utilized in SIP deployments. The first use case is simplistic in | |||
nature, where as the second is relatively complex. The use cases | nature, where as the second is relatively complex. The use cases | |||
illustrate the effectiveness of the framework in either scenario. | illustrate the effectiveness of the framework in either scenario. | |||
For Security Considerations please refer to Section 6 and Section 10. | For Security Considerations please refer to Section 5 and Section 9. | |||
5.1. Simple Deployment Scenario | 4.1. Simple Deployment Scenario | |||
Description: Consider a deployment scenario (e.g., a small private | Description: Consider a deployment scenario (e.g., a small private | |||
enterprise) where a single entity enables the local network, manages | enterprise) where a single entity enables the local network, manages | |||
deployed devices and provides SIP services. The devices only attach | deployed devices and provides SIP services. The devices only attach | |||
to the local network, and are pre-configured with a single user. | to the local network, and are pre-configured with a single user. | |||
The following assumptions apply: | The following assumptions apply: | |||
o The device profile data contains all the information necessary | o The device profile data contains all the information necessary | |||
for the device to participate in the local network and obtain | for the device to participate in the local network and obtain | |||
services. | services. | |||
skipping to change at page 12, line 38 | skipping to change at page 12, line 16 | |||
The following is an explanation of the interactions in Figure 4. | The following is an explanation of the interactions in Figure 4. | |||
(A) Upon initialization, the device obtains IP configuration | (A) Upon initialization, the device obtains IP configuration | |||
parameters using DHCP. | parameters using DHCP. | |||
(B) The device performs Profile Enrollment for the device profile; | (B) The device performs Profile Enrollment for the device profile; | |||
the device profile data is contained in the enrollment | the device profile data is contained in the enrollment | |||
notification. | notification. | |||
(C) Due to a modification of the device profile, a Profile Change | (C) Due to a modification of the device profile, a Profile Change | |||
Notification is sent across to the device, along with the | Notification is sent across to the device, along with the | |||
modified profile. | modified profile. | |||
5.2. Devices supporting multiple users from different Service Providers | 4.2. Devices supporting multiple users from different Service Providers | |||
Description: Consider a single device (e.g., Kiosk at an airport) | Description: Consider a single device (e.g., Kiosk at an airport) | |||
that allows for multiple users to obtain services from a list of pre- | that allows multiple users to obtain services from a list of pre- | |||
configured SIP Service Providers. | configured SIP Service Providers. | |||
The following assumptions apply: | The following assumptions apply: | |||
o Provider A is the Device and Local Network Provider for the | o Provider A is the Device and Local Network Provider for the | |||
device, and the SIP Service Provider for user A; Provider B is | device, and the SIP Service Provider for user A; Provider B is | |||
the SIP Service Provider for user B. | the SIP Service Provider for user B. | |||
o Profile enrollment always results in content indirection | o Profile enrollment always results in content indirection | |||
information requiring profile content retrieval. | information requiring profile content retrieval. | |||
o Communication between the device and the PDSs is facilitated by | o Communication between the device and the PDSs is facilitated by | |||
SIP proxies. | SIP proxies. | |||
skipping to change at page 15, line 27 | skipping to change at page 14, line 27 | |||
device profile content retrieval. The device initializes the | device profile content retrieval. The device initializes the | |||
User interface for services. | User interface for services. | |||
(D) User A with a pre-existing service relationship with Provider A | (D) User A with a pre-existing service relationship with Provider A | |||
attempts communication via the user Interface. The device uses | attempts communication via the user Interface. The device uses | |||
the user supplied information (including any credential | the user supplied information (including any credential | |||
information) and requests profile enrollment for user A's | information) and requests profile enrollment for user A's | |||
profile. Successful enrollment and profile content retrieval | profile. Successful enrollment and profile content retrieval | |||
results in services for user A. | results in services for user A. | |||
(E) At a different point in time, user B with a service relationship | (E) At a different point in time, user B with a service relationship | |||
with Provider B attempts communication via the user Interface. | with Provider B attempts communication via the user Interface. | |||
It enrolls and retreives user B's profile and this results in | It enrolls and retrieves user B's profile and this results in | |||
services for user B. | services for user B. | |||
6. Profile Delivery Framework | 5. Profile Delivery Framework | |||
This section presents the profile delivery framework, the subject of | ||||
this document. The section starts by explaining the framework via | ||||
the profile delivery stages. It then explains how the framework | ||||
secures the profile data propagation. It ends with considerations | ||||
such as back-off and retry mechanisms and profile data. | ||||
6.1. Profile Delivery Stages | ||||
There are three profile delivery stages: profile enrollment, content | ||||
retrieval and change notification. | ||||
The first step is profile enrollment and serves two purposes. It | ||||
allows a device to enroll with a PDS. It also allows the PDS to | ||||
receive the request, authenticate if necessary, authorize and enroll | ||||
the device. | ||||
If the device enrolls successfully, the PDS transmits a notification | This section specifies the profile delivery framework. It provides | |||
to the device. This notification contains either the requested | the requirements for the three profile delivery stages introduced in | |||
profile data, or content indirection information indicating the PCC | Section 3.4 and presents the associated security requirements. It | |||
that can provide the profile data. Usage of content indirection is | also presents considerations such as back-off and retry mechanisms. | |||
optional. When employed, the retrieval of the profile data is | ||||
described by the stage termed content retrieval. | ||||
Based on the enrollment request, the PDS may enroll the device for a | 5.1. Profile delivery stages | |||
period in time during which the device is notified of any profile | ||||
changes. This stage is termed change notification. | ||||
The stages apply to any profile specified by this framework. Devices | The three profile delivery stages - enrollment, content retrieval and | |||
and PDSs MUST comply with the requirements as specified in this | change notification - apply to any profile type specified for use | |||
section. The details and the requirements are specified below. | with this framework. The following sub-sections provide the | |||
requirements associated with each stage. | ||||
6.1.1. Profile Enrollment | 5.1.1. Profile Enrollment | |||
Profile enrollment is the process by means of which a device | Profile enrollment is the process by means of which a device | |||
requests, and receives, profile data. Each profile type specified in | requests, and receives, profile data. Each profile type specified in | |||
this document requires an independent enrollment request. However, a | this document requires an independent enrollment request. However, a | |||
particular PDS can support enrollment for one or more profile types. | particular PDS can support enrollment for one or more profile types. | |||
Profile enrollment consists of the following operations, in the | Profile enrollment consists of the following operations, in the | |||
specified order. | specified order. | |||
Enrollment request transmission | Enrollment request transmission | |||
Profile enrollment is initiated when the device transmits an | Profile enrollment is initiated when the device transmits a SIP | |||
enrollment request using a SIP SUBSCRIBE request [RFC3265] for the | SUBSCRIBE request [RFC3265] for the 'ua-profile' event package, | |||
event package specified in Section 7.2. The profile being | specified in Section 6. The profile being requested is indicated | |||
requested is indicated using the 'profile-type' parameter. The | using the 'profile-type' parameter. The device MUST transmit the | |||
device MUST transmit the SIP SUBSCRIBE message in accordance with | SIP SUBSCRIBE message via configured outbound proxies for the | |||
RFC 3263 [RFC3263]. | destination domain, or in accordance with RFC 3263 [RFC3263]. | |||
The device needs certain data to create an enrollment request. | The device needs certain data to create an enrollment request, | |||
This includes the profile provider's domain name, identities and | form a Request URI, and authenticate to the network. This | |||
includes the profile provider's domain name, identities and | ||||
credentials. Such data can be "configured" during device | credentials. Such data can be "configured" during device | |||
manufacturing, by the user prior to network connectivity, or via | manufacturing, by the user, or via profile data retrieval (see | |||
profile data retrieval. It can also be "discovered" using the | Section 5.3.1). The data can also be "discovered" using the | |||
procedures specified by this framework. The "discovered" data can | procedures specified by this framework. The "discovered" data can | |||
be retained across device resets (but not across factory resets) | be retained across device resets (but not across factory resets) | |||
and such data is refered to as "cached". Thus, data can be | and such data is referred to as "cached". Thus, data can be | |||
cached, configured or discovered. The following rules apply. | configured, discovered or cached. The following requirements | |||
apply. | ||||
* If the device is configured with a specific domain name (for | * If the device is configured with a specific domain name (for | |||
the local network provider or device provider), it MUST NOT | the local network provider or device provider), it MUST NOT | |||
attempt re-discovery of the domain name. | attempt "discovery" of the domain name. This is the case when | |||
the device is pre-configured (e.g., via a UI) to be managed by | ||||
specific entities. | ||||
* The device MUST only use data associated with the provider's | * The device MUST only use data associated with the provider's | |||
domain in an enrollment request. As an example, when the | domain in an enrollment request. As an example, when the | |||
device is requesting a local-network profile in the domain | device is requesting a local-network profile in the domain | |||
'example.net', it cannot present a user AoR associated with the | 'example.net', it cannot present a user AoR associated with the | |||
local domain 'example.com'. | local domain 'example.com'. | |||
* The device SHOULD adhere to the following order of data usage: | * The device SHOULD adhere to the following order of data usage: | |||
cached, configured, and discovered. An exception is when the | configured, cached and discovered. An exception is when the | |||
device is explicitly configured to use a different order. | device is explicitly configured to use a different order. | |||
Upon failure to obtain the profile using any methods specified in | Upon failure to obtain the profile using any methods specified in | |||
this framework, the device MAY provide a user interface to allow | this framework, the device MAY provide a user interface to allow | |||
for user intervention. This can result in temporary, one-time | for user intervention. This can result in temporary, one-time | |||
data to bootstrap the device. Such temporary data is not | data to bootstrap the device. Such temporary data is not | |||
considered to be "configured" and is not expected to be cached | considered to be "configured" and is not expected to be cached | |||
across resets. The configuration obtained using such data MAY | across resets. The configuration obtained using such data MAY | |||
provide the configuration data required for the device to continue | provide the configuration data required for the device to continue | |||
functioning normally. | functioning normally. | |||
Devices attempting enrollment MUST comply with the SIP-specific | Devices attempting enrollment MUST comply with the SIP-specific | |||
event notification specified in [RFC3265], the event package | event notification specified in [RFC3265], the event package | |||
requirements specified in Section 7.2, and the security | requirements specified in Section 6.2, and the security | |||
requirements specified in Section 6.2. | requirements specified in Section 5.2. | |||
Enrollment request admittance | Enrollment request admittance | |||
A PDS or a SIP infrastructure element (such as a SIP proxy) will | A PDS or a SIP proxy will receive a transmitted enrollment | |||
receive a transmitted enrollment request. If a SIP infrastructure | request. If a SIP infrastructure element receives the request, it | |||
element receives the request, it will relay it to the | will relay it to the authoritative proxy for the domain indicated | |||
authoritative proxy for the domain indicated in the Request-URI. | in the Request-URI (the same way it would handle any other | |||
The authoritative proxy is required to examine the request (e.g., | SUBSCRIBE message). The authoritative proxy is required to | |||
event package) and transmit it to a PDS capable of addressing the | examine the request (e.g., event package) and transmit it to a PDS | |||
profile enrollment request. | capable of addressing the profile enrollment request. | |||
A PDS receiving the enrollment request SHOULD respond to the | A PDS receiving the enrollment request SHOULD respond to the | |||
request, or proxy it to a PDS that can respond. An exception is | request, or proxy it to a PDS that can respond. An exception is | |||
when the a policy prevents a response (e.g., recognition of a DoS | when a policy prevents a response (e.g., recognition of a DoS | |||
attack, an invalid device, etc.). The PDS then verifies the | attack, an invalid device, etc.). The PDS then verifies the | |||
identity presented in the request and performs any necessary | identity presented in the request and performs any necessary | |||
authentication. Once authentication is successful, the PDS MAY | authentication. Once authentication is successful, the PDS MAY | |||
admit or reject the enrollment request, based on applicable | admit or reject the enrollment request, based on applicable | |||
authorization policies. A PDS admitting the enrollment request | authorization policies. A PDS admitting the enrollment request | |||
indicates it via a 2xx-class response, as specified in [RFC3265]. | indicates it via a 2xx-class response, as specified in [RFC3265]. | |||
Refer to Section 7.6 and Section 6.2 for more information on | Refer to Section 6.6 and Section 5.2 for more information on | |||
subscription request handling and security requirements, | subscription request handling and security requirements, | |||
respectively. | respectively. | |||
Enrollment request acceptance | Enrollment request acceptance | |||
A PDS that admits the enrollment request verifies applicable | A PDS that admits the enrollment request verifies applicable | |||
policies, identifies the requested profile data and prepares a SIP | policies, identifies the requested profile data and prepares a SIP | |||
notification to the device. Such a notification can either | NOTIFY message to the device. Such a notification can either | |||
contain the profile data or contain content indirection | contain the profile data or contain content indirection | |||
information that results in the device performing profile content | information that results in the device performing profile content | |||
retrieval. The PDS then transmits the prepared SIP notification. | retrieval. The PDS then transmits the prepared SIP notification. | |||
When the device successfully receives and accepts the SIP | When the device successfully receives and accepts the SIP | |||
notification, profile enrollment is complete. | notification, profile enrollment is complete. | |||
When it receives the SIP notification indicating enrollment | When it receives the SIP NOTIFY message, indicating successful | |||
acceptance, the device MUST make the new profile effective within | profile enrollment, the device MUST make the new profile effective | |||
the specified timeframe, as described in Section 7.2. | within the specified timeframe, as described in Section 6.2. | |||
Once profile enrollment is successful, the PDS MUST consider the | Once profile enrollment is successful, the PDS MUST consider the | |||
device enrolled for the specific profile, for the duration of the | device enrolled for the specific profile, for the duration of the | |||
subscription. | subscription. | |||
6.1.2. Content Retrieval | 5.1.2. Content Retrieval | |||
A successful profile enrollment leads to an initial SIP notification, | A successful profile enrollment leads to an initial SIP notification, | |||
and may result in subsequent change notifications. Each of these | and may result in subsequent change notifications. Each of these | |||
notifications can either contain profile data, or content indirection | notifications can either contain profile data, or content indirection | |||
information. If it contains content indirection information, the | information. If it contains content indirection information, the | |||
device is required to retrieve the profile data using the specified | device is required to retrieve the profile data using the specified | |||
content retrieval protocols. This process is termed profile content | content retrieval protocols. This process is termed profile content | |||
retrieval. For information regarding the content of the notification | retrieval. For information regarding the use of the SIP NOTIFY | |||
body please refer to Section 7.5. | message body please refer to Section 6.5. | |||
Devices and PDSs implementing this framework MUST implement two | Devices and PDSs implementing this framework MUST implement two | |||
content retrieval protocols: HTTP and HTTPS as specified in [RFC2616] | content retrieval protocols: HTTP and HTTPS as specified in [RFC2616] | |||
and [RFC2818], respectively. Future enhancements or usage of this | and [RFC2818], respectively. Future enhancements or usage of this | |||
framework may specify additional or alternative content retrieval | framework may specify additional or alternative content retrieval | |||
protocols. For security requirements and considerations please refer | protocols. For security requirements and considerations please refer | |||
to Section 6.2. | to Section 5.2. | |||
6.1.3. Change Notification | 5.1.3. Change Notification | |||
Profile data can change over time. Changes can be initiated by | Profile data can change over time. Changes can be initiated by | |||
various entities (e.g., via the device, back-office components and | various entities (e.g., via the device, back-office components and | |||
end-user web interfaces) and for various reasons (e.g., change in | end-user web interfaces) and for various reasons (e.g., change in | |||
user preferences and modifications to services). When a profile is | user preferences and modifications to services). Profiles may also | |||
be shared by multiple devices simultaneously. When a profile is | ||||
changed the PDS MUST inform all the devices currently enrolled for | changed the PDS MUST inform all the devices currently enrolled for | |||
the specific profile. This process of informing a device of any | the specific profile. This process of informing a device of any | |||
changes to the profile that it is currently enrolled for is termed | changes to the profile that it is currently enrolled for is termed | |||
change notification. | change notification. | |||
The PDS provides change notification using a SIP notification (SIP | The PDS provides change notification using a SIP notification (SIP | |||
NOTIFY message as specified in [RFC3265]). The SIP notification may | NOTIFY message as specified in [RFC3265]). The SIP notification may | |||
provide the changes, a revised profile or content indirection which | provide the changes, a revised profile or content indirection which | |||
contains a pointer to the revised data. When a device successfully | contains a pointer to the revised data. When a device successfully | |||
receives a profile change notification for an enrolled profile, it | receives a profile change notification for an enrolled profile, it | |||
MUST act upon the changes prior to the expiration of the 'Expires' | MUST act upon the changes prior to the expiration of the | |||
parameter. | 'effective-by' parameter. | |||
For NOTIFY content please refer to Section 7.5. | For NOTIFY content please refer to Section 6.5. | |||
6.1.4. Enrollment Data and Caching | 5.1.4. Enrollment Data and Caching | |||
To enroll, the device needs to request enrollment. This is done via | The requirements for the contents of the SIP SUBSCRIBE used to | |||
a SIP SUBSCRIBE message. The requirements for the contents of the | request profile enrollment are described in this section. The data | |||
SIP SUBSCRIBE are described in this section. The data required can | required can be configured, cached or discovered - depending on the | |||
be configured, cached or discovered - depending on the profile type. | profile type. If the data is not configured, the device MUST use | |||
If the data is not configured, the device MUST use relevant cached | relevant cached data or proceed with data discovery. This section | |||
data or proceed with data discovery. This section describes the | describes the requirements for creating a SIP SUBSCRIBE for | |||
requirements for creating a SIP SUBSCRIBE for enrollment, the caching | enrollment, the caching requirements and how data can be discovered. | |||
requirements and how data can be discovered. | ||||
6.1.4.1. Local-Network Profile | 5.1.4.1. Local-Network Profile | |||
To request the local-network profile a device needs the local network | To create a Subscription URI to request the local-network profile a | |||
domain name, a device identifier and optionally a user AoR with | device needs the local network domain name, the device identifier and | |||
associated credentials (if one is configured). Since the device can | optionally a user AoR with associated credentials (if one is | |||
be potentially initialized in a different local-network each time, it | configured). Since the device can be potentially initialized in a | |||
SHOULD NOT cache the local network domain or SIP subscription URIs | different local-network each time, it SHOULD NOT cache the local | |||
across resets. An exception to this is when the device can confirm | network domain, the SIP subscription URI or the local-network profile | |||
that it is reinitialized in the same network (using means outside the | data across resets. An exception to this is when the device can | |||
scope of this document). Thus, in most cases, the device needs to | confirm that it is reinitialized in the same network (using means | |||
discover the local network domain name. The device discovers this by | outside the scope of this document). Thus, in most cases, the device | |||
establishing IP connectivity in the local network. Once established, | needs to discover the local network domain name. The device | |||
the device MUST use the local network domain obtained using static | discovers this by establishing IP connectivity in the local network | |||
configuration. If it is not configured, it MUST employ dynamic | (such as via DHCP or pre-configured IP information). Once | |||
discovery using DHCPv4 ([RFC2132], Domain Name option) or DHCPv6 | established, the device MUST attempt to use the local network domain | |||
([RFC4704]). Once the local network domain is obtained, the device | obtained via pre-configuration, if available. If it is not pre- | |||
creates the SIP SUBSCRIBE for enrollment as described below. | configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | |||
Domain Name option) or DHCPv6 ([RFC4704]). Once the local network | ||||
domain is obtained, the device creates the SIP SUBSCRIBE for | ||||
enrollment as described below. | ||||
o The device MUST NOT populate the user part of the Request URI. | o The device MUST NOT populate the user part of the Request URI. | |||
The device MUST set the host and port of the Request URI to the | The device MUST set the host portion of the Request URI to the | |||
concatenation of "_sipuaconfig" and the local network domain/port. | dot-separated concatenation of "_sipuaconfig" and the local | |||
network domain (see example below). | ||||
o If the device has been configured with a user AoR for the local | o If the device has been configured with a user AoR for the local | |||
network domain (verified as explained in Section 6.2) it MUST use | network domain (verified as explained in Section 5.2) it MUST use | |||
it to populate the "From" field, unless explicity configured not | it to populate the "From" field, unless configured not to (due to | |||
to (due to privacy concerns, for example). If not, the device | privacy concerns, for example). Otherwise, the device MUST set | |||
MUST set the "From" field to a value of | the "From" field to a value of "anonymous@anonymous.invalid". | |||
"anonymous@anonymous.invalid". | ||||
o The device MUST include the +sip.instance parameter within the | o The device MUST include the +sip.instance parameter within the | |||
'Contact' header, as specified in [I-D.ietf-sip-outbound]. The | 'Contact' header, as specified in [I-D.ietf-sip-outbound]. The | |||
device MUST ensure that the value of this parameter is the same as | device MUST ensure that the value of this parameter is the same as | |||
that included in the device profile enrollment request. | that included in any subsequent profile enrollment request. | |||
For example, if the device 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:_sipuaconfig.airport.example.net | sip:_sipuaconfig.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 there are distinct | of routing to the appropriate PDS in domains where there are distinct | |||
servers. | servers. | |||
The From field is populated with the user AoR, if available. This | The From field is populated with the user AoR, if available. This | |||
allows the local network provider to propagate user-specific profile | allows the local network provider to propagate user-specific profile | |||
data, if available. The "+sip.instance" parameter is set to the | data, if available. The "+sip.instance" parameter within the | |||
device identifier or specifically, the SIP UA instance. Even though | "Contact" header is set to the device identifier or specifically, the | |||
every device may get the same (or similar) local-network Profile, the | SIP UA instance. Even though every device may get the same (or | |||
uniqueness of the "+sip.instance" parameter provides an important | similar) local-network Profile, the uniqueness of the "+sip.instance" | |||
capability. Having unique From fields allows the management of the | parameter provides an important capability. Having unique instance | |||
local network to track devices present in the network and | ID fields allows the management of the local network to track devices | |||
consequently also manage resources such as bandwidth allocation. | present in the network and consequently also manage resources such as | |||
bandwidth allocation. | ||||
6.1.4.2. Device Profile Type | 5.1.4.2. Device Profile Type | |||
The device profile is intended for obtaining information from the | Once associated with a device, the device provider is not expected to | |||
device provider managing the device. To request the device profile, | change frequently. An exception is a user who changes device | |||
the device needs a unique device identifier, the device provider's | providers, but retains the device. Thus, the device is allowed to, | |||
domain name and optionally a device AoR (if configured). The device | and SHOULD cache the Subscription URI for the device profile upon | |||
AoR is an AoR associated with the device for obtaining device | successful enrollment. Exceptions include cases where the device | |||
profiles. This is considered to be a special 'user AoR' for the | identifier has changed (e.g., new network card), device provider | |||
device profile, and can be the same as a user AoR associated with the | information has changed (e.g., user initiated change) or the device | |||
device. | cannot obtain its profile using the Subscription URI. Thus, when | |||
available, the device MUST use a cached Subscription URI. If no | ||||
cached URI is available then it needs to create a Subscription URI. | ||||
To create a Subscription URI, the device needs a device identity and | ||||
the device provider's domain name. Unless already configured, the | ||||
device needs to discover the necessary information and form the | ||||
subscription URI. In such cases, the following requirements apply | ||||
for creating a Subscription URI for requesting the device profile: | ||||
Once a provider is associated with a device, the device provider will | o The device MUST use the device identifier and the device | |||
not change frequently (an example of a change is the re-use of the | provider's domain name to form the Request URI. | |||
same device while changing device providers). Thus, the device | o The device MUST set the "From" field to a value of anonymous@ | |||
SHOULD cache the Subscription URI for the device profile upon | <device provider's domain>. | |||
successful enrollment, and use it upon reset. Exceptions include | o The device MUST include the +sip.instance parameter within the | |||
cases where the device identifier has changed (e.g., new network card | 'Contact' header, as specified in [I-D.ietf-sip-outbound]. The | |||
with a new MAC address), device provider information has changed | device MUST use the same value as the one presented while | |||
(e.g., user initiated change) or the device cannot obtain its profile | requesting the local-network profile. | |||
using the Subscription URI. | ||||
If it is not configured, then the device MUST use a cached, or | Note that the discovered AoR for the Request URI can be overridden by | |||
discovered domain name. If the device does not have a configured or | a special, provisioned, AoR that is unique to the device. In such | |||
cached Subscription URI, then it can use the device AoR. If that is | cases, the provisioned AoR is used to form the Request URI and to | |||
unavailable, it can use the configured device provider's domain to | populate the From field. | |||
form the subscription URI. | ||||
The following options are provided for device provider's domain | If the device is not configured with an AoR, and needs a domain name, | |||
discovery (used only when it is not configured with one). The device | it can either use a configured domain name, if available, or discover | |||
MUST use the results of each successful discovery process for one | it. The options to discover are described below. The device MUST | |||
use the results of each successful discovery process for one | ||||
enrollment attempt, in the order specified below. | enrollment attempt, in the order specified below. | |||
o Option 1: Devices that support DHCP MUST attempt to obtain the | o Option 1: Devices that support DHCP MUST attempt to obtain the | |||
host and port of the outbound proxy during the DHCP process, using | hostname of the outbound proxy during the DHCP process, using the | |||
the DHCP option for SIP servers defined in [RFC3361] or [RFC3319] | DHCP option for SIP servers defined in [RFC3361] or [RFC3319] (for | |||
(for IPv4 and IPv6 respectively). The values are then used to | IPv4 and IPv6 respectively). | |||
populate the Request URI. | ||||
o Option 2: Devices that support DHCP MUST attempt to obtain the | o Option 2: Devices that support DHCP MUST attempt to obtain the | |||
local IP network domain during the DHCP process (refer to | local IP network domain during the DHCP process (refer to | |||
[RFC2132] and [RFC4704] ) and use this as the host portion of the | [RFC2132] and [RFC4704] ). | |||
Request URI. | ||||
o Option 3: Devices MUST use the local network domain name | o Option 3: Devices MUST use the local network domain name | |||
(configured or discovered to retrieve the local-network profile), | (configured or discovered to retrieve the local-network profile), | |||
prefixing it with the label "_sipuaconfig". This is then used as | prefixing it with the label "_sipuaconfig". | |||
the host portion of the Request URI. | ||||
If the device has to create a new Subscription URI (i.e., from a | ||||
configured domain name, or if the cached URI is unusable) the | ||||
following requirements apply. | ||||
o The device MUST set the Request URI to the device AoR, if known. | ||||
If it is unavailable or the enrollment fails, the device MUST use | ||||
the device identifier (specified later in this section) along with | ||||
the device provider's domain name and port (configured or | ||||
discoverd) to form the Request URI. | ||||
o If the device has been configured with a device AoR, then it MUST | ||||
use it to populate the "From" field. If not, the device MUST set | ||||
the "From" field to a value of anonymous@<device provider's | ||||
domain>. | ||||
o The device MUST include the +sip.instance parameter within the | ||||
'Contact' header, as specified in [I-D.ietf-sip-outbound]. The | ||||
device MUST use the same value as the one presented while | ||||
requesting the local-network profile. | ||||
When the device needs to present its device identifier it MUST use | If the device needs to create a subscription URI and needs to use its | |||
the UUID-based URN representation for the user portion of the | device identifier, it MUST use the UUID-based URN representation as | |||
Request-URI, as specified in [RFC4122]. The following requirements | specified in [RFC4122]. The following requirements apply: | |||
apply: | ||||
o When the device has a non-alterable MAC address it SHOULD use | o When the device has a non-alterable MAC address it SHOULD use | |||
version 1 UUID representation with the timestamp and clock | version 1 UUID representation with the timestamp and clock | |||
sequence bits set to a value of '0'. This will allow for easy | sequence bits set to a value of '0'. This will allow for easy | |||
recognition, and uniqueness of MAC address based UUIDs. An | recognition, and uniqueness of MAC address based UUIDs. An | |||
exception is the case where the device supports independent device | exception is the case where the device supports independent device | |||
configuration for more than one SIP UA. An example would be | configuration for more than one SIP UA. An example would be | |||
multiple SIP UAs on the same platform. | multiple SIP UAs on the same platform. | |||
o If the device cannot use a non-alterable MAC Address, it MUST use | o If the device cannot use a non-alterable MAC Address, it SHOULD | |||
the same approach as defining a user agent Instance ID in | use an alternative non-alterable device identifier. For example, | |||
the International Manufacturer's Equipment Identifier (IMEI) for | ||||
mobile devices. | ||||
o If the device cannot use a non-alterable MAC Address, it MUST be | ||||
use the same approach as defining a user agent Instance ID in | ||||
[I-D.ietf-sip-outbound]. | [I-D.ietf-sip-outbound]. | |||
o When the URN is used as the user part of the Request URI, it MUST | o As a note, when the URN is used as the user part of the Request | |||
be URL escaped | URI, it MUST be URL escaped | |||
The colon (":") is not a legal character (without being | The colon (":") is not a legal character in the user part of an | |||
escaped) in the user part of an addr-spec ([RFC4122]). | addr-spec ([RFC4122]), and must be escaped. | |||
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] | |||
6.1.5. User Profile Type | 5.1.4.3. User Profile Type | |||
The user profile allows a SIP Service Provider to provide user- | To create a Subscription URI to request the user profile on behalf of | |||
specific configuration. This is based on a user AoR that is known by | a user, the device needs to know the user's AoR. This can be | |||
the PDS and statically or dynamically configured on the device (e.g., | statically or dynamically configured on the device (e.g., user input, | |||
user entered or propagated as part of the device or other profile). | or propagated as part of the device profile). Similar to device | |||
Similar to device profiles, the content and propagation of user | profiles, the content and propagation of user profiles may differ, | |||
profiles may differ, based on deployment scenarios (e.g., users | based on deployment scenarios (i.e., users belonging to the same | |||
belonging to the same domain may - or may not - be provided the same | domain may - or may not - be provided the same profile). To create a | |||
profile). This framework does not specify any discovery mechanisms | subscription URI, the following rules apply: | |||
for this profile type. Unless configured, the device cannot, and | o The device MUST set the Request URI to the user AoR. | |||
MUST NOT, request the user profile. | o The device MUST populate the "From" field with the user AoR. | |||
6.2. Securing Profile Delivery | 5.2. Securing Profile Delivery | |||
This section further explains the profile delivery stages. | Profile data can contain sensitive information that needs to be | |||
Specifically, it presents the requirements necessary to secure | secured, such as identities and credentials. Security involves | |||
profile delivery. | authentication, message integrity and privacy. Authentication is the | |||
process by which you verify that an entity is who it claims to be, | ||||
such as a user AoR presented during profile enrollment. Message | ||||
integrity provides the assurance that the message contents | ||||
transmitted between two entities, such as between the PDS and the | ||||
device, has not been modified during transit. Privacy ensures that | ||||
the message contents have not been subjected to monitoring by | ||||
unwanted elements, during transit. At a minimum, authentication and | ||||
message integrity are required to ensure that the profile contents | ||||
were received by a valid entity, from a valid source, and without any | ||||
modifications during transit. For profiles that contain sensitive | ||||
data, privacy is required to ensure that the data is not snooped by | ||||
unwanted elements. | ||||
It is to be noted that future enhancements to the framework may | For an overview of potential security threats, refer to Section 9.The | |||
specify additional or alternative behavior. Any such enhancements | requirements to address the concerns are required for all stages of | |||
should be cryptographically equivalent to, or increase, the | profile delivery, and are presented in the following subsections. | |||
requirements presented in this document. | ||||
For security threats and considerations addressed by this section | 5.2.1. Securing Profile Enrollment | |||
please refer to Section 10. | ||||
6.2.1. General Requirements | During profile enrollment, the device needs to authenticate two | |||
entities. The next-hop entity, i.e., a proxy or a PDS, to which the | ||||
device transmits the profile enrollment request, and the initial | ||||
notification from the PDS. On the Provider's side, a PDS that | ||||
recognizes an identity, such as the user AoR, that will result in | ||||
sensitive (or even non-generic) data included in the initial or | ||||
change notifications, will need to authenticate the device claiming | ||||
such identities. | ||||
Profile data retrieval starts with profile enrollment. The device | Authentication of the next-hop entity by the device is accomplished | |||
forms a SIP subscription as specified in Section 6.1.4 and transmits | by using the procedures specified in [RFC2818], Section 3.1, over an | |||
it to the SIP entity resulting from the procedures specified in | establish TLS connection ([RFC4346]). The 'Server Identity' in this | |||
[RFC3263]. The entity to which it transmits the profile enrollment | case is always the domain of the next-hop SIP entity. A device | |||
is termed the 'next-hop SIP entity'. It can be a SIP proxy or a PDS. | presenting a SIPS URI as a user AoR MUST establish TLS with the next- | |||
hop SIP entity to which it sends the enrollment request. In all | ||||
other cases, the device SHOULD still attempt establishment of TLS | ||||
with the next-hop SIP entity. An exception is when it is explicitly | ||||
configured not to. If it attempts to establish TLS and it fails | ||||
because the next-hop SIP entity does not support TLS, the device | ||||
SHOULD attempt other resolved next-hop SIP entities prior to | ||||
attempting enrollment without TLS. If the device attempts to | ||||
establish a TLS session and fails to verify the next-hop entity | ||||
(e.g., the domain name could not be verified) the device MUST NOT | ||||
continue with the current enrollment request, and must retry with | ||||
other resolved next-hop SIP entities. If the device is attempting to | ||||
establish TLS, and exhausts the entire list of next-hop entities, | ||||
then: | ||||
This framework utilizes TLS ([RFC4346]) and 'Server Identity' | o if the device has a user interface, and unless configured not to, | |||
verification as specified in [RFC2818], Section 3.1. The 'Server | the device SHOULD prompt the user if it can continue without TLS; | |||
Identity' in this case is always the domain of the next-hop SIP | o if the device has no user interface, and unless configured not to, | |||
entity. The verifier is the device. A TLS session that results from | the device MUST retry enrollment without TLS and without | |||
a successful verification of the next-hop SIP entity is termed a | presenting any configured user AoR (note: this means that user | |||
'Server identity verified TLS session' or 'next-hop entity verified | profiles cannot be retrieved). | |||
TLS session'. | ||||
6.2.2. Implementation Requirements | In the absence of a Server Identity authenticated TLS session with | |||
the next-hop SIP entity: | ||||
o the device MUST NOT respond to any authentication challenges; | ||||
o the device MUST ignore any notifications containing sensitive | ||||
profile data. | ||||
The following are the general implementation requirements. | Once enrolled, the device obtains the initial notification. This is | |||
authenticated using two methods. If this initial notification was | ||||
transmitted on the mutually authenticated TLS session established for | ||||
enrollment requests, then it is considered authenticated. If not, | ||||
the device MUST verify the presence of a SIP Identity header from the | ||||
PDS and validate that it belongs to the Provider's domain. If the | ||||
SIP Identity header is absent or the device cannot validate it, the | ||||
device MUST reject any sensitive profile data. If the SIP Identity | ||||
header is present, and the device cannot validate it, then it MUST | ||||
reject the profile data and retry enrollment. To allow for this | ||||
authentication, the PDS SHOULD include the SIP Identity header as | ||||
specified in [RFC4474]. Exceptions are PDSs that do not serve | ||||
sensitive profiles, or those in deployments where communication with | ||||
the PDS in the absence of a mutually authenticated TLS is disallowed. | ||||
When the SIP Identify header is used, the PDS MUST set the host | ||||
portion of the AoR in the 'From' header to the Provider's domain. | ||||
- A device MUST implement TLS ([RFC4346]) with support for Server | Note that both Server Identity authentication ([RFC2818]) and SIP | |||
Identity verification as specified in [RFC2818] | Identity ([RFC4474] require X.509 certificates. Additionally, the | |||
use of TLS and mutual authentication also provides message integrity | ||||
and privacy between the device and the next-hop entity. When the | ||||
next-hop entity is a proxy, the Provider will need ensure mutual | ||||
authentication and integrity between intermediary components such as | ||||
proxies and PDSs. This is mandatory when a SIPS URI is presented by | ||||
the device. | ||||
- PDSs SHOULD contain X.509 certificates that can allow for PDS | Authentication of the identity requesting the profile is accomplished | |||
authentication using the procedures specified in [RFC2818]. | by the PDS by using the Digest Authentication mechanism, over TLS. | |||
Exceptions are PDSs that do not propagate sensitive profile data | Thus, devices and PDSs MUST implement Digest Authentication specified | |||
(e.g., a local-network PDS that does not support sensitive profile | in [RFC3261], and TLS as specified in [RFC4346]. If the device | |||
data). | presents a user AoR, it should be recognized by the network. If not | |||
(e.g., discovered or device identities) it may not be known by the | ||||
PDS (and hence, may not be associated with credentials). If known by | ||||
the PDS and the notification will result in data specific to the user | ||||
AoR, the PDS MUST challenge the request using Digest authentication | ||||
specified in [RFC3261]. If the device successfully responds to the | ||||
challenge, it is provided the initial notification, which contains | ||||
the profile data within, or via content indirection. If user | ||||
authentication fails the PDS MAY refuse enrollment, or provide | ||||
profile data without the user-specific information. As a note, if | ||||
the PDS attempts authentication in the absence of an authenticated | ||||
TLS session between the device and the next-hop entity, it will be | ||||
ignored by the device. A PDS that does not perform authentication | ||||
MUST use content indirection to a PCC that supports authentication, | ||||
integrity protection and privacy for conveying sensitive profile | ||||
data. | ||||
- PDSs that are configured with X.509 certificates (as described | 5.2.2. Securing Content Retrieval | |||
above) MUST implement TLS [RFC4346] and support 'Server Identity' | ||||
verification as specified by [RFC2818]. | ||||
- PDSs that are configured with X.509 certificates (as described | Initial or change notifications following a successful enrollment can | |||
above) SHOULD implement SIP Identity as specified in [RFC4474]. When | provide a device with the requested profile data, or use content | |||
the SIP Identify header is included, the PDS MUST set the host | indirection to direct it to a PCC that can provide the profile data. | |||
portion of the AoR in the 'From' header to the local network domain. | This document specifies HTTP and HTTPS as content retrieval | |||
protocols. | ||||
It is to be noted that the requirement to implement TLS does not | If the profile is provided via content indirection and contains | |||
imply its usage in all cases. Please refer to the rest of this | sensitive profile data then the PDS MUST use a HTTPS URI for content | |||
section for usage requirements. | indirection. PCCs and devices MUST NOT use HTTP for sensitive | |||
profile data. A device MUST authenticate the PCC as specified in | ||||
[RFC2818], Section 3.1. A device that is being provided with profile | ||||
data that contains sensitive data MUST be authenticated using Digest | ||||
as specified in [RFC2617], with the exception of a device that is | ||||
being bootstrapped for the first time. The resulting mutually | ||||
authenticated TLS channel also provides message integrity. | ||||
6.2.3. Identities and Credentials | 5.2.3. Securing Change Notification | |||
To enroll for a profile, the device needs to provide an identity. | A successful profile enrollment results in an initial notification. | |||
This can be a user AoR (local-network and user profiles), a device | If the device requested enrollment via a SIP subscription with a non- | |||
AoR (device profile), the device identity (device profile), or a | zero 'Expires' parameter, it can also result in change notifications | |||
framework-specified identity (local-network profile). | for the duration of the subscription. | |||
To be able to present an identity, such as a user AoR, the device | If the device established TLS with the next-hop entity then any such | |||
needs to be configured. This can be accomplished in one of many | notifications SHOULD be sent over the same TLS session by the PDS. | |||
ways: | If the TLS session exists, the device MUST ignore any notifications | |||
sent outside the TLS session. If no such TLS session exists, the | ||||
device MUST NOT accept any sensitive profile data without verifying | ||||
the presence of, and validating, a SIP Identity header. | ||||
A PDS that does not support TLS MUST use content indirection to a PCC | ||||
that supports authentication and integrity protection for conveying | ||||
sensitive profile data. | ||||
5.3. Additional Considerations | ||||
This section provides additional considerations such as details on | ||||
how a device obtains identities and credentials, backoff and retry | ||||
methods, guidelines on profile data and additional profile types. | ||||
5.3.1. Identities and Credentials | ||||
When requesting a profile the device can provide an identity such as | ||||
a user AoR. To do so, the device needs to be configured. This can | ||||
be accomplished in one of many ways: | ||||
Pre-configuration | Pre-configuration | |||
A distributor of the device may pre-configure the device with | The device may be pre-configured with identities and associated | |||
identities and associated credentials. Identities refers to a | credentials, such as a user AoR and digest password. | |||
device AoR (for use with the device profile) or a user AoR. | ||||
Out-of-band methods | Out-of-band methods | |||
A device or SIP service provider may provide the end-user with | A device or Provider may provide hardware- or software-based | |||
hardware- or software-based devices that contain the identities | credentials such as SIM cards or USB drives. | |||
and associated credentials. Examples include SIM cards and USB | ||||
drives. | ||||
End-user interface | End-user interface | |||
The end-user may be provided with user AoRs and credentials. The | The end-user may be provided with user AoRs and credentials. The | |||
end-user can then configure the device (using a user interface), | end-user can then configure the device (using a user interface), | |||
or present when required (e.g., IM login screen). | or present when required (e.g., IM login screen). | |||
Using this framework | Using this framework | |||
When a device is initialized, even if it has no pre-configured | When a device is initialized, even if it has no pre-configured | |||
skipping to change at page 25, line 22 | skipping to change at page 25, line 42 | |||
device needs to have associated credentials. Thus, any of the | device needs to have associated credentials. Thus, any of the | |||
configuration methods indicated above need to provide the user | configuration methods indicated above need to provide the user | |||
credentials along with any AoRs. | credentials along with any AoRs. | |||
Additionally, AoRs are typically known by PDSs that serve the domain | Additionally, AoRs are typically known by PDSs that serve the domain | |||
indicated by the AoR. Thus, devices can only present the configured | indicated by the AoR. Thus, devices can only present the configured | |||
AoRs in the respective domains. An exception is the use of federated | AoRs in the respective domains. An exception is the use of federated | |||
identities. This allows a device to use a user's AoR in multiple | identities. This allows a device to use a user's AoR in multiple | |||
domains. | domains. | |||
The configured user or device AoR and associated credentials can be | The configured user AoR and associated credentials can be used in | |||
used in applicable domains for any of the profile types specified by | applicable domains for any of the profile types specified by this | |||
this framework. In the absence of the device or user AoR, the device | framework. In the absence of the user AoR, the device is not | |||
is not expected to contain any other credentials. Future | expected to contain any other credentials. Future enhancements can | |||
enhancements can specify additional identities and credentials. | specify additional identities and credentials. | |||
6.2.4. Securing Profile Enrollment | ||||
A device requests profile data by transmitting an enrollment request | ||||
using cached, configured or discovered data. The enrollment request | ||||
is received by a PDS that verifies the profile type and the identity | ||||
presented, such as a user AoR. If the device presents a configured | ||||
user identity, it is more likely to be known by the network and | ||||
associated with credentials. If not (e.g., discovered or device | ||||
identities) it may not be known by the PDS (and hence, may not be | ||||
associated with credentials). | ||||
If the user identity presented in the enrollment request is known by | ||||
the PDS, it MUST challenge the request; an exception is the case | ||||
where the data being provided is not particular to the presented user | ||||
identity. If the device successfully responds to the challenge, it | ||||
is provided the initial notification which contains the profile data | ||||
within, or via content indirection. | ||||
To ensure that the PDS providing the data belongs to the domain | ||||
associated with the identity, the device SHOULD authenticate the | ||||
source of the notifications. Since the device only directly | ||||
communicates with the next-hop SIP entity (which may or may not be | ||||
the PDS) it SHOULD establish a 'next-hop SIP entity authenticated TLS | ||||
session prior to transmitting the enrollment request. The next-hop | ||||
SIP entity SHOULD have a secure communications channel with the PDS. | ||||
If not, the PDS SHOULD provide the notifications and include the SIP | ||||
Identity header. If the PDS wants to ensure privacy in such | ||||
situations, it MAY provide only content indirection information in | ||||
the notifications. Content indirection which results in a secure | ||||
communications channel, such as HTTPS, will ensure data integrity and | ||||
protection. | ||||
Profile-specific requirements follow. | ||||
6.2.4.1. Local-network profile | ||||
Device Requirements | ||||
- If the device has a configured user AoR associated with the | ||||
local network domain then the device SHOULD establish a Server | ||||
Identity verified TLS session with the next-hop SIP entity. | ||||
Exceptions are cases where the device is configured not to do so | ||||
(e.g., via previously obtained, authenticated profile data). | ||||
- If the device does not have a configured user AoR it MAY still | ||||
establish a next-hop entity verified TLS session. | ||||
- If an attempted next-hop SIP entity verified TLS session | ||||
succeeds: | ||||
* the device MUST transmit the enrollment request with the user | ||||
AoR (if configured); | ||||
* the device MUST respond to an authentication challenge. | ||||
- If the TLS session fails to verify the next-hop SIP entity | ||||
(i.e., the domain name could not be verified) the device MUST NOT | ||||
continue with the current enrollment request. However, the device | ||||
MUST retry by trying to establish server identity verified TLS | ||||
sessions with other next-hop entities (obtained via [RFC3263]. If | ||||
the list of next-hop entities has been exhausted then: | ||||
* if the device has a user interface, and unless explicity | ||||
configured not to, the device SHOULD prompt the user if it can | ||||
continue without TLS; | ||||
* unless indicated otherwise via configuration or the user, the | ||||
device MUST retry enrollment without TLS and without the user | ||||
AoR. | ||||
- If an attempted next-hop SIP entity verified TLS session fails | ||||
(i.e., the PDS does not support TLS) the device MUST transmit the | ||||
enrollment request, without the user AoR. | ||||
- In the absence of a Server Identity authenticated TLS session | ||||
with the next-hop SIP entity: | ||||
* the device MUST NOT respond to any authentication challenges; | ||||
* the device MUST ignore notifications containing sensitive | ||||
profile data. | ||||
PDS Requirements | ||||
- If an enrollment request contains a user AoR that will result in | ||||
user-specific profile data, then the PDS MUST successfully | ||||
authenticate the user before providing user-specific profile data | ||||
- If user authentication fails the PDS MAY refuse enrollment, | ||||
or provide profile data without the user-specific information. | ||||
- It is to be noted that if a PDS attempts authentication | ||||
without an existing next-hop authenticated TLS session, it will | ||||
fail. | ||||
- A PDS that does not support TLS MUST use content indirection to | ||||
a PCC that supports authentication and integrity protection for | ||||
conveying sensitive profile data. | ||||
- If the enrollment request did not occur over a next-hop | ||||
authenticated TLS session, a PDS that supports SIP Identity MUST | ||||
include the SIP Identity header in the initial and subsequent | ||||
change notifications | ||||
6.2.4.2. Device profile | ||||
Device Requirements | ||||
A device presents either a device identity or a configured device | ||||
AoR to obtain the device profile. If configured with a device | ||||
AoR, it can either be a SIPS URI or a SIP URI. If it is not pre- | ||||
configured then the device uses the device identifier in | ||||
association with methods specified [RFC3263]. | ||||
If the device is using the methods specified in [RFC3263] it MUST | ||||
prefer SIPS over SIP. | ||||
If it obtains a SIPS URI for the next-hop SIP entity, the device | ||||
MUST attempt to establish next-hop authenticated TLS session (as | ||||
specified in [RFC3261]). | ||||
If the device is configured with a device AoR and it successfully | ||||
establishes a next-hop authenticated TLS session then it MUST | ||||
respond to an authentication challenge. | ||||
In any case, if the TLS establishment fails (e.g., the PDS does | ||||
not implement TLS) or it is unsuccessful (e.g., the connecting SIP | ||||
entity is not the expected domain) the device MUST consider this | ||||
an enrollment failure and try an alternate next-hop SIP entity (or | ||||
declare an enrollment failure if all the attempts have been | ||||
exhausted). | ||||
In the absence of a next-hop SIP entity authenticated TLS session: | ||||
- the device MUST NOT respond to any authentication challenges; | ||||
- the device MUST ignore notifications containing sensitive | ||||
profile data. | ||||
PDS Requirements | ||||
PDS requirements are the same as that of the local-network | ||||
profile, with one addition. A PDS MUST NOT accept enrollment | ||||
requests with a SIPS URI in the absence of a secure communications | ||||
channel (such as a TLS session from the device or a trusted | ||||
proxy). | ||||
6.2.4.3. User profile | ||||
A device requesting a user profile will use a user AoR that is either | ||||
a SIP URI or a SIPS URI. In either case, the requirements for the | ||||
device and the PDS are the same as when the device requests a device | ||||
profile. | ||||
In addition, PDSs MUST NOT accept user profile enrollment requests | ||||
for unknown users. | ||||
6.2.5. Securing Content Retrieval | ||||
Initial or change notifications following a successful enrollment can | ||||
either provide a device with the requested profile data, or use | ||||
content indirection and redirect it to a PCC that can provide the | ||||
profile data. This document specifies HTTP and HTTPS as content | ||||
retrieval protocols. | ||||
If the profile is provided via content indirection and contains | ||||
sensitive profile data then the PDS MUST use a HTTPS URI for content | ||||
indirection. PCCs and devices MUST NOT use HTTP for sensitive | ||||
profile data. A device MUST authenticate the PCC as specified in | ||||
[RFC2818], Section 3.1. | ||||
6.2.6. Securing Change Notification | ||||
A successful profile enrollment results in an initial notification. | ||||
If the device requested enrollment via a SIP subscription with a non- | ||||
zero 'Expires' parameter, it can also result in change notifications | ||||
for the duration of the subscription. | ||||
If the device established next-hop authentication TLS then any such | ||||
notifications SHOULD be sent over the same TLS session. If the TLS | ||||
session exists, the device MUST ignore any notifications sent outside | ||||
the TLS session. If no such TLS session exists, the PDS MUST NOT | ||||
include any sensitive profile data. If no such TLS session exists, | ||||
the PDS MUST NOT accept any sensitive profile data and ignore such | ||||
notifications. | ||||
A PDS that does not support TLS MUST use content indirection to a PCC | ||||
that supports authentication and integrity protection for conveying | ||||
sensitive profile data. | ||||
6.3. Additional Considerations | ||||
This section provides additional considerations such as further | ||||
details on enrollment with related backoff and retry methods, | ||||
guidelines on profile data and additional profile types. | ||||
6.3.1. Profile Enrollment Request Attempt | 5.3.2. Profile Enrollment Request Attempt | |||
A state diagram representing a device requesting any specific profile | A state diagram representing a device requesting any specific profile | |||
defined by this framework is shown in Figure 6. | defined by this framework is shown in Figure 6. | |||
+------------+ | +------------+ | |||
| Initialize | | | Initialize | | |||
+-----+------+ | +-----+------+ | |||
| | | | |||
| | | | |||
V | V | |||
skipping to change at page 32, line 13 | skipping to change at page 29, line 13 | |||
exponential backoff and retry mechanisms as indicated in Figure 7. | exponential backoff and retry mechanisms as indicated in Figure 7. | |||
Function for Profile Enrollment () | Function for Profile Enrollment () | |||
Iteration i=0 | Iteration i=0 | |||
Loop: Attempt | Loop: Attempt | |||
Loop: For each SIP Subscription URI | Loop: For each SIP Subscription URI | |||
Loop: For each next-hop SIP entity obtained via RFC3263 | Loop: For each next-hop SIP entity | |||
- Prepare & transmit Enrollment Request | - Prepare & transmit Enrollment Request | |||
- Await Enrollment Acceptance and initial NOTIFY | - Await Enrollment Acceptance and initial NOTIFY | |||
+ If the profile enrollment is successful | + If the profile enrollment is successful | |||
= Abort this function() | = Exit this function() | |||
+ If profile enrollment fails due to an explicit | + If profile enrollment fails due to an explicit | |||
failure or a timeout as specified in RFC3261 | failure or a timeout as specified in RFC3261 | |||
= Continue with this function() | = Continue with this function() | |||
End Loop: Next-hop SIP entity contact | End Loop: Next-hop SIP entity contact | |||
End Loop: SIP Subscription URI formation | End Loop: SIP Subscription URI formation | |||
(Note: If you are here, profile enrollment did not succeed) | (Note: If you are here, profile enrollment did not succeed) | |||
skipping to change at page 32, line 43 | skipping to change at page 29, line 43 | |||
= If yes, use it and continue with this function() | = If yes, use it and continue with this function() | |||
+ If the enrollment request is for a non-mandatory profile | + If the enrollment request is for a non-mandatory profile | |||
= then spawn the next profile and continue with this | = then spawn the next profile and continue with this | |||
function() | function() | |||
- Delay for 2^i*(64*T1); -- this is exponential backoff | - Delay for 2^i*(64*T1); -- this is exponential backoff | |||
- increment i; | - increment i; | |||
- If i>8, reset i=0; | - If i>8, reset i=8; | |||
End loop: Attempt | End loop: Attempt | |||
End Function() | End Function() | |||
Figure 7: Profile Enrollment Attempt (pseudo-code) | Figure 7: Profile Enrollment Attempt (pseudo-code) | |||
The pseudo-code above (Figure 7) allows for cached profiles to be | The pseudo-code above (Figure 7) allows for cached profiles to be | |||
used. However, any cached Local Network profile MUST NOT be used | used. However, any cached Local Network profile MUST NOT be used | |||
unless the device can ensure that it is in the same local network | unless the device can ensure that it is in the same local network | |||
skipping to change at page 33, line 21 | skipping to change at page 30, line 21 | |||
to invalidate a profile it may do so by transmitting a NOTIFY with an | to invalidate a profile it may do so by transmitting a NOTIFY with an | |||
'empty profile' (not to be confused with an empty NOTIFY). A device | 'empty profile' (not to be confused with an empty NOTIFY). A device | |||
receiving such a NOTIFY MUST discard the applicable profile (i.e., it | receiving such a NOTIFY MUST discard the applicable profile (i.e., it | |||
cannot even store it in the cache). Additionally, if a factory reset | cannot even store it in the cache). Additionally, if a factory reset | |||
is available and performed on a device, it MUST reset the device to | is available and performed on a device, it MUST reset the device to | |||
its initial state prior to any configuration. Specifically, the | its initial state prior to any configuration. Specifically, the | |||
device MUST set the device back to the state when it was originally | device MUST set the device back to the state when it was originally | |||
distributed. | distributed. | |||
The order of profile enrollment is important. For the profiles | The order of profile enrollment is important. For the profiles | |||
specified in this framework, the device must enrol in the order: | specified in this framework, the device must enroll in the order: | |||
local-network, device and user. The pseudo-code presented earlier | local-network, device and user. The pseudo-code presented earlier | |||
(Figure 7) differentiates between 'mandatory' and 'non-mandatory' | (Figure 7) differentiates between 'mandatory' and 'non-mandatory' | |||
profiles. This distinction is left to profile data definitions. | profiles. This distinction is left to profile data definitions. | |||
It is to be noted that this framework does not allow the devices to | It is to be noted that this framework does not allow the devices to | |||
inform the PDSs of profile retrieval errors such as invalid data. | inform the PDSs of profile retrieval errors such as invalid data. | |||
Follow-on standardization activities are expected to address this | Follow-on standardization activities are expected to address this | |||
feature. | feature. | |||
6.3.2. Device Types | 5.3.3. Device Types | |||
The examples in this framework tend to associate devices 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 device that can utilize the specified | necessarily the only type of device that can utilize the specified | |||
Framework. Devices can be entities such as SIP Phones or soft | Framework. Devices can be entities such as SIP Phones or soft | |||
clients, with or without user interfaces (that allow for device | clients, with or without user interfaces (that allow for device | |||
Configuration), entities in the network that do not directly | Configuration), entities in the network that do not directly | |||
communicate with any users (e.g., gateways, media servers, etc) or | communicate with any users (e.g., gateways, media servers, etc) or | |||
network infrastructure elements e.g., SIP servers). | network infrastructure elements e.g., SIP servers). | |||
6.3.3. Profile Data | 5.3.4. 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 are expected to address profile | Follow-on standardization activities are expected to address profile | |||
contents. However, the framework provides the following requirements | contents. However, the framework provides the following requirements | |||
and recommendations for profile data definitions: | and recommendations for profile data definitions: | |||
o The device profile type MUST specify parameters to configure the | o The device profile type SHOULD specify parameters to configure the | |||
identities and credentials. These parameters may be optional or | identities and credentials. These parameters may be optional or | |||
mandatory and will be used for dynamically configuring devices | mandatory and will be used for dynamically configuring devices | |||
that initialize in a network without any pre-configuration. | that initialize in a network without any pre-configuration. | |||
o Each profile MUST clearly identify if it may contain any sensitive | o Each profile MUST clearly identify if it may contain any sensitive | |||
data. Such profiles MUST also identify the data elements that are | data. Such profiles MUST also identify the data elements that are | |||
considered sensitive, i.e., data that cannot be compromised. As | considered sensitive, i.e., data that cannot be compromised. As | |||
an example, a device profile definition may identify itself as | an example, a device profile definition may identify itself as | |||
containing sensitive data and indicate data such as device | containing sensitive data and indicate data such as device | |||
credentials to be sensitive. | credentials to be sensitive. | |||
o When the device receives multiple profiles, the contents of each | o When the device receives multiple profiles, the contents of each | |||
skipping to change at page 34, line 31 | skipping to change at page 31, line 31 | |||
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 device and the | may contain the list of codecs to be used by the device and the | |||
user Profile (for a user on the device) 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. | |||
6.3.4. Profile Data Frameworks | 5.3.5. Profile Data Frameworks | |||
The framework specified in this document does not address profile | The 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. | |||
While this framework does not impose specific constraints on any such | While this framework does not impose specific constraints on any such | |||
framework, it does allow for the propagation of profile content to | framework, it does allow for the propagation of profile content to | |||
the PDS (specifically the PCC) from a network element or the device. | the PDS (specifically the PCC) from a network element or the device. | |||
Thus, Profile Data or Retrieval frameworks used in conjunction with | Thus, Profile Data or Retrieval frameworks used in conjunction with | |||
this framework MAY consider techniques for propagating incremental, | this framework MAY consider techniques for propagating incremental, | |||
atomic changes to the PDS. One means for propagating changes to a | atomic changes to the PDS. One means for propagating changes to a | |||
PDS is defined in XCAP ([RFC4825]). | PDS is defined in XCAP ([RFC4825]). | |||
6.3.5. Additional Profile Types | 5.3.6. 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. e.g., profile types for application specific profile data or | types. e.g., profile types for application specific profile data or | |||
to provide enterprise-specific policies. Definition of such | to provide enterprise-specific policies. Definition of such | |||
additional profile types is not prohibited, but considered out of | additional profile types is not prohibited, but considered out of | |||
scope for this document. Such profile definitions MUST specify the | scope for this document. Such profile definitions MUST specify the | |||
order of retrieval with respect to all the other profiles such as the | order of retrieval with respect to all the other profiles such as the | |||
local-network, device and user profile types defined in this | local-network, device and user profile types defined in this | |||
document. | document. | |||
6.3.6. Deployment considerations | 5.3.7. Deployment considerations | |||
The framework defined in this document was designed to address | The framework defined in this document was designed to address | |||
various deployment considerations, some of which are highlighted | various deployment considerations, some of which are highlighted | |||
below. | below. | |||
Provider relationships: | Provider relationships: | |||
o The local network provider and the SIP service provider can often | o The local network provider and the SIP service provider can often | |||
be different entities, with no administrative or business | be different entities, with no administrative or business | |||
relationship with each other. | relationship with each other. | |||
o There may be multiple SIP service providers involved, one for each | o There may be multiple SIP service providers involved, one for each | |||
skipping to change at page 35, line 39 | skipping to change at page 32, line 39 | |||
o The relationship between devices and users can be many-to-many | o The relationship between devices and users can be many-to-many | |||
(e.g., a particular device may allow for many users to obtain | (e.g., a particular device may allow for many users to obtain | |||
subscription services through it, and individual users may have | subscription services through it, and individual users may have | |||
access to multiple devices). | access to multiple devices). | |||
o Each user may have different preferences for use of services, and | o Each user may have different preferences for use of services, and | |||
presentation of those services in the device user interface. | presentation of those services in the device user interface. | |||
o Each user may have different personal information applicable to | o Each user may have different personal information applicable to | |||
use of the device, either as related to particular services, or | use of the device, either as related to particular services, or | |||
independent of them. | independent of them. | |||
7. Event Package Definition | 5.4. Usage of Outbound | |||
PDSs that support devices behind NATs, and devices that can be behind | ||||
NATs can use procedures specified in [I-D.ietf-sip-outbound]. The | ||||
Outbound proxies can be configured or discovered. Clients that | ||||
support such behavior MUST include the 'outbound' option-tag in a | ||||
Supported header field value, and add the "ob" parameter as specified | ||||
in [I-D.ietf-sip-outbound] within the SIP SUBSCRIBE for profile | ||||
enrollment. | ||||
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 devices 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 devices with the profile data or content | the PDSs to notify the devices with the profile data or content | |||
indirection information. | indirection information. | |||
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 6. | Section 5. | |||
7.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]. | |||
7.2. Event Package Parameters | 6.2. Event Package Parameters | |||
This package defines the following new parameters for the event | This package defines the following new parameters for the event | |||
header: | header: | |||
"profile-type", "vendor", "model", "version", and "effective-by" | "profile-type", "vendor", "model", "version", and "effective-by" | |||
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. | |||
7.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 and to be notified | |||
to be notified of subsequent changes. This document defines three | of subsequent changes. This document defines three logical types of | |||
logical types of profiles and their token names. They are as | profiles and their token names. They are as follows: | |||
follows: | ||||
local-network: Specifying "local-network" type profile indicates the | local-network: specifying the "local-network" type profile indicates | |||
desire for profile data (URI when content indirection is used) | the desire for profile data specific to the local network. | |||
specific to the local network. | ||||
device: Specifying "device" type profile(s) indicates the desire for | device: specifying the "device" type profile(s) indicates the desire | |||
the profile data (URI when content indirection is used) and change | for the profile data and profile change notification that is | |||
notification of the contents of the profile that is specific to | 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 and profile change notification specific to 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 in the Event header parameter: | |||
parameter: profile-type. A separate SUBSCRIBE dialog is used for | "profile-type". A separate SUBSCRIBE dialog is used for each profile | |||
each profile type. The profile type associated with the dialog can | type. Thus, the subscription dialog on which a NOTIFY arrives | |||
then be used to infer which profile type changed and is contained in | implies which profile's data is contained in, or referred to, by the | |||
the NOTIFY or content indirection URI. The Accept header of the | NOTIFY message body. The Accept header of the SUBSCRIBE request MUST | |||
SUBSCRIBE request MUST include the MIME types for all profile content | include the MIME types for all profile content types for which the | |||
types for which the subscribing user agent wishes to retrieve | subscribing user agent wishes to retrieve profiles, or receive change | |||
profiles or receive change notifications. | 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. | |||
7.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 (e.g., example.com) as | implementer SHOULD use their DNS domain name (e.g., example.com) as | |||
the value of the "vendor" parameter so that it is known to be unique. | the value of the "vendor" parameter so that it is known to be unique. | |||
These parameters are useful to the PDS to affect the profiles | These parameters are useful to the PDS to affect the profiles | |||
provided. In some scenarios it is desirable to provide different | provided. In some scenarios it is desirable to provide different | |||
profiles based upon these parameters. e.g., feature property X in a | profiles based upon these parameters. e.g., feature property X in a | |||
profile may work differently on two versions of the same user agent. | profile may work differently on two versions of the same user agent. | |||
This gives the PDS the ability to compensate for or take advantage of | This gives the PDS the ability to compensate for or take advantage of | |||
the differences. In the following ABNF defining the syntax, EQUAL | the differences. In the following ABNF defining the syntax, EQUAL | |||
and quoted-string are defined in [RFC3261]. | 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 | |||
7.2.3. effective-by parameter | 6.2.3. 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 | |||
7.2.4. Summary of event parameters | 6.2.4. 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" | |||
skipping to change at page 39, line 29 | skipping to change at page 36, line 31 | |||
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 || | | | |||
effective-by || o | o | o | effective-by || o | o | o | |||
7.3. SUBSCRIBE Bodies | 6.3. SUBSCRIBE Bodies | |||
This package defines no use of the SUBSCRIBE request body. If | This package defines no use of the SUBSCRIBE request body. If | |||
present, it MUST be ignored. | present, it SHOULD be ignored. The exception being future | |||
enhancements to the framework which may specify a use for the | ||||
Future enhancements to the framework may specify a use for the | SUBSCRIBE request body. | |||
SUBSCRIBE request body (e.g., mechanisms using etags to minimize | ||||
Profile Notifications to devices with current profile versions). | ||||
7.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 (24 hours; 1 day) is RECOMMENDED since the | value of 86400 seconds (24 hours; 1 day) is RECOMMENDED since the | |||
presence (or absence) of a device subscription is not time critical | presence (or absence) of a device subscription is not time critical | |||
to the regular functioning of the PDS. | to the regular 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, without ongoing | |||
accomplished by setting the 'Expires' parameter to a value of Zero, | subscription, can be accomplished by setting the 'Expires' parameter | |||
as specified in [RFC3265]. | to a value of Zero, as specified in [RFC3265]. | |||
7.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 indirection. The framework does not define any profile data | content indirection. For profile data delivered via content | |||
and delegates specification of utilized MIME types Profile Data | indirection, i.e., a pointer to a PCC, then the Content-ID MIME | |||
Frameworks. For profile data delivered via content indirection, the | header, as described in [RFC4483] MUST be used for each Profile | |||
following apply: | document URI. At a minimum, the "http:" and "https:" URI schemes | |||
MUST be supported; other URI schemes MAY be supported based on the | ||||
o The Content-ID MIME header, as described in [RFC4483] MUST be used | Profile Data Frameworks (examples include FTP [RFC0959], HTTP | |||
for each Profile document URI. | [RFC2616], HTTPS [RFC2818], LDAP [RFC4510] and XCAP [RFC4825] ). | |||
o At a minimum, the "http:" and "https:" URI schemes MUST be | ||||
supported; other URI schemas MAY be supported based on the Profile | ||||
Data Frameworks (examples include FTP [RFC0959], HTTP [RFC2616], | ||||
HTTPS [RFC2818], LDAP [RFC4510] and XCAP [RFC4825] ). | ||||
The NOTIFY body SHOULD include a MIME type specified in the 'Accept' | A non-empty NOTIFY body MUST include a MIME type specified in the | |||
header of the SUBSCRIBE. Further, if the Accept header of the | 'Accept' header of the SUBSCRIBE. Further, if the Accept header of | |||
SUBSCRIBE included the MIME type message/external-body (indicating | the SUBSCRIBE included the MIME type message/external-body | |||
support for content indirection) then the PDS MAY use content | (indicating support for content indirection) then the PDS MAY use | |||
indirection in the NOTIFY body for providing the profiles. | content indirection in the NOTIFY body for providing the profiles. | |||
7.6. Notifier Processing of SUBSCRIBE Requests | 6.6. Notifier Processing of SUBSCRIBE Requests | |||
A successful SUBSCRIBE request results in a NOTIFY with either | A successful SUBSCRIBE request results in a NOTIFY with either | |||
profile contents or a pointer to it (via Content Indirection). If | profile contents or a pointer to it (via Content Indirection). The | |||
the NOTIFY is expected to contain profile contents or the Notifier is | SUBSCRIBE SHOULD be either authenticated, or transmitted over an | |||
unsure, the SUBSCRIBE SHOULD be either authenticated or transmitted | integrity protected SIP communications channel. Exceptions include | |||
over an integrity protected SIP communication channels. Exceptions | cases where the identity of the Subscriber is unknown and the | |||
to authenticating such SUBSCRIBEs include cases where the identity of | Notifier is configured to accept such requests. | |||
the Subscriber is unknown and the Notifier is configured to accept | ||||
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 10. | 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 device 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. | |||
7.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 device or user is | request upon accepting a subscription. If the device or user is | |||
unknown and the Notifier chooses to accept the subscription, the | unknown and the Notifier chooses to accept the subscription, the | |||
Notifier MAY either respond with profile data (e.g., default profile | Notifier MAY either respond with profile data (e.g., default profile | |||
data) or provide no profile information (i.e. no body or content | data) or provide no profile information (i.e. no body or content | |||
indirection). | 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 | |||
type was included in the Accept header). To allow for Content | type was included in the Accept header). The Notifier MUST NOT use | |||
Indirection, the Subscriber MUST support the "http:" or "https:" URI | any scheme that was not indicated in the "schemes" Contact header | |||
schemas. If the Subscriber wishes to support alternative URI schemas | field. | |||
it MUST be indicated in the "schemes" Contact header field parameter | ||||
as defined in [RFC4483]. The Notifier MUST NOT use any schema that | ||||
was not indicated in the "schemas" Contact header field. | ||||
The Notifier MAY specify when the new profiles must be made effective | The Notifier MAY specify when the new profiles must be made effective | |||
by the Subscriber by specifying a maximum time in seconds (zero or | by the Subscriber by specifying a maximum time in seconds (zero or | |||
more) in the "effective-by" event header parameter. | more) in the "effective-by" event header parameter. | |||
If the SUBSCRIBE was received over an integrity protected SIP | If the SUBSCRIBE was received over an integrity protected SIP | |||
communications channel, the Notifier SHOULD send the NOTIFY over the | communications channel, the Notifier SHOULD send the NOTIFY over the | |||
same channel. | same channel. | |||
7.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), the Subscriber SHOULD attempt to make the profiles | |||
the specified time. Exceptions include deployments that prohibit | effective within the specified time. Exceptions include deployments | |||
such behavior in certain cases (e.g., emergency sessions are in | that prohibit such behavior in certain cases (e.g., emergency | |||
progress). When profile data cannot be applied within the | sessions are in progress). When profile data cannot be applied | |||
recommended timeframe and this affects device behavior, any actions | within the recommended timeframe and this affects device behavior, | |||
to be taken SHOULD be defined by the profile data definitions. By | any actions to be taken SHOULD be defined by the profile data | |||
default, the Subscriber is RECOMMENDED to make the profiles effective | definitions. By default, the Subscriber is RECOMMENDED to make the | |||
as soon as possible. | profiles effective as soon as possible. | |||
The Subscriber MUST always support "http:" or "https:" and be | When accepting content indirection, the Subscriber MUST always | |||
prepared to accept NOTIFY messages with those URI schemas.The | support "http:" or "https:" and be prepared to accept NOTIFY messages | |||
subscriber MUST also be prepared to receive a NOTIFY request with no | with those URI schemes. The Subscriber wishes to support alternative | |||
body. The subscriber MUST NOT reject the NOTIFY request with no | URI schemes it MUST be indicated in the "schemes" Contact header | |||
body. The subscription dialog MUST NOT be terminated by a NOTIFY | field parameter as defined in [RFC4483]. The Subscriber MUST also be | |||
with no body. | prepared to receive a 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 with no body. | ||||
7.9. Handling of Forked Requests | 6.9. Handling of Forked Requests | |||
This Event package allows the creation of only one dialog as a result | This Event package allows the creation of only one dialog as a result | |||
of an initial SUBSCRIBE request as described in section 4.4.9 of | of an initial SUBSCRIBE request as described in section 4.4.9 of | |||
[RFC3265]. It does not support the creation of multiple | [RFC3265]. It does not support the creation of multiple | |||
subscriptions using forked SUBSCRIBE requests. | subscriptions using forked SUBSCRIBE requests. | |||
7.10. Rate of Notifications | 6.10. Rate of Notifications | |||
The rate of notifications for the profiles in this framework is | The rate of notifications for the profiles in this framework is | |||
deployment specific, but expected to be infrequent. Hence, the Event | deployment specific, but expected to be infrequent. Hence, the Event | |||
Package specification does not specify a throttling or minimum period | Package specification does not specify a throttling or minimum period | |||
between NOTIFY requests | between NOTIFY requests | |||
7.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. | |||
8. 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 5.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. | |||
8.1. Example 1: Device 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 | |||
device 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 Device 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 | |||
skipping to change at page 43, line 4 | skipping to change at page 39, line 41 | |||
The following are assumed for this example: | The following are assumed for this example: | |||
o Device 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 snapshots only and do not illustrate all the | o Examples are snapshots only and do not illustrate all the | |||
interactions between the device 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 over TLS is assumed to be the Profile Data method used (any | o HTTP over TLS is assumed to be the Content Retrieval method used | |||
suitable alternative can be used as well). | (any suitable alternative can be used as well). | |||
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 | | |||
| Device | | | | | Device | | | | |||
|(SIP UA)| | SIP PDS HTTP | | |(SIP UA)| | SIP PDS HTTP | | |||
+--------+ | PROXY Server | | +--------+ | PROXY Server | | |||
| | | | | | |||
+----------------------+ | +----------------------+ | |||
skipping to change at page 44, line 26 | skipping to change at page 41, line 17 | |||
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"; | model="Z100";version="1.2.3"; | |||
From: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | From: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | |||
@example.com;tag=1234 | @example.com;tag=1234 | |||
To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | |||
Call-ID: 3573853342923422@192.0.2.44 | Call-ID: 3573853342923422@192.0.2.44 | |||
CSeq: 2131 SUBSCRIBE | CSeq: 2131 SUBSCRIBE | |||
Contact: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | Contact: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | |||
@example.com | @example.com | |||
;+sip.instance="<urn:uuid:00000000-0000-0000-0000-123456789AB0>" | ;+sip.instance="<urn:uuid:00000000-0000-0000-0000-123456789AB0>" | |||
;schemes="http,https" | ||||
Via: SIP/2.0/TCP 192.0.2.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 | |||
skipping to change at page 45, line 44 | skipping to change at page 42, line 44 | |||
once the necessary secure communications channel is established, | once the necessary secure communications channel is established, | |||
the device 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 | |||
8.2. Example 2: Device 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 devices (e.g., | simultaneously accessing services via two different devices (e.g., | |||
Multimedia entities on a PC and PDA) and has access to a user | Multimedia entities on a PC and PDA) and has access to a user | |||
Interface (UI) that allows for changes to the user profile. | 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 devices (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 | |||
skipping to change at page 49, line 9 | skipping to change at page 46, line 9 | |||
size=9999; | size=9999; | |||
hash=123456789AAABBBCCCDD | hash=123456789AAABBBCCCDD | |||
. | . | |||
. | . | |||
. | . | |||
(B-RS) Device B accepts the NOTIFY and sends a 200 OK | (B-RS) Device B accepts the NOTIFY and sends a 200 OK | |||
(A-RX) Device A retrieves the updated profile pertaining to user X | (A-RX) Device A retrieves the updated profile pertaining to user X | |||
(B-RX) Device B retrieves the updated profile pertaining to user X | (B-RX) Device B retrieves the updated profile pertaining to user X | |||
9. 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 SIP configuration profile types. These are | Event Package and SIP configuration profile types. These are | |||
outlined in the following sub-sections. | outlined in the following sub-sections. | |||
9.1. SIP Event Package | 8.1. SIP Event Package | |||
This specification registers a new event package as defined in | This specification registers a new event package as defined in | |||
[RFC3265]. The following information required for this registration: | [RFC3265]. The following information required for this registration: | |||
Package Name: ua-profile | Package Name: ua-profile | |||
Package or Template-Package: This is a package | Package or Template-Package: This is a package | |||
Published Document: RFC XXXX (Note to RFC Editor: Please fill in | Published Document: RFC XXXX (Note to RFC Editor: Please fill in | |||
XXXX with the RFC number of this specification) | XXXX with the RFC number of this specification) | |||
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 | |||
skipping to change at page 49, line 42 | skipping to change at page 46, line 42 | |||
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] | |||
9.2. Registry of SIP configuration profile types | 8.2. Registry of SIP configuration profile types | |||
This document requests IANA to register new SIP configuration profile | This document requests IANA to register new SIP configuration profile | |||
types at http://www.iana.org/assignments/sip-parameters under "SIP | types at http://www.iana.org/assignments/sip-parameters under "SIP | |||
Configuration Profile Types". | Configuration Profile Types". | |||
SIP configuration profile types allocations fall under the category | SIP configuration profile types allocations fall under the category | |||
"Specification Required", as explained in "Guidelines for Writing an | "Specification Required", as explained in "Guidelines for Writing an | |||
IANA Considerations Section in RFCs" ([RFC2434]). | IANA Considerations Section in RFCs" ([RFC2434]). | |||
Registrations with the IANA MUST include a the profile type, and a | Registrations with the IANA MUST include a the profile type, and a | |||
skipping to change at page 50, line 27 | skipping to change at page 47, line 27 | |||
user [RFCXXXX] | user [RFCXXXX] | |||
CONTACT: | CONTACT: | |||
------- | ------- | |||
sumanth@cablelabs.com | sumanth@cablelabs.com | |||
Daniel Petrie dan.ietf AT SIPez DOT com | Daniel Petrie dan.ietf AT SIPez DOT com | |||
Note to RFC editor: Please replace RFCXXXX with the RFC number | Note to RFC editor: Please replace RFCXXXX with the RFC number | |||
assigned to this document. | assigned to this document. | |||
10. Security Considerations | 9. Security Considerations | |||
The framework specified in this document enables profile data | The framework specified in this document enables profile data | |||
delivery to devices. It specifies profile delivery stages, an event | delivery to devices. It specifies profile delivery stages, an event | |||
package and several profile types. | package and several profile types. | |||
There are three stages: Enrollment, Content Retrieval, and Change | There are three stages: Enrollment, Content Retrieval, and Change | |||
Notification. | Notification. | |||
+------+ +-----+ | +------+ +-----+ | |||
| | | | | | | | | | |||
skipping to change at page 52, line 7 | skipping to change at page 49, line 7 | |||
| | is used) | | | is used) | |||
| Profile Response | | | Profile Response | | |||
|<----------------------| | |<----------------------| | |||
| | | | | | |||
PNC = Profile Notification Component | PNC = Profile Notification Component | |||
PCC = Profile Content Component | PCC = Profile Content Component | |||
Figure 23: Profile Delivery Stages | Figure 23: Profile Delivery Stages | |||
Enrollment allows a device to request a profile. To transmit the | Enrollment allows a device to request a profile. To transmit the | |||
request the device relies on cached, configured or discovered data. | request the device relies on configured, cached or discovered data. | |||
Such data includes provider domain names, identities, and | Such data includes provider domain names, identities, and | |||
credentials. The device uses [RFC3263] to discover the next-hop SIP | credentials. The device either uses configured Outbound proxies or | |||
entity which can be a SIP proxy or the PDS. It then transmits the | discoveries the next-hop entity using [RFC3263] that can result in a | |||
request, after establishing a TLS session if required. If obtained | SIP proxy or the PDS. It then transmits the request, after | |||
via a SIP proxy, the Request-URI is used to route it to a PDS (via an | establishing a TLS session if required. If obtained via a SIP proxy, | |||
authoritative SIP proxy, if required). | the Request-URI is used to route it to a PDS (via an authoritative | |||
SIP proxy, if required). | ||||
When a PDS receives the enrollment request, it can either challenge | When a PDS receives the enrollment request, it can either challenge | |||
the presented identity (if any) or admit the enrollment. | the presented identity (if any) or admit the enrollment. | |||
Authorization then decides if the enrollment is accepted. If | Authorization then decides if the enrollment is accepted. If | |||
accepted, the PDS sends an initial notification that contains either: | accepted, the PDS sends an initial notification that contains either | |||
profile data or content indirection information. The profile data | the profile data, or content indirection information. The profile | |||
can contain information specific to an entity (such as the device or | data can contain information specific to an entity (such as the | |||
a user) and may contain sensitive information (such as credentials). | device or a user) and may contain sensitive information (such as | |||
Compromise of such data can lead to threats such as impersonation | credentials). Compromise of such data can lead to threats such as | |||
attacks (establishing rogue sessions), theft of service (if services | impersonation attacks (establishing rogue sessions), theft of service | |||
are obtainable), and zombie attacks. Even if the profile data is | (if services are obtainable), and zombie attacks. Even if the | |||
provided using content indirection, PCC information within the | profile data is provided using content indirection, PCC information | |||
notification can lead to threats such as denial of service attacks | within the notification can lead to threats such as denial of service | |||
(rogue devices bombard the PCC with requests for a specific profile) | attacks (rogue devices bombard the PCC with requests for a specific | |||
and attempts to modify erroneous data onto the PCC (since the | profile) and attempts to modify erroneous data onto the PCC (since | |||
location and format may be known). It is also important for the | the location and format may be known). It is also important for the | |||
device to ensure the authenticity of the PNC since impersonation of | device to ensure the authenticity of the PNC since impersonation of | |||
the SIP service provider can lead to Denial of Service, Man-in-the- | the SIP service provider can lead to Denial of Service, Man-in-the- | |||
Middle attacks, etc. | Middle attacks, etc. | |||
Profile content retrieval allows a device to retrieve profile data | Profile content retrieval allows a device to retrieve profile data | |||
from a PCC. This communication is accomplished using one of many | from a PCC. This communication is accomplished using one of many | |||
profile delivery protocols or frameworks, such as HTTP or HTTPS as | profile delivery protocols or frameworks, such as HTTP or HTTPS as | |||
specified in this document. However, since the profile data returned | specified in this document. However, since the profile data returned | |||
is subject to the same considerations as that sent via profile | is subject to the same considerations as that sent via profile | |||
notification, the same threats exist. | notification, the same threats exist. | |||
Profile-specific considerations follow. | Profile-specific considerations follow. | |||
10.1. Local-network profile | 9.1. Local-network profile | |||
A local network may or may not (e.g., home router) support local- | A local network may or may not (e.g., home router) support local- | |||
network profiles as specified in this framework. Even if supported, | network profiles as specified in this framework. Even if supported, | |||
the PDS may only be configured with a generic local-network profile | the PDS may only be configured with a generic local-network profile | |||
that is provided to every device capable of accessing the network. | that is provided to every device capable of accessing the network. | |||
Such a PDS may not implement any authentication requirements or TLS. | Such a PDS may not implement any authentication requirements or TLS. | |||
Alternatively, certain deployments may require the entities - device | Alternatively, certain deployments may require the entities - device | |||
and the PDS - to mutually authenticate prior to profile enrollment. | and the PDS - to mutually authenticate prior to profile enrollment. | |||
Such networks may pre-configure user identities to the devices and | Such networks may pre-configure user identities to the devices and | |||
skipping to change at page 53, line 36 | skipping to change at page 50, line 36 | |||
The use of SIP Identity is useful in cases when TLS is not used but | The use of SIP Identity is useful in cases when TLS is not used but | |||
the device still obtains a profile (e.g., the local-network profile). | the device still obtains a profile (e.g., the local-network profile). | |||
In such cases the device provider, or the user, can use the SIP | In such cases the device provider, or the user, can use the SIP | |||
Identity header to verify the source of the local-network profile. | Identity header to verify the source of the local-network profile. | |||
However, the presence of the header does not guarantee the validity | However, the presence of the header does not guarantee the validity | |||
of the data. It verifies the source and confirms data integrity, but | of the data. It verifies the source and confirms data integrity, but | |||
the data obtained from an undesired source may still be invalid | the data obtained from an undesired source may still be invalid | |||
(e.g., it can be invalid or contain malicious content). | (e.g., it can be invalid or contain malicious content). | |||
10.2. Device profile | 9.2. Device profile | |||
Device profiles deal with device-specific configuration. They may be | Device profiles deal with device-specific configuration. They may be | |||
provided to unknown devices that are attempting to obtaining profiles | provided to unknown devices that are attempting to obtaining profiles | |||
for purposes of trials and self-subscription to SIP services (not to | for purposes of trials and self-subscription to SIP services (not to | |||
be confused with [RFC3265]), emergency services | be confused with [RFC3265]), emergency services | |||
([I-D.ietf-ecrit-phonebcp]), or to devices that are known by the PDS. | ([I-D.ietf-ecrit-phonebcp]), or to devices that are known by the PDS. | |||
Devices that are not aware of any device providers (i.e., no cached | Devices that are not aware of any device providers (i.e., no cached | |||
or configured information) will have to discover a PDS in the network | or configured information) will have to discover a PDS in the network | |||
they connect to. In such a case the discovered information may lead | they connect to. In such a case the discovered information may lead | |||
them to a PDS that provides enough profile data to enable device | them to a PDS that provides enough profile data to enable device | |||
skipping to change at page 54, line 39 | skipping to change at page 51, line 39 | |||
connections prior to device enrollment. However, given the | connections prior to device enrollment. However, given the | |||
importance of the device profile it also allows for profile requests | importance of the device profile it also allows for profile requests | |||
in cases where the PDS does not implement TLS. It also allows the | in cases where the PDS does not implement TLS. It also allows the | |||
PDSs to perform authentication without requiring TLS. However, this | PDSs to perform authentication without requiring TLS. However, this | |||
leaves the communication open to MiM attacks and SHOULD be avoided. | leaves the communication open to MiM attacks and SHOULD be avoided. | |||
Additionally any credential used SHOULD be of sufficiently large- | Additionally any credential used SHOULD be of sufficiently large- | |||
entropy to prevent dictionary attacks. Devices SHOULD use the | entropy to prevent dictionary attacks. Devices SHOULD use the | |||
'cnonce' parameter ([RFC2617]) to thwart "offline" dictionary | 'cnonce' parameter ([RFC2617]) to thwart "offline" dictionary | |||
attacks. | attacks. | |||
10.3. User profile | 9.3. User profile | |||
Devices can only request user profiles for users that are known by a | Devices can only request user profiles for users that are known by a | |||
SIP service provider. Thus, PDSs are prohibited from accepting user | SIP service provider. Thus, PDSs are prohibited from accepting user | |||
profile enrollment requests for users that are unknown in the | profile enrollment requests for users that are unknown in the | |||
network. If the user AoR is a SIPS URI then the device is required | network. If the user AoR is a SIPS URI then the device is required | |||
to establish a next-hop authenticated TLS session. This framework | to establish a next-hop authenticated TLS session. This framework | |||
RECOMMENDS this for profiles with sensitive data. If it is a SIP | requires this for profiles with sensitive data. If it is a SIP URI, | |||
URI, then the device is still recommended to attempt TLS | then the device is still recommended to attempt TLS establishment to | |||
establishment to ensure protection against rogue PDSs. A PDS is | ensure protection against rogue PDSs. Further, the PDS will | |||
always recommended to authenticate the user AoR prior to profile | authenticate requests prior to accepting profile enrollment requests | |||
enrollment. The considerations are the same as that for a device | that can result in sensitive data. A mutually authenticated TLS | |||
profile with pre-configured user AoR. | channel provides message integrity and privacy. | |||
11. Acknowledgements | 10. Acknowledgements | |||
The author appreciates all those who contributed and commented on the | The author appreciates all those who contributed and commented on the | |||
many iterations of this document. Detailed comments were provided by | many iterations of this document. Detailed comments were provided by | |||
the following individuals: Jonathan Rosenberg from Cisco, Henning | the 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 | |||
Elwell from Siemens, Elliot Eichen and Robert Liao from Verizon, Dale | Elwell from Siemens, Elliot Eichen and Robert Liao from Verizon, Dale | |||
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 final revisions of this document were a product of design team | The final revisions of this document were a product of design team | |||
discussions. The editor wishes to extend special appreciation to the | discussions. The editor wishes to extend special appreciation to the | |||
following design team members for their numerous reviews and specific | following design team members for their numerous reviews and specific | |||
contributions to various sections: Josh Littlefield from Cisco | contributions to various sections: Josh Littlefield from Cisco | |||
(Executive Summary, Overview, Section 6), Peter Blatherwick from | (Overview, Section 6), Peter Blatherwick from Mitel (Section 6), | |||
Mitel (Section 6), Cullen Jennings (Security), Sam Ganesan (Section | Cullen Jennings (Security), Sam Ganesan (Section 6) and Mary Barnes | |||
6) and Mary Barnes (layout, Section 6). | (layout, Section 6). | |||
The following design team members are thanked for numerous reviews | The following design team members are thanked for numerous reviews | |||
and general contributions: Martin Dolly from AT&T Labs, Jason Fischl | and general contributions: Martin Dolly from AT&T Labs, Jason Fischl | |||
from Counterpath, Alvin Jiang of Engin and Francois Audet from | from Counterpath, Alvin Jiang of Engin and Francois Audet from | |||
Nortel. | Nortel. | |||
The following SIPPING WG members are thanked for numerours reviews, | The following SIPPING WG members are thanked for numerous reviews, | |||
comments and recommendations: John Elwell from Siemens, Donald Lukacs | comments and recommendations: John Elwell from Siemens, Donald Lukacs | |||
from Telcordia, and Eugene Nechamkin from Broadcom. | from Telcordia, Roni Even from Polycom, David Robbins from Verizon, | |||
Shida Schubert from NTT Advanced Technology Corporation, and Eugene | ||||
Nechamkin from Broadcom. The editor would also like to extend a | ||||
special thanks to the comments and recommendations provided by the | ||||
SIPPING WG, specifically Keith Drage from Lucent (restructuring | ||||
proposal). | ||||
Additionally, sincere appreciation is extended to the chairs (Mary | Additionally, appreciation is also due to Peter Koch for expert DNS | |||
advice. | ||||
And finally, sincere appreciation is extended to the chairs (Mary | ||||
Barnes from Nortel and Gonzalo Camarillo from Ericsson) and the Area | Barnes from Nortel and Gonzalo Camarillo from Ericsson) and the Area | |||
Directors (Cullen Jennings from Cisco and Jon Peterson from Neustar) | Directors (Cullen Jennings from Cisco and Jon Peterson from Neustar) | |||
for facilitating discussions, reviews and contributions. The editor | for facilitating discussions, reviews and contributions. | |||
would also like to extend a special thanks to the comments and | ||||
recommendations provided by the SIPPING WG, specifically Keith Drage | ||||
from Lucent (restructuring proposal). | ||||
12. Change History | ||||
[[RFC Editor: Please remove this entire section upon publication as | ||||
an RFC.]] | ||||
12.1. Changes from draft-ietf-sipping-config-framework-11.txt | ||||
The following are the major changes that have been incorporated into | ||||
this I-D. | ||||
o Incorporated the decisions taken at the last IETF: added an | ||||
executive summary section; removed 'device-id' and replaced with | ||||
'sip.instance' | ||||
o Removed the HTTPS bootstrapping section (this could be a different | ||||
I-D) | ||||
o Added IANA registry for the 'profile-type' parameter (comment from | ||||
Adam Roach) | ||||
o Incorporated comments from Cullen Jennings, John Elwell, and | ||||
design team reviews | ||||
o Revised section 6 to make it flow better | ||||
o Removed 'Profile Change Modification' from the document | ||||
o Revised the security section. | ||||
12.2. 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 | ||||
12.3. Changes from draft-ietf-sipping-config-framework-09.txt | ||||
Following the ad-hoc SIPPING WG discussions at IETF#67 and as per the | ||||
email from Gonzalo Camarillo dated 12/07/2006, Sumanth was appointed | ||||
as the new editor. This sub-section highlights the changes made by | ||||
the editor (as per expert recommendations from the SIPPING WG folks | ||||
interested in this effort) and the author. | ||||
Changes incorporated by the editor: | ||||
o Document was restructured based on a) Keith's recommendations in | ||||
the email dated 11/09/2006 and responses (Peter, Sumanth, Josh) b) | ||||
subsequent discussions by the ad-hoc group consisting of the | ||||
editor, the author, expert contributors (Peter Blatherwick, Josh | ||||
Littlefield, Alvin Jiang, Jason Fischl, Martin Dolly, Cullen | ||||
Jennings) and the co-chairs . Further changes follow. | ||||
o Use cases were made high-level with detailed examples added later | ||||
on | ||||
o Several sections were modified as part of the restructuring (e.g., | ||||
Overview, Introduction, Framework Requirements, Security Sections) | ||||
o General editorial updates were made | ||||
Changes incorporated by the author: | ||||
o Incorporated numerous edits and corrections from CableLabs review. | ||||
o Used better ascii art picture of overview from Josh Littlefield | ||||
o Fixed the normative text for network-user so that it is now | ||||
consistant: MAY provide for device profile, MUST provide for | ||||
local-network profile. | ||||
12.4. Changes from draft-ietf-sipping-config-framework-08.txt | ||||
The Request URI for profile-type=localnet now SHOULD not have a | ||||
user part to make routing easier. The From field SHOULD now | ||||
contain the device id so that device tracking can still be done. | ||||
Described the concept of profile-type as a filter and added | ||||
normative text requiring 404 for profile types not provided. | ||||
Moved "application" profile type to | ||||
draft-ietf-sipping-xcap-config-01. The "application" value for | ||||
the profile-type parameter will also be used as a requirement that | ||||
XCAP be supported. | ||||
Fixed text on certificate validation. | ||||
Added new HTTP header: Event to IANA section and clean up the IANA | ||||
section. | ||||
Added diagram for Service Provider use case schenario. | ||||
Added clarification for HTTP Event header. | ||||
Added clarification of subscriber handling of NOTIFY with no body. | ||||
12.5. Changes from draft-ietf-sipping-config-framework-07.txt | ||||
Made XCAP informative reference. Removed "document" and "auid" | ||||
event header parameters, and Usage of XCAP section to be put in | ||||
separate supplementary draft. | ||||
Fixed ABNF for device-id to be addr-spec only (not name-addr) and | ||||
to be quoted as well. | ||||
Synchronized with XCAP path terminology. Removed XCAP path | ||||
definition as it is already defined in XCAP. | ||||
User agent instance ID is now defined in output (not GRUU). | ||||
Clarified the rational for the device-id parameter. | ||||
Added text to suggest URIs for To and From fields. | ||||
Clarified use of device-id parameter. | ||||
Allow the use of the auid and document parameters per request by | ||||
the OMA. | ||||
12.6. Changes from draft-ietf-sipping-config-framework-06.txt | ||||
Restructured the introduction and overview section to be more | ||||
consistent with other Internet-Drafts. | ||||
Added additional clarification for the Digest Authentication and | ||||
Certificate based authentication cases in the security section. | ||||
Added two use case scenarios with cross referencing to better | ||||
illustrate how the framework works. Added better cross | ||||
referencing in the overview section to help readers find where | ||||
concepts and functionality is defined in the document. | ||||
Clarified the section on the use of XCAP. Changed the Event | ||||
parameter "App-Id" to "auid". Made "auid" mutually exclusive to | ||||
"document". "auid" is now only used with XCAP. | ||||
Local network subscription URI changed to <device-id>@ | ||||
<local-network> (was anonymous@<local-network>). Having a | ||||
different Request URI for each device allows the network | ||||
management to track user agents and potentially manage bandwidth, | ||||
port allocation, etc. | ||||
Changed event package name from sip-profile to ua-profile per | ||||
discussion on the list and last IETF meeting. | ||||
Changed "local" profile type token to "local-network" per | ||||
discussion on the list and last IETF meeting. | ||||
Simplified "Vendor", "Model", "Version" event header parameters to | ||||
allow only quoted string values (previously allowed token as | ||||
well). | ||||
Clarified use of the term cache. | ||||
Added references for ABNF constructs. | ||||
Numerous editorial changes. Thanks Dale! | ||||
12.7. Changes from draft-ietf-sipping-config-framework-05.txt | ||||
Made HTTP and HTTPS profile transport schemes mandatory in the | ||||
profile delivery server. The subscribing device must implement | ||||
HTTP or HTTPS as the profile transport scheme. | ||||
Rewrote the security considerations section. | ||||
Divided references into Normative and Informative. | ||||
Minor edits throughout. | ||||
12.8. Changes from draft-ietf-sipping-config-framework-04.txt | ||||
Clarified usage of instance-id | ||||
Specify which event header parameters are mandatory or optional | ||||
and in which messages. | ||||
Included complete list of event header parameters in parameter | ||||
overview and IANA sections. | ||||
Removed TFTP reference as protocol for profile transport. | ||||
Added examples for discovery. | ||||
Added ABNF for all event header parameters. | ||||
Changed profile-name parameter back to profile-type. This was | ||||
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 | ||||
separate parameter: "document", profile-type make more sense as | ||||
the parameter name. | ||||
Fixed some statements that should have and should not have been | ||||
normative. | ||||
Added the ability for the user agent to request that the default | ||||
user associated with the device be set/changed using the | ||||
"device-id" parameter. | ||||
A bunch of editorial nits and fixes. | ||||
12.9. Changes from draft-ietf-sipping-config-framework-03.txt | ||||
Incorporated changes to better support the requirements for the use | ||||
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). Added an additional profile type: "application". Added | ||||
document and app-id Event header parameters in support of the | ||||
application profile. Define a loose high level data model or | ||||
relationship between the four profile types. Tried to edit and fix | ||||
the confusing and ambiguous sections related to URI formation and | ||||
discovery for the different profile types. Better describe the | ||||
importance of uniqueness for the instance id which is used in the | ||||
user part of the device URI. | ||||
12.10. Changes from draft-ietf-sipping-config-framework-02.txt | ||||
Added the concept of the local network as a source of profile data. | ||||
There are now three separate logical sources for profile data: user, | ||||
device and local network. Each of these requires a separate | ||||
subscription to obtain. | ||||
12.11. Changes from draft-ietf-sipping-config-framework-01.txt | ||||
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 | ||||
explicit URI. | ||||
Allow content indirection to be optional. Clarified the use of the | ||||
Accept header to indicate how the profile is to be delivered. | ||||
Added some content to the Iana section. | ||||
12.12. Changes from draft-ietf-sipping-config-framework-00.txt | ||||
This version of the document was entirely restructured and re-written | ||||
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 | ||||
one section and is believed to be complete and up to date with | ||||
[RFC3265]. | ||||
The URI used to subscribe to the event package is now either the user | ||||
or device address or record. | ||||
The user agent information (vendor, model, MAC and serial number) are | ||||
now provided as event header parameters. | ||||
Added a mechanism to force profile changes to be make effective by | ||||
the user agent in a specified maximum period of time. | ||||
Changed the name of the event package from sip-config to ua-profile | ||||
Three high level security approaches are now specified. | ||||
12.13. Changes from draft-petrie-sipping-config-framework-00.txt | ||||
Changed name to reflect SIPPING work group item | ||||
Synchronized with changes to SIP DHCP [RFC3361], SIP [RFC3261] and | ||||
[RFC3263], SIP Events [RFC3265] and content indirection [RFC4483] | ||||
Moved the device identity parameters from the From field parameters | ||||
to user-agent header parameters. | ||||
Many thanks to Rich Schaaf of Pingtel, Cullen Jennings of Cisco and | ||||
Adam Roach of Estacado Systems for the great comments and input. | ||||
12.14. Changes from draft-petrie-sip-config-framework-01.txt | ||||
Changed the name as this belongs in the SIPPING work group. | ||||
Minor edits | ||||
12.15. Changes from draft-petrie-sip-config-framework-00.txt | ||||
Split the enrollment into a single SUBSCRIBE dialog for each profile. | ||||
The 00 draft sent a single SUBSCRIBE listing all of the desired. | ||||
These have been split so that each enrollment can be routed | ||||
differently. As there is a concept of device specific and user | ||||
specific profiles, these may also be managed on separate servers. | ||||
For instance in a nomadic situation the device might get its profile | ||||
data from a local server which knows the LAN specific profile data. | ||||
At the same time the user specific profiles might come from the | ||||
user's home environment profile delivery server. | ||||
Removed the Config-Expires header as it is largely superfluous with | ||||
the SUBSCRIBE Expires header. | ||||
Eliminated some of the complexity in the discovery mechanism. | ||||
Suggest caching information discovered about a profile delivery | ||||
server to avoid an avalanche problem when a whole building full of | ||||
devices powers up. | ||||
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 | ||||
the device's default user. | ||||
13. References | 11. References | |||
13.1. Normative References | 11.1. Normative References | |||
[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. | |||
[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", BCP 26, RFC 2434, | IANA Considerations Section in RFCs", BCP 26, RFC 2434, | |||
October 1998. | October 1998. | |||
[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 | |||
skipping to change at page 62, line 44 | skipping to change at page 54, line 17 | |||
Initiation Protocol (SIP)", RFC 4474, August 2006. | 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. | |||
[RFC4704] Volz, B., "The Dynamic Host Configuration Protocol for | [RFC4704] Volz, B., "The Dynamic Host Configuration Protocol for | |||
IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) | IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) | |||
Option", RFC 4704, October 2006. | Option", RFC 4704, October 2006. | |||
13.2. Informative References | 11.2. Informative References | |||
[I-D.ietf-ecrit-phonebcp] | [I-D.ietf-ecrit-phonebcp] | |||
Rosen, B. and J. Polk, "Best Current Practice for | Rosen, B. and J. Polk, "Best Current Practice for | |||
Communications Services in support of Emergency Calling", | Communications Services in support of Emergency Calling", | |||
draft-ietf-ecrit-phonebcp-01 (work in progress), | draft-ietf-ecrit-phonebcp-02 (work in progress), | |||
March 2007. | September 2007. | |||
[I-D.ietf-sip-outbound] | [I-D.ietf-sip-outbound] | |||
Jennings, C. and R. Mahy, "Managing Client Initiated | Jennings, C. and R. Mahy, "Managing Client Initiated | |||
Connections in the Session Initiation Protocol (SIP)", | Connections in the Session Initiation Protocol (SIP)", | |||
draft-ietf-sip-outbound-08 (work in progress), March 2007. | draft-ietf-sip-outbound-10 (work in progress), July 2007. | |||
[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. | |||
[RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | |||
Extensions", RFC 2132, March 1997. | Extensions", RFC 2132, March 1997. | |||
[RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol | [RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol | |||
(LDAP): Technical Specification Road Map", RFC 4510, | (LDAP): Technical Specification Road Map", RFC 4510, | |||
June 2006. | June 2006. | |||
End of changes. 173 change blocks. | ||||
1046 lines changed or deleted | 656 lines changed or added | |||
This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |