Re: [netconf] [yang-doctors] Yangdoctors last call review of draft-ietf-netconf-subscribed-notifications-21

"Eric Voit (evoit)" <evoit@cisco.com> Fri, 25 January 2019 21:37 UTC

Return-Path: <evoit@cisco.com>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BF266126DBF; Fri, 25 Jan 2019 13:37:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.643
X-Spam-Level:
X-Spam-Status: No, score=-14.643 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.142, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nBwC5T3lfdaB; Fri, 25 Jan 2019 13:37:46 -0800 (PST)
Received: from alln-iport-5.cisco.com (alln-iport-5.cisco.com [173.37.142.92]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 618B0126C7E; Fri, 25 Jan 2019 13:37:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=8464; q=dns/txt; s=iport; t=1548452266; x=1549661866; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=rRmviKm31OPJscgjeSemZwNyqHwOM6dAf+YQGq/O/fY=; b=JEQTiYKiXMKFgn0vqwAa0JZ5+3S9F73L5YeyBdTsc+zumx1z1xIPd87I 6hCI83Kc8AAjGkaSM7y4iTYdr9RZK+InuPfZEppAh+QYW6cdubfSAxl+n QxEqVgD9KHY4vBzQ7qMCkEuKDoUw8H1i0RDhHSxMjr23BIRoKpCGKymWv U=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0ADAABxgEtc/5pdJa1kGQEBAQEBAQE?= =?us-ascii?q?BAQEBAQcBAQEBAQGBUQQBAQEBAQsBgVopZ4EDJwqMEYt1gg18lwuBewsBARg?= =?us-ascii?q?LhANGAoMKIjQJDQEDAQECAQECbRwMhUoBAQEBAgEBATgtBwkCBQsCAQgVAgE?= =?us-ascii?q?NEQULJwsdCAIEAQ0FCIJPTIF5CA+rf4opBYxBF4FAP4ERgl01gx4BAYFLhVQ?= =?us-ascii?q?iAolIEjiHWZBNCQKLBYcbIJInihORCwIRFIEnHziBVnAVO4JsgicXE20BB4d?= =?us-ascii?q?XhT4BQTGKD4EfAQE?=
X-IronPort-AV: E=Sophos;i="5.56,523,1539648000"; d="scan'208";a="230757918"
Received: from rcdn-core-3.cisco.com ([173.37.93.154]) by alln-iport-5.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Jan 2019 21:37:45 +0000
Received: from XCH-RTP-013.cisco.com (xch-rtp-013.cisco.com [64.101.220.153]) by rcdn-core-3.cisco.com (8.15.2/8.15.2) with ESMTPS id x0PLbicS011600 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Fri, 25 Jan 2019 21:37:45 GMT
Received: from xch-rtp-013.cisco.com (64.101.220.153) by XCH-RTP-013.cisco.com (64.101.220.153) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 25 Jan 2019 16:37:44 -0500
Received: from xch-rtp-013.cisco.com ([64.101.220.153]) by XCH-RTP-013.cisco.com ([64.101.220.153]) with mapi id 15.00.1395.000; Fri, 25 Jan 2019 16:37:44 -0500
From: "Eric Voit (evoit)" <evoit@cisco.com>
To: Per Hedeland <per@hedeland.org>, Martin Bjorklund <mbj@tail-f.com>
CC: "draft-ietf-netconf-subscribed-notifications.all@ietf.org" <draft-ietf-netconf-subscribed-notifications.all@ietf.org>, "netconf@ietf.org" <netconf@ietf.org>, "yang-doctors@ietf.org" <yang-doctors@ietf.org>
Thread-Topic: [netconf] [yang-doctors] Yangdoctors last call review of draft-ietf-netconf-subscribed-notifications-21
Thread-Index: AQHUrG6+nBjZ9hMl8U25QTRsXd0ZC6Ww36AggANDEICAARW3EIAAAXJggAU/bACAAWWKIIABCD+A///v5GCAAKn4AP//skVAgAGV2gD//60SYAANQ54AAApn7nD//7rBgIAATO5Q///xy4CAAB+zwIAAwVMA///xWjCAAIE3gIAAU4mQ///b6QAACBjB0AABYKaAAA0Zy7A=
Date: Fri, 25 Jan 2019 21:37:44 +0000
Message-ID: <9c54bd929e07463f89f3f71fe0a3bbf4@XCH-RTP-013.cisco.com>
References: <83b12adbb7234a84a56ac3ec00bb0673@XCH-RTP-013.cisco.com> <20190125.093938.375156009332209799.mbj@tail-f.com> <adb990ccef2e4fa78d2ad7c12323617e@XCH-RTP-013.cisco.com> <20190125.162941.2222352349671950038.mbj@tail-f.com> <9d4bbc12ddb448ca98fd8560a02565c5@XCH-RTP-013.cisco.com> <2b60239e-979e-3627-e3c5-62b264811f18@hedeland.org> <e6e5a75f9f9c4f12b8f2dd4069b53cf0@XCH-RTP-013.cisco.com> <8d1ab4ac-97ab-ee69-2f1a-4a8a828ccd18@hedeland.org>
In-Reply-To: <8d1ab4ac-97ab-ee69-2f1a-4a8a828ccd18@hedeland.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.118.56.226]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Outbound-SMTP-Client: 64.101.220.153, xch-rtp-013.cisco.com
X-Outbound-Node: rcdn-core-3.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/CGzxjDzbe0ZhCSSIC52EaknHyUs>
Subject: Re: [netconf] [yang-doctors] Yangdoctors last call review of draft-ietf-netconf-subscribed-notifications-21
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETCONF WG list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf/>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Jan 2019 21:37:50 -0000

> From: Per Hedeland, January 25, 2019 4:32 PM
> To: Eric Voit (evoit) <evoit@cisco.com>om>; Martin Bjorklund <mbj@tail-f.com>
> Cc: draft-ietf-netconf-subscribed-notifications.all@ietf.org; netconf@ietf.org;
> yang-doctors@ietf.org
> Subject: Re: [netconf] [yang-doctors] Yangdoctors last call review of draft-ietf-
> netconf-subscribed-notifications-21
> 
> On 2019-01-25 22:15, Eric Voit (evoit) wrote:
> >> From: Per Hedeland, January 25, 2019 1:20 PM
> >>
> >> On 2019-01-25 16:41, Eric Voit (evoit) wrote:
> >>>> From: Martin Bjorklund, January 25, 2019 10:30 AM
> >>>>
> >>>> "Eric Voit (evoit)" <evoit@cisco.com> wrote:
> >>>>>> From: Martin Bjorklund, January 25, 2019 3:40 AM
> >>>>>>
> >>>>>> "Eric Voit (evoit)" <evoit@cisco.com> wrote:
> >>>>>>>> "Eric Voit (evoit)" <evoit@cisco.com> wrote:
> >>>>>>>>>> "Eric Voit (evoit)" <evoit@cisco.com> wrote:
> >>>>>>>>>>>> From: Martin Bjorklund, January 24, 2019 9:40 AM
> >>>>>>>>>>>>
> >>>>>>>>>>>> "Eric Voit (evoit)" <evoit@cisco.com> wrote:
> >>>>>>>>>>>>>> From: Martin Bjorklund, January 24, 2019 8:17 AM
> >>>>>>
> >>>>>> [...]
> >>>>>>
> >>>>>>>>>>>>>> Thinking some more, what is supposed to happen if the
> >>>>>>>>>>>>>> client on the same session sends first an
> >>>>>>>>>>>>>> establish-subscription with dscp 42, and then another
> >>>>>>>>>>>>>> establish-
> >>>>>> subscription with dscp 10?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> This would be allowed.
> >>>>>>>>>>>>
> >>>>>>>>>>>> On linux at least this is a sockopt, i.e., the option
> >>>>>>>>>>>> applies to the socket, which means all packets on the
> >>>>>>>>>>>> session.  So how is this supposed to be implemented if
> >>>>>>>>>>>> different messages on the session should have different dscp
> values?
> >>>>>>>>>>>> Or is the
> >>>>>>>>>>>> idea that you send the msg, flush all data from ssh/tls to
> >>>>>>>>>>>> tcp, then flush the tcp buffers (not that easy...)?
> >>>>>>>>>>>>
> >>>>>>>>>>>> Even if there's just one establish-subscription with a dscp
> >>>>>>>>>>>> value, since it applies to the session it means that all
> >>>>>>>>>>>> normal rpcs on this session will get the same dscp value.
> >>>>>>>>>>>> It is not clear that this is the intention?
> >>>>>>>>
> >>>>>>>> Did you miss these questions?
> >>>>>>>
> >>>>>>> With NETCONF, one DSCP will apply to single TCP session.  So
> >>>>>>> there is no
> >>>>>> issue.
> >>>>>>
> >>>>>> The problem is if a client sends two establish-subscriptions with
> >>>>>> different values for dscp on the same session.  Or even if the
> >>>>>> client sends one
> >>>>>> establish-
> >>>>>> subscription with som dscp value, then the dscp will be applied
> >>>>>> to all packets from other rpcs as well.
> >>>>>>
> >>>>>> ... and even worse, with SSH channels you can have multiple
> >>>>>> NETCONF session on the same TCP session, which means that the
> >>>>>> dscp value applies to all packets in all NETCONF sessions sharing
> >>>>>> the same TCP session.
> >>>>>>
> >>>>>> I don't know what the right thing to do is.  Probably first agree
> >>>>>> that this is in fact a problem, then maybe simply document this
> >>>>>> somehow.
> >>>>>
> >>>>> I hadn't thought about multiple NETCONF SSH channels.  I agree
> >>>>> something to guide developers is needed here.  The easiest fix is
> >>>>> to recommend not supporting feature "dscp" with NETCONF.  (It
> >>>>> shouldn't be absolutely prohibited as DSCP related RFC's such as
> >>>>> RFC7657 embed text like "a single DSCP should be used for all
> >>>>> packets in a TCP
> >>>>> connection".)
> >>>>>
> >>>>> Here is the text I suggest is put into
> >>>>> draft-ietf-netconf-netconf-event-notifications, Section 5:
> >>>>>
> >>>>> "The feature "dscp" SHOULD NOT be supported over NETCONF.  This
> >>>>> will avoid the potential for out-of-order packet delivery of the
> >>>>> set of all traffic within the TCP session."
> >>>>
> >>>> I think this is a bit too limiting.  For configured subscriptions
> >>>> it can be perfectly fine, since the server can ensure that there's
> >>>> a single TCP session to the receiver in this case.  (I know we
> >>>> don't support
> >> configured subscriptions at the moment).
> >>>>
> >>>> Perhaps we can say in the SN document:
> >>>>
> >>>>     If a server that supports the "dscp" feature cannot guarantee that
> >>>>     the only packets sent on an underlying transport session are from
> >>>>     the subscription, then it should reject the subscription with a
> >>>>     "dscp-unavailable" error.  This will avoid the potential for
> >>>>     out-of-order packet delivery of the set of all traffic within the
> >>>>     TCP session.
> >>>
> >>> This works for me.    I will put this in Section 2.3, directly after the
> sentence:
> >>>
> >>>      If the publisher supports the "dscp" feature, then a subscription
> >>>      with a "dscp" leaf MUST result in a corresponding [RFC2474] DSCP
> >>>      marking being placed within the IP header of any resulting
> >>>      notification messages and subscription state change notifications.
> >>>
> >>>    unless I hear any objections on this thread.
> >>
> >> I'm not sure why the "avoid out-of-order" rationale was presented.
> >> There is no order "of the set of all traffic within the TCP session"
> >> to be out-of. Regardless of DSCP, SSH peers will send data on the
> >> channels (NETCONF sessions) in an order that depends, among other
> >> things, on the rate of consumption of that data. They will preserve
> >> order on any given channel, but will not consider order with respect
> >> to other channels (arguably, not having to do that is the whole point of
> having flow control at the SSH level).
> >
> > Hi Per,
> >
> > What you say is absolutely true.  You likely know this, but Martin asked to
> include the out-of-order rationale because if a TCP session carries traffic
> consisting of a set of DSCP values, then the network elements between the
> publisher and receiver might reorder the packets.
> 
> Hm, from the e-mail thread, it seems that the issue of reordering was
> introduced by you, and Martin's text just copied your text regarding that issue,
> while relaxing the requirement from completely forbidding the use of the DSCP
> parameter to disallowing it where it could have undesired effects.
> 
> > While the order might be restored at the receiver (per your point), this might
> also be seen as loss.  The result to the application is that higher priority dscp
> packets will be seen no faster those with lower priority.  Again you likely know
> this, but there is more on this general topic in places like RFC-7657, Section 5.2.
> >
> > To cover what Martin wants, and reduce the non-normative text, how about
> the following?...
> >
> > "Where TCP is used, a publisher which supports the "dscp" feature SHOULD
> ensure that a subscription's notification messages are returned within a single
> TCP transport session where all traffic shares the subscription's requested
> "dscp" leaf value.   Where this cannot be guaranteed, any "establish
> subscription" RPC request SHOULD be rejected with a "dscp-unavailable"
> error."
> 
> This seems fine to me. The point, as far as I can see, is that a DSCP parameter
> must not be applied to a session (or subscription) that didn't "ask" for it. This is
> enough of a rationale IMHO, no need to go into the details of what the result
> may or may not be as far as reordering of packets goes.

Thanks Per, this works for me.

Eric

> --Per
> 
> > Eric
> >
> >> I suggest simply dropping the "This will avoid ..." sentence.
> >>
> >> --Per
> >>
> >>> Eric
> >>>
> >>>> I think such text belongs to the SN document, since it may apply to
> >>>> other transports than just NETCONF.
> >>>>
> >>>>
> >>>> /martin
> >>>>
> >>>>
> >>>>
> >>>>> With this text, a RESTCONF publisher can support the feature dscp.
> >>>>> And if someone attempts to use dscp with a NETCONF subscription to
> >>>>> the same publisher, the error "dscp-unavailable" can be sent.
> >>>>>
> >>>>> Eric
> >>>>>
> >>>>>
> >>>>> ...
> >>>>>> /martin
> >>>>>
> >>>
> >>> _______________________________________________
> >>> netconf mailing list
> >>> netconf@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/netconf
> >>>
> >