draft-ietf-simple-partial-notify-02.txt  -->   draft-ietf-simple-partial-notify-03.txt

view Side-By-Side changes


SIMPLE WG                                                    M. Lonnfors
Internet-Draft                                          J. Costa-Requena
Expires: October 19, 2004 April 25, 2005                                      E. Leppanen
                                                            H. Khartabil
                                                                   Nokia
                                                          April 20,
                                                        October 25, 2004


  Session Initiation Protocol (SIP) extension for Partial Notification
                        of Presence Information
                  draft-ietf-simple-partial-notify-02
                  draft-ietf-simple-partial-notify-03

Status of this Memo

   This document is an Internet-Draft and is subject to all provisions
   of section 3 of RFC 3667.  By submitting this Internet-Draft, I certify each
   author represents that any applicable patent or other IPR claims of
   which I am he or she is aware have been or will be disclosed, and any of
   which I he or she become aware will be disclosed, in accordance with
   RFC 3668.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as
   Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   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
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on October 19, 2004. April 25, 2005.

Copyright Notice

   Copyright (C) The Internet Society (2004). All Rights Reserved.

Abstract

   A Presence service can have constraints for delivering

   By default, presence
   information to devices with low data processing capabilities, small
   display, and limited battery power. Limitations can also be caused by
   the interface between delivered using the terminal and Presence Event Package for
   the network, i.e. radio links
   with high latency and low bandwidth. This memo presents a solution
   that aids Session Initiation Protocol is represented in reducing the impact Presence
   Information Data Format (PIDF).  A PIDF document contains a set of those constrains and to increase
   transport efficiency, by introducing
   elements, each representing a mechanism called partial different aspect of the presence being



Lonnfors, et al.         Expires October 19, 2004 April 25, 2005                 [Page 1]

Internet-Draft            Partial notification                April              October 2004


   notification.


   reported.  When any subset of the elements change, even a just a
   single element, a new document containing the full set of elements is
   delivered.  This memo defines an extension allowing delivery of a new
   document type that contains the data that has actually changed.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Introduction to the partial notification mechanism . . . . . .  4
     3.1   Basic presence agent operation . . . . . . . . . . . . . .  4
     3.2   Operation with partial notification  . . . . . . . . . . .  4
   4.  Client and server operations . . . . . . . . . . . . . . . . .  5
     4.1   Content-type for partial notifications . . . . . . . . . .  5
     4.2   Watcher generation of SUBSCRIBE requests . . . . . . . . .  5
     4.3   Presence agent processing of SUBSCRIBE requests  . . . . .  6  5
     4.4   Presence agent generation of partial notifications . . . .  6  5
     4.5   Watcher processing of NOTIFY requests  . . . . . . . . . .  7  6
   5.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . .  9  7
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 13
     6.1   Confidentiality  . . . . . . . . . . . . . . . . . . . . . 13
     6.2   Message Integrity and Authenticity . . . . . . . . . . . . 13
     6.3   Outbound Authentication  . . . . . . . . . . . . . . . . . 13
     6.4   Replay Prevention  . . . . . . . . . . . . . . . . . . . . 14
     6.5   Denial of Service Attacks Against Third Parties  . . . . . 14
     6.6   Denial Of Service Attacks Against Servers  . . . . . . . . 14 12
   7.  Acknowledgements  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 14 13
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 13
   8.1   Normative references . . . . . . . . . . . . . . . . . . . . 14 13
   8.2   Informative references . . . . . . . . . . . . . . . . . . . 15 14
       Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 15 14
       Intellectual Property and Copyright Statements . . . . . . . . 17 16

























Lonnfors, et al.         Expires October 19, 2004 April 25, 2005                 [Page 2]

Internet-Draft            Partial notification                April              October 2004


1.  Introduction

   A presence event package for the Session Initiation Protocol (SIP) [4]
   allow users ('watchers') to subscribe to other users'
   ('presentities') presence information.  The presence information is
   composed of multiple pieces of data that are delivered to the
   watcher.  The size of the presence information document can be large
   (i.e.  the presence document can contain an arbitrary number of
   elements called presence tuples that convey data).  As specified in
   RFC2778 [3] and presence event package for the SIP [4] [4], a Presence Agent
   (PA) always delivers in presence notifications all the presence data
   that has been authorized for a certain watcher.  This is done
   regardless of what presence data has changed compared to last
   notification.  It may not be reasonable to send the complete presence
   information over low bandwidth and high latency links when only part
   of the presence information has actually changed.  This may end up
   degrading the presence service and causing bad perception at the
   watcher side.

   There are some mechanisms, such as signaling compression (SigComp)
   [10] and content indirection [9] that can be used to help in this
   problem.  However these solutions set additional requirements on
   basic network functionalities such as security.  Some of the existing
   solutions enforce force certain requirements on the network and terminals for
   supporting a compression mechanism, while other solutions require
   having a specific server to store the requested presence information
   until the terminal fetches it using another protocol (e.g.  HTTP)
   and, therefore, increases possible security concerns.

   This draft presents document defines a solution to problems described above, called
   partial notifications.

   In general, the partial notification approach means that where the
   presence server delivers to the watchers only those parts of the
   presence information that have changed compared to the presence
   information sent in the previous notifications.  This reduces the
   amount of data that needs be transported over the network.

   This mechanism utilizes the presence event package for SIP [4] and
   the partial PIDF a
   new MIME type [2]. for carrying partial Presence Information Data Format
   documents [2]

2.  Conventions

   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
   and "OPTIONAL" are to be interpreted as described in RFC 2119 [1] and
   indicate requirement levels for compliant implementations.




Lonnfors, et al.        Expires October 19, 2004                [Page 3]

Internet-Draft            Partial notification                April 2004

   This document makes use of the vocabulary defined in RFC2778 [3],
   RFC3265 [7], the presence event package for the SIP [4], and partial the PIDF
   format



Lonnfors, et al.         Expires April 25, 2005                 [Page 3]

Internet-Draft            Partial notification              October 2004


   extension for Partial Presence [2].

3.  Introduction to the partial notification mechanism

   This chapter briefly introduces the regular functionality of the
   presence service, and gives an overview of the partial notification
   solution.  This section is information informational in nature and it nature.  It does not
   provide
   contain any normative statements.

3.1  Basic presence agent operation

   The presence service normally operates so that a watcher sends a SIP
   SUBSCRIBE request targeted to the presentity.  The request is routed
   to the presence agent where the presentity's presence information is
   stored.  The SUBSCRIBE request can include an Accept header field
   that indicates the supported content types.

   The presence agent receives the SUBSCRIBE request and if there is no
   Accept header indicating the supported content types or the Accept
   header contains the default PIDF content type, the PA will generate
   presence notifications using the default PIDF format [6].  The PIDF
   document can contain one or multiple tuples and presence document
   level information. XML elements.  The tuples PIDF document
   include a set of elements defined in RFC2778 [3] for representing the
   presence information. NOTIFY
   requests, built according to RFC 3265 [7], carry  This PIDF document will be carried in the body
   of the
   request a presence document containing presence information. Unless
   otherwise specified, NOTIFY request constructed as per RFC3265 [7].  During basic
   operation, the presence document always contains the full state
   corresponding to the presence status of the presentity, as
   determinated determined
   by the PA local policy and authorization rules.

3.2  Operation with partial notification

   The partial notification mechanism enables the allows a watcher to request
   those parts of the presence information that have changed since the
   last that,
   whenever possible, notifications was sent. The presence agent will send contain only the
   changed presence information since the last notification.
   that has actually changed.  A watcher that wants to receive partial
   notifications according to this specification, document, creates a SIP SUBSCRIBE
   request similar to that of a regular presence subscription.  However,
   the SIP SUBSCRIBE request contains an Accept header field whose value
   contains the
   "application/pidf-partial+xml" "application/pidf-diff+xml" tag. Besides the Accept header field,
   there is no other difference between a regular presence subscription
   and a subscription requesting partial notifications.

   When the presence agent receives the subscription, it examines the



Lonnfors, et al.        Expires October 19, 2004                [Page 4]

Internet-Draft            Partial notification                April 2004
   Accept header field value and decides if "application/pidf-diff+xml" value is
   present, it can decide to use the partial notifications mechanism
   specified in this memo.  The presence agent builds NOTIFY requests
   that contain the Accept Content-Type header field set to
   "application/pidf-partial+xml".
   "application/pidf-diff+xml".  The first NOTIFY request that contains
   presence information will contain a full presence document.
   This is identified by the "state" attribute set to "full" in the XML
   presence document.
   Subsequent NOTIFY requests will can contain partial
   notifications, identified by notifications.  This
   behavior is described in detail in Section 4.



Lonnfors, et al.         Expires April 25, 2005                 [Page 4]

Internet-Draft            Partial notification              October 2004


4.  Client and server operations

   Unless otherwise specified in this document, the "state" attribute set to "partial" regular watcher and
   presence agent behavior is applied as defined in the XML SIP presence document.

   This means that if a partial notification contains new tuples (tuples
   which have new tuple ids compared to the full presence document) they
   are added to the local full presence document. If it contains tuples
   which have existing tuple ids it means that those tuples are updated.
   If "removed" element in the XML document contains existing tuple ids
   it means that those tuples are removed. The watcher updates the local
   copy accordingly. This behavior is described in detail in Section 4.

   Partial notifications, within the scope of this document, apply only
   to <tuple> level XML elements and all possible elements that are
   contained in these elements, i.e., tuples are considered to be atomic
   data elements. This means that, if a notification contains an update
   to an existing tuple, the updated tuple replaces the existing one.
   The SIP presence event package [4] provides instructions to process
   all the data elements which are located outside <tuple> elements.
   This typically means that every notification will include all those
   XML elements (for example the <note> element).

4.  Client and server operations

   This document assumes, that unless otherwise specified in this
   document, the regular watcheer and presence agent behavior is applied
   as defined in the SIP presence event package [4].

4.1  Content-type for partial notifications

   Entities supporting the
   event package [4].

4.1  Content-type for partial notifications

   Entities supporting the partial notification extension described in
   this document MUST support the 'application/pidf-partial+xml' 'application/pidf-diff+xml'
   content-type specified in the PIDF extension for partial presence
   [2].

4.2  Watcher generation of SUBSCRIBE requests

   A SUBSCRIBE request can be used to negotiate the preferred content
   type to be used in the notifications.  The Accept header field is
   used for this purpose as specified in RFC2161 [5].  When a watcher
   wants to allow the presence agent to send partial notifications the
   watcher MUST include an Accept header field in a its SUBSCRIBE request.
   The value



Lonnfors, et al.        Expires October 19, 2004                [Page 5]

Internet-Draft            Partial notification                April 2004 of the Accept header file MUST contain 'application/pidf-partial+xml'
   'application/pidf-diff+xml' (in addition to 'application/pid+xml' 'application/pidf+xml'
   required by the SIP  presence event package [4]).  The watcher MAY
   include a "q" parameter to with each
   accept Accept value to indicate the weight
   relative preference of the accept value, i.e., the
   most preferred accept that value.

4.3  Presence agent processing of SUBSCRIBE requests

   The presence agent receives the subscriptions from watchers and generates the
   notifications according to the SIP presence event package [4].  If
   the watcher has indicated the supported content types in the Accept
   header field of the SUBSCRIBE request, the presence agent compares
   the values included in the Accept header field with the supported
   ones, and decides which one to use.  If the watcher has
   decisionindicated indicated
   preferred accept values by means of "q" parameters, the presence
   agent SHOULD base the decision on those preferences, unless otherwise
   indicated by the presence agent local policy.

4.4  Presence agent generation of partial notifications

   If

   Once a subscription is accepted and installed, the PA MUST deliver
   the full state of the presence agent decides to send notifications according to this
   specification information in the first notification
   that include contains a presence document, the presence agent
   MUST build document.  This is done as specified in RFC
   3856 by sending a presence document according to the PIDF extension for
   Partial Presence [2] and MUST set the Content-Type header field to NOTIFY request that contains a
   'application/pidf+xml' formatted body.  After this if the value 'application/pidf-partial+xml'.

   Tuple ids are used PA wants to match tuples across subsequent notifications.
   Presence agent MUST use the same tuple ids for tuples which are
   identical between subsequent
   send partial notifications and MUST allocate
   different tuple ids for tuples which are different from previously
   sent tuples. Presence agents it MUST keep tuple ids consistent wait until the
   next full state presence documentis delivered. The decision on
   whether tuple ids are the same or different is left up to PA's local
   policy.

   Once it has received a subscription is accepted and installed, the PA MUST deliver final
   response from the last NOTIFY request containing a full state of the
   presence information in the first document.



Lonnfors, et al.         Expires April 25, 2005                 [Page 5]

Internet-Draft            Partial notification              October 2004


   If the presence agent decides to send notifications according to this
   specification that contains include a presence document. In this case, document, the PA presence agent
   MUST set the
   "state" attribute of the <presence> element in the build a presence document according to value "full". PA MUST also include a "version" attribute the PIDF extension for
   Partial Presence [2] and it MUST be initialized set the Content-Type header field to
   the value zero. 'application/pidf-diff+xml'.

   When the PA the first generates subsequent partial notifications, the PA SHOULD
   include only those tuples that presence information that have changed compared to
   the previous notification.  It is up to the PA PA's local policy to
   determine what is considered as a change to the previous state. When the presence
   document does not include a full presence state,  In
   partial notifications the PA MUST set the
   "state" include a "version" attribute value of and
   for the <presence> element to "partial".



Lonnfors, et al.        Expires October 19, 2004                [Page 6]

Internet-Draft            Partial first partial notification                April 2004


   The the PA MUST ensure that all tuple ids used in the presence document
   are unique. This applies initialize version to all tuple ids in <tuple> elements and in
   <t_id> elements under the <removed> element.
   value one.

   The PA SHOULD MUST construct the partial presence document according to the
   following logic:

   o  The PA MUST construct the presence information according to the
      Presence event package [4], with the exception that only the
      changed tuples are included in
      PIDF diff format [2].  All the presence document. The PA MUST
      also add all newly created tuples, if any, informaton that  has been added to the
      presence
      information. document is listed inside <add> elements.  All
      information that has been removed from presence decument is listed
      inside <remove> elements and all information that has been changed
      is listed under <replace> elements.

   o  The PA MUST include a "version" and "state" attributes  attribute in the presence
      document.  The PA MUST increment the version number by one
      compared to the earlier delivered successfully send presence document to the
      watcher associated with a certain subscription.

   o  When there are changes (e.g. in the authorization) which lead to
      removal of tuples from the previously delivered presence
      information the

   The PA MUST construct NOT send a partial notification document new NOTIFY request that lists the tuple ids of the removed tuples in the "removed"
      element.

   o  The PA MUST include  all the presence information outside the
      <tuple> elements in each notification, i.e., all the notifications
      which convey contains a partial
   presence documents MUST always have that
      data.

   In case document (not a re-transmission) for the PA receives same Request-URI,
   until it has received a subscription refresh or termination request final response from existing subscription (with any value in the Expires header
   field) and watcher for the PA decides to include a body into
   previous one or the following previous NOTIFY request has timed out.

   The PA always ends a sequence of partial notifications when it
   receives any SUBSCRIBE request (refresh or termination) within the
   associated subscription.  The PA MUST build sends a NOTIFY request that contains a full
   presence document (i.e. the attribute "state" is set to "full" and
   the attribute "version" is set to value 0). this
   SUBSCRIBE request as specified in RFC3856 [4].

4.5  Watcher processing of NOTIFY requests

   If the PA decided to use the partial notifications, then the watcher
   will receive a

   Watcher processes all NOTIFY request with the Content-Type header field
   value set to 'application/pidf-partial+xml' .

   The watcher will receive the full presence document in the first
   notification. In this case, the "state" attribute of the <presence>
   element requests that contain
   'application/pidf+xml' content type as specified in the presence document is set to the value "full". RFC3856 [4].

   When the watcher receives the full presence document it MUST perform the
   following actions:




Lonnfors, et al.        Expires October 19, 2004                [Page 7]

Internet-Draft            Partial first partial notification                April 2004


   o  The watcher MUST discard all previously received presence
      information from that particular presentity in the context of
      current subscription.

   o  The watcher
   MUST initialize an internal version counter, related to the particular presentity or this
   subscription, to the value of
      "version" attributeof the <presence> element "version" included in the presence
   document.

   o  The  This version counter is scoped to the subscription.  When



Lonnfors, et al.         Expires April 25, 2005                 [Page 6]

Internet-Draft            Partial notification              October 2004


   the watcher MUST store receives the values of all tuple ids together with first partial presence document the content received in watcher
   MUST modify its local copy according to the notification. This constitutes following logic:

   o  The watcher MUST apply the
      watcher's changes to its local copy of the full
      presence document.

   o  If the presence document contains a <removed> element indicated in the received
      'application/pidf-diff+xml' document as specified in PIDF diff
      format [2].

   o  The watcher MUST ignore the content of that element. increment local version counter by one.

   When the watcher receives a subsequent notifications and the notifier
   has not changed the used content type, and the "state" attribute of
   the <presence> element includes the value "partial", the watcher MUST
   construct the partial presence information according to document the following logic:

   o  The
   watcher MUST compare the received "version" attribute of the <presence>
      element with the local
   version information of a previously received
      presence document. counter.  If the version number is incremented by one, the
   watcher MUST continue handling the content present in the
      notification.

   o  The watcher MUST compare the tuple ids with the tuple ids received
      in previous notifications. If a tuple id in the current
      notification matches an existing tuple id, the existing tuple is
      replaced with the newly received tuple. If the tuple id does not
      match any tuple received in the earlier notifications, the watcher
      MUST store it as a new tuple.

   o  The watcher MUST remove from the modify its local storage those tuples whose
      tuple ids are listed in the "removed" element of the presence
      document.

   o  Tuples whose tuple ids are not listed in the presence document
      included in following the NOTIFY remain unchanged same
   processing rules as for the first partial notification.

   If the watcher receives a partial presence document whose "version"
   attribute value higher by more than one with the locally stored value
   the watcher assumes that one or more NOTIFYs were lost.  The watcher
   SHOULD either refresh the subscription in order to receive a full
   presence document or terminate the subscription.  If the watcher
   receives a presence document with the "state" attribute set to
   "partial" and the "version" attribute value is equal
   or lower than



Lonnfors, et al.        Expires October 19, 2004                [Page 8]

Internet-Draft            Partial notification                April 2004


   the one received in the presence docment of a previous notification, locally stored version number, it is considered a
   PA failure and the watcher SHOULD discard the document without
   further processing.

   All the information located outside the <tuple> element must be
   processed as specified in the SIP presence event package [4] i.e.,
   the watcher MUST replace the existing data with data received in the
   latest notification.

   If the PA changes the content type used in notifications within the
   existing subscription the watcher MUST discard all the previously
   received presence information (except local version counter) from
   that particular presentity and process the new content as specified
   for that content type.

5.  Examples

   The following message flow shows an example applying the partial
   notifications mechanism.

   A watcher sends a SUBSCRIBE request declaring support for the default
   presence format ('application/pidf+xml)) ('application/pidf+xml) and the for the partial
   notification ('application/pidf-partial+xml') ('application/pidf-diff+xml') in the Accept header field
   value.  The watcher uses the "q" parameter to set the preference for
   receiving partial notifications.  The PA accepts the subscription
   and, based on the "q" parameter value, selects to send partial
   notifications in NOTIFY requests.  The first NOTIFY request includes
   the full state of presence information represented in the
   'application/pidf-partial+xml'
   'application/pidff+xml' content type.  The following notifications
   only include the delta of the presence information from the previous
   NOTIFY request.



Lonnfors, et al.         Expires April 25, 2005                 [Page 7]

Internet-Draft            Partial notification              October 2004


       Watcher                   Presence Agent                  PUA
            | F1 SUBSCRIBE              |                         |
            |-------------------------->|                         |
            | F2 200 OK                 |                         |
            |<--------------------------|                         |
            | F3 NOTIFY                 |                         |
            |<--------------------------|                         |
            | F4 200 OK                 |                         |
            |-------------------------->|                         |
            |                           |                         |
            |                           |   Update presence       |
            |                           |<----------------------- |
            |                           |                         |
            | F5 NOTIFY                 |                         |
            |<--------------------------|                         |
            | F6 200 OK                 |                         |
            |-------------------------->|                         |



Lonnfors, et al.        Expires October 19, 2004                [Page 9]

Internet-Draft            Partial notification                April 2004


         Message Details

      F1 SUBSCRIBE   watcher->example.com server

            SUBSCRIBE sip:resource@example.com SIP/2.0
            Via: SIP/2.0/TCP watcherhost.example.com;
              branch=z9hG4bKnashds7
            To: sip:resource@example.com <sip:resource@example.com>
            From: <sip:watcher@somewhere.com> <sip:watcher@example.com> ;tag=xfg9
            Call-ID: 2010@watcherhost.example.com
            CSeq: 17766 SUBSCRIBE
            Max-Forwards: 70
            Event: presence
            Accept: application/pidf+xml;q=0.3,
              application/pidf-partial+xml;q=1
              application/pidf-diff+xml;q=1
            Contact: sip:user@watcherhost.example.com <sip:user@watcherhost.example.com>
            Expires: 600
            Content-Length: 0

      The PA accepts the subscription and generates a 200 OK
      response to the SUBSCRIBE request

         F2 200 OK   example.com server->watcher

            SIP/2.0 200 OK
            Via: SIP/2.0/TCP watcherhost.example.com;
              branch=z9hG4bKnashds7
              ;received=192.0.2.1
            To: <sip:resource@example.com>;tag=ffd2



Lonnfors, et al.         Expires April 25, 2005                 [Page 8]

Internet-Draft            Partial notification              October 2004


            From: <sip:watcher@somewhere.com>;tag=xfg9 <sip:watcher@example.com>;tag=xfg9
            Call-ID: 2010@watcherhost.example.com
            CSeq: 17766 SUBSCRIBE
            Event: presence
            Expires: 600
            Contact: sip:server.example.com <sip:server.example.com>
            Content-Length: 0

          The PA, based on the "q" parameter value in the Accept
          header of the SUBSCRIBE request (F1), decides to  use
          partial notifications. The PA creates a first NOTIFY
          request that includes a partical notification document that
          contains the full presence state.

         F3 NOTIFY  example.com server-> watcher

            NOTIFY sip:user@watcherhost.example.com SIP/2.0
            Via: SIP/2.0/TCP server.example.com;
              branch=z9hG4bKna998sk
            To: <sip:watcher@somewhere.com>;tag=xfg9 <sip:watcher@example.com>;tag=xfg9
            From: <sip:resource@example.com>;tag=ffd2



Lonnfors, et al.        Expires October 19, 2004               [Page 10]

Internet-Draft            Partial notification                April 2004
            Call-ID: 2010@watcherhost.example.com
            Event: presence
            Subscription-State: active;expires=599
            Max-Forwards: 70
            CSeq: 8775 NOTIFY
            Contact: sip:server.example.com <sip:server.example.com>
            Content-Type: application/pidf-partial+xml application/pidf+xml
            Content-Length: [replace with real content length]

      <?xml version="1.0" encoding="UTF-8"?>
            <pidf-part:presence
      <presence xmlns="urn:ietf:params:xml:ns:pidf"
           	xmlns:pidf-part="urn:ietf:params:xml:ns:pidf-partial"
             	entity="pres:someone@example.com" version="0"
             	state="full">
             xmlns:pe="urn:ietf:params:xml:ns:pidf:person"
             xmlns:de="urn:ietf:params:xml:ns:pidf:device"
             xmlns:rs="urn:ietf:params:xml:ns:pidf:status:rpid-status"
             xmlns:rt="urn:ietf:params:xml:ns:pidf:rpid-tuple"
             xmlns:ci="urn:ietf:params:xml:ns:pidf:cipid"
             xmlns:sc="urn:ietf:params:xml:ns:pidf:status:servcaps"
             xmlns:dc="urn:ietf:params:xml:ns:pidf:status:devcaps"
             entity="pres:someone@example.com">

       <tuple id="sg89ae">
                <status><basic>open</basic>
        <status>
         <basic>open</basic>
         <rs:relationship>assistant</rs:relationship>
        </status>
        <sc:servcaps>
         <sc:video>false</sc:video>
         <sc:audio>true</sc:audio>



Lonnfors, et al.         Expires April 25, 2005                 [Page 9]

Internet-Draft            Partial notification              October 2004


         <sc:message>true</sc:message>
        </sc:servcaps>

        <contact priority="0.8">tel:09012345678
                </contact> priority="0.8">tel:09012345678</contact>
       </tuple>

       <tuple id="cg231jcr">
                <status><basic>open</basic>
        <status>
         <basic>open</basic>
        </status>
        <contact priority="1.0">
                      im:pep@example.com</contact> priority="1.0">im:pep@example.com</contact>
       </tuple>

       <tuple id="r1230d">
                <status><basic>closed</basic>
        <status>
         <basic>closed</basic>
         <rs:activity>meeting</rs:activity>
        </status>
        <ci:homepage>http://example.com/~pep/</ci:homepage>
        <ci:icon>http://example.com/~pep/icon.gif</ci:icon>
        <ci:card>http://example.com/~pep/card.vcd</ci:card>

        <contact priority="0.9">
                      sip:pep@example.com</contact> priority="0.9">sip:pep@example.com</contact>
       </tuple>
            </pidf-part:presence>

       <pe:person>
        <pe:status>
         <rs:activities>
          <rs:activity>on-the-phone</rs:activity>
          <rs:activity>busy</rs:activity>
         </rs:activities>
        </pe:status>
       </pe:person>

       <de:device device-id="urn:esn:600b40c7">
        <de:status>
         <dc:devcaps>
          <dc:supported>
           <dc:fixed/>
          </dc:supported>
         </dc:prescaps>
        </de:status>
       </de:device>
       <note xml:lang="en">Full state presence document</note>
      </presence>

         F4 200 OK watcher-> example.com server




Lonnfors, et al.         Expires April 25, 2005                [Page 10]

Internet-Draft            Partial notification              October 2004


            SIP/2.0 200 OK
            Via: SIP/2.0/TCP server.example.com;
              branch=z9hG4bKna998sk
              ;received=192.0.2.2
            To: <sip:watcher@somewhere.com>;tag=xfg9 <sip:watcher@example.com>;tag=xfg9
            From: <sip:resource@example.com>;tag=ffd2
            Call-ID: 2010@watcherhost.example.com
            CSeq: 8775 NOTIFY
            Content-Length: 0

            At a later time, the presentity's presence information



Lonnfors, et al.        Expires October 19, 2004               [Page 11]

Internet-Draft            Partial notification                April 2004


            changes: the tuple id "cg231jcr" has changed its
            status, a new tuple id "wsqw798jcr" is added and the
            tuple id "r1230d" is deleted from the presence
            document.
            changes The PA generates a NOTIFY request
            that includes a partial presence document that includes the deleted tuple changed information

      F5 NOTIFY example.com server -> watcher

            NOTIFY sip:user@watcherhost.example.com SIP/2.0
            Via: SIP/2.0/TCP server.example.com;
              branch=z9hG4bKna998sl
            To: <sip:watcher@somewhere.com>;tag=xfg9 <sip:watcher@example.com>;tag=xfg9
            From: <sip:resource@example.com>;tag=ffd2
            Call-ID: 2010@watcherhost.example.com
            CSeq: 8776 NOTIFY
            Event: presence
            Subscription-State: active;expires=543
            Max-Forwards: 70
            Contact: sip:server.example.com <sip:server.example.com>
            Content-Type: application/pidf-partial+xml application/pidf-diff+xml
            Content-Length: [replace with real content length]

      <?xml version="1.0" encoding="UTF-8"?>
            <pidf-part:presence xmlns="urn:ietf:params:xml:ns:pidf"
           	xmlns:pidf-part="urn:ietf:params:xml:ns:pidf-partial"
      <pidf-diff xmlns="urn:ietf:params:xml:ns:pidf-diff"
      	      entity="pres:someone@example.com" version="1"
   	       state="partial">
      	      version="1">

       <add parent="presence" sel="*[4]">
        <![CDATA[
         <tuple id="cg231jcr">
                <status><basic>closed</basic>
                </status>
                <contact priority="1.0">
                      im:pep@example.com</contact>
                <note xml:lang="en">This is an update of existing
                tuple sent in previous notification</note>
              </tuple>

              <tuple id="wsqw798jcr">
                <status><basic>open</basic> id="ert4773">
          <status>
           <basic>open</basic>
          </status>
          <contact priority="0.4">
                      im:mac@hut.com</contact> priority="0.4">mailto:pep@example.com</contact>
          <note xml:lang="en">This is a completely new tuple not sent in previous notification</note> inserted
              between the last tuple and person element</note>
         </tuple>

       	   <pidf-part:removed><pidf-part:t_id>r1230d</pidf-part:t_id>
        ]] >
       </add>




Lonnfors, et al.         Expires October 19, 2004 April 25, 2005                [Page 12] 11]

Internet-Draft            Partial notification                April              October 2004


       	   </pidf-part:removed>

            </pidf-part:presence>


       <replace
        sel="presence/tuple[@id="r1230d"]/status/
        basic/text()">open</replace>

       <remove sel="presence/tuple[@id=
       "r1230d"]/rs:activity"/>

        <remove sel="presence/tuple[@id="r1230d"]
        /status/rs:activity"/>

       <replace
        sel="presence/tuple[@id="cg231jcr"]
        /contact/@priority"
        >0.7</replace>

      </pidf-diff>

         F6 200 OK watcher-> example.com server

            SIP/2.0 200 OK
            Via: SIP/2.0/TCP server.example.com;
              branch=z9hG4bKna998sl
             ;received=192.0.2.2
            To: <sip:watcher@somewhere.com>;tag=xfg9 <sip:watcher@example.com>;tag=xfg9
            From: <sip:resource@example.com>;tag=ffd2
            Call-ID: 2010@watcherhost.example.com
            CSeq: 8776 NOTIFY
            Content-Length: 0


6.  Security Considerations

   This specification relies on the presence event package for the SIP [4]
   and it does not introduce any new protocol functionality. [4].
   Partial notifications can reveal information about what has changed
   compared to
   last time when notification was sent. the previous notification.  This can make it easier for
   eavesdropper to know what kind of changes are happening in the
   presentity's presence information.  However, the same information can
   be found if the presence event package is used with baseline PIDF [6]. Thus,
   this specification baseline PIDF
   [6].

   A third party can inject a NOTIFY request with partial state that
   will cause the watcher to think it has missed a partial document and
   to request a new full state document.  This is no worse than what we
   have without this extension since a party that could perform such
   action could also send a NOTIFY with Subscription-State: terminated
   and achieve the same effect without knowing about the extension.
   Partial Notification does not introduce make the situation any new security considerations
   compared worse, and the
   protection mechanisms from the existing system apply to presence event package for preventing



Lonnfors, et al.         Expires April 25, 2005                [Page 12]

Internet-Draft            Partial notification              October 2004


   this attack against the SIP [4]. partial notification mechanism.

   Presence related security considerations are extensively discussed in
   the presence event package for the SIP [4] and all those identified
   security consideration considerations apply to this document as well.  Issues
   described in the presence event package for the SIP [4] are briefly
   reviewed below.

6.1  Confidentiality

   Confidentiality considerations identified in the presence event
   package for the SIP [4] apply here without any changes.

6.2  Message Integrity and Authenticity

   Message Integrity [4], including
   confidentiality, message integrity and Authenticity identified in the presence event
   package for the SIP [4] apply here without any changes.

6.3  Outbound Authentication

   Outbound Authentication considerations identified in the presence



Lonnfors, et al.        Expires October 19, 2004               [Page 13]

Internet-Draft            Partial notification                April 2004


   event package for the SIP [4] apply here without any changes.

6.4  Replay Prevention

   Replay Prevention considerations identified in the presence event
   package for the SIP [4] apply here without any changes.

6.5  Denial of Service Attacks Against Third Parties

   Denial of Service Attacks Against Third Parties considerations
   identified in the presence event package for the SIP [4] apply here
   without any changes.

6.6  Denial Of Service Attacks Against Servers

   Denial Of Service Attacks Against Servers considerations identified
   in the presence event package for the SIP [4] authenticity, outbound
   authentication, replay prevention, DoS attacks against thirst parties
   and DoS attachs againsts servers all apply here without any
   changes. change

7.  Acknowledgements  Acknowledgments

   The authors would like to thank Jyrki Aarnos, Jonathan Rosenberg,
   Dean Willis, Kriztian Kiss, Juha Kalliokulju, Miguel Garcia, Anders
   Kristensen, Yannis Pavlidis, Ben Cambell, Robert Sparks, and Tim
   Moran for their valuable comments.

8.  References

8.1  Normative references

   [1]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", BCP 14, RFC 2119, March 1997.

   [2]  Lonnfors, M., Khartabil, H. and E. Leppanen, "Presence
        Information Data Format (PIDF) Extension for Partial Presence",
        draft-ietf-simple-partial-pidf-format-01
        draft-ietf-simple-partial-pidf-format-02 (work in progress),
        January 2004.

   [3]  Day, M., Rosenberg, J. and H. Sugano, "A Model for Presence and
        Instant Messaging", RFC 2778, February 2000.

   [4]  Rosenberg, J., "A Presence Event Package for the Session
        Initiation Protocol (SIP)",  draft-ietf-simple-presence-10 (work
        in progress), January 2003. RFC 3856, August 2004.

   [5]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
        Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP:
        Session Initiation Protocol", RFC 3261, June 2002.



Lonnfors, et al.        Expires October 19, 2004               [Page 14]

Internet-Draft            Partial notification                April 2004

   [6]  Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, W. and
        J. Peterson, "CPIM presence information data format",
        draft-ietf-impp-cpim-pidf-08 (work in progress), May 2003. "Presence Information Data Format (PIDF)", RFC
        3863, August 2004.

   [7]  Roach, A., "SIP-Specific Event Notification", RFC 3265, June
        2002.






Lonnfors, et al.         Expires April 25, 2005                [Page 13]

Internet-Draft            Partial notification              October 2004


8.2  Informative references

   [8]   Rosenberg, J., "A Watcher Information Event Template-Package
         for the Session Initiation Protocol (SIP)",
         draft-ietf-simple-winfo-package-05 (work in progress), January
         2003. RFC 3857, August
         2004.

   [9]   Olson, S., "Mechanism for Content Indirection in Session
         Initiation Protocol (SIP) Messages",
         draft-ietf-sip-content-indirect-mech-03 (work in progress),
         February 2003.

   [10]  Price, R., "Signaling Compression (SigComp)", RFC 3320, January
         2003.


Authors' Addresses

   Mikko Lonnfors
   Nokia
   Itamerenkatu 11-13 00180
   Helsinki
   Finland

   Phone: +358 71 8008000
   EMail: mikko.lonnfors@nokia.com


   Jose Costa-Requena
   Nokia
   Valimotie 9 00380
   Helsinki
   Finland

   Phone: +358 71 8008000
   EMail: jose.costa-requena@nokia.com








Lonnfors, et al.        Expires October 19, 2004               [Page 15]

Internet-Draft            Partial notification                April 2004


   Eva Leppanen
   Nokia
   P.O BOX 785
   Tampere
   Finland

   Phone: +358 7180 77066
   EMail: eva-maria.leppanen@nokia.com






Lonnfors, et al.         Expires April 25, 2005                [Page 14]

Internet-Draft            Partial notification              October 2004


   Hisham Khartabil
   Nokia
   P.O. Box 321
   Helsinki
   Finland

   Phone: +358 7180 76161
   EMail: hisham.khartabil@nokia.com











































Lonnfors, et al.         Expires October 19, 2004 April 25, 2005                [Page 16] 15]

Internet-Draft            Partial notification                April              October 2004


Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the IETF's procedures with respect to rights in IETF Documents RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   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
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING 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.


Copyright Statement

   Copyright (C) The Internet Society (2004).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.


Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.




Lonnfors, et al.         Expires October 19, 2004 April 25, 2005                [Page 17] 16]


----