Re: [netmod] AD review of draft-ietf-netmod-entity-06

Benoit Claise <bclaise@cisco.com> Mon, 22 January 2018 16:37 UTC

Return-Path: <bclaise@cisco.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 077E2126E64 for <netmod@ietfa.amsl.com>; Mon, 22 Jan 2018 08:37:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level:
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.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 vFmR8hdATKwt for <netmod@ietfa.amsl.com>; Mon, 22 Jan 2018 08:37:47 -0800 (PST)
Received: from aer-iport-4.cisco.com (aer-iport-4.cisco.com [173.38.203.54]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 046A8124207 for <netmod@ietf.org>; Mon, 22 Jan 2018 08:37:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=16728; q=dns/txt; s=iport; t=1516639067; x=1517848667; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=BojCRg2NIi5yY5S0ddOo3YQNLMrhLnXGMKfPOUKPFWc=; b=O1wL8NXwJ+HKNogd7UpUCV1sB7qdCTagYoDDPhmSghHK4kPN8DLyWuMg qhjr78aSlQS3s/5aaMBHpHW4xUMH+6Ua0IDFwtzVkznoiaRg5v/l8Ccms 47ChGPTDjeYiT7A7sfrovQo0O6BRklls0sUyAOfRRx/emJtSHh7XNMb1e E=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B0AQB4EmZa/xbLJq1eGQEBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYQodCeDXYsYj3N8lleCAgoYC4FegmtPAoUzFAEBAQEBAQEBAWs?= =?us-ascii?q?ohSMBAQEEAQEhDwEFNgsMBAsRBAEBAQICIwMCAicfCQgGAQwGAgEBFooZELUYg?= =?us-ascii?q?ieKLwEBAQEBAQEBAQEBAQEBAQEBAQEBARgFgQ+DOoNsgWgpDIFrWDaDLwEBAgG?= =?us-ascii?q?BNhgBAQiDLYJlBYpph0iRSYgTjUiCG4Yfg3Emh06KdYJcgWaIEIE8NiKBUDIaC?= =?us-ascii?q?BsVPYIqhFhAN4gugjwBAQE?=
X-IronPort-AV: E=Sophos;i="5.46,397,1511827200"; d="scan'208";a="1537199"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-4.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Jan 2018 16:37:44 +0000
Received: from [10.55.221.36] (ams-bclaise-nitro3.cisco.com [10.55.221.36]) by aer-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id w0MGbi0L006086; Mon, 22 Jan 2018 16:37:44 GMT
To: "Bogaert, Bart (Nokia - BE/Antwerp)" <bart.bogaert@nokia.com>, Martin Bjorklund <mbj@tail-f.com>
Cc: "netmod@ietf.org" <netmod@ietf.org>
References: <20180109.163933.49682684192910889.mbj@tail-f.com> <AM4PR07MB1716D69A0AF0BBCD3BAF71D094110@AM4PR07MB1716.eurprd07.prod.outlook.com> <20180110.144453.957272588242505523.mbj@tail-f.com> <20180111.144705.493071366326080006.mbj@tail-f.com> <AM4PR07MB171685685B9EA721342BA8F094170@AM4PR07MB1716.eurprd07.prod.outlook.com>
From: Benoit Claise <bclaise@cisco.com>
Message-ID: <a894e179-7a8d-4769-b96d-f482e1336873@cisco.com>
Date: Mon, 22 Jan 2018 17:37:44 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2
MIME-Version: 1.0
In-Reply-To: <AM4PR07MB171685685B9EA721342BA8F094170@AM4PR07MB1716.eurprd07.prod.outlook.com>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/Ai69hepU8RFO9NwjdNnuSkdDB2I>
Subject: Re: [netmod] AD review of draft-ietf-netmod-entity-06
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
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, 22 Jan 2018 16:37:50 -0000

Dear all,

Since almost everyone who spoke up in the WG preferred option 2, let's 
go with that one.
Martin, can you please post a new draft version.

This document is on the IESG telechat this Thursday.

Regards, Benoit
> Hi Martin,
>
> We agree with option 2.
>
> Regards, Bart
>
> -----Original Message-----
> From: Martin Bjorklund [mailto:mbj@tail-f.com]
> Sent: Thursday, January 11, 2018 2:47 PM
> To: Bogaert, Bart (Nokia - BE/Antwerp) <bart.bogaert@nokia.com>
> Cc: netmod@ietf.org
> Subject: Re: [netmod] AD review of draft-ietf-netmod-entity-06
>
> Hi,
>
> To summarize this, I think we have three options for the three nodes 'model-name', 'mfg-name', and 'serial-num':
>
>    1.  Do nothing (keep the nodes as config true).
>
>    2.  Make these three nodes config false (fairly simple change).
>        (vendors can augment w/ their own config true nodes).
>
>    3.  Add three new nodes for the configured values.
>
>
> After thinking about this some more, and discussing with Benoit, I think the best path forward is to do 2, i.e., mark the nodes 'model-name', 'mfg-name', and 'serial-num' as "config false".  As such they would not be configurable, and thus contain the detected values.
> If no value is detected, the node is not present.
>
> Note that 1 or 3 can be done in a future update to this module (or by a vendor).
>
>
> /martin
>
>
> Martin Bjorklund <mbj@tail-f.com> wrote:
>> Hi,
>>
>> "Bogaert, Bart (Nokia - BE/Antwerp)" <bart.bogaert@nokia.com> wrote:
>>> Hi,
>>>
>>> --- snip ---
>>>
>>>> state.”, so the above sentence only applies for the second case below.
>>> Ok.
>>>
>>>> 2. The second case is that something is detected but it can’t be read.
>>>> We do not see a reason to use the value configured for the leafs
>>>> ‘serial-num’, ‘mfg-name’ and ‘model-name’ of a matching entry in
>>>> the configuration data.  These leafs are defined as optional so
>>>> why would we report something entered by an operator in the
>>>> operational datastore that intends to report on what is detected?
>>>> Is it not better to not report them at all?  In an NMDA context it
>>>> would be possible to have a different value (or no value at all)
>>>> for certain leafs while there is something in the running/intended datastore.
>>> The normal NMDA procedure for a configuration leaf is to repeat it
>>> in operational state.  This is then the "applied configuration".
>>> I don't think we should have a special rule for these leafs.
>>>
>>> This also means that a client that just wants to read all the serial
>>> numbers can do so from one place, the operational state, regardless
>>> of how they came into existance.
>>>
>>> [Bogaert, Bart ]
>>>
>>> We do understand that a target of NMDA is to read out the actually
>>> applied data in one request.  But the result should not be
>>> confusion. A key word is “applied”.
>>>
>>> Section 5.3 of draft-ietf-netmod-revised-datastores-09 also contains
>>> (I put a part of the section between ***):
>>> The datastore schema for <operational> MUST be a superset of the
>>> combined datastore schema used in all configuration datastores
>>> except that configuration data nodes supported in a configuration
>>> datastore ***MAY be omitted from <operational> if a server is not
>>> able to accurately report them ***.
>> Note that this text talks about the *schema*.  It is intended for
>> servers to migrate to NMDA without having to instrument all config
>> nodes in <operational> immediately.  If you apply this to
>> ietf-hardware, it could be a server that implements the node
>> "serial-num" in config, but not in <operational> (which would be
>> weird).
>>
>>> For example, it is expected that the value of multiple leafs need to
>>> be a consistent set, e.g. the mfg-name, the model-name, and the
>>> serial-num.
>>> Suppose we have a use case in which a hardware component is
>>> planned/configured (e.g. a board supporting DSL interfaces) but a
>>> different one is plugged (e.g. a board supporting ethernet
>>> interfaces).
>>> Suppose it is possible to read some fields on the detected component
>>> but due to an issue not to read other fields.
>>> If in that case the operational datastore will be completed with the
>>> data taken from the running datastore, then the presented view might
>>> be inconsistent.
>> This is true for other similar nodes as well - "asset-id" and "uri".
>>
>>> The question is also: what data is applied? Our assumption: if there
>>> is a mismatch between detected versus configured hardware, then the
>>> interface/service related data that is configured consistently with
>>> the planned hardware is not applied on the mismatching hardware.
>>> I.e. the detected hardware is not brought in service so not
>>> ‘applied’, the operational datastore only (accurately) reports on
>>> what is detected.
>> If there is a mismatch and the server doesn't apply the configured
>> values, then obviously the configured 'mfg-name' etc are not copied to
>> <operational>.
>>
>>> We do not see this as a special rule for this data but rather would
>>> apply a general rule:
>>> -	if there is a ‘missing resource’, then the data is not reported in the
>>>   	operational datastore.
>>> -	If the server is not able to report accurately, then the data is
>>>   	omitted from the operational
>> I think that if you want complete separation between the values of
>> 'mfg-name', 'model-name', and 'serial-num' in configuration and
>> operational state, then these should be modelled as separate leafs.
>> We should have a config false leaf 'serial-num' that only contains the
>> detected value (if found), and a config true leaf 'config-serial-num'
>> or something, that contains the configured serial number.
>>
>> But if this is the case, I wonder if it wouldn't be better to leave
>> such additional config objects to vendors, and simply make these three
>> nodes config false in ietf-hardware.
>>
>>
>> /martin
>>
>>> Regards, Bart
>>>
>>> /martin
>>>
>>>
>>>> Best regards, Bart
>>>>
>>>> -----Original Message-----
>>>> From: netmod [mailto:netmod-bounces@ietf.org] On Behalf Of Robert
>>>> Wilton
>>>> Sent: Thursday, December 21, 2017 4:14 PM
>>>> To: Martin Bjorklund <mbj@tail-f.com>om>; netmod@ietf.org
>>>> Subject: Re: [netmod] AD review of draft-ietf-netmod-entity-06
>>>>
>>>> Hi Martin,
>>>>
>>>>
>>>> On 21/12/2017 11:37, Martin Bjorklund wrote:
>>>>> Hi,
>>>>>
>>>>> I need WG input on this issue.  The question is how to handle
>>>>> 'serial-num', 'mfg-name', and 'model-name'.  I think they should
>>>>> all be treated the same.  Based on previous WG discussion (see
>>>>> e.g. the mail thread "draft-ietf-netmod-entity issue #13"), I
>>>>> think they should all be configurable, but the configured value
>>>>> is only used in operational state if the system cannot read it from the hardware.
>>>> I think that this approach is probably OK:
>>>>    - The client can always see the real value if it is available.
>>>>    - If it is not available then they can assign a value via
>>>> configuration.
>>>>
>>>> I was also considering an alternative approach of having a
>>>> separate set of config false leaves for the "burnt in values".
>>>> And then having the configurable leaves always override the
>>>> default operational values. E.g. similar to how an interface MAC
>>>> address would expect to be handled.
>>>>
>>>> But one set of leaves is probably sufficient.
>>>>
>>>> Thanks,
>>>> Rob
>>>>
>>>>
>>>>> So I suggest the following changes:
>>>>>
>>>>> OLD:
>>>>>
>>>>>         leaf serial-num {
>>>>>           type string;
>>>>>           config false;
>>>>>           description
>>>>>             "The vendor-specific serial number string for the
>>>>>              component.  The preferred value is the serial number
>>>>>              string actually printed on the component itself (if
>>>>>              present).";
>>>>>           reference "RFC 6933: entPhysicalSerialNum";
>>>>>         }
>>>>>
>>>>> NEW:
>>>>>
>>>>>         leaf serial-num {
>>>>>           type string;
>>>>>           description
>>>>>             "The vendor-specific serial number string for the
>>>>>              component.  The preferred value is the serial number
>>>>>              string actually printed on the component itself (if
>>>>>              present).
>>>>>
>>>>>              This leaf can be configured.  There are two use cases for
>>>>>              this; as a 'post-it' note if the server cannot determine
>>>>>              this value from the component, or when pre-provisioning a
>>>>>              component.
>>>>>
>>>>>              If the server can determine the serial number from the
>>>>>              component, then that value is always used in operational
>>>>>              state, even if another value has been configured.";
>>>>>           reference "RFC 6933: entPhysicalSerialNum";
>>>>>         }
>>>>>
>>>>> And corresponding text for 'mfg-name' and 'model-name'.
>>>>>
>>>>> And also:
>>>>>
>>>>> OLD:
>>>>>
>>>>>            When the server detects a new hardware component, it
>>>>>            initializes a list entry in the operational state.
>>>>>
>>>>>            If the server does not support configuration of hardware
>>>>>            components, list entries in the operational state are
>>>>>            initialized with values for all nodes as detected by the
>>>>>            implementation.
>>>>>
>>>>>            Otherwise, the following procedure is followed:
>>>>>
>>>>>              1. If there is an entry in the /hardware/component list in
>>>>>                 the intended configuration with values for the nodes
>>>>>                 'class', 'parent', 'parent-rel-pos' that are equal to
>>>>>                 the detected values, then:
>>>>>
>>>>>              1a. If the configured entry has a value for 'mfg-name'
>>>>>                  that is equal to the detected value, or if the
>>>>>                  'mfg-name' value cannot be detected, then the list
>>>>>                  entry in the operational state is initialized with the
>>>>>                  configured values for all configured nodes, including
>>>>>                  the 'name'.
>>>>>
>>>>>                  Otherwise, the list entry in the operational state is
>>>>>                  initialized with values for all nodes as detected by
>>>>>                  the implementation.  The implementation may raise an
>>>>>                  alarm that informs about the 'mfg-name' mismatch
>>>>>                  condition.  How this is done is outside the scope of
>>>>>                  this document.
>>>>>
>>>>>              1b. Otherwise (i.e., there is no matching configuration
>>>>>                  entry), the list entry in the operational state is
>>>>>                  initialized with values for all nodes as detected by
>>>>>                  the implementation.
>>>>>
>>>>>            If the /hardware/component list in the intended
>>>>>            configuration is modified, then the system MUST behave as if
>>>>>            it re-initializes itself, and follow the procedure in
>>>>> (1).";
>>>>>
>>>>> NEW:
>>>>>
>>>>>            When the server detects a new hardware component, it
>>>>>            initializes a list entry in the operational state.
>>>>>
>>>>>            If the server does not support configuration of hardware
>>>>>            components, list entries in the operational state are
>>>>>            initialized with values for all nodes as detected by the
>>>>>            implementation.
>>>>>
>>>>>            Otherwise, the following procedure is followed:
>>>>>
>>>>>              1. If there is an entry in the /hardware/component list in
>>>>>                 the intended configuration with values for the nodes
>>>>>                 'class', 'parent', 'parent-rel-pos' that are equal to
>>>>>                 the detected values, then the list entry in operational
>>>>>                 state is initialized with the configured values,
>>>>>                 including the 'name'.  The leafs 'serial-num',
>>>>>                 'mfg-name', and 'model-name' are treated specially; see
>>>>>                 their descriptions for details.
>>>>>
>>>>>              2. Otherwise (i.e., there is no matching configuration
>>>>>                 entry), the list entry in the operational state is
>>>>>                 initialized with values for all nodes as detected by
>>>>>                 the implementation.
>>>>>
>>>>>            If the /hardware/component list in the intended
>>>>>            configuration is modified, then the system MUST behave as if
>>>>>            it re-initializes itself, and follow the procedure in
>>>>> (1).";
>>>>>
>>>>>
>>>>>
>>>>> /martin
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Benoit Claise <bclaise@cisco.com> wrote:
>>>>>> On 12/20/2017 4:00 PM, Martin Bjorklund wrote:
>>>>>>> Benoit Claise <bclaise@cisco.com> wrote:
>>>>>>>> Hi Martin,
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>> Only kept the relevant excerpts.
>>>>>>>>>> - Some objects are read-write in RFC6933:
>>>>>>>>>>           entPhysicalSerialNum
>>>>>>>>>>           entPhysicalAlias
>>>>>>>>>>           entPhysicalAssetID
>>>>>>>>>>           entPhysicalUris
>>>>>>>>>>
>>>>>>>>>> For example, entPhysicalSerialNum being read-write always
>>>>>>>>>> bothered me.
>>>>>>>>>> serial-num is now "config false", which is a good news IMO.
>>>>>>>>> Actually, this was not the intention.  In
>>>>>>>>> draft-ietf-netmod-entity-03 this is configurable.  I missed
>>>>>>>>> this in the conversion to NMDA.
>>>>>>>> Ah. So no good news in this case...
>>>>>>>>>> In the reverse direction, entPhysicalMfgName is read-only
>>>>>>>>>> in RFC6933, while it's "config true" in
>>>>>>>>>> draft-ietf-netmod-entity
>>>>>>>>> Yes, this was added per request from the WG.  See e.g. the
>>>>>>>>> thread "draft-ietf-netmod-entity issue #13".
>>>>>>>> Sure. It was mainly an observation.
>>>>>>>>> However, I think that what we have now is probably not correct.
>>>>>>>>> I think that all nodes 'serial-num', 'mfg-name', and 'model-name'
>>>>>>>>> should be config true, and the description of list 'component'
>>>>>>>>> updated to reflect that all these tree leafs are handled the same way.
>>>>>>>>>
>>>>>>>>> I would like to know what the WG thinks about this.
>>>>>>>> Talking as a contributor this time.
>>>>>>>> It seems that inventory management is kind of broken when
>>>>>>>> someone can change 'serial-num', 'mfg-name', and 'model-name.
>>>>>>> They can't really change them.  The configured values are only
>>>>>>> used (i.e. visible in the operational state) if the device
>>>>>>> cannot detect them automatically.  I.e., they work as "post-it" notes only.
>>>>>> If I look at, for example, the mfg-name, description, this is
>>>>>> not what it says.
>>>>>>
>>>>>>      leaf mfg-name {
>>>>>>              type string;
>>>>>>              description
>>>>>>                "The name of the manufacturer of this physical component.
>>>>>>                 The preferred value is the manufacturer name string
>>>>>>                 actually printed on the component itself (if present).
>>>>>>
>>>>>>                 Note that comparisons between instances of the model-name,
>>>>>>                 firmware-rev, software-rev, and the serial-num nodes are
>>>>>>                 only meaningful amongst component with the same value of
>>>>>>                 mfg-name.
>>>>>>
>>>>>>                 If the manufacturer name string associated with the
>>>>>>                 physical component is unknown to the server, then this
>>>>>>                 node is not instantiated.";
>>>>>>              reference "RFC 6933 <https://tools.ietf.org/html/rfc6933>:
>>>>>>              entPhysicalMfgName";
>>>>>>
>>>>>> Regards, Benoit
>>>>>>
>>>>>>> /martin
>>>>>>> .
>>>>>>>
>>>>> _______________________________________________
>>>>> netmod mailing list
>>>>> netmod@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/netmod
>>>>> .
>>>>>
>>>> _______________________________________________
>>>> netmod mailing list
>>>> netmod@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/netmod
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod