Re: [netmod] [Teas] Key collision between configured and ephemeral list entries

Italo Busi <> Wed, 19 June 2019 12:51 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 72FC9120142; Wed, 19 Jun 2019 05:51:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id eRzi-Lumgrfn; Wed, 19 Jun 2019 05:51:05 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 6B8FE12007A; Wed, 19 Jun 2019 05:51:05 -0700 (PDT)
Received: from (unknown []) by Forcepoint Email with ESMTP id BAA965D64227970DD6E8; Wed, 19 Jun 2019 13:51:03 +0100 (IST)
Received: from ([]) by ([]) with mapi id 14.03.0415.000; Wed, 19 Jun 2019 13:51:02 +0100
From: Italo Busi <>
To: "Rob Wilton (rwilton)" <>, Juergen Schoenwaelder <>
CC: "" <>, Tarek Saad <>, Andy Bierman <>, "" <>
Thread-Topic: [Teas] [netmod] Key collision between configured and ephemeral list entries
Thread-Index: AQHVJn5k7yB2tfw3aEWFuocoir+bQ6ai20yA
Date: Wed, 19 Jun 2019 12:51:02 +0000
Message-ID: <91E3A1BD737FDF4FA14118387FF6766B2776A93F@lhreml504-mbs>
References: <> <> <91E3A1BD737FDF4FA14118387FF6766B2774E51F@lhreml504-mbs> <028b01d51933$1015fa80$> <91E3A1BD737FDF4FA14118387FF6766B2775CF49@lhreml504-mbs> <> <> <91E3A1BD737FDF4FA14118387FF6766B2775D052@lhreml504-mbs> <> <91E3A1BD737FDF4FA14118387FF6766B2775D16D@lhreml504-mbs> <> <91E3A1BD737FDF4FA14118387FF6766B27769528@lhreml504-mbs> <>
In-Reply-To: <>
Accept-Language: it-IT, en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <>
Subject: Re: [netmod] [Teas] Key collision between configured and ephemeral list entries
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 19 Jun 2019 12:51:10 -0000

Hi Rob,

Thanks a lot for your comments

Your interpretation makes a lot of sense in case of an "intentional" name clash (e.g., when an entry is configured by the client in the <running> DS to configure some intended behavior, like admin status, for an entry injected by the system in the <operational> DS): in this case the same name/key value is used to indicate that the two DS entries are referring to the same entity

My concern is how to avoid "unintentional" name clashes (e.g., between an entry configured by the client in the <running> DS and another entry injected by the system in the <operational> DS) because in this situation the behavior described below is not desirable: the two DS entries are actually referring to two different entities which by accident got assigned the same name/key value


-----Original Message-----
From: Rob Wilton (rwilton) [] 
Sent: mercoledì 19 giugno 2019 11:07
To: Italo Busi <>; Juergen Schoenwaelder <>
Cc:; Tarek Saad <>; Andy Bierman <>;
Subject: RE: [Teas] [netmod] Key collision between configured and ephemeral list entries

Hi Italo,

My interpretation of the NMDA guidelines are thus:

- If multiple clients are writing the same values to <running> then the clients must coordinate between themselves to ensure that the correct values are written to <running>, otherwise the last verified change written to <running> wins.  Locks can be used to coordinate client writes to <running> if required.

- If multiple clients are writing to different datastores, e.g. one client is writing to <running> and another is writing to some form of ephemeral datastore, then the ephemeral datastore definition must specify what mechanism is used to resolve configuration conflicts between configuration datastores.  Naively, my starting point would be to say that configuration in an ephemeral datastore should override configuration that is in <running>.

- If the decision is from a data node configured in <running> and a data node injected by the system into <operational> then it is up to the device to decide how to resolve these (i.e. the system chooses which version of the data node to use, and the result of that decision is tagged in <operational> using the origin metadata).  Generally, I would expect an explicitly configured data node in <running> should take precedence over system generated config, but there might be cases where this doesn't make sense, and perhaps there might be cases where the data model recommends different behaviour.

- I would assume that there is only a single <operational> datastore.  I'm not sure whether NMDA explicitly requires this, but we couldn't think of any scenario where multiple operational datastores would be helpful.


> -----Original Message-----
> From: Teas <> On Behalf Of Italo Busi
> Sent: 18 June 2019 18:24
> To: Juergen Schoenwaelder <>
> Cc:; Tarek Saad <>; Andy Bierman 
> <>;
> Subject: Re: [Teas] [netmod] Key collision between configured and 
> ephemeral list entries
> Hi Juergen,
> What is the DS architecture you have in mind with multiple client 
> creating entries?
> Are the two clients creating entries in the same <running> DS or in 
> two different <running> DS?
> In the latter case, the two clients could also rely on different 
> <operational> DS and therefore can assign the same name to different 
> entries (since they will be instantiated in different DS). There is no 
> need for them to avoid name clash
> In the former case, a name clash would cause one client to override 
> the configuration of another client
> Are the two clients aware of each other?
> I take the opportunity to clarify one point (not sure I have been 
> clear about it). I do not think we need to define any rule which is 
> enforced by the server to avoid name clashes since the server cannot 
> understand whether the name clash is intentional or not. I think we 
> just need to define some known/common/standard rules that allow the 
> client(s) to avoid creating unintended name clashes.
> Thanks, Italo
> -----Original Message-----
> From: Juergen Schoenwaelder 
> []
> Sent: martedì 11 giugno 2019 20:37
> To: Italo Busi <>
> Cc: Andy Bierman <>;; Tarek Saad 
> <>;
> Subject: Re: [netmod] [Teas] Key collision between configured and 
> ephemeral list entries
> On Tue, Jun 11, 2019 at 05:43:27PM +0000, Italo Busi wrote:
> > [Italo Busi] If the client knows the prefix used by the server, it 
> > can pick up a different prefix and use it to tag its own entries. I 
> > think this rule is not really complex and it seems much simpler than 
> > managing unintended name clashes
> A prefix only helps a little. Once you have multiple clients creating 
> entries, you will have to handle collisions again. Sometimes solving 
> the more general case leads to solutions that also work nicely in 
> simpler special cases.
> /js
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <>
> _______________________________________________
> Teas mailing list