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

Dan Romascanu <dromasca@gmail.com> Thu, 11 January 2018 14:01 UTC

Return-Path: <dromasca@gmail.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 DFAB212EB59 for <netmod@ietfa.amsl.com>; Thu, 11 Jan 2018 06:01:57 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 zblb6Qiaa8Wz for <netmod@ietfa.amsl.com>; Thu, 11 Jan 2018 06:01:53 -0800 (PST)
Received: from mail-qt0-x233.google.com (mail-qt0-x233.google.com [IPv6:2607:f8b0:400d:c0d::233]) (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 C52D612EB5E for <netmod@ietf.org>; Thu, 11 Jan 2018 06:01:52 -0800 (PST)
Received: by mail-qt0-x233.google.com with SMTP id u42so1869858qte.7 for <netmod@ietf.org>; Thu, 11 Jan 2018 06:01:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=w6QQkyw4nncwA4al5aFQoo49kmDWGFp+cwKMsXQqRBI=; b=QKB+GD04oKlEoatYNFRiSEAj+m1iQtFdmZWDxE8zud3xTqIi3wwT7vWgUhQnAbfrBk Dxx580XclRMjUuXdYomms5yCxUDwcR0/LeJl6vdsKqvJBKh03NuFQCHZO0FfNryX23jb qvg7WkQTPGY4+F49h7piMbis7IFyI8KRiS879l5OkA/X+OlmwM3/ySYTZO1ORx0joI05 o7XSEwPaQm4P5hWaVxePcWiyxFMvaLCxhidFtfeBKnbBZIAPAT7kyafwftjd19UA/TEL FLZn0xXuhhpbvyHBWVz1KyDLpMHopFayeJeKrJAGtqPGjV7DESsyNP0vcbVX2pdwqHck g0Jw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=w6QQkyw4nncwA4al5aFQoo49kmDWGFp+cwKMsXQqRBI=; b=k8gdLmYGguezN9tKImSD6Qz+gbSRWBedWpioP7OsbDvS006SNvF5wd5Y7pLNB5kN/Z qp0J8LxT7nUyIKb0Rs73DM+GRzibaFZdZcEU5yQniTvP5xaCktfj+8zlp7TfLoyz5i04 D6KI/3IcKEa0aBi+X2S8skGYCMj+ar4wcKq0aF/iLDxPZgXeptVzYL/v2Ik1f4ZsAq7M M7kixZU00pTXVujsaFn5tELPvVLfJb4wBq1OO0Cwy185koOpLwra2QQ8chumvKTbe0wV PvZadebtswtgMAt9MXkKZPMhCQbewl54TQI6eyM1ROW9mBGzxbyJCsPFAusv2LCzP+VD +Y+w==
X-Gm-Message-State: AKwxytcx7pYl30s7a565wLMZ1SGF0OSkCYfVwCfPKzohCWNpKv7DduJh INznhWzG4Exmo++b1NhG0U/p+9nDmlPHvW4kX9o=
X-Google-Smtp-Source: ACJfBovHnOniC6w4kcNUV4+hRJHiijo9T1VTNK/F+WBwq8/sMaFbNMsi277yfc7jqBFKZEuPJD4LofXJeT8w0YANvXc=
X-Received: by 10.200.4.38 with SMTP id v38mr29822598qtg.69.1515679311799; Thu, 11 Jan 2018 06:01:51 -0800 (PST)
MIME-Version: 1.0
Received: by 10.140.106.166 with HTTP; Thu, 11 Jan 2018 06:01:51 -0800 (PST)
In-Reply-To: <1b602a53-86ac-d4ee-690c-6fa6cbfa25cc@cisco.com>
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> <1b602a53-86ac-d4ee-690c-6fa6cbfa25cc@cisco.com>
From: Dan Romascanu <dromasca@gmail.com>
Date: Thu, 11 Jan 2018 16:01:51 +0200
Message-ID: <CAFgnS4UOzLooEPeE+umEuUkVe2mOskRhFBavVG49JDb7p9OpBA@mail.gmail.com>
To: Benoit Claise <bclaise@cisco.com>
Cc: Martin Bjorklund <mbj@tail-f.com>, "Bogaert, Bart (Nokia - BE)" <bart.bogaert@nokia.com>, NetMod WG <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="f40304353634f930dc0562809656"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/hmjp8hnKs-FetXKs4J2Fet70wEU>
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: Thu, 11 Jan 2018 14:01:58 -0000

Solution 2 seems fine to me at this stage.

Regards,

Dan


On Thu, Jan 11, 2018 at 3:57 PM, Benoit Claise <bclaise@cisco.com> wrote:

> Dear all,
>
> draft-ietf-netmod-entity is the IESG telechat today.
> In light of this discussion below, which I consider part of the IETF LC,
> I'll be deferring the document to the next IESG telechat in two weeks.
> You have a few days to provide feedback on this propose solution 2.
>
> Regards, Benoit (OPS AD).
>
> 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>; 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/r
>>>>>>> fc6933>:
>>>>>>>              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
>>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>