Re: [i2rs] modeling options for draft-ietf-i2rs-yang-network-topo

Martin Bjorklund <mbj@tail-f.com> Wed, 15 February 2017 19:53 UTC

Return-Path: <mbj@tail-f.com>
X-Original-To: i2rs@ietfa.amsl.com
Delivered-To: i2rs@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C85BB129A82 for <i2rs@ietfa.amsl.com>; Wed, 15 Feb 2017 11:53:54 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=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 Ak5mkdkcBzQf for <i2rs@ietfa.amsl.com>; Wed, 15 Feb 2017 11:53:53 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 5E41B129A8A for <i2rs@ietf.org>; Wed, 15 Feb 2017 11:53:53 -0800 (PST)
Received: from localhost (h-148-188.a165.priv.bahnhof.se [176.10.148.188]) by mail.tail-f.com (Postfix) with ESMTPSA id 6607F1AE0398; Wed, 15 Feb 2017 20:53:50 +0100 (CET)
Date: Wed, 15 Feb 2017 20:53:50 +0100
Message-Id: <20170215.205350.344644482805960248.mbj@tail-f.com>
To: alexander.clemm@huawei.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <644DA50AFA8C314EA9BDDAC83BD38A2E0DF804DE@SJCEML703-CHM.china.huawei.com>
References: <644DA50AFA8C314EA9BDDAC83BD38A2E0DF80493@SJCEML703-CHM.china.huawei.com> <20170215.194126.118198588680956999.mbj@tail-f.com> <644DA50AFA8C314EA9BDDAC83BD38A2E0DF804DE@SJCEML703-CHM.china.huawei.com>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/i2rs/WB_dv3fb4DBMoPC5lwoUU4ztoWk>
Cc: i2rs@ietf.org, kwatsen@juniper.net
Subject: Re: [i2rs] modeling options for draft-ietf-i2rs-yang-network-topo
X-BeenThere: i2rs@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Interface to The Internet Routing System \(IRS\)" <i2rs.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/i2rs>, <mailto:i2rs-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/i2rs/>
List-Post: <mailto:i2rs@ietf.org>
List-Help: <mailto:i2rs-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/i2rs>, <mailto:i2rs-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Feb 2017 19:53:55 -0000

Alexander Clemm <alexander.clemm@huawei.com> wrote:
> So, the suggested solution would be to not have validation of
> information, but simply have misconfigured stuff that violates
> integrity constraints never show up in the state tree.

If I'm not mistaken, this is how the solution in the current draft
works.

And it seems to me that it more or less follows from the requirement
that the server can create/modify/delete any server-provided data at
any time.

> Perhaps this is the best that YANG can support today, although I still
> find this not very satisfying.  At a minimum, it would be good if the
> framework would support an indication whether the configured topology
> information went into effect or not.

I'm not sure how useful that information would be, given that the
server-provided data might disappear at any time after such an
indication.


/martin


> The implication is that a client
> will need to achieve this now by retrieving the corresponding state
> tree after each configuration operation (and if the configuration
> would not show correspondingly in the state tree, troubleshoot to see
> what's wrong).  So, if this is taken as design pattern, it would be
> good to introduce operations to support that.  Likewise, it would be
> good to have a "diffing" operation in which state tree and
> configuration tree are checked for differences and discrepancies are
> reported (e.g. config not in state, and possibly vice versa).  These
> should probably be added as requirements for I2Rs and the next
> revision of the overall YANG+associated protocols framework.
> 
> --- Alex
> 
> -----Original Message-----
> From: Martin Bjorklund [mailto:mbj@tail-f.com] 
> Sent: Wednesday, February 15, 2017 10:41 AM
> To: Alexander Clemm <alexander.clemm@huawei.com>
> Cc: kwatsen@juniper.net; i2rs@ietf.org
> Subject: Re: [i2rs] modeling options for
> draft-ietf-i2rs-yang-network-topo
> 
> Alexander Clemm <alexander.clemm@huawei.com> wrote:
> > Hello Martin,
> > Thank you.  Your first explanation is clear.  Regarding the expression
> > of constraints, see inline, below (thread is pruned for clarity)
> > --- Alex
> > 
> > -----Original Message-----
> > From: Martin Bjorklund [mailto:mbj@tail-f.com]
> > Sent: Wednesday, February 15, 2017 12:12 AM
> > To: Alexander Clemm <alexander.clemm@huawei.com>
> > Cc: kwatsen@juniper.net; i2rs@ietf.org
> > Subject: Re: [i2rs] modeling options for 
> > draft-ietf-i2rs-yang-network-topo
> > 
> > 
> > <snip>
> > .................
> > I mean that the server will consider a configured item, and decide if 
> > it can be used or not.  If the configured item has a reference to 
> > something that doesn't (yet) exist (weak reference; require-instance 
> > false), the server leaves the item in the config, and moves on.  At 
> > some later time, suppose the weak reference is fulfilled; at this 
> > point the server decides that the configured item can be used, and it 
> > instantiates the item in the /-state list.  Once it is there, maybe 
> > some other configured item has a reference to this one, and it can 
> > also be instantiated etc.
> > 
> > And it goes the other way as well; suppose a server provided item is 
> > removed by the server; at this point the server would also remove 
> > items in the state list that originated in the configuration - however
> > they are not removed from the config, just the state.
> > (Server provided items would only show up in the state in this 
> > solution).
> > 
> > The state subtree works exactly like the operational-state datastore 
> > in draft-ietf-netmod-revised-datastores.
> > 
> > <ALEX>
> > Thank you, this clarifies the earlier statement </ALEX>
> > 
> > > One of the issues that we are facing is that a configured topology 
> > > might refer to a configured topology or a server-provided topology, 
> > > and we would like to avoid making a case distinction as to which 
> > > category we are referring to.
> > 
> > I believe my proposed solution handles this.
> > 
> > > At the same time, we are making use of leafrefs to express a number 
> > > of integrity constraints which are part of the model: as a node is 
> > > part of a topology, and a topology has an underlay topology, we make 
> > > sure that the underlay node is part of the underlay topology (and 
> > > not just any arbitrary node).
> > 
> > Can you point me to the place in the model where this is specified?
> > 
> > Or did you mean that today you have to mention this in plain text, but
> > it would be nice if it could be captured formally in the model?
> > 
> > <ALEX>  It is covered in the model today. E.g.:
> 
> Ok.  Here the model uses require-instance false, so if these ponts to
> the state tree instead, you'd get the same effect.
> 
> 
> /martin
> 
> 
> > 
> > In networks/network/node/supporting-node 
> >              leaf network-ref {
> >                type leafref {
> >                  path "../../../supporting-network/network-ref";
> >                require-instance false;
> >                }
> > (supporting node is contained in supporting network)
> > 
> > Supporting link:
> >       +--rw supporting-link* [network-ref link-ref]
> >          +--rw network-ref    -> ../../../nd:supporting-network/network-ref
> >          +--rw link-ref ->
> >          
> > /nd:networks/network[nd:network-id=current()/../network-ref]/link/link
> > -id
> > 
> > (supporting link is a link contained in the supporting network)
> > 
> > Supporting termination point:
> >       +--rw supporting-termination-point* [network-ref node-ref tp-ref]
> >          +--rw network-ref    -> ../../../nd:supporting-node/network-ref
> >          +--rw node-ref       -> ../../../nd:supporting-node/node-ref
> >          +--rw tp-ref ->
> >          
> > /nd:networks/network[nd:network-id=current()/../network-ref]/node[nd:n
> > ode-id=current()/../node-ref]/termination-point/tp-id
> > 
> > (supporting termination point is contained in supporting network and 
> > supporting node)
> > 
> > It is those leafrefs whose transposition in the split subtree model 
> > (where we encounter alternative paths) I am concerned will be 
> > problematic.
> > 
> > </ALEX>
> >  
> > 
>