draft-ietf-i2rs-pub-sub-requirements-04.txt   draft-ietf-i2rs-pub-sub-requirements-05.txt 
Interface to the Routing System (i2rs) E. Voit Interface to the Routing System (i2rs) E. Voit
Internet-Draft A. Clemm Internet-Draft A. Clemm
Intended status: Standards Track A. Gonzalez Prieto Intended status: Informational A. Gonzalez Prieto
Expires: July 7, 2016 Cisco Systems Expires: August 6, 2016 Cisco Systems
January 4, 2016 February 3, 2016
Requirements for Subscription to YANG Datastores Requirements for Subscription to YANG Datastores
draft-ietf-i2rs-pub-sub-requirements-04 draft-ietf-i2rs-pub-sub-requirements-05
Abstract Abstract
This document provides requirements for a service that allows client This document provides requirements for a service that allows client
applications to subscribe to updates of a YANG datastore. Based on applications to subscribe to updates of a YANG datastore. Based on
criteria negotiated as part of a subscription, updates will be pushed criteria negotiated as part of a subscription, updates will be pushed
to targeted recipients. Such a capability eliminates the need for to targeted recipients. Such a capability eliminates the need for
periodic polling of YANG datastores by applications and fills a periodic polling of YANG datastores by applications and fills a
functional gap in existing YANG transports (i.e. Netconf and functional gap in existing YANG transports (i.e. Netconf and
Restconf). Such a service can be summarized as a "pub/sub" service Restconf). Such a service can be summarized as a "pub/sub" service
skipping to change at page 1, line 41 skipping to change at page 1, line 41
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
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."
This Internet-Draft will expire on July 7, 2016. This Internet-Draft will expire on August 6, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 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 Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 10 skipping to change at page 3, line 10
is proving insufficient for those applications due to: is proving insufficient for those applications due to:
o a reliance on RPC-style interactions where data is configured or o a reliance on RPC-style interactions where data is configured or
fetched on-demand by applications, and fetched on-demand by applications, and
o change notifications which identify a node associated with the o change notifications which identify a node associated with the
config change, without the actual data updates. config change, without the actual data updates.
Put simply, periodic fetching of data is not an adequate solution for Put simply, periodic fetching of data is not an adequate solution for
applications requiring frequent or prompt updates of remote object applications requiring frequent or prompt updates of remote object
state. Trying to impose a polling based solution to this problem state. Trying to impose a polling-based solution to this problem
imposes load on networks, devices, and applications. Additionally, imposes load on networks, devices, and applications. Additionally,
polling solutions are brittle in the face of communication glitches, polling solutions are brittle in the face of communication glitches,
and they have limitations in their ability to synchronize and and they have limitations in their ability to synchronize and
calibrate retrieval intervals across a network. calibrate retrieval intervals across a network.
I2RS WG documents have expressed a need for more robust YANG object I2RS WG documents have expressed a need for more robust YANG object
subscriptions. Similar discussions are underway in NETMOD and subscriptions. Similar discussions are underway in NETMOD and
NETCONF. With the support of standards bodies such as OMG (DDS), NETCONF. With the support of standards bodies such as OMG (DDS),
XMPP.org standard, generic Pub/Sub mechanisms to communicate data XMPP.org standard, generic Publication/Subscription (Pub/Sub)
updates have been defined and proven themselves in a wide variety of mechanisms to communicate data updates have been defined and proven
deployments. themselves in a wide variety of deployments.
It is time to incorporate such generic object subscription mechanisms It is time to incorporate such generic object subscription mechanisms
as part of Network Elements, and allow these mechanisms to be applied as part of Network Elements, and allow these mechanisms to be applied
in the context of data that is conceptually contained in YANG in the context of data that is conceptually contained in YANG
datastores. With such mechanisms, both controller and local Network datastores. With such mechanisms, applications on either a
Element based applications can have access to a set of consistent controller or Network Element have access to a set of consistent
network information driven via push from peer Network Elements which network information driven via push from peer Network Elements which
host authoritative information. host authoritative information.
There are some valid IETF starting points and contexts for these There are some valid IETF starting points and contexts for these
mechanisms. For example NETCONF Event Notifications [RFC5277] mechanisms. For example NETCONF Event Notifications [RFC5277]
provides a useful tool for an end-to-end solution. However RFC5277 provides a useful tool for an end-to-end solution. However RFC5277
does not follow the Pub/Sub paradigm, does not allow the explicit does not follow the Pub/Sub paradigm, does not allow the explicit
deletion of subscriptions, and predates YANG. Predating YANG is an deletion of subscriptions, and predates YANG. Predating YANG is an
issue, as monitoring and filtering based on YANG subtrees becomes issue, as monitoring and filtering based on YANG subtrees becomes
problematic. [RFC6470] defines configuration change notifications, problematic. [RFC6470] defines configuration change notifications,
but doesn't provide the actual configuration change. but does not provide the actual configuration change.
Because of this, the authors have put forward this requirements Because of this, the authors have put forward this requirement
document as well as [datastore-push]. We believe these provide a document as well as [datastore-push]. We believe these provide a
context upon which to create new solution. It is intended that these context upon which to create new solutions. It is intended that
documents include requirements and provide technologies applicable these documents include requirements and provide technologies
beyond I2RS. applicable beyond I2RS.
2. Business Drivers 2. Business Drivers
For decades, information delivery of current network state has been For decades, information delivery of current network state has been
accomplished either by fetching from operations interfaces, or via accomplished either by fetching from operations interfaces, or via
dedicated, customized networking protocols. With the growth of SDN, dedicated, customized networking protocols. With the growth of SDN,
imperative policy distribution, and YANG's ascent as a dominant imperative policy distribution, and YANG's ascent as a dominant
programmatic interface to network elements, this mixture of fetch programmatic interface to network elements, this mixture of fetch
plus custom networking protocols is no longer sufficient. What is plus custom networking protocols is no longer sufficient. What is
needed is a push mechanism that is able to deliver objects and object needed is a push mechanism that is able to deliver objects and object
skipping to change at page 4, line 44 skipping to change at page 4, line 44
o section 7.6 provides high level pub/sub (notification) guidance o section 7.6 provides high level pub/sub (notification) guidance
o section 6.4.2 identifies "subscribing to an information stream of o section 6.4.2 identifies "subscribing to an information stream of
route changes receiving notifications about peers coming up or route changes receiving notifications about peers coming up or
going down" going down"
o section 6.3 notes that when local config preempts I2RS, external o section 6.3 notes that when local config preempts I2RS, external
notification might be necessary notification might be necessary
In addition [i2rs-usecase]has relevant requirements. A small subset In addition [i2rs-usecase] has relevant requirements. A small subset
includes: includes:
o L-Data-REQ-12: The I2RS interface should support user o L-Data-REQ-12: The I2RS interface should support user
subscriptions to data with the following parameters: push of data subscriptions to data with the following parameters: push of data
synchronously or asynchronously via registered subscriptions... synchronously or asynchronously via registered subscriptions...
o L-DATA-REQ-07: The I2RS interface (protocol and IMs) should allow o L-DATA-REQ-07: The I2RS interface (protocol and IMs) should allow
a subscribe to select portions of the data model. a subscriber to select portions of the data model.
o PI-REQ01: monitor the available routes installed in the RIB of o PI-REQ01: monitor the available routes installed in the RIB of
each forwarding device, including near real time notification of each forwarding device, including near real time notification of
route installation and removal. route installation and removal.
o BGP-REQ10: I2RS client should be able instruct the I2RS agent(s) o BGP-REQ10: I2RS client should be able to instruct the I2RS
to notify the I2RS client when the BGP processes on an associated agent(s) to notify the I2RS client when the BGP processes on an
routing system observe a route change to a specific set of IP associated routing system observe a route change to a specific set
Prefixes and associated prefixes....The I2RS agent should be able of IP Prefixes and associated prefixes....The I2RS agent should be
to notify the client via publish or subscribe mechanism. able to notify the client via publish or subscribe mechanism.
o IGP-REQ-07: The I2RS interface (protocol and IMs) should support a o IGP-REQ-07: The I2RS interface (protocol and IMs) should support a
mechanism where the I2RS Clients can subscribe to the I2RS Agent's mechanism where the I2RS Clients can subscribe to the I2RS Agent's
notification of critical node IGP events. notification of critical node IGP events.
o MPLS-LDP-REQ-03: The I2RS Agent notifications should allow an I2RS o MPLS-LDP-REQ-03: The I2RS Agent notifications should allow an I2RS
client to subscribe to a stream of state changes regarding the LDP client to subscribe to a stream of state changes regarding the LDP
sessions or LDP LSPs from the I2RS Agent. sessions or LDP LSPs from the I2RS Agent.
o L-Data-REQ-01: I2rs must be able to collect large data set from o L-Data-REQ-01: I2rs must be able to collect large data set from
skipping to change at page 6, line 19 skipping to change at page 6, line 19
o "Peer Mount" subscriptions for configuration verification between o "Peer Mount" subscriptions for configuration verification between
peers[draft-voit-netmod] peers[draft-voit-netmod]
Worthy of note in the list above is the wide variety of broadcast, Worthy of note in the list above is the wide variety of broadcast,
multicast, and unicast transports used. In addition some transports multicast, and unicast transports used. In addition some transports
are at L3, and some at L2. Therefore if we are going to attempt a are at L3, and some at L2. Therefore if we are going to attempt a
generic Pub/Sub mechanism, it will need to be structured so that it generic Pub/Sub mechanism, it will need to be structured so that it
may support alternative transports. Looking at the nearer term based may support alternative transports. Looking at the nearer term based
on current I2RS requirements, NETCONF should be our transport on current I2RS requirements, NETCONF should be our transport
starting point as it supports connection oriented/Unicast starting point as it supports connection-oriented/unicast
communication. But we need to be prepared to decouple where viable communication. But we need to be prepared to decouple where viable
to support Multicast and Broadcast distribution as well. to support Multicast and Broadcast distribution as well.
2.3. Existing Generalized Pub/Sub Implementations 2.3. Existing Generalized Pub/Sub Implementations
TIBCO, RSS, CORBA, and other technologies all show precursor Pub/Sub TIBCO, RSS, CORBA, and other technologies all show precursor Pub/Sub
technologies. However there are new needs described in Section 4 technologies. However there are new needs described in Section 4
below which these technologies do not serve. We need a new pub-sub below which these technologies do not serve. We need a new pub-sub
technology. technology.
skipping to change at page 7, line 9 skipping to change at page 7, line 9
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
A Subscriber makes requests for set(s) of YANG object data. A Subscriber makes requests for set(s) of YANG object data.
A Publisher is responsible for distributing subscribed YANG object A Publisher is responsible for distributing subscribed YANG object
data per the terms of a Subscription. In general, a Publisher is the data per the terms of a Subscription. In general, a Publisher is the
owner of the YANG datastore that is subjected to the Subscription. owner of the YANG datastore that is subjected to the Subscription.
A Receiver is the target where a Publisher pushes updates. In A Receiver is the target to which a Publisher pushes updates. In
general, the Receiver and Subscriber will be the same entity. A general, the Receiver and Subscriber will be the same entity. A
Subscription Service provides Subscriptions to Subscribers of YANG Subscription Service provides Subscriptions to Subscribers of YANG
data. data.
A Subscription Service interacts with the Publisher of the YANG data A Subscription Service interacts with the Publisher of the YANG data
as needed to provide the data per the terms of the Subscription. as needed to provide the data per the terms of the Subscription.
A Subscription Request for one or more YANG subtrees (including A Subscription Request for one or more YANG subtrees (including
single leafs) made by the Subscriber of a Publisher and targeted to a single leafs) made by the Subscriber of a Publisher and targeted to a
Receiver. A Subscription may include constraints which dictate how Receiver. A Subscription may include constraints which dictate how
skipping to change at page 8, line 8 skipping to change at page 8, line 8
published under a target data node, and object Property Filters where published under a target data node, and object Property Filters where
an object should only be published if it has propert(ies) meeting an object should only be published if it has propert(ies) meeting
specified Filter criteria. For "on-change" notifications, passing specified Filter criteria. For "on-change" notifications, passing
through the Filter requires that a subscribed object is now different through the Filter requires that a subscribed object is now different
that from the previous Push, AND at least one of the YANG objects that from the previous Push, AND at least one of the YANG objects
being evaluated has changed since the last Update. being evaluated has changed since the last Update.
4. Requirements 4. Requirements
Many of the requirements within this section have been morphed from Many of the requirements within this section have been morphed from
OMG's DDS and XMPP.org's requirements specifications. XMPP[XEP-0060] and DDS[OMG-DDS] requirements specifications.
4.1. Assumptions for Subscriber Behavior 4.1. Assumptions for Subscriber Behavior
This document provides requirements for the Subscription Service. It This document provides requirements for the Subscription Service. It
does not define all the requirements for the Subscriber/Receiver. does not define all the requirements for the Subscriber/Receiver.
However in order to frame the desired behavior of the Subscription However in order to frame the desired behavior of the Subscription
Service, it is important to specify key input constraints. Service, it is important to specify key input constraints.
A Subscriber SHOULD avoid attempting to establish multiple A Subscriber SHOULD avoid attempting to establish multiple
Subscriptions pertaining to the same information, i.e. referring to Subscriptions pertaining to the same information, i.e. referring to
the same datastore YANG subtrees. the same datastore YANG subtrees.
A Subscriber MAY provide Subscription QoS criteria to the A Subscriber MAY provide Subscription QoS criteria to the
Subscription Service such that if the Subscription Service is unable Subscription Service; if the Subscription Service is unable to meet
to meet those criteria, the Subscription SHOULD NOT be established. those criteria, the Subscription SHOULD NOT be established.
When a Subscriber needs to restart, the Subscriber MAY have to When a Subscriber needs to restart, the Subscriber MAY have to
resubscribe. There is no requirement for the life span of the resubscribe. There is no requirement for the life span of the
Subscription to extend beyond the life span of the Subscriber. Subscription to extend beyond the life span of the Subscriber.
A Subscriber MUST be able to infer when a Subscription Service is no A Subscriber MUST be able to infer when a Subscription Service is no
longer active and when no more updates are being sent. longer active and when no more updates are being sent.
A Subscriber MAY check with a Subscription Service to validate the A Subscriber MAY check with a Subscription Service to validate the
existence and monitored subtrees of a Subscription. existence and monitored subtrees of a Subscription.
A Subscriber MUST be able to periodically lease and re-lease a A Subscriber MUST be able to periodically lease and extend the lease
Subscription from a Subscription Service. a Subscription from a Subscription Service.
4.2. Subscription Service Requirements 4.2. Subscription Service Requirements
4.2.1. General 4.2.1. General
A Subscription Service MUST support the ability to create, renew, A Subscription Service MUST support the ability to create, renew,
timeout, and terminate a Subscription. timeout, and terminate a Subscription.
A Subscription Service MUST be able to support and independently A Subscription Service MUST be able to support and independently
track one or more Subscription Requests by the same Subscriber. track one or more Subscription Requests by the same Subscriber.
skipping to change at page 9, line 13 skipping to change at page 9, line 13
Request. Request.
A Subscription Service MUST support Subscriptions against operational A Subscription Service MUST support Subscriptions against operational
datastores, configuration datastores, or both. datastores, configuration datastores, or both.
A Subscription Service MUST be able support a Subtree Filter so that A Subscription Service MUST be able support a Subtree Filter so that
subscribed updates under a target node might publish only operational subscribed updates under a target node might publish only operational
data, only configuration data, or both. data, only configuration data, or both.
A Subscription MAY include filters as defined within a Subscription A Subscription MAY include filters as defined within a Subscription
Request, Therefore the Subscription Service MUST publish only data Request, therefore the Subscription Service MUST publish only data
nodes that meet the filter criteria within a Subscription. nodes that meet the filter criteria within a Subscription.
A Subscription Service MUST support the ability to subscribe to A Subscription Service MUST support the ability to subscribe to
periodic updates. The subscription period MUST be configurable as periodic updates. The subscription period MUST be configurable as
part of the subscription request. part of the subscription request.
A Subscription Service SHOULD support the ability to subscribe to A Subscription Service SHOULD support the ability to subscribe to
updates "on-change", i.e. whenever values of subscribed data objects updates "on-change", i.e., whenever values of subscribed data objects
change. change.
For "on-change" updates, the Subscription Service MUST support a For "on-change" updates, the Subscription Service MUST support a
dampening period that needs to pass before the first or subsequent dampening period that needs to pass before the first or subsequent
"on-change" updates are sent. The dampening period SHOULD be "on-change" updates are sent. The dampening period SHOULD be
configurable as part of the subscription request. configurable as part of the subscription request.
A Subscription Service MUST allow Subscriptions to be monitored. A Subscription Service MUST allow Subscriptions to be monitored.
Specifically, a Subscription Service MUST at a minimum maintain Specifically, a Subscription Service MUST at a minimum maintain
information about which Subscriptions are being serviced, the terms information about which Subscriptions are being serviced, the terms
of those subscriptions (e.g. what data is being subscribed, of those subscriptions (e.g., what data is being subscribed,
associated filters, update policy - on change, periodic), and the associated filters, update policy - on change, periodic), and the
overall status of the Subscription - e.g. active or suspended. overall status of the Subscription - e.g., active or suspended.
A Subscription Service SHOULD be able to interpret Subscription QoS A Subscription Service SHOULD be able to interpret Subscription QoS
parameters, and only establish a Subscription if it is possible to parameters, and only establish a Subscription if it is possible to
meet the QoS needs of the provided QoS parameters. meet the QoS needs of the provided QoS parameters.
A Subscription Service MUST support terminating of a Subscription A Subscription Service MUST support terminating of a Subscription
when requested by the Subscriber. when requested by the Subscriber.
A Subscription Service SHOULD support the ability to suspend and to A Subscription Service SHOULD support the ability to suspend and to
resume a Subscription on request of a client. resume a Subscription on request of a client.
A Subscription Service MAY at its discretion revoke or suspend an A Subscription Service MAY at its discretion revoke or suspend an
existing subscription. Reasons may include transitory resource existing subscription. Reasons may include transitory resource
limitation, credential expiry, failure to reconfirm a subscription, limitation, credential expiry, failure to reconfirm a subscription,
loss of connectivity with the Receiver, operator CLI, and/or others. loss of connectivity with the Receiver, operator CLI, and/or others.
When this occurs, the Subscription Service MUST notify the Subscriber When this occurs, the Subscription Service MUST notify the Subscriber
and update subscription status. and update subscription status.
A Subscription Service MAY offer the ability to modify a subscription A Subscription Service MAY offer the ability to modify a subscription
filter. If such an ability is offered, the service MUST provide filter. If such an ability is offered, the service MUST provide
subscribers with an indication at what point the modified subscribers with an indication telling at what point the modified
subscription goes into effect. subscription goes into effect.
4.2.2. Negotiation 4.2.2. Negotiation
A Subscription Service MUST be able to negotiate the following terms A Subscription Service MUST be able to negotiate the following terms
of a Subscription: of a Subscription:
o The policy: i.e. whether updates are on-change of periodic o The policy: i.e. whether updates are on-change of periodic
o The interval, for periodic publication policy o The interval, for periodic publication policy
o The dampening period, for on-change update policy o The dampening period, for on-change update policy (if supported)
o Any filters associated with a subtree subscription o Any filters associated with a subtree subscription
A Subscription Service SHOULD be able to negotiate QoS criteria for a A Subscription Service SHOULD be able to negotiate QoS criteria for a
Subscription. Examples of Subscription QoS criteria may include Subscription. Examples of Subscription QoS criteria may include
reliability of the Subscription Service, reaction time between a reliability of the Subscription Service, reaction time between a
monitored YANG subtree/object change and a corresponding notification monitored YANG subtree/object change and a corresponding notification
push, and the Subscription Service's ability to support certain push, and the Subscription Service's ability to support certain
levels of object liveliness. levels of object liveliness.
In cases where a Subscription Request cannot be fulfilled, the In cases where a Subscription Request cannot be fulfilled, the
Subscription Service MUST include in its decline a set of criteria Subscription Service MUST include in its decline a set of criteria
that would have been acceptable when the Subscription Request was that would have been acceptable when the Subscription Request was
made. For example, if periodic updates were requested with too short made. For example, if periodic updates were requested with too short
update intervals for the specified data set, the minimum acceptable update intervals for the specified data set, an alternative
interval period SHOULD be included. If on-change updates were acceptable interval period might be returned from the Publisher. If
requested with a dampening period, the minimum acceptable dampening on-change updates were requested with too-aggressive a dampening
period SHOULD be included, or an indication whether only periodic period, then an acceptable dampening period may be returned, or
updates are supported along with the minimum acceptable interval alternatively an indication that only periodic updates are supported
period for the data set being subscribed to. for the requested object(s).
4.2.3. Update Distribution 4.2.3. Update Distribution
For "on-change" updates, the Subscription Service MUST only send For "on-change" updates, the Subscription Service MUST only send
deltas to the object data for which a change occurred. [Otherwise deltas to the object data for which a change occurred. [Otherwise
the subscriber will not know what has actually undergone change.] the subscriber might not know what has actually undergone change.]
The updates for each object MUST include an indication whether it was The updates for each object MUST include an indication whether it was
removed, added, or changed. removed, added, or changed.
When a Subscription Service is not able to send updates per its When a Subscription Service is not able to send updates per its
subscription contract, the Subscription MUST notify subscribers and subscription contract, the Subscription MUST notify subscribers and
put the subscription into a state of indicating the Subscription was put the subscription into a state indicating the Subscription was
suspended by the service. When able to resume service, subscribers suspended by the service. When able to resume service, subscribers
need to be notified as well. If unable to resume service, the need to be notified as well. If unable to resume service, the
Subscription Service MAY terminate the subscription and notify Subscription Service MAY terminate the subscription and notify
Subscribers accordingly. Subscribers accordingly.
When a Subscription with "on-change" updates is suspended and then When a Subscription with "on-change" updates is suspended and then
resumed, the first update SHOULD include updates of any changes that resumed, the first update SHOULD include updates of any changes that
occurred while the Subscription was suspended, with the current occurred while the Subscription was suspended, with the current
value. The Subscription Service MUST provide a clear indication when value. The Subscription Service MUST provide a clear indication when
this capability is not supported (because in this case a client this capability is not supported (because in this case a client
skipping to change at page 12, line 29 skipping to change at page 12, line 29
A loss of authenticated access to subtree or node SHOULD be A loss of authenticated access to subtree or node SHOULD be
communicated to the Subscriber. communicated to the Subscriber.
Subscription requests, including requests to create, terminate, Subscription requests, including requests to create, terminate,
suspend, and resume Subscriptions MUST be properly authorized. suspend, and resume Subscriptions MUST be properly authorized.
When the Subscriber and Receiver are different, the Receiver MUST be When the Subscriber and Receiver are different, the Receiver MUST be
able to terminate any Subscription to it where objects are being able to terminate any Subscription to it where objects are being
delivered over a Unicast transport. delivered over a Unicast transport.
A Subscription Service SHOULD decline a Subscription Request if it A Subscription Service SHOULD decline a Subscription Request if it is
would deplete its resources. It is preferable to decline a likely to deplete its resources. It is preferable to decline a
Subscription when originally requested, rather than having to Subscription when originally requested, rather than having to
terminate it prematurely later. terminate it prematurely later.
4.2.6. Subscription QoS 4.2.6. Subscription QoS
A Subscription Service SHOULD be able to negotiate the following A Subscription Service SHOULD be able to negotiate the following
Subscription QoS parameters with a Subscriber: Dampening, Subscription QoS parameters with a Subscriber: Dampening,
Reliability, Deadline, and Bundling. Reliability, Deadline, and Bundling.
4.2.6.1. Liveliness 4.2.6.1. Liveliness
skipping to change at page 13, line 19 skipping to change at page 13, line 19
A Subscription Service MAY send Updates over Best Effort and Reliable A Subscription Service MAY send Updates over Best Effort and Reliable
transports. transports.
4.2.6.4. Coherence 4.2.6.4. Coherence
For a particular Subscription, every update to a subscribed object For a particular Subscription, every update to a subscribed object
MUST be sent to the Receiver in sequential order. MUST be sent to the Receiver in sequential order.
4.2.6.5. Presentation 4.2.6.5. Presentation
The Subscription Service SHOULD have the ability to bundle a set of The Subscription Service MAY have the ability to bundle a set of
discrete object notifications into a single publishable update for a discrete object notifications into a single publishable update for a
Subscription. A bundle MAY include information on different Data Subscription. A bundle MAY include information on different Data
Nodes and/or multiple updates about a single Data Node. Nodes and/or multiple updates about a single Data Node.
For any bundled updates, the Subscription Service MUST provide For any bundled updates, the Subscription Service MUST provide
information for a Receiver to reconstruct the order and timing of information for a Receiver to reconstruct the order and timing of
updates. updates.
4.2.6.6. Deadline 4.2.6.6. Deadline
skipping to change at page 14, line 12 skipping to change at page 14, line 12
met, updates for a subscribed object MUST be pushed, subject to the met, updates for a subscribed object MUST be pushed, subject to the
QoS limits established for the subscription. QoS limits established for the subscription.
It MUST be possible for the Subscription Service to receive Filter(s) It MUST be possible for the Subscription Service to receive Filter(s)
from a Subscriber and apply them to corresponding object(s) within a from a Subscriber and apply them to corresponding object(s) within a
Subscription. Subscription.
It MUST be possible to attach one or more Subtree and/or Property It MUST be possible to attach one or more Subtree and/or Property
Filters to a subscription. Mandatory Property Filter types include: Filters to a subscription. Mandatory Property Filter types include:
o For character based object properties, filter values which are o For character-based object properties, filter values which are
exactly equal to a provided string, not equal to the string, or exactly equal to a provided string, not equal to the string, or
containing a string. containing a string.
o For numeric based object properties, filter values which are =, o For numeric based object properties, filter values which are =,
!=, <, <=, >, >= a provided number. !=, <, <=, >, >= a provided number.
It SHOULD be possible for Property Filtering criteria to evaluate It SHOULD be possible for Property Filtering criteria to evaluate
more than one property of a particular subscribed object as well as more than one property of a particular subscribed object as well as
apply multiple filters against a single property. apply multiple filters against a single property.
It SHOULD be possible to establish query match criteria on additional It SHOULD be possible to establish query match criteria on additional
objects to be used in conjunction with Property Filtering criteria on objects to be used in conjunction with Property Filtering criteria on
a subscribed object. (For example: if A has changed AND B=1, then a subscribed object. (For example: if A has changed AND B=1, then
Push A.) (Note: Query match capability may be done on objects within Push A.) Query match capability may be done on objects within the
the datastore even if those objects are not included within the datastore even if those objects are not included within the
subscription. This of course assumes the subscriber has read access subscription. This of course assumes the subscriber has read access
to those objects.) to those objects.
4.2.8. Assurance and Monitoring 4.2.8. Assurance and Monitoring
It MUST be possible to fetch the state of a single subscription from It MUST be possible to fetch the state of a single subscription from
a Subscription Service. a Subscription Service.
It MUST be possible to fetch the state of all subscriptions of a It MUST be possible to fetch the state of all subscriptions of a
particular Subscriber. particular Subscriber.
It MUST be possible to fetch a list and status of all Subscription It MUST be possible to fetch a list and status of all Subscription
 End of changes. 31 change blocks. 
51 lines changed or deleted 51 lines changed or added

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