2nd: [SIP] harmonized SUBSCRIBE/NOTIFY behavior
Rohan Mahy <rohan@cisco.com> Thu, 20 July 2000 17:58 UTC
Received: from lists.bell-labs.com (share.research.bell-labs.com [204.178.16.58]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id NAA28402 for <sip-archive@odin.ietf.org>; Thu, 20 Jul 2000 13:58:36 -0400 (EDT)
Received: from share.research.bell-labs.com (localhost.localdomain [127.0.0.1]) by lists.bell-labs.com (Postfix) with ESMTP id 6EFFC443DE; Thu, 20 Jul 2000 13:57:58 -0400 (EDT)
Delivered-To: sip@lists.bell-labs.com
Received: from sj-msg-core-1.cisco.com (sj-msg-core-1.cisco.com [171.71.163.11]) by lists.bell-labs.com (Postfix) with ESMTP id EF737443D9 for <sip@lists.bell-labs.com>; Thu, 20 Jul 2000 13:57:51 -0400 (EDT)
Received: from imop.cisco.com (imop.cisco.com [171.69.11.44]) by sj-msg-core-1.cisco.com (8.9.3/8.9.1) with ESMTP id KAA06182 for <sip@lists.bell-labs.com>; Thu, 20 Jul 2000 10:58:05 -0700 (PDT)
Received: from rmahy-home-nt (rmahy-dsl1.cisco.com [10.19.53.122]) by imop.cisco.com (Mirapoint) with ESMTP id AAB04867; Thu, 20 Jul 2000 10:57:48 -0700 (PDT)
Message-Id: <4.2.0.58.20000720105603.01bc9450@lint.cisco.com>
X-Sender: rmahy@imop.cisco.com (Unverified)
X-Mailer: QUALCOMM Windows Eudora Pro Version 4.2.0.58
Date: Thu, 20 Jul 2000 10:57:04 -0700
To: sip@lists.bell-labs.com
From: Rohan Mahy <rohan@cisco.com>
Subject: 2nd: [SIP] harmonized SUBSCRIBE/NOTIFY behavior
In-Reply-To: <4.2.0.58.20000706104920.00de0af0@lint.cisco.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Sender: sip-admin@lists.bell-labs.com
Errors-To: sip-admin@lists.bell-labs.com
X-Mailman-Version: 1.1
Precedence: bulk
List-Id: IETF SIP Mailing List <sip.lists.bell-labs.com>
X-BeenThere: sip@lists.bell-labs.com
Hi, Would anyone care to comment on this, or should this become a SIP LIST OPEN ISSUE? thanks, -rohan At 12:16 PM 7/6/00 , Rohan Mahy wrote: >Hi, > >I'm looking for some consistent direction on SUBSCRIBE/NOTIFY. Since we >have the SUBSCRIBE/NOTIFY draft, PINT, and IMPP for presence, all doing >stuff differently. > >I can see valid reasons for each of these cases: > >a subscribe to ongoing state, I already know the current state >b subscribe to ongoing state, plus get current state >c refresh subscription, I know the current state >d refresh subscription, plus get current state >e fetch the current state >f unsubscribe > >Hopefully Jonathan Rosenberg, Scott Petrack, and Adam Roach have all >talked about this somewhere. >My interetation of the currently available documents is that they can do this: > >SUB/NFY a, c, f >PINT a, c, e, f >IMPP b, c, e, f > >Perhaps we need a new header/parameter used in a SUBSCRIBE that indicates >whether to send back immediate status? > >Also, the use of an Event header, Call-ID usage, and body handling are not >consistent, but this seems like less of an issue. > >Anyone care to clarify? Will the three documents be harmonized (apologies >for using an ITU term) at some point? > >Relevant sections of the documents are included below. Also, a short >comment on IMPP inline... > >thanks, >-rohan > > >In draft-roach-sip-subscribe-notify-00.txt, the author asks: > >>Should cancelling a subscription be performed with the UNSUBSCRIBE method >>defined in PINT for the sake of consistency, or is the REGISTER model of >>"Expires: 0" preferable? > >There is no mention of the SUBSCRIBE response carrying back any state. In >the companion document, draft-roach-sip-acb-00.txt, a SUBSCRIBE to the >"terminal-free" event does not necessarily need state in the reply, >because presumably, the subscriber already assumed the terminal wan't >free, because they got a busy signal. > >In RFC2848, the authors state: > >>When a SUBSCRIBE request is sent to a PINT Server, it indicates that a >>user wishes to receive information about the status of a service session. >>The request identifies the session of interest by including the original >>session description along with the request, using the SDP >>global-session-id that forms part of the origin-field to identify the >>service session uniquely. > >>Rather than have two different methods of identifying the "session of >>interest" the choice is to use the origin-field of the SDP sub-part >>included both in the original INVITE and in this SUBSCRIBE request. >> >>Note that the request MUST NOT include any sub-parts other than the >>session description, even if these others were present in the original >>INVITE request. A server MUST ignore whatever sub-parts are included >>within a SUBSCRIBE request with the sole exception of the enclosed >>session description. The request MAY contain a "Contact:" header, >>specifying the PINT User Agent Server to which such information should be sent. >> >>In addition, it SHOULD contain an Expires: header, which indicates for >>how long the PINT Requestor wishes to receive notification of the session >>status. We refer to the period of time before the expiration of the >>SUBSCRIBE request as the "subscription period". See section 5.1.4. for >>security considerations, particularly privacy implications. >> >>A value of 0 within the Expires: header indicates a desire to receive one >>single immediate response (i.e. the request expires immediately). It is >>possible for a sequence of monitoring sessions to be opened, exist, and >>complete, all relating to the same service session. >> >>A successful response to the SUBSCRIBE request includes the session >>description, according to the Gateway. Normally this will be identical to >>the last cached response that the Gateway returned to any request >>concerning the same SDP global session id (see [2], section 6, o= field). >>The t= line may be altered to indicate the actual start or stop time, >>however. The Gateway might add an i= line to the session description to >>indicate such information as how many fax pages were sent. The Gateway >>SHOULD include an Expires: header indicating how long it is willing to >>maintain the monitoring session. If this is unacceptable to the PINT >>Requestor, then it can close the session by sending an immediate >>UNSUBSCRIBE message (see 3.5.3.3). > > >>At some point, either the Client's representative User Agent Server or >>the Gateway may decide to terminate the monitoring session. This is >>achieved by sending an UNSUBSCRIBE request to the correspondent >>server. Such a request indicates that the sender intends to close the >>monitoring session immediately, and, on receipt of the final response >>from the receiving server, the session is deemed over. >> >>Note that unlike the SUBSCRIBE request, which is never sent by a PINT >>gateway, an UNSUBSCRIBE request can be sent by a PINT gateway to the User >>Agent Server to indicate that the monitoring session is closed. (This is >>analogous to the fact that a gateway never sends an INVITE, although it >>can send a BYE to indicate that a telephone call has ended.) >> >>If the Gateway initiates closure of the monitoring session by sending an >>UNSUBSCRIBE message, it SHOULD include an "Expires:" header showing for >>how much longer after this monitoring session is closed it is willing to >>store information on the service session. This acts as a minimum time >>within which the Client can send a new SUBSCRIBE message to open another >>monitoring session; after the time indicated in the Expires: header the >>Gateway is free to dispose of any record of the service session, so that >>subsequent SUBSCRIBE requests can be rejected with a "606" response. >> >>If the subscription period specified by the Client has expired, then the >>Gateway may send an immediate UNSUBSCRIBE request to the Client's >>representative User Agent Server. This ensures that the monitoring >>session always completes with a UNSUBSCRIBE/response exchange, and that >>the representative User Agent Server can avoid maintaining state in >>certain circumstances. > > >In draft-rosenberg-impp-presence-00.txt, the authors state: > >>A SUBSCRIBE request MUST contain a Contact header. This indicates the >>address(es) (as a SIP URL) to which the client would like to receive >>notifications. This MUST be be one or more SIP addresses, containing the >>fully qualified domain names for the host generating the subscription, or >>the IP address of the host generating the subscription. Other addresses >>are possible, supporting third party subscriptions. If it contains >>multiple addresses, notifications will be sent to each address. If no >>Contact header is present, no notifications will be sent. > >Jonathan, instead of the first sentence I propose something like this: > >"A SUBSCRIBE request MUST contain a Contact header, unless the SUBSCRIBE >request is used for Fetching currect state only (see section 5.8)." OR > >"An ordinary SUBSCRIBE request MUST contain a Contact header. A SUBSCRIBE >request without a Contact is used for Fetching current state only, and >does not cause notifications." > >>[When replying to a new subscription,] The 200 OK response SHOULD also >>contain a copy of the current presence state of the presentity. > >>A subscriber may unsubscribe by sending a SUBSCRIBE request with an >>Expires header of 0. The Contact header indicates the particular address >>that is being unsubscribed. This MAY be a *, indicating that all Contacts >>for that particular subscription (as identified by the Call-ID, To, and >>From) are to be removed. If all Contacts are removed, the PA deletes the >>subscription. > >>Fetching is similar to a subscribing, in that it returns the current >>presence state. However, no notifications are sent for future changes in >>the presence state. Rather than inventing a new method for this, it is >>readily accomplished with a SUBSCRIBE along with an Expires: 0 header and >>no Contact header. The absence of any Contact header is what >>distinguishes it from the similar operation of unsubscribing. The >>advantage of using SUBSCRIBE is that the server can simply process the >>request independently of whether its a fetch or longer lived >>subscription; the authorization and processing steps are identical. The >>only difference is whether an actual subscription is instantiated for the >>user or not. >> >>This parallels how fetching of registrations is done in SIP. Note that >>fetching has no effect on existing subscriptions. > > >thanks, >-rohan > > > >_______________________________________________ >SIP mailing list >SIP@lists.bell-labs.com >http://lists.bell-labs.com/mailman/listinfo/sip > _______________________________________________ SIP mailing list SIP@lists.bell-labs.com http://lists.bell-labs.com/mailman/listinfo/sip
- Re: 2nd: [SIP] harmonized SUBSCRIBE/NOTIFY behaviā¦ Jonathan Rosenberg
- [SIP] harmonized SUBSCRIBE/NOTIFY behavior Rohan Mahy
- Re: [SIP] harmonized SUBSCRIBE/NOTIFY behavior rahnkp
- 2nd: [SIP] harmonized SUBSCRIBE/NOTIFY behavior Rohan Mahy