Subject: Re: [netconf] WGLC: draft-ietf-netconf-https-notif-06

From: Reshad Rahman <[email-masked]>
Date: Mon, 01 Feb 2021 11:33:29 -0500

Good with me.

Regards,

Reshad.

From: Kent Watsen <[email-masked]>
Date: Sunday, January 31, 2021 at 7:54 AM
To: Reshad Rahman <[email-masked]>
Cc: "[email-masked]" <[email-masked]>, "[email-masked]" <[email-masked]>
Subject: Re: [netconf] WGLC: draft-ietf-netconf-https-notif-06

I've reviewed this document and I think the document will be ready once the changes planned by the authors (regarding notification-messages) are made.

Thanks, but a couple more problems:

1) the URLs are bad.  Specifically, the example in the “Learning Receiver Capabilities” section uses a nonsensical URL (‘/‘).   The authors propose to instead use a sub-resource to the user-configured “path” (e.g., GET /some/path/capabilities) and move the POST URL to another sub-resource (e.g., /some/path/relay-notification).  [see below for more on this]

2) the media-types are bad: “application/yang-data+[xml/json]” is used for notifications, which is wrong since they are not YANG-defined, and the custom media-types for capabilities (application/ietf-https-notif-cap+[xml/json]) is a way overkill.  The authors propose to use “application/[xml/json]” for both cases.

I have a question on the following YANG description. Section 4.1 mentions 'path-absolute' for the URI but the description below says "Relative URI...". Should this description be clarified/corrected or am I missing something?

            augment "transport/tls/tls/http-client-parameters" {
              leaf path {
                type string;
                description
                  "Relative URI to the target resource.";
              }
              description
                "Augmentation to add a path to the target resource.";
            }

Agreed.  How about this?

        leaf path {
          type string;
          mandatory true;
          description
            "URI prefix to the target resources.  Under this
             path the receiver must support both the 'capabilities'
             and 'relay-notification' resource targets, as described
             in RFC XXXX.";
        }

So, if path==“/som/path”, capability-discovery would be to "/some/path/capabilities” and notifications would be sent to “/some/path/relay-notification”.

Thoughts?

Formatting nit:
           Trust anchors (i.e. CA certs) that are used to authenticat\
 e

Fixed, but the other example cannot be fixed because the “xmlns” strings alone are too long, and XML doesn’t internally support folding, and the “string” type doesn’t allows for whitespace (include ‘\n’) both at the beginning and end of strings (recall my request for rfc6991-bis to define a “token” type that would enable the parser to discard any found, so our examples could more often be manually-folded).

K.

---

From: Kent Watsen <[email-masked]>
Date: Tue, 2 Feb 2021 22:33:46 +0000

NETCONF,

      The just posted -07 addresses issues raised thus far.
      https://tools.ietf.org/html/draft-ietf-netconf-https-notif-07 <https://tools.ietf.org/html/draft-ietf-netconf-https-notif-07>

Henning, Eric, Reshad,

      Please re-review as your comments are important to us.

Everyone else,

      The hasn’t been many reviews as yet.  Please review this
      version, as it is significantly better (ready for publication?)
      than the prevision version.

K.

> On Feb 1, 2021, at 11:33 AM, Reshad Rahman <[email-masked]> wrote:
> 
> Good with me.
>  
> Regards,
> Reshad.
>

---

From: Kent Watsen <[email-masked]>
Date: Wed, 3 Feb 2021 11:14:49 +0000

Should we abandon legacy RFC 5277 protocol?

Specifically, change the API to something that can be modeled by YANG?   This is desirable to receivers that are themselves an NC/RC "server”.  For instance:

  rpc relay-notification {
    input {
      anydata notification;
    }
  }

OLD:

  POST /some/path/relay-notification HTTP/1.1
  Host: example.com
  Content-Type: application/xml

  <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
    ...
  </notification>

NEW:  (diffs: URL, Content-Type, <input>, and xmlns)

  /restconf/operations/ietf-notif-receiver-https:relay-notification HTTP/1.1
  Host: example.com
  Content-Type: application/yang+data+xml

  <input xmlns="urn:ietf:params:xml:ns:notification-receiver:1.0">
    <notification>
      ...
    </notification>
  </input>

Not shown, but it also normalizes the JSON-encoding to have a YANG-modeled prefix (not a pseudo prefix, e.g., “ietf-restconf:”)

Thoughts?

K.

---

From: "maqiufang (A)" <[email-masked]>
Date: Thu, 4 Feb 2021 07:28:30 +0000

Hi, Kent:

I have read the latest version and find it more flexible.
Here comes a few suggestions:

1、 You have got a wrong link at the end of section 1.1. It supposed to be Appendix A.2, rather than Section 8.2.

2、 It seems that you are mix-using HTTP and HTTPS somewhere, for example,  "The protocol consists of two HTTP-based target resources presented by the receiver"(Should be “HTTPS-based”, I think).

3、 Section 3.3/4.2: Will the receiver return a HTTP 200/204 definitely? Should we consider some other extreme situations( e.g., not supported/implemented) ? Just my individual opinion.:)

4、 Section 4.3: You should replace "<event-class>fault</fault>" with "<event-class>fault</event-class>".

Qiufang Ma

From: netconf [mailto:[email-masked]] On Behalf Of Kent Watsen
Sent: Wednesday, February 3, 2021 6:34 AM
To: [email-masked]
Subject: Re: [netconf] WGLC: draft-ietf-netconf-https-notif-06

NETCONF,

      The just posted -07 addresses issues raised thus far.
      https://tools.ietf.org/html/draft-ietf-netconf-https-notif-07

Henning, Eric, Reshad,

Everyone else,

K.

On Feb 1, 2021, at 11:33 AM, Reshad Rahman <[email-masked]<mailto:[email-masked]>> wrote:

Good with me.

Regards,
Reshad.

From: Kent Watsen <[email-masked]<mailto:[email-masked]>>
Date: Sunday, January 31, 2021 at 7:54 AM
To: Reshad Rahman <[email-masked]<mailto:[email-masked]>>
Cc: "[email-masked]<mailto:[email-masked]>" <[email-masked]<mailto:[email-masked]>>, "[email-masked]<mailto:[email-masked]>" <[email-masked]<mailto:[email-masked]>>
Subject: Re: [netconf] WGLC: draft-ietf-netconf-https-notif-06

Agreed.  How about this?

        leaf path {
          type string;
          mandatory true;
          description

Thoughts?

Formatting nit:

K.

---

From: Martin Björklund <[email-masked]>
Date: Thu, 04 Feb 2021 20:39:44 +0100 (CET)

Hi,

I have reviewed this document (-07), and I just have some minor
comments.  The document is well written and easy to understand.

o  Abstract

   [...] It also presents an example
   module for configuration without using the data model defined in RFC
   8639.

  Is this such an important example that it should be mentioned in the
  abstract?  Does this mean that the NETCONF WG doesn't think that the
  data model defined in RFC 8639 is useful anymore?  Why is a
  "simpler" module needed?

o  3.1.  Applicability

   For publishers using Subscription to YANG Notifications [RFC8639],
   dynamic discovery of a receiver's supported encoding is necessary
   only when the "/subscriptions/subscription/encoding" leaf is not
   configured, per the "encoding" leaf's description statement in the
   "ietf-subscribed-notification" module.  FIXME: do they need to
   discover *any* capabilities?

  Note that the "encoding" leaf has a when expression and is
  present only if the chosen transport is derived from
  sn:configurable-encoding.  The "https" transport identity is not
  derived from sn:configurable-encoding, so the "encoding" leaf will
  never be present.

3.2.  Request

   To learn the capabilities of a receiver, a publisher can issue an
   HTTPS GET request to the "capabilities" resource under a known path
   on the receiver

  I think you should mention what this "known path" is.  After reading
  the data model in detail I understand how it works, but it would be
  good with an early explanation (the path is configured per
  receiver).

o  3.3

     leaf-list receiver-capability {
       type string {
         pattern "urn:ietf:capability:https-notif-receiver:*";
       }

  What's the point of the "urn:..." prefix if it is required?  It
  would be simpler to just have the "*"-part in the registry.

  But I think a better solution would be

     leaf-list receiver-capability {
       type inet:uri;
     }

  This would be more extensible.

o  3.4.  Example

   The publisher can send the following request to learn the receiver
   capabilities.  In this example, the "Accept" states that the receiver
   wants to receive notifications in XML but, if not supported, to use
   JSON encoding.

  Copy&paste error?  The "Accept" header states that the client wants
  to get the capabilities as xml, json.

o  5.2

   <CODE BEGINS> file "[email-masked]"
   [note: '\' line wrapping for formatting only]

   module ietf-subscribed-notif-receivers {

  Remove the "note" line (no "\" is used, and this line should not be
  part of the <CODE BEGINS>).

o  6.2

  As above, but also remove the  "\" in the module; they are not
  needed.

o 6.2

  feature receiver-identity {
    description
      "Indicates if the server supports filtering notifications

  s/if/that/

o  Appendix

  The examples would be easier to read if the "\"-line wrapping
  convention was used only when absolutely needed.  For example, this
  doesn't look right:

                  <cleartext-password>my-password</cleartext-password\

  And this:

  <subscriptions xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-n\
otifications">

  would be easier on the eye as:

  <subscriptions
    xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications">

/martin

---

From: Jan Lindblad <[email-masked]>
Date: Fri, 5 Feb 2021 09:07:09 +0100

>  This would be more extensible.

+1

What's worse is that the pattern "urn:ietf:capability:https-notif-receiver:*" above is actually not matching strings like

urn:ietf:capability:https-notif-receiver:encoding:json

since YANG patterns are regexes, and not filename globbings. The pattern above only matches the urn string followed by zero or more colon characters.

/jan

---

From: Mahesh Jethanandani <[email-masked]>
Date: Wed, 17 Feb 2021 18:39:01 -0800

Hi Martin/Jan,

Thanks first of all for doing the review of the document. 

See responses inline.

> On Feb 4, 2021, at 11:39 AM, Martin Björklund <[email-masked]> wrote:
> 
> Hi,
> 

Good point. Here is the current Abstract.

   This document defines a protocol for sending notifications over
   HTTPS.  YANG modules for configuring publishers are also defined.
   Examples are provided illustrating how to configure various
   publishers.

   This document requires that the publisher is a "server" (e.g., a
   NETCONF or RESTCONF server), but does not assume that the receiver is
   a server.

>  derived from sn:configurable-encoding, so the "encoding" leaf will

Thanks for catching this. We have dropped the applicability section because we choose that the “encoding” leaf not be defined, specifically because we think it is better for operators to rely on dynamic discovery of capabilities over static configuration.

In making some of these changes, we realize that we should put a must statement around the augment statement for "transport-type” that gets evaluated only when the transport-type is https. Do you think you could help us with that must statement?

>  good with an early explanation (the path is configured per

We have updated the first paragraph of Section 2 to say:

   The protocol consists of two HTTP-based target resources presented by
   the receiver.  These two resources are sub-paths of a common resource
   that the publisher must know (e.g. specified in its configuration
   data model).

>  This would be more extensible.

Another good point. Have updated the example accordingly. 

Also added a statement saying that “The publisher MUST ignore any capabilities that it does not recognize”.

>  to get the capabilities as xml, json.

Another good catch. Here is what the paragraph now looks like:

   The publisher can send the following request to learn the receiver
   capabilities.  In this example, the "Accept" states that the receiver
   wants to receive the capabilities response in XML but, if not
   supported, then in JSON.

>  part of the <CODE BEGINS>).

Hmm. I do not see the note or a “\” being added to the line anymore.

   <CODE BEGINS> file "[email-masked]"
   module ietf-subscribed-notif-receivers {

>  As above, but also remove the  "\" in the module; they are not

Ditto.

>      "Indicates if the server supports filtering notifications

Fixed.

>                  <cleartext-password>my-password</cleartext-password\

That line now shows up as follows.

                     <cleartext-password>my-password</cleartext-passwor\
   d>

>    xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications">

Tried that, and now the “\” character appears as follows.

     <subscriptions
         xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notificatio\
   ns”>

Thanks.

> _______________________________________________
> netconf mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/netconf

Mahesh Jethanandani
[email-masked]

---

From: Mahesh Jethanandani <[email-masked]>
Date: Thu, 18 Feb 2021 14:17:27 -0800

Hi Ma,

See inline with [mj]

> On Feb 3, 2021, at 11:28 PM, maqiufang (A) <[email-masked]> wrote:
> 
> Hi, Kent:
>  

[mj] Corrected.

> 2、 It seems that you are mix-using HTTP and HTTPS somewhere, for example,  "The protocol consists of two HTTP-based target resources presented by the receiver"(Should be “HTTPS-based”, I think).

[mj] Fixed.

> 3、 Section 3.3/4.2: Will the receiver return a HTTP 200/204 definitely? Should we consider some other extreme situations( e.g., not supported/implemented) ? Just my individual opinion.:)

[mj] There is an e-mail from Andy that gets into this topic. Allow us to address your question when we respond to that e-mail.

> 4、 Section 4.3: You should replace "<event-class>fault</fault>" with "<event-class>fault</event-class>".

[mj] Fixed.

Thanks.

>  
> Qiufang Ma
>  
> From: netconf [mailto:[email-masked] <mailto:[email-masked]>] On Behalf Of Kent Watsen
> To: [email-masked] <mailto:[email-masked]>
> On Feb 1, 2021, at 11:33 AM, Reshad Rahman <[email-masked] <mailto:[email-masked]>> wrote:
>  
> Good with me.
>  
> Regards,
> Reshad.
>  
> From: Kent Watsen <[email-masked] <mailto:[email-masked]>>
> To: Reshad Rahman <[email-masked] <mailto:[email-masked]>>
> Cc: "[email-masked] <mailto:[email-masked]>" <[email-masked] <mailto:[email-masked]>>, "[email-masked] <mailto:[email-masked]>" <[email-masked] <mailto:[email-masked]>>
> [email-masked] <mailto:[email-masked]>
> https://www.ietf.org/mailman/listinfo/netconf <https://www.ietf.org/mailman/listinfo/netconf>
Mahesh & Kent {as co-authors)