| < draft-ietf-sipping-config-framework-04.txt | draft-ietf-sipping-config-framework-05.txt > | |||
|---|---|---|---|---|
| SIPPING D. Petrie | SIPPING D. Petrie | |||
| Internet-Draft Pingtel Corp. | Internet-Draft Pingtel Corp. | |||
| Expires: January 17, 2005 July 19, 2004 | Expires: April 24, 2005 October 24, 2004 | |||
| A Framework for Session Initiation Protocol User Agent Profile | A Framework for Session Initiation Protocol User Agent Profile | |||
| Delivery | Delivery | |||
| draft-ietf-sipping-config-framework-04.txt | draft-ietf-sipping-config-framework-05.txt | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is in full conformance with | By submitting this Internet-Draft, I certify that any applicable | |||
| all provisions of Section 10 of RFC2026. | patent or other IPR claims of which I am aware have been disclosed, | |||
| and any of which I become aware will be disclosed, in accordance with | ||||
| RFC 3668. | ||||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as | other groups may also distribute working documents as | |||
| Internet-Drafts. | Internet-Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on January 17, 2005. | This Internet-Draft will expire on April 24, 2005. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The Internet Society (2004). All Rights Reserved. | Copyright (C) The Internet Society (2004). All Rights Reserved. | |||
| Abstract | Abstract | |||
| This document defines the application of a set of protocols for | This document defines the application of a set of protocols for | |||
| providing profile data to SIP user agents. The objective is to | providing profile data to SIP user agents. The objective is to | |||
| define a means for automatically providing profile data a user agent | define a means for automatically providing profile data a user agent | |||
| skipping to change at page 2, line 15 ¶ | skipping to change at page 2, line 17 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1 Requirements Terminology . . . . . . . . . . . . . . . . . 4 | 2.1 Requirements Terminology . . . . . . . . . . . . . . . . . 4 | |||
| 2.2 Profile Delivery Framework Terminology . . . . . . . . . . 5 | 2.2 Profile Delivery Framework Terminology . . . . . . . . . . 5 | |||
| 2.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Profile Change Event Notification Package . . . . . . . . . 8 | 3. Profile Change Event Notification Package . . . . . . . . . 8 | |||
| 3.1 Event Package Name . . . . . . . . . . . . . . . . . . . . 8 | 3.1 Event Package Name . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.2 Event Package Parameters . . . . . . . . . . . . . . . . . 8 | 3.2 Event Package Parameters . . . . . . . . . . . . . . . . . 8 | |||
| 3.3 SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 11 | 3.3 SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.4 Subscription Duration . . . . . . . . . . . . . . . . . . 11 | 3.4 Subscription Duration . . . . . . . . . . . . . . . . . . 12 | |||
| 3.5 NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 11 | 3.5 NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.6 Notifier processing of SUBSCRIBE requests . . . . . . . . 12 | 3.6 Notifier processing of SUBSCRIBE requests . . . . . . . . 13 | |||
| 3.7 Notifier generation of NOTIFY requests . . . . . . . . . . 13 | 3.7 Notifier generation of NOTIFY requests . . . . . . . . . . 14 | |||
| 3.8 Subscriber processing of NOTIFY requests . . . . . . . . . 13 | 3.8 Subscriber processing of NOTIFY requests . . . . . . . . . 14 | |||
| 3.9 Handling of forked requests . . . . . . . . . . . . . . . 14 | 3.9 Handling of forked requests . . . . . . . . . . . . . . . 15 | |||
| 3.10 Rate of notifications . . . . . . . . . . . . . . . . . 14 | 3.10 Rate of notifications . . . . . . . . . . . . . . . . . 15 | |||
| 3.11 State Agents . . . . . . . . . . . . . . . . . . . . . . 14 | 3.11 State Agents . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 3.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . 14 | 3.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 3.13 Use of URIs to Retrieve State . . . . . . . . . . . . . 15 | 3.13 Use of URIs to Retrieve State . . . . . . . . . . . . . 16 | |||
| 3.13.1 Device URIs . . . . . . . . . . . . . . . . . . . . 15 | 3.13.1 Device URIs . . . . . . . . . . . . . . . . . . . . 17 | |||
| 3.13.2 User and Application URIs . . . . . . . . . . . . . 17 | 3.13.2 User and Application URIs . . . . . . . . . . . . . 18 | |||
| 3.13.3 Local Network URIs . . . . . . . . . . . . . . . . . 17 | 3.13.3 Local Network URIs . . . . . . . . . . . . . . . . . 18 | |||
| 4. Profile Delivery Framework Details . . . . . . . . . . . . . 17 | 4. Profile Delivery Framework Details . . . . . . . . . . . . . 19 | |||
| 4.1 Discovery of Subscription URI . . . . . . . . . . . . . . 17 | 4.1 Discovery of Subscription URI . . . . . . . . . . . . . . 19 | |||
| 4.1.1 Discovery of Local Network URI . . . . . . . . . . . . 17 | 4.1.1 Discovery of Local Network URI . . . . . . . . . . . . 19 | |||
| 4.1.2 Discovery of Device URI . . . . . . . . . . . . . . . 18 | 4.1.2 Discovery of Device URI . . . . . . . . . . . . . . . 20 | |||
| 4.1.3 Discovery of User and Application URI . . . . . . . . 19 | 4.1.3 Discovery of User and Application URI . . . . . . . . 22 | |||
| 4.2 Enrollment with Profile Server . . . . . . . . . . . . . . 19 | 4.2 Enrollment with Profile Server . . . . . . . . . . . . . . 22 | |||
| 4.3 Notification of Profile Changes . . . . . . . . . . . . . 20 | 4.3 Notification of Profile Changes . . . . . . . . . . . . . 23 | |||
| 4.4 Retrieval of Profile Data . . . . . . . . . . . . . . . . 20 | 4.4 Retrieval of Profile Data . . . . . . . . . . . . . . . . 23 | |||
| 4.5 Upload of Profile Changes . . . . . . . . . . . . . . . . 20 | 4.5 Upload of Profile Changes . . . . . . . . . . . . . . . . 23 | |||
| 4.6 Usage of XCAP with the Profile Package . . . . . . . . . . 20 | 4.6 Usage of XCAP with the Profile Package . . . . . . . . . . 23 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . 23 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . 26 | |||
| 5.1 SIP Event Package . . . . . . . . . . . . . . . . . . . . 23 | 5.1 SIP Event Package . . . . . . . . . . . . . . . . . . . . 26 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . 23 | 6. Security Considerations . . . . . . . . . . . . . . . . . . 26 | |||
| 6.1 Symmetric Encryption of Profile Data . . . . . . . . . . . 23 | 6.1 Symmetric Encryption of Profile Data . . . . . . . . . . . 27 | |||
| 7. Change History . . . . . . . . . . . . . . . . . . . . . . . 24 | 7. Change History . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 7.1 Changes from draft-ietf-sipping-config-framework-03.txt . 24 | 7.1 Changes from draft-ietf-sipping-config-framework-04.txt . 27 | |||
| 7.2 Changes from draft-ietf-sipping-config-framework-02.txt . 24 | 7.2 Changes from draft-ietf-sipping-config-framework-03.txt . 27 | |||
| 7.3 Changes from draft-ietf-sipping-config-framework-01.txt . 24 | 7.3 Changes from draft-ietf-sipping-config-framework-02.txt . 28 | |||
| 7.4 Changes from draft-ietf-sipping-config-framework-00.txt . 25 | 7.4 Changes from draft-ietf-sipping-config-framework-01.txt . 28 | |||
| 7.5 Changes from | 7.5 Changes from draft-ietf-sipping-config-framework-00.txt . 28 | |||
| draft-petrie-sipping-config-framework-00.txt . . . . . . . 25 | 7.6 Changes from | |||
| 7.6 Changes from draft-petrie-sip-config-framework-01.txt . . 25 | draft-petrie-sipping-config-framework-00.txt . . . . . . . 29 | |||
| 7.7 Changes from draft-petrie-sip-config-framework-00.txt . . 25 | 7.7 Changes from draft-petrie-sip-config-framework-01.txt . . 29 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 | 7.8 Changes from draft-petrie-sip-config-framework-00.txt . . 29 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . 28 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| A. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 28 | Author's Address . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| Intellectual Property and Copyright Statements . . . . . . . 29 | A. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| Intellectual Property and Copyright Statements . . . . . . . 33 | ||||
| 1. Motivation | 1. Motivation | |||
| Today all SIP user agent implementers use proprietary means of | Today all SIP user agent implementers use proprietary means of | |||
| delivering user or device profiles to the user agent. The profile | delivering user, device, application and local network policy | |||
| delivery framework defined in this document is intended to enable a | profiles to the user agent. The profile delivery framework defined | |||
| first phase migration to a standard means of providing profiles to | in this document is intended to enable a first phase migration to a | |||
| SIP user agents. It is expected that UA implementers will be able to | standard means of providing profiles to SIP user agents. It is | |||
| use this framework as a means of delivering their existing | expected that UA implementers will be able to use this framework as a | |||
| proprietary user and device data profiles (i.e. using their existing | means of delivering their existing proprietary data profiles (i.e. | |||
| proprietary binary or text formats). This in itself is a tremendous | using their existing proprietary binary or text formats). This in | |||
| advantage in that a SIP environment can use a single profile delivery | itself is a tremendous advantage in that a SIP environment can use a | |||
| server for profile data to user agents from multiple implementers. | single profile delivery server for profile data to user agents from | |||
| Follow-on standardization activities can: | multiple implementers. Follow-on standardization activities can: | |||
| 1. define a standard profile content format framework (e.g. XML | 1. define a standard profile content format framework (e.g. XML | |||
| with namespaces [W3C.REC-xml-names11-20040204] or name-value | with namespaces [W3C.REC-xml-names11-20040204] or name-value | |||
| pairs [RFC0822]). | pairs [RFC0822]). | |||
| 2. specify the content (i.e. name the profile data parameters, xml | 2. specify the content (i.e. name the profile data parameters, xml | |||
| schema, name spaces) of the data profiles. | schema, name spaces) of the data profiles. | |||
| One of the objectives of the framework described in this document is | One of the objectives of the framework described in this document is | |||
| to provide a start up experience similar to that of users of an | to provide a start up experience similar to that of users of an | |||
| analog telephone. When you plug in an analog telephone it just works | analog telephone. When you plug in an analog telephone it just works | |||
| (assuming the line is live and the switch has been provisioned). | (assuming the line is live and the switch has been provisioned). | |||
| There is no end user configuration required to make analog phone | There is no end user configuration required to make analog phone | |||
| work, at least in a basic sense. So the objective here is to be able | work, at least in a basic sense. So the objective here is to be able | |||
| to take a new SIP user agent out of the box, plug it in or install | to take a new SIP user agent out of the box, plug it in or install | |||
| the software and have it get its profiles without human intervention | the software and have it get its profiles without human intervention | |||
| other than security measures. This is necessary for cost effective | other than security measures. This is necessary for cost effective | |||
| deployment of large numbers of user agents. | deployment of large numbers of user agents. | |||
| Another objective is to provide a scalable means for ongoing | Another objective is to provide a scalable means for ongoing | |||
| administration of profiles. Administrators and users are likely to | administration of profiles. Administrators and users are likely to | |||
| want to make changes to user and device profiles. | want to make changes to profiles. | |||
| Additional requirements for the framework defined in this document | Additional requirements for the framework defined in this document | |||
| are described in: [I-D.ietf-sipping-ua-prof-framewk-reqs], | are described in: [I-D.ietf-sipping-ua-prof-framewk-reqs], | |||
| [I-D.sinnreich-sipdev-req] | [I-D.sinnreich-sipdev-req] | |||
| 2. Introduction | 2. Introduction | |||
| 2.1 Requirements Terminology | 2.1 Requirements Terminology | |||
| Keywords "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT" and | Keywords "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT" and | |||
| "MAY" that appear in this document are to be interpreted as described | "MAY" that appear in this document are to be interpreted as described | |||
| in RFC 2119[RFC2119]. | in [RFC2119]. | |||
| 2.2 Profile Delivery Framework Terminology | 2.2 Profile Delivery Framework Terminology | |||
| profile - data set specific to a user or device. | profile - data set specific to a user, device, user's application or | |||
| device - SIP user agent, either software or hardware appliance. | the local network. | |||
| device - software or hardware appliance containing one or more SIP | ||||
| user agent. | ||||
| profile content server - The server that provides the content of the | profile content server - The server that provides the content of the | |||
| profiles using the protocol specified by the URL scheme. | profiles using the protocol specified by the URI scheme. | |||
| notifier - The SIP user agent server which processes SUBSCRIBE | notifier - As defined in [RFC3265] the SIP user agent server which | |||
| requests for events and sends NOTIFY requests with profile data or | processes SUBSCRIBE requests for events and sends NOTIFY requests | |||
| URI(s) point to the data. | with profile data or URI(s) that point to the data. | |||
| profile delivery server - The logical collection of the SIP notifier | profile delivery server - The logical collection of the notifier and | |||
| and the server which provides the contents of the profile URI(s). | the server which provides the contents of the notification either | |||
| directly in the NOTIFY requests or indirectly via profile URI(s). | ||||
| 2.3 Overview | 2.3 Overview | |||
| The profile life cycle can be described by five functional steps. | The profile life cycle can be described by five functional steps. | |||
| These steps are not necessarily discrete. However it is useful to | These steps are not necessarily discrete. However it is useful to | |||
| describe these steps as logically distinct. These steps are named as | describe these steps as logically distinct. These steps are named as | |||
| follows: | follows: | |||
| Discovery - discover a profile delivery server | Discovery - discover a profile delivery server | |||
| Enrollment - enroll with the profile delivery server | Enrollment - enroll with the profile delivery server | |||
| skipping to change at page 5, line 39 ¶ | skipping to change at page 5, line 42 ¶ | |||
| profile delivery server | profile delivery server | |||
| Discovery is the process by which a UA finds the address and port at | Discovery is the process by which a UA finds the address and port at | |||
| which it enrolls with the profile delivery server. As there is no | which it enrolls with the profile delivery server. As there is no | |||
| single discovery mechanism which will work in all network | single discovery mechanism which will work in all network | |||
| environments, a number of discovery mechanisms are defined with a | environments, a number of discovery mechanisms are defined with a | |||
| prescribed order in which the UA tries them until one succeeds. | prescribed order in which the UA tries them until one succeeds. | |||
| Enrollment is the process by which a UA makes itself known to the | Enrollment is the process by which a UA makes itself known to the | |||
| profile delivery server. In enrolling the UA provides identity | profile delivery server. In enrolling the UA provides identity | |||
| information, name requested profile type(s) and supported protocols | information, requested profile type(s) and supported protocols for | |||
| for profile retrieval. It also subscribes to a mechanism for | profile retrieval. It also subscribes to a mechanism for | |||
| notification of profile changes. As a result of enrollment, the UA | notification of profile changes. As a result of enrollment, the UA | |||
| receives the data or the URI for each of the profiles that the | receives the data or the URI for each of the profiles that the | |||
| profile delivery server is able to provide. Each profile type (set) | profile delivery server is able to provide. Each profile type (set) | |||
| requires a separate enrollment or SUBSCRIBE session. | requires a separate enrollment or SUBSCRIBE session. A profile type | |||
| may represent one or more data sets (e.g. one profile data set for | ||||
| each of a user's applications). | ||||
| Profile Retrieval is the process of retrieving the content for each | Profile Retrieval is the process of retrieving the content for each | |||
| of the profiles the UA requested. | of the profiles the UA requested. | |||
| Profile Change Notification is the process by which the profile | Profile Change Notification is the process by which the profile | |||
| delivery server notifies the UA that the content of one or more of | delivery server notifies the UA that the content of one or more of | |||
| the profiles has changed. If the content is provided indirectly the | the profiles has changed. If the content is provided indirectly the | |||
| UA SHOULD retrieve the profile from the specified URI upon receipt of | UA MAY retrieve the profile from the specified URI upon receipt of | |||
| the change notification. | the change notification. | |||
| Profile Upload is the process by which a UA or other entity (e.g. | Profile Change Upload is the process by which a UA or other entity | |||
| OSS, corporate directory or configuration management server) pushes a | (e.g. OSS, corporate directory or configuration management server) | |||
| change to the profile data back up to the profile delivery server. | pushes a change to the profile data back up to the profile delivery | |||
| server. | ||||
| This framework defines a new SIP event package [RFC3265] to solve | This framework defines a new SIP event package [RFC3265] to solve | |||
| enrollment and profile change notification steps. This event packet | enrollment and profile change notification steps. This event package | |||
| defines everything but the mandatory content type. This make this | defines everything but the mandatory content type. This makes this | |||
| event package abstract until the content type is bound. The profile | event package abstract until the content type is bound. The profile | |||
| content type(s) will be defined outside the scope of this document. | content type(s) will be defined outside the scope of this document. | |||
| It is he author's belief that it would be a huge accomplishment if | It is the author's belief that it would be a huge accomplishment if | |||
| all SIP user agent used this framework for delivering their existing | all SIP user agent used this framework for delivering their existing | |||
| proprietary profiles. Even though this does not accomplish | proprietary profiles. Even though this does not accomplish | |||
| interoperability of profiles, it is a big first step in easing the | interoperability of profiles, it is a big first step in easing the | |||
| administration of SIP user agents. The definition of standard | administration of SIP user agents. The definition of standard | |||
| profiles and data set (see [I-D.petrie-sipping-profile-datasets] ) | profiles and data sets (see [I-D.petrie-sipping-profile-datasets] ) | |||
| will enable interoperability as a subsequent step. | will enable interoperability as a subsequent step. | |||
| The question arises as to why SIP should be used for the profile | The question arises as to why SIP should be used for the profile | |||
| delivery framework. In this document SIP is used for only a small | delivery framework. In this document SIP is used for only a small | |||
| portion of the framework. Other existing protocols are more | portion of the framework. Other existing protocols are more | |||
| appropriate for transport of the profile contents (to and from the | appropriate for transport of the profile contents (to and from the | |||
| user agent) and are suggested in this document. The discovery step | user agent) and are suggested in this document. The discovery step | |||
| is simply a specified order and application of existing protocols. | is simply a specified order and application of existing protocols. | |||
| SIP is only needed for the enrollment and change notification | SIP is only needed for the enrollment and change notification | |||
| functionality of the profile delivery framework. In many SIP | functionality of the profile delivery framework. In many SIP | |||
| environments (e.g. carrier/subscriber and multi-site enterprise) | environments (e.g. carrier/subscriber and multi-site enterprise) | |||
| firewall, NAT and IP addressing issues make it difficult to get | firewall, NAT and IP addressing issues make it difficult to get | |||
| messages between the profile delivery server and the user agent | messages between the profile delivery server and the user agent | |||
| requiring the profiles. | requiring the profiles. | |||
| With SIP the users and devices already are assigned globally routable | With SIP the users and devices already are assigned globally routable | |||
| addresses. In addition the firewall and NAT problems are already | addresses. In addition the firewall and NAT problems are already | |||
| presumably solved in the environments in which SIP user agents are to | presumably solved in the environments in which SIP user agents are to | |||
| be used. Therefore SIP is the best solution for allowing the user | be used. Therefore SIP is the best solution for allowing the user | |||
| agent to enroll with the profile delivery server which may require | agent to enroll with the profile delivery server, which may require | |||
| traversal of multiple firewalls and NATs. For the same reason the | traversal of multiple firewalls and NATs. For the same reason the | |||
| notification of profile changes is best solved by SIP. | notification of profile changes is best solved by SIP. It should be | |||
| noted that this document is scoped to providing profiles for devices | ||||
| which contain one or more SIP user agents. This framework may be | ||||
| applied to non-SIP devices, however more general requirements for | ||||
| non-SIP devices are beyond the scope of this document. | ||||
| The content delivery server may be either in the public network or | The content delivery server may be either in the public network or | |||
| accessible through a DMZ. The user agents requiring profiles may be | accessible through a DMZ. The user agents requiring profiles may be | |||
| behind firewalls and NATs and many protocols, such as HTTP, may be | behind firewalls and NATs and many protocols, such as HTTP, may be | |||
| used for profile content retrieval without special consideration in | used for profile content retrieval without special consideration in | |||
| the firewalls and NATs (e.g. an HTTP client on the UA can typically | the firewalls and NATs (e.g. an HTTP client on the UA can typically | |||
| pull content from a server outside the NAT/firewall.). | pull content from a server outside the NAT/firewall.). | |||
| A conscious separation of device, user, application and local network | A conscious separation of device, user, application and local network | |||
| profiles is made in this document. This is useful to provide | profiles is made in this document. This is useful to provide | |||
| features such as hotelling as well as securing or restricting user | features such as hotelling as well as securing or restricting user | |||
| agent functionality. By maintaining this separation, a user may walk | agent functionality. By maintaining this separation, a user may walk | |||
| up to someone else's user agent and direct that user agent to get | up to someone else's user agent and direct that user agent to get the | |||
| their profile data. In doing so the user agent can replace the | new user's profile data. In doing so the user agent can replace the | |||
| previous user's profile data while still keeping the devices profile | previous user's profile data while still keeping the device's and the | |||
| data that may be necessary for core functionality and communication | local network's profile data which may be necessary for core | |||
| described in this document. The local network profiles are relevant | functionality and communication described in this document. The | |||
| to a visiting device which gets plugged in to a foreign network. The | local network profiles are relevant to a visiting device which gets | |||
| concept of the local network providing profile data is useful to | plugged in to a foreign network. The concept of the local network | |||
| provide hotelling (described above) as well as local policy data that | providing profile data is useful to provide hotelling (described | |||
| may constrain the user or device behavior relative to the local | above) as well as local policy data that may constrain the user or | |||
| network. For example media types and codecs may be constrained to | device behavior relative to the local network. For example media | |||
| reflect the networks capabilities. | types and codecs may be constrained to reflect the network's | |||
| capabilities. | ||||
| The separation of these profiles also enables the separation of the | The separation of these profiles also enables the separation of the | |||
| management of the profiles. The user profile may be managed by a | management of the profiles. The user profile may be managed by a | |||
| profile delivery server operated by the user's ISP. The device | profile delivery server operated by the user's ISP. The device | |||
| profile may be delivered from a profile delivery server operated by | profile may be delivered from a profile delivery server operated by | |||
| the user's employer. The application profile may be delivered from | the user's employer. The application profile(s) may be delivered | |||
| the user's ASP. The local network profile may delivered by a WIFI | from the user's ASP. The local network profile may delivered by a | |||
| hotspot service provider. Some interesting services and mobility | WIFI hotspot service provider. Some interesting services and | |||
| applications are enabled with this separation of profiles. | mobility applications are enabled with this separation of profiles. | |||
| A very high level data model is implied here with the separation of | A very high level data model is implied here with the separation of | |||
| these four profile types. Each profile type requires a separate | these four profile types. Each profile type instance requires a | |||
| subscription to retrieve the profile. A loose hierarchy exists | separate subscription to retrieve the profile. A loose hierarchy | |||
| mostly for the purpose of boot strapping and discovery or formation | exists mostly for the purpose of boot strapping and discovery or | |||
| of the profile URIs. No other meaning is implied by this hierarchy. | formation of the profile URIs. No other meaning is implied by this | |||
| However the profile format and data sets to be define outside this | hierarchy. However the profile format and data sets to be defined | |||
| document, may define additional meaning to this hierarchy. In the | outside this document may define additional meaning to this | |||
| boot strapping scenario, a device straight out of the box (software | hierarchy. In the boot strapping scenario, a device straight out of | |||
| or hardware) does not know anything about it's user or local network. | the box (software or hardware) does not know anything about it's user | |||
| The one thing that is does know is it's instance id. So the | or local network. The one thing that is does know is it's instance | |||
| hierarchy of the profiles exists as follows. | id. So the hierarchy of the profiles exists as follows. | |||
| The instance id is used to form the URI for subscribing to the device | The instance id is used to form the user id part of the URI for | |||
| profile. The device profile may contain a default user AOR for that | subscribing to the device profile. The device profile may contain a | |||
| device. The default user AOR may then be used to retrieve the user | default user AOR for that device. The default user AOR may then be | |||
| profile. Applications to be used on the device may be defined in the | used to retrieve the user profile. Applications to be used on the | |||
| device and user profiles. The user's AOR is also used to retrieve | device may be defined in the device and user profiles. The user's | |||
| any application profiles for that user. The local network profile is | AOR is also used to retrieve any application profiles for that user. | |||
| not referenced in any way from the device, user, application | The local network profile is not referenced in any way from the | |||
| profiles. It is subscribed to and retrieved based upon a URI formed | device, user, application profiles. It is subscribed to and | |||
| from the local network domain. | retrieved based upon a URI formed from the local network domain. | |||
| 3. Profile Change Event Notification Package | 3. Profile Change Event Notification Package | |||
| This section defines a new SIP event package [RFC3265]. The purpose | This section defines a new SIP event package [RFC3265]. The purpose | |||
| of this event package is to send to subscribers notification of | of this event package is to send to subscribers notification of | |||
| content changes to the profile(s) of interest and to provide the | content changes to the profile(s) of interest and to provide the | |||
| location of the profile(s) via content indirection | location of the profile(s) via content indirection | |||
| [I-D.ietf-sip-content-indirect-mech] or directly in the body of the | [I-D.ietf-sip-content-indirect-mech] or directly in the body of the | |||
| NOTIFY. Frequently the profiles delivered to the user agent are much | NOTIFY. Frequently the profiles delivered to the user agent are much | |||
| larger (e.g. several KB or even several MB) than the MTU of the | larger (e.g. several KB or even several MB) than the MTU of the | |||
| skipping to change at page 8, line 25 ¶ | skipping to change at page 8, line 31 ¶ | |||
| messages and consequently higher impact on the SIP servers and | messages and consequently higher impact on the SIP servers and | |||
| infrastructure. To avoid the higher impact and load on the SIP | infrastructure. To avoid the higher impact and load on the SIP | |||
| infrastructure, content indirection SHOULD be used if the profile is | infrastructure, content indirection SHOULD be used if the profile is | |||
| large enough to cause packet fragmentation over the transport | large enough to cause packet fragmentation over the transport | |||
| protocol. The presence of the MIME type for content indirection | protocol. The presence of the MIME type for content indirection | |||
| [I-D.ietf-sip-content-indirect-mech] in the Accept header indicates | [I-D.ietf-sip-content-indirect-mech] in the Accept header indicates | |||
| that the user agent supports content indirection and that the profile | that the user agent supports content indirection and that the profile | |||
| delivery server SHOULD use content indirection. Similarly the | delivery server SHOULD use content indirection. Similarly the | |||
| content type for the differential notification of profile changes | content type for the differential notification of profile changes | |||
| [I-D.ietf-simple-xcap-package] may be used in the Accept header to | [I-D.ietf-simple-xcap-package] may be used in the Accept header to | |||
| receive profile change deltas. | express support for receiving profile change deltas. | |||
| The MIME types or formats of profile to be delivered via this | The MIME types or formats of profile to be delivered via this | |||
| framework are to be defined in the documents that define the profile | framework are to be defined in the documents that define the profile | |||
| contents. These profile MIME types specified in the Accept header | contents. These profile MIME types specified in the Accept header | |||
| along with the profile types specified in the Event header parameter | along with the profile types specified in the Event header parameter | |||
| "profile-name" MAY be used to specify which profiles get delivered | "profile-type" MAY be used to specify which profiles get delivered | |||
| either directly or indirectly in the NOTIFY requests. As this event | either directly or indirectly in the NOTIFY requests. As this event | |||
| package does not specify the mandatory content type, this package is | package does not specify the mandatory content type, this package is | |||
| abstract. The profile definition documents will specify the | abstract. The profile definition documents will specify the | |||
| mandatory content type to make a concrete event package. | mandatory content type to make a concrete event package. | |||
| 3.1 Event Package Name | 3.1 Event Package Name | |||
| The name of this package is "sip-profile". This value appears in the | The name of this package is "sip-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]. | |||
| 3.2 Event Package Parameters | 3.2 Event Package Parameters | |||
| This package defines the following new parameters for the event | This package defines the following new parameters for the event | |||
| header: "profile-name", "vendor", "model", "version", "effective-by", | header: "profile-type", "vendor", "model", "version", "effective-by", | |||
| "document", "app-id". The effective-by parameter is for use in | "document", "app-id", "network-user". The "effective-by" parameter | |||
| NOTIFY requests only. The others are for use in the SUBSCRIBE | is for use in NOTIFY requests only. The "effected-by" parameter is | |||
| request, but may be used in NOTIFY requests as well. | ignored if it appears in a SUBSCRIBE request. The others parameters | |||
| are for use in the SUBSCRIBE request and are ignored if they appear | ||||
| in NOTIFY requests. | ||||
| The "profile-name" parameter is used to indicate the token name of | The "profile-type" parameter is used to indicate the token name of | |||
| the profile type the user agent wishes to obtain data or URIs for and | the profile type the user agent wishes to obtain data or URIs for and | |||
| to be notified of subsequent changes. Using a token in this | to be notified of subsequent changes. Using a token in this | |||
| parameter allows the URL semantics for retrieving the profiles to be | parameter allows the URI semantics for retrieving the profiles to be | |||
| opaque to the subscribing user agent. All it needs to know is the | opaque to the subscribing user agent. All it needs to know is the | |||
| token value for this parameter. This document defines four logical | token value for this parameter. This document defines four logical | |||
| types of profiles and their token names. The contents or format of | types of profiles and their token names. The contents or format of | |||
| the profiles is outside the scope of this document. | the profiles is outside the scope of this document. | |||
| The four types of profiles define here are "device", "user", | The four types of profiles define here are "device", "user", | |||
| "application" and "local". Specifying "device" type profile(s) | "application" and "local". Specifying "device" type profile(s) | |||
| indicates the desire for the profile data (URI when content | indicates the desire for the profile data (URI when content | |||
| indirection is used) and change notification of the contents of the | indirection is used) and change notification of the contents of the | |||
| profile(s) that are specific to the device or user agent. Specifying | profile(s) that are specific to the device or user agent. Specifying | |||
| "user" type profile indicates the desire for the profile data or URI | "user" type profile indicates the desire for the profile data (URI | |||
| to the profile(s) and change notification of the profile content for | when content indirection is used) and change notification of the | |||
| the user. Specifying "application" type profile indicates the desire | profile content for the user. Specifying "application" type profile | |||
| for the profile data or URI to the profile(s) and change notification | indicates the desire for the profile data (URI when content | |||
| of the profile content for the user's applications. Specifying | indirection is used) and change notification of the profile content | |||
| "local" type profile indicates the desire for profiles data or URI to | for the user's applications. Specifying "local" type profile | |||
| the profile(s) specific to the local network. The device, user, | indicates the desire for profiles data (URI when content indirection | |||
| is used) specific to the local network. The device, user, | ||||
| application or local network is identified in the URI of the | application or local network is identified in the URI of the | |||
| SUBSCRIBE request. The Accept header of the SUBSCRIBE request MUST | SUBSCRIBE request. The Accept header of the SUBSCRIBE request MUST | |||
| include the MIME types for all profile content types that 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. | |||
| Profile-Name = "profile-name" HCOLON profile-value | Profile-type = "profile-type" HCOLON profile-value | |||
| profile-value = profile-types / token | profile-value = profile-types / token | |||
| profile-types = "device" / "user" / "application" / "local" | profile-types = "device" / "user" / "application" / "local" | |||
| The "device", "user", "application" or "local" token in the | The "device", "user", "application" or "local" token in the | |||
| profile-name parameter may represent a class or set of profile | profile-type parameter may represent a class or set of profile | |||
| properties. As standards are defined for specific profile | properties. As standards are defined for specific profile | |||
| contents related to the user device or local network, it may be | contents related to the user device or local network, it may be | |||
| desirable to define additional tokens for the profile-name header. | desirable to define additional tokens for the profile-type | |||
| Also additional content types may be defined along with the | parameter. Also additional content types may be defined along | |||
| profile formats that can be used in the Accept header of the | with the profile formats that can be used in the Accept header of | |||
| SUBSCRIBE to filter or indicate what data sets of the profile are | the SUBSCRIBE to filter or indicate what data sets of the profile | |||
| desired. | are desired. | |||
| The rational for the separation of user, device and local network | The rational for the separation of user, device, application and | |||
| type profiles is provided in Section 2.3. It should be noted that | local network type profiles is provided in Section 2.3. It should be | |||
| any of the types may indicate that zero or more profiles or URIs are | noted that any of the types may result in zero or more profiles or | |||
| provided in the NOTIFY request. As discussed, a default user may be | URIs being provided in the NOTIFY request. As discussed, a default | |||
| assigned to a device. The default user's AOR may in turn be used as | user may be assigned to a device. The default user's AOR may in turn | |||
| the URI to SUBSCRIBE to the "user" and "application" profile types. | be used as the URI to SUBSCRIBE to the "user" and "application" | |||
| profile types. | ||||
| The data provided in the four types of profiles may overlap. As an | The data provided in the four types of profiles may overlap. As an | |||
| example the codecs that a user prefers to use, the codecs that the | example the codecs that a user prefers to use, the codecs that the | |||
| device supports (and the enterprise or device owner wishes to use), | device supports (and the enterprise or device owner wishes to use), | |||
| the codecs that the local network can support (and the network | the codecs that the local network can support (and the network | |||
| operator wishes to allow) all may overlap in how they are specified | operator wishes to allow) all may overlap in how they are specified | |||
| in the three corresponding profiles. This policy of merging the | in the three corresponding profiles. This policy of merging the | |||
| constraints across the multiple profile types can only unambiguously | constraints across the multiple profile types can only unambiguously | |||
| be defined along with the profile format and syntax. This is out of | be defined along with the profile format and syntax. This is out of | |||
| scope for this document. | scope for this document. | |||
| 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 are | specified by the implementer of the user agent. These parameters | |||
| useful to the profile delivery server to affect the profiles | MUST be provided in the SUBSCRIBE request for all profile types. | |||
| provided. In some scenarios it is desirable to provide different | These parameters are useful to the profile delivery server to affect | |||
| profiles based upon these parameters. For example feature property X | the profiles provided. In some scenarios it is desirable to provide | |||
| in a profile may work differently on two versions of user agent. | different profiles based upon these parameters. For example feature | |||
| This gives the profile deliver server the ability to compensate for | property X in a profile may work differently on two versions of user | |||
| or take advantage of the differences. | agent. This gives the profile delivery server the ability to | |||
| compensate for or take advantage of the differences. | ||||
| The "network-user" parameter is used when subscribing for local | Vendor = "vendor" HCOLON token / quoted-string | |||
| network profiles. If the value of the profile-name parameter is not | Model = "model" HCOLON token / quoted-string | |||
| "local", the "network-user" parameter has no defined meaning. If the | Version = "version" HCOLON token / quoted-string | |||
| user has special privileges beyond that of an anonymous user in the | ||||
| local network, the "network-user" parameter identifies the user to | The "network-user" parameter MAY be used when subscribing for device | |||
| the local network. The value of this parameter is the user's address | and local network profiles. When the profile-type is "device" or | |||
| of record. The SUBSCRIBE server may authenticate the subscriber to | "local" , the SUBSCRIBE URI addresses the device or local network | |||
| verify this AOR. | profile delivery server. It by design cannot indicate the user's | |||
| identity. The "network-user" parameter is used to indicate the | ||||
| user's AOR. The SUBSCRIBE server may authenticate the subscriber to | ||||
| verify this AOR. If the value of the "profile-type" parameter is not | ||||
| "device" or "local", the "network-user" parameter has no defined | ||||
| meaning and is ignored. | ||||
| Network-User = "network-user" HCOLON name-addr / addr-spec | ||||
| When the profile-type is "device", the user agent MAY set the | ||||
| "network-user" parameter to the user's AOR. This is an indication to | ||||
| the profile delivery server to set or change the association of the | ||||
| default user with the device indicated in the SUBSCRIBE URI. If the | ||||
| profile delivery server implements and allows this policy of setting | ||||
| the default user with a device, the user agent can utilize this | ||||
| mechanism to allow a user to login and make the user agent and user | ||||
| association stick. | ||||
| In the case where the profile-type is "local", the user agent MAY set | ||||
| the "network-user" parameter. If the user has special privileges | ||||
| beyond that of an anonymous user in the local network, the | ||||
| "network-user" parameter identifies the user to the local network. | ||||
| The value of this parameter is the user's address of record. | ||||
| The "effective-by" parameter in the Event header of the NOTIFY | The "effective-by" parameter in the Event header of the NOTIFY | |||
| specifies the maximum number of seconds before the user agent MUST | request specifies the maximum number of seconds before the user agent | |||
| make the new profile effective. A value of 0 (zero) indicates that | must attempt to make the new profile effective. A value of 0 (zero) | |||
| the user agent MUST make the profiles effective immediately (despite | indicates that the subscribing user agent must attempt to make the | |||
| possible service interruptions). This gives the profile delivery | profiles effective immediately (despite possible service | |||
| server the power to control when the profile is effective. This may | interruptions). This gives the profile delivery server the power to | |||
| be important to resolve an emergency problem or disable a user agent | control when the profile is effective. This may be important to | |||
| immediately. | resolve an emergency problem or disable a user agent immediately. | |||
| The "effective-by" parameter is ignored in all messages other than | ||||
| the NOTIFY request. | ||||
| Effective-By = "effective-by" HCOLON 1*DIGIT | ||||
| The "document" parameter is used to specify a relative URI for a | The "document" parameter is used to specify a relative URI for a | |||
| specific profile document that the user agent wishes to retrieve and | specific profile document that the user agent wishes to retrieve and | |||
| to receive change notification. This is particularly useful for | to receive change notification. This is particularly useful for | |||
| profile content like XCAP [I-D.ietf-simple-xcap] where there is a | profile content like XCAP [I-D.ietf-simple-xcap] where there is a | |||
| well defined URL schema and the user agent knows the specific content | well defined URI schema and the user agent knows the specific content | |||
| that it wants. The "document" parameter value syntax is a quoted | that it wants. The "document" parameter value syntax is a quoted | |||
| string. For more details on the use of this package with XCAP see | string. For more details on the use of this package with XCAP see | |||
| Section 4.6. | Section 4.6. The "document" parameter MAY be set in SUBSCRIBE | |||
| requests. It is ignored in all other messages. | ||||
| The "app-id" parameter is only used when the "profile-name" parameter | Document = "document" HCOLON quoted-string | |||
| The "app-id" parameter MAY be set when the "profile-type" parameter | ||||
| value is "application". The "app-id" indicates that the user agent | value is "application". The "app-id" indicates that the user agent | |||
| wishes to retrieve the profile data or URI and change notification | wishes to retrieve the profile data or URI and change notification | |||
| for the application profile data for the specific application | for the application profile data for the specific application | |||
| indicated in the value of the "app-id" parameter. The "app-id" | indicated in the value of the "app-id" parameter. The "app-id" | |||
| parameter value is a token. | parameter value is a token. The "app-id" parameter has meaning only | |||
| in SUBSCRIBE requests when the "profile-type" Event header parameter | ||||
| is set to "application". The "app-id" parameter is ignored in all | ||||
| other messages. | ||||
| App-Id = "app-id" HCOLON token / quoted-string | ||||
| SUBSCRIBE request Event header examples: | SUBSCRIBE request Event header examples: | |||
| Event: sip-profile;profile-name=device; | Event: sip-profile;profile-type=device; | |||
| vendor=acme;model=Z100;version=1.2.3 | vendor=acme;model=Z100;version=1.2.3 | |||
| Event: sip-profile;profile-name= | Event: sip-profile;profile-type="user";document= | |||
| "http://example.com/services/user-profiles/users/freds.xml"; | "http://example.com/services/user-profiles/users/freds.xml"; | |||
| vendor=premier;model=trs8000;version=5.5 | vendor=premier;model=trs8000;version=5.5 | |||
| NOTIFY request Event header examples: | NOTIFY request Event header examples: | |||
| Event:sip-profile;effective-by=0 | Event:sip-profile;effective-by=0 | |||
| Event:sip-profile;effective-by=3600 | Event:sip-profile;effective-by=3600 | |||
| 3.3 SUBSCRIBE Bodies | 3.3 SUBSCRIBE Bodies | |||
| skipping to change at page 11, line 47 ¶ | skipping to change at page 12, line 44 ¶ | |||
| thousand bytes in size. Frequently even with very modest sized SDP | thousand bytes in size. Frequently even with very modest sized SDP | |||
| bodies, SIP messages get fragmented causing problems for many user | bodies, SIP messages get fragmented causing problems for many user | |||
| agents. For this reason if the Accept header of the SUBSCRIBE | agents. For this reason if the Accept header of the SUBSCRIBE | |||
| included the MIME type: message/external-body indicating support for | included the MIME type: message/external-body indicating support for | |||
| content indirection the profile delivery server SHOULD use content | content indirection the profile delivery server SHOULD use content | |||
| indirection [I-D.ietf-sip-content-indirect-mech] in the NOTIFY body | indirection [I-D.ietf-sip-content-indirect-mech] in the NOTIFY body | |||
| for providing the profiles. | for providing the profiles. | |||
| When delivering profiles via content indirection the profile delivery | When delivering profiles via content indirection the profile delivery | |||
| server MUST include the Content-ID defined in | server MUST include the Content-ID defined in | |||
| [I-D.ietf-sip-content-indirect-mech] for each profile URL. This is | [I-D.ietf-sip-content-indirect-mech] for each profile URI. This is | |||
| to avoid unnecessary download of the profiles. Some user agents are | to avoid unnecessary download of the profiles. Some user agents are | |||
| not able to make a profile effective without rebooting or restarting. | not able to make a profile effective without rebooting or restarting. | |||
| Rebooting is something to be avoided on a user agent performing | Rebooting is something to be avoided on a user agent performing | |||
| services such as telephony. In this way the Content-ID allows the | services such as telephony. In this way the Content-ID allows the | |||
| user agent to avoid unnecessary interruption of service as well. The | user agent to avoid unnecessary interruption of service as well. The | |||
| Content-Type MUST be specified for each URI. | Content-Type MUST be specified for each URI. | |||
| Initially user agent implementers may use a proprietary content | Initially user agent implementers may use a proprietary content | |||
| type for the profiles retrieved from the URIs(s). This is a good | type for the profiles retrieved from the URI(s). This is a good | |||
| first step towards easing the management of user agents. Standard | first step towards easing the management of user agents. Standard | |||
| profile contents, content type and formats will need to be defined | profile contents, content type and formats will need to be defined | |||
| for true interoperability of profile delivery. The specification | for true interoperability of profile delivery. The specification | |||
| of the content is out of the scope of this document. | of the content is out of the scope of this document. | |||
| Likewise the URL scheme used in the content indirection is outside | Likewise the URI scheme [RFC2396] used in the content indirection is | |||
| the scope of this document. This document is agnostic to the URL | outside the scope of this document. This document is agnostic to the | |||
| schemes as the profile content may dictate what is required. It is | URI schemes as the profile content may dictate what is required. It | |||
| expected that TFTP [RFC3617], FTP [??], HTTP [RFC2616], HTTPS | is expected that FTP [RFC0959], HTTP [RFC2616], HTTPS [RFC2818], | |||
| [RFC2818], LDAP [RFC3377], XCAP [I-D.ietf-simple-xcap] and other URL | LDAP [RFC3377], XCAP [I-D.ietf-simple-xcap] and other URI schemes are | |||
| schemes are supported by this package and framework. | supported by this package and framework. | |||
| 3.6 Notifier processing of SUBSCRIBE requests | 3.6 Notifier processing of SUBSCRIBE requests | |||
| The general rules for processing SUBSCRIBE requests [RFC3265] apply | The general rules for processing SUBSCRIBE requests [RFC3265] apply | |||
| to this package. If content indirection is used for delivering the | to this package. If content indirection is used for delivering the | |||
| profiles, the notifier does not need to authenticate the subscription | profiles, the notifier does not need to authenticate the subscription | |||
| as the profile content is not transported in the SUBSCRIBE or NOTIFY | as the profile content is not transported in the SUBSCRIBE or NOTIFY | |||
| transaction messages. With content indirection only URLs are | transaction messages. With content indirection only URIs are | |||
| transported in the NOTIFY request which may be secured using the | transported in the NOTIFY request which may be secured using the | |||
| techniques in Section 6. If content indirection is not used, SIPS | techniques in Section 6. If content indirection is not used, SIPS | |||
| with SIP authentication SHOULD be used. | with SIP authentication SHOULD be used. | |||
| The behavior of the profile delivery server is left to the | The behavior of the profile delivery server is left to the | |||
| implementer. The profile delivery server may be as simple as a SIP | implementer. The profile delivery server may be as simple as a SIP | |||
| SUBSCRIBE UAS and NOTIFY UAC front end to a simple HTTP server | SUBSCRIBE UAS and NOTIFY UAC front end to a simple HTTP server | |||
| delivering static files that are hand edited. At the other extreme | delivering static files that are hand edited. At the other extreme | |||
| the profile delivery server can be part of a configuration management | the profile delivery server can be part of a configuration management | |||
| system that integrates with a corporate directory and IT system or | system that integrates with a corporate directory and IT system or | |||
| carrier OSS, where the profiles are automatically generated. The | carrier operations support systems, where the profiles are | |||
| design of this framework intentionally provides the flexibility of | automatically generated. The design of this framework intentionally | |||
| implementation from simple/cheap to complex/expensive. | provides the flexibility of implementation from simple/cheap to | |||
| complex/expensive. | ||||
| If the user or device is not known to the profile delivery server, | If the user or device is not known to the profile delivery server, | |||
| the implementer MAY accept the subscription or reject it. It is | the implementer MAY accept the subscription or reject it. It is | |||
| recommended that the implementer accept the subscription. It is | recommended that the implementer accept the subscription. It is | |||
| useful for the profile delivery server to maintain the subscription | useful for the profile delivery server to maintain the subscription | |||
| as an administrator may add the user or device to the system, | as an administrator may add the user or device to the system, | |||
| defining the profile contents. This allows the profile delivery | defining the profile contents. This allows the profile delivery | |||
| server to immediately send a NOTIFY request with the profile URIs. | server to immediately send a NOTIFY request with the profile URIs. | |||
| If the profile delivery server does not accept the subscription from | If the profile delivery server does not accept the subscription from | |||
| an unknown user or device, the administer or user must manually | an unknown user or device, the administer or user must manually | |||
| provoke the user agent to reSUBSCRIBE. This may be difficult if the | provoke the user agent to reSUBSCRIBE. This may be difficult if the | |||
| user agent and administrator are at different locations. | user agent and administrator are at different locations. | |||
| When the Event header "profile-type" is "device" and the user agent | ||||
| has provided the user's AOR in the "network-user" parameter, the | ||||
| profile delivery server MAY set or change the default user associated | ||||
| with the device indicated in the SUBSCRIBE URI. This is an | ||||
| implementation or policy decision. The profile delivery server | ||||
| SHOULD authenticate the user for the SUBSCIRBE request before | ||||
| effecting the default user indicated in the "network-user" parameter. | ||||
| 3.7 Notifier generation of NOTIFY requests | 3.7 Notifier generation of NOTIFY requests | |||
| As in [RFC3265], the profile delivery server MUST always send a | As in [RFC3265], the profile delivery server MUST always send a | |||
| NOTIFY request upon accepting a subscription. If the device or user | NOTIFY request upon accepting a subscription. If the device or user | |||
| is unknown to the profile delivery server and it chooses to accept | is unknown to the profile delivery server and it chooses to accept | |||
| the subscription, the implementer has two choices. A NOTIFY MAY be | the subscription, the implementer has two choices. A NOTIFY MAY be | |||
| sent with no body or content indirection containing the profile | sent with no body or content indirection containing the profile | |||
| URI(s). Alternatively a NOTIFY MAY be sent with a body or content | URI(s). Alternatively a NOTIFY MAY be sent with a body or content | |||
| indirection containing URI(s) pointing to a default data set. The | indirection containing URI(s) pointing to a default data set. The | |||
| data sets provided may allow for only limited functionality of the | data sets provided may allow for only limited functionality of the | |||
| user agent (e.g. a phone user agent with data to enable calls to | user agent (e.g. a phone user agent with data to enable calls to | |||
| help desk and emergency services.). This is an implementation and | help desk and emergency services.). This is an implementation and | |||
| business policy decision for the profile delivery server. | business policy decision for the profile delivery server. | |||
| If the URI in the SUBSCIRBE request is a known identity and | If the URI in the SUBSCIRBE request is a known identity and | |||
| provisioned with the requested profile type (i.e. as specified in | provisioned with the requested profile type (i.e. as specified in | |||
| the profile-name parameter), the profile delivery server SHOULD send | the profile-type parameter of the Event header), the profile delivery | |||
| a NOTIFY with profile data or content indirection (if the content | server SHOULD send a NOTIFY with profile data or content indirection | |||
| type was included in the Accept header) containing the URI for the | (if the content type was included in the Accept header) containing | |||
| profile. | the URI for the profile. | |||
| A user agent can provide hotelling by collecting a userËs AOR and | A user agent can provide hotelling by collecting a user's AOR and | |||
| credentials needed to SUBSCRIBE and retrieve the user's profiles. | credentials needed to SUBSCRIBE and retrieve the user's profiles. | |||
| hotelling functionality is achieved by subscribing to the user's AOR | Hotelling functionality is achieved by subscribing to the user's AOR | |||
| and specifying the "user" profile type. This same mechanism can also | and specifying the "user" profile type. This same mechanism can also | |||
| be used to secure a user agent, requiring a user to login to enable | be used to secure a user agent, requiring a non-mobile user to login | |||
| functionality beyond the default userËs restricted functionality. | to enable functionality beyond the default user's restricted | |||
| functionality. | ||||
| The profile delivery server MAY specify when the new profiles MUST be | The profile delivery server may specify when the new profiles must be | |||
| made effective by the user agent. By default the user agent makes | made effective by the user agent. The profile delivery server MAY | |||
| the profiles effective as soon as it thinks that it is non-obtrusive. | specify a maximum time in seconds (zero or more), in the | |||
| Profile changes SHOULD affect behavior on all new dialogs which are | "effective-by" event header parameter, by which the user agent is | |||
| created after the notification, but may not be able to effect | required to make the new profiles effective for all dialogs. | |||
| existing dialogs. However the profile delivery server MAY specify a | ||||
| maximum time in seconds (zero or more), in the effective-by event | ||||
| header parameter, by which the user agent MUST make the new profiles | ||||
| effective for all dialogs. | ||||
| 3.8 Subscriber processing of NOTIFY requests | 3.8 Subscriber processing of NOTIFY requests | |||
| The user agent subscribing to this event package MUST adhere to the | The user agent subscribing to this event package MUST adhere to the | |||
| NOTIFY request processing behavior specified in [RFC3265]. The user | NOTIFY request processing behavior specified in [RFC3265]. The user | |||
| agent MUST make the profiles effective as specified in the NOTIFY | agent MUST attempt to make the profiles effective within the time in | |||
| request (see Section 3.7). The user agent SHOULD use one of the | seconds given in the "effective-by" Event header parameter if present | |||
| in the NOTIFY request (see Section 3.7). By default the user agent | ||||
| makes the profiles effective as soon as it thinks that it is | ||||
| non-obtrusive. Profile changes SHOULD affect behavior on all new | ||||
| dialogs which are created after the notification, but may not be able | ||||
| to affect existing dialogs. The user agent SHOULD use one of the | ||||
| techniques specified in Section 6 to securely retrieve the profiles. | techniques specified in Section 6 to securely retrieve the profiles. | |||
| 3.9 Handling of forked requests | 3.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. The techniques to achieve this are | of an initial SUBSCRIBE request. The techniques to achieve this are | |||
| described in section 4.4.9 of [RFC3265]. | described in section 4.4.9 of [RFC3265]. | |||
| 3.10 Rate of notifications | 3.10 Rate of notifications | |||
| skipping to change at page 15, line 5 ¶ | skipping to change at page 16, line 5 ¶ | |||
| is specified for this package. | is specified for this package. | |||
| 3.11 State Agents | 3.11 State Agents | |||
| State agents are not applicable to this event package. | State agents are not applicable to this event package. | |||
| 3.12 Examples | 3.12 Examples | |||
| Example SUBSCRIBE and NOTIFY request using content indirection: | Example SUBSCRIBE and NOTIFY request using content indirection: | |||
| SUBSCRIBE sip:ff00000036c5@example.com SIP/2.0 | SUBSCRIBE sip:ff00000036c5@acme.com SIP/2.0 | |||
| Event: sip-profile;profile-name=device;vendor=acme; | Event: sip-profile;profile-type=device;vendor=acme; | |||
| model=Z100;version=1.2.3 | model=Z100;version=1.2.3 | |||
| From: sip:ff00000036c5@acme.com;tag=1234 | From: sip:ff00000036c5@acme.com;tag=1234 | |||
| To: sip:ff00000036c5@acme.com;tag=abcd | To: sip:ff00000036c5@acme.com;tag=abcd | |||
| Call-ID: 3573853342923422@10.1.1.44 | Call-ID: 3573853342923422@10.1.1.44 | |||
| CSeq: 2131 SUBSCRIBE | CSeq: 2131 SUBSCRIBE | |||
| Contact: sip:ff00000036c5@10.1.1.44 | Contact: sip:ff00000036c5@10.1.1.44 | |||
| Via: SIP/2.0/TCP 10.1.1.41; | ||||
| branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | ||||
| Accept: message/external-body, application/z100-device-profile | Accept: message/external-body, application/z100-device-profile | |||
| Content-Length: 0 | Content-Length: 0 | |||
| NOTIFY sip:ff00000036c5@10.1.1.44 SIP/2.0 | NOTIFY sip:ff00000036c5@10.1.1.44 SIP/2.0 | |||
| Event: sip-profile;effective-by=3600 | Event: sip-profile;effective-by=3600 | |||
| From: sip:ff00000036c5@acme.com;tag=abcd | From: sip:ff00000036c5@acme.com;tag=abcd | |||
| To: sip:ff00000036c5@acme.com;tag=1234 | To: sip:ff00000036c5@acme.com;tag=1234 | |||
| Call-ID: 3573853342923422@10.1.1.44 | Call-ID: 3573853342923422@10.1.1.44 | |||
| CSeq: 321 NOTIFY | CSeq: 321 NOTIFY | |||
| Via: SIP/2.0/UDP 192.168.0.3; | ||||
| branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | ||||
| MIME-Version: 1.0 | MIME-Version: 1.0 | |||
| Content-Type: multipart/mixed; boundary=boundary42 | Content-Type: multipart/mixed; boundary=boundary42 | |||
| Content-Length: ... | Content-Length: ... | |||
| --boundary42 | --boundary42 | |||
| Content-Type: message/external-body; | Content-Type: message/external-body; | |||
| access-type="URL"; | access-type="URL"; | |||
| expiration="Mon, 24 June 2002 09:00:00 GMT"; | expiration="Mon, 24 June 2002 09:00:00 GMT"; | |||
| URL="http://www.example.com/devices/ff00000036c5"; | URL="http://www.example.com/devices/ff00000036c5"; | |||
| size=1234 | size=1234 | |||
| skipping to change at page 15, line 48 ¶ | skipping to change at page 17, line 7 ¶ | |||
| 3.13 Use of URIs to Retrieve State | 3.13 Use of URIs to Retrieve State | |||
| The URI for the SUBSCRIBE request is formed differently depending | The URI for the SUBSCRIBE request is formed differently depending | |||
| upon which profile type the subscription is for. This allows the | upon which profile type the subscription is for. This allows the | |||
| different profile types to be potentially managed by different | different profile types to be potentially managed by different | |||
| profile delivery servers (perhaps even operated by different | profile delivery servers (perhaps even operated by different | |||
| entities). | entities). | |||
| 3.13.1 Device URIs | 3.13.1 Device URIs | |||
| The URI for the "device" type profile is base upon the identity of | The URI for the "device" type profile (device URI) is base upon the | |||
| the device. The device URI MUST be unique over time and space for | identity of the device. The device URI MUST be unique over time and | |||
| all devices and implementations. The instance id used as the user | space for all devices and implementations. If an instance id is used | |||
| part of the device URI SHOULD remain the same for the lifetime of the | as the user part of the device URI, it SHOULD remain the same for the | |||
| user agent. The device URI is used to identify which profile is | lifetime of the user agent. The device URI is used to identify which | |||
| associated with a specific instance of a user agent. | profile is associated with a specific instance of a user agent. | |||
| If the user agent were to change its device URI, the profile | If the user agent were to change its device URI, the profile | |||
| delivery server would loose its association between the profile | delivery server would lose its association between the profile and | |||
| and the device. This would also make it difficult for the profile | the device. This would also make it difficult for the profile | |||
| delivery server to track user agents under profile management. | delivery server to track user agents under profile management. | |||
| The profile delivery server may decide to provide the same device | ||||
| profile to all devices of the same vendor, model and version. | ||||
| However this is a implementation choice on the profile delivery | ||||
| server. The subscribing device has no way of knowing the profile | ||||
| difference. As an example the device profile for similar devices | ||||
| may differ with properties such as the default user. This is how | ||||
| the bootstrapping mechanism works as described in Section 4.1.3. | ||||
| The URI for the device type profile should use a unique identifier as | The URI for the device type profile should use a unique identifier as | |||
| the user portion of the URI. The host and port portion of the URI as | the user portion of the URI. The host and port portion of the URI is | |||
| set to that of the domain or address of the profile deliver server | set to that of the domain or address of the profile deliver server | |||
| which manages that user agent. A means of discovering the host and | which manages that user agent. A means of discovering the host and | |||
| port portion is discussed in Section 4.1. Two approaches are | port portion is discussed in Section 4.1. Like the call-id header | |||
| value in SIP, consistency of the format across implementations is | ||||
| less important than the guarantee of uniqueness across all instances. | ||||
| There is a administration aspect of the unique identifier, that makes | ||||
| it desirable for the id to be obtainable or predictable prior to | ||||
| installation of the device (hard or soft). Also from a human factors | ||||
| perspective, ids that are easily distinguished and communicated will | ||||
| make the administrators job a little easier. Two approaches are | ||||
| suggested for constructing a unique identifier to be used in the user | suggested for constructing a unique identifier to be used in the user | |||
| portion of the device URI. | portion of the device URI. | |||
| The MAC address of the device may be used if there will always be | The MAC address of the device may be used if there will always be | |||
| no more than one user agent using that MAC address over time (e.g. | no more than one user agent using that MAC address over time (e.g. | |||
| a dedicate telephone appliance). The MAC address may not be used | a dedicate telephone appliance). The MAC address may not be used | |||
| if more than one user agent instance exists or use the same MAC | if more than one user agent instance exists or use the same MAC | |||
| address (e.g. multiple instances of a softphone may run on a | address (e.g. multiple instances of a softphone may run on a | |||
| general purpose computing device). The advantage of the MAC | general purpose computing device). The advantage of the MAC | |||
| address is that many vendors put bar codes on the device with the | address is that many vendors put bar codes on the device with the | |||
| skipping to change at page 16, line 37 ¶ | skipping to change at page 18, line 7 ¶ | |||
| general purpose computing device). The advantage of the MAC | general purpose computing device). The advantage of the MAC | |||
| address is that many vendors put bar codes on the device with the | address is that many vendors put bar codes on the device with the | |||
| actual MAC address on it. A bar code scanner is a convenient | actual MAC address on it. A bar code scanner is a convenient | |||
| means of collecting the instance id for input and provisioning on | means of collecting the instance id for input and provisioning on | |||
| the profile delivery server. If the MAC address is used, it is | the profile delivery server. If the MAC address is used, it is | |||
| recommended that the MAC address is rendered in all lower case | recommended that the MAC address is rendered in all lower case | |||
| with no punctuation for consistency across implementations. For | with no punctuation for consistency across implementations. For | |||
| example a device managed by sipuaconfig.example.com using its MAC | example a device managed by sipuaconfig.example.com using its MAC | |||
| address to form the device URI might look like: | address to form the device URI might look like: | |||
| sip:00df1e004cd0@sipuaconfig.example.com. | sip:00df1e004cd0@sipuaconfig.example.com. | |||
| For devices where there is no MAC address or the MAC address is | For devices where there is no MAC address or the MAC address is | |||
| not unique to an instance of a user agent (e.g. multiple | not unique to an instance of a user agent (e.g. multiple | |||
| softphones on a computer or a gateway with multiple logical user | softphones on a computer or a gateway with multiple logical user | |||
| agents) it is recommended that a URN [RFC2141] is used as the user | agents) it is recommended that a URN [RFC2141] is used as the user | |||
| portion of the device URI. The approach to defining a user agent | portion of the device URI. The approach to defining a user agent | |||
| instance ID in for GRUU [I-D.ietf-sip-gruu] should be considered. | instance ID for GRUU [I-D.ietf-sip-gruu] should be considered. | |||
| When constructing the instance id the implementer should also | When constructing the instance id the implementer should also | |||
| consider that a human may need to manual enter the instance id to | consider that a human may need to manual enter the instance id to | |||
| provision the device in the profile delivery server (i.e. longer | provision the device in the profile delivery server (i.e. longer | |||
| strings are more error prone in data entry). When the URN is used | strings are more error prone in data entry). When the URN is used | |||
| as the user part of URI, it MUST be URL escaped. The ":" is not a | as the user part of URI, it MUST be URL escaped. The ":" is not a | |||
| legal character (without being escaped) in the user part of a | legal character (without being escaped) in the user part of a | |||
| name-addr. For example the instance ID: | name-addr. For example the instance ID: | |||
| urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 would be escaped to | urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 would be escaped to | |||
| look as follows in a URI: | look as follows in a URI: | |||
| sip:urn%3auuid%3af81d4fae-7dec-11d0-a765-00a0c91e6bf6@example.com. | sip:urn%3auuid%3af81d4fae-7dec-11d0-a765-00a0c91e6bf6@example.com. | |||
| Soft user agents are likely to need to use this approach due to | ||||
| the multi-user nature of general purpose computers. The software | ||||
| installer program might generate the uuid as part of the install | ||||
| process so that it remains persistent for the installation. It | ||||
| may also be desirable that any upgrades of the software maintain | ||||
| the unique id. However these are all implementation choices. | ||||
| 3.13.2 User and Application URIs | 3.13.2 User and Application URIs | |||
| The URI for the "user" and "application" type profiles is based upon | The URI for the "user" and "application" type profiles is based upon | |||
| the identity of the user. The user's address of record (AOR) is used | the identity of the user. The user's address of record (AOR) is used | |||
| as the URI in the SUBSCRIBE request. A new user agent or device may | as the URI in the SUBSCRIBE request. A new user agent or device may | |||
| not know the user's AOR. The user's AOR may be obtained as part of a | not know the user's AOR. The user's AOR may be obtained as part of a | |||
| default user property in the device profile. Alternatively the user | default user property in the device profile. Alternatively the user | |||
| agent may prompt the user for an AOR to be used. This can provide a | agent may prompt the user for an AOR and credentials to be used to | |||
| login and/or hotelling feature on the user agent. | authenticate the request. This can provide a login and/or hotelling | |||
| feature on the user agent. The user agent may be pre-provisioned | ||||
| with the user's AOR or provided as information on a SIM or flash key. | ||||
| These are only examples not an exhaustive list of sources for the | ||||
| user AOR. | ||||
| 3.13.3 Local Network URIs | 3.13.3 Local Network URIs | |||
| The URI for the "local" type profile is based upon the identity of | The URI for the "local" type profile is based upon the identity of | |||
| the local network. When subscribing to the local network profile, | the local network. When subscribing to the local network profile, | |||
| the use part of the URI is "anonymous". The host and port part of | the user part of the URI is "anonymous". The host and port part of | |||
| the URI is the local network name/domain. The discovery of the local | the URI is the local network name/domain. The discovery of the local | |||
| network name or domain is discussed in Section 4.1. The user agent | network name or domain is discussed in Section 4.1. The user agent | |||
| may provide the user's AOR as the value to the "network-user" event | may provide the user's AOR as the value to the "network-user" event | |||
| header parameter. This is useful if the user has privileges in the | header parameter. This is useful if the user has privileges in the | |||
| local network beyond those of the default user. The profile delivery | local network beyond those of the default user. The profile delivery | |||
| server SHOULD authenticate the user before providing the profile if | server SHOULD authenticate the user before providing the profile if | |||
| additional privileges are granted. Example URI: | additional privileges are granted. Example URI: | |||
| sip:ananymous@example.com | sip:ananymous@example.com | |||
| 4. Profile Delivery Framework Details | 4. Profile Delivery Framework Details | |||
| The following describes how different functional steps of the profile | The following describes how different functional steps of the profile | |||
| delivery framework work. Also described here is how the event | delivery framework work. Also described here is how the event | |||
| package defined in this document provides the enrollment and | package defined in this document provides the enrollment and | |||
| notification functions within the framework. | notification functions within the framework. | |||
| 4.1 Discovery of Subscription URI | 4.1 Discovery of Subscription URI | |||
| The discover approach varies depending upon which profile type URI is | The discovery approach varies depending upon which profile type URI | |||
| to be discovered. The order of discover is important in the boot | is to be discovered. The order of discovery is important in the boot | |||
| strapping situation as user agent may not have any information | strapping situation as user agent may not have any information | |||
| provisioned. The local network profile should be discovered first as | provisioned. The local network profile should be discovered first as | |||
| it may contain key information such as how to traverse a NAT/firewall | it may contain key information such as how to traverse a NAT/firewall | |||
| to get to outside services (e.g. the user's profile delivery | to get to outside services (e.g. the user's profile delivery | |||
| server). The device profile URI should be discovered next. The | server). The device profile URI should be discovered next. The | |||
| device profile may contain the default user's AOR. The user and | device profile may contain the default user's AOR or firmware/ | |||
| application profile subscription URI's are discovered last. | software information that should be updated first before proceeding | |||
| with the discovery process. The user and application profile | ||||
| subscription URIs should be discovered last. The URIs are formed | ||||
| differently for each of the profile types. This is to support the | ||||
| delegation of the profile management to potentially four different | ||||
| entities. However all four profile types may be provided by the same | ||||
| entity. As the user agent has no way of knowing whether the profiles | ||||
| are provide by one or more different profile delivery servers ahead | ||||
| of time, it must subscribe to all four profile types in separate | ||||
| SUBSCRIBE requests to get the profiles. | ||||
| 4.1.1 Discovery of Local Network URI | 4.1.1 Discovery of Local Network URI | |||
| The "discovered" host for the "local" profile subscription URI is the | The "discovered" host for the "local" profile subscription URI is the | |||
| local IP network domain for the user agent, either provisioned as | local IP network domain for the user agent, either provisioned as | |||
| part of the device's static network configuration or discovered via | part of the device's static network configuration or discovered via | |||
| DHCP. The local network profile subscription URI should not be | DHCP. The local network profile subscription URI should not be | |||
| cached as the user agent may be move from one local network to the | cached as the user agent may move from one local network to the | |||
| other. The user agent should perform the local network discovery | other. The user agent should perform the local network discovery | |||
| every time it starts up or network connectivity is regained. | every time it starts up or network connectivity is regained. | |||
| For example: The user agent requested and received the local | ||||
| domain name via DHCP: loganairport.com. The local network URI | ||||
| would look like: sip:anonymous@loganairport.com. The user agent | ||||
| should send this request using the normal SIP locating mechanisms | ||||
| defined in [RFC3263]. The Event header would look like the | ||||
| following if the user agent decided to provide the user's AOR: | ||||
| sip:alice@example.com as Alice may have a prior arrangement with | ||||
| the local network operator giving her special policy privileges: | ||||
| Event: sip-profile;profile-type=local; | ||||
| network-user=sip:alice@example.com | ||||
| 4.1.2 Discovery of Device URI | 4.1.2 Discovery of Device URI | |||
| The discovery function is needed to bootstrap user agents to the | The discovery function is needed to bootstrap user agents to the | |||
| point of knowing where to enroll with the profile delivery server. | point of knowing where to enroll with the profile delivery server. | |||
| Section 3.13.1 describes how to form the device URI used to send the | Section 3.13.1 describes how to form the device URI used to send the | |||
| SUBSCRIBE request for enrollment. However the bootstrapping problem | SUBSCRIBE request for enrollment. However the bootstrapping problem | |||
| for the user agent (out of the box) is what to use for the host and | for the user agent (out of the box) is what to use for the host and | |||
| port in the device URI. Due to the wide variation of environments in | port in the device URI. Due to the wide variation of environments in | |||
| which the enrolling user agent may reside (e.g. behind residential | which the enrolling user agent may reside (e.g. behind residential | |||
| router, enterprise LAN, WIFI hotspot, ISP, dialup modem) and the | router, enterprise LAN, WIFI hotspot, ISP, dialup modem) and the | |||
| limited control that the administrator of the profile delivery | limited control that the administrator of the profile delivery | |||
| server (e.g. enterprise, service provider) may have over that | server (e.g. enterprise, service provider) may have over that | |||
| environment, no single discovery mechanism works everywhere. | environment, no single discovery mechanism works everywhere. | |||
| Therefore a number of mechanisms SHOULD be tried in the specified | ||||
| Therefore a number of mechanisms should be tried in the specified | ||||
| order: SIP DHCP option [RFC3361], SIP DNS SRV [RFC3263], DNS A record | order: SIP DHCP option [RFC3361], SIP DNS SRV [RFC3263], DNS A record | |||
| and manual. The user agent may be preprovisioned with the host and | and manual. The user agent may be pre-provisioned with the host and | |||
| port (e.g. service providers may preprovision a device before | port (e.g. service providers may pre-provision a device before | |||
| sending it to a subscriber) in which case this discovery mechanism is | sending it to a subscriber, provide a SIM or flash key, etc.) in | |||
| not needed. Before performing the discover steps, the user agent | which case this discovery mechanism is not needed. Before performing | |||
| SHOULD provide a means to skip the discovery stage and manually enter | the discovery steps, the user agent should provide a means to skip | |||
| the device URI host and port. In addition the user agent SHOULD | the discovery stage and manually enter the device URI host and port. | |||
| allow the user to accept or reject the discovered host and port, in | In addition the user agent should allow the user to accept or reject | |||
| case an alternate to the discovered host and port are desired. | the discovered host and port, in case an alternate to the discovered | |||
| host and port are desired. | ||||
| 1. The first discovery mechanism that should be tried to construct | ||||
| the device SUBSCRIBE URI, as described in Section 3.13.1, is to | ||||
| use the host and port of the out bound proxy discovered by the | ||||
| SIP DHCP option as described in [RFC3361]. If the SIP DHCP | ||||
| option is not provided in the DHCP response; or no SIP response | ||||
| is received for the SUBSCRIBE request; or a SIP failure response | ||||
| other than for authorization is received for the SUBSCRIBE | ||||
| request to the sip-profile event, the next discovery mechanism | ||||
| should be tried. | ||||
| For example: Consider a dedicated hardware device with a | ||||
| single user agent having the MAC address: abc123efg456. The | ||||
| user agent sends a DHCP request including the request for the | ||||
| DHCP option for SIP: 120 (see [RFC3361]). If the DHCP | ||||
| response includes an answer for option 120, then the DNS name | ||||
| or IP address included is used in the host part of the device | ||||
| URI. For this example let's assume: example.com. The device | ||||
| URI would look like: sip:abc123efg456@example.com. The user | ||||
| agent should send this request using the normal SIP locating | ||||
| mechanisms defined in [RFC3263]. If the response fails then, | ||||
| the next discovery mechanism is tried. | ||||
| 1. The first discovery mechanism that SHOULD be tried is to | ||||
| construct the device SUBSCRIBE URI, as described in Section | ||||
| 3.13.1, is to use the host and port of the out bound proxy | ||||
| discovered by the SIP DHCP option as described in [RFC3361]. If | ||||
| the SIP DHCP option is not provided in the DHCP response; or no | ||||
| SIP response is received for the SUBSCRIBE request; or a SIP | ||||
| failure response other than for authorization is received for the | ||||
| SUBSCRIBE request to the sip-profile event, the next discovery | ||||
| mechanism SHOULD be tried. | ||||
| 2. The local IP network domain for the user agent, either configured | 2. The local IP network domain for the user agent, either configured | |||
| or discovered via DHCP, should be used with the technique in | or discovered via DHCP, should be used with the technique in | |||
| [RFC3263] to obtain a host and port to use in the SUBSCRIBE URI. | [RFC3263] to obtain a host and port to use in the SUBSCRIBE URI. | |||
| If no SIP response or a SIP failure response other than for | If no SIP response or a SIP failure response other than for | |||
| authorization is received for the SUBSCRIBE request to the | authorization is received for the SUBSCRIBE request to the | |||
| sip-profile event, the next discovery mechanism SHOULD be tried. | sip-profile event, the next discovery mechanism should be tried. | |||
| For example: The user agent requested and received the local | ||||
| domain name (option 15) in the DHCP response: | ||||
| boston.example.com. The device URI would look like: | ||||
| sip:abc123efg456@boston.example.com. The user agent should | ||||
| send this request using the normal SIP locating mechanisms | ||||
| defined in [RFC3263]. If the response fails then, the next | ||||
| discovery mechanism is tried. | ||||
| 3. The fully qualified host name constructed using the host name | 3. The fully qualified host name constructed using the host name | |||
| "sipuaconfig" and concatenated with the local IP network domain | "sipuaconfig" and concatenated with the local IP network domain | |||
| (as provided via DHCP or provisioned) should be tried next using | (as provided via DHCP or provisioned) should be tried next using | |||
| the technique in [RFC3263] to obtain a host and port to use in | the technique in [RFC3263] to obtain a host and port to use in | |||
| the SUBSCRIBE URI. If no SIP response or a SIP failure response | the SUBSCRIBE URI. If no SIP response or a SIP failure response | |||
| other than for authorization is received for the SUBSCRIBE | other than for authorization is received for the SUBSCRIBE | |||
| request to the sip-profile event, the next discovery mechanism | request to the sip-profile event, the next discovery mechanism | |||
| SHOULD be tried. | should be tried. | |||
| For example: The user agent requested and received the local | ||||
| domain name via DHCP as in the above example: | ||||
| boston.example.com. The device URI would look like: | ||||
| sip:abc123efg456@sipuaconfig.boston.example.com. The user | ||||
| agent should send this request using the normal SIP locating | ||||
| mechanisms defined in [RFC3263]. If the response fails then, | ||||
| the next discovery mechanism is tried. | ||||
| 4. If all other discovery techniques fail, the user agent MUST | 4. If all other discovery techniques fail, the user agent MUST | |||
| provide a manual means for the user to enter the host and port | provide a manual means for the user to enter the host and port | |||
| used to construct the SUBSCRIBE URI. | used to construct the SUBSCRIBE URI. | |||
| Once a user agent has successfully discovered, enrolled, received a | Once a user agent has successfully discovered, enrolled and received | |||
| NOTIFY response with profile data or URI(s), the user agent SHOULD | a NOTIFY response with profile data or URI(s), the user agent should | |||
| cache the device profile SUBCRIBE URI to avoid having to rediscover | cache the device profile SUBSCRIBE URI to avoid having to rediscover | |||
| the profile delivery server again in the future. The user agent | the profile delivery server again in the future. Caching of the | |||
| SHOULD NOT cache the SUBSCRIBE URI until it receives a NOTIFY with | device URI is necessary when the user agent is likely to move to | |||
| profile data or URI(s). The reason for this is that a profile | different local network domains as the local network may not be the | |||
| delivery server may send 202 responses to SUBSCRIBE requests and | provider for the device's profile. The user agent should not cache | |||
| NOTIFY responses to unknown user agent (see Section 3.6) with no | the device URI until it receives a NOTIFY with profile data or | |||
| URIs. Until the profile delivery server has sent a NOTIFY request | URI(s). The reason for this is that a profile delivery server may | |||
| with profile data or URI(s), it has not agreed to provide profiles. | send 202 responses to SUBSCRIBE requests and NOTIFY responses to | |||
| unknown user agent (see Section 3.6) with no URIs. Until the profile | ||||
| delivery server has sent a NOTIFY request with profile data or | ||||
| URI(s), it has not agreed to provide profiles. | ||||
| To illustrate why the user agent should not cache the device | To illustrate why the user agent should not cache the device | |||
| profile SUBSCRIBE URI until profile data or URI(s) are provided in | profile SUBSCRIBE URI until profile data or URI(s) are provided in | |||
| the NOTIFY, consider the following example: a user agent running | the NOTIFY, consider the following example: a user agent running | |||
| on a laptop plugged into a visited LAN in which a foreign profile | on a laptop plugged into a visited LAN in which a foreign profile | |||
| delivery server is discovered. The profile delivery server never | delivery server is discovered. The profile delivery server never | |||
| provides profile URIs in the NOTIFY request as it is not | provides profile URIs in the NOTIFY request as it is not | |||
| provisioned to accept the user agent. The user then takes the | provisioned to accept the user agent. The user then takes the | |||
| laptop to their enterprise LAN. If the user agent cached the | laptop to their enterprise LAN. If the user agent cached the | |||
| SUBSCRIBE URI from the visited LAN (which did not provide | SUBSCRIBE URI from the visited LAN (which did not provide | |||
| profiles), when subsequently placed in the enterprise LAN which is | profiles), when subsequently placed in the enterprise LAN which is | |||
| provisioned to provide profiles to the user agent, the user agent | provisioned to provide profiles to the user agent, the user agent | |||
| would not attempt to discover the profile delivery server. | would not attempt to discover the profile delivery server. | |||
| 4.1.3 Discovery of User and Application URI | 4.1.3 Discovery of User and Application URI | |||
| The default user's AOR from the device profile (if provided) may then | The default user's AOR from the device profile (if provided) may then | |||
| be used to subscribe to the "user" and "application" profiles. | be used to subscribe to the "user" and "application" profiles. The | |||
| Alternatively the user's AOR to be used for the "user" and | user's AOR may be prepovisioned or provided via SIM or flash key, | |||
| application" subscription URI, may be "discovered" manually by | etc. Alternatively the user's AOR to be used for the "user" and | |||
| "application" subscription URI, may be "discovered" manually by | ||||
| prompting the user. This "discovered" URI for the user and | prompting the user. This "discovered" URI for the user and | |||
| application profile subscription may be cached. | application profile subscription may be cached. | |||
| 4.2 Enrollment with Profile Server | 4.2 Enrollment with Profile Server | |||
| Enrollment is accomplished by subscribing to the event package | Enrollment is accomplished by subscribing to the event package | |||
| described in Section 3. The enrollment process is useful to the | described in Section 3. The enrollment process is useful to the | |||
| profile delivery server as it makes the server aware of user agents | profile delivery server as it makes the server aware of user agents | |||
| to which it may delivery profiles (those user agents the profile | to which it may deliver profiles (those user agents the profile | |||
| delivery server is provisioned to provide profiles to; those present | delivery server is provisioned to provide profiles to; those present | |||
| that the server may be provide profiles in the future; and those that | to which the server may provide profiles in the future; and those | |||
| the server can automatically provide default profiles). It is an | that the server can automatically provide default profiles). It is | |||
| implementation choice and business policy as to whether the profile | an implementation choice and business policy as to whether the | |||
| delivery server provides profiles to user agents that it is not | profile delivery server provides profiles to user agents that it is | |||
| explicitly provisioned to do so. However the profile server SHOULD | not explicitly provisioned to do so. However the profile delivery | |||
| accept (with 2xx response) SUBSCRIBE requests from any user agent as | server SHOULD accept (with 2xx response) SUBSCRIBE requests from any | |||
| explained in Section 3.5. | user agent as explained in Section 3.5. | |||
| 4.3 Notification of Profile Changes | 4.3 Notification of Profile Changes | |||
| The NOTIFY request in the sip-profile event package serves two | The NOTIFY request in the sip-profile event package serves two | |||
| purposes. First it provides the user agent with a means to obtain | purposes. First it provides the user agent with a means to obtain | |||
| the profile directly data or via URI(s) for desired profiles without | the profile data directly or via URI(s) for desired profiles without | |||
| requiring the end user to manually enter them. It also provides the | requiring the end user to manually enter them. It also provides the | |||
| means for the profile delivery server to notify the user agent that | means for the profile delivery server to notify the user agent that | |||
| the content of the profiles have changed and should be made | the content of the profiles has changed and should be made effective. | |||
| effective. Optionally the differential changes may be obtained by | Optionally the differential changes may be obtained by including the | |||
| including the content-type defined in [I-D.ietf-simple-xcap-package] | content-type: "application/xcap-diff+xml" defined in | |||
| in the Accept header of the SUBSCRIBE request. | [I-D.ietf-simple-xcap-package] in the Accept header of the SUBSCRIBE | |||
| request. | ||||
| 4.4 Retrieval of Profile Data | 4.4 Retrieval of Profile Data | |||
| The user agent retrieves its needed profile(s) directly or via the | The user agent retrieves its needed profile(s) directly or via the | |||
| URI(s) provided in the NOTIFY request as specified in Section 3.5. | URI(s) provided in the NOTIFY request as specified in Section 3.5. | |||
| The profile delivery server SHOULD secure the content of the profiles | The profile delivery server SHOULD secure the content of the profiles | |||
| using one of the techniques described in Section 6. The user agent | using one of the techniques described in Section 6. The user agent | |||
| SHOULD make the new profiles effective in the timeframe described in | SHOULD make the new profiles effective in the timeframe described in | |||
| Section 3.2. | Section 3.2. | |||
| skipping to change at page 21, line 12 ¶ | skipping to change at page 24, line 7 ¶ | |||
| This framework allows for the usage of several different protocols | This framework allows for the usage of several different protocols | |||
| for the retrieval of profiles. One protocol which is suitable is | for the retrieval of profiles. One protocol which is suitable is | |||
| XCAP [I-D.ietf-simple-xcap], which allows for HTTP URIs to represent | XCAP [I-D.ietf-simple-xcap], which allows for HTTP URIs to represent | |||
| XML documents, elements and attributes. XCAP defines a specific | XML documents, elements and attributes. XCAP defines a specific | |||
| hierarchy for how documents are organized. As a result, it is | hierarchy for how documents are organized. As a result, it is | |||
| necessary to discuss how that organization relates to the rough data | necessary to discuss how that organization relates to the rough data | |||
| model presented here. | model presented here. | |||
| When a user or device enrolls with a SUBSCRIBE request, the request | When a user or device enrolls with a SUBSCRIBE request, the request | |||
| will contain some kind of identifying information for that user or | UIR will contain some kind of identifying information for that user | |||
| device. This identity is mapped to an XCAP User ID (XUID) based on | or device. This identity is mapped to an XCAP User ID (XUID) based | |||
| an implementation specific mapping. The "profile-name" along with | on an implementation specific mapping. The "profile-type" along with | |||
| the "app-id" Event header parameters specify the specific XCAP | the "app-id" Event header parameters specify the specific XCAP | |||
| application usage. | application usage. | |||
| In particular, when the "profile-name" is "application", the "app-id" | In particular, when the Event header parameter "profile-type" is | |||
| contains the XCAP Application Unique ID (AUID). When the | "application", the "app-id" MAY be included to contain the XCAP | |||
| "profile-name" is application, but the "app-id" parameter is absent, | Application Unique ID (AUID). When the "profile-type" is | |||
| this specifies that the user wishes to SUBSCRIBE to all documents for | "application", but the "app-id" parameter is absent, this specifies | |||
| all application usages associated with the user in the request-uri. | that the user wishes to SUBSCRIBE to all documents for all | |||
| This provides a convenient way for a single subscription to be used | application usages associated with the user in the request-uri. This | |||
| to obtain all application data. The XCAP root is determined by a | provides a convenient way for a single subscription to be used to | |||
| local mapping. | obtain all application data. The XCAP root is determined by a local | |||
| mapping. | ||||
| When the "profile-name" is "device", or "user" or "local-network", | When the "profile-type" is "device", or "user" or "local", this maps | |||
| this maps to an AUID and document selector for representing device, | to an AUID and document selector for representing device, user and | |||
| user and local-network data, respectively. The mapping is a matter | local-network data, respectively. The mapping is a matter of local | |||
| of local policy. This allows different providers to use different | policy. This allows different providers to use different XCAP | |||
| XCAP application usages and document schemas for representing these | application usages and document schemas for representing these | |||
| profiles, without having to configure the device with the specific | profiles, without having to configure the device with the specific | |||
| AUID which is being used. | AUID which is being used. | |||
| Furthermore, when the "document" attribute is present, it identifies | Furthermore, when the "document" attribute is present, it identifies | |||
| a specific document that is being requested. If the "profile-name" | a specific document that is being requested. If the "profile-type" | |||
| is "application", the "app-id" MUST be present as well. The | is "application", the "app-id" MAY be present as well if the | |||
| "document" attribute then specifies a relative path reference. Its | "document" relative path does not indicate the specific application | |||
| first path segment is either "global", specifying global data, or | profile. The "document" attribute then specifies a relative path | |||
| "user", specifying user data for the user in the request URI. The | reference. Its first path segment is either "global", specifying | |||
| next path segment identifies the path in the global directory or the | global data, or "user", specifying user data for the user in the | |||
| user's home directory. | request URI. The next path segment identifies the path in the global | |||
| directory or the user's home directory. For "profile-type" | ||||
| "application", if "app-id" is not present the next path segment (i.e. | ||||
| after "global" or the user's home directory segment) MAY indicate the | ||||
| XCAP Application Unique ID (AUID) if the user agent wishes to | ||||
| subscribe to a specific application profile. | ||||
| For example, consider a phone with an instance ID of | For example, consider a phone with an instance ID of | |||
| urn:uuid:00000000-0000-0000-0000-0003968cf920. To obtain its device | urn:uuid:00000000-0000-0000-0000-0003968cf920. To obtain its device | |||
| profile, it would generate a SUBSCRIBE that looks like this: | profile, it would generate a SUBSCRIBE that contain the following | |||
| Request-Line and Event header: | ||||
| SUBSCRIBE | SUBSCRIBE | |||
| sip:urn%3auuid%3a00000000-0000-0000-0000-0003968cf920@example.com | sip:urn%3auuid%3a00000000-0000-0000-0000-0003968cf920@example.com | |||
| Event: sip-profile;profile-name=device | SIP/2.0 | |||
| If the profile data is stored in an XCAP server, the server would the | Event: sip-profile;profile-type=device | |||
| "device" profile to an application usage and document selector based | ||||
| on local policy. If this mapping specifies the AUID | If the profile data is stored in an XCAP server, the server would map | |||
| the "device" profile to an application usage and document selector | ||||
| based on local policy. If this mapping specifies the AUID | ||||
| "vendor2-device-data" and a document called "index" within the user | "vendor2-device-data" and a document called "index" within the user | |||
| directory, the corresponding HTTP URI for the document is: | directory, the corresponding HTTP URI for the document is: | |||
| http://xcap.example.com/root/vendor2-device-data/users/ | http://xcap.example.com/root/vendor2-device-data/users/ | |||
| urn%3auuid%3a00000000-0000-0000-0000-0003968cf920/index | urn%3auuid%3a00000000-0000-0000-0000-0003968cf920/index | |||
| and indeed, if a content indirection is returned in a NOTIFY, the URL | and indeed, if a content indirection is returned in a NOTIFY, the URL | |||
| would equal this. | would equal this. | |||
| That user profile might specify the user identity (as a SIP AOR) and | That user profile might specify the user identity (as a SIP AOR) and | |||
| their application-usages. From that, the device can enroll to learn | their application-usages. From that, the device can enroll to learn | |||
| about its application data. To learn about all of the data: | about its application data. To learn about all of the data: | |||
| SUBSCRIBE sip:user-aor@example.com SIP/2.0 | SUBSCRIBE sip:user-aor@example.com SIP/2.0 | |||
| Event: sip-profile;profile-name=application | Event: sip-profile;profile-type=application | |||
| The server would map the request URI to an XUI (user-aor, for | The server would map the request URI to an XUI (user-aor, for | |||
| example) and the xcap root based on local policy. If there are two | example) and the xcap root based on local policy. If there are two | |||
| AUIDs, "resource-lists" [I-D.ietf-simple-xcap-list-usage] and | AUIDs, "resource-lists" [I-D.ietf-simple-xcap-list-usage] and | |||
| "rls-services" [I-D.ietf-simple-xcap-list-usage], this would result | "rls-services" [I-D.ietf-simple-xcap-list-usage], this would result | |||
| in a subscription to all documents within: | in a subscription to all documents within: | |||
| http://xcap.example.com/root/rls-services/users/user-aor | http://xcap.example.com/root/rls-services/users/user-aor | |||
| http://xcap.example.com/root/resource-lists/users/user-aor | http://xcap.example.com/root/resource-lists/users/user-aor | |||
| The user would not be subscribed to the global data for these two | The user would not be subscribed to the global data for these two | |||
| application usages, since that data is not important for users. | application usages, since that data is not important for users. | |||
| However, the user/device could be made aware that it needs to | However, the user/device could be made aware that it needs to | |||
| subscribe to a specific document. In that case, its subscribe would | subscribe to a specific document. In that case, its subscribe would | |||
| look like: | look like: | |||
| SUBSCRIBE sip:user-aor@example.com SIP/2.0 | SUBSCRIBE sip:user-aor@example.com SIP/2.0 | |||
| Event: sip-profile;profile-name=application;app-id=resource-lists | Event: sip-profile;profile-type=application;app-id=resource-lists | |||
| ;document="global/index" | ;document="global/index" | |||
| this would result in a subscription to the single global document for | this would result in a subscription to the single global document for | |||
| resource-lists. | resource-lists. | |||
| In some cases, these subscriptions are to a multiplicity of | In some cases, these subscriptions are to a multiplicity of | |||
| documents. In that case, the notification format will need to be one | documents. In that case, the notification format will need to be one | |||
| which can indicate what document has changed. This includes content | which can indicate what document has changed. This includes content | |||
| indirection, but also the xcap diff format | indirection, but also the xcap diff format | |||
| [I-D.ietf-simple-xcap-package]. | [I-D.ietf-simple-xcap-package]. | |||
| skipping to change at page 23, line 21 ¶ | skipping to change at page 26, line 27 ¶ | |||
| specification. | specification. | |||
| 5.1 SIP Event Package | 5.1 SIP Event Package | |||
| This specification registers a new event package as defined in | This specification registers a new event package as defined in | |||
| [RFC3265]. The following information required for this registration: | [RFC3265]. The following information required for this registration: | |||
| Package Name: sip-profile | Package Name: sip-profile | |||
| Package or Template-Package: This is a package | Package or Template-Package: This is a package | |||
| Published Document: RFC XXXX (Note to RFC Editor: Please fill in | Published Document: RFC XXXX (Note to RFC Editor: Please fill in | |||
| XXXX with the RFC number of this specification). | XXXX with the RFC number of this specification). | |||
| Person to Contact: Daniel Petrie dpetrie@pingtel.com | Person to Contact: Daniel Petrie dpetrie AT pingtel.com | |||
| New event header parameters: profile-name, vendor, model, version, | New event header parameters: profile-type, vendor, model, version, | |||
| effective-by, document, app-id | effective-by, document, app-id, network-user | |||
| 6. Security Considerations | 6. Security Considerations | |||
| Profiles may contain sensitive data such as user credentials. The | Profiles may contain sensitive data such as user credentials. The | |||
| protection of this data depends upon how the data is delivered. If | protection of this data depends upon how the data is delivered. If | |||
| the data is delivered in the NOTIFY body, SIP authentication MUST be | the data is delivered in the NOTIFY body, SIP authentication MUST be | |||
| used for SUBSCRIPTION and SIPS and/or S/MIME MAY be use to encrypt | used for SUBSCRIPTION and SIPS and/or S/MIME MAY be use to encrypt | |||
| the data. If the data is provided via content indirection, SIP | the data. If the data is provided via content indirection, SIP | |||
| authentication is not necessary for the SUBSCRIBE request. With | authentication is not necessary for the SUBSCRIBE request. With | |||
| content indirection the data is protected via the authentication, | content indirection the data is protected via the authentication, | |||
| skipping to change at page 24, line 18 ¶ | skipping to change at page 27, line 24 ¶ | |||
| or authorization for the retrieval as the profiles are obscured. The | or authorization for the retrieval as the profiles are obscured. The | |||
| user agent must obtain the username and password from the user or | user agent must obtain the username and password from the user or | |||
| other out of band means to generate the key and decrypt the profiles. | other out of band means to generate the key and decrypt the profiles. | |||
| 7. Change History | 7. Change History | |||
| Many thanks to those who contributed and commented on the many | Many thanks to those who contributed and commented on the many | |||
| iterations of this document. Detailed input was provided by Jonathan | iterations of this document. Detailed input was provided by Jonathan | |||
| Rosenberg from Dynamicsoft, Henning Schulzrinne from Columbia U., | Rosenberg from Dynamicsoft, Henning Schulzrinne from Columbia U., | |||
| Cullen Jennings from Cisco, Rohan Mahy from Cisco, Rich Schaaf from | Cullen Jennings from Cisco, Rohan Mahy from Cisco, Rich Schaaf from | |||
| Pingtel, Volker Hilt from Bell Labs. | Pingtel, Volker Hilt from Bell Labs, Hisham khartabil from Nokia, | |||
| Henry Sinnreich from MCI, Martin Dolly from ATT Labs, and John Elwell | ||||
| from Siemens. | ||||
| 7.1 Changes from draft-ietf-sipping-config-framework-03.txt | 7.1 Changes from draft-ietf-sipping-config-framework-04.txt | |||
| Clarified usage of instance-id | ||||
| Specify which event header parameters are mandatory or optional | ||||
| and in which messages. | ||||
| Included complete list of event header parameters in parameter | ||||
| overview and IANA sections. | ||||
| Removed TFTP reference as protocol for profile transport. | ||||
| Added examples for discovery. | ||||
| Added ABNF for all event header parameters. | ||||
| Changed profile-name parameter back to profile-type. This was | ||||
| changed profile-name in 02 when the parameter could contain either | ||||
| a token or a path. Now that the path is contained in the separate | ||||
| parameter: "document", profile-type make more sense as the | ||||
| parameter name. | ||||
| Fixed some statements that should have and should not have been | ||||
| normative. | ||||
| Added the ability for the user agent to request that the default | ||||
| user associated with the device be set/changed using the | ||||
| "network-user" parameter. | ||||
| A bunch of editorial nits and fixes. | ||||
| 7.2 Changes from draft-ietf-sipping-config-framework-03.txt | ||||
| Incorporated changes to better support the requirements for the use | Incorporated changes to better support the requirements for the use | |||
| of this event package with XCAP and SIMPLE so that we can have one | of this event package with XCAP and SIMPLE so that we can have one | |||
| package (i.e. simple-xcap-package now defines a content type not a | package (i.e. simple-xcap-package now defines a content type not a | |||
| package). Added an additional profile type: application. Added | package). Added an additional profile type: "application". Added | |||
| document and app-id Event header parameters in support of the | document and app-id Event header parameters in support of the | |||
| application profile. Define a loose high level data model or | application profile. Define a loose high level data model or | |||
| relationship between the four profile types. Tried to edit and fix | relationship between the four profile types. Tried to edit and fix | |||
| the confusing and ambiguous sections related to URI formation and | the confusing and ambiguous sections related to URI formation and | |||
| discovery for the different profile types. Better describe the | discovery for the different profile types. Better describe the | |||
| importance of uniqueness for the instance id which is used in the | importance of uniqueness for the instance id which is used in the | |||
| user part of the device URI. | user part of the device URI. | |||
| 7.2 Changes from draft-ietf-sipping-config-framework-02.txt | 7.3 Changes from draft-ietf-sipping-config-framework-02.txt | |||
| Added the concept of the local network as a source of profile data. | Added the concept of the local network as a source of profile data. | |||
| There are now three separate logical sources for profile data: user, | There are now three separate logical sources for profile data: user, | |||
| device and local network. Each of these requires a separate | device and local network. Each of these requires a separate | |||
| subscription to obtain. | subscription to obtain. | |||
| 7.3 Changes from draft-ietf-sipping-config-framework-01.txt | 7.4 Changes from draft-ietf-sipping-config-framework-01.txt | |||
| Changed the name of the profile-type event parameter to profile-name. | Changed the name of the profile-type event parameter to profile-name. | |||
| Also allow the profile-name parameter to be either a token or an | Also allow the profile-name parameter to be either a token or an | |||
| explicit URI. | explicit URI. | |||
| Allow content indirection to be optional. Clarified the use of the | Allow content indirection to be optional. Clarified the use of the | |||
| Accept header to indicate how the profile is to be delivered. | Accept header to indicate how the profile is to be delivered. | |||
| Added some content to the Iana section. | Added some content to the Iana section. | |||
| 7.4 Changes from draft-ietf-sipping-config-framework-00.txt | 7.5 Changes from draft-ietf-sipping-config-framework-00.txt | |||
| This version of the document was entirely restructured and re-written | This version of the document was entirely restructured and re-written | |||
| from the previous version as it had been micro edited too much. | from the previous version as it had been micro edited too much. | |||
| All of the aspects of defining the event package are now organized in | All of the aspects of defining the event package are now organized in | |||
| one section and is believed to be complete and up to date with | one section and is believed to be complete and up to date with | |||
| [RFC3265]. | [RFC3265]. | |||
| The URI used to subscribe to the event package is now either the user | The URI used to subscribe to the event package is now either the user | |||
| or device address or record. | or device address or record. | |||
| skipping to change at page 25, line 24 ¶ | skipping to change at page 29, line 4 ¶ | |||
| The URI used to subscribe to the event package is now either the user | The URI used to subscribe to the event package is now either the user | |||
| or device address or record. | or device address or record. | |||
| The user agent information (vendor, model, MAC and serial number) are | The user agent information (vendor, model, MAC and serial number) are | |||
| now provided as event header parameters. | now provided as event header parameters. | |||
| Added a mechanism to force profile changes to be make effective by | Added a mechanism to force profile changes to be make effective by | |||
| the user agent in a specified maximum period of time. | the user agent in a specified maximum period of time. | |||
| Changed the name of the event package from sip-config to sip-profile | Changed the name of the event package from sip-config to sip-profile | |||
| Three high level security approaches are now specified. | Three high level security approaches are now specified. | |||
| 7.5 Changes from draft-petrie-sipping-config-framework-00.txt | 7.6 Changes from draft-petrie-sipping-config-framework-00.txt | |||
| Changed name to reflect SIPPING work group item | Changed name to reflect SIPPING work group item | |||
| Synchronized with changes to SIP DHCP [RFC3361], SIP [RFC3261] and | Synchronized with changes to SIP DHCP [RFC3361], SIP [RFC3261] and | |||
| [RFC3263], SIP Events [RFC3265] and content indirection | [RFC3263], SIP Events [RFC3265] and content indirection | |||
| [I-D.ietf-sip-content-indirect-mech] | [I-D.ietf-sip-content-indirect-mech] | |||
| Moved the device identity parameters from the From field parameters | Moved the device identity parameters from the From field parameters | |||
| to User-Agent header parameters. | to User-Agent header parameters. | |||
| Many thanks to Rich Schaaf of Pingtel, Cullen Jennings of Cisco and | Many thanks to Rich Schaaf of Pingtel, Cullen Jennings of Cisco and | |||
| Adam Roach of Dyamicsoft for the great comments and input. | Adam Roach of Dyamicsoft for the great comments and input. | |||
| 7.6 Changes from draft-petrie-sip-config-framework-01.txt | 7.7 Changes from draft-petrie-sip-config-framework-01.txt | |||
| Changed the name as this belongs in the SIPPING work group. | Changed the name as this belongs in the SIPPING work group. | |||
| Minor edits | Minor edits | |||
| 7.7 Changes from draft-petrie-sip-config-framework-00.txt | 7.8 Changes from draft-petrie-sip-config-framework-00.txt | |||
| Split the enrollment into a single SUBSCRIBE dialog for each profile. | Split the enrollment into a single SUBSCRIBE dialog for each profile. | |||
| The 00 draft sent a single SUBSCRIBE listing all of the desired. | The 00 draft sent a single SUBSCRIBE listing all of the desired. | |||
| These have been split so that each enrollment can be routed | These have been split so that each enrollment can be routed | |||
| differently. As there is a concept of device specific and user | differently. As there is a concept of device specific and user | |||
| specific profiles, these may also be managed on separate servers. | specific profiles, these may also be managed on separate servers. | |||
| For instance in a roaming situation the device might get its profile | For instance in a roaming situation the device might get its profile | |||
| data from a local server which knows the LAN specific profile data. | data from a local server which knows the LAN specific profile data. | |||
| At the same time the user specific profiles might come from the | At the same time the user specific profiles might come from the | |||
| user's home environment profile delivery server. | user's home environment profile delivery server. | |||
| skipping to change at page 26, line 28 ¶ | skipping to change at page 30, line 10 ¶ | |||
| Added the User-Profile From header field parameter so that the device | Added the User-Profile From header field parameter so that the device | |||
| can request a user specific profile for a user that is different from | can request a user specific profile for a user that is different from | |||
| the device's default user. | the device's default user. | |||
| 8 References | 8 References | |||
| [I-D.ietf-simple-xcap] | [I-D.ietf-simple-xcap] | |||
| Rosenberg, J., "The Extensible Markup Language (XML) | Rosenberg, J., "The Extensible Markup Language (XML) | |||
| Configuration Access Protocol (XCAP)", | Configuration Access Protocol (XCAP)", | |||
| draft-ietf-simple-xcap-02 (work in progress), February | draft-ietf-simple-xcap-04 (work in progress), October | |||
| 2004. | 2004. | |||
| [I-D.ietf-simple-xcap-list-usage] | [I-D.ietf-simple-xcap-list-usage] | |||
| Rosenberg, J., "An Extensible Markup Language (XML) | Rosenberg, J., "Extensible Markup Language (XML) Formats | |||
| Configuration Access Protocol (XCAP) Usage for Presence | for Representing Resource Lists", | |||
| Lists", draft-ietf-simple-xcap-list-usage-02 (work in | draft-ietf-simple-xcap-list-usage-04 (work in progress), | |||
| progress), February 2004. | October 2004. | |||
| [I-D.ietf-simple-xcap-package] | [I-D.ietf-simple-xcap-package] | |||
| Rosenberg, J., "A Session Initiation Protocol (SIP) Event | Rosenberg, J., "An Extensible Markup Language (XML) | |||
| Package for Modification Events for the Extensible Markup | Document Format for Indicating Changes in XML | |||
| Language (XML) Configuration Access Protocol (XCAP) | Configuration Access Protocol (XCAP) Resources", | |||
| Managed Documents", draft-ietf-simple-xcap-package-01 | draft-ietf-simple-xcap-package-02 (work in progress), July | |||
| (work in progress), February 2004. | 2004. | |||
| [I-D.ietf-sip-content-indirect-mech] | [I-D.ietf-sip-content-indirect-mech] | |||
| Olson, S., "A Mechanism for Content Indirection in Session | Burger, E., "A Mechanism for Content Indirection in | |||
| Initiation Protocol (SIP) Messages", | Session Initiation Protocol (SIP) Messages", | |||
| draft-ietf-sip-content-indirect-mech-03 (work in | draft-ietf-sip-content-indirect-mech-05 (work in | |||
| progress), June 2003. | progress), October 2004. | |||
| [I-D.ietf-sip-gruu] | [I-D.ietf-sip-gruu] | |||
| Rosenberg, J., "Obtaining and Using Globally Routable User | Rosenberg, J., "Obtaining and Using Globally Routable User | |||
| Agent (UA) URIs (GRUU) in the Session Initiation Protocol | Agent (UA) URIs (GRUU) in the Session Initiation Protocol | |||
| (SIP)", draft-ietf-sip-gruu-02 (work in progress), July | (SIP)", draft-ietf-sip-gruu-02 (work in progress), July | |||
| 2004. | 2004. | |||
| [I-D.ietf-sipping-ua-prof-framewk-reqs] | [I-D.ietf-sipping-ua-prof-framewk-reqs] | |||
| Petrie, D. and C. Jennings, "Requirements for SIP User | Petrie, D. and C. Jennings, "Requirements for SIP User | |||
| Agent Profile Delivery Framework", | Agent Profile Delivery Framework", | |||
| skipping to change at page 27, line 29 ¶ | skipping to change at page 31, line 10 ¶ | |||
| [I-D.sinnreich-sipdev-req] | [I-D.sinnreich-sipdev-req] | |||
| Butcher, I., Lass, S., Petrie, D., Sinnreich, H. and C. | Butcher, I., Lass, S., Petrie, D., Sinnreich, H. and C. | |||
| Stredicke, "SIP Telephony Device Requirements and | Stredicke, "SIP Telephony Device Requirements and | |||
| Configuration", draft-sinnreich-sipdev-req-04 (work in | Configuration", draft-sinnreich-sipdev-req-04 (work in | |||
| progress), July 2004. | progress), July 2004. | |||
| [RFC0822] Crocker, D., "Standard for the format of ARPA Internet | [RFC0822] Crocker, D., "Standard for the format of ARPA Internet | |||
| text messages", STD 11, RFC 822, August 1982. | text messages", STD 11, RFC 822, August 1982. | |||
| [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", STD | ||||
| 9, RFC 959, October 1985. | ||||
| [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. | |||
| [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC | [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC | |||
| 2131, March 1997. | 2131, March 1997. | |||
| [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | |||
| Extensions", RFC 2132, March 1997. | Extensions", RFC 2132, March 1997. | |||
| [RFC2141] Moats, R., "URN Syntax", RFC 2141, May 1997. | [RFC2141] Moats, R., "URN Syntax", RFC 2141, May 1997. | |||
| [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | |||
| RFC 2246, January 1999. | RFC 2246, January 1999. | |||
| [RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform | ||||
| Resource Identifiers (URI): Generic Syntax", RFC 2396, | ||||
| August 1998. | ||||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
| Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext | |||
| 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, S., | |||
| Leach, P., Luotonen, A. and L. Stewart, "HTTP | Leach, P., Luotonen, A. and L. Stewart, "HTTP | |||
| Authentication: Basic and Digest Access Authentication", | Authentication: Basic and Digest Access Authentication", | |||
| RFC 2617, June 1999. | RFC 2617, June 1999. | |||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
| skipping to change at page 28, line 26 ¶ | skipping to change at page 32, line 13 ¶ | |||
| Event Notification", RFC 3265, June 2002. | Event Notification", RFC 3265, June 2002. | |||
| [RFC3361] Schulzrinne, H., "Dynamic Host Configuration Protocol | [RFC3361] Schulzrinne, H., "Dynamic Host Configuration Protocol | |||
| (DHCP-for-IPv4) Option for Session Initiation Protocol | (DHCP-for-IPv4) Option for Session Initiation Protocol | |||
| (SIP) Servers", RFC 3361, August 2002. | (SIP) Servers", RFC 3361, August 2002. | |||
| [RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access | [RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access | |||
| Protocol (v3): Technical Specification", RFC 3377, | Protocol (v3): Technical Specification", RFC 3377, | |||
| September 2002. | September 2002. | |||
| [RFC3617] Lear, E., "Uniform Resource Identifier (URI) Scheme and | ||||
| Applicability Statement for the Trivial File Transfer | ||||
| Protocol (TFTP)", RFC 3617, October 2003. | ||||
| [W3C.REC-xml-names11-20040204] | [W3C.REC-xml-names11-20040204] | |||
| Layman, A., Tobin, R., Bray, T. and D. Hollander, | Tobin, R., Hollander, D., Layman, A. and T. Bray, | |||
| "Namespaces in XML 1.1", W3C REC REC-xml-names11-20040204, | "Namespaces in XML 1.1", W3C REC REC-xml-names11-20040204, | |||
| February 2004. | February 2004. | |||
| Author's Address | Author's Address | |||
| Daniel Petrie | Daniel Petrie | |||
| Pingtel Corp. | Pingtel Corp. | |||
| 400 W. Cummings Park | 400 W. Cummings Park | |||
| Suite 2200 | Suite 2200 | |||
| Woburn, MA 01801 | Woburn, MA 01801 | |||
| US | US | |||
| Phone: "Dan Petrie (+1 781 938 5306)"<sip:dpetrie@pingtel.com> | Phone: "Dan Petrie (+1 781 938 5306)"<sip:dpetrie AT pingtel.com> | |||
| EMail: dpetrie@pingtel.com | EMail: dpetrie AT pingtel.com | |||
| URI: http://www.pingtel.com/ | URI: http://www.pingtel.com/ | |||
| Appendix A. Acknowledgments | Appendix A. Acknowledgments | |||
| Intellectual Property Statement | Intellectual Property Statement | |||
| The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
| intellectual property or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
| pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
| this document or the extent to which any license under such rights | this document or the extent to which any license under such rights | |||
| might or might not be available; neither does it represent that it | might or might not be available; nor does it represent that it has | |||
| has made any effort to identify any such rights. Information on the | made any independent effort to identify any such rights. Information | |||
| IETF's procedures with respect to rights in standards-track and | on the procedures with respect to rights in RFC documents can be | |||
| standards-related documentation can be found in BCP-11. Copies of | found in BCP 78 and BCP 79. | |||
| claims of rights made available for publication and any assurances of | ||||
| licenses to be made available, or the result of an attempt made to | Copies of IPR disclosures made to the IETF Secretariat and any | |||
| obtain a general license or permission for the use of such | assurances of licenses to be made available, or the result of an | |||
| proprietary rights by implementors or users of this specification can | attempt made to obtain a general license or permission for the use of | |||
| be obtained from the IETF Secretariat. | such proprietary rights by implementers or users of this | |||
| specification can be obtained from the IETF on-line IPR repository at | ||||
| http://www.ietf.org/ipr. | ||||
| The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
| rights which may cover technology that may be required to practice | rights that may cover technology that may be required to implement | |||
| this standard. Please address the information to the IETF Executive | this standard. Please address the information to the IETF at | |||
| Director. | ietf-ipr@ietf.org. | |||
| The IETF has been notified of intellectual property rights claimed in | The IETF has been notified of intellectual property rights claimed in | |||
| regard to some or all of the specification contained in this | regard to some or all of the specification contained in this | |||
| document. For more information consult the online list of claimed | document. For more information consult the online list of claimed | |||
| rights. | rights. | |||
| Full Copyright Statement | Disclaimer of Validity | |||
| Copyright (C) The Internet Society (2004). All Rights Reserved. | ||||
| This document and translations of it may be copied and furnished to | This document and the information contained herein are provided on an | |||
| others, and derivative works that comment on or otherwise explain it | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
| or assist in its implementation may be prepared, copied, published | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | |||
| and distributed, in whole or in part, without restriction of any | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | |||
| kind, provided that the above copyright notice and this paragraph are | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | |||
| included on all such copies and derivative works. However, this | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
| document itself may not be modified in any way, such as by removing | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| the copyright notice or references to the Internet Society or other | ||||
| Internet organizations, except as needed for the purpose of | ||||
| developing Internet standards in which case the procedures for | ||||
| copyrights defined in the Internet Standards process must be | ||||
| followed, or as required to translate it into languages other than | ||||
| English. | ||||
| The limited permissions granted above are perpetual and will not be | Copyright Statement | |||
| revoked by the Internet Society or its successors or assignees. | ||||
| This document and the information contained herein is provided on an | Copyright (C) The Internet Society (2004). This document is subject | |||
| "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | to the rights, licenses and restrictions contained in BCP 78, and | |||
| TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | except as set forth therein, the authors retain all their rights. | |||
| BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | ||||
| HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | ||||
| MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
| Acknowledgment | Acknowledgment | |||
| Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is currently provided by the | |||
| Internet Society. | Internet Society. | |||
| End of changes. 122 change blocks. | ||||
| 372 lines changed or deleted | 547 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||