draft-ietf-sipcore-event-rate-control-01.txt   draft-ietf-sipcore-event-rate-control-02.txt 
Network Working Group A. Niemi Network Working Group A. Niemi
Internet-Draft K. Kiss Internet-Draft K. Kiss
Intended status: Standards Track Nokia Intended status: Standards Track Nokia
Expires: May 1, 2010 S. Loreto Expires: July 12, 2010 S. Loreto
Ericsson Ericsson
October 28, 2009 January 08, 2010
Session Initiation Protocol (SIP) Event Notification Extension for Session Initiation Protocol (SIP) Event Notification Extension for
Notification Rate Control Notification Rate Control
draft-ietf-sipcore-event-rate-control-01 draft-ietf-sipcore-event-rate-control-02
Abstract
This document specifies mechanisms for adjusting the rate of Session
Initiation Protocol (SIP) event notifications. These mechanisms can
be applied in subscriptions to all SIP event packages.
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
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 Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 35 skipping to change at page 1, line 41
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 May 1, 2010. This Internet-Draft will expire on July 12, 2010.
Copyright Notice Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents in effect on the date of Provisions Relating to IETF Documents
publication of this document (http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
Abstract include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
This document specifies mechanisms for adjusting the rate of Session described in the BSD License.
Initiation Protocol (SIP) event notifications. These mechanisms can
be applied in subscriptions to all SIP event packages.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Definitions and Document Conventions . . . . . . . . . . . . . 5 2. Definitions and Document Conventions . . . . . . . . . . . . . 4
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Use Case for limiting the maximum rate of notifications . 5 3.1. Use Case for limiting the maximum rate of notifications . 4
3.2. Use Case for setting a minimum rate for notifications . . 6 3.2. Use Case for setting a minimum rate for notifications . . 5
3.3. Use Case for specifying the average rate of 3.3. Use Case for specifying the average rate of
notifications . . . . . . . . . . . . . . . . . . . . . . 7 notifications . . . . . . . . . . . . . . . . . . . . . . 6
3.4. Requirements . . . . . . . . . . . . . . . . . . . . . . . 7 3.4. Requirements . . . . . . . . . . . . . . . . . . . . . . . 6
3.5. The maximum rate mechanism for Resource List Server . . . 9 3.5. The maximum rate mechanism for Resource List Server . . . 7
3.6. Basic Operation . . . . . . . . . . . . . . . . . . . . . 10 3.6. Basic Operation . . . . . . . . . . . . . . . . . . . . . 9
4. Operation of the maximum rate mechanism . . . . . . . . . . . 11 4. Operation of the maximum rate mechanism . . . . . . . . . . . 10
4.1. Subscriber Behavior . . . . . . . . . . . . . . . . . . . 11 4.1. Subscriber Behavior . . . . . . . . . . . . . . . . . . . 10
4.2. Notifier Behavior . . . . . . . . . . . . . . . . . . . . 12 4.2. Notifier Behavior . . . . . . . . . . . . . . . . . . . . 11
4.3. Selecting the maximum rate . . . . . . . . . . . . . . . . 13 4.3. Selecting the maximum rate . . . . . . . . . . . . . . . . 11
4.4. Buffer Policy Description . . . . . . . . . . . . . . . . 14 4.4. Buffer Policy Description . . . . . . . . . . . . . . . . 12
4.4.1. Partial State Notifications . . . . . . . . . . . . . 14 4.4.1. Partial State Notifications . . . . . . . . . . . . . 12
4.4.2. Full State Notifications . . . . . . . . . . . . . . . 14 4.4.2. Full State Notifications . . . . . . . . . . . . . . . 13
4.5. Estimated Bandwidth Savings . . . . . . . . . . . . . . . 14 4.5. Estimated Bandwidth Savings . . . . . . . . . . . . . . . 13
5. Operation of the minimum rate mechanism . . . . . . . . . . . 15 5. Operation of the minimum rate mechanism . . . . . . . . . . . 14
5.1. Subscriber Behavior . . . . . . . . . . . . . . . . . . . 15 5.1. Subscriber Behavior . . . . . . . . . . . . . . . . . . . 14
5.2. Notifier Behavior . . . . . . . . . . . . . . . . . . . . 16 5.2. Notifier Behavior . . . . . . . . . . . . . . . . . . . . 14
6. Operation of the average rate mechanism . . . . . . . . . . . 16 6. Operation of the average rate mechanism . . . . . . . . . . . 15
6.1. Subscriber Behavior . . . . . . . . . . . . . . . . . . . 16 6.1. Subscriber Behavior . . . . . . . . . . . . . . . . . . . 15
6.2. Notifier Behavior . . . . . . . . . . . . . . . . . . . . 17 6.2. Notifier Behavior . . . . . . . . . . . . . . . . . . . . 16
6.3. Calculating the timeout . . . . . . . . . . . . . . . . . 18 6.3. Calculating the timeout . . . . . . . . . . . . . . . . . 17
7. Usage of "min-interval", "max-interval" and 7. Usage of "min-interval", "max-interval" and
"average-interval" in a combination . . . . . . . . . . . . . 19 "average-interval" in a combination . . . . . . . . . . . . . 18
8. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 8. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.1. "min-interval", "max-interval" and "average-interval" 8.1. "min-interval", "max-interval" and "average-interval"
Header Field Parameters . . . . . . . . . . . . . . . . . 20 Header Field Parameters . . . . . . . . . . . . . . . . . 19
8.2. Augmented BNF Definitions . . . . . . . . . . . . . . . . 20 8.2. Augmented BNF Definitions . . . . . . . . . . . . . . . . 19
8.3. Event header field usage in responses to the NOTIFY 8.3. Event header field usage in responses to the NOTIFY
request . . . . . . . . . . . . . . . . . . . . . . . . . 21 request . . . . . . . . . . . . . . . . . . . . . . . . . 19
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
10. Security Considerations . . . . . . . . . . . . . . . . . . . 22 10. Security Considerations . . . . . . . . . . . . . . . . . . . 20
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 22 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.1. Normative References . . . . . . . . . . . . . . . . . . . 22 12.1. Normative References . . . . . . . . . . . . . . . . . . . 20
12.2. Informative References . . . . . . . . . . . . . . . . . . 22 12.2. Informative References . . . . . . . . . . . . . . . . . . 21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 22
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 23
1. Introduction 1. Introduction
The SIP events framework [RFC3265] defines a generic framework for The SIP events framework [RFC3265] defines a generic framework for
subscriptions to and notifications of events related to SIP systems. subscriptions to and notifications of events related to SIP systems.
This framework defines the methods SUBSCRIBE and NOTIFY, and This framework defines the methods SUBSCRIBE and NOTIFY, and
introduces the concept of an event package, which is a concrete introduces the concept of an event package, which is a concrete
application of the SIP events framework to a particular class of application of the SIP events framework to a particular class of
events. events.
skipping to change at page 5, line 6 skipping to change at page 5, line 6
This document defines an extension to the SIP events framework This document defines an extension to the SIP events framework
defining the following three "Event" header field parameters that defining the following three "Event" header field parameters that
allow a subscriber to set a Minimum, a Maximum and an Average rate of allow a subscriber to set a Minimum, a Maximum and an Average rate of
event notifications generated by the notifier: event notifications generated by the notifier:
min-interval: specifies a minimum notification time period between min-interval: specifies a minimum notification time period between
two notifications, in seconds. two notifications, in seconds.
max-interval: specifies a maximum notification time period between max-interval: specifies a maximum notification time period between
two notifications, in seconds. Whenever the time since the most two notifications, in seconds.
recent notification exceeds the value in the "max-interval"
parameter, then the current state would be sent in its entirety,
just like after a subscription refresh.
average-interval: specifies an average cadence at which average-interval: specifies an average cadence at which
notifications are desired, in seconds. It works similar to the notifications are desired, in seconds.
"max-interval" parameter, except that it will reduce the frequency
at which notifications are sent if several have already been sent
recently.
The requirements and model are further discussed in Section 3. All The requirements and model are further discussed in Section 3. All
those mechanisms are simply timer values that indicates the minimum, those mechanisms are simply timer values that indicates the minimum,
maximum and average time period allowed between two notifications. maximum and average time period allowed between two notifications.
As a result of those mechanism, a compliant notifier will adjust the As a result of those mechanism, a compliant notifier will adjust the
rate at which it generates notifications. rate at which it generates notifications.
These mechanisms are applicable to any event subscription, both These mechanisms are applicable to any event subscription, both
single event subscription and event list subscription. single event subscription and event list subscription.
skipping to change at page 6, line 43 skipping to change at page 6, line 37
inefficiencies. inefficiencies.
3.2. Use Case for setting a minimum rate for notifications 3.2. Use Case for setting a minimum rate for notifications
A location application is monitoring the movement of a target. A location application is monitoring the movement of a target.
In order to decrease the processing and network load, the location In order to decrease the processing and network load, the location
application has made a subscription with a set of location filters application has made a subscription with a set of location filters
[I-D.ietf-geopriv-loc-filters] that specify trigger criterias, for [I-D.ietf-geopriv-loc-filters] that specify trigger criterias, for
example, to send an update only when the target has moved at least n example, to send an update only when the target has moved at least n
meters. However, the application is also interested to receive the meters. However, the application is also interested in receiving the
current state periodically even if the state of the target has not current state periodically even if the state of the target has not
changed enough to satisfy any of the trigger criteria, i.e. has not changed enough to satisfy any of the trigger criteria, i.e. has not
moved at least n meters within the period. moved at least n meters within the period.
In order to control the actual state, the location application sets a In order to control the actual state, the location application sets a
minimum rate ("max-interval" parameter), i.e. a maximum time interval minimum rate ("max-interval" parameter), i.e. a maximum time interval
between two notifications. between two notifications.
The location application can also modify the "max-interval" parameter The location application can also modify the "max-interval" parameter
during the lifetime of the subscription. When the subscription to during the lifetime of the subscription. When the subscription to
skipping to change at page 11, line 43 skipping to change at page 11, line 34
In general, the way in which a subscriber generates SUBSCRIBE In general, the way in which a subscriber generates SUBSCRIBE
requests and processes NOTIFY requests is according to RFC 3265 requests and processes NOTIFY requests is according to RFC 3265
[RFC3265]. [RFC3265].
A subscriber that wishes to apply a maximum rate to notifications in A subscriber that wishes to apply a maximum rate to notifications in
a subscription MUST construct a SUBSCRIBE request that includes a a subscription MUST construct a SUBSCRIBE request that includes a
minimum time interval between two consecutive notifications included minimum time interval between two consecutive notifications included
in the "min-interval" Event header field parameter. The value of in the "min-interval" Event header field parameter. The value of
this parameter is an integral number of seconds in decimal. this parameter is an integral number of seconds in decimal.
Subscribers implementing the maximum rate mechanism MUST include an
Event header field in any 200-class responses to NOTIFY requests.
A subscriber that wishes to update the previously agreed maximum rate A subscriber that wishes to update the previously agreed maximum rate
of notifications MUST include the updated "min-interval" Event header of notifications MUST include the updated "min-interval" Event header
field parameter in a subsequent SUBSCRIBE request or a 200-class field parameter in a subsequent SUBSCRIBE request or a 200-class
response to the NOTIFY request. response to the NOTIFY request.
A subscriber that wishes to remove the maximum rate control from A subscriber that wishes to remove the maximum rate control from
notifications MUST indicate so by not including a "min-interval" notifications MUST indicate so by not including a "min-interval"
Event header field parameter in a subsequent SUBSCRIBE request or a Event header field parameter in a subsequent SUBSCRIBE request or a
200-class response to the NOTIFY request. 200-class response to the NOTIFY request.
skipping to change at page 15, line 30 skipping to change at page 15, line 19
In general, the way in which a subscriber generates SUBSCRIBE In general, the way in which a subscriber generates SUBSCRIBE
requests and processes NOTIFY requests is according to RFC 3265 requests and processes NOTIFY requests is according to RFC 3265
[RFC3265]. [RFC3265].
A subscriber that wishes to apply a minimum rate to notifications in A subscriber that wishes to apply a minimum rate to notifications in
a subscription MUST construct a SUBSCRIBE request that includes a a subscription MUST construct a SUBSCRIBE request that includes a
maximum time interval between two consecutive notifications included maximum time interval between two consecutive notifications included
in the "max-interval" Event header field parameter. The value of in the "max-interval" Event header field parameter. The value of
this parameter is an integral number of seconds in decimal. this parameter is an integral number of seconds in decimal.
Subscribers implementing the minimum rate mechanism MUST include an
Event header field in any 200-class responses to NOTIFY requests.
A subscriber that wishes to update the previously agreed minimum rate A subscriber that wishes to update the previously agreed minimum rate
of notifications MUST include the updated "max-interval" Event header of notifications MUST include the updated "max-interval" Event header
field parameter in a subsequent SUBSCRIBE request or a 200-class field parameter in a subsequent SUBSCRIBE request or a 200-class
response to the NOTIFY request. response to the NOTIFY request.
A subscriber that wishes to remove the minimum rate control from A subscriber that wishes to remove the minimum rate control from
notifications MUST indicate so by not including a "max-interval" notifications MUST indicate so by not including a "max-interval"
Event header field parameter in a subsequent SUBSCRIBE request or a Event header field parameter in a subsequent SUBSCRIBE request or a
200-class response to the NOTIFY request. 200-class response to the NOTIFY request.
skipping to change at page 17, line 8 skipping to change at page 16, line 38
In general, the way in which a subscriber generates SUBSCRIBE In general, the way in which a subscriber generates SUBSCRIBE
requests and processes NOTIFY requests is according to RFC 3265 requests and processes NOTIFY requests is according to RFC 3265
[RFC3265]. [RFC3265].
A subscriber that wishes to apply an average rate to notifications in A subscriber that wishes to apply an average rate to notifications in
a subscription MUST construct a SUBSCRIBE request that includes a a subscription MUST construct a SUBSCRIBE request that includes a
proposed average time interval between two consecutive notifications proposed average time interval between two consecutive notifications
included in a "average-interval" Event header field parameter. The included in a "average-interval" Event header field parameter. The
value of this parameter is an integral number of seconds in decimal. value of this parameter is an integral number of seconds in decimal.
Subscribers implementing the minimum rate mechanism MUST include an
Event header field in any 200-class responses to NOTIFY requests.
A subscriber that wishes to update the previously agreed average rate A subscriber that wishes to update the previously agreed average rate
of notifications MUST include the updated "average-interval" Event of notifications MUST include the updated "average-interval" Event
header field parameter in a subsequent SUBSCRIBE request or a 200- header field parameter in a subsequent SUBSCRIBE request or a 200-
class response to the NOTIFY request. class response to the NOTIFY request.
A subscriber that wishes to remove the average rate control from A subscriber that wishes to remove the average rate control from
notifications MUST indicate so by not including a "average-interval" notifications MUST indicate so by not including a "average-interval"
Event header field parameter in a subsequent SUBSCRIBE request or a Event header field parameter in a subsequent SUBSCRIBE request or a
200-class response to the NOTIFY request. 200-class response to the NOTIFY request.
skipping to change at page 21, line 19 skipping to change at page 20, line 36
event-param =/ max-interval-param event-param =/ max-interval-param
subexp-params =/ max-interval-param subexp-params =/ max-interval-param
max-interval-param = "max-interval" EQUAL delta-seconds max-interval-param = "max-interval" EQUAL delta-seconds
event-param =/ average-interval-param event-param =/ average-interval-param
subexp-params =/ average-interval-param subexp-params =/ average-interval-param
average-interval-param = "average-interval" EQUAL delta-seconds average-interval-param = "average-interval" EQUAL delta-seconds
8.3. Event header field usage in responses to the NOTIFY request 8.3. Event header field usage in responses to the NOTIFY request
Implementations using the extensions described in this document MUST This table expands the table described in Section 7.2 of SIP Events
include an Event header field in any 200-class responses to NOTIFY [RFC3265] allowing the Event header field to appear in a 200-class
requests. This table expands the table described in Section 7.2 of response to a NOTIFY request. Implementations supporting the
SIP Events [RFC3265] allowing the Event header field to appear in a functionality to update the previously agreed minimum, maximum or
200-class response to a NOTIFY request. average rate of notifications in a 200-class response to the NOTIFY
request MUST support the inclusion of the Event header field.
Header field where proxy ACK BYE CAN INV OPT REG PRA SUB NOT Header field where proxy ACK BYE CAN INV OPT REG PRA SUB NOT
----------------------------------------------------------------- -----------------------------------------------------------------
Event 2xx - - - - - - - - m Event 2xx - - - - - - - - o
9. IANA Considerations 9. IANA Considerations
This specification registers three new SIP header field parameters, This specification registers three new SIP header field parameters,
defined by the following information which is to be added to the defined by the following information which is to be added to the
Header Field Parameters and Parameter Values sub-registry under Header Field Parameters and Parameter Values sub-registry under
http://www.iana.org/assignments/sip-parameters. http://www.iana.org/assignments/sip-parameters.
Predefined Predefined
Header Field Parameter Name Values Reference Header Field Parameter Name Values Reference
skipping to change at page 22, line 17 skipping to change at page 21, line 31
Naturally, the security considerations listed in SIP events Naturally, the security considerations listed in SIP events
[RFC3265], which the rate control mechanisms described in this [RFC3265], which the rate control mechanisms described in this
document extends, apply in entirety. In particular, authentication document extends, apply in entirety. In particular, authentication
and message integrity SHOULD be applied to subscriptions with this and message integrity SHOULD be applied to subscriptions with this
extension. extension.
11. Acknowledgments 11. Acknowledgments
Thanks to Pekka Pessi, Dean Willis, Eric Burger, Alex Audu, Alexander Thanks to Pekka Pessi, Dean Willis, Eric Burger, Alex Audu, Alexander
Milinski, Jonathan Rosenberg, Cullen Jennings, Adam Roach, Hisham Milinski, Jonathan Rosenberg, Cullen Jennings, Adam Roach, Hisham
Khartabil, Dale Worley, Martin Thomson and Byron Campen for support Khartabil, Dale Worley, Martin Thomson, Byron Campen, Alan Johnston
and/or review of this work. and Michael Procter for support and/or review of this work.
Thanks to Brian Rosen for the idea of the minimum and average rate Thanks to Brian Rosen for the idea of the minimum and average rate
mechanisms, and Adam Roach for the work on the averaging algorithm mechanisms, and Adam Roach for the work on the averaging algorithm
and other feedback. and other feedback.
12. References 12. References
12.1. Normative References 12.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
skipping to change at page 23, line 4 skipping to change at page 22, line 20
Resource Lists", RFC 4662, August 2006. Resource Lists", RFC 4662, August 2006.
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008. Specifications: ABNF", STD 68, RFC 5234, January 2008.
12.2. Informative References 12.2. Informative References
[I-D.ietf-geopriv-loc-filters] [I-D.ietf-geopriv-loc-filters]
Mahy, R., Rosen, B., and H. Tschofenig, "Filtering Mahy, R., Rosen, B., and H. Tschofenig, "Filtering
Location Notifications in the Session Initiation Protocol Location Notifications in the Session Initiation Protocol
(SIP)", draft-ietf-geopriv-loc-filters-07 (work in (SIP)", draft-ietf-geopriv-loc-filters-09 (work in
progress), October 2009. progress), December 2009.
[I-D.ietf-sipcore-subnot-etags] [I-D.ietf-sipcore-subnot-etags]
Niemi, A., "An Extension to Session Initiation Protocol Niemi, A. and D. Willis, "An Extension to Session
(SIP) Events for Conditional Event Notification", Initiation Protocol (SIP) Events for Conditional Event
draft-ietf-sipcore-subnot-etags-02 (work in progress), Notification", draft-ietf-sipcore-subnot-etags-03 (work in
April 2009. progress), November 2009.
[RFC3320] Price, R., Bormann, C., Christoffersson, J., Hannu, H., [RFC3320] Price, R., Bormann, C., Christoffersson, J., Hannu, H.,
Liu, Z., and J. Rosenberg, "Signaling Compression Liu, Z., and J. Rosenberg, "Signaling Compression
(SigComp)", RFC 3320, January 2003. (SigComp)", RFC 3320, January 2003.
[RFC3680] Rosenberg, J., "A Session Initiation Protocol (SIP) Event [RFC3680] Rosenberg, J., "A Session Initiation Protocol (SIP) Event
Package for Registrations", RFC 3680, March 2004. Package for Registrations", RFC 3680, March 2004.
[RFC3842] Mahy, R., "A Message Summary and Message Waiting [RFC3842] Mahy, R., "A Message Summary and Message Waiting
Indication Event Package for the Session Initiation Indication Event Package for the Session Initiation
 End of changes. 22 change blocks. 
84 lines changed or deleted 73 lines changed or added

This html diff was produced by rfcdiff 1.37b. The latest version is available from http://tools.ietf.org/tools/rfcdiff/