Re: [netmod] Structuring a DHCP module
Andy Bierman <andy@yumaworks.com> Wed, 20 January 2021 18:32 UTC
Return-Path: <andy@yumaworks.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E66DE3A11D8 for <netmod@ietfa.amsl.com>; Wed, 20 Jan 2021 10:32:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.887
X-Spam-Level:
X-Spam-Status: No, score=-1.887 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks-com.20150623.gappssmtp.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 K3ILutcEuDhd for <netmod@ietfa.amsl.com>; Wed, 20 Jan 2021 10:32:38 -0800 (PST)
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) (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 405613A11D7 for <netmod@ietf.org>; Wed, 20 Jan 2021 10:32:38 -0800 (PST)
Received: by mail-lf1-x12a.google.com with SMTP id h7so6208614lfc.6 for <netmod@ietf.org>; Wed, 20 Jan 2021 10:32:37 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=jPmL2ct493RK1S22fbHChYzmDcX1ni90O/AT9d4EYcU=; b=ir9XAMj1nkfuQPoKaqD7bj2dmUsUwlpapWLJZYu+Kgh0DRtDBRSaQ/riuZ9XCPebMF 2wjz3Wdiyu90sk6CT8BL9soxvJR0WRJvwPFPT+RAZrV2AxNF8pgGBUDiqfJXGaNkeZqJ oGIoSrNy3ban0n5YmgblT9Lb9svRA6mNUuc1vo5KrEzsPiFqlqGIkGv5J0urtgY2Lwta uz+Pu3GjW3nfj02BUlq6QfW3/XtXvmc0bTwnIVNNjh59v3SdleU0GOZhvW2BSK1lNp4k o/iQCX2MmuekG0V6/hatq3nfp8W82ya+swwjWCQId/Fm0WFNfo77taO1nkZhcoXREkxQ sRCQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jPmL2ct493RK1S22fbHChYzmDcX1ni90O/AT9d4EYcU=; b=BtzEvMJm7l0VfNPXc+iemre1NgQ/6n01dW5h8AsaqJDGqGesEW0WWFUrlA3gKJ+bI/ 7xc6BeFDHsXnptAx44DrkHZTCi+bYbqGRbJFHo5AzQVpElAWPHAdkcTH9jR+T6qtrKLr DQ2EC81ffNfZ2/rA5nSEMe6RpQXDFrX6VIF8C5jf6nWhu59uF9faOzmonq7APCaVt0gQ IiaL03iNvf1IIDA6LBnzJVM2mkNtgUcUVZm+7h++5MSmITraZec66v/zv6Tnclw9Q7wK aDHV5vUb4rJTHD+l6m8Mc6+ndgtOYav+73MU9/pUb6yfpruMZ1zRkQ4mMMfV66aMeVbS QN7g==
X-Gm-Message-State: AOAM530wVPcLR7hde9MTBukuQ50PoVRqTnYR2CTen5lNCvqt0f0MXvM0 ryNteCQzLc7FI9EjxBO7ZBkx8enqvuPPWUBf5a5VEA==
X-Google-Smtp-Source: ABdhPJzavboqkVXwNZumTdVVJac3ABG3oL2MQlqPJi/CGSljS6tAV8Ize0dyR93P7NVllRubMP2BJE2WqSq5wdawXno=
X-Received: by 2002:a19:4107:: with SMTP id o7mr4499233lfa.512.1611167555944; Wed, 20 Jan 2021 10:32:35 -0800 (PST)
MIME-Version: 1.0
References: <161100770222.25746.4414271883591983954@ietfa.amsl.com> <AM7PR07MB6248BC693F7056249D29CF16A0A20@AM7PR07MB6248.eurprd07.prod.outlook.com>
In-Reply-To: <AM7PR07MB6248BC693F7056249D29CF16A0A20@AM7PR07MB6248.eurprd07.prod.outlook.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Wed, 20 Jan 2021 10:32:25 -0800
Message-ID: <CABCOCHTexq8SBCE5=9fGuqYQ5fQWVvu+R1jN9V-Mg+pPUq0RZA@mail.gmail.com>
To: tom petch <ietfc@btconnect.com>
Cc: "netmod@ietf.org" <netmod@ietf.org>, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Martin Björklund <mbj+ietf@4668.se>, Ladislav Lhotka <ladislav.lhotka@nic.cz>, "ianfarrer@gmx.com" <ianfarrer@gmx.com>
Content-Type: multipart/alternative; boundary="000000000000d89d7905b9592db7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/yaxmCBPyv63AHvxItrUVOlHLpoQ>
Subject: Re: [netmod] Structuring a DHCP module
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 20 Jan 2021 18:32:41 -0000
On Wed, Jan 20, 2021 at 8:41 AM tom petch <ietfc@btconnect.com> wrote: > Juergen, Lada, Martin, Andy > > I wonder if one of you, or perhaps another on this list, would be willing > to give advice on the > structuring of the YANG module for DHCP. It has been revised and > restructured several times and, to me, is not progressing. > > It models three roles - client, server, relay - and a dozen optional > function which can appear in one or more roles. A node will likely have > only one role but may have many options. > > There are, at present, seven modules > server which defines a server identity based on common identity inter alia > relay which defines relay identity ditto > client which defines client identity ditto > server options which has groupings for each option for a server > client options which has groupings for each option for a relay > relay options which has groupings for each option for a client > common which defines the common identity inter alia > Since options are common across roles, some groupings are replicated in > the three options modules. Three separate option modules were created to > avoid problems with imports as Ian explains below. The I-D is > draft-ietf-dhc-dhcpv6-yang > > My take is that one module is best, using 'when' or if-feature to select, > which is what I see with OSPF, PCE, TCP, IGMP and almost everything else > but am struggling to convince others, especially the author Ian. [IF] in > the e-mail extract below > > I suggested asking a YANG Doctor, NOT to look at the module but rather to > advise on a structure given the requirements to which Ian said that he had > not had much joy with YANG Doctors. I append our most recent exchange in > which he responds to my query as to why there are seven modules; formatting > is a bit of a mess I am afraid. The posts are to the DHCWG mail list. > > Any advice appreciated even if it is that Ian is on just the right track! > Either approach is valid so multi-module vs. single module w/ features is more of an overall system maintenance issue. 7 modules seems like a lot for DHCP but I have no objective criteria to back that up. There is some confusion about the import-stmt, which leads to many YANG modules. In compiler terms, importing a module merely makes the symbols available for parsing in the current module. The import-stmt implies no conformance requirements whatsoever. Only statements that use the imported module can do that. (So a server module importing a module that has client groupings is not actually a problem.) YANG Conformance for a single module is better defined than for multiple related modules. The YANG Packages work could fix that someday. . > Tom Petch > Andy > > On 19/01/2021 11:25, tom petch wrote: > > ________________________________________ > > From: dhcwg <dhcwg-bounces@ietf.org> on behalf of ianfarrer@gmx.com < > ianfarrer@gmx.com> > > Sent: 19 January 2021 07:37 > > > > Thanks for your comments. Please see inline below. > > > > Ian > > > > On 14. Jan 2021, at 13:40, t petch <ietfa@btconnect.com<mailto: > ietfa@btconnect.com>> wrote: > > > > Ian > > > > I do not understand this I-D; I have tracked it for a number of years > and my understanding of it is diminishing. > > > > Currently, it is seven YANG modules: why? > > > > [if - The separation into client/server/relay, and DHCP options has been > in the draft since -05 and the changes were presented and discussed at > IETF101 - I’ve described the reasoning for this split in the next answer. > Beyond that, the common module was added to avoid (well reduce as you point > out below) duplication. > > > > The separation of the option modules came at a later stage based on > import dependencies of a single options module. When the options module > imports the client/server/relay modules so it can augment the relevant > module based on identity, an implementation also needs to import these > modules and will declare them in it’s capabilities as available even though > it doesn’t implement them. Dividing the options modules avoids the need for > deviations. > > > > Even though there are 7 modules defined here, the likely hood is that an > element implementation would require 3 modules to be implemented (e.g. > client, common and client options).] > > > > [tp] Other WG have models with multiple roles and many options and have > a single YANG module, using the features of YANG to tailor the module to > different configurations. > > > > [if - It’s not really tailoring the module to different configurations, > they are for the most part separate functional elements in the network with > any device only implementing one of the client, relay or server functions. > > > > However, even in the case that a device is both a server and a client > (e.g. a home gateway with a client on the WAN and a server on the LAN), the > likelihood is that these will be done using different software > implementations, so having separate modules for server and client offers > implementation flexibility. > > > > In the case of a monolithic module with the relevant client/relay/server > functionality enabled by features, the module would do nothing unless one > or more of the features was enabled, and Is unlikely that you’d ever enable > more than one. Is this approach used by other WGs? Could you point me to > some some examples as I've only seen features been used as relatively small > optional extensions used when the bulk of the nodes are common?] > > [tp] > Ian > > Almost all the YANG models I know of are single module. For example, > draft-ietf-ospf-yang supports two versions modelled as identity and 28 > options modelled as features. > > draft-ietf-tcpm-yang supports client and server as containers with > if-feature and has other features as well > > draft-ietf-pim-igmp-mld-yang supports five versions of two protocol > using identity > > draft-pce-pcep-yang offers the roles of pcc or pce or both using typedef. > > And so on and so on. if-feature, when and suchlike provide the > necessary customisation. > > I think that your problems with options are because the identity are > defined in the wrong place. The base, the common module (or part of the > one and only module) should define what is common, what everyone needs; > if there are three roles and a dozen options, than that is where they > need to be defined. > > Then there can be an object which is configured with the roles of a > particular box, client or server or relay, or if required, a combination > of the there - simpler if that is out of scope as you suggest. > > My starting point would be a dhc container with a leaf for a role and then > containers for client, relay, server, added by augment and controlled by > when pointing at the role. > > I will post something to the netmod WG list - there are lots of people > there with greater exposure than mine who can give better guidance than I. > > Tom Petch > > > Here you have modelled the options as YANG grouping. The intent of a > grouping is to provide a block of statements that can be reused so avoiding > duplication with the attendant problems. Here you have the same grouping > in triplicate in three different YANG modules which seems to me to be the > antithesis of a grouping. > > > > [If - We could move the option definitions for > "status-code-option-group” (client, server, relay) and > “rapid-commit-option-group, vendor-specific-information-option-group; > reconfigure-accept-option-group” (client, server) into the common module to > resolve the duplication. I didn’t do this previously as the intention was > to keep options definitions in the options modules for consistency, but it > would be simple to change. ] > > > > [tp] Likewise I find the specification of server v client v relay > unusual. > > > > [If - A similar approach for separated client/server modules is also > used in RFC8676, where the client and server have discrete function, as > with DHCP.] > > > > [tp]I wonder if it is worth consulting a YANG doctor, NOT to show them > the YANG and invite comments, rather outline in an abstract way what it is > you want to model and see what they suggest; that might well be a single > YANG module. > > > > [if - Yes, I’d be happy to. Is there someone that you have in mind (I’ve > not had much luck with getting YANG doctor input outside of the formal > review process in the past)?. I’m not opposed to changing the way that the > modules are structured on principal, I do however, think that the > separation by functional element is logical and simpler for implementers, > and I would like to know what the benefits of a single module (or other > structure) might be.] > > > > [tp]I do have quite a number of detailed comments but do not think them > worth making until the I-D seems to me more stable. > > > > [if - It’d be great if you could supply them as well so I can start > going though them and fixing what’s currently fixable in parallel to the > discussion above.] > > > > Tom Petch > > > > On 07/01/2021 16:10, ianfarrer@gmx.com<mailto:ianfarrer@gmx.com> wrote: > > Hi Tom, > >
- [netmod] I-D Action: draft-ietf-netmod-eca-policy… internet-drafts
- [netmod] Structuring a DHCP module tom petch
- Re: [netmod] Structuring a DHCP module Andy Bierman
- Re: [netmod] Structuring a DHCP module tom petch
- Re: [netmod] Structuring a DHCP module Martin Björklund
- Re: [netmod] Structuring a DHCP module Ladislav Lhotka
- Re: [netmod] Structuring a DHCP module ianfarrer
- Re: [netmod] Structuring a DHCP module tom petch
- Re: [netmod] Structuring a DHCP module Martin Björklund
- Re: [netmod] Structuring a DHCP module tom petch
- Re: [netmod] Structuring a DHCP module ianfarrer
- Re: [netmod] Structuring a DHCP module tom petch
- Re: [netmod] Structuring a DHCP module ianfarrer
- Re: [netmod] Structuring a DHCP module tom petch