<?xml version='1.0' ?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
<rfc ipr='full2026' docName='draft-willis-sip-infopackage-00' >
  <?rfc toc='yes' ?>
  <?rfc tocompact='no' ?>
  <?rfc compact='yes' ?>
  <?rfc subcompact='yes' ?>
  <?rfc strict="yes" ?>
  <?rfc iprnotified="no" ?>
 
 <front> 
    
    <title abbrev='SIP INFO Packaging and Negotiation'>
      Packaging and Negotiation of INFO Methods for the Session Initiation Protocol (SIP)
    </title>
      <author initials='D.W' surname='Willis' fullname='Dean Willis'>
	 <organization abbrev='dynamicsoft Inc.'>
	   dynamicsoft Inc.
	 </organization>
         <address>
           <postal>
	      <street>5100 Tennyson Parkway</street>
	      <street>Suite 1200</street>
	      <city>Plano</city>
	      <region>TX</region>
	      <code>75028</code>
	      <country>US</country>
	   </postal>
	   <phone>+1 972 473 5455</phone>
	   <email>dean.willis@softarmor.com</email>
	   <uri>http://www.dynamicsoft.com/</uri>
	</address>
    </author>


    <date month='January' day='15' year='2002' />
    <area>Transport</area>
    <workgroup>SIP -- Session Initiation Protocol Working Group</workgroup>
    <keyword>SIP</keyword>
    <keyword>INFO</keyword>
    <keyword>packaging</keyword>
    <keyword>negotiation</keyword>

    <abstract>
      <t> The SIP INFO method (RFC 2976) establishes a method by which
        applications may transfer application-specific information
        within a SIP dialog. However, RFC 2976 does not provide a
        mechanism for describing and documenting an application of
        INFO, nor does it provide a mechanism by which applications
        may negotiate such uses. This document provides a framework
        for documenting and naming specific uses of INFO (called INFO
        packages), for registering those package names with IANA, and
        for negotiating the support for various INFO packages between
        applications using SIP.
      </t>
    </abstract>

  </front> 

  <middle>

    <section 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>.</t>

    </section>

    <section title='Background'>

      <t> The SIP INFO Method is defined in <xref
        target="RFC2976">RFC 2976</xref>. The purpose of INFO, as
        described therein, is The purpose of the INFO message is "to
        carry application level information along the SIP signaling
        path." This purpose is further clarified as "The INFO method
        is not used to change the state of SIP calls, or the
        parameters of the sessions SIP initiates.  It merely sends
        optional application layer information, generally related to
        the session."
       </t>
       <t> However, <xref target="RFC2976">RFC 2976</xref> is
        restrained in its discussion of the semantics and usage of
        info. Particularly, it says "There are no specific semantics
        associated with INFO.  The semantics are derived from the body
        or new headers defined for usage in INFO." <xref
        target="RFC2976">RFC 2976</xref> further says "Handling
        of INFO messages that contain message bodies is outside the
        scope of this document.  The documents defining the message
        bodies will also need to define the SIP protocol rules
        associated with those message bodies."
      </t>
      <t> This lack of specificity has given rise to concerns such as
        those defined in <xref
        target="INFOHarmful">draft-rosenberg-sip-info-harmful</xref>
        that poorly documented uses of INFO might become commonplace,
        and that the lack of a negotiation mechanism for uses of INFO
        might make determining when and how two communication
        applications should use INFO dificult. This situation would
        not provide favorable conditions for the reliable
        interoperability expected of Internet protocols.
      </t>
      <t> The SIP Events specification <xref target="RFC3265">
        RFC 3265</xref> dealt with a similar problem of documentation
        and negotiation problem through the use of a registration
        template called an "event package", an accompanying IANA
        registray, and the use of a SIP extension header field
        "allow-events".
       </t>
       <t> This document uses a similar approach, specifying a
         registration template called an "info package", an
         accompanying IANA registry, and the SIP extension header
         field "Allow-Info". An options tag "info-package" is also
         provided to enable the negotiation of this capability using
         SIP options negotiation. The extension header field
         "Info-Type" is used in INFO requests to identify the type of
         information being transmitted in the request.
      </t>
    </section>

    <section title='Applicability Statement'>

      <t> The info package mechanism is applicable whenever an
        application makes use of the SIP INFO method. Any pre-existing
        usage of the INFO method will require publictaion and usage of
        an appropriate INFO package for conformance with thsi
        document.
      </t>

    </section>

    <section title="Allow-Info Header Field Definition and Syntax">

      <t> The Allow-Info header field is a SIP extension header field.
        It is used in conjunction with SIP requests to which the
        response may instantiate a dialog (e.g., INVITE, SUBSCRIBE)
        and with responses to the SIP OPTIONS request to indicate
        support for a set of info packages by the application issuing
        the request or response. Multiple instances of the Allow-Info
        header field may be present in a request or response, in which
        case the value is equivalent to the unordered union of all
        values in the set of Allow-Info header fields.
      </t>
 
      <t> The syntax for Allow-Info is defined as follows:
      </t>
      
      <t>Allow-Info = "Allow-Info" HCOLON info-value * (COMMA)
         info-value )
      </t>
 
      <t>info-value = token</t>

      <t> Note that the value specified MUST be registered in the
        IANA-maintained INFO Packages Namespace registry specified in
        this document.
      </t>

      <t> Support for the Allow-Info header field MUST be indicated by
        the inclusion of the "info-package" option tag as a value in
        the Supported header field of the request or reponse
        containing the Allow-Info header field.
      </t>


      <t> Implementations conformant with this specification MUST
        include the options tag "info-package" in all "Supported"
        header fields, and SHOULD include a "Supported" header field
        in all requests. Furthermore, whenever "info-package" is
        indicated as supported in a request or response, conformant
        implementations MUST include an "Allow-Info" header field
        containing as values the registered info package names of all
        info packages supported by that implementation in the context
        of that specific request or response.
      </t>

      <t> The allowable usage of header fields is described in tables
         2 and 3 of <xref target='RFC3261'>RFC 3261</xref>. The following
         additions to this table are required:
      </t>

      <figure anchor='figureT2'>
        <preamble>Addition of Allow-Info to SIP Table 2:</preamble>
        <artwork><![CDATA[

      Header field          where   proxy ACK BYE CAN INV OPT REG PRA
      _______________________________________________________________
      Allow-Info                       -   -   -   -   o   o   o   -


        ]]></artwork>
       </figure>
    </section>


    <section title="Info-Type Header Field Definition and Syntax">

      <t> The Info-Type header field is a SIP extension header field.
        It is used in conjunction with SIP INFO requests to indicate
        the specific Info Package relevant to the containing INFO
        request.
      </t>
 
      <t> The syntax for Info-Type is defined as follows: </t>
      
      <t>Info-Type = "Info-Type" HCOLON info-value </t>
 
      <t>info-value = token</t>

      <t >Note that the value specified MUST be registered in the
        IANA-maintained INFO Packages Namespace registry specified in
        this document.
      </t>

      <t> Support for the Info-Type header field MUST be indicated by
        the inclusion of the "info-package" option tag as a value in
        the Supported header field of the request or reponse
        containing the Allow-Info header field.
      </t>


      <t> Implementations conformant with this specification MUST
        include the options tag "info-package" in all "Supported"
        header fields, and SHOULD include a "Supported" header field
        in all requests. Imeplementations MUST include an "Info-Type"
        header field conatining as a )singular) value the registered
        Info Package na.
      </t>

      <t> The allowable usage of header fields is described in tables
         2 and 3 of <xref target='RFC3261'>RFC 3211</xref>. The following
         additions to this table are required:
      </t>

      <figure anchor='figureT3'>
        <preamble>Addition of Info-Type to SIP Table 2:</preamble>
        <artwork><![CDATA[

      Header field          where   proxy ACK BYE CAN INV OPT REG PRA
      _______________________________________________________________
      Info-Type             INFO       -   -   -   -   -   -   -   -


        ]]></artwork>
       </figure>
    </section>


    <section title="Registration of Info Packages">

      <t> This document does not define any info packages. Such
        packages will be defined by additional documents, published a
        standard, informational, experimental, or
        best-current-practice RFCs. In accordnance with the SIP Change
        process as documented in <xref
        target="sipchange">draft-tsvarea-sipchange</xref>, such
        documented shoud be accorded expert review by the SIP Working
        Group or its successor under that process.
      </t>

    </section>

    <section title="Usage">

       <t> The Info Package framework provides both for negotiating
         which info packages may be applied, and for declaring which
         INFO package is being applied to a specific INFO message.
       </t>

       <section title="Usage in Negotiation">

         <t> A SIP UA that understands Info Packages inserts the
           allow-info option tag as a value in a Supported header
           field. A UA receiving a message containing an all-info
           option tag (that understands this option tag) therefore
           knows that the sender understands Info Packages and is
           prepared to receive an Info request qualified by the
           Info-Type headerfield. 
         </t>

         <t> A SIP UA that understands Info=Packages and sends a
           request or response including an allow-info option tag also
           includes an Allow-Info header field listing as values the
           info packages it is willing to support.
         </t>
          
         <t> Consequently, usage of the allow-info option tag and the
           Allow-Info header field and associated values allows each
           UA in a dialog to positively discover that which of its
           peers in the dialog support Info Packages,and specifically
           which Info Packages they are willing to support.  
         </t>.
        

       </section>


       <section title='Usage in INFO Deliveries'>

         <t> A SIP UA sending an INFO request indicates the Info
           Package applicable to that request by including an
           Info-Type header field that contains a value indicating the
           specific Info Package being applied.
         </t>

       </section>

    </section>


    <section title='Security Considerations'>
      <t> There are few security considerations for this draft beyond
        those in <xref target="RFC3261">RFC 3261</xref>. In particular,
        the threat model and defenses specified therien apply.
      </t>

      <t> However, special guidance may be necessary for particular
        usages of INFO which may be specified in INFO packages
        documented and registered as described in this document. Where
        appropriate, such packages must document any security
        considerations that apply to the associated usage of INFO.
      </t>

    </section>

    <section title='IANA Considerations'>
      <section title='Additions to Existing SIP Registries'>
        <t>
          This document defines the SIP extension header field
          "Allow-Info", which IANA will add to the registry of SIP
          header fields defined in <xref
          target='RFC3261'>RFC 3261</xref>.
        </t>
        <t>
          This document also defines a new SIP option tag
          "info-package" which IANA will add to the registry of SIP
          option tags defined in <xref
          target='RFC3261'>RFC 3261</xref>.
        </t>
        <t>
          The following is the registration for the Allow-Info header field: 
          <list style='empty'>
            <t>
              <list style='hanging'>
                <t hangText="RFC Number:">RFCXXXX 
                    [Note to IANA: Fill in
                    with the RFC number of this specification.] 
                </t>
                <t></t>
                <t hangText="Header Field Name:">Allow-Info</t>
                <t></t>
                <t hangText="Compact Form:">none</t>
                <t></t>
              </list>
            </t>
          </list>
        </t>
        <t>The following is the registration for the info-package option tag: 
          <list style='empty'>
            <t>
              <list style='hanging'>
                 <t hangText="RFC Number:">
                    RFCXXXX [Note to IANA: Fill in
                    with the RFC number of this specification.]
                 </t>
                 <t></t>
                 <t hangText="Option Tag:">info-package</t>
              </list>
            </t>
          </list>
        </t> 
      </section>

      <section title='INFO Package Registry'>

        <t>   This document defines a new registry for "SIP Info
          Packages Namespace" to be maintained by IANA. This registry
          shall include the following fields:
        </t>

        <list style='hanging'>
           <t hangtext='Field:'>
             <t>Package Name: The assigned name of the package.</t>
             <t>Contact: The name and email address of the registering party.</t>
             <t>Reference: The number of the RFC documenting the package.</t>
           </t>
        </list>

        <t> This document defines no packages to be added to this
          regisry, so this registry will initially be blank. IANA is
          instructed to add packages to this registry upon publication
          of an RFC that defines the package name and its usage and
          directs IANA to add a package name to this registry. Such
          RFCs MUST be reviewed by the SIP Working Group or its
          successor in accordance with the SIP Change Process defined
          in <xref target="sipchange"> draft-tsvarea-sipchange</xref>.
        </t>

      </section>

    </section>
  </middle>

  <back>
    <references title='Normative References'>
      <?rfc include="reference.RFC.2026" ?>
      <?rfc include="reference.RFC.2119" ?>
      <?rfc include="reference.RFC.2223" ?>
      <?rfc include="reference.RFC.2976" ?>
      <?rfc include="reference.RFC.3261" ?>
      <?rfc include="reference.RFC.3265" ?>
      <reference anchor='sipchange'>
        <front>
          <title>SIP Change Process</title>
         <author initials='A' surname='Mankin' fullname='Allison Mankin'>
          <organization /> </author>
         <date month='December' year='2002' />
       </front> 
       <seriesInfo name="Internet-Draft" value="draft-tsvarea-sipchange-03" /> 
      </reference>
    </references>

    <references title='Non-Normative References'>

      <reference anchor='INFOHarmful'>
        <front>
          <title>The Session Initiation Protocol (SIP) INFO Method 
             Considered Harmful</title>
          <author initials='JDR' surname='Rosenberg' 
             fullname='Jonathan Rosenberg'> 
             <organization /> 
          </author>
          <date month='January' year='2003' />
        </front>  
        <seriesInfo name="Internet-Draft"
        value="draft-rosenberg-sip-info-harmful-00" />
      </reference>


   </references>

  </back>

</rfc>

