<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
        <!ENTITY rfc2119 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <!ENTITY rfc3265 PUBLIC ""
	  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3265.xml">
        <!ENTITY rfc3261 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml">
        <!ENTITY I-D.ietf-sipping-config-framework PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sipping-config-framework-13.xml">
]>

<rfc category="std" docName="draft-channabasappa-sipping-app-profile-type-01" ipr="full3978">

<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>

<?rfc toc="yes"?>
<?rfc iprnotified="yes" ?>
<?rfc compact="yes"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc strict="yes" ?>

<front>
        <title abbrev="Application Profile Type">
Extension to the ua-profile Event Package to Support the Application Profile Type
        </title>

        <author initials='S.C.' surname="Channabasappa" fullname='Sumanth Channabasappa'>
                <organization>CableLabs</organization>
                <address>
                        <postal>
                                <street>858 Coal Creek Circle</street>
                                <city>Louisville</city> <region>Co</region> 
                                <code>80027</code>
                                <country>USA</country>
                        </postal>
                        <email>sumanth@cablelabs.com</email>
                        <uri>http://www.cablelabs.com/</uri>
                </address>
        </author>

        <author initials='J.L.' surname="Littlefield" fullname='Josh Littlefield'>
                <organization>Cisco Systems, Inc.</organization>
                <address>
                        <postal>
                                <street>1414 Massachusetts Avenue</street>
                                <city>Boxborough</city> <region>MA</region> 
                                <code>01719</code>
                                <country>USA</country>
                        </postal>
                        <email>joshl@cisco.com</email>
                        <uri>http://www.cisco.com/</uri>
                </address>
        </author>

	<author initials='S.L.' surname="Loreto" fullname='Salvatore Loreto'>
                <organization>Ericsson, Inc.</organization>
                <address>
                        <postal>
                                <street>Hirsalantie 11</street>
                                <city>Jorvas</city> <region></region> 
                                <code>02420</code>
                                <country>Finland</country>
                        </postal>
                        <email>Salvatore.Loreto@ericsson.com</email>
                        <uri>http://www.ericsson.com/</uri>
                </address>
        </author>

        <date month="November" year="2007"/>

        <area>                   Transport        </area>

        <workgroup>              SIPPING          </workgroup>

        <keyword>                SIP              </keyword>
        <keyword>                Configuration    </keyword>
        <keyword>                Framework        </keyword>
        <keyword>                Application      </keyword>
        <keyword>                profile          </keyword>

        <abstract>
		<t>
   The SIP User Agent profile delivery framework describes how a User Agent can retrieve its data using a variety of protocols and defines a SIP event package for notifications of changes to those profiles.  This document extends that event package to support the application profile type.
                </t>
        </abstract>
</front>


<middle>
       <section title="Introduction">
		<t>
The SIP <xref target="RFC3261"/> User Agent profile delivery framework <xref target="I-D.ietf-sipping-config-framework"/> describes how a User Agent (UA) can retrieve its data using a variety of protocols. The framework also defines a SIP event package (ua-profile) for profile delivery, and notification of profile changes. The ua-profile event package contains a parameter identified by 'profile-type' that can be used to request data specific to certain type of profiles. This document extends the profile-type parameter to support an additional profile type, termed 'application'.  The 'application' profile type is used for delivery and change notification of profile content for the user's applications.
		</t>
       </section>

       <section anchor="Terminology" title="Terminology">
                <t>
                  The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in  <xref target="RFC2119">RFC 2119</xref>.        
                        <vspace blankLines='1' />
                This document also reuses the SIP terminology defined in <xref target="RFC3261"/> and <xref target="RFC3265"/>, and specifies the usage of the following terms.
		<vspace blankLines='1' />
		</t>
	</section>

	<section title="Profile Type Definition">
		<t>
		This document specifies a new profile type for use with the SIP UA configuration framework. The name of the profile type is 'application'. It is to be used in deployments where SIP UAs are provided with application specific configuration. This document also defines an additional event header parameter for use with the application profile type.
		</t>

		<section title="Parameter 'appids'">
			<t>
				The "appids" parameter describes the application profile being requested.  Its value is an identifier unique to the application, and defined by the application specification, along with the profile content. This parameter value SHOULD be provided in the SUBSCRIBE request, along with the other three parameters (vendor, model and version) specified in <xref target="I-D.ietf-sipping-config-framework"/>, only for the 'application' profile-type. This parameter is useful to the PDS to affect the profile provided.
			<vspace blankLines='1' />

            			<list style="hanging">
                        		<t hangText="COMMENT:">
						The namespace for application identifiers must be defined in order to ensure uniqueness.  A likely choice is to make the appids value be a URN.  Examples in this document do not reflect likely application identifiers. 
					</t>
				</list>
			<vspace blankLines='1' />

The "appids" parameter describes the specific application, or the list of applications, for which the user agent desires a profile subscription.
			<vspace blankLines='1' />
In the following ABNF defining the syntax, EQUAL and quoted-string are defined in [RFC3261]

			<figure>
                              <artwork>
    appids            = "appids=" list-of-app-ids
    list-of-app-ids   = DQUOTE app-id *("," app-id) DQUOTE
    app-id            = 1*(subset-print-chars)
    subset-print-chars= %x21 /%x23-25 / %x27-29 / %x2D-3C / %x3E-7E
                        ;All printable characters except ", =, &amp;, *, +
                        ;comma or white-space characters.
	
        Note: Need to validate the above ABNF.
				</artwork>
			</figure>

			<vspace blankLines='1' />
The "appids" parameter may appear in the Event header of the NOTIFY request to specify the actual application the NOTIFY belongs to. In the initial NOTIFY following a SUBSCRIBE, the appids parameter SHOULD list all applications obtained in the subscription, which may be a subset of the applications listed in the SUBSCRIBE.  The only case in which the "appids" parameter MAY be omitted from the initial NOTIFY is when only one application was listed in the SUBSCRIBE.  If the SUBSCRIBE included an "appids" parameter, the "appids" parameter of the initial NOTIFY MUST NOT list applications not present in the SUBSCRIBE.  If the parameter contains a list of applications, the order in the appids parameter MUST be the same as followed in the body (see below).  Subsequent NOTIFY requests on a single application subscription MAY omit the "appids", since the application context is implied by the subscription dialog.
			</t>
		</section>

		<section title="Summary of Event Header">
			<t>
The following are example Event headers which may occur in SUBSCRIBE requests.
The examples are not intended to show complete SUBSCRIBE requests.
			<vspace blankLines='1' />

			<figure>
                              <artwork>
Event: ua-profile;profile-type=application;
       vendor="vendor.example.com";model="Z100";version="1.2.3"
       
Event: ua-profile;profile-type=application;
       vendor="vendor.example.com";model="Z100";version="1.2.3";
       appids="myapplication"
       
Event: ua-profile;profile-type=application;
       vendor="vendor.example.com";model="Z100";version="1.2.3";
       appids="myapplication1","myapplication2","myapplication3"
				</artwork>
			</figure>


			<vspace blankLines='1' />
The following are example Event headers which may occur in NOTIFY requests.
These example headers are not intended to be complete NOTIFY requests.

			<figure>
                              <artwork>
Event: ua-profile;profile-type=application

Event: ua-profile;profile-type=application;appids="myapplication1"

Event: ua-profile;profile-type=application;
       appids="myapplication2","myapplication3"

				</artwork>
			</figure>

			<vspace blankLines='1' />
The table shows the use of Event header parameters in SUBSCRIBE requests for the application profile type:

			<figure>
                              <artwork>
   profile-type || application
   ===========================
   appids        ||     o

   m - mandatory
   s - SHOULD be provided
   o - optional
				</artwork>
			</figure>

			<vspace blankLines='1' />
The table shows the use of Event header parameters in NOTIFY requests for the application profile type:

			<figure>
                              <artwork>
   profile-type || application
   ===========================================================
   appids        ||     o
				</artwork>
			</figure>
	
			</t>
		</section>

		<section title="SUBSCRIBE Bodies">
			<t>
		This draft defines an enhancement to the<xref target="I-D.ietf-sipping-config-framework"/> by specifying a use for the SUBSCRIBE request body. If the appids parameter contained a list of applications, the body of the SUBSCRIBE SHOULD include appropriate bodies for each of the applications for which the user-agent is subscribing, in the same order in which they are listed in the appids parameter. If present in the SUBSCRIBE request, the body SHALL be used by the each of the application specific PDSs to tailor the NOTIFY responses to the subscribing UA for each of the applications listed. 
			</t>
		</section>

		<section title="NOTIFY Bodies">
			<t>
The NOTIFY message body contains a content type specific to the requested application (this type must be listed in the Accept header of the SUBSCRIBE).  If the subscription is for multiple applications, the initial NOTIFY message body will contain a "multipart/mixed" content-type, and the ordering of the body-parts corresponds to the ordering of the "appids" application values.

            			<list style="hanging">
                        		<t hangText="COMMENT:">
				 	An alternative to multipart/mixed content is to require all applications supporting multi-application subscription to conform to a common XML container schema, which in turn contains the application-specific profile content, or content-indirection information.
					</t>
				</list>
			</t>
		</section>
	</section>


	<section title="Example Usage">
		<t>

                        <figure>
				<artwork>
<![CDATA[
   SUBSCRIBE sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB
             @example.com  SIP/2.0
   Event: ua-profile;profile-type=application;appids="sampleapplication"
   From: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB
          @example.com;tag=1234
   To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com
   Call-ID: 3573853342923422@192.0.2.44
   CSeq: 2131 SUBSCRIBE
   Contact: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB
            @example.com
      ;+sip.instance="<urn:uuid:00000000-0000-0000-0000-123456789AB0>"
   Via: SIP/2.0/TCP 192.0.2.41;
     branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a
   Accept: message/external-body, application/x-z100-device-profile
   Content-Length: 0
]]>

                                </artwork>
                        </figure>
		</t>
	</section>

	<section title="IANA Considerations">
		<t>
			There is one consideration associated with this document. Specifically it registers a new profile type as specified in <xref target="I-D.ietf-sipping-config-framework"/>.
			<vspace blankLines='1' />
    
                        <figure>
                                    <artwork>
         Profile Type                          Reference
         --------------                         ---------
         application                            [RFCXXXX]


         CONTACT:
         -------
         sumanth@cablelabs.com
                                </artwork>
                        </figure>

			<vspace blankLines='1' />
Note to RFC editor: Please replace RFCXXXX with the RFC number assigned to this document.
	 
		</t>
	</section>

	<section title="Security Considerations">
		<t>
			This document is an extension to the SIP Configuration Framework and as such inherits the security considerations for profile delivery as listed in <xref target="I-D.ietf-sipping-config-framework"/>. In addition, the presence of application ids in the SUBSCRIBE and NOTIFY bodies plays an important role in how the profile data is received by the client. A man-in-the-middle who manipulates the application ids can effectively cause a disruption in application profile data delivery. (Editor's note: Need to add more security considerations, e.g., when is the presence of an app-id a threat.)
		</t>
	</section>

        <section title="Acknowledgements">
            <t>
		    The authors appreciate the feedback received on the SIPPING WG so far, specifically Sam Ganesan from Motorola, Brett Tate from Broadsoft and Paul Kyzivat from Cisco.
	    </t>
	</section>


</middle>


<back>
	<references title="Normative References">
		&rfc2119;
		&rfc3265;
		&rfc3261;
		&I-D.ietf-sipping-config-framework;
	</references>
</back>


</rfc>



