Subject: Re: [Netconf] RESTConf feedback

From: Andy Bierman <[email-masked]>
Date: Mon, 26 Sep 2016 10:57:36 -0700

Hi,

An RESTCONF issue has come up regarding the HTTP/2 text that was added in
draft-14.

The draft-17 text will remove the draft-14 text and just RECOMMEND that at
least HTTP/1.1 be supported.

There is no pipe-lining feature in RESTCONF, similar to the RPC-order
requirement
for a single NETCONF session. There is no requirement that requests from
the same client are processed
in any particular order.

Andy

On Sun, Sep 25, 2016 at 8:50 PM, Mark Nottingham <[email-masked]> wrote:

>
> > On 25 Sep. 2016, at 1:36 am, Andy Bierman <[email-masked]> wrote:
> >
> > I made this edit.
> >
> > Eric's concern about streams is related to the serialization of RESTCONF
> operations
> > from the client.  They are ordered in NETCONF for a given session.
> RESTCONF does
> > not have sessions. I do not think this requirement is expressed anywhere
> or if it
> > is even possible.
> >
> >    PUT /restconf/data/foo
> >    PUT /rest/conf/data/foo/bar
> >    GET /restconf/data/foo
> >
> > Seems like these messages could be processed out of order depending
> > on how the client sent the requests. NETCONF provides pipe-lining
> > within a session (send 3 requests at once without waiting for any
> replies)
> >
> > How is this accomplished in HTTP?
>
> HTTP (1 or 2) doesn't guarantee that requests get from the user agent to
> an origin server in any particular order; an implementation might deliver
> the requests in a different order.
>
> Often people ignore this and get away with it, but if you're using
> intermediaries (e.g., forward proxies, reverse proxies, CDNs), it's not
> uncommon for requests to become unordered, especially if they follow
> different paths. Likewise, some HTTP client libraries will perform various
> optimisations that might result in requests being unordered (especially if
> some connections fail).
>
> If you need solid ordering guarantees, you need to either wait for the
> corresponding responses, or provide a mechanism in your protocol /
> application (e.g., using HTTP headers or something in the payload).
>
> Cheers,
>
>
> --
> Mark Nottingham   https://www.mnot.net/
>
>
>
>
>

---

From: "Ersue, Mehmet (Nokia - DE/Munich)" <[email-masked]>
Date: Mon, 26 Sep 2016 18:04:58 +0000

Hi Andy,

please describe the issue with draft-14 text and the solution in draft-17 on the maillist.
Thanks.

Cheers,
Mehmet

From: Andy Bierman [mailto:[email-masked]]
Sent: Monday, September 26, 2016 7:58 PM
To: Mark Nottingham <[email-masked]>
Cc: Ersue, Mehmet (Nokia - DE/Munich) <[email-masked]>; Benoit Claise <[email-masked]>; Mahesh Jethanandani <[email-masked]>; Martin Bjorklund <[email-masked]>; Kent Watsen <[email-masked]>; Netconf <[email-masked]>
Subject: Re: [Netconf] RESTConf feedback

Hi,

An RESTCONF issue has come up regarding the HTTP/2 text that was added in draft-14.

The draft-17 text will remove the draft-14 text and just RECOMMEND that at least HTTP/1.1 be supported.

There is no pipe-lining feature in RESTCONF, similar to the RPC-order requirement
for a single NETCONF session. There is no requirement that requests from the same client are processed
in any particular order.

Andy

On Sun, Sep 25, 2016 at 8:50 PM, Mark Nottingham <[email-masked]<mailto:[email-masked]>> wrote:

> On 25 Sep. 2016, at 1:36 am, Andy Bierman <[email-masked]<mailto:[email-masked]>> wrote:
>
> I made this edit.
>
> Eric's concern about streams is related to the serialization of RESTCONF operations
> from the client.  They are ordered in NETCONF for a given session.  RESTCONF does
> not have sessions. I do not think this requirement is expressed anywhere or if it
> is even possible.
>
>    PUT /restconf/data/foo
> within a session (send 3 requests at once without waiting for any replies)
>

HTTP (1 or 2) doesn't guarantee that requests get from the user agent to an origin server in any particular order; an implementation might deliver the requests in a different order.

Often people ignore this and get away with it, but if you're using intermediaries (e.g., forward proxies, reverse proxies, CDNs), it's not uncommon for requests to become unordered, especially if they follow different paths. Likewise, some HTTP client libraries will perform various optimisations that might result in requests being unordered (especially if some connections fail).

If you need solid ordering guarantees, you need to either wait for the corresponding responses, or provide a mechanism in your protocol / application (e.g., using HTTP headers or something in the payload).

Cheers,

---

From: "Ersue, Mehmet (Nokia - DE/Munich)" <[email-masked]>
Date: Mon, 26 Sep 2016 18:08:04 +0000

I overlooked Netconf ML is on CC.

Mehmet

From: Netconf [mailto:[email-masked]] On Behalf Of Ersue, Mehmet (Nokia - DE/Munich)
Sent: Monday, September 26, 2016 8:05 PM
To: Andy Bierman <[email-masked]>; Mark Nottingham <[email-masked]>
Cc: Netconf <[email-masked]>
Subject: Re: [Netconf] RESTConf feedback

Hi Andy,

Cheers,
Mehmet

From: Andy Bierman [mailto:[email-masked]]
Sent: Monday, September 26, 2016 7:58 PM
To: Mark Nottingham <[email-masked]<mailto:[email-masked]>>
Cc: Ersue, Mehmet (Nokia - DE/Munich) <[email-masked]<mailto:[email-masked]>>; Benoit Claise <[email-masked]<mailto:[email-masked]>>; Mahesh Jethanandani <[email-masked]<mailto:[email-masked]>>; Martin Bjorklund <[email-masked]<mailto:[email-masked]>>; Kent Watsen <[email-masked]<mailto:[email-masked]>>; Netconf <[email-masked]<mailto:[email-masked]>>
Subject: Re: [Netconf] RESTConf feedback

Hi,

Andy

Cheers,

---

From: Andy Bierman <[email-masked]>
Date: Mon, 26 Sep 2016 11:12:47 -0700

> please describe the issue with draft-14 text and the solution in draft-17

A HTTP/2 stream is a single request/response pair.

sec 2.1.
OLD:

    HTTP/2 [RFC7540] MAY be used for RESTCONF. The server MUST respond
using a single HTTP/2 stream for all client requests from a stream.
The server MAY respond using same HTTP/2 stream that was used for the
 corresponding request.

NEW:

RESTCONF does not require a specific version of HTTP. However, it is
RECOMMENDED that at least HTTP/1.1 [RFC7230] be supported by all
implementations.

Cheers,

Andy

> *From:* Andy Bierman [mailto:[email-masked]]
> *Sent:* Monday, September 26, 2016 7:58 PM
> *To:* Mark Nottingham <[email-masked]>
> *Cc:* Ersue, Mehmet (Nokia - DE/Munich) <[email-masked]>; Benoit
> Claise <[email-masked]>; Mahesh Jethanandani <[email-masked]>;
> Martin Bjorklund <[email-masked]>; Kent Watsen <[email-masked]>;
> Netconf <[email-masked]>
> *Subject:* Re: [Netconf] RESTConf feedback
>
>
>
> Hi,
>
>
>