idnits 2.17.00 (12 Aug 2021) /tmp/idnits12435/draft-ietf-netconf-restconf-notif-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 13, 2017) is 1894 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 2 errors (**), 0 flaws (~~), 1 warning (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 NETCONF E. Voit 3 Internet-Draft A. Gonzalez Prieto 4 Intended status: Standards Track A. Tripathy 5 Expires: September 14, 2017 E. Nilsen-Nygaard 6 Cisco Systems 7 A. Clemm 8 Huawei 9 A. Bierman 10 YumaWorks 11 March 13, 2017 13 Restconf and HTTP Transport for Event Notifications 14 draft-ietf-netconf-restconf-notif-02 16 Abstract 18 This document defines Restconf, HTTP2, and HTTP1.1 bindings for the 19 transport of Subscription requests and corresponding push updates. 20 Being subscribed may be either Event Notifications or objects or 21 subtress of YANG Datastores. 23 Status of This Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF). Note that other groups may also distribute 30 working documents as Internet-Drafts. The list of current Internet- 31 Drafts is at http://datatracker.ietf.org/drafts/current/. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 This Internet-Draft will expire on September 14, 2017. 40 Copyright Notice 42 Copyright (c) 2017 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with respect 50 to this document. Code Components extracted from this document must 51 include Simplified BSD License text as described in Section 4.e of 52 the Trust Legal Provisions and are provided without warranty as 53 described in the Simplified BSD License. 55 Table of Contents 57 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 58 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 59 3. Solution . . . . . . . . . . . . . . . . . . . . . . . . . . 3 60 3.1. Dynamic YANG Subscription with RESTCONF control . . . . . 3 61 3.2. Subscription Multiplexing . . . . . . . . . . . . . . . . 6 62 4. Encoded Subscription and Event Notification Examples . . . . 7 63 4.1. Restconf Subscription and Events over HTTP1.1 . . . . . . 7 64 4.2. Event Notification over HTTP2 . . . . . . . . . . . . . . 12 65 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12 66 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 67 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 68 7.1. Normative References . . . . . . . . . . . . . . . . . . 13 69 7.2. Informative References . . . . . . . . . . . . . . . . . 14 70 Appendix A. End-to-End Deployment Guidance . . . . . . . . . . . 14 71 A.1. Call Home . . . . . . . . . . . . . . . . . . . . . . . . 14 72 A.2. TLS Heartbeat . . . . . . . . . . . . . . . . . . . . . . 15 73 Appendix B. Issues being worked and resolved . . . . . . . . . . 15 74 B.1. Unresolved Issues . . . . . . . . . . . . . . . . . . . . 15 75 Appendix C. Changes between revisions . . . . . . . . . . . . . 15 76 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 78 1. Introduction 80 Mechanisms to support Event subscription and push are defined in 81 [sn]. Enhancements to [sn] which enable YANG Datastore subscription 82 and push are defined in [yang-push]. This document provides a 83 transport specification for these protocols over Restconf and HTTP. 84 Driving these requirements is [RFC7923]. 86 The streaming of Subscription Event Notifications has synergies with 87 HTTP2 streams. Benefits which can be realized when transporting 88 events directly HTTP2 [RFC7540] include: 90 o Elimination of head-of-line blocking 92 o Weighting and proportional dequeuing of Events from different 93 subscriptions 95 o Explicit precedence in subscriptions so that events from one 96 subscription must be sent before another dequeues 98 2. Terminology 100 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 101 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 102 document are to be interpreted as described in RFC 2119 [RFC2119]. 104 The following terms use the defintions from [sn]: Configured 105 Subscription, Dynamic Subscription, Event Notification, Publisher, 106 Receiver, Subscriber, Subscription. 108 3. Solution 110 Event subscription is defined in [sn], YANG Datastore subscription is 111 defined in [yang-push]. This section specifies transport mechanisms 112 applicable to both. 114 3.1. Dynamic YANG Subscription with RESTCONF control 116 Dynamic Subscriptions for both [sn] and its [yang-push] augmentations 117 are configured and managed via signaling messages transported over 118 [RFC8040]. These interactions will be accomplished via a Restconf 119 POST into RPCs located on the Publisher. HTTP responses codes will 120 indicate the results of the interaction with the Publisher. An HTTP 121 status code of 200 is the proper response to a successful RPC call. The successful will 123 result in a HTTP message with returned subscription URI on a 124 logically separate mechanism than was used for the original Restconf 125 POST. This mechanism is via a parallel TCP connection in the case of 126 HTTP 1.x, or in the case of HTTP2 via a separate HTTP stream within 127 the HTTP connection. When a being returned by the Publisher, failure 128 will be indicated by error codes transported in payload. 130 Once established, the resulting stream of Event Notifications are 131 then delivered via SSE for HTTP1.1 and via HTTP Data for HTTP2. 133 3.1.1. Call Flow for HTTP2 135 Requests to [yang-push] augmented RPCs are sent on one or more HTTP2 136 streams indicated by (a) in Figure 2. Event Notifications related to 137 a single subscription are pushed on a unique logical channel (b). In 138 the case below, a newly established subscription has its events 139 pushed over HTTP2 stream (7). 141 +------------+ +------------+ 142 | Subscriber | | Publisher | 143 |HTTP2 Stream| |HTTP2 Stream| 144 | (a) (b) | | (a) (b) | 145 +------------+ +------------+ 146 | Restconf POST (RPC:establish-subscription) | 147 |--------------------------------------------->| 148 | HTTP 200 OK (URI)| 149 |<---------------------------------------------| 150 | (7)HTTP POST (URI) (7) 151 | |--------------------------------------------->| 152 | | HTTP 200 OK| 153 | |<---------------------------------------------| 154 | | HTTP Data (event-notif)| 155 | |<---------------------------------------------| 156 | Restconf POST (RPC:modify-subscription) | | 157 |--------------------------------------------->| | 158 | | HTTP 200 OK| | 159 |<---------------------------------------------| | 160 | | HTTP Data (subscription-modified)| 161 | |<---------------------------------------------| 162 | | HTTP Data (event-notif)| 163 | |<---------------------------------------------| 164 | Restconf POST (RPC:delete-subscription) | | 165 |--------------------------------------------->| | 166 | | HTTP 200 OK| | 167 |<---------------------------------------------| | 168 | | HTTP Headers (end of stream)| 169 | (/7)<-----------------------------------------(/7) 170 | 172 Figure 1: Dynamic with HTTP2 174 3.1.2. Call flow for HTTP1.1 176 Requests to [yang-push] RPCs are sent on the TCP connection indicated 177 by (a). Event Notifications are pushed on a separate connection (b). 178 This connection (b) will be used for all Event Notifications across 179 all subscriptions. 181 +--------------+ +--------------+ 182 | Subscriber | | Publisher | 183 |TCP connection| |TCP connection| 184 | (a) (b) | | (a) (b) | 185 +--------------+ +--------------+ 186 | Restconf POST (RPC:establish-subscription) | 187 |--------------------------------------------->| 188 | HTTP 200 OK (URI)| 189 |<---------------------------------------------| 190 | |HTTP GET (URI) | 191 | |--------------------------------------------->| 192 | | HTTP 200 OK| 193 | |<---------------------------------------------| 194 | | SSE (event-notif)| 195 | |<---------------------------------------------| 196 | Restconf POST (RPC:modify-subscription) | | 197 |--------------------------------------------->| | 198 | | HTTP 200 OK| | 199 |<---------------------------------------------| | 200 | | SSE (subscription-modified)| 201 | |<---------------------------------------------| 202 | | SSE (event-notif)| 203 | |<---------------------------------------------| 204 | Restconf POST (RPC:delete-subscription) | | 205 |--------------------------------------------->| | 206 | | HTTP 200 OK| | 207 |<---------------------------------------------| | 208 | | | 209 | | 211 Figure 2: Dynamic with HTTP1.1 213 3.1.3. Configured Subscription over HTTP2 215 With a Configured Subscription, all information needed to establish a 216 secure relationship with that Receiver is available on the Publisher. 217 With this information, the Publisher will establish a secure 218 transport connection with the Receiver and then begin pushing the 219 Event Notifications to the Receiver. Since Restconf might not exist 220 on the Receiver, it is not desirable to require that such Event 221 Notifications be pushed with any dependency on Restconf. Nor is 222 there value which Restconf provides on top of HTTP. Therefore in 223 place of Restconf, a TLS secured HTTP2 Client connection must be 224 established with an HTTP2 Server located on the Receiver. Event 225 Notifications will then be sent as part of an extended HTTP POST to 226 the Receiver. 228 POST messages will be addressed to HTTP augmentation code on the 229 Receiver capable of accepting and responding to Event Notifications. 230 The first POST message must be a subscription-started notification. 231 Push update notifications must not be sent until the receipt of an 232 HTTP 200 OK for this initial notification. The 200 OK will indicate 233 that the Receiver is ready for Event Notifications. At this point a 234 Subscription must be allocated its own HTTP2 stream. Figure 4 235 depicts this message flow. 237 +------------+ +------------+ 238 | Receiver | | Publisher | 239 |HTTP2 Stream| |HTTP2 Stream| 240 | (a) (b) | | (a) (b) | 241 +------------+ +------------+ 242 | HTTP Post Headers, Data (sub-start, SubID)| 243 |<---------------------------------------------| 244 | HTTP 200 OK | 245 |--------------------------------------------->| 246 | | HTTP Post Headers, Data (event-notif)| 247 | |<---------------------------------------------| 248 | | HTTP Data (event-notif)| 249 | |<---------------------------------------------| 250 | | HTTP Data (sub-terminate)| 251 | |<---------------------------------------------| 252 | |HTTP 200 OK | 253 | |--------------------------------------------->| 255 Figure 3: Configured over HTTP2 257 As the HTTP2 transport is available to the Receiver, the Publisher 258 should: 260 o take any subscription-priority and copy it into the HTTP2 stream 261 priority, and 263 o take a subscription-dependency if it has been provided and map the 264 HTTP2 stream for the parent subscription into the HTTP2 stream 265 dependency. 267 3.2. Subscription Multiplexing 269 It is possible that updates might be delivered in a different 270 sequence than generated. Reasons for this might include (but are not 271 limited to): 273 o replay of pushed updates 274 o temporary loss of transport connectivity, with update buffering 275 and different dequeuing priorities per Subscription 277 o population, marshalling and bundling of independent Subscription 278 Updates, and 280 Therefore each Event Notification will include a timestamp to ensure 281 that a Receiver understands the time when a that update was 282 generated. Use of this timestamp can give an indication of the state 283 of objects at a Publisher when state-entangled information is 284 received across different subscriptions. The use of the latest Event 285 Notification timestamp for a particular object update can introduce 286 errors. So when state-entangled updates have inconsistent object 287 values and temporally close timestamps, a Receiver might consider 288 performing a GET to validate the current state of a Publisher. 290 4. Encoded Subscription and Event Notification Examples 292 Transported updates will contain context data for one or more Event 293 Notifications. Each transported Event Notification will contain 294 several parameters: 296 4.1. Restconf Subscription and Events over HTTP1.1 298 Subscribers can dynamically learn whether a RESTCONF server supports 299 various types of Event or Yang datastore subscription capabilities. 300 This is done by issuing an HTTP request OPTIONS, HEAD, or GET on the 301 stream. Some examples building upon the Call flow for HTTP1.1 from 302 Section 3.2.2 are: 304 GET /restconf/data/ietf-restconf-monitoring:restconf-state/ 305 streams/stream=yang-push HTTP/1.1 306 Host: example.com 307 Accept: application/yang.data+xml 309 If the server supports it, it may respond 310 HTTP/1.1 200 OK 311 Content-Type: application/yang.api+xml 312 313 yang-push 314 Yang push stream 315 316 xml 317 https://example.com/streams/yang-push-xml 318 319 320 321 json 322 https://example.com/streams/yang-push-json 323 324 325 327 If the server does not support any form of subscription, it may 328 respond 330 HTTP/1.1 404 Not Found 331 Date: Mon, 25 Apr 2012 11:10:30 GMT 332 Server: example-server 334 Subscribers can determine the URL to receive updates by sending an 335 HTTP GET as a request for the "location" leaf with the stream list 336 entry. The stream to use for may be selected from the Event Stream 337 list provided in the capabilities exchange. Note that different 338 encodings are supporting using different Event Stream locations. For 339 example, the Subscriber might send the following request: 341 GET /restconf/data/ietf-restconf-monitoring:restconf-state/ 342 streams/stream=yang-push/access=xml/location HTTP/1.1 343 Host: example.com 344 Accept: application/yang.data+xml 346 The Publisher might send the following response: 348 HTTP/1.1 200 OK 349 Content-Type: application/yang.api+xml 350 352 https://example.com/streams/yang-push-xml 353 355 To subscribe and start receiving updates, the subscriber can then 356 send an HTTP GET request for the URL returned by the Publisher in the 357 request above. The accept header must be "text/event-stream". The 358 Publisher uses the Server Sent Events [W3C-20150203] transport 359 strategy to push filtered Event Notifications from the Event stream. 361 The Publisher MUST support individual parameters within the POST 362 request body for all the parameters of a subscription. The only 363 exception is the encoding, which is embedded in the URI. An example 364 of this is: 366 // subtree filter = /foo 367 // periodic updates, every 5 seconds 368 POST /restconf/operations/ietf-event-notifications: 369 establish-subscription HTTP/1.1 370 Host: example.com 371 Content-Type: application/yang-data+json 373 { 374 "ietf-event-notifications:input" : { 375 ?stream?: ?push-data" 376 ?period" : 5, 377 "xpath-filter" : ?/ex:foo[starts-with(?bar?.?some']" 378 } 379 } 381 Should the publisher not support the requested subscription, it may 382 reply: 384 HTTP/1.1 501 Not Implemented 385 Date: Mon, 23 Apr 2012 17:11:00 GMT 386 Server: example-server 387 Content-Type: application/yang.errors+xml 388 389 390 application 391 operation-not-supported 392 error 393 Xpath filters not supported 394 395 397 398 399 400 401 403 with an equivalent JSON encoding representation of: 405 HTTP/1.1 501 Not Implemented 406 Date: Mon, 23 Apr 2012 17:11:00 GMT 407 Server: example-server 408 Content-Type: application/yang.errors+json 409 { 410 "ietf-restconf:errors": { 411 "error": { 412 "error-type": "protocol", 413 "error-tag": "operation-not-supported", 414 "error-message": "Xpath filters not supported." 415 "error-info": { 416 "datastore-push:supported-subscription": { 417 "subtree-filter": [null] 418 } 419 } 420 } 421 } 422 } 424 The following is an example of a pushed Event Notification data for 425 the Subscription above. It contains a subtree with root foo that 426 contains a leaf called bar: 428 XML encoding representation: 429 430 431 433 my-sub 434 435 2015-03-09T19:14:56.233Z 436 438 439 some_string 440 441 442 444 Or with the equivalent YANG over JSON encoding representation as 445 defined in [RFC7951]: 447 { 448 "ietf-restconf:notification": { 449 "datastore-push:subscription-id": "my-sub", 450 "eventTime": "2015-03-09T19:14:56.233Z", 451 "datastore-push:datastore-contents": { 452 "example-mod:foo": { "bar": "some_string" } 453 } 454 } 455 } 457 To modify a Subscription, the subscriber issues another POST request 458 on the provided URI using the same subscription-id as in the original 459 request. For example, to modify the update period to 10 seconds, the 460 subscriber may send: 462 POST /restconf/operations/ietf-event-notifications: 463 modify-subscription HTTP/1.1 464 Host: example.com 465 Content-Type: application/yang-data+json 467 { 468 "ietf-event-notifications:input" : { 469 ?subscription-id?: 100, 470 ?period" : 10 471 } 472 } 474 To delete a Subscription, the Subscriber issues a DELETE request on 475 the provided URI using the same subscription-id as in the original 476 request 478 4.2. Event Notification over HTTP2 480 The basic encoding will look as below. It will consists of a JSON 481 representation wrapped in an HTTP2 header. 483 HyperText Transfer Protocol 2 484 Stream: HEADERS, Stream ID: 5 485 Header: :method: POST 486 Stream: HEADERS, Stream ID: 5 488 { 489 "ietf-yangpush:notification": { 490 "datastore-push:subscription-id": "my-sub", 491 "eventTime": "2015-03-09T19:14:56.233Z", 492 "datastore-push:datastore-contents": { 493 "foo": { "bar": "some_string" } 494 } 495 } 496 } 498 5. Security Considerations 500 Subscriptions could be used to intentionally or accidentally overload 501 the resources of a Publisher. For this reason, it is important that 502 the Publisher has the ability to prioritize the establishment and 503 push of Event Notifications where there might be resource exhaust 504 potential. In addition, a server needs to be able to suspend 505 existing Subscriptions when needed. When this occurs, the 506 subscription status must be updated accordingly and the Receivers 507 notified. 509 A Subscription could be used to attempt retrieve information for 510 which a Receiver has no authorized access. Therefore it is important 511 that data pushed via a Subscription is authorized equivalently with 512 regular data retrieval operations. Data being pushed to a Receiver 513 needs therefore to be filtered accordingly, just like if the data 514 were being retrieved on-demand. The Netconf Authorization Control 515 Model [RFC6536] applies even though the transport is not NETCONF. 517 One or more Publishers of Configured Subscriptions could be used to 518 overwhelm a Receiver which doesn't even support Subscriptions. There 519 are two protections here. First Event Notifications for Configured 520 Subscriptions MUST only be transmittable over Encrypted transports. 521 Clients which do not want pushed Event Notifications need only 522 terminate or refuse any transport sessions from the Publisher. 523 Second, the HTTP transport augmentation on the Receiver must send an 524 HTTP 200 OK to a subscription started notification before the 525 Publisher starts streaming any events. 527 One or more Publishers could overwhelm a Receiver which is unable to 528 control or handle the volume of Event Notifications received. In 529 deployments where this might be a concern, HTTP2 transport such as 530 HTTP2) should be selected. 532 6. Acknowledgments 534 We wish to acknowledge the helpful contributions, comments, and 535 suggestions that were received from: Susan Hares, Tim Jenkins, Balazs 536 Lengyel, Kent Watsen, Michael Scharf, and Guangying Zheng. 538 7. References 540 7.1. Normative References 542 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 543 Requirement Levels", BCP 14, RFC 2119, 544 DOI 10.17487/RFC2119, March 1997, 545 . 547 [RFC6520] Seggelmann, R., Tuexen, M., and M. Williams, "Transport 548 Layer Security (TLS) and Datagram Transport Layer Security 549 (DTLS) Heartbeat Extension", RFC 6520, 550 DOI 10.17487/RFC6520, February 2012, 551 . 553 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 554 Protocol (NETCONF) Access Control Model", RFC 6536, 555 DOI 10.17487/RFC6536, March 2012, 556 . 558 [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext 559 Transfer Protocol Version 2 (HTTP/2)", RFC 7540, 560 DOI 10.17487/RFC7540, May 2015, 561 . 563 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 564 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 565 . 567 [sn] Voit, E., Clemm, A., Gonzalez Prieto, A., Prasad Tripathy, 568 A., and E. Nilsen-Nygaard, "Subscribing to Event 569 Notifications", February 2017, 570 . 573 7.2. Informative References 575 [RFC7923] Voit, E., Clemm, A., and A. Gonzalez Prieto, "Requirements 576 for Subscription to YANG Datastores", RFC 7923, 577 DOI 10.17487/RFC7923, June 2016, 578 . 580 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 581 RFC 7951, DOI 10.17487/RFC7951, August 2016, 582 . 584 [RFC8071] Watsen, K., "NETCONF Call Home and RESTCONF Call Home", 585 RFC 8071, DOI 10.17487/RFC8071, February 2017, 586 . 588 [W3C-20150203] 589 "Server-Sent Events, World Wide Web Consortium CR CR- 590 eventsource-20121211", February 2015, 591 . 593 [yang-push] 594 Clemm, A., Voit, E., Gonzalez Prieto, A., Prasad Tripathy, 595 A., Nilsen-Nygaard, E., Bierman, A., and B. Lengyel, 596 "Subscribing to YANG datastore push updates", March 2017, 597 . 600 Appendix A. End-to-End Deployment Guidance 602 Several technologies are expected to be seen within a deployment to 603 achieve security and ease-of-use requirements. These are not 604 necessary for an implementation of this specification, but will be 605 useful to consider when considering the operational context. 607 A.1. Call Home 609 Pub/Sub implementations should have the ability to transparently 610 incorporate 'call home' [RFC8071] so that secure TLS connections can 611 originate from the desired device. 613 A.2. TLS Heartbeat 615 HTTP sessions might not quickly allow a Subscriber to recognize when 616 the communication path has been lost from the Publisher. To 617 recognize this, it is possible for a Receiver to establish a TLS 618 heartbeat [RFC6520]. In the case where a TLS heartbeat is included, 619 it should be sent just from Receiver to Publisher. Loss of the 620 heartbeat should result in any Subscription related TCP sessions 621 between those endpoints being torn down. The subscription can then 622 attempt to re-establish. 624 Appendix B. Issues being worked and resolved 626 (To be removed by RFC editor prior to publication) 628 B.1. Unresolved Issues 630 GRPC compatibility 1: Mechanisms for HTTP2 to GRPC mapping need to be 631 considered. There is a good start there as this draft only uses 632 POST, not GET. As GET is used in RESTCONF for capabilities 633 discovery, we have some backwards compatibility issues with existing 634 IETF drafts. Possible options to address are (1) provide a POST 635 method for anything done by GET in RESTCONF, (2) await support of GET 636 by GRPC, or (3) tunnel RESTCONF's GET messages within a GRPC POST. 638 GRPC compatibility 2: We need to expose a method against which POST 639 is done as events begin on a stream. See Stream 7 in figure 2. Can 640 only send traffic to a method, not a URI. URI points to a method, 641 not a resource. 643 Need to add into document examples of Event streams. Document only 644 includes yang-push examples at this point. 646 We need to reference the viable encodings of notifications. 648 Appendix C. Changes between revisions 650 (To be removed by RFC editor prior to publication) 652 v01 - v02 654 o Removed sections now redundant with [sn] and [yang-push] such as: 655 mechanisms for subscription maintenance, terminology definitions, 656 stream discovery. 658 o 3rd party subscriptions are out-of-scope. 660 o SSE only used with Restconf and HTTP1.1 Dynamic Subscriptions 661 o Timeframes for event tagging are self-defined. 663 o Clean-up of wording, references to terminology, section numbers. 665 v00 - v01 667 o Removed the ability for more than one subscription to go to a 668 single HTTP2 stream. 670 o Updated call flows. Extensively. 672 o SSE only used with Restconf and HTTP1.1 Dynamic Subscriptions 674 o HTTP is not used to determine that a Receiver has gone silent and 675 is not Receiving Event Notifications 677 o Many clean-ups of wording and terminology 679 Authors' Addresses 681 Eric Voit 682 Cisco Systems 684 Email: evoit@cisco.com 686 Alberto Gonzalez Prieto 687 Cisco Systems 689 Email: albertgo@cisco.com 691 Ambika Prasad Tripathy 692 Cisco Systems 694 Email: ambtripa@cisco.com 696 Einar Nilsen-Nygaard 697 Cisco Systems 699 Email: einarnn@cisco.com 701 Alexander Clemm 702 Huawei 704 Email: ludwig@clemm.org 705 Andy Bierman 706 YumaWorks 708 Email: andy@yumaworks.com