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

Martin Bjorklund <mbj@tail-f.com> Wed, 15 February 2017 18:41 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 A2B91129B09 for <i2rs@ietfa.amsl.com>; Wed, 15 Feb 2017 10:41:30 -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 ZmpU5aOGXPev for <i2rs@ietfa.amsl.com>; Wed, 15 Feb 2017 10:41:29 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id C2ACF129A97 for <i2rs@ietf.org>; Wed, 15 Feb 2017 10:41:28 -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 5D8A01AE0398; Wed, 15 Feb 2017 19:41:26 +0100 (CET)
Date: Wed, 15 Feb 2017 19:41:26 +0100
Message-Id: <20170215.194126.118198588680956999.mbj@tail-f.com>
To: alexander.clemm@huawei.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <644DA50AFA8C314EA9BDDAC83BD38A2E0DF80493@SJCEML703-CHM.china.huawei.com>
References: <644DA50AFA8C314EA9BDDAC83BD38A2E0DF80205@SJCEML703-CHM.china.huawei.com> <20170215.091219.721914825568257957.mbj@tail-f.com> <644DA50AFA8C314EA9BDDAC83BD38A2E0DF80493@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/EcvC95yWDBVixQYgRwm3lOoX15w>
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 18:41:31 -0000

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:node-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>
>  
>