Re: [tcpm] [GROW] How to reuse the tcp model in the BMP model - asking for suggestions

"Scharf, Michael" <Michael.Scharf@hs-esslingen.de> Fri, 19 August 2022 08:39 UTC

Return-Path: <Michael.Scharf@hs-esslingen.de>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D5063C1526E9; Fri, 19 Aug 2022 01:39:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.104
X-Spam-Level:
X-Spam-Status: No, score=-2.104 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=hs-esslingen.de
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 qnd5xRdbUYbS; Fri, 19 Aug 2022 01:39:24 -0700 (PDT)
Received: from mail.hs-esslingen.de (mail.hs-esslingen.de [134.108.32.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0FF2FC1526FA; Fri, 19 Aug 2022 01:39:21 -0700 (PDT)
Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.hs-esslingen.de (Postfix) with ESMTP id C541025A16; Fri, 19 Aug 2022 10:39:18 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hs-esslingen.de; s=mail; t=1660898358; bh=gSZZ2GJ9EDlIqI6KeCqzQEtuaoDjSQjn6+5aucLU/40=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=DtvRl0UjJnD0rhMTNIpg/9Vjyv7UlXzB9wglpeEPoT1UI1SwPGkrNuKaFZj/tNLwK +7j8wg3ix+P1MV5pv0rLmN0xm9nIGNBoIxh1EDYoVwmxkpDf0cwYFBX4kFDLRWVR4o 8EgQF7Od+7jiEEIUSs99SSSTnGDECn2dkMUxfyC4=
X-Virus-Scanned: by amavisd-new-2.7.1 (20120429) (Debian) at hs-esslingen.de
Received: from mail.hs-esslingen.de ([127.0.0.1]) by localhost (hs-esslingen.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yt0jd5ldtx-p; Fri, 19 Aug 2022 10:39:15 +0200 (CEST)
Received: from rznt8201.rznt.rzdir.fht-esslingen.de (rznt8201.hs-esslingen.de [134.108.48.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.hs-esslingen.de (Postfix) with ESMTPS; Fri, 19 Aug 2022 10:39:15 +0200 (CEST)
Received: from rznt8202.rznt.rzdir.fht-esslingen.de (134.108.48.165) by rznt8201.rznt.rzdir.fht-esslingen.de (134.108.48.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 19 Aug 2022 10:39:14 +0200
Received: from rznt8202.rznt.rzdir.fht-esslingen.de ([fe80::aca4:171a:3ee1:57e0]) by rznt8202.rznt.rzdir.fht-esslingen.de ([fe80::aca4:171a:3ee1:57e0%3]) with mapi id 15.01.2375.031; Fri, 19 Aug 2022 10:39:14 +0200
From: "Scharf, Michael" <Michael.Scharf@hs-esslingen.de>
To: Jeffrey Haas <jhaas@pfrc.org>
CC: Camilo Cardona <camilo@gin.ntt.net>, "draft-ietf-tcpm-yang-tcp.authors@ietf.org" <draft-ietf-tcpm-yang-tcp.authors@ietf.org>, "draft-ietf-tcpm-yang-tcp@ietf.org" <draft-ietf-tcpm-yang-tcp@ietf.org>, "tcpm@ietf.org" <tcpm@ietf.org>, "grow@ietf.org" <grow@ietf.org>
Thread-Topic: [GROW] How to reuse the tcp model in the BMP model - asking for suggestions
Thread-Index: AQHYXwQeN+SwQl3LFEmMyted4jIbUq1Tl5FwgAA4QgCABg4gQIA15qsAgASogICAEohEMIAAKsCAgAFnEhA=
Date: Fri, 19 Aug 2022 08:39:14 +0000
Message-ID: <3d87ff887dc74f26b011acc31ac967be@hs-esslingen.de>
References: <39BBD72C-808D-45CF-B832-9EF786F45F06@gin.ntt.net> <a8e7d4449ded44cd805f2a20f75b14e8@hs-esslingen.de> <7F96BC15-66B6-4F6B-9B68-AC59FAA0FF39@gin.ntt.net> <3577f12509e949a49ba9494c4f9bb1d7@hs-esslingen.de> <20220725181224.GC14067@pfrc.org> <73CA533F-0911-4A4A-9FF2-21377E3185F4@gin.ntt.net> <47bee885617e4694a6735b80aea9d352@hs-esslingen.de> <20220809145355.GA26219@pfrc.org>
In-Reply-To: <20220809145355.GA26219@pfrc.org>
Accept-Language: de-DE, en-US
Content-Language: de-DE
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [134.108.140.249]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/DhPHzZ83HBFaiz_RebLVoJ7bsaM>
Subject: Re: [tcpm] [GROW] How to reuse the tcp model in the BMP model - asking for suggestions
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 19 Aug 2022 08:39:28 -0000

Hi Jeff,

Sorry for the delayed response.

Note that this e-mail only focuses on MSS and related parameters. I know that further functionality has been discussed during the TCPM meeting - but it is not clear to me how  much some of these ideas are backed by running code.

> -----Original Message-----
> From: Jeffrey Haas <jhaas@pfrc.org>
> Sent: Tuesday, August 9, 2022 4:54 PM
> To: Scharf, Michael <Michael.Scharf@hs-esslingen.de>
> Cc: Camilo Cardona <camilo@gin.ntt.net>; draft-ietf-tcpm-yang-
> tcp.authors@ietf.org; draft-ietf-tcpm-yang-tcp@ietf.org; tcpm@ietf.org;
> grow@ietf.org
> Subject: Re: [GROW] How to reuse the tcp model in the BMP model - asking
> for suggestions
> 
> Michael,
> 
> On Tue, Aug 09, 2022 at 10:31:47AM +0000, Scharf, Michael wrote:
> > As different interfaces can have a different MTU, it is not uncommen to
> > use different MSS values for connections originating/terminating on
> > different interfaces. At least the Linux kernel apparently picks the MSS
> > per interface. As a result, it hardly makes sense to model in YANG a
> > single MSS value for all interfaces. Instead, the MSS value would have to
> > be per interface and set in a corresponding YANG model for the interface.
> 
> Knowing the MSS that the host would pick for sessions over a given interface
> might be "nice", but I would tend to agree that it might not make great
> sense in the model.
> 
> > Theoretically, we could do this for MSS, e.g., by augmentation. But for
> > other parameters, such as hardware offload configuration, this would get
> > complex and technology-specific. As a result, the proposed YANG model
> > stays away from interface-specific parameters.
> 
> The underlying issue that Camilo is trying to raise isn't so much
> interface-specific as it is session specific.  Consider the following
> examples:
> 
> https://www.juniper.net/documentation/us/en/software/junos/bgp/topics
> /ref/statement/tcp-mss-edit-protocols-bgp.html
> https://www.cisco.com/c/en/us/td/docs/iosxr/cisco8000/bgp/73x/b-bgp-cg-
> 8k-73x/implementing-bgp.html#task_sq1_xdk_4jb

Thanks for the pointers. Actually, I have looked at several router operating systems (including also Nokia SROS) when preparing the first individual versions of this draft.

For what it is worth, an old summary shown during IETF 105 (see https://datatracker.ietf.org/meeting/105/materials/slides-105-tcpm-yang-groupings-for-transmission-control-protocol-tcp-configuration-01) includes both router and host operating systems as examples.

In addition, I have now also checked the OpenConfig YANG models, and they also have ways to set the MSS, for instance:

    leaf tcp-mss {
      type uint16;
      description
        "Sets the max segment size for BGP TCP sessions.";
    }

    leaf mtu-discovery {
      type boolean;
      default false;
      description
        "Turns path mtu discovery for BGP TCP sessions on (true)
        or off (false)";
    }

The details, i.e., whether to configure a maximum value for the MSS as system default, per network interface, or per (BGP) neighbor may be specific to the system, but in general most router and host operating systems have ways to influence the MSS.

So, this clearly shows that the MSS might be relevant. But the reality is a bit more complex:

1/ The MSS value is per direction of a TCP connection, and the effective send MSS (called Eff.snd.MSS in RFC 9293) can be different from the receive MSS (called RMSS in RFC 9293)

2/ It is relatively common to also enable/disable PMTU discovery as alternative to an explicit MSS configuration (not only in OpenConfig, see again e.g. my old survey in https://datatracker.ietf.org/meeting/105/materials/slides-105-tcpm-yang-groupings-for-transmission-control-protocol-tcp-configuration-01)

3/ If a TCP stack allows setting a maximum, the effective MSS may be smaller than this configured parameter (config vs. operational state)

None of this is a fundamental problem for a YANG model, and we could figure out how to model this specific detail. Both MSS and PMTU discovery was in the list of features that were originally discussed in TCPM as potentially in scope of this document. But there was no strong interest in this inside TCPM without a clear use case.

If the feedback from BGP implementers is that MSS and MTU discovery is a MUST-HAVE, that situation could change.

Of course, anybody on the TCPM list is welcome to speak up here!

> The inconsistency Camilo mentioned aside, there are two aspects to sessions
> that are relevant to the management information:
> 
> - For the session, can you see the effective parameter?  (In this case, no.)
> - How do you configure the parameter in question?
> 
> For the first point, it might make sense to expose the effective MSS in the
> tcp/connections container.  Doing so in a typedef defined in this module may
> be helpful for the second point.

As already pointed out, we would have to understand whether it should be the MSS, or also PMTU discovery, or even more.

> For the second point, TCP sessions are created outside of the YANG module.
> Just like parameters like the endpoints and ports need to be configured
> (some explicitly, some implicitly) by other modules, MSS and other session
> parameters may be needed.  The typedef noted above provides a common
> way to
> model that configuration state and is supported by the operational state
> above.
> 
> Is a typedef required?  No... but it makes many things easier since it
> avoids everyone reinventing items like constraints, etc.

Personally, I agree that some typedef(s) or even leafs related to MSS and MTU discovery for would be doable in draft-ietf-tcpm-yang-tcp, if there was consensus in TCPM to add this. In this case, the scope is quite clear and there seems to be running code in implementations.

As the upcoming revision of the draft will have other changes, the authors could make a proposal in this space, too. But I'd really be more comfortable with this if there was some further list support from the community before going down that road.

Thanks for this good discussion!

Michael
 
> -- Jeff