Re: [netmod] a few comments on draft-wilton-netmod-opstate-yang

Andy Bierman <andy@yumaworks.com> Mon, 08 February 2016 21:20 UTC

Return-Path: <andy@yumaworks.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A77211B334F for <netmod@ietfa.amsl.com>; Mon, 8 Feb 2016 13:20:52 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.278
X-Spam-Level:
X-Spam-Status: No, score=-1.278 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, SPF_PASS=-0.001] autolearn=no
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 qDe7-RFLQcBq for <netmod@ietfa.amsl.com>; Mon, 8 Feb 2016 13:20:49 -0800 (PST)
Received: from mail-lb0-x230.google.com (mail-lb0-x230.google.com [IPv6:2a00:1450:4010:c04::230]) (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 2D0C81B2F61 for <netmod@ietf.org>; Mon, 8 Feb 2016 13:20:49 -0800 (PST)
Received: by mail-lb0-x230.google.com with SMTP id bc4so90234683lbc.2 for <netmod@ietf.org>; Mon, 08 Feb 2016 13:20:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=EoCDM2ObYbS28f7/DtCkjjob5dt2ld3AgPqaOVGywBk=; b=u1V0izZwAPyh9DSg5vru5OOnpcGciJ2pGewV4E7XrIIKFM+lHFTeth7XfO9+SCkN9Y WdZaQegaGdnfDONYhrsBIjkFR/lydnCXAi3xf5dg/H/Isv3I/IQXFOkhWU4zfdLaTg6H IKfkOFw/ocukYL9r/ayGy7uALkMW4+v81mq43WyXdU2Pe79IsK+KK4IRVPTGb3DRpDAO 4KoLfEzRPoZmi9dvdum9hfh6LYHl3eITltgIrjNnR/r5LqwaKwq7/Bm42A8pNuOv5WFp blPAi2PlOSmkm71AdyufX0vHZpks3w+EGonl+B2kldPjVqltj7Poh4j/nhG//zpk6KiS 0/WA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=EoCDM2ObYbS28f7/DtCkjjob5dt2ld3AgPqaOVGywBk=; b=kgx/G7ADWoNOVXXIciW1Wr+QqqHd8tKInyKNOOU6Nka/elKCPi7CRRs1a+U3WJbwrC YJVagkg4tEgflGr3ILGqRr5lHVlM5X2cpxn7o7YdWhERZ16q6DIo7CQluS89L47/RCBn FlOHkl7U0FpJwhL319MZkpWww7Za1EAFSjJqPAN0MXp3vLTgujjhib67gf4nsD8VstI6 KO9qFm/xc9hhFinKgREwECcF5+ZtcPukOzp+IsliYvXaHCKitJMKdREuv3ZtgESn6W8Z Y/Ya4yp+aaEkpCQvAfbS24kzlEstOYGS46cQUxCiT4BFHvmSyh6CeAi8l+Z30770Rl4k qMbQ==
X-Gm-Message-State: AG10YOQTyHYwNX1hjgYFnbSIP/CMk2uk7ioPy+c3WGyjIouDQKeikbp3s9rg6+4n8wJ5g+domeaGUpwrO76MWQ==
MIME-Version: 1.0
X-Received: by 10.112.146.34 with SMTP id sz2mr12571670lbb.96.1454966447312; Mon, 08 Feb 2016 13:20:47 -0800 (PST)
Received: by 10.112.110.68 with HTTP; Mon, 8 Feb 2016 13:20:47 -0800 (PST)
In-Reply-To: <20160208.204128.275969700916546426.mbj@tail-f.com>
References: <56B89670.9090300@cisco.com> <20160208.144553.2082644981061361024.mbj@tail-f.com> <56B8B2BC.9050809@cisco.com> <20160208.204128.275969700916546426.mbj@tail-f.com>
Date: Mon, 08 Feb 2016 13:20:47 -0800
Message-ID: <CABCOCHTriVf7E3grRPcApitP5GxB_3J92QXh1r7Jxg+h5ziZCg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary="047d7b3a85c840aaf8052b48c6cd"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/r302CVZCx85qYO2-IV2L13nr4Fs>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] a few comments on draft-wilton-netmod-opstate-yang
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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: Mon, 08 Feb 2016 21:20:52 -0000

On Mon, Feb 8, 2016 at 11:41 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Hi,
>
> Robert Wilton <rwilton@cisco.com> wrote:
> > Hi Martin,
> >
> > On 08/02/2016 13:45, Martin Bjorklund wrote:
> > > Robert Wilton <rwilton@cisco.com> wrote:
> > >>
> > >> On 06/02/2016 00:41, Andy Bierman wrote:
> > > [...]
> > >
> > >>> IMO, this solution is a non-starter.
> > >> OK, and yet my understanding is that the folks requesting a solution
> > >> to the opstate problem are saying that the applied datastore approach
> > >> is also a non-starter, or at least very undesirable.
> > > But the key to finding a solution that works for everyone is to
> > > understand *why* a datastore is a non-starter.  As I noted in a
> > [Caveat - I don't speak for the OpenConfig operators, this is just
> > my perception from previous drafts, conversations, implementing some
> > of the OpenConfig models]
> >
> > My understanding is that they want something this is very similar to
> > how the OpenConfig models look.  After all, their preferred solution
> > to the opstate problem would be for IETF to standardize on the
> > approach used in OpenConfig model design.  E.g. all config nodes are
> > defined in groupings, and then instantiated under both "config" and
> > "state" containers.
> >
> > I believe that their concerns are primarily about how the operators
> > systems interact with the models from a management client
> > perspective rather than device implementation concerns.
> >
> > With the OpenConfig model/approach they get:
> >  - The choice of having one single tree that contains all the data
> >    (intended, applied and derived) - but can be split into multiple
> >    trees if they wish.  (I.e. with their model they have no
> >    requirement to be aware of separate data stores at all.)
> >  - Every piece of data in that tree has a unique path to identify it
> >    (makes the data easy to interact with).
> >  - The intended config, applied config, and derived state can all be
> >    programmatically compared.
> >  - Related information is co-located in the tree (e.g. if you were
> >    browsing the data tree).
>
>

> Here's a slightly updated version of a drawing that has been used to
> explain how configuration data flows through the system:
>
>   [candidate] -> [running/intended] -> [applied]
>                         |
>                         v
>                     [startup]
>



A special set of RPC operations for <get-applied>, etc.
would work just the same as reusing the NETCONF operations, except we can
remove
the datastore parameter (by hard-wiring it to 'applied').  So datastores
are not really the issue.

Many devices do not experience any significant delays when applying
datastore edits, so there is no need at all on these devices to be concerned
about the applied datastore. There is no need to have all the extra data
nodes
defined in the YANG module.

IMO vendors will continue to use their own modules.
It is very expensive to keep rewriting the same YANG module code over and
over.
An RPC or notification-based solution can work with all data models, without
any YANG rewrites or any disruption to existing client code.

Datastores work well in NETCONF because they scale well.  They only have
cost when
they are implemented and used. They are also extensible - if I2RS needs
special editing semantics, it is much lower cost to add a datastore rather
than
rewriting all the YANG modules to make an "ephemeral" container, and
another copy of all the YANG data nodes.


Andy



> We used to have three instantiations of configuration nodes, now we
> have four (applied).
>
> Three of these are datastores.  They can be programmatically compared
> (even without data model knowledge).  Note that a "datastore" can be
> viewed as a label (with associated semantics) of an instantiation of
> these nodes.
>
> It is unclear to me why applied must be special (modelled explicitly
> rather than a named instantiation of the nodes).
>
> Your list above applies only to the intended,applied subset of the
> instantiations.  If you want to e.g. check how startup differs from
> running you need a different mechanism than to check how applied
> differs from running, which means different code paths etc.
>
> > With a datastore solution, I think that it means:
> >  - Either they have to put intended and applied config into separate
> >    trees, or they have to come up with their own scheme to combine
> >    them into a single tree (given that the cfg intended/applied names
> >    clash).
>
> Do you mean in their proprietary protocol?
>
> >  - If separate trees, to ensure paths are unique they would need to
> >    prefix every path with the name of the datastore/tree (hassle).
>
> I don't see why it would be such a hassle; compare:
>
>   /intended/interfaces/interface[name='eth0']/mtu
>
> vs.
>
>   /interfaces/interface[name='eth0']/config/mtu
>
>
> >  - Comparing the intended and applied trees is a bit more hassle
> >    (they would need to perform a pairwise walk across both intended
> >    and applied configuration trees).
> >  - When data is being returned from the server (if it is even
> >    allowed for two datastores to be returned in the same request) then
> >    data would not be co-located.  I.e. you have to read in all the
> >    data for both intended and applied config datastores before you can
> >    start processing any of it.  Whereas if the data is returned in a
> >    single tree then co-located data would be returned together and the
> >    the stream of data can be filtered/processed without building up an
> >    intermediate combined tree of all the data.
> >
> > > previous email, both your solution and the datastore solution rely on
> > > the assumption that the server internally knows the difference between
> > > the "intended" and "applied" value for the config true nodes.
> > Please can you clarify - I don't really follow this point.
>
> In the open config solution there is just one schema and the server
> just calls the instrumentation to fill in the values.  The server
> doesn't know if a node is "applied" or "derived".
>
> In our solutions, the server knows from the request what data is
> requested, and calls the corresponding instrumentation.
>
>
> /martin
>
>
>
>
>
> > For all solutions, it only makes sense if the server internally
> > knows the difference between intended and applied values, so I
> > assume that is just a given.
> >
> >
> > >
> > >> (Note - I don't
> > >> actually know whether they regard the solution in
> > >> draft-wilton-netmod-opstate-yang to be any more palatable.)
> > > Right; so if their objection is that the server cannot know the
> > > difference between "intended" and "applied" for the config true leafs,
> > > neither of our solutions work.
> > >
> > > And if their objection is that their proprietary protocol does
> > > can/does not encode the datastore in the "get" request, then
> > > I suspect that their protocol also does not know your proposed
> > > encoding.
> > >
> > >>  From a clients operational perspective I can see how the OpenConfig
> > >> model, with separate intended config and applied config leaves that
> > >> are co-located in the schema tree makes life easy for the client in a
> > >> way that having a separate applied configuration datastore doesn't
> > >> seem to.
> > > I can see how the applied datastore model makes life easier for the
> > > client, e.g., a diff can be done w/o any data model knowledge at all.
> > Possibly.  But that requires that they have to manage having a
> > separate datastore for applied config in the first place, and I'm
> > not convinced that doing a pairwise diff across two datastores is
> > any easier than the equivalent "diff" algorithm that they would
> > write for checking the config state in the OpenConfig models.
> >
> > Rob
> >
> >
> > >
> > >
> > > /martin
> > >
> > >
> > >> Rob
> > >>
> > >>
> > >>>
> > >>>      /js (stating a clear opinion as a technical contributor)
> > >>>
> > >>>      --
> > >>>      Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> > >>>      Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen |
> Germany
> > >>>      Fax:   +49 421 200 3103         <
> http://www.jacobs-university.de/>
> > >>>
> > >>>
> > >>>
> > >>> Andy
> > >>>
> > >>>      _______________________________________________
> > >>>      netmod mailing list
> > >>>      netmod@ietf.org <mailto:netmod@ietf.org>
> > >>>      https://www.ietf.org/mailman/listinfo/netmod
> > >>>
> > >>>
> > > .
> > >
> >
>