Re: [netmod] draft-ietf-tictoc-1588v2-yang-05 - Concern over port identifier

Robert Wilton <rwilton@cisco.com> Fri, 29 September 2017 09:38 UTC

Return-Path: <rwilton@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 D8D5E126D0C; Fri, 29 Sep 2017 02:38:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.501
X-Spam-Level:
X-Spam-Status: No, score=-14.501 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, 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 iPpOq2aUpCJ3; Fri, 29 Sep 2017 02:38:34 -0700 (PDT)
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 7CF141241F3; Fri, 29 Sep 2017 02:38:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=21365; q=dns/txt; s=iport; t=1506677911; x=1507887511; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=KH5D4r0/btgiUu5JIoBkFxM1Z9YA9aB/dHqJQ9OD43E=; b=O0agoR8Keq4ZZ8zME9WEN/5fOGFbQeE7AdHeCNwHewD1D2IyLzZaG+zS X63udNfUyJkzF2AXeptcUQFVyyGXmTqNHBg7TAuKIbq/ecsxQtjHf+ISq mqI4NSXHXMSbnqF70sBZXkoKaBSHD7ePitonbI0psa+pOfZB4qlmdCVQi c=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CPAQD6E85Z/xbLJq1VCRkBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYRAbieDeIsTkEAiljmCBAoYC4FegmtPAoRtFAECAQEBAQEBAWs?= =?us-ascii?q?ohRgBAQEBAwEBIQQLAQUzAwsMBAsRAQMBAQECAiMDAgInHwMGCAYBDAYCAQGKL?= =?us-ascii?q?RCnLIFtOotEAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAWBDoIfg1OBaisLgWWBDYM?= =?us-ascii?q?ygRoFAQgKAQcYLIJngmAFoSyHXoNeiSiCFIVug1okhweNdYdZgTk2IYEDCzIhC?= =?us-ascii?q?B0VSYUaHIFoPzYBAYYEgjQBAQE?=
X-IronPort-AV: E=Sophos;i="5.42,452,1500940800"; d="scan'208";a="657906968"
Received: from aer-iport-nat.cisco.com (HELO aer-core-4.cisco.com) ([173.38.203.22]) by aer-iport-4.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Sep 2017 09:38:26 +0000
Received: from [10.63.23.161] (dhcp-ensft1-uk-vla370-10-63-23-161.cisco.com [10.63.23.161]) by aer-core-4.cisco.com (8.14.5/8.14.5) with ESMTP id v8T9cQNt003440; Fri, 29 Sep 2017 09:38:26 GMT
To: Jiangyuanlong <jiangyuanlong@huawei.com>, Martin Bjorklund <mbj@tail-f.com>
Cc: "sean.condon@microsemi.com" <sean.condon@microsemi.com>, "tictoc@ietf.org" <tictoc@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
References: <3B0A1BED22CAD649A1B3E97BE5DDD68BBB5C9C01@dggeml507-mbx.china.huawei.com> <640F4C69F839A64C8949EF04FAAEE44679F25561@avsrvexchmbx1.microsemi.net> <3B0A1BED22CAD649A1B3E97BE5DDD68BBB5CB62E@dggeml507-mbx.china.huawei.com> <20170928.152312.261607006753399632.mbj@tail-f.com> <3B0A1BED22CAD649A1B3E97BE5DDD68BBB5CC14E@dggeml507-mbx.china.huawei.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <ff87d495-6bed-e97b-2521-670e1cf6aa53@cisco.com>
Date: Fri, 29 Sep 2017 10:38:26 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0
MIME-Version: 1.0
In-Reply-To: <3B0A1BED22CAD649A1B3E97BE5DDD68BBB5CC14E@dggeml507-mbx.china.huawei.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/pumLSnfbZWOnIiQ2PK1QGtWftuM>
Subject: Re: [netmod] draft-ietf-tictoc-1588v2-yang-05 - Concern over port identifier
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: Fri, 29 Sep 2017 09:38:38 -0000

Hi Yuanlong,

I agree with Martin, having a single key is a better data model.

Duplicating the port-number in the data model just makes it that little 
bit more annoying to use.

I think that Information models are often modeled using UML, which I'm 
not particularly familiar with, but seems to follow object orientated 
principles.

YANG is not object-orientated, instead seems to more closely resemble a 
document based "mixin" architecture.

Because of this difference, I think that there will naturally be 
differences between how something in best modeled in UML vs how it is 
best modeled in YANG.

For me, having the YANG model as simple, consistent, and as easy to 
understand as possible is more important that a very close mapping to a 
related information model.  So, in summary, my suggestion is to allow 
these models to diverge where necessary.

Thanks,
Rob


On 29/09/2017 10:22, Jiangyuanlong wrote:
> Martin,
>
> Thank a lot for your instantly reply. Please see my further comments inline.
>
> Cheers,
> Yuanlong
>
> -----Original Message-----
> From: Martin Bjorklund [mailto:mbj@tail-f.com]
> Sent: Thursday, September 28, 2017 9:23 PM
> To: Jiangyuanlong
> Cc: sean.condon@microsemi.com; netmod@ietf.org; tictoc@ietf.org
> Subject: Re: [netmod] draft-ietf-tictoc-1588v2-yang-05 - Concern over port identifier
>
> Jiangyuanlong <jiangyuanlong@huawei.com> wrote:
>> Sean,
>>
>> My personal opinion is that it can work, but I would like to ask for
>> more opinions from our netmod experts;)
>>
>> Hi netmod experts,
>> Considering the following sample module, my-list is a list, and it
>> needs to use a leaf member "port-number" in my-port-container as a
>> key.
>> We now have 3 options:
>> 1.
>>    list my-list {
>>      key "port-number";
>>      leaf port-number {
>>         type uint16;
>>      }
>>
>>      container my-port-container {
>>          leaf port-number {
>>            type uint16;
>>          }
>>           leaf other-leaf {
>>             ...
>>           }
>>      }
>>    }
>> But this does not work for there is compiling error.
> Why wouldn't this work?
> [JY] The original intention of the 1588 info model is to use my-port-container.port-number as the key. The code actually parses, but we need to synchronize my-list.port-number and my-list.my-port-container.port-number all the while.
>
> I suspect you meant:
>
>     list my-list {
>       key "port-number";
>   
>       container my-port-container {
>           leaf port-number {
>            type uint16;
>           }
>            leaf other-leaf {
>              ...
>            }
>       }
>     }
>
>
>> 2.
>>    list my-list {
>>      key "port-number";
>>      leaf port-number {
>>         type uint16;
>>      }
>>      container my-port-container {
>>          leaf port-number {
>>              type leafref{
>>                path "../../port-number";
>>              }
>>          }
>>           leaf other-leaf {
>>             ...
>>           }
>>      }
>>    }
>> Option 2 can parse, though leafref in a sub-module seems not very
>> natural.
>>
>> 3.
>>    list my-list {
>>      key "port-number";
>>      leaf port-number {
>>         type leafref{
>>            path "../my-port-container/port-number";
>>         }
>>      }
>>      container my-port-container {
>>          leaf port-number {
>>            type uint16;
>>          }
>>           leaf other-leaf {
>>             ...
>>           }
>>      }
>>    }
>>
>> Option 3 can also parse, though leafref seems not a very natural key.
>> What is your favorite option? Or do you have any better schemes?
>
> Having a leafref like in option 2 or 3 is just redundant and a hassle for the client.  In order to create a a list entry, the client would have to first provide the port-number value once for the key, and then again the exact same value in the container:
>
>    <my-list>
>      <port-number>25</port-number>
>      <my-port-container>
>        <port-number>25</port-number>
>        <other-leaf>...</other-leaf>
>      </my-port-container>
>    </my-list>
>
> Note that both "port-number" MUST be given the exact same value by the client.
>
> In YANG, key leafs cannot be nested under containers.  I would simply have the key on the top of the list, and not in the container.
>
> (It seems this is what others have proposed as well in this thread.)
>
> [JY] Yes, I agree that this model is not very elegant, but the info model was published in IEEE 1588 already, people have been used to this info model for a long time and we would like to stick to it as far as we can.
> As an alternative, option 2 can be enhanced:
>     list my-list {
>       key "port-number";
>       leaf port-number {
>          type uint16;
>       }
>       container my-port-container {
>           leaf port-number {
>               type leafref{
>                 path "../../port-number";
>               }
>               config false;
>           }
>           leaf other-leaf {
>             ...
>         }
>       }
>     }
>
> In this way, the "config false" makes the leafref read-only, so that configuration doesn't need to write twice. How do you think about this scheme?
> Thanks again,
> Yuanlong
>
>
> /martin
>
>
>
>
>
>> Your opinions are very important for our revision of this draft.
>>
>> Thanks,
>> Yuanlong
>>
>>
>> From: Sean Condon [mailto:sean.condon@microsemi.com]
>> Sent: Wednesday, September 27, 2017 7:11 PM
>> To: Jiangyuanlong
>> Cc: tictoc@ietf.org; Rodney Cummings
>> Subject: RE: draft-ietf-tictoc-1588v2-yang-05 - Concern over port
>> identifier
>>
>> Thanks guys for your responses.
>>
>> I accept your points to keep the structure as aligned to the IEEE 1588
>> standard as possible.
>>
>> One alternate suggestion that I would make, is that the port-number
>> currently defined as leafref should be made the real attribute (i.e.
>> uint16) and that the port-number inside port-identity container should
>> be made in to the leaf ref (and set to mandatory true).
>>
>> The reason I say this is that
>>
>>    1.  XML models are usually navigated and constructed root-to-leaf, and
>>    the way it's portrayed at the moment is that port-number leafref
>>    points to something that may not exist at the time it is being
>>    defined. This makes it difficult to implement.
>>    2.  Also port-identity/port-number is not "mandatory true" meaning
>>    that it could be left out altogether. It's not valid for it to have a
>>    default value either since every item in the list will need a
>>    different identifier.
>>
>> With this suggestion the structure you require with port-identity
>> still exists, but now the implementation is more straightforward, and
>> the change will be transparent to an end user.
>>
>>
>> Best regards, Sean
>> =======================
>> Sean Condon
>> System & Software Architect
>> Frequency & Timing Division
>> Microsemi Inc.
>> sean.condon@microsemi.com<mailto:sean.condon@microsemi.com>
>>
>> ________________________________
>> From: Jiangyuanlong [jiangyuanlong@huawei.com]
>> Sent: 27 September 2017 08:05
>> To: Sean Condon
>> Cc: tictoc@ietf.org<mailto:tictoc@ietf.org>; Rodney Cummings
>> Subject: RE: draft-ietf-tictoc-1588v2-yang-05 - Concern over port
>> identifier EXTERNAL EMAIL
>>
>> Dear Sean,
>>
>>
>>
>> Thank you a lot for diving into the technical details of this module.
>> Just as Rodney said, it is a challenge of 1588 info model to YANG, and
>> we use the leafref of YANG to work around it.
>>
>> I would like to provide a little more backgrounds on the tradeoff:
>>
>>
>>
>> 1. It says in Sec. 7.5.2.1 in IEEE 1588-2008: portIdentity is a member
>> of the portDS data set. A portIdentity consists of two attributes, as
>>
>> follows:
>>
>> ⎯ portIdentity.clockIdentity
>>
>> ⎯ portIdentity.portNumber
>>
>> Furthermore, the "portDS.portIdentity" attribute is mentioned quite a
>> few times in 1588-2008, especially in Table 17 and under Table 61,
>> with a hint that assignment and comparison can be done on this member
>> directly, thus it seems to me portIdentity is an important and well
>> understood construct in the 1588 specification.
>>
>>
>>
>> 2. If we change portDS.portIdentity from a container to a grouping,
>> then there is no portIdentity for portDS and transparentclockPortDS in
>> the resulting tree diagram:
>>
>>
>>
>> module: ietf-ptp-dataset
>>
>>      +--rw instance-list* [instance-number]
>>
>>      |  +--rw instance-number       uint16
>>
>>      |  +--rw default-ds
>>
>>      |  |  +--rw two-step-flag?    boolean
>>
>>      |  |  +--rw clock-identity?   clock-identity-type
>>
>>      |  |  +--rw number-ports?     uint16
>>
>>      |  |  +--rw clock-quality
>>
>>      |  |  |  +--rw clock-class?                  uint8
>>
>>      |  |  |  +--rw clock-accuracy?               uint8
>>
>>      |  |  |  +--rw offset-scaled-log-variance?   uint16
>>
>>      |  |  +--rw priority1?        uint8
>>
>>      |  |  +--rw priority2?        uint8
>>
>>      |  |  +--rw domain-number?    uint8
>>
>>      |  |  +--rw slave-only?       boolean
>>
>>      |  +--rw current-ds
>>
>>      |  |  +--rw steps-removed?        uint16
>>
>>      |  |  +--rw offset-from-master?   time-interval-type
>>
>>      |  |  +--rw mean-path-delay?      time-interval-type
>>
>>      |  +--rw parent-ds
>>
>>      |  |  +--rw parent-port-identity
>>
>>      |  |  |  +--rw clock-identity?   clock-identity-type
>>
>>      |  |  |  +--rw port-number?      uint16
>>
>>      |  |  +--rw parent-stats?                                 boolean
>>
>>      |  |  +--rw observed-parent-offset-scaled-log-variance?   uint16
>>
>>      |  |  +--rw observed-parent-clock-phase-change-rate?      int32
>>
>>      |  |  +--rw grandmaster-identity?                         binary
>>
>>      |  |  +--rw grandmaster-clock-quality
>>
>>      |  |  |  +--rw clock-class?                  uint8
>>
>>      |  |  |  +--rw clock-accuracy?               uint8
>>
>>      |  |  |  +--rw offset-scaled-log-variance?   uint16
>>
>>      |  |  +--rw grandmaster-priority1?                        uint8
>>
>>      |  |  +--rw grandmaster-priority2?                        uint8
>>
>>      |  +--rw time-properties-ds
>>
>>      |  |  +--rw current-utc-offset-valid?   boolean
>>
>>      |  |  +--rw current-utc-offset?         int16
>>
>>      |  |  +--rw leap59?                     boolean
>>
>>      |  |  +--rw leap61?                     boolean
>>
>>      |  |  +--rw time-traceable?             boolean
>>
>>      |  |  +--rw frequency-traceable?        boolean
>>
>>      |  |  +--rw ptp-timescale?              boolean
>>
>>      |  |  +--rw time-source?                uint8
>>
>>      |  +--rw port-ds-list* [port-number]
>>
>>      |     +--rw clock-identity?                clock-identity-type
>>
>>      |     +--rw port-number                    uint16
>>
>>      |     +--rw port-state?                    port-state-enumeration
>>
>>      |     +--rw underlying-interface?          if:interface-ref
>>
>>      |     +--rw log-min-delay-req-interval?    int8
>>
>>      |     +--rw peer-mean-path-delay?          time-interval-type
>>
>>      |     +--rw log-announce-interval?         int8
>>
>>      |     +--rw announce-receipt-timeout?      uint8
>>
>>      |     +--rw log-sync-interval?             int8
>>
>>      |     +--rw delay-mechanism?               delay-mechanism-enumeration
>>
>>      |     +--rw log-min-pdelay-req-interval?   int8
>>
>>      |     +--rw version-number?                uint8
>>
>>      +--rw transparent-clock-default-ds
>>
>>      |  +--rw clock-identity?    clock-identity-type
>>
>>      |  +--rw number-ports?      uint16
>>
>>      |  +--rw delay-mechanism?   delay-mechanism-enumeration
>>
>>      |  +--rw primary-domain?    uint8
>>
>>      +--rw transparent-clock-port-ds-list* [port-number]
>>
>>         +--rw clock-identity?                clock-identity-type
>>
>>         +--rw port-number                    uint16
>>
>>         +--rw log-min-pdelay-req-interval?   int8
>>
>>         +--rw faulty-flag?                   boolean
>>
>>         +--rw peer-mean-path-delay?          time-interval-type
>>
>>
>>
>> In contrast to the original 1588 YANG tree diagram:
>>
>>     module: ietf-ptp-dataset
>>
>>         +--rw instance-list* [instance-number]
>>
>>         |  +--rw instance-number      uint16
>>
>>         |  +--rw default-ds
>>
>>         |  |  +--rw two-step-flag?    boolean
>>
>>         |  |  +--rw clock-identity?   clock-identity-type
>>
>>         |  |  +--rw number-ports?     uint16
>>
>>         |  |  +--rw clock-quality
>>
>>         |  |  |  +--rw clock-class?                  uint8
>>
>>         |  |  |  +--rw clock-accuracy?               uint8
>>
>>         |  |  |  +--rw offset-scaled-log-variance?   uint16
>>
>>         |  |  +--rw priority1?        uint8
>>
>>         |  |  +--rw priority2?        uint8
>>
>>         |  |  +--rw domain-number?    uint8
>>
>>         |  |  +--rw slave-only?       boolean
>>
>>         |  +--rw current-ds
>>
>>         |  |  +--rw steps-removed?       uint16
>>
>>         |  |  +--rw offset-from-master?  time-interval-type
>>
>>         |  |  +--rw mean-path-delay?     time-interval-type
>>
>>         |  +--rw parent-ds
>>
>>         |  |  +--rw parent-port-identity
>>
>>         |  |  |  +--rw clock-identity?   clock-identity-type
>>
>>         |  |  |  +--rw port-number?      uint16
>>
>>         |  |  +--rw parent-stats?        boolean
>>
>>         |  |  +--rw observed-parent-offset-scaled-log-variance? uint16
>>
>>         |  |  +--rw observed-parent-clock-phase-change-rate?    int32
>>
>>         |  |  +--rw grandmaster-identity?                       binary
>>
>>         |  |  +--rw grandmaster-clock-quality
>>
>>         |  |  |  +--rw clock-class?                  uint8
>>
>>         |  |  |  +--rw clock-accuracy?               uint8
>>
>>         |  |  |  +--rw offset-scaled-log-variance?   uint16
>>
>>         |  |  +--rw grandmaster-priority1?           uint8
>>
>>         |  |  +--rw grandmaster-priority2?           uint8
>>
>>         |  +--rw time-properties-ds
>>
>>         |  |  +--rw current-utc-offset-valid?   boolean
>>
>>         |  |  +--rw current-utc-offset?         int16
>>
>>         |  |  +--rw leap59?                     boolean
>>
>>         |  |  +--rw leap61?                     boolean
>>
>>         |  |  +--rw time-traceable?             boolean
>>
>>         |  |  +--rw frequency-traceable?        boolean
>>
>>         |  |  +--rw ptp-timescale?              boolean
>>
>>         |  |  +--rw time-source?                uint8
>>
>>         |  +--rw port-ds-list* [port-number]
>>
>>         |     +--rw port-number        -> ../port-identity/port-number
>>
>>         |     +--rw port-identity
>>
>>         |     |  +--rw clock-identity?   clock-identity-type
>>
>>         |     |  +--rw port-number?      uint16
>>
>>         |     +--rw port-state?          port-state-enumeration
>>
>>         |     +--rw underlying-interface? if:interface-ref
>>
>>         |     +--rw log-min-delay-req-interval?    int8
>>
>>         |     +--rw peer-mean-path-delay?          time-interval-type
>>
>>         |     +--rw log-announce-interval?         int8
>>
>>         |     +--rw announce-receipt-timeout?      uint8
>>
>>         |     +--rw log-sync-interval?             int8
>>
>>         |     +--rw delay-mechanism?     delay-mechanism-enumeration
>>
>>         |     +--rw log-min-pdelay-req-interval?   int8
>>
>>         |     +--rw version-number?                uint8
>>
>>         +--rw transparent-clock-default-ds
>>
>>         |  +--rw clock-identity?    clock-identity-type
>>
>>         |  +--rw number-ports?      uint16
>>
>>         |  +--rw delay-mechanism?   delay-mechanism-enumeration
>>
>>         |  +--rw primary-domain?    uint8
>>
>>         +--rw transparent-clock-port-ds-list* [port-number]
>>
>>            +--rw port-number           -> ../port-identity/port-number
>>
>>            +--rw port-identity
>>
>>            |  +--rw clock-identity?   clock-identity-type
>>
>>            |  +--rw port-number?      uint16
>>
>>            +--rw log-min-pdelay-req-interval?   int8
>>
>>            +--rw faulty-flag?                   boolean
>>
>>            +--rw peer-mean-path-delay?         time-interval-type
>>
>>
>>
>> I agree, assignment and comparison can still be done on clock-identity
>> and port-number directly (without a portIdentity construct) . But
>> people who are familiar with 1588-2008 may question where portIdentity
>> is gone.
>>
>>
>>
>> 3. I think leafref is a very general semantics thing in YANG language,
>> if any tools have problem with this feature, maybe we need to contact
>> with the tool’s developer to support it.
>>
>>
>>
>> Finally, more inputs from the WG are welcome.
>>
>>
>>
>> Thanks again,
>>
>> Yuanlong
>>
>>
>>
>>
>>
>> -----Original Message-----
>> From: TICTOC [mailto:tictoc-bounces@ietf.org] On Behalf Of Rodney
>> Cummings
>> Sent: Wednesday, September 27, 2017 1:24 AM
>> To: tictoc@ietf.org<mailto:tictoc@ietf.org>
>> Subject: Re: [TICTOC] draft-ietf-tictoc-1588v2-yang-05 - Concern over
>> port identifier
>>
>>
>>
>> Thanks Sean,
>>
>>
>>
>> Regarding your other comment on TLD... I agree.
>>
>>
>>
>> Regarding the comment below on port-identity, I agree that we need to
>> do it for practical reasons.
>>
>>
>>
>> In 1588-2008, there is a distinct dataset member for
>> portDS.portIdentity, which 5.3.5 specifies as using type PortIdentity:
>>
>>    struct PortIdentity {
>>
>>      ClockIdentity clockIdentity;
>>
>>      UInteger portNumber;
>>
>>    }
>>
>>
>>
>> If we interpret the 1588-2008 datasets as an information model, and
>> apply that as directly as possible to a YANG data model,
>> portDS.portIdentity is a container, which is what we have so far. That
>> introduces a challenge, because we want to use
>> portDS.portIdentity.portNumber as the key to the list of portDS's. We
>> solved that challenge with a leafref, but I'd agree that is ugly.
>>
>>
>>
>> Your proposal changes portDS.portIdentity from a container to a
>> grouping, so that it portDS.portIdentity.portNumber can be used as the
>> key without a leafref.
>>
>>
>>
>> The downside is that if/when a YANG management client tries to "get"
>> portDS.portIdentity, it doesn't work... there is no portIdentity to
>> get.
>>
>>
>>
>> Personally, I think that downside is worth it. One can argue that your
>> proposal still conforms to the 1588-2008 information model for
>> management, in that portDS.portIdentity still "exists" in a manner
>> that makes sense for YANG.
>>
>>
>>
>> Rodney
>>
>>
>>
>>
>>
>>
>>
>> From: TICTOC [mailto:tictoc-bounces@ietf.org] On Behalf Of Sean Condon
>>
>> Sent: Tuesday, September 26, 2017 10:38 AM
>>
>> To: tictoc@ietf.org<mailto:tictoc@ietf.org>
>>
>> Subject: [TICTOC] draft-ietf-tictoc-1588v2-yang-05 - Concern over port
>> identifier
>>
>>
>>
>> With reference to "YANG Data Model for IEEE 1588v2"
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__tools.ietf.org_ht
>> ml_draft-2Dietf-2Dtictoc-2D1588v2-2Dyang-2D05&d=DwMFAw&c=I_0YwoKy7z5LM
>> TVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=WA71sf2o7Dw7CbYhFt24DPjt3lJuupswWYdnb
>> oKbZ8k&m=jKHczVNLN-KuV2HRZkbEZY1SzlCD_AztkaWSccrqBI8&s=msh7A7_OgHZ1l65
>> Dn6_LhiDIXkXpFeiLGmKbKxsqXWw&e=
>>
>>
>>
>> I have a concern about the structure of the YANG, and how the lists
>> port-ds-list and transparent-clock-port-ds-list are indexed with a
>> leaf which is a leafref.
>>
>>
>>
>> The structure seems unnecessarily complex - port-number is represented
>> as a leaf directly beneath the list (to be used as key) and again
>> under the port-identity container. It is structured in a way that I
>> believe would make it difficult to work with some YANG tools in the
>> market.
>>
>>
>>
>> The purpose of port-identity container is not clear from the document
>> - it would achieve the same purpose if it was left out of
>> port-ds-entry and transparent-clock-port-ds-entry and instead the
>> grouping port-identity-grouping included directly.
>>
>>
>>
>> See the attached files as original, a modified version and as a patch
>> file.
>>
>>
>>
>> Sean Condon
>>
>> =======================
>>
>> Sean Condon
>>
>> System & Software Architect
>>
>> Frequency & Timing Division
>>
>> Microsemi Inc.
>>
>> mailto:sean.condon@microsemi.com
>>
>>
>>
>> _______________________________________________
>>
>> TICTOC mailing list
>>
>> TICTOC@ietf.org<mailto:TICTOC@ietf.org>
>>
>> https://www.ietf.org/mailman/listinfo/tictoc
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod