Re: [netconf] AD review of draft-ietf-netconf-tcp-client-server-16

Kent Watsen <kent+ietf@watsen.net> Sat, 27 January 2024 02:14 UTC

Return-Path: <0100018d48b2b878-a3051b1c-704c-4030-b7ba-2950a429869f-000000@amazonses.watsen.net>
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 D8FF0C1654EC; Fri, 26 Jan 2024 18:14:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level:
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=amazonses.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7Ie11NgFF1_V; Fri, 26 Jan 2024 18:14:51 -0800 (PST)
Received: from a8-96.smtp-out.amazonses.com (a8-96.smtp-out.amazonses.com [54.240.8.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7B9B3C157937; Fri, 26 Jan 2024 18:14:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=224i4yxa5dv7c2xz3womw6peuasteono; d=amazonses.com; t=1706321688; h=From:Message-Id:Content-Type:Mime-Version:Subject:Date:In-Reply-To:Cc:To:References:Feedback-ID; bh=x/S4v6TeZx6Kqfgk+3gl2O9I2oC3TkBuSmPamWrcC/Y=; b=IkD8UBaCT+aKpjySk5NlOPvGFwJKOhnrmLqa8tGjheyEFZbbD8cHf2ya2BcXpQyD XobVb4MM6Ifsmn2uspDE5tmcGwhlqNKcxTo64wlGW1ttClsrWgjrRAfeuDDKIH87aI6 9o9+hH++2ty/bLnQWxgbt3QVmdY++uiXxcwWyE+g=
From: Kent Watsen <kent+ietf@watsen.net>
Message-ID: <0100018d48b2b878-a3051b1c-704c-4030-b7ba-2950a429869f-000000@email.amazonses.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_81FB02BF-8EB7-4DBB-8932-86BC5EE84B91"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.600.7\))
Date: Sat, 27 Jan 2024 02:14:48 +0000
In-Reply-To: <LV8PR11MB8536C565A51E1D797FEDC7AEB5792@LV8PR11MB8536.namprd11.prod.outlook.com>
Cc: "Scharf, Michael" <Michael.Scharf@hs-esslingen.de>, "netconf@ietf.org" <netconf@ietf.org>, "draft-ietf-netconf-tcp-client-server.all@ietf.org" <draft-ietf-netconf-tcp-client-server.all@ietf.org>, "tcpm@ietf.org Extensions" <tcpm@ietf.org>
To: "Rob Wilton (rwilton)" <rwilton@cisco.com>
References: <BY5PR11MB419654EA6A355DBE29D739D7B526A@BY5PR11MB4196.namprd11.prod.outlook.com> <0100018926953adf-731925f4-8e95-49de-a1a8-ab346a9da1b8-000000@email.amazonses.com> <5a7fe26fbd324cf78a74e104941f72cd@hs-esslingen.de> <01000189405cd264-57a5dfea-44bd-4580-a15b-4f2662957a91-000000@email.amazonses.com> <LV8PR11MB8536C565A51E1D797FEDC7AEB5792@LV8PR11MB8536.namprd11.prod.outlook.com>
X-Mailer: Apple Mail (2.3731.600.7)
Feedback-ID: 1.us-east-1.DKmIRZFhhsBhtmFMNikgwZUWVrODEw9qVcPhqJEI2DA=:AmazonSES
X-SES-Outgoing: 2024.01.27-54.240.8.96
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/JrapSI9dyWGD1qZZypRXmM3vhIU>
Subject: Re: [netconf] AD review of draft-ietf-netconf-tcp-client-server-16
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.39
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: Sat, 27 Jan 2024 02:14:51 -0000

Hi Rob,

Thanks for the follow-up.
Please find more comments below.

Kent


> On Jan 26, 2024, at 6:46 AM, Rob Wilton (rwilton) <rwilton@cisco.com> wrote:
> 
> Hi Kent, Michael,
> 
> Thanks for the comments.  As per inline below, I think that keepalives should remain as a presence container, and suggested tweaking the example further a bit.  Other than that I’ve checked the diff and I think that we are good to go.
> 
> Please see inline …
> 
> From: Kent Watsen <kent+ietf@watsen.net>
> Date: Monday, 10 July 2023 at 16:13
> To: Scharf, Michael <Michael.Scharf@hs-esslingen.de>, Rob Wilton (rwilton) <rwilton@cisco.com>
> Cc: netconf@ietf.org <netconf@ietf.org>, draft-ietf-netconf-tcp-client-server.all@ietf.org <draft-ietf-netconf-tcp-client-server.all@ietf.org>, tcpm@ietf.org Extensions <tcpm@ietf.org>
> Subject: Re: [netconf] AD review of draft-ietf-netconf-tcp-client-server-16
> Hi Michael, thanks for jumping in.
> 
> All, please see my comment below.  Hopefully this is the end of the AD-review on this draft...
> 
> Kent
> 
> 
> 
> On Jul 6, 2023, at 5:23 AM, Scharf, Michael <Michael.Scharf@hs-esslingen.de> wrote:
> 
> Hi all,
> 
> Please see inline some comments on the pending issues. I have removed the points that are apparently resolved already.
> 
> 
> Moderate level comments:
> 
> (2) p 7, sec 2.2.  Example Usage
> 
> <tcp-common xmlns="urn:ietf:params:xml:ns:yang:ietf-tcp-common">
>   <keepalives>
>     <idle-time>15</idle-time>
>     <max-probes>3</max-probes>
>     <probe-interval>30</probe-interval>
>   </keepalives>
> </tcp-common>
> 
> I note that your example (and the subsequent ones) uses significantly
> shorter times than those recommended in the prose above.  Should the idle
> time be greatly increased in the example?  Or further text be included to justify
> or explain this example?
> 
> Michael (co-author), I believe that you wrote this text.  Can you guide us here?
> 
> <snip>
>  Given the cost of keep-alives, parameters have to be configured
>  carefully:
> 
>   *  The default idle interval (leaf "idle-time") MUST default to no
>      less than two hours, i.e., 7200 seconds [RFC1122].  A lower value
>      MAY be configured, but keep-alive messages SHOULD NOT be
>      transmitted more frequently than once every 15 seconds.  Longer
>      intervals SHOULD be used when possible.
> </snip>
> 
> Good catch. Out of my head, these values have been used in the draft since day one, i.e., before the reference to RFC 1122 was added.
> 
> It makes sense to use more conservative values in the example. A proposal would be:
> 
> <tcp-common xmlns="urn:ietf:params:xml:ns:yang:ietf-tcp-common">
> <keepalives>
>   <idle-time>7200</idle-time>
>   <max-probes>9</max-probes>
>   <probe-interval>75</probe-interval>
> </keepalives>
> </tcp-common>
> 
> These are the defaults in the Linux kernel 6.1.0 (tested using Debian 12), i.e., I guess that order of magnitude is somewhat common.
> 
> 
> Perfect.  I updated all of the examples to use these values.
> 
> This item is considered resolved.
> 
> Below I have suggested that we keep the YANG default values, but also keep “keepalives” as a presence container (which would align to the requirement in RFC 1122 that keepalives are off by default.

Good catch!   
Here’s the diff:

     container keepalives {
       if-feature "keepalives-supported";
+      presence
+        "Indicates that keepalives are enabled, aligning to
+         the requirement in Section 4.2.3.6 RFC 1122 that
+         keepalives are off by default.";


> With this, to enable keepalives you only need to configure the keepalives presence container and not the values underneath.  So, I would suggest perhaps changing some of the examples (if there is more than one) to only include the presence containers, and if going to include values then perhaps include not default values.

I didn’t make this change, but can if you think my reasoning is unsound.

Essentially, I generally try to have examples set everything (all values), so that it’s obvious to the reader what all is possible.   Anyone reading the YANG can see the leafs have default values and can conclude that only the presence container needs to be configured, assuming the defaults are acceptable.

Thoughts?



> Minor level comments:
> 
> (8) p 6, sec 2.1.5.  Guidelines for Configuring TCP Keep-Alives
> 
> *  The default idle interval (leaf "idle-time") MUST default to no
>    less than two hours, i.e., 7200 seconds [RFC1122].  A lower value
>    MAY be configured, but keep-alive messages SHOULD NOT be
>    transmitted more frequently than once every 15 seconds.  Longer
>    intervals SHOULD be used when possible.
> 
> Why not set the YANG default idle interval to 2 hours?  In fact, why not
> assign defaults to all of these parameters?  Or is the expectation that when
> these groupings are used, they may be refined with appropriate default values
> for the application?
> 
> Good questions for Michael (my co-author), who worked on this section of
> the draft.
> 
> Well, to be honest, I don't recall why we have not assigned default values. When the draft was discussed in TCPM, there has been some pushback regarding use of keep-alive messages in general. Also, different applications may have different timing requirements. One key requirement in RFC 1122 is that keep-alives should be off by default. No assigning default values is somewhat consistent with that.
> 
> Yet, the reality is that TCP stacks have default values. As long as the guidance in RFC 1122 is taken into account, I don't believe adding a default value to the YANG model would be harmful, e.g. the ones used by Linux (see above).
> 
> To be on the safe side, I have added the TCPM list in CC, given past TCPM discussions.
> 
> Rob, I also see no harm in specifying default values.  Applications can still refine the groupings with app-specific defaults.  This being the case, I’ve now set Michael’s values for the defaults, and removed the “mandatory true”, as well as removed the “presence” statement on the parent container.
> 
> I think that the presence container should be kept.  I.e., so, then you have to create the keepalive container if you want to enable keepalives but you don’t need to specify the values for the keepalives, the default values will be used.

I have re-added the presence container (see diff above)


Thanks,
Kent


> Regarding “pushback” on TCP-keepalives, it is notable that keepalive may alternatively (and likely preferably) be configured at the SSH and TLS layers.  That said, keepalives are a real thing at the TCP-layer, and thus it seems proper to allow them to be configured.  Also, note that the TCP-layer may be used outside of a SSH/TLS context.
> 
> This item is considered resolved.
> 
> 
> 
> 
> (9) p 7, sec 2.1.5.  Guidelines for Configuring TCP Keep-Alives
> 
> *  The maximum number of sequential keep-alive probes that can fail
>    (leaf "max-probes") trades off responsiveness and robustness
>    against packet loss.  ACK segments that contain no data are not
>    reliably transmitted by TCP.  Consequently, if a keep-alive
>    mechanism is implemented it MUST NOT interpret failure to respond
>    to any specific probe as a dead connection [RFC1122].  Typically,
>    a single-digit number should suffice.
> 
> Some of this guidance might be better in the description in the YANG model,
> or alternatively having a reference back to this section.
> 
> Michael, can you look at the “description” statement in the "ietf-tcp-common"
> YANG module too?
> 
> The "description" statement already summarizes the most important constraints from Section 2.1.5, albeit in very few words and without much background