draft-ietf-sipping-config-framework-18.txt | rfc6080.txt | |||
---|---|---|---|---|
SIPPING D. Petrie | Internet Engineering Task Force (IETF) D. Petrie | |||
Internet-Draft SIPez LLC. | Request for Comments: 6080 SIPez LLC | |||
Intended status: Standards Track S. Channabasappa, Ed. | Category: Standards Track S. Channabasappa, Ed. | |||
Expires: April 10, 2011 CableLabs | ISSN: 2070-1721 CableLabs | |||
October 7, 2010 | March 2011 | |||
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-18 | ||||
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 (UAs) in SIP | |||
The framework provides a means to deliver profile data that User | deployments. The framework provides a means to deliver profile data | |||
Agents need to be functional, automatically and with minimal or no | that user agents need to be functional, automatically and with | |||
User and Administrative intervention. The framework describes how | minimal or no User and Administrative intervention. The framework | |||
SIP User Agents can discover sources, request profiles and receive | describes how SIP user agents can discover sources, request profiles, | |||
notifications related to profile modifications. As part of this | and receive notifications related to profile modifications. As part | |||
framework, a new SIP event package is defined for notification of | 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. | |||
Status of this Memo | ||||
This Internet-Draft is submitted in full conformance with the | Status of This Memo | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | This is an Internet Standards Track document. | |||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 5741. | ||||
This Internet-Draft will expire on April 10, 2011. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc6080. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2011 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 3, line 7 | skipping to change at page 3, line 7 | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.3. Profile Types . . . . . . . . . . . . . . . . . . . . . . 11 | 3.3. Profile Types . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.4. Profile delivery stages . . . . . . . . . . . . . . . . . 11 | 3.4. Profile Delivery Stages . . . . . . . . . . . . . . . . . 9 | |||
3.5. Supported Device Types . . . . . . . . . . . . . . . . . . 12 | 3.5. Supported Device Types . . . . . . . . . . . . . . . . . . 10 | |||
4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1. Simple Deployment Scenario . . . . . . . . . . . . . . . . 13 | 4.1. Simple Deployment Scenario . . . . . . . . . . . . . . . . 10 | |||
4.2. Devices supporting multiple users from different | 4.2. Devices Supporting Multiple Users from Different | |||
Service Providers . . . . . . . . . . . . . . . . . . . . 14 | Service Providers . . . . . . . . . . . . . . . . . . . . 12 | |||
5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 16 | 5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 14 | |||
5.1. Profile delivery stages . . . . . . . . . . . . . . . . . 16 | 5.1. Profile Delivery Stages . . . . . . . . . . . . . . . . . 14 | |||
5.1.1. Profile Enrollment . . . . . . . . . . . . . . . . . . 17 | 5.2. Securing Profile Delivery . . . . . . . . . . . . . . . . 22 | |||
5.1.2. Content Retrieval . . . . . . . . . . . . . . . . . . 19 | 5.3. Additional Considerations . . . . . . . . . . . . . . . . 24 | |||
5.1.3. Change Notification . . . . . . . . . . . . . . . . . 19 | 5.4. Support for NATs . . . . . . . . . . . . . . . . . . . . . 33 | |||
5.1.4. Enrollment Data and Caching . . . . . . . . . . . . . 20 | 6. Event Package Definition . . . . . . . . . . . . . . . . . . . 33 | |||
5.2. Securing Profile Delivery . . . . . . . . . . . . . . . . 24 | 6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 33 | |||
5.2.1. Securing Profile Enrollment . . . . . . . . . . . . . 24 | 6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 33 | |||
5.2.2. Securing Content Retrieval . . . . . . . . . . . . . . 25 | 6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 36 | |||
5.2.3. Securing Change Notification . . . . . . . . . . . . . 26 | 6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 37 | |||
5.3. Additional Considerations . . . . . . . . . . . . . . . . 26 | 6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 37 | |||
5.3.1. Bootstrapping Identities and Credentials . . . . . . . 26 | 6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 37 | |||
5.3.2. Profile Enrollment Request Attempt . . . . . . . . . . 28 | 6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 38 | |||
5.3.3. Profile Data . . . . . . . . . . . . . . . . . . . . . 32 | 6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 38 | |||
5.3.4. Profile Data Frameworks . . . . . . . . . . . . . . . 33 | 6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 39 | |||
5.3.5. Additional Profile Types . . . . . . . . . . . . . . . 33 | 6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 39 | |||
5.3.6. Deployment considerations . . . . . . . . . . . . . . 34 | 6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
5.4. Support for NATs . . . . . . . . . . . . . . . . . . . . . 34 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
6. Event Package Definition . . . . . . . . . . . . . . . . . . . 35 | 7.1. Example 1: Device Requesting Profile . . . . . . . . . . . 39 | |||
6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 35 | 7.2. Example 2: Device Obtaining Change Notification . . . . . 42 | |||
6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 35 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 38 | 8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 46 | |||
6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 38 | 8.2. Registry of SIP Configuration Profile Types . . . . . . . 46 | |||
6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 39 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | |||
6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 39 | 9.1. Local-Network Profile . . . . . . . . . . . . . . . . . . 48 | |||
6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 39 | 9.2. Device Profile . . . . . . . . . . . . . . . . . . . . . . 49 | |||
6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 40 | 9.3. User Profile . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 41 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 41 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 41 | 11.1. Normative References . . . . . . . . . . . . . . . . . . . 52 | |||
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 11.2. Informative References . . . . . . . . . . . . . . . . . . 53 | |||
7.1. Example 1: Device requesting profile . . . . . . . . . . . 41 | ||||
7.2. Example 2: Device obtaining change notification . . . . . 44 | ||||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | ||||
8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 48 | ||||
8.2. Registry of SIP configuration profile types . . . . . . . 48 | ||||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 49 | ||||
9.1. Local-network profile . . . . . . . . . . . . . . . . . . 50 | ||||
9.2. Device profile . . . . . . . . . . . . . . . . . . . . . . 51 | ||||
9.3. User profile . . . . . . . . . . . . . . . . . . . . . . . 53 | ||||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 53 | ||||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 54 | ||||
11.1. Normative References . . . . . . . . . . . . . . . . . . . 54 | ||||
11.2. Informative References . . . . . . . . . . . . . . . . . . 55 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 56 | ||||
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 information specific to local networks, devices, and | |||
A configuration data set specific to an entity is termed a profile. | users. A configuration data set specific to an entity is termed a | |||
For example, device profile contains the configuration data related | profile. For example, device profile contains the configuration data | |||
to a device. The process of providing devices with one or more | related to a device. The process of providing devices with one or | |||
profiles is termed profile delivery. Ideally, this profile delivery | more profiles is termed "profile delivery". Ideally, this profile | |||
process should be automatic and require minimal or no user | delivery process should be automatic and require minimal or no user | |||
intervention. | 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 that 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 profile, | the framework does not define the content or format of the profile, | |||
leaving that to future standardization activities. | leaving that to future standardization activities. | |||
This document is organized as follows. The normative requirements | This document is organized as follows. The normative requirements | |||
are contained in Section 5 (framework operations) and Section 6 (the | are contained in Section 5 (framework operations) and Section 6 (the | |||
event package definition). The rest of the document provides | event package definition). The rest of the document provides | |||
introductory and supporting explanations. Section 3 provides a high- | introductory and supporting explanations. Section 3 provides a high- | |||
level overview of the abstract components, profiles, and the profile | level overview of the abstract components, profiles, and the profile | |||
delivery stages. Section 4 provides some motivating use cases. | delivery stages. Section 4 provides some motivating use cases. | |||
Section 7 follows with illustrative examples of the framework in use. | Section 7 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 it specifies the usage of the following terms. | |||
Device: software or hardware entity containing one or more SIP user | Device: software or hardware entity containing one or more SIP user | |||
agents. It may also contain applications such as a DHCP client. | agents. It may also contain applications such as a DHCP client. | |||
Device Provider: the entity responsible for managing a given device. | Device Provider: the entity responsible for managing a given device. | |||
Local Network Provider: the entity that controls the local network | Local Network Provider: the entity that controls the local network | |||
to which a given device is connected. | to which a given device is connected. | |||
SIP Service Provider: the entity providing SIP services to users. | SIP Service Provider: the entity providing SIP services to users. | |||
This can refer to private or public enterprises. | This can refer to private or public enterprises. | |||
Profile: configuration data set specific to an entity (e.g., user, | Profile: configuration data set specific to an entity (e.g., user, | |||
device, local network or other). | device, local network, or other). | |||
Profile Type: a particular category of Profile data (e.g., User, | Profile Type: a particular category of profile data (e.g., user, | |||
Device, Local Network or other). | device, local network, or other). | |||
Profile Delivery Server (PDS): the source of a Profile, it is the | Profile Delivery Server (PDS): the source of a profile, it is the | |||
logical collection of the Profile Notification Component (PNC) and | logical collection of the Profile Notification Component (PNC) and | |||
the Profile Content Component(PCC). | the Profile Content Component (PCC). | |||
Profile Notification Component (PNC): the logical component of a | Profile Notification Component (PNC): the logical component of a | |||
Profile Delivery Server that is responsible for enrolling 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. | |||
Profile Delivery Stages: the processes that lead a device to obtain | Profile Delivery Stages: the processes that lead a device to obtain | |||
skipping to change at page 7, line 9 | skipping to change at page 5, line 38 | |||
factory reset) device, with no configuration or minimal "factory" | factory reset) device, with no configuration or minimal "factory" | |||
pre-configuration, enrolls with the PDS. The device may use a | pre-configuration, enrolls with the PDS. The device may use a | |||
temporary identity and credentials to authenticate itself to | temporary identity and credentials to authenticate itself to | |||
enroll and receive profiles, which may provide more permanent | enroll and receive profiles, which may provide more permanent | |||
identities and credentials for future enrollments. | identities and credentials for future enrollments. | |||
3. Overview | 3. Overview | |||
This section provides an overview of the configuration framework. It | This section provides an overview of the configuration framework. It | |||
presents the reference model, the motivation, the profile delivery | presents the reference model, the motivation, the profile delivery | |||
stages and a mapping of the concepts to specific use cases. It is | 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 | meant to serve as a reference section for the document, rather than | |||
providing a specific logical flow of material, and it may be | providing a specific logical flow of material, and it may be | |||
necessary to revisit these sections for a complete appreciation of | necessary to revisit these sections for a complete appreciation of | |||
the framework. | 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 that may be independently | |||
managed by different administrative domains. The initial SUBSCRIBE | managed by different administrative domains. The initial SUBSCRIBE | |||
message 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 the identity requesting the profile), while | implementation and the identity requesting the profile), while | |||
requesting access to a profile by type, without prior knowledge of | requesting access to a profile by type, without prior knowledge of | |||
the profile name or location. Discovery mechanisms are specified to | the profile name or location. Discovery mechanisms are specified to | |||
help the UA form the Subscription URI (the Request-URI for the SIP | help the UA form the Subscription URI (the Request-URI for the SIP | |||
SUBSCRIBE). The SIP UAS handling these subscriptions is the Profile | SUBSCRIBE). The SIP User Agent Server (UAS) handling these | |||
Delivery Server (PDS). When the PDS accepts a subscription, it sends | subscriptions is the Profile Delivery Server (PDS). When the PDS | |||
a NOTIFY to the device. The initial NOTIFY from the PDS for each | accepts a subscription, it sends a NOTIFY to the device. The initial | |||
profile may contain profile data or a reference to the location of | NOTIFY from the PDS for each profile may contain profile data or a | |||
the profile, to be retrieved using HTTP or similar file retrieval | reference to the location of the profile, to be retrieved using HTTP | |||
protocols. By maintaining a subscription to each profile, the UA | or similar file retrieval protocols. By maintaining a subscription | |||
will receive additional NOTIFY messages if the profile is later | to each profile, the UA will receive additional NOTIFY messages if | |||
changed. These may contain a new profile, a reference to a new | the profile is later changed. These may contain a new profile, a | |||
profile, or a description of profile changes, depending on the | reference to a new profile, or a description of profile changes, | |||
Content-Type [RFC3261] in use by the subscription. The framework | depending on the Content-Type [RFC3261] in use by the subscription. | |||
describes the mechanisms for obtaining three different profile types, | The framework describes the mechanisms for obtaining three different | |||
but does not describe the data model they utilize (the data model is | profile types, but does not describe the data model they utilize (the | |||
out of scope for this specification). | data model is out of scope for this specification). | |||
3.1. Reference Model | 3.1. Reference Model | |||
The design of the framework was the result of a careful analysis to | The design of the framework was the result of a careful analysis to | |||
identify the configuration needs of a wide range of SIP deployments. | identify the configuration needs of a wide range of SIP deployments. | |||
As such, the reference model provides for a great deal of | As such, the reference model provides for a great deal of | |||
flexibility, while breaking down the interactions to their basic | flexibility, while breaking down the interactions to their basic | |||
forms, which can be reused in many different scenarios. | forms, which can be reused in many different scenarios. | |||
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 function effectively 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 8, line 19 | skipping to change at page 6, line 48 | |||
+--------+ | |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. | |||
3.2. Motivation | 3.2. Motivation | |||
The motivation for the framework can be demonstrated by applying the | The motivation for the framework can be demonstrated by applying the | |||
reference model presented in Section 3.1 to two scenarios that are | reference model presented in Section 3.1 to two scenarios that are | |||
representative of the two ends of a spectrum of potential SIP | representative of the two ends of a spectrum of potential SIP | |||
deployments. | deployments. | |||
In the simplest deployment scenario, a device connects through a | In the simplest deployment scenario, a device connects through a | |||
network that is controlled by a single provider who provides the | network that is controlled by a single provider who provides the | |||
local-network, manages the devices, and offers services to the users. | local network, manages the devices, and offers services to the users. | |||
The provider propagates profile data to the device that contains all | The provider propagates profile data to the device that contains all | |||
the necessary information to obtain services in the network | the necessary information to obtain services in the network | |||
(including information related to the local-network and the users). | (including information related to the local network and the users). | |||
This is illustrated in Figure 2. An example is a simple enterprise | This is illustrated in Figure 2. An example is a simple enterprise | |||
network that supports SIP-based devices. | network that supports SIP-based devices. | |||
-------------- | -------------- | |||
/ Local-network, \ | / Local Network, \ | |||
| Device & Service | | | Device & Service | | |||
\ Provider / | \ Provider / | |||
---------------- | ---------------- | |||
| | | | |||
| | | | |||
-------- | -------- | |||
| Device | | | Device | | |||
-------- | -------- | |||
| | | | |||
| | | | |||
---- | ---- | |||
|User| | |User| | |||
---- | ---- | |||
Figure 2: Simple Deployment 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 hot spots. In such cases, local | connect via available public WiFi hot spots. 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 from remote | such as kiosks that allow users to access services from remote | |||
locations. In such cases the profile data may have to be obtained | locations. In such cases, the profile data may have to be obtained | |||
from different profile sources: local network provider, device | from different profile sources: local network provider, device | |||
provider and SIP service 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) | |||
| \ / | | \ / | |||
| --------- | | --------- | |||
| / | | / | |||
| / ------- | | / ------- | |||
| / / Local \ | | / / Local \ | |||
| / | Network | | | / | Network | | |||
| | | Provider | -> Provides 'local-network' profile | | | | Provider | -> Provides 'local-network' profile | |||
| | \ / data (e.g., bandwidth) | | | \ / data (e.g., bandwidth) | |||
| | ------- | | | ------- | |||
| | / | | | / | |||
| | / | | | / | |||
| | | | | | | | |||
=================== | =================== | |||
( Local Network ) | ( Local Network ) | |||
=================== | =================== | |||
| | | | |||
| | | | |||
-------- | -------- | |||
| 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: Complex Deployment Model | |||
In either case, Providers need to deliver to the device, profile data | In either case, Providers need to deliver to the device, profile data | |||
that is required to participate in their network. Examples of | that is required to participate in their network. Examples of | |||
profile data include the list of codecs that can be used and the SIP | profile data include the list of codecs that can be used and the SIP | |||
proxies to connect to for services. Pre-configuration of such | proxies to which to connect for services. Pre-configuration of such | |||
information is one option if the device is always served by the same | information is one option if the device is always served by the same | |||
set of Providers. In all other cases, the profile delivery needs to | set of Providers. In all other cases, the profile delivery needs to | |||
be automated and consistent across Providers. Given the presence of | be automated and consistent across Providers. Given the presence of | |||
a number of large deployments where pre-configuration is neither | a number of large deployments where pre-configuration is neither | |||
desired nor optimal, there is a need for a common configuration | desired nor optimal, there is a need for a common configuration | |||
framework such as the one described in this document. | framework such as the one described in this document. | |||
Further, the former deployment model can be accomplished by the | Further, the former deployment model can be accomplished by the | |||
device obtaining profile data from a single provider. However, the | device obtaining profile data from a single provider. However, the | |||
latter deployment model requires the device to obtain profile data | latter deployment model requires the device to obtain profile data | |||
from different providers. To address either deployment, or any | from different providers. To address either deployment or any | |||
variation in between, one needs to allow for profile delivery via | variation in between, one needs to allow for profile delivery via one | |||
one, or more, Providers. The framework accomplishes this by | or more Providers. The framework accomplishes this by specifying | |||
specifying multiple profile types and a set of profile delivery | multiple profile types and a set of profile delivery stages to obtain | |||
stages to obtain them. These are introduced in the sub-sections to | them. These are introduced in the subsections to follow. | |||
follow. | ||||
3.3. Profile Types | 3.3. Profile Types | |||
The framework handles the presence of potentially different Providers | The framework handles the presence of potentially different Providers | |||
by allowing for multiple profile types. Clients request each profile | by allowing for multiple profile types. Clients request each profile | |||
separately, and obtain them from the same, or different, Providers. | separately, and obtain them from the same, or different, Providers. | |||
A deployment can also choose to pre-configure the device to request | A deployment can also choose to pre-configure the device to request | |||
only a subset of the specified profile types. The framework | only a subset of the specified profile types. The framework | |||
specifies three basic profile types, as follows: | 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, provided by | local network to which a device is directly connected, 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 provided by the SIP | particular services to which it is subscribed. It is provided by | |||
Service Provider. | the SIP service provider. | |||
Additional profile types may also be specified by future work within | Additional profile types may also be specified by future work within | |||
the IETF. The data models associated with each profile type are out | the IETF. The data models associated with each profile type are | |||
of scope for this document. | out of scope for this document. | |||
3.4. Profile delivery stages | 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, | |||
provide the profile data. The processes that lead a device to obtain | which provide the profile data. The processes that lead a device to | |||
profile data, and any subsequent changes, can be explained in three | obtain profile data, and any subsequent changes, can be explained in | |||
stages, termed the profile delivery stages. | three 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 | |||
skipping to change at page 12, line 28 | skipping to change at page 10, line 26 | |||
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. | |||
3.5. Supported Device Types | 3.5. Supported 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). The framework | network infrastructure elements (e.g., SIP servers). The framework | |||
is extensible for use with such device types. However, it is to be | is extensible for use with such device types. However, it is to be | |||
noted that some of these other device types (e.g., network elements) | noted that some of these other device types (e.g., network elements) | |||
may also be configurable using other mechanisms. The use of this | may also be configurable using other mechanisms. The use of this | |||
framework in conjunction with other mechanisms (specified outside of | framework in conjunction with other mechanisms (specified outside of | |||
this document), is out of scope. | this document), is out of scope. | |||
4. Use Cases | 4. Use Cases | |||
This section provides a small, non-comprehensive set of | This section provides a small, non-comprehensive set of | |||
representative use cases to further illustrate how this Framework can | representative use cases to further illustrate how this framework can | |||
be utilized in SIP deployments. The first use case is simplistic in | be utilized in SIP deployments. The first use case is simplistic in | |||
nature, whereas the second is relatively complex. The use cases | nature, whereas 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 5 and Section 9. | For security considerations, please refer to Sections 5 and 9. | |||
4.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 participating device implements this framework | enterprise) where a participating device implements this framework | |||
and is configured, using previously obtained profile data, to request | and is configured, using previously obtained profile data, to request | |||
only the device profile. Assume that the device operates in the same | only the device profile. Assume that the device operates in the same | |||
network as the PDS (i.e., there is no NAT) and it obtains its IP | network as the PDS (i.e., there is no NAT) and it obtains its IP | |||
configuration using DHCP. Typical communication between the device | configuration using DHCP. Typical communication between the device | |||
and the PDS will traverse one or more SIP proxies, but is not | and the PDS will traverse one or more SIP proxies, but is not | |||
required, and is omitted in this illustration. | required, and is omitted in this illustration. | |||
Figure 4 illustrates the sequence of events that include device | Figure 4 illustrates the sequence of events that includes device | |||
startup and a successful profile enrollment for the device profile | start-up and a successful profile enrollment for the device profile | |||
that results in device profile data. It then illustrates how a | that results in device profile data. It then illustrates how a | |||
change in the profile data is delivered via Profile Change | change in the profile data is delivered via Profile Change | |||
Notification. | Notification. | |||
+----------------------+ | +----------------------+ | |||
+--------+ | Provider's Network | | +--------+ | Provider's Network | | |||
| Device | | | | | Device | | | | |||
| | | | | | | | | | |||
+--------+ | DHCP PDS | | +--------+ | DHCP PDS | | |||
+----------------------+ | +----------------------+ | |||
skipping to change at page 14, line 6 | skipping to change at page 11, line 38 | |||
| | is modified | | | is modified | |||
| | | | | | |||
(C) |<============ Profile Change ================| | (C) |<============ Profile Change ================| | |||
| Notification | | | Notification | | |||
| | | | | | |||
| | | | | | |||
Figure 4: Use Case 1 | Figure 4: Use Case 1 | |||
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 such as IP address using DHCP. | parameters such as an IP address using DHCP. | |||
(B) The device requests profile enrollment for the device profile. | (B) The device requests profile enrollment for the device profile. | |||
Successful enrollment provides it with a notification containing | Successful enrollment provides it with a notification containing | |||
the device profile data. | the device profile data. | |||
(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. | |||
4.2. Devices supporting multiple users from different Service Providers | 4.2. Devices Supporting Multiple Users from Different Service Providers | |||
Description: Consider a single device that allows multiple users to | Description: Consider a single device that allows multiple users to | |||
obtain services from different SIP Service Providers, e.g., a kiosk | obtain services from different SIP service providers, e.g., a kiosk | |||
at an airport. | at an airport. | |||
The following assumptions apply: | The following assumptions apply: | |||
o Provider A is the Device and Local Network Provider for the | ||||
device, and the SIP Service Provider for user A; Provider B is | o Provider A is the device and local network provider for the | |||
the SIP Service Provider for user B. | device, and the SIP service provider for user A; Provider B is the | |||
o Profile enrollment always results in content indirection | SIP service provider for user B. | |||
information requiring profile content retrieval. | ||||
o Communication between the device and the PDSs is facilitated via | o Profile enrollment always results in content indirection | |||
one or more SIP proxies (only one is shown in the illustration). | information requiring profile content retrieval. | |||
o Communication between the device and the PDSs is facilitated via | ||||
one or more SIP proxies (only one is shown in the illustration). | ||||
Figure 5 illustrates the use case and highlights the communications | Figure 5 illustrates the use case and highlights the communications | |||
relevant to the framework specified in this document. | relevant to the framework specified in this document. | |||
User User | User User | |||
A B +----------------------+ +----------------------+ | A B +----------------------+ +----------------------+ | |||
+--------+ | Provider | | Provider | | +--------+ | Provider | | Provider | | |||
| Device | | A | | B | | | Device | | A | | B | | |||
| | | | | | | | | | | | | | |||
+--------+ | DHCP PROXY PDS | | PROXY PDS | | +--------+ | DHCP PROXY PDS | | PROXY PDS | | |||
skipping to change at page 15, line 41 | skipping to change at page 13, line 41 | |||
| Profile Enrollment | | | | | | Profile Enrollment | | | | | |||
(D) |<= user profile (A) => |<====>| | | | (D) |<= user profile (A) => |<====>| | | | |||
| | | | | | | | | | | | |||
| | | | |||
| <<Profile content retrieval>> | | <<Profile content retrieval>> | |||
. | . | |||
[[User A obtains services]] | [[User A obtains services]] | |||
. | . | |||
. | . | |||
. | . | |||
| | | | |||
| Profile Enrollment | | | | Profile Enrollment | | | |||
(E) |<=========== user profile (B) ==========>|<=========>| | (E) |<=========== user profile (B) ==========>|<=========>| | |||
| | | | | | | | |||
| <<Profile content retrieval>> | | <<Profile content retrieval>> | |||
| | | | |||
[[User B obtains services]] | [[User B obtains services]] | |||
Figure 5: Use Case 2 | Figure 5: Use Case 2 | |||
The following is an explanation of the interactions in Figure 5. | The following is an explanation of the interactions in Figure 5. | |||
(A) Upon initialization, the device obtains IP configuration | (A) Upon initialization, the device obtains IP configuration | |||
parameters using DHCP. This also provides the local domain | parameters using DHCP. This also provides the local domain | |||
information to help with local-network profile enrollment. | information to help with local-network profile enrollment. | |||
(B) The device requests profile enrollment for the local network | (B) The device requests profile enrollment for the local network | |||
profile. It receives an enrollment notification containing | profile. It receives an enrollment notification containing | |||
content indirection information from Provider A's PDS. The | content indirection information from Provider A's PDS. The | |||
device retrieves the profile (this contains useful information | device retrieves the profile (this contains useful information | |||
such as firewall port restrictions and available bandwidth). | such as firewall port restrictions and available bandwidth). | |||
(C) The device then requests profile enrollment for the device | (C) The device then requests profile enrollment for the device | |||
profile. It receives an enrollment notification resulting in | profile. It receives an enrollment notification resulting in | |||
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 retrieves 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. | |||
The discovery mechanisms for profile enrollment described by the | The discovery mechanisms for profile enrollment described by the | |||
framework, or the profile data themselves, can result in outbound | framework, or the profile data themselves, can result in outbound | |||
proxies that support devices behind NATs, using procedures specified | proxies that support devices behind NATs, using procedures specified | |||
in [RFC5626]. | in [RFC5626]. | |||
5. Profile Delivery Framework | 5. Profile Delivery Framework | |||
This section specifies the profile delivery framework. It provides | This section specifies the profile delivery framework. It provides | |||
the requirements for the three profile delivery stages introduced in | the requirements for the three profile delivery stages introduced in | |||
Section 3.4 and presents the associated security requirements. It | Section 3.4 and presents the associated security requirements. It | |||
also presents considerations such as back-off and retry mechanisms. | also presents considerations such as back-off and retry mechanisms. | |||
5.1. Profile delivery stages | 5.1. Profile Delivery Stages | |||
The three profile delivery stages - enrollment, content retrieval and | The three profile delivery stages -- enrollment, content retrieval, | |||
change notification - apply separately to each profile type specified | and change notification -- apply separately to each profile type | |||
for use with this framework. The following sub-sections provide the | specified for use with this framework. The following subsections | |||
requirements associated with each stage. | provide the requirements associated with each stage. | |||
5.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. | |||
PDSs and devices MUST implement all the three profile types. A | PDSs and devices MUST implement all of the three profile types. A | |||
device that has not been configured otherwise SHOULD try to obtain | device that has not been configured otherwise SHOULD try to obtain | |||
all the three profile types, in the order specified by this | all the three profile types, in the order specified by this | |||
framework. The exceptions are bootstrapping when it SHOULD request | framework. The exceptions are bootstrapping when it SHOULD request | |||
the device profile type (see Section 5.3.1) or when it has been | the device profile type (see Section 5.3.1) or when it has been | |||
explicitly configured with a different order via mechanisms such as: | explicitly configured with a different order via mechanisms such as | |||
previously retrieved profile data, pre-configuration or manual | previously retrieved profile data or pre-configuration or manual | |||
configuration. | configuration. | |||
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 a SIP | Profile enrollment is initiated when the device transmits a SIP | |||
SUBSCRIBE request [RFC3265] for the 'ua-profile' event package, | SUBSCRIBE request [RFC3265] for the 'ua-profile' event package, | |||
specified in Section 6. The profile being requested is indicated | specified in Section 6. The profile being requested is indicated | |||
using the 'profile-type' parameter. The device MUST transmit the | using the 'profile-type' parameter. The device MUST transmit the | |||
SIP SUBSCRIBE message via configured outbound proxies for the | SIP SUBSCRIBE message via configured outbound proxies for the | |||
destination domain, or in accordance with 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, | |||
form a Request-URI, and authenticate to the network. This | form a Request-URI, and authenticate to the network. This | |||
includes the profile provider's domain name, device or user | includes the profile provider's domain name and device or user | |||
identities and credentials. Such data can be "configured" during | identities and credentials. Such data can be "configured" during | |||
device manufacturing, by the user, or via profile data enrollment | device manufacturing, by the user, or via profile data enrollment | |||
(see Section 5.3.1). The data can also be "discovered" using the | (see 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 referred to as "cached". Thus, data can be | and such data is referred to as "cached". Thus, data can be | |||
configured, discovered or cached. The following requirements | configured, discovered, or cached. The following requirements | |||
apply. | 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 "discovery" of the domain name. This is the case when | attempt "discovery" of the domain name. This is the case when | |||
the device is pre-configured (e.g., via a user interface) to be | the device is pre-configured (e.g., via a user interface) to be | |||
managed by specific entities. | 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 Address of Record (AoR) | |||
local domain 'example.com'. | associated with the 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: | |||
configured, cached 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 SHOULD NOT be cached across | considered to be "configured" and SHOULD NOT be cached across | |||
resets. The configuration obtained using such data MAY provide | resets. The configuration obtained using such data MAY provide | |||
the configuration data required for the device to continue | the configuration data required for the device to continue | |||
functioning normally. | functioning normally. | |||
skipping to change at page 18, line 37 | skipping to change at page 16, line 42 | |||
request. If a SIP infrastructure element receives the request, it | request. If a SIP infrastructure element receives the request, it | |||
will relay it to the authoritative proxy for the domain indicated | will relay it to the authoritative proxy for the domain indicated | |||
in the Request-URI (the same way it would handle any other | in the Request-URI (the same way it would handle any other | |||
SUBSCRIBE message). The authoritative proxy is required to | SUBSCRIBE message). The authoritative proxy is required to | |||
examine the request (e.g., event package) and transmit it to a PDS | examine the request (e.g., event package) and transmit it to a PDS | |||
capable of addressing the 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 to | request, or proxy it to a PDS that can respond. An exception to | |||
responding or proxying the request is when a policy prevents | responding or proxying the request is when a policy prevents | |||
response (e.g., recognition of a DoS attack, an invalid device, | response (e.g., recognition of a denial-of-service (DoS) attack, | |||
etc.). The PDS then verifies the identity presented in the | an invalid device, etc.). The PDS then verifies the identity | |||
request and performs any necessary authentication. Once | presented in the request and performs any necessary | |||
authentication is successful, the PDS MUST either admit or reject | authentication. Once authentication is successful, the PDS MUST | |||
the enrollment request, based on applicable authorization | either admit or reject the enrollment request, based on applicable | |||
policies. A PDS admitting the enrollment request indicates it via | authorization policies. A PDS admitting the enrollment request | |||
a 2xx-class response, as specified in [RFC3265]. | indicates it via a 2xx-class response, as specified in [RFC3265]. | |||
Refer to Section 6.6 and Section 5.2 for more information on | Refer to Sections 6.6 and 5.2 for more information on subscription | |||
subscription request handling and security requirements, | 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 | |||
NOTIFY message 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 | |||
skipping to change at page 19, line 31 | skipping to change at page 17, line 31 | |||
data within the specified time frame. | data within the specified time frame. | |||
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. | |||
5.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 use of the SIP NOTIFY | retrieval". For information regarding the use of the SIP NOTIFY | |||
message body please refer to Section 6.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 | |||
and [RFC2818], respectively. Future enhancements or usage of this | [RFC2616] and [RFC2818], respectively. Future enhancements or usage | |||
framework may specify additional or alternative content retrieval | of this framework may specify additional or alternative content | |||
protocols. For security requirements and considerations please refer | retrieval protocols. For security requirements and considerations, | |||
to Section 5.2. | please refer to Section 5.2. | |||
5.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). Profiles may also | user preferences and modifications to services). Profiles may also | |||
be shared by multiple devices simultaneously. When a profile is | 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 (the | |||
NOTIFY message as specified in [RFC3265]). The SIP notification may | SIP NOTIFY message, as specified in [RFC3265]). The SIP notification | |||
provide the changes, a revised profile or content indirection which | may provide the changes, a revised profile, or content indirection, | |||
contains a pointer to the revised data. When a device successfully | which contains a pointer to the revised data. When a device | |||
receives a profile change notification for an enrolled profile, it | successfully receives a profile change notification for an enrolled | |||
MUST act upon the changes prior to the expiration of the | profile, it MUST act upon the changes prior to the expiration of the | |||
'effective-by' parameter. | 'effective-by' parameter. | |||
For NOTIFY content please refer to Section 6.5. | For NOTIFY content, please refer to Section 6.5. | |||
5.1.4. Enrollment Data and Caching | 5.1.4. Enrollment Data and Caching | |||
The requirements for the contents of the SIP SUBSCRIBE used to | The requirements for the contents of the SIP SUBSCRIBE used to | |||
request profile enrollment are described in this section. The data | request profile enrollment are described in this section. The data | |||
required can be configured, cached or discovered - depending on the | required can be configured, cached, or discovered -- depending on the | |||
profile type. If the data is not configured, the device MUST use | profile type. If the data is not configured, the device MUST use | |||
relevant cached data or proceed with data discovery. This section | relevant cached data or proceed with data discovery. This section | |||
describes the requirements for creating a SIP SUBSCRIBE for | describes the requirements for creating a SIP SUBSCRIBE for | |||
enrollment, the caching requirements and how data can be discovered. | enrollment, the caching requirements and how data can be discovered. | |||
5.1.4.1. Local-Network Profile | 5.1.4.1. Local-Network Profile | |||
To create a Subscription URI to request the local-network profile a | To create a Subscription URI to request the local-network profile, a | |||
device needs the local network domain name, the device identifier and | device needs the local network domain name, the device identifier, | |||
optionally a user AoR with associated credentials (if one is | and optionally a user AoR with associated credentials (if one is | |||
configured). Since the device can be potentially initialized in a | configured). Since the device can be potentially initialized in a | |||
different local-network each time, it SHOULD NOT cache the local | different local network each time, it SHOULD NOT cache the local | |||
network domain, the SIP Subscription URI or the local-network profile | network domain, the SIP Subscription URI or the local-network profile | |||
data across resets. An exception to this is when the device can | data across resets. An exception to this is when the device can | |||
confirm that it is reinitialized in the same network (using means | confirm that it is reinitialized in the same network (using means | |||
outside the scope of this document). Thus, in most cases, the device | outside the scope of this document). Thus, in most cases, the device | |||
needs to discover the local network domain name. The device | needs to discover the local network domain name. The device | |||
discovers this by establishing IP connectivity in the local network | discovers this by establishing IP connectivity in the local network | |||
(such as via DHCP or pre-configured IP information). Once | (such as via DHCP or pre-configured IP information). Once | |||
established, the device MUST attempt to use the local network domain | established, the device MUST attempt to use the local network domain | |||
obtained via pre-configuration, if available. If it is not pre- | obtained via pre-configuration, if available. If it is not pre- | |||
configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | |||
skipping to change at page 21, line 9 | skipping to change at page 19, line 9 | |||
obtained via pre-configuration, if available. If it is not pre- | obtained via pre-configuration, if available. If it is not pre- | |||
configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | |||
Domain Name option) or DHCPv6 ([RFC4704]). Once the local network | Domain Name option) or DHCPv6 ([RFC4704]). Once the local network | |||
domain is obtained, the device creates the SIP SUBSCRIBE for | domain is obtained, the device creates the SIP SUBSCRIBE for | |||
enrollment as described below. | 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 portion of the Request-URI to the | The device MUST set the host portion of the Request-URI to the | |||
dot-separated concatenation of "_sipuaconfig" and the local | dot-separated concatenation of "_sipuaconfig" and the local | |||
network domain (see example below). | 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 5.2) the device | network domain (verified as explained in Section 5.2) the device | |||
MUST use it to populate the "From" field, unless configured not to | MUST use it to populate the From field, unless configured not to | |||
(due to privacy concerns, for example). Otherwise, the device | (due to privacy concerns, for example). Otherwise, the device | |||
MUST set the "From" field to a value of | MUST set 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 [RFC5626]. The device MUST | Contact header, as specified in [RFC5626]. The device MUST ensure | |||
ensure that the value of this parameter is the same as that | that the value of this parameter is the same as that included in | |||
included in any subsequent profile enrollment request. | 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 within the | data, if available. The "+sip.instance" parameter within the Contact | |||
"Contact" header is set to the device identifier or specifically, the | header is set to the device identifier or specifically, the SIP UA | |||
SIP UA instance. Even though every device may get the same (or | instance. Even though every device may get the same (or similar) | |||
similar) local-network Profile, the uniqueness of the "+sip.instance" | local-network profile, the uniqueness of the "+sip.instance" | |||
parameter provides an important capability. Having unique instance | parameter provides an important capability. Having unique instance | |||
ID fields allows the management of the local network to track devices | ID fields allows the management of the local network to track devices | |||
present in the network and consequently also manage resources such as | present in the network and consequently also manage resources such as | |||
bandwidth allocation. | bandwidth allocation. | |||
5.1.4.2. Device Profile Type | 5.1.4.2. Device Profile Type | |||
Once associated with a device, the device provider is not expected to | Once associated with a device, the device provider is not expected to | |||
change frequently. Thus, the device is allowed to, and SHOULD cache | change frequently. Thus, the device is allowed to, and SHOULD, cache | |||
the Subscription URI for the device profile upon successful | the Subscription URI for the device profile upon successful | |||
enrollment. Exceptions include cases where the device identifier has | enrollment. Exceptions include cases where the device identifier has | |||
changed (e.g., new network card), device provider information has | changed (e.g., new network card), device provider information has | |||
changed (e.g., user initiated change) or the device cannot obtain its | changed (e.g., user initiated change), or the device cannot obtain | |||
profile using the Subscription URI. Thus, when available, the device | its profile using the Subscription URI. Thus, when available, the | |||
MUST use a cached Subscription URI. If no cached URI is available | device MUST use a cached Subscription URI. If no cached URI is | |||
then it needs to create a Subscription URI. To create a Subscription | available then it needs to create a Subscription URI. To create a | |||
URI, the device needs a device identity and the device provider's | Subscription URI, the device needs a device identity and the device | |||
domain name. Unless already configured, the device needs to discover | provider's domain name. Unless already configured, the device needs | |||
the necessary information and form the Subscription URI. In such | to discover the necessary information and form the Subscription URI. | |||
cases, the following requirements apply for creating a Subscription | In such cases, the following requirements apply for creating a | |||
URI for requesting the device profile: | Subscription URI for requesting the device profile: | |||
o The device MUST populate the user part of the Request-URI with the | o The device MUST populate the user part of the Request-URI with the | |||
device identifier. The device MUST set the host portion of the | device identifier. The device MUST set the host portion of the | |||
Request-URI to the domain name of the device provider. The device | Request-URI to the domain name of the device provider. The device | |||
identifier format is explained in detail later in this section. | identifier format is explained in detail later in this section. | |||
o The device MUST set the "From" field to a value of anonymous@ | ||||
<device provider's domain>. | o The device MUST set the From field to a value of anonymous@<device | |||
o The device MUST include the +sip.instance parameter within the | provider's domain>. | |||
'Contact' header, as specified in [RFC5626]. The device MUST use | ||||
o The device MUST include the "+sip.instance" parameter within the | ||||
Contact header, as specified in [RFC5626]. The device MUST use | ||||
the same value as the one presented while requesting the local- | the same value as the one presented while requesting the local- | |||
network profile. | network profile. | |||
Note that the discovered AoR for the Request-URI can be overridden by | Note that the discovered AoR for the Request-URI can be overridden by | |||
a special, provisioned, AoR that is unique to the device. In such | a special, provisioned, AoR that is unique to the device. In such | |||
cases, the provisioned AoR is used to form the Request-URI and to | cases, the provisioned AoR is used to form the Request-URI and to | |||
populate the From field. | populate the From field. | |||
If the device is not configured with an AoR, and needs a domain name | If the device is not configured with an AoR, and needs a domain name | |||
to populate the Request-URI and the From field, it can either use a | to populate the Request-URI and the From field, it can either use a | |||
configured domain name, if available, or discover it. The options to | configured domain name, if available, or discover it. The options to | |||
discover are described below. The device MUST use the results of | discover are described below. The device MUST use the results of | |||
each successful discovery process for one enrollment attempt, in the | each successful discovery process for one enrollment attempt, in the | |||
order specified below. | 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 | |||
domain name of the outbound proxy during the DHCP process, using | domain name of the outbound proxy during the DHCP process, using | |||
the DHCP option for SIP servers defined in [RFC3361] or [RFC3319] | the DHCP option for SIP servers defined in [RFC3361] or [RFC3319] | |||
(for IPv4 and IPv6 respectively). | (for IPv4 and IPv6, respectively). | |||
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] ). | [RFC2132] and [RFC4704]). | |||
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". | prefixing it with the label "_sipuaconfig". | |||
If the device needs to create a Subscription URI and needs to use its | If the device needs to create a Subscription URI and needs to use its | |||
device identifier, it MUST use the UUID-based URN representation as | device identifier, it MUST use the UUID-based (Universally Unique | |||
specified in [RFC4122]. The following requirements apply: | Identifier) URN representation as specified in [RFC4122]. The | |||
o When the device has a non-alterable MAC address it SHOULD use | following requirements apply: | |||
version 1 UUID representation with the timestamp and clock | ||||
sequence bits set to a value of '0'. This will allow for easy | o When the device has a non-alterable Media Access Control (MAC) | |||
recognition, and uniqueness of MAC address based UUIDs. An | address, it SHOULD use the version 1 UUID representation with the | |||
exception is the case where the device supports independent device | timestamp and clock sequence bits set to a value of '0'. This | |||
configuration for more than one SIP UA. An example would be | will allow for easy recognition, and uniqueness of MAC-address- | |||
multiple SIP UAs on the same platform. | based UUIDs. An exception is the case where the device supports | |||
independent device configuration for more than one SIP UA. An | ||||
example would be multiple SIP UAs on the same platform. | ||||
o If the device cannot use a non-alterable device identifier, it | o If the device cannot use a non-alterable device identifier, it | |||
SHOULD use an alternative non-alterable device identifier. For | SHOULD use an alternative non-alterable device identifier. For | |||
example, the International Mobile Equipment Identity (IMEI) for | example, the International Mobile Equipment Identity (IMEI) for | |||
mobile devices. | mobile devices. | |||
o If the device cannot use a non-alterable MAC Address, it MUST use | ||||
the same approach as defining a user agent Instance ID in | o If the device cannot use a non-alterable MAC address, it MUST use | |||
the same approach as defining a user agent instance ID in | ||||
[RFC5626]. | [RFC5626]. | |||
o Note: when the URN is used as the user part of the Request-URI, it | o Note: when the URN is used as the user part of the Request-URI, it | |||
MUST be URL escaped since the colon (":") is not a legal character | MUST be URL escaped since the colon (":") is not a legal character | |||
in the user part of an addr-spec ([RFC4122]), and must be escaped. | in the user part of an 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 ([RFC5234]) for the UUID representation is provided in | The ABNF ([RFC5234]) for the UUID representation is provided in | |||
[RFC4122] | [RFC4122]. | |||
5.1.4.3. User Profile Type | 5.1.4.3. User Profile Type | |||
To create a Subscription URI to request the user profile on behalf of | To create a Subscription URI to request the user profile on behalf of | |||
a user, the device needs to know the user's AoR. This can be | a user, the device needs to know the user's AoR. This can be | |||
statically or dynamically configured on the device (e.g., user input, | statically or dynamically configured on the device (e.g., user input, | |||
or propagated as part of the device profile). Similar to device | or propagated as part of the device profile). Similar to device | |||
profiles, the content and propagation of user profiles may differ, | profiles, the content and propagation of user profiles may differ, | |||
based on deployment scenarios (i.e., users belonging to the same | based on deployment scenarios (i.e., users belonging to the same | |||
domain may - or may not - be provided the same profile). To create a | domain may -- or may not -- be provided the same profile). To create | |||
Subscription URI, the following rules apply: | a Subscription URI, the following rules apply: | |||
o The device MUST set the Request-URI to the user AoR. | o The device MUST set the Request-URI to the user AoR. | |||
o The device MUST populate the "From" field with the user AoR. | ||||
o The device MUST populate the From field with the user AoR. | ||||
An authoritative SIP proxy for a SIP provider's network that receives | An authoritative SIP proxy for a SIP provider's network that receives | |||
a profile enrollment request for the user profile type will route | a profile enrollment request for the user profile type will route | |||
based on the Event Header field values, thus allowing a subscription | based on the Event Header field values, thus allowing a subscription | |||
to the user's AoR to be routed to the appropriate PDS. | to the user's AoR to be routed to the appropriate PDS. | |||
5.2. Securing Profile Delivery | 5.2. Securing Profile Delivery | |||
Profile data can contain sensitive information that needs to be | Profile data can contain sensitive information that needs to be | |||
secured, such as identities and credentials. Security involves | secured, such as identities and credentials. Security involves | |||
skipping to change at page 24, line 40 | skipping to change at page 22, line 49 | |||
Profile enrollment may result in sensitive profile data. In such | Profile enrollment may result in sensitive profile data. In such | |||
cases, the PDS MUST authenticate the device, except during the | cases, the PDS MUST authenticate the device, except during the | |||
bootstrapping scenario when the device does not have existing | bootstrapping scenario when the device does not have existing | |||
credentials (see Section 5.3.1 for more information on | credentials (see Section 5.3.1 for more information on | |||
bootstrapping). Additionally, the device MUST authenticate the PDS | bootstrapping). Additionally, the device MUST authenticate the PDS | |||
to ensure that it is obtaining sensitive profile data from a valid | to ensure that it is obtaining sensitive profile data from a valid | |||
PDS. | PDS. | |||
To authenticate a device that has been configured with identities and | To authenticate a device that has been configured with identities and | |||
credentials as specified in Section 5.3.1 and support profiles | credentials, as specified in Section 5.3.1, and support profiles | |||
containing sensitive profile data (refer to Section 5.3.3), devices | containing sensitive profile data (refer to Section 5.3.3), devices | |||
and PDSs MUST support Digest Authentication (over TLS) as specified | and PDSs MUST support digest authentication (over Transport Layer | |||
in [RFC3261]. Future enhancements may provide other authentication | Security (TLS)) as specified in [RFC3261]. Future enhancements may | |||
methods such as authentication using X.509 certificates. For the | provide other authentication methods such as authentication using | |||
device to authenticate the PDS, the device MUST mutually authenticate | X.509 certificates. For the device to authenticate the PDS, the | |||
with the PDS during digest authentication (device challenges the PDS, | device MUST mutually authenticate with the PDS during digest | |||
which responds with the Authorization header). Transmission of | authentication (device challenges the PDS, which responds with the | |||
sensitive profile data also requires data integrity. This can be | Authorization header). Transmission of sensitive profile data also | |||
accomplished by configuring the device with, or by ensuring that the | requires data integrity. This can be accomplished by configuring the | |||
discovery process during profile enrollment provides, a SIPS URI | device with, or by ensuring that the discovery process during profile | |||
enrollment provides, a Session Initiation Protocol Secure (SIPS) URI | ||||
resulting in TLS establishment ([RFC5246]). TLS also prevents | resulting in TLS establishment ([RFC5246]). TLS also prevents | |||
offline dictionary attacks when digest authentication is used. Thus, | offline dictionary attacks when digest authentication is used. Thus, | |||
in the absence of TLS, the device MUST NOT respond to any | in the absence of TLS, the device MUST NOT respond to any | |||
authentication challenges. It is to be noted that the digest | authentication challenges. It is to be noted that the digest | |||
credentials used for obtaining profile data via this framework may, | credentials used for obtaining profile data via this framework may, | |||
or may not, be the same as that used for SIP registration (see | or may not, be the same as those used for SIP registration (see | |||
Section 5.3.1). In addition, while [RFC3261] considers MD5 to be a | Section 5.3.1). In addition, while [RFC3261] considers MD5 to be a | |||
reasonable choice to compute the hash, and this may have been true | reasonable choice to compute the hash, and this may have been true | |||
when [RFC3261] was published, implementers are recommended to use | when [RFC3261] was published, implementers are recommended to use | |||
stronger alternatives such as SHA-256. Refer to [FIPS-180-3] and | stronger alternatives such as SHA-256. Refer to [FIPS-180-3] and | |||
[RFC4634] for more information about SHA-256. | [RFC4634] for more information about SHA-256. | |||
When the PDS challenges a profile enrollment request, and it fails, | When the PDS challenges a profile enrollment request, and it fails, | |||
the PDS MAY refuse enrollment or provide profile data without the | the PDS MAY refuse enrollment or provide profile data without the | |||
user-specific information (e.g., to bootstrap a device as indicated | user-specific information (e.g., to bootstrap a device as indicated | |||
in Section 5.3.1). If the device challenges, but fails to | in Section 5.3.1). If the device challenges, but fails to | |||
authenticate the PDS, it MUST reject the initial notification and | authenticate the PDS, it MUST reject the initial notification and | |||
retry the profile enrollment process. If the device is configured | retry the profile enrollment process. If the device is configured | |||
with, or discovers, a SIPS URI but TLS establishment fails because | with, or discovers, a SIPS URI but TLS establishment fails because | |||
the next-hop SIP entity does not support TLS, the device SHOULD | the next-hop SIP entity does not support TLS, the device SHOULD | |||
attempt other resolved next-hop SIP entities. When the device | attempt other resolved next-hop SIP entities. When the device | |||
establishes TLS with the next-hop entity, the device MUST use the | establishes TLS with the next-hop entity, the device MUST use the | |||
procedures specified in [RFC2818], Section 3.1, for authentication, | procedures specified in [RFC2818], Section 3.1, for authentication, | |||
unless it does not have any configured information (e.g., CA | unless it does not have any configured information (e.g., | |||
certificate) to perform authentication (like prior to bootstrapping). | certification authority (CA) certificate) to perform authentication | |||
The 'Server Identity' for authentication is always the domain of the | (like prior to bootstrapping). The 'Server Identity' for | |||
next-hop SIP entity. If the device attempts validation, and it | authentication is always the domain of the next-hop SIP entity. If | |||
fails, it MUST reject the initial notification and retry profile | the device attempts validation, and it fails, it MUST reject the | |||
enrollment. In the absence of a SIPS URI for the device and a | initial notification and retry profile enrollment. In the absence of | |||
mechanism for mutual authentication, the PDS MUST NOT present any | a SIPS URI for the device and a mechanism for mutual authentication, | |||
sensitive profile data in the initial notification, except when the | the PDS MUST NOT present any sensitive profile data in the initial | |||
device is being bootstrapped. It MAY still use content indirection | notification, except when the device is being bootstrapped. It MAY | |||
to transmit sensitive profile data. | still use content indirection to transmit sensitive profile data. | |||
When a device is being provided with bootstrapping profile data | When a device is being provided with bootstrapping profile data | |||
within the notification, and it contains sensitive information, the | within the notification, and it contains sensitive information, the | |||
SIP Identity header SHOULD be used as specified in [RFC4474]. This | SIP Identity header SHOULD be used, as specified in [RFC4474]. This | |||
helps with devices that MAY be pre-configured with certificates to | helps with devices that MAY be pre-configured with certificates to | |||
validate bootstrapping sources (e.g., list of allowed domain | validate bootstrapping sources (e.g., list of allowed domain | |||
certificates, or a list of root CA certificates using PKI). When the | certificates, or a list of root CA certificates using Public Key | |||
SIP Identity header is used, the PDS MUST set the host portion of the | Infrastructure (PKI)). When the SIP Identity header is used, the PDS | |||
AoR in the 'From' header to the Provider's domain (the user portion | MUST set the host portion of the AoR in the From header to the | |||
is a entity-specific identifier). If the device is capable of | Provider's domain (the user portion is a entity-specific identifier). | |||
validating the SIP Identity, and it fails, it MUST reject | If the device is capable of validating the SIP Identity, and it | |||
bootstrapping profile data. | fails, it MUST reject bootstrapping profile data. | |||
5.2.2. Securing Content Retrieval | 5.2.2. Securing Content Retrieval | |||
Initial or change notifications following a successful enrollment can | Initial or change notifications following a successful enrollment can | |||
provide a device with the requested profile data, or use content | provide a device with the requested profile data or use content | |||
indirection to direct it to a PCC that can provide the profile data. | indirection to direct it to a PCC that can provide the profile data. | |||
This document specifies HTTP and HTTPS as content retrieval | This document specifies HTTP and HTTPS as content retrieval | |||
protocols. | protocols. | |||
If the profile is provided via content indirection and contains | If the profile is provided via content indirection and contains | |||
sensitive profile data then the PDS MUST use a HTTPS URI for content | sensitive profile data, then the PDS MUST use a HTTPS URI for content | |||
indirection. PCCs and devices MUST NOT use HTTP for sensitive | indirection. PCCs and devices MUST NOT use HTTP for sensitive | |||
profile data, except for bootstrapping a device via the device | profile data, except for bootstrapping a device via the device | |||
profile. A device MUST authenticate the PCC as specified in | profile. A device MUST authenticate the PCC as specified in | |||
[RFC2818], Section 3.1. A device that is being provided with profile | [RFC2818], Section 3.1. A device that is being provided with profile | |||
data that contains sensitive data MUST be authenticated using digest | data that contains sensitive data MUST be authenticated using digest | |||
authentication as specified in [RFC2617], with the exception of a | authentication as specified in [RFC2617], with the exception of a | |||
device that is being bootstrapped for the first time via the device | device that is being bootstrapped for the first time via the device | |||
profile. The resulting TLS channel also provides data integrity and | profile. The resulting TLS channel also provides data integrity and | |||
data confidentiality. | data confidentiality. | |||
5.2.3. Securing Change Notification | 5.2.3. Securing Change Notification | |||
If the device requested enrollment via a SIP subscription with a non- | If the device requested enrollment via a SIP subscription with a non- | |||
zero 'Expires' parameter, it can also result in change notifications | zero 'Expires' parameter, it can also result in change notifications | |||
for the duration of the subscription. For change notifications | for the duration of the subscription. For change notifications | |||
containing sensitive profile data, this framework RECOMMENDS the use | containing sensitive profile data, this framework RECOMMENDS the use | |||
of the SIP Identity header as specified in [RFC4474]. When the SIP | of the SIP Identity header as specified in [RFC4474]. When the SIP | |||
Identity header is used, the PDS MUST set the host portion of the AoR | Identity header is used, the PDS MUST set the host portion of the AoR | |||
in the 'From' header to the Provider's domain (the user portion is a | in the From header to the Provider's domain (the user portion is a | |||
entity-specific identifier). This provides header and body integrity | entity-specific identifier). This provides header and body integrity | |||
as well. However, for sensitive profile data requiring data | as well. However, for sensitive profile data requiring data | |||
confidentiality , if the contact URI to which the NOTIFY request is | confidentiality , if the contact URI to which the NOTIFY request is | |||
to be sent is not SIPS, the PDS MUST use content indirection. | to be sent is not SIPS, the PDS MUST use content indirection. | |||
Additionally, the PDS MUST also use content indirection for | Additionally, the PDS MUST also use content indirection for | |||
notifications containing sensitive profile data, when the profile | notifications containing sensitive profile data, when the profile | |||
enrollment was not authenticated. | enrollment was not authenticated. | |||
5.3. Additional Considerations | 5.3. Additional Considerations | |||
This section provides additional considerations such as details on | This section provides additional considerations, such as details on | |||
how a device obtains identities and credentials, backoff and retry | how a device obtains identities and credentials, back-off and retry | |||
methods, guidelines on profile data and additional profile types. | methods, guidelines on profile data, and additional profile types. | |||
5.3.1. Bootstrapping Identities and Credentials | 5.3.1. Bootstrapping Identities and Credentials | |||
When requesting a profile the profile delivery server will likely | When requesting a profile, the profile delivery server will likely | |||
require the device to provide an identity (i.e., a user AoR), and | require the device to provide an identity (i.e., a user AoR) and | |||
associated credentials for authentication. During this process | associated credentials for authentication. During this process | |||
(e.g., digest authentication), the PDS is also required to present | (e.g., digest authentication), the PDS is also required to present | |||
its knowledge of the credentials to ensure mutual authentication (see | its knowledge of the credentials to ensure mutual authentication (see | |||
Section 5.2.1). For mutual authentication with the PDS, the device | Section 5.2.1). For mutual authentication with the PDS, the device | |||
needs to be provided with the necessary identities and credentials | needs to be provided with the necessary identities and credentials | |||
(e.g., username/password, certificates). This is done via | (e.g., username/password, certificates). This is done via | |||
bootstrapping. For a discussion around the security considerations | bootstrapping. For a discussion around the security considerations | |||
related to bootstrapping, please see Section 9.2. | related to bootstrapping, please see Section 9.2. | |||
Bootstrapping a device with the required identities and credentials | Bootstrapping a device with the required identities and credentials | |||
skipping to change at page 27, line 12 | skipping to change at page 25, line 22 | |||
Section 5.2.1). For mutual authentication with the PDS, the device | Section 5.2.1). For mutual authentication with the PDS, the device | |||
needs to be provided with the necessary identities and credentials | needs to be provided with the necessary identities and credentials | |||
(e.g., username/password, certificates). This is done via | (e.g., username/password, certificates). This is done via | |||
bootstrapping. For a discussion around the security considerations | bootstrapping. For a discussion around the security considerations | |||
related to bootstrapping, please see Section 9.2. | related to bootstrapping, please see Section 9.2. | |||
Bootstrapping a device with the required identities and credentials | Bootstrapping a device with the required identities and credentials | |||
can be accomplished in one of the following ways: | can be accomplished in one of the following ways: | |||
Pre-configuration | Pre-configuration | |||
The device may be pre-configured with identities and associated | The device may be pre-configured with identities and associated | |||
credentials, such as a user AoR and digest password. | credentials, such as a user AoR and digest password. | |||
Out-of-band methods | Out-of-band methods | |||
A device or Provider may provide hardware- or software-based | A device or Provider may provide hardware- or software-based | |||
credentials such as SIM cards or Universal Serial Bus (USB) | credentials such as Subscriber Identity Module (SIM) cards or | |||
drives. | Universal Serial Bus (USB) drives. | |||
End-user interface | End-user interface | |||
The end-user may be provided with the necessary identities and | The end-user may be provided with the necessary identities and | |||
credentials. The end-user can then configure the device (using a | credentials. The end-user can then configure the device (using a | |||
user interface), or present when required (e.g., IM login screen). | user interface), 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 | |||
information, it can request the local-network and device profiles. | information, it can request the local-network and device profiles. | |||
For purposes of bootstrapping, this framework recommends that the | For purposes of bootstrapping, this framework recommends that the | |||
device profile provide one of the following to bootstrap the | device profile provide one of the following to bootstrap the | |||
device: | device: | |||
* Profile data that allows the end-user to communicate with the | * Profile data that allows the end-user to communicate with the | |||
device provider or SIP service provider using non-SIP methods. | device provider or SIP service provider using non-SIP methods. | |||
For example, the profile data can direct the end-user to a web | For example, the profile data can direct the end-user to a web | |||
portal to obtain a subscription. Upon obtaining a successful | portal to obtain a subscription. Upon obtaining a successful | |||
subscription, the end-user or the device can be provided with | subscription, the end-user or the device can be provided with | |||
the necessary identities and credentials. | the necessary identities and credentials. | |||
* Content indirection information to a PCC that can provide | * Content indirection information to a PCC that can provide | |||
identities and credentials. As an example, consider a device | identities and credentials. As an example, consider a device | |||
that has a X.509 certificate that can be authenticated by the | that has an X.509 certificate that can be authenticated by the | |||
PCC. In such a case, the PCC can use HTTPS to provide | PCC. In such a case, the PCC can use HTTPS to provide | |||
identities and associated credentials. | identities and associated credentials. | |||
* Profile data containing identities and credentials that can be | * Profile data containing identities and credentials that can be | |||
used to bootstrap the device (see Section 5.3.3 for profile | used to bootstrap the device (see Section 5.3.3 for profile | |||
data recommendations). This can be used in cases where the | data recommendations). This can be used in cases where the | |||
device is initialized for the first time, or after a factory | device is initialized for the first time, or after a factory | |||
reset. This can be considered only in cases where the device | reset. This can be considered only in cases where the device | |||
is initialized in the Provider's network, for obvious security | is initialized in the Provider's network, for obvious security | |||
reasons. | reasons. | |||
For interoperability purposes, this framework requires PDSs and | For interoperability purposes, this framework requires PDSs and | |||
devices to support the last option (above), which is to use this | devices to support the last option (above), which is to use this | |||
skipping to change at page 30, line 8 | skipping to change at page 28, line 6 | |||
/ | | |(monitoring)|<--. | / | | |(monitoring)|<--. | |||
Timeout +--+---------+ +--+----+----+ : | Timeout +--+---------+ +--+----+----+ : | |||
/Retry ; ^ | : ; | /Retry ; ^ | : ; | |||
`------' | NOTIFY w. Cont.Ind | `-------' | `------' | NOTIFY w. Cont.Ind | `-------' | |||
+---/Retrieve Profile-----+ NOTIFY w. Profile | +---/Retrieve Profile-----+ NOTIFY w. Profile | |||
/Apply Profile | /Apply Profile | |||
Figure 6: Device State Diagram | Figure 6: Device State Diagram | |||
As a reminder: | As a reminder: | |||
o The timeout for SIP messages is specified by [RFC3261]. In the | o The timeout for SIP messages is specified by [RFC3261]. In the | |||
cases where this is not specified such as the timeout to wait for | cases where this is not specified such as the timeout to wait for | |||
the initial notification during profile enrollment, it is left to | the initial notification during profile enrollment, it is left to | |||
device implementations or future protocol enhancements. | device implementations or future protocol enhancements. | |||
o The timeout for profile retrieval using content indirection will | o The timeout for profile retrieval using content indirection will | |||
be as specified by profile retrieval protocols employed. If none | be as specified by profile retrieval protocols employed. If none | |||
exists, it is left to device implementations. | exists, it is left to device implementations. | |||
In addition, since profile enrollment is a process unique to this | In addition, since profile enrollment is a process unique to this | |||
framework, the device MUST follow the enrollment attempt along with | framework, the device MUST follow the enrollment attempt along with | |||
exponential backoff and retry mechanisms as indicated in Figure 7. | exponential back-off and retry mechanisms as indicated in Figure 7. | |||
Function for Profile Enrollment () | Function for Profile Enrollment () | |||
Init Function: Iteration i=0 | Init Function: Iteration i=0 | |||
Loop 1: Attempt | Loop 1: Attempt | |||
Loop 2: For each SIP Subscription URI | Loop 2: For each SIP Subscription URI | |||
Loop 3: For each next-hop SIP entity | Loop 3: For each next-hop SIP entity | |||
- Prepare & transmit Enrollment Request | - Prepare and 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 | |||
= Exit 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 the next-hop SIP entity (Loop 3) | = Continue with the next-hop SIP entity (Loop 3) | |||
End Loop: Loop 3 | End Loop: Loop 3 | |||
End Loop: Loop 2 | End Loop: Loop 2 | |||
(Note: If you are here, profile enrollment did not succeed) | (Note: If you are here, profile enrollment did not succeed) | |||
+ Is any valid cached profile data available? | + Is any valid cached profile data available? | |||
= If yes, use it and continue with Loop 1 | = If yes, use it and continue with Loop 1 | |||
+ If the enrollment request is for a non-mandatory profile | + If the enrollment request is for a non-mandatory profile | |||
= Start profile enrollment for the next profile, | = Start profile enrollment for the next profile, | |||
if applicable | if applicable | |||
- Delay for 2^i*(64*T1); -- this is exponential backoff | - Delay for 2^i*(64*T1); -- this is exponential back-off | |||
- increment i; | - increment i; | |||
- If i>8, reset i=8; | - If i>8, reset i=8; | |||
End loop: Loop 1 | End loop: Loop 1 | |||
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 | |||
which provided the cached data. This framework does not provide any | that provided the cached data. This framework does not provide any | |||
procedures for local network recognition. Any cached device and user | procedures for local network recognition. Any cached device and user | |||
profiles MUST only be used in domains that they are associated with. | profiles MUST only be used in domains with which they are associated. | |||
For example, a cached device profile is used only when the associated | For example, a cached device profile is used only when the associated | |||
domain matches the current device provider's domain. If a PDS wants | domain matches the current device provider's domain. If a PDS wants | |||
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', i.e., profile instance without any included data (if | 'empty profile', i.e., profile instance without any included data (if | |||
supported by the profile data model; not to be confused with an empty | supported by the profile data model; not to be confused with an empty | |||
NOTIFY), or via an explicit profile data element that invalidates the | NOTIFY), or via an explicit profile data element that invalidates the | |||
data. A device receiving such a NOTIFY MUST discard the applicable | data. A device receiving such a NOTIFY MUST discard the applicable | |||
profile (i.e., it cannot even store it in the cache). Additionally, | profile (i.e., it cannot even store it in the cache). Additionally, | |||
if a factory reset is available and performed on a device, it MUST | if a factory reset is available and performed on a device, it MUST | |||
reset the device to its initial state prior to any configuration. | reset the device to its initial state prior to any configuration. | |||
Specifically, the device MUST set the device back to the state when | Specifically, the device MUST set the device back to the state when | |||
it was originally distributed. | it was originally 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 enroll in the following | specified in this framework, the device MUST enroll in the following | |||
default order: local-network, device and user. The pseudo-code | default order: local network, device, and user. The pseudo-code | |||
presented earlier (Figure 7) differentiates between 'mandatory' and | presented earlier (Figure 7) differentiates between 'mandatory' and | |||
'non-mandatory' profiles. This distinction is left to profile data | 'non-mandatory' profiles. This distinction is left to profile data | |||
definitions. | 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. | |||
5.3.3. Profile Data | 5.3.3. Profile Data | |||
skipping to change at page 32, line 51 | skipping to change at page 31, line 4 | |||
o The device profile type SHOULD specify parameters to configure the | o The device profile type SHOULD specify parameters to configure the | |||
identities and credentials for use in scenarios such as | identities and credentials for use in scenarios such as | |||
bootstrapping (see Section 5.3.1) and run-time modifications to | bootstrapping (see Section 5.3.1) and run-time modifications to | |||
identities and credentials. This framework recommends the device | identities and credentials. This framework recommends the device | |||
profile provide the identities and credentials due to a couple of | profile provide the identities and credentials due to a couple of | |||
reasons. The local-network profile may not always be available, | reasons. The local-network profile may not always be available, | |||
and even if present, may not be controlled by the device provider | and even if present, may not be controlled by the device provider | |||
who controls device configuration to provide services. Further, | who controls device configuration to provide services. Further, | |||
the device may not have any users configured prior to being | the device may not have any users configured prior to being | |||
bootstrapped, resulting in an absence of user profile requests. | bootstrapped, resulting in an absence of user profile requests. | |||
However, this framework does not prevent other profile types from | However, this framework does not prevent other profile types from | |||
providing identities and credentials to meet deployment needs. | providing identities and credentials to meet deployment needs. | |||
For example, the user profile can contain identities and | For example, the user profile can contain identities and | |||
credentials for communicating with specific applications. | credentials for communicating with specific applications. | |||
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 disclosed to | considered sensitive, i.e., data that cannot be disclosed to | |||
unauthorized parties. As an example, a device profile definition | unauthorized parties. As an example, a device profile definition | |||
may identify itself as containing sensitive data and indicate data | may identify itself as containing sensitive data and indicate data | |||
such as device credentials to be sensitive. | such as device 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 | |||
profile type SHOULD only contain data relevant to the entity it | profile type SHOULD only contain data relevant to the entity it | |||
represents. As an example, consider a device that obtains all the | represents. As an example, consider a device that obtains all the | |||
defined profiles. Information pertaining to the local network is | defined profiles. Information pertaining to the local network is | |||
contained in the 'local-network' profile and not the 'user' | contained in the 'local-network' profile and not the 'user' | |||
profile. This does not preclude relevant data about a different | profile. This does not preclude relevant data about a different | |||
entity from being included in a profile type, e.g., the 'device' | entity from being included in a profile type, e.g., the 'device' | |||
profile type may contain information about the users allowed to | profile type may contain information about the users allowed to | |||
access services via the device. A profile may also contain | access services via the device. A profile may also contain | |||
starting information to obtain subsequent Profiles. | starting information to obtain subsequent profiles. | |||
o Data overlap SHOULD be avoided across profile types, unless | o Data overlap SHOULD be avoided across profile types, unless | |||
necessary. If data overlap is present, prioritization of the data | necessary. If data overlap is present, prioritization of the data | |||
is left to data definitions. As an example, the device profile | is left to data definitions. As an example, the device profile | |||
may contain the list of codecs to be used by the 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. | |||
5.3.4. Profile Data Frameworks | 5.3.4. 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 | |||
the PDS has a PCC based on existing or other Profile Data Frameworks. | that 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). Thus, Profile Data or Retrieval | the PDS (specifically the PCC). Thus, Profile Data Frameworks or | |||
frameworks used in conjunction with this framework MAY consider | retrieval frameworks used in conjunction with this framework MAY | |||
techniques for propagating incremental, atomic changes to the PDS. | consider techniques for propagating incremental, atomic changes to | |||
One means for propagating changes to a PDS is XCAP ([RFC4825]). | the PDS. One means for propagating changes to a PDS is XML | |||
Configuration Access Protocol (XCAP) ([RFC4825]). | ||||
5.3.5. Additional Profile Types | 5.3.5. Additional Profile Types | |||
This document specifies three profile types: local-network, device | This document specifies three profile types: local-network, device, | |||
and user. However, there may be use cases for additional profile | and user. However, there may be use cases for additional profile | |||
types. 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. | |||
5.3.6. Deployment considerations | 5.3.6. 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 | |||
service that a user subscribes to (telephony service, instant | service to which a user subscribes (telephony service, instant | |||
messaging, etc.); this Framework does not specify explicit | messaging, etc.); this framework does not specify explicit | |||
behavior in such a scenario, but it does not prohibit its usage | behavior in such a scenario, but it does not prohibit its usage | |||
either. | either. | |||
o Each user accessing services via the same device may subscribe to | o Each user accessing services via the same device may subscribe to | |||
different sets of services, from different Service Providers. | different sets of services, from different service providers. | |||
User-device relationship: | User-device relationship: | |||
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. | |||
5.4. Support for NATs | 5.4. Support for NATs | |||
PDSs that support devices behind NATs, and devices that can be behind | PDSs that support devices behind NATs, and devices that can be behind | |||
NATs can use procedures specified in [RFC5626]. The Outbound proxies | NATs can use procedures specified in [RFC5626]. The Outbound proxies | |||
can be configured or discovered. Clients that support such behavior | can be configured or discovered. Clients that support such behavior | |||
MUST include the 'outbound' option-tag in a Supported header field | MUST include the 'outbound' option-tag in a Supported header field | |||
skipping to change at page 34, line 46 | skipping to change at page 33, line 11 | |||
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. | |||
5.4. Support for NATs | 5.4. Support for NATs | |||
PDSs that support devices behind NATs, and devices that can be behind | PDSs that support devices behind NATs, and devices that can be behind | |||
NATs can use procedures specified in [RFC5626]. The Outbound proxies | NATs can use procedures specified in [RFC5626]. The Outbound proxies | |||
can be configured or discovered. Clients that support such behavior | can be configured or discovered. Clients that support such behavior | |||
MUST include the 'outbound' option-tag in a Supported header field | MUST include the 'outbound' option-tag in a Supported header field | |||
value, and add the "ob" parameter as specified in [RFC5626] within | value, and add the "ob" parameter, as specified in [RFC5626], within | |||
the SIP SUBSCRIBE for profile enrollment. | the SIP SUBSCRIBE for profile enrollment. | |||
6. Event Package Definition | 6. Event Package Definition | |||
The framework specified in this document proposes and specifies a new | The framework specified in this document proposes and specifies a new | |||
SIP Event Package as allowed by [RFC3265]. The purpose is to allow | SIP event package, as allowed by [RFC3265]. The purpose is to allow | |||
for 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 subsections specify the event package description and the | |||
associated requirements. The framework requirements are defined in | associated requirements. The framework requirements are defined in | |||
Section 5. | Section 5. | |||
6.1. Event Package Name | 6.1. Event Package Name | |||
The name of this package is "ua-profile". This value appears in the | The name of this package is "ua-profile". This value appears in the | |||
Event header field present in SUBSCRIBE and NOTIFY requests for this | Event header field present in SUBSCRIBE and NOTIFY requests for this | |||
package as defined in [RFC3265]. | package, as defined in [RFC3265]. | |||
6.2. Event Package Parameters | 6.2. Event Package Parameters | |||
This package defines the following new parameters for the event | This package defines the following new parameters for the event | |||
header: | header: | |||
"profile-type", "vendor", "model", "version", 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. | subsections. | |||
6.2.1. profile-type | 6.2.1. "profile-type" Parameter | |||
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 and to be notified | the profile type the user agent wishes to obtain and to be notified | |||
of subsequent changes. This document defines three logical types of | of subsequent changes. This document defines three logical types of | |||
profiles and their token names. They are as follows: | profiles and their token names. They are as follows: | |||
local-network: specifying the "local-network" type profile indicates | local-network: specifying the "local-network" type profile indicates | |||
the desire for profile data, and potentially, profile change | the desire for profile data, and potentially, profile change | |||
notifications specific to the local network. | notifications specific to the local network. | |||
device: specifying the "device" type profile(s) indicates the desire | device: specifying the "device" type profile(s) indicates the desire | |||
for the profile data, and potentially, profile change notification | for the profile data, and potentially, profile change notification | |||
that is specific to the device or user agent. | that is specific to the device or user agent. | |||
user: Specifying "user" type profile indicates the desire for the | user: specifying the "user" type profile indicates the desire for | |||
profile data, and potentially, profile change notification | the profile data, and potentially, profile change notification | |||
specific to the user. | specific to the user. | |||
The profile type is identified in the Event header parameter: | The profile type is identified in the Event header parameter: | |||
"profile-type". A separate SUBSCRIBE dialog is used for each profile | "profile-type". A separate SUBSCRIBE dialog is used for each profile | |||
type. Thus, the subscription dialog on which a NOTIFY arrives | type. Thus, the subscription dialog on which a NOTIFY arrives | |||
implies which profile's data is contained in, or referred to, by the | implies which profile's data is contained in, or referred to, by the | |||
NOTIFY message body. The Accept header of the SUBSCRIBE request MUST | NOTIFY message body. The Accept header of the SUBSCRIBE request MUST | |||
include the MIME types for all profile content types for which the | include the MIME types for all profile content types for which the | |||
subscribing user agent wishes to retrieve profiles, or receive change | subscribing user agent wishes to retrieve 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. | |||
6.2.2. vendor, model and version | 6.2.2. "vendor", "model", and "version" Parameters | |||
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, | |||
unless there is a good reason not to. Examples of exceptions | unless there is a good reason not to. Examples of exceptions | |||
include: if the vendor does not have an assigned DNS domain name, if | include: if the vendor does not have an assigned DNS domain name, if | |||
they are using a different vendor's implementation etc. These | they are using a different vendor's implementation, etc. These | |||
parameters are useful to the PDS to affect the profiles provided. In | parameters are useful to the PDS to affect the profiles provided. In | |||
some scenarios it is desirable to provide different profiles based | some scenarios, it is desirable to provide different profiles based | |||
upon these parameters. e.g., feature property X in a profile may work | upon these parameters. For example, feature property X in a profile | |||
differently on two versions of the same user agent. This gives the | may work differently on two versions of the same user agent. This | |||
PDS the ability to compensate for or take advantage of the | gives the PDS the ability to compensate for or take advantage of the | |||
differences. In the following ABNF defining the syntax, EQUAL and | differences. In the following ABNF defining the syntax, EQUAL and | |||
quoted-string are defined in [RFC3261]. | quoted-string are defined in [RFC3261]. | |||
Vendor = "vendor" EQUAL quoted-string | Vendor = "vendor" EQUAL quoted-string | |||
Model = "model" EQUAL quoted-string | Model = "model" EQUAL quoted-string | |||
Version = "version" EQUAL quoted-string | Version = "version" EQUAL quoted-string | |||
6.2.3. 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. If it is absent, the device SHOULD attempt to make the | immediately. If it is absent, the device SHOULD attempt to make the | |||
profile data effective at the earliest possible opportunity that does | profile data effective at the earliest possible opportunity that does | |||
not disrupt any services being offered. The "effective-by" parameter | not disrupt any services being offered. The "effective-by" parameter | |||
is ignored in all messages other than the NOTIFY request. In the | is ignored in all messages other than the NOTIFY request. In the | |||
following ABNF, EQUAL and DIGIT are defined in [RFC3261]. | following ABNF, EQUAL and DIGIT are defined in [RFC3261]. | |||
Effective-By = "effective-by" EQUAL 1*DIGIT | Effective-By = "effective-by" EQUAL 1*DIGIT | |||
6.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 that may occur in SUBSCRIBE | |||
requests. These examples are not intended to be complete SUBSCRIBE | requests. These examples are not intended to be complete SUBSCRIBE | |||
requests. | requests. | |||
Event: ua-profile;profile-type=device; | Event: ua-profile;profile-type=device; | |||
vendor="vendor.example.com";model="Z100";version="1.2.3" | vendor="vendor.example.com";model="Z100";version="1.2.3" | |||
Event: ua-profile;profile-type=user; | Event: ua-profile;profile-type=user; | |||
vendor="premier.example.com";model="trs8000";version="5.5" | vendor="premier.example.com";model="trs8000";version="5.5" | |||
The following are example Event headers which may occur in NOTIFY | The following are example Event headers that may occur in NOTIFY | |||
requests. These example headers are not intended to be complete | requests. These example headers are not intended to be complete | |||
SUBSCRIBE requests. | SUBSCRIBE requests. | |||
Event: ua-profile;effective-by=0 | Event: ua-profile;effective-by=0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
The following table shows the use of Event header parameters in | The following table shows the use of Event header parameters in | |||
SUBSCRIBE requests for the three profile types: | SUBSCRIBE requests for the three profile types: | |||
skipping to change at page 38, line 42 | skipping to change at page 36, line 50 | |||
============================================= | ============================================= | |||
vendor || | | | vendor || | | | |||
model || | | | model || | | | |||
version || | | | version || | | | |||
effective-by || o | o | o | effective-by || o | o | o | |||
6.3. SUBSCRIBE Bodies | 6.3. SUBSCRIBE Bodies | |||
This package defines no use of the SUBSCRIBE request body. If | This package defines no use of the SUBSCRIBE request body. If | |||
present, it SHOULD be ignored. Exceptions include future | present, it SHOULD be ignored. Exceptions include future | |||
enhancements to the framework which may specify a use for the | enhancements to the framework that may specify a use for the | |||
SUBSCRIBE request body. | SUBSCRIBE request body. | |||
6.4. Subscription Duration | 6.4. Subscription Duration | |||
The duration of a subscription is specific to SIP deployments and no | The duration of a subscription is specific to SIP deployments, and no | |||
specific recommendation is made by this Event Package. If absent, a | specific recommendation is made by this event package. If absent, a | |||
value of 86400 seconds (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, without ongoing | It is to be noted that a one-time fetch of a profile, without ongoing | |||
subscription, can be accomplished by setting the 'Expires' parameter | subscription, can be accomplished by setting the 'Expires' parameter | |||
to a value of Zero, as specified in [RFC3265]. | to a value of Zero, as specified in [RFC3265]. | |||
6.5. NOTIFY Bodies | 6.5. NOTIFY Bodies | |||
The framework specifying the Event Package allows for the NOTIFY body | The framework specifying the event package allows for the NOTIFY body | |||
to contain the profile data, or a pointer to the profile data using | to contain the profile data, or a pointer to the profile data using | |||
content indirection. For profile data delivered via content | content indirection. For profile data delivered via content | |||
indirection, i.e., a pointer to a PCC, then the Content-ID MIME | indirection, i.e., a pointer to a PCC, then the Content-ID MIME | |||
header, as described in [RFC4483] MUST be used for each Profile | header, as described in [RFC4483], MUST be used for each profile | |||
document URI. At a minimum, the "http:" [RFC2616] and "https:" | document URI. At a minimum, the "http:" [RFC2616] and "https:" | |||
[RFC2818] URI schemes MUST be supported; other URI schemes MAY be | [RFC2818] URI schemes MUST be supported; other URI schemes MAY be | |||
supported based on the Profile Data Frameworks (examples include FTP | supported based on the Profile Data Frameworks (examples include FTP | |||
[RFC0959], LDAP [RFC4510] and XCAP [RFC4825] ). | [RFC0959], Lightweight Directory Access Protocol (LDAP) [RFC4510], | |||
and XCAP [RFC4825] ). | ||||
A non-empty NOTIFY body MUST include a MIME type specified in the | A non-empty NOTIFY body MUST include a MIME type specified in the | |||
'Accept' header of the SUBSCRIBE. Further, if the Accept header of | Accept header of the SUBSCRIBE. Further, if the Accept header of the | |||
the SUBSCRIBE included the MIME type message/external-body | SUBSCRIBE included the MIME type message/external-body (indicating | |||
(indicating support for content indirection) then the PDS MAY use | support for content indirection) then the PDS MAY use content | |||
content indirection in the NOTIFY body for providing the profiles. | indirection in the NOTIFY body for providing the profiles. | |||
6.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). The | profile contents or a pointer to it (via content indirection). The | |||
SUBSCRIBE SHOULD be either authenticated, or transmitted over an | SUBSCRIBE SHOULD be either authenticated or transmitted over an | |||
integrity protected SIP communications channel. Exceptions include | integrity protected SIP communications channel. Exceptions include | |||
cases where the identity of the Subscriber is unknown and the | cases where the identity of the Subscriber is unknown and the | |||
Notifier is configured to accept such requests. | 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 9. | Securing data sent via content indirection is covered in Section 9. | |||
If the profile type indicated in the "profile-type" Event header | If the profile type indicated in the "profile-type" Event header | |||
parameter is unavailable or the Notifier is configured not to provide | parameter is unavailable or the Notifier is configured not to provide | |||
it, the Notifier SHOULD return a 404 response to the SUBSCRIBE | it, the Notifier SHOULD return a 404 response to the SUBSCRIBE | |||
request. If the specific user or device is unknown, the Notifier MAY | request. If the specific user or device is unknown, the Notifier MAY | |||
accept the subscription, or else it may reject the subscription (with | accept the subscription, or else it may reject the subscription (with | |||
a 403 response). | a 403 response). | |||
6.7. Notifier Generation of NOTIFY Requests | 6.7. Notifier Generation of NOTIFY Requests | |||
As specified in [RFC3265], the Notifier MUST always send a NOTIFY | As specified in [RFC3265], the Notifier MUST always send a NOTIFY | |||
request upon accepting a subscription. If the 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., empty NOTIFY). | data) or provide no profile information (i.e., empty NOTIFY). | |||
If the identity indicated in the SUBSCRIBE request (From header) is a | If the identity indicated in the SUBSCRIBE request (From header) is a | |||
known identity and the requested profile information is available | known identity and the requested profile information is available | |||
(i.e. as specified in the profile-type parameter of the Event | (i.e., as specified in the "profile-type" parameter of the Event | |||
header), the Notifier SHOULD send a NOTIFY with profile data. | header), the Notifier SHOULD send a NOTIFY with profile data. | |||
Profile data MAY be sent as profile contents or via Content | Profile data MAY be sent as profile contents or via content | |||
Indirection (if the content indirection MIME type was included in the | indirection (if the content indirection MIME type was included in the | |||
Accept header). The Notifier MUST NOT use any scheme that was not | Accept header). The Notifier MUST NOT use any scheme that was not | |||
indicated in the "schemes" Contact header field. | indicated in the "schemes" 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. | |||
6.8. Subscriber Processing of NOTIFY Requests | 6.8. Subscriber Processing of NOTIFY Requests | |||
A Subscriber to this event package MUST adhere to the NOTIFY request | A Subscriber to this event package MUST adhere to the NOTIFY request | |||
processing behavior specified in [RFC3265]. If the Notifier | processing behavior specified in [RFC3265]. If the Notifier | |||
indicated an effective time (using the "effective-by" Event Header | indicated an effective time (using the "effective-by" Event header | |||
parameter), the Subscriber SHOULD attempt to make the profiles | parameter), the Subscriber SHOULD attempt to make the profiles | |||
effective within the specified time. Exceptions include deployments | effective within the specified time. Exceptions include deployments | |||
that prohibit such behavior in certain cases (e.g., emergency | that prohibit such behavior in certain cases (e.g., emergency | |||
sessions are in progress). When profile data cannot be applied | sessions are in progress). When profile data cannot be applied | |||
within the recommended time frame and this affects device behavior, | within the recommended time frame and this affects device behavior, | |||
any actions to be taken SHOULD be defined by the profile data | any actions to be taken SHOULD be defined by the profile data | |||
definitions. By default, the Subscriber is RECOMMENDED to make the | definitions. By default, the Subscriber is RECOMMENDED to make the | |||
profiles effective as soon as possible. | profiles effective as soon as possible. | |||
When accepting content indirection, the Subscriber MUST always | When accepting content indirection, the Subscriber MUST always | |||
skipping to change at page 41, line 7 | skipping to change at page 39, line 11 | |||
with those URI schemes. If the Subscriber wishes to support | with those URI schemes. If the Subscriber wishes to support | |||
alternative URI schemes they MUST each be indicated in the "schemes" | alternative URI schemes they MUST each be indicated in the "schemes" | |||
Contact header field parameter as defined in [RFC4483]. The | Contact header field parameter as defined in [RFC4483]. The | |||
Subscriber MUST also be prepared to receive a NOTIFY request with no | Subscriber MUST also be prepared to receive a NOTIFY request with no | |||
body. The subscriber MUST NOT reject the NOTIFY request with no | body. The subscriber MUST NOT reject the NOTIFY request with no | |||
body. The subscription dialog MUST NOT be terminated by a empty | body. The subscription dialog MUST NOT be terminated by a empty | |||
NOTIFY, i.e., with no body. | NOTIFY, i.e., with no body. | |||
6.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. | |||
6.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. | |||
6.11. State Agents | 6.11. State Agents | |||
State agents are not applicable to this Event Package. | State agents are not applicable to this event package. | |||
7. Examples | 7. Examples | |||
This section provides examples along with sample SIP message bodies | This section provides examples along with sample SIP message bodies | |||
relevant to this framework. Both the examples are derived from the | relevant to this framework. Both the examples are derived from the | |||
use case illustrated in Section 4.1, specifically the request for the | use case illustrated in Section 4.1, specifically the request for the | |||
device profile. The examples are informative only. | device profile. The examples are informative only. | |||
7.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 | |||
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 | ||||
SIP Proxy. | o All SIP communication with the SIP service provider happens via a | |||
SIP proxy. | ||||
o HTTP over TLS is assumed to be the Content Retrieval method used | o HTTP over TLS is assumed to be the Content Retrieval method used | |||
(any 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 42, line 42 | skipping to change at page 41, line 6 | |||
|<<<<<<<<<<<<< TLS establishment >>>>>>>>>>>>>| | |<<<<<<<<<<<<< TLS establishment >>>>>>>>>>>>>| | |||
| | | | | | |||
| HTTP Request | | | HTTP Request | | |||
(XReq)|---------------------------------------------->| | (XReq)|---------------------------------------------->| | |||
| | | | | | |||
| HTTP Response | | | HTTP Response | | |||
(XRes)|<----------------------------------------------| | (XRes)|<----------------------------------------------| | |||
| | | | | | |||
(SReq) | (SReq) | |||
the device transmits a request for the 'device' profile using the | the device transmits a request for the 'device' profile using the | |||
SIP SUBSCRIBE utilizing the Event Package specified in this | SIP SUBSCRIBE utilizing the event package specified in this | |||
framework. | framework. | |||
* Note: Some of the header fields (e.g., SUBSCRIBE, Event, via) | * Note: Some of the header fields (e.g., SUBSCRIBE, Event, Via) | |||
are continued on a separate line due to format constraints of | are continued on a separate line due to format constraints of | |||
this document. | this document. | |||
SUBSCRIBE sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | SUBSCRIBE sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | |||
@example.com SIP/2.0 | @example.com SIP/2.0 | |||
Event: ua-profile;profile-type=device;vendor="vendor.example.net"; | Event: ua-profile;profile-type=device;vendor="vendor.example.net"; | |||
model="Z100";version="1.2.3" | model="Z100";version="1.2.3" | |||
From: anonymous@example.com;tag=1234 | From: anonymous@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 | |||
@192.168.1.44 | @192.168.1.44 | |||
;+sip.instance="<urn:uuid:00000000-0000-0000-0000-123456789AB0>" | ;+sip.instance="<urn:uuid:00000000-0000-0000-0000-123456789AB0>" | |||
;schemes="http,https" | ;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 provider's network, which transmits it to the PDS. The | ||||
PDS accepts the response and responds with a 200 OK. | ||||
the SUBSCRIBE request is received by a SIP Proxy in the Service | * Note: The device and the SIP proxy may have established a | |||
Provider's network which transmits it to the PDS. The PDS accepts | secure communications channel (e.g., TLS). | |||
the response and responds with a 200 OK | ||||
* Note: The device and the SIP proxy may have established a | ||||
secure communications channel (e.g., TLS). | ||||
(NTFY) | (NTFY) subsequently, the PDS transmits a SIP NOTIFY message | |||
indicating the profile location. | ||||
subsequently, the PDS transmits a SIP NOTIFY message indicating | ||||
the profile location | ||||
* Note: Some of the fields (e.g., content-type) are continued on | * Note: Some of the fields (e.g., content-type) are continued on | |||
a separate line due to format constraints of this document. | a separate line due to format constraints of this document. | |||
NOTIFY sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | NOTIFY sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | |||
@192.168.1.44 SIP/2.0 | @192.168.1.44 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
From: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | From: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | |||
;tag=abca | ;tag=abca | |||
To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | |||
;tag=1234 | ;tag=1234 | |||
skipping to change at page 44, line 29 | skipping to change at page 42, line 29 | |||
URL="http://example.com/z100-000000000000.html"; | URL="http://example.com/z100-000000000000.html"; | |||
size=9999; | size=9999; | |||
hash=10AB568E91245681AC1B | hash=10AB568E91245681AC1B | |||
Content-Type: application/x-z100-device-profile | Content-Type: application/x-z100-device-profile | |||
Content-ID: <39EHF78SA@example.com> | Content-ID: <39EHF78SA@example.com> | |||
. | . | |||
. | . | |||
. | . | |||
(NRes) | (NRes) Device accepts the NOTIFY message and responds with a 200 OK. | |||
Device accepts the NOTIFY message and responds with a 200 OK | ||||
(XReq) | ||||
once the necessary secure communications channel is established, | ||||
the device sends an HTTP request to the HTTP server indicated in | ||||
the NOTIFY | ||||
(XRes) | (XReq) once the necessary secure communications channel is | |||
established, the device sends an HTTP request to the HTTP server | ||||
indicated in the NOTIFY. | ||||
the HTTP server responds to the request via a HTTP response | (XRes) the HTTP server responds to the request via a HTTP response | |||
containing the profile contents | containing the profile contents. | |||
7.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 that allows for changes to the user profile. | interface 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 that | ||||
o The SIP service provider also provides a user interface that | ||||
allows the user to change preferences that impact the user | allows the user to change preferences that impact the user | |||
profile. | profile. | |||
The flow diagram and an explanation of the messages follow. | The flow diagram and an explanation of the messages follow. | |||
o Note: The example only shows retrieval of user X's profile, but it | o Note: The example only shows retrieval of user X's profile, but it | |||
may request and retrieve other profiles (e.g., local-network, | may request and retrieve other profiles (e.g., local-network, | |||
Device). | device). | |||
----- ----- | ----- ----- | |||
|User |_________| UI* | * = User Interface | |User |_________| UI* | * = User Interface | |||
| X | | | | | X | | | | |||
----- ----- | ----- ----- | |||
/ \ | / \ | |||
/ \ | / \ | |||
/ \ +----------------------+ | / \ +----------------------+ | |||
+--------+ +--------+ | SIP Service Provider | | +--------+ +--------+ | SIP Service Provider | | |||
| Device | | Device | | | | | Device | | Device | | | | |||
skipping to change at page 46, line 28 | skipping to change at page 44, line 20 | |||
| | |------>| | | | | |------>| | | |||
| | | | | | |||
| | | | | | |||
(A-RX)|<===Retrieves User X's profile================>| | (A-RX)|<===Retrieves User X's profile================>| | |||
| | | | | | |||
| | | | | | | | |||
| | | | | | | | |||
| (B-RX)|<= Retrieves User X's profile=>| | | (B-RX)|<= Retrieves User X's profile=>| | |||
| | | | | | | | |||
(A-EX) Device A discovers, enrolls and obtains notification related | (A-EX) Device A discovers, enrolls, and obtains notification | |||
to user X's profile. | related to user X's profile. | |||
(A-RX) Device A retrieves user X's profile. | ||||
(B-EX) Device B discovers, enrolls and obtains notification related | (A-RX) Device A retrieves user X's profile. | |||
to user X's profile. | ||||
(B-RX) Device B retrieves user X's profile. | (B-EX) Device B discovers, enrolls, and obtains notification | |||
(HPut) Changes affected by the user via the user interface are | related to user X's profile. | |||
uploaded to the HTTP Server. | ||||
* Note: The UI itself can act as a device and subscribe to user | (B-RX) Device B retrieves user X's profile. | |||
X's profile. This is not the case in the example shown. | ||||
(HRes) Changes are accepted by the HTTP server. | (HPut) Changes affected by the user via the user interface are | |||
(A-NT) PDS transmits a NOTIFY message to device A indicating the | uploaded to the HTTP server. | |||
changed profile. A sample message is shown below: | ||||
Note: Some of the fields (e.g., Via) are continued on a | * Note: The Unique Identifier (UI) itself can act as a | |||
separate line due to format constraints of this document. | device and subscribe to user X's profile. This is not | |||
the case in the example shown. | ||||
(HRes) Changes are accepted by the HTTP server. | ||||
(A-NT) PDS transmits a NOTIFY message to device A indicating the | ||||
changed profile. A sample message is shown below: | ||||
* Note: Some of the fields (e.g., Via) are continued on a | ||||
separate line due to format constraints of this document. | ||||
NOTIFY sip:userX@192.0.2.44 SIP/2.0 | NOTIFY sip:userX@192.0.2.44 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
From: sip:userX@sip.example.net;tag=abcd | From: sip:userX@sip.example.net;tag=abcd | |||
To: sip:userX@sip.example.net.net;tag=1234 | To: sip:userX@sip.example.net.net;tag=1234 | |||
Call-ID: 3573853342923422@192.0.2.44 | Call-ID: 3573853342923422@192.0.2.44 | |||
CSeq: 322 NOTIFY | CSeq: 322 NOTIFY | |||
Via: SIP/2.0/UDP 192.0.2.3; | Via: SIP/2.0/UDP 192.0.2.3; | |||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | |||
MIME-Version: 1.0 | MIME-Version: 1.0 | |||
Content-Type: message/external-body; access-type="URL"; | Content-Type: message/external-body; access-type="URL"; | |||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | |||
URL="http://www.example.com/user-x-profile.html"; | URL="http://www.example.com/user-x-profile.html"; | |||
size=9999; | size=9999; | |||
hash=123456789AAABBBCCCDD | hash=123456789AAABBBCCCDD | |||
. | . | |||
. | . | |||
. | . | |||
(A-RS) Device A accepts the NOTIFY and sends a 200 OK | (A-RS) Device A accepts the NOTIFY and sends a 200 OK. | |||
(B-NT) PDS transmits a NOTIFY message to device B indicating the | ||||
changed profile. A sample message is shown below: | (B-NT) PDS transmits a NOTIFY message to device B indicating the | |||
Note: Some of the fields (e.g., Via) are continued on a | changed profile. A sample message is shown below: | |||
separate line due to format constraints of this document. | ||||
* Note: Some of the fields (e.g., Via) are continued on a | ||||
separate line due to format constraints of this document. | ||||
NOTIFY sip:userX@192.0.2.43 SIP/2.0 | NOTIFY sip:userX@192.0.2.43 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
From: sip:userX@sip.example.net;tag=abce | From: sip:userX@sip.example.net;tag=abce | |||
To: sip:userX@sip.example.net.net;tag=1234 | To: sip:userX@sip.example.net.net;tag=1234 | |||
Call-ID: 3573853342923422@192.0.2.43 | Call-ID: 3573853342923422@192.0.2.43 | |||
CSeq: 322 NOTIFY | CSeq: 322 NOTIFY | |||
Via: SIP/2.0/UDP 192.0.2.3; | Via: SIP/2.0/UDP 192.0.2.3; | |||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d2 | branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d2 | |||
MIME-Version: 1.0 | MIME-Version: 1.0 | |||
Content-Type: message/external-body; access-type="URL"; | Content-Type: message/external-body; access-type="URL"; | |||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | |||
URL="http://www.example.com/user-x-profile.html"; | URL="http://www.example.com/user-x-profile.html"; | |||
size=9999; | size=9999; | |||
hash=123456789AAABBBCCCDD | hash=123456789AAABBBCCCDD | |||
. | . | |||
. | . | |||
. | . | |||
(B-RS) 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 | ||||
(B-RX) Device B 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. | ||||
8. IANA Considerations | 8. IANA Considerations | |||
There are two IANA considerations associated with this document, SIP | IANA has registered a SIP event package, event header parameters, and | |||
Event Package and SIP configuration profile types. These are | SIP configuration profile types as outlined in the following | |||
outlined in the following sub-sections. | subsections. | |||
8.1. SIP Event Package | 8.1. SIP Event Package | |||
This specification registers a new event package as defined in | This specification registers a new event package as defined in | |||
[RFC3265]. The following information required for this registration: | [RFC3265]. The registration is as follows: | |||
Package Name: ua-profile | Package Name: ua-profile | |||
Package or Template-Package: This is a package | ||||
Published Document: RFC XXXX (Note to RFC Editor: Please fill in | ||||
XXXX with the RFC number of this specification) | ||||
Persons to Contact: Daniel Petrie dan.ietf AT SIPez DOT com, | ||||
sumanth@cablelabs.com | ||||
New event header parameters: profile-type, vendor, model, version, | ||||
effective-by (the profile-type parameter has predefined values. | ||||
The new event header parameters do not) | ||||
The following table illustrates the additions to the IANA SIP Header | ||||
Field Parameters and Parameter Values: (Note to RFC Editor: Please | ||||
fill in XXXX with the RFC number of this specification) | ||||
Predefined | Package or Template-Package: This is a package | |||
Header Field Parameter Name Values Reference | ||||
---------------------------- --------------- --------- --------- | ||||
Event profile-type Yes [RFCXXXX] | ||||
Event vendor No [RFCXXXX] | ||||
Event model No [RFCXXXX] | ||||
Event version No [RFCXXXX] | ||||
Event effective-by No [RFCXXXX] | ||||
8.2. Registry of SIP configuration profile types | Published Document: RFC 6080 | |||
This document requests IANA to register new SIP configuration profile | Persons to Contact: Daniel Petrie <dan.ietf@SIPez.com>, | |||
types at http://www.iana.org/assignments/sip-parameters under "SIP | Sumanth Channabasappa <sumanth@cablelabs.com> | |||
Configuration Profile Types". | ||||
SIP configuration profile types allocations fall under the category | New event header parameters: profile-type, vendor, model, version, | |||
"Specification Required", as explained in "Guidelines for Writing an | effective-by (The profile-type parameter has predefined values. | |||
IANA Considerations Section in RFCs" ([RFC5226]). | The new event header parameters do not.) | |||
Registrations with the IANA MUST include a the profile type, and a | The following table illustrates the additions to the IANA SIP "Header | |||
published document which describes its purpose and usage. | Field Parameters and Parameter Values" registry: | |||
Predefined | ||||
Header Field Parameter Name Values Reference | ||||
---------------------------- --------------- ---------- --------- | ||||
Event profile-type Yes [RFC6080] | ||||
Event vendor No [RFC6080] | ||||
Event model No [RFC6080] | ||||
Event version No [RFC6080] | ||||
Event effective-by No [RFC6080] | ||||
8.2. Registry of SIP Configuration Profile Types | ||||
IANA has registered new SIP configuration profile types at | ||||
http://www.iana.org in the "SIP Configuration Profile Types" | ||||
registry. | ||||
The registration procedures are "Specification Required", as | ||||
explained in "Guidelines for Writing an IANA Considerations Section | ||||
in RFCs" ([RFC5226]). | ||||
Registrations with the IANA MUST include the profile type, and a | ||||
published document that describes its purpose and usage. | ||||
As this document specifies three SIP configuration profile types, the | As this document specifies three SIP configuration profile types, the | |||
initial IANA registration will contain the information shown in the | initial IANA registration contains the information shown in the table | |||
table below. It also demonstrates the type of information maintained | below. | |||
by the IANA. | ||||
Profile Type Reference | Profile Type Reference | |||
-------------- --------- | -------------- --------- | |||
local-network [RFCXXXX] | local-network [RFC6080] | |||
device [RFCXXXX] | device [RFC6080] | |||
user [RFCXXXX] | user [RFC6080] | |||
CONTACT: | ||||
------- | ||||
sumanth@cablelabs.com | ||||
Daniel Petrie dan.ietf AT SIPez DOT com | ||||
Note to RFC editor: Please replace RFCXXXX with the RFC number | ||||
assigned to this document. | ||||
9. Security Considerations | 9. Security Considerations | |||
The framework specified in this document specifies profile delivery | The framework specified in this document specifies profile delivery | |||
stages, an event package and three profile types to enable profile | stages, an event package, and three profile types to enable profile | |||
delivery. The profile delivery stages are: enrollment, content | delivery. The profile delivery stages are enrollment, content | |||
retrieval, and change notification. The event package helps with | retrieval, and change notification. The event package helps with | |||
enrollment and change notifications. Each profile type allows for | enrollment and change notifications. Each profile type allows for | |||
profile retrieval from a PDS belonging to a specific provider. | profile retrieval from a PDS belonging to a specific provider. | |||
Enrollment allows a device to request, and if successful, enroll with | Enrollment allows a device to request, and if successful, enroll with | |||
a PDS to obtain profile data. To transmit the request the device | a PDS to obtain profile data. To transmit the request the device | |||
relies on configured, cached or discovered data. Such data includes | relies on configured, cached, or discovered data. Such data includes | |||
provider domain names, identities, and credentials. The device | provider domain names, identities, and credentials. The device | |||
either uses configured outbound proxies or discovers the next-hop | either uses configured outbound proxies or discovers the next-hop | |||
entity using [RFC3263] that can result in a SIP proxy or the PDS. It | entity using [RFC3263] that can result in a SIP proxy or the PDS. It | |||
then transmits the request. A SIP Proxy receving the request uses | then transmits the request. A SIP proxy receiving the request uses | |||
the Request-URI and event header contents to route it to a PDS (via | the Request-URI and event header contents to route it to a PDS (via | |||
other SIP proxies, if required). | other SIP proxies, if required). | |||
When a PDS receives the enrollment request, it can either challenge | When a PDS receives the enrollment request, it can either challenge | |||
any contained identity or admit the enrollment. Authorization rules | any contained identity or admit the enrollment. Authorization rules | |||
then decide if the enrollment gets accepted. If accepted, the PDS | then decide if the enrollment gets accepted. If accepted, the PDS | |||
sends an initial notification that contains either the profile data, | sends an initial notification that contains either the profile data, | |||
or content indirection information. The profile data can contain | or content indirection information. The profile data can contain | |||
generic profile data (common across multiple devices) or information | generic profile data (common across multiple devices) or information | |||
specific to an entity (such as the device or a user). If specific to | specific to an entity (such as the device or a user). If specific to | |||
an entity, it may contain sensitive information such as credentials. | an entity, it may contain sensitive information such as credentials. | |||
Disclosure of sensitive data can lead to threats such as | Disclosure of sensitive data can lead to threats such as | |||
impersonation attacks (establishing rogue sessions), theft of service | impersonation attacks (establishing rogue sessions), theft of service | |||
(if services are obtainable), and zombie attacks. It is important | (if services are obtainable), and zombie attacks. It is important | |||
for the device to ensure the authenticity of the PNC and the PCC | for the device to ensure the authenticity of the PNC and the PCC | |||
since impersonation of the SIP service provider can lead to Denial of | since impersonation of the SIP service provider can lead to DoS and | |||
Service and Man-in-the-Middle attacks. | man-in-the-middle (MITM) attacks. | |||
Profile content retrieval allows a device to retrieve profile data | Profile content retrieval allows a device to retrieve profile data | |||
via content indirection from a PCC. This communication is | via content indirection from a PCC. This communication is | |||
accomplished using one of many profile delivery protocols or | accomplished using one of many profile delivery protocols or | |||
frameworks, such as HTTP or HTTPS as specified in this document. | frameworks, such as HTTP or HTTPS as specified in this document. | |||
However, since the profile data returned is subject to the same | However, since the profile data returned is subject to the same | |||
considerations as that sent via profile notification, similar threats | considerations as that sent via profile notification, similar threats | |||
exist. For example, denial of service attacks (rogue devices bombard | exist. For example, DoS attacks (rogue devices bombard the PCC with | |||
the PCC with requests for a specific profile) and attempts to modify | requests for a specific profile) and attempts to modify erroneous | |||
erroneous data onto the PCC (since the location and format may be | data onto the PCC (since the location and format may be known). | |||
known). Thus, for the delivery of any sensitive profile data, | Thus, for the delivery of any sensitive profile data, authentication | |||
authentication of the entity requesting profile data is required. It | of the entity requesting profile data is required. It is also | |||
is also important for the requesting entity to authenticate the | important for the requesting entity to authenticate the profile | |||
profile source via content indirection, and ensure that the sensitive | source via content indirection and ensure that the sensitive profile | |||
profile data is protected via data integrity. For sensitive data | data is protected via data integrity. For sensitive data that should | |||
that should not be disclosed to unauthorized parties, data | not be disclosed to unauthorized parties, data confidentiality is | |||
confidentiality is also required. | also required. | |||
The following sub-sections highlight the security considerations that | The following subsections highlight the security considerations that | |||
are specific to each profile type. | are specific to each profile type. | |||
9.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 that requests the local-network | that is provided to every device that requests the local-network | |||
profile. Such a PDS may not implement any authentication | profile. Such a PDS may not implement any authentication | |||
requirements or TLS. | requirements or TLS. | |||
Alternatively, certain deployments may require the entities - device | Alternatively, certain deployments may require the entities -- device | |||
and the PDS - to authenticate each other prior to successful profile | and the PDS -- to authenticate each other prior to successful profile | |||
enrollment. Such networks may pre-configure user identities to the | enrollment. Such networks may pre-configure user identities to the | |||
devices and allow user-specific local-network profiles. In such | devices and allow user-specific local-network profiles. In such | |||
networks the PDS will support digest authentication, and the devices | networks, the PDS will support digest authentication, and the devices | |||
are configured with user identities and credentials as specified in | are configured with user identities and credentials as specified in | |||
Section 5.3.1. If sensitive profile data is being transmitted, the | Section 5.3.1. If sensitive profile data is being transmitted, the | |||
user identity is a SIPS URI that results in TLS with the next-hop | user identity is a SIPS URI that results in TLS with the next-hop | |||
(which is authenticated), and digest authentication is used by the | (which is authenticated), and digest authentication is used by the | |||
PDS and the device. | PDS and the device. | |||
This framework supports both use cases and any variations in-between. | This framework supports both use cases and any variations in between. | |||
However, devices obtaining local-network profiles from an | However, devices obtaining local-network profiles from an | |||
unauthenticated PDS are cautioned against potential Man-in-the-Middle | unauthenticated PDS are cautioned against potential MITM or PDS | |||
or PDS impersonation attacks. This framework requires that a device | impersonation attacks. This framework requires that a device reject | |||
reject sensitive data, such as credentials, from unauthenticated | sensitive data, such as credentials, from unauthenticated local- | |||
local-network sources. It also prohibits devices from responding to | network sources. It also prohibits devices from responding to | |||
authentication challenges in the absence of TLS on all hops as a | authentication challenges in the absence of TLS on all hops as a | |||
result of using a SIPS URI. Responding to unauthenticated challenges | result of using a SIPS URI. Responding to unauthenticated challenges | |||
allows for dictionary attacks that can reveal weak passwords. The | allows for dictionary attacks that can reveal weak passwords. The | |||
only exception to accepting such sensitive data without | only exception to accepting such sensitive data without | |||
authentication of the PDS is in the case of bootstrapping (see | authentication of the PDS is in the case of bootstrapping (see | |||
Section 5.3.1). In the case of bootstrapping, the methods employed | Section 5.3.1). In the case of bootstrapping, the methods employed | |||
need to be aware of potential security threats such as impersonation. | need to be aware of potential security threats such as impersonation. | |||
The use of SIP Identity is useful for the device to validate | SIP Identity is useful for the device to validate notifications in | |||
notifications in the absence of a secure channel such as TLS when a | the absence of a secure channel such as TLS when a SIPS URI is used. | |||
SIPS URI is used. In such cases the device can validate the SIP | In such cases, the device can validate the SIP Identity header to | |||
Identity header to verify the source of the profile notification, and | verify the source of the profile notification, and the source of the | |||
the source of the profile data when content indirection is not used. | profile data when content indirection is not used. However, the | |||
However, the presence of the header does not guarantee the validity | presence of the header does not guarantee the validity of the data. | |||
of the data. It verifies the source and confirms data integrity, but | It verifies the source and confirms data integrity, but the data | |||
the data obtained from an undesired source may still be invalid, | obtained from an undesired source may still be invalid, e.g., invalid | |||
e.g., invalid outbound proxy information, resulting in Denial of | outbound proxy information, resulting in DoS. Thus, devices | |||
Service. Thus, devices requesting the local-network profile from | requesting the local-network profile from unknown networks need to be | |||
unknown networks need to be prepared to discard information that | prepared to discard information that prevent retrieval of other, | |||
prevent retrieval of other, required, profiles. | required, profiles. | |||
9.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 such as trials, self-subscription (not to be confused | for purposes such as trials, self-subscription (not to be confused | |||
with [RFC3265]) and emergency services ([I-D.ietf-ecrit-phonebcp]). | with [RFC3265]), and emergency services [PHONEBCP]. | |||
This framework allows for the device profile to be used for | This framework allows the device profile to be used for bootstrapping | |||
bootstrapping a device. Such bootstrapping profile data may contain | a device. Such bootstrapping profile data may contain enough | |||
enough information to connect to a Provider. For example, it may | information to connect to a Provider. For example, it may enable the | |||
enable the device to communicate with a device provider, allowing for | device to communicate with a device provider, allowing for trial or | |||
trial or self-subscription services via visual or audio interfaces | self-subscription services via visual or audio interfaces (e.g., | |||
(e.g., interactive voice response), or customer service | interactive voice response), or customer service representatives. | |||
representatives. The profile data may also allow the device a choice | The profile data may also allow the device a choice of device | |||
of device providers and allow the end-user to choose one. The | providers and allow the end-user to choose one. The profile data may | |||
profile data may also contain identities and credentials (temporary | also contain identities and credentials (temporary or long-term) that | |||
or long-term) that can be used to obtain further profile data from | can be used to obtain further profile data from the network. This | |||
the network. This framework recommends the use of the SIP Identity | framework recommends the use of the SIP Identity header by the PDS. | |||
header by the PDS. However, to be able to validate the SIP Identity | However, to be able to validate the SIP Identity header, the device | |||
header, the device needs to be pre-configured with the knowledge of | needs to be pre-configured with the knowledge of allowable domains or | |||
allowable domains or certificates for validation (e.g., using PKI). | certificates for validation (e.g., using PKI). If not, the device | |||
If not, the device can still guarantee header and body integrity if | can still guarantee header and body integrity if the profile data | |||
the profile data contains the domain certificate (but the data can | contains the domain certificate (but the data can still be invalid or | |||
still be invalid or malicious). In such cases, devices supporting | malicious). In such cases, devices supporting user interfaces may | |||
user interfaces may obtain confirmation from the user trying to | obtain confirmation from the user trying to bootstrap the device | |||
bootstrap the device (confirming header and body integrity). | (confirming header and body integrity). However, when the SIP | |||
However, when the SIP Identity header is not present, or the device | Identity header is not present, or the device is not capable of | |||
is not capable of validating it, the bootstrapping data is | validating it, the bootstrapping data is unauthenticated and obtained | |||
unauthenticated and obtained without any integrity protection. Such | without any integrity protection. Such bootstrapping data, however, | |||
bootstrapping data, however, may contain only temporary credentials | may contain only temporary credentials (SIPS URI and digest | |||
(SIPS URI and digest credentials) that can be used to reconnect to | credentials) that can be used to reconnect to the network to ensure | |||
the network to ensure data integrity and data confidentiality prior | data integrity and data confidentiality prior to obtaining long-term | |||
to obtaining long-term credentials. It is to be noted that such | credentials. It is to be noted that such devices are at the mercy of | |||
devices are at the mercy of the network they request the device | the network they request the device profile from. If they are | |||
profile from. If they are initialized in a rogue network, or get | initialized in a rogue network, or get hijacked by a rogue PDS, the | |||
hijacked by a rogue PDS, the end-user may be left without desired | end-user may be left without desired device operation or, worse, | |||
device operation or, worse, unwanted operation. To mitigate such | unwanted operation. To mitigate such factors the device provider may | |||
factors the device provider may communicate temporary credentials | communicate temporary credentials (e.g., passwords that can be | |||
(e.g., passwords that can be entered via an interface) or permanent | entered via an interface) or permanent credentials (e.g., a USB | |||
credentials (e.g., a USB device) to the end-user for connectivity. | device) to the end-user for connectivity. If such methods are used, | |||
If such methods are used, those credentials MUST be quickly replaced | those credentials MUST be quickly replaced by large-entropy | |||
by large-entropy credentials, to minimize the impact of dictionary | credentials, to minimize the impact of dictionary attacks. Future | |||
attacks. Future enhancements to this framework may specify device | enhancements to this framework may specify device capabilities that | |||
capabilities that allow for authentication without any provider | allow for authentication without any provider-specific configuration | |||
specific configuration (e.g., X.509 certificates using PKI can allow | (e.g., X.509 certificates using PKI can allow for authentication by | |||
for authentication by any provider with access to the CA | any provider with access to the CA certificate). Alternatively, the | |||
certificate). Alternatively, the device may be pre-configured with | device may be pre-configured with credentials for use with content | |||
with credentials for use with content indirection mechanisms. In | indirection mechanisms. In such circumstances a PDS can use secure | |||
such circumstances a PDS can use secure content indirection | content indirection mechanism, such as HTTPS, to provide the | |||
mechanism, such as HTTPS, to provide the bootstrapping data. | bootstrapping data. | |||
Once a device is associated with a device provider the device profile | Once a device is associated with a device provider the device profile | |||
is vital to device operation. This is because the device profile can | is vital to device operation. This is because the device profile can | |||
contain important operational information such as users that are to | contain important operational information such as users that are to | |||
be allowed access (white-list or black-list), user credentials (if | be allowed access (white-list or black-list), user credentials (if | |||
required) and other sensitive information. Thus, it is necessary to | required) and other sensitive information. Thus, it is necessary to | |||
ensure that any device profile containing sensitive information is | ensure that any device profile containing sensitive information is | |||
obtained via an authenticated source, with integrity protection, and | obtained via an authenticated source, with integrity protection, and | |||
delivered to an authenticated device. For sensitive information such | delivered to an authenticated device. For sensitive information such | |||
as credentials, data confidentiality is also required. The framework | as credentials, data confidentiality is also required. The framework | |||
skipping to change at page 53, line 10 | skipping to change at page 50, line 46 | |||
authenticated entities except while it is being bootstrapped. In | authenticated entities except while it is being bootstrapped. In | |||
cases where data confidentiality needs to be mandated for | cases where data confidentiality needs to be mandated for | |||
notifications, the device provider can configure the device with a | notifications, the device provider can configure the device with a | |||
SIPS URI, to be used as the Subscription URI, during profile | SIPS URI, to be used as the Subscription URI, during profile | |||
enrollment. The framework also requires a PDS presenting sensitive | enrollment. The framework also requires a PDS presenting sensitive | |||
profile data to use digest authentication. This ensures that the | profile data to use digest authentication. This ensures that the | |||
data is delivered to an authenticated entity. Authentication of | data is delivered to an authenticated entity. Authentication of | |||
profile retrieval via content indirection for sensitive profiles is | profile retrieval via content indirection for sensitive profiles is | |||
via HTTPS utilizing HTTP digest. | via HTTPS utilizing HTTP digest. | |||
9.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. PDSs are required to reject user profile | SIP service provider. PDSs are required to reject user profile | |||
enrollment requests for any users that are unknown in the network. | enrollment requests for any users that are unknown in the network. | |||
For known user AoRs that are allowed to retrieve profiles, the | For known user AoRs that are allowed to retrieve profiles, the | |||
security considerations are similar to that of the device profile | security considerations are similar to that of the device profile | |||
(except for bootstrapping). | (except for bootstrapping). | |||
10. 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, Henning Schulzrinne, | the following individuals: Jonathan Rosenberg, Henning Schulzrinne, | |||
Cullen Jennings, Rohan Mahy, Rich Schaaf, Volker Hilt, Adam Roach, | Cullen Jennings, Rohan Mahy, Rich Schaaf, Volker Hilt, Adam Roach, | |||
skipping to change at page 53, line 34 | skipping to change at page 51, line 24 | |||
Cullen Jennings, Rohan Mahy, Rich Schaaf, Volker Hilt, Adam Roach, | Cullen Jennings, Rohan Mahy, Rich Schaaf, Volker Hilt, Adam Roach, | |||
Hisham Khartabil, Henry Sinnreich, Martin Dolly, John Elwell, Elliot | Hisham Khartabil, Henry Sinnreich, Martin Dolly, John Elwell, Elliot | |||
Eichen, Robert Liao, Dale Worley, Francois Audet, Roni Even, Jason | Eichen, Robert Liao, Dale Worley, Francois Audet, Roni Even, Jason | |||
Fischl, Josh Littlefield, and Nhut Nguyen. | Fischl, Josh Littlefield, and Nhut Nguyen. | |||
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 (Overview, | contributions to various sections: Josh Littlefield (Overview, | |||
Section 6), Peter Blatherwick (Section 6), Cullen Jennings | Section 6), Peter Blatherwick (Section 6), Cullen Jennings | |||
(Security), Sam Ganesan (Section 6) and Mary Barnes (layout, Section | (Security), Sam Ganesan (Section 6), and Mary Barnes (layout, Section | |||
6). | 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, Jason Fischl, Alvin Jiang, | |||
from Counterpath, Alvin Jiang of Engin and Francois Audet from | and Francois Audet. | |||
Nortel. | ||||
The following SIPPING WG members are thanked for numerous reviews, | The following SIPPING WG members are thanked for numerous reviews, | |||
comments and recommendations: John Elwell, Donald Lukacs, Roni Even, | comments and recommendations: John Elwell, Donald Lukacs, Roni Even, | |||
David Robbins, Shida Schubert, and Eugene Nechamkin. The editor | David Robbins, Shida Schubert, and Eugene Nechamkin. The editor | |||
would also like to extend a special thanks to the comments and | would also like to extend a special thanks to the comments and | |||
recommendations provided by the SIPPING WG, specifically Keith Drage | recommendations provided by the SIPPING WG, specifically Keith Drage | |||
(restructuring proposal) and John Elwell (numerous reviews and | (restructuring proposal) and John Elwell (numerous reviews and | |||
recommendations). | recommendations). | |||
Additionally, appreciation is also due to Peter Koch for expert DNS | Additionally, appreciation is also due to Peter Koch for expert DNS | |||
advice. | advice. | |||
And finally, sincere appreciation is extended to the chairs (Mary | Finally, sincere appreciation is extended to the chairs (Mary Barnes | |||
Barnes and Gonzalo Camarillo), the past/current Area Directors | and Gonzalo Camarillo); the past/current Area Directors (Cullen | |||
(Cullen Jennings, Jon Peterson, and Robert Sparks) for facilitating | Jennings, Jon Peterson, and Robert Sparks) for facilitating | |||
discussions, reviews and contributions; and, the expert reviewers | discussions, reviews, and contributions; and, the expert reviewers | |||
from the IESG (Peter McCann, Catherine Meadows). | from the IESG (Peter McCann, Catherine Meadows). | |||
11. References | 11. References | |||
11.1. Normative References | 11.1. Normative References | |||
[FIPS-180-3] | [FIPS-180-3] National Institute of Standards and Technology (NIST), | |||
National Institute of Standards and Technology (NIST), | "Secure Hash Standard (SHS)", FIPS PUB 180-3, | |||
"Secure Hash Standard (SHS)", FIPS PUB 180-3, | October 2008. | |||
October 2008. | ||||
[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. | |||
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, | |||
Leach, P., Luotonen, A., and L. Stewart, "HTTP | S., Leach, P., Luotonen, A., and L. Stewart, "HTTP | |||
Authentication: Basic and Digest Access Authentication", | Authentication: Basic and Digest Access | |||
RFC 2617, June 1999. | Authentication", RFC 2617, June 1999. | |||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., | |||
A., Peterson, J., Sparks, R., Handley, M., and E. | Johnston, A., Peterson, J., Sparks, R., Handley, M., | |||
Schooler, "SIP: Session Initiation Protocol", RFC 3261, | and E. Schooler, "SIP: Session Initiation Protocol", | |||
June 2002. | RFC 3261, June 2002. | |||
[RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation | [RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation | |||
Protocol (SIP): Locating SIP Servers", RFC 3263, | Protocol (SIP): Locating SIP Servers", RFC 3263, | |||
June 2002. | June 2002. | |||
[RFC3265] Roach, A., "Session Initiation Protocol (SIP)-Specific | [RFC3265] Roach, A., "Session Initiation Protocol (SIP)-Specific | |||
Event Notification", RFC 3265, June 2002. | Event Notification", RFC 3265, June 2002. | |||
[RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration | [RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host | |||
Protocol (DHCPv6) Options for Session Initiation Protocol | Configuration Protocol (DHCPv6) Options for Session | |||
(SIP) Servers", RFC 3319, July 2003. | Initiation Protocol (SIP) Servers", RFC 3319, | |||
July 2003. | ||||
[RFC3361] Schulzrinne, H., "Dynamic Host Configuration Protocol | [RFC3361] Schulzrinne, H., "Dynamic Host Configuration Protocol | |||
(DHCP-for-IPv4) Option for Session Initiation Protocol | (DHCP-for-IPv4) Option for Session Initiation Protocol | |||
(SIP) Servers", RFC 3361, August 2002. | (SIP) Servers", RFC 3361, August 2002. | |||
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | |||
Unique IDentifier (UUID) URN Namespace", RFC 4122, | Unique IDentifier (UUID) URN Namespace", RFC 4122, | |||
July 2005. | July 2005. | |||
[RFC4474] Peterson, J. and C. Jennings, "Enhancements for | [RFC4474] Peterson, J. and C. Jennings, "Enhancements for | |||
Authenticated Identity Management in the Session | Authenticated Identity Management in the Session | |||
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. | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing | |||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | an IANA Considerations Section in RFCs", BCP 26, | |||
May 2008. | RFC 5226, May 2008. | |||
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF", STD 68, RFC 5234, January 2008. | Specifications: ABNF", STD 68, RFC 5234, January 2008. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer | |||
(TLS) Protocol Version 1.2", RFC 5246, August 2008. | Security (TLS) Protocol Version 1.2", RFC 5246, | |||
August 2008. | ||||
[RFC5626] Jennings, C., Mahy, R., and F. Audet, "Managing Client- | [RFC5626] Jennings, C., Mahy, R., and F. Audet, "Managing Client- | |||
Initiated Connections in the Session Initiation Protocol | Initiated Connections in the Session Initiation | |||
(SIP)", RFC 5626, October 2009. | Protocol (SIP)", RFC 5626, October 2009. | |||
11.2. Informative References | 11.2. Informative References | |||
[I-D.ietf-ecrit-phonebcp] | [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 | |||
Communications Services in support of Emergency Calling", | Calling", Work in Progress, October 2010. | |||
draft-ietf-ecrit-phonebcp-15 (work in progress), | ||||
July 2010. | ||||
[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 | |||
Extensions", RFC 2132, March 1997. | Vendor 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. | |||
[RFC4634] Eastlake, D. and T. Hansen, "US Secure Hash Algorithms | [RFC4634] Eastlake, D. and T. Hansen, "US Secure Hash Algorithms | |||
(SHA and HMAC-SHA)", RFC 4634, July 2006. | (SHA and HMAC-SHA)", RFC 4634, July 2006. | |||
[RFC4825] Rosenberg, J., "The Extensible Markup Language (XML) | [RFC4825] Rosenberg, J., "The Extensible Markup Language (XML) | |||
Configuration Access Protocol (XCAP)", RFC 4825, May 2007. | Configuration Access Protocol (XCAP)", RFC 4825, | |||
May 2007. | ||||
Authors' Addresses | Authors' Addresses | |||
Daniel Petrie | Daniel Petrie | |||
SIPez LLC. | SIPez LLC | |||
246A Park Ave | 246A Park Ave | |||
Arlington, MA 02476 | Arlington, MA 02476 | |||
USA | USA | |||
Email: dan.ietf AT SIPez DOT com | EMail: dan.ietf@SIPez.com | |||
URI: http://www.SIPez.com/ | URI: http://www.SIPez.com/ | |||
Sumanth Channabasappa (Editor) | Sumanth Channabasappa (editor) | |||
CableLabs | CableLabs | |||
858 Coal Creek Circle | 858 Coal Creek Circle | |||
Louisville, Co 80027 | Louisville, CO 80027 | |||
USA | USA | |||
Email: sumanth@cablelabs.com | EMail: sumanth@cablelabs.com | |||
URI: http://www.cablelabs.com/ | URI: http://www.cablelabs.com/ | |||
End of changes. 266 change blocks. | ||||
684 lines changed or deleted | 712 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |