Re: [Rift] RIFT YANG datamodel implementation

Tony Przygienda <tonysietf@gmail.com> Sat, 08 May 2021 14:30 UTC

Return-Path: <tonysietf@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 158AD3A19A1 for <rift@ietfa.amsl.com>; Sat, 8 May 2021 07:30:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, 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 I-kARAQR43eS for <rift@ietfa.amsl.com>; Sat, 8 May 2021 07:29:59 -0700 (PDT)
Received: from mail-io1-xd2a.google.com (mail-io1-xd2a.google.com [IPv6:2607:f8b0:4864:20::d2a]) (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 4899D3A199E for <rift@ietf.org>; Sat, 8 May 2021 07:29:59 -0700 (PDT)
Received: by mail-io1-xd2a.google.com with SMTP id p8so10627256iol.11 for <rift@ietf.org>; Sat, 08 May 2021 07:29:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=M1QH2HxErbvemxOKyryHFwV/WlSQj14xyjozHpWJo4g=; b=G7N7Jt08EqMnVlH5X6jSJCYfpghO9hGwVuPe5VF+G8LqhCcAK76j9zFPitXmjUrBtg cxOUWVSttabdkGu3oylFe32Y5Ng8nUJkE1CmeXyNCmYQBLaZGUrBCI1s9TVWbBxYQKmM eaoQMSKwiZ1n60lkjCXIlhammN77PIOdKudxtzWKWbFehfDu1Qi+PohvCn7MuuYQz5gE X8gWgx2/egAFi4gxu/nAsJcCV7gSiZsudZ3GwJG1GXXd2D1bkwJStSmPswD4g0qJ1cyR WBMGXoIf0T7RIm3TYKZnsrm96aUssCMxkprQisrSmDIP6tVOY8MY2NLK7hKRJqhsfGG1 /VTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=M1QH2HxErbvemxOKyryHFwV/WlSQj14xyjozHpWJo4g=; b=IZeHsROL4CtZ2QZITa6g7gRVLhtur8GifBY9rfg1UDL4WJEk1bckQLTcrDXAXniUcJ oax6/y39Uty2P+8C8FUMEA2gTuDGbzLx7IZxuhIAUGoXObtxkuAsuv04Syfm3z4yG9OX CzikJoPABiKJSTicJey78ubjavNZbSachGARg11gJaNtYxn97e6f8oRsD6k1xXtR8DsY n0lXleMBFiF0OiBn76tXWnAoih2z7C35LWzRcyfiuQdUngTt6Np8fG9qTOojlmDHoAeM sMaBoicxWCDfF1VVk/sWUZbCQz4EUp9JU589txmUlO6AKqzZioUrCd9A0aWokaqiXZDj wkBQ==
X-Gm-Message-State: AOAM532kXWiT+V3eZDbuAArNPOZO06NfXBEhHjJGulZjSmzxOf+uFwaQ DWES4hVpEjk1VqXEzXWYos4WqrDrE8Qyi4M0QPE=
X-Google-Smtp-Source: ABdhPJz5tR4S15yBfnWlh1fzWd+zq3TiWubNiSKfr9PVcaQXS+CygYM0/qSr2cM7+Ym2yn6jC98VgQadt2isuzzJoM8=
X-Received: by 2002:a02:c912:: with SMTP id t18mr13521322jao.100.1620484197659; Sat, 08 May 2021 07:29:57 -0700 (PDT)
MIME-Version: 1.0
References: <CA+wi2hMktdYNzPmzn_znxhDMa4Kwj9xsa2jBHQTpe=cyPx6YsA@mail.gmail.com> <202105081657319651159@zte.com.cn>
In-Reply-To: <202105081657319651159@zte.com.cn>
From: Tony Przygienda <tonysietf@gmail.com>
Date: Sat, 08 May 2021 16:29:21 +0200
Message-ID: <CA+wi2hNj0Am+i87h-UPHG-PFhWS54C7G7RbO1Q-P=Zeq_a05ig@mail.gmail.com>
To: "zhang.zheng" <zhang.zheng@zte.com.cn>
Cc: rift@ietf.org, Bruno Rijsman <brunorijsman@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000f73baf05c1d260f7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/KVS12IXUDDstrOmnBfo3G3TD-5w>
Subject: Re: [Rift] RIFT YANG datamodel implementation
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 08 May 2021 14:30:04 -0000

hey

On Sat, May 8, 2021 at 10:57 AM <zhang.zheng@zte.com.cn> wrote:

> Hi Tony,
>
> Thank you very much for your comments!
>
> I'd like to do the changes below, please review:
>
>    1.
>
>    About 'hierarchy-indications' and 'configured-level',I'd like to
>    change the 'hierarchy-indications' to be read-write in RIFT instance,
>    and it remains read-only in database. And add the following description for
>    the "configured-level": If the 'hierarchy-indications' is set to 'leaf-only'
>    or 'leaf-only-and-leaf-2-leaf-procedures', this value means the minimum
>    value of leaf level. And the combination of this value and
>    'hierarchy-indications' can also be used to indicate the maximum level
>    value of 'top-of-fabric-level'.
>
>
not " minimum value of leaf level.", just "leaf level", same for ToF


>
>    1.
>
>    About 'overload', the leaf 'overload' is changed to container
>    'overload', except the configurable boolean value, time-out and associated
>    timeout value are added.
>
>
ack


>
>    1.
>
>    2.
>
>    About 'lifetime-dalta', a leaf for 'adjusted-lifetime' are added.
>
> ack


>
>    1.
>
>    The name of holdtime is changed to 'global-holdtime'.
>
>
ack


>
>    1.
>
>    About the security key id, it is changed to key-chain referenced to
>    RFC8177, and security-checking enum is added.
>
>
ack


>    1.
>
>    The 'hal' is changed to 'node-hal', and the system-id list of offered
>    nodes is added.
>
>
I didn't mean call it "node-hal", I meant call the node itself and
containing the list  "hal"


>
>    1.
>
>    The 'address-family' is added to 'link-id-pair'.
>
>
ack


>    1.
>
>    The database is changed according to the items order, and the several
>    types of prefix are expanded to be shown directly.
>
> Should I update the draft to make these changes more clear?
>

please


> Best regards,
>
> Sandy
>
>
> <http://www.zte.com.cn/>
>
>
> <http://www.zte.com.cn/>
> 原始邮件
> *发件人:*TonyPrzygienda
> *收件人:*张征00007940;
> *抄送人:*rift@ietf.org;Bruno Rijsman;
> *日 期 :*2021年03月19日 18:45
> *主 题 :**Re: [Rift] RIFT YANG datamodel implementation*
> _______________________________________________
> RIFT mailing list
> RIFT@ietf.org
> https://www.ietf.org/mailman/listinfo/rift
>
> so that deviates from model. hierarchy indications is where the
> interesting flags go into.
>
> configured level is NOT enough. things like leaf-2-leaf procedures are
> also configurable and part of the hierind
>
> -- tony
>
> On Fri, Mar 19, 2021 at 10:36 AM <zhang.zheng@zte.com.cn> wrote:
>
>> Hi Tony,
>>
>> Thank you very much for your quick response!
>>
>> I have some further questions, please find my question below with Sandy1>.
>>
>> Thanks,
>>
>> Sandy
>>
>>
>> <http://www.zte.com.cn/>
>> 原始邮件
>> *发件人:*TonyPrzygienda
>> *收件人:*张征00007940;
>> *抄送人:*rift@ietf.org;Bruno Rijsman;
>> *日 期 :*2021年03月16日 18:20
>> *主 题 :**Re: [Rift] RIFT YANG datamodel implementation*
>> _______________________________________________
>> RIFT mailing list
>> RIFT@ietf.org
>> https://www.ietf.org/mailman/listinfo/rift
>>
>>
>>
>> On Tue, Mar 16, 2021 at 3:29 AM <zhang.zheng@zte.com.cn> wrote:
>>
>>> Hi tony,
>>>
>>> Sorry for the late response.
>>>
>>> Thank you very much for your detailed review!
>>>
>>> About you comments, could you please find my comments/question below
>>> with Sandy>?
>>>
>>> Much appreciate for it.
>>>
>>> Best regards,
>>>
>>> Sandy
>>> 原始邮件
>>> *发件人:*TonyPrzygienda
>>> *收件人:*Bruno Rijsman;
>>> *抄送人:*rift@ietf.org;
>>> *日 期 :*2021年03月10日 19:29
>>> *主 题 :**Re: [Rift] RIFT YANG datamodel implementation*
>>> _______________________________________________
>>> RIFT mailing list
>>> RIFT@ietf.org
>>> https://www.ietf.org/mailman/listinfo/rift
>>>
>>> Just reviewed stuff carefully as well (also based on _real_
>>> implemenation ;-) but not Yang implementation). comment on -02
>>>
>>>
>>>           +--ro hierarchy-indications?       enumeration
>>>
>>>
>>> that's bit more complex, we're lacking
>>>
>>>     leaf_only_and_leaf_2_leaf_procedures = 1,
>>>
>>> which should be configurable
>>>
>>> Sandy> The type of "hierarchy-indications" is enumeration, and "
>>> leaf_only_and_leaf_2_leaf_procedures" is included in it. Now the leaf
>>> is not configurable, do you mean this leaf should be changed to
>>> configurable?
>>>
>>
>> yes, you want to be able to configure that
>>
>>>
>>>
>>> also, observe that level == 24 that can be configued is NOT equivalent
>>> to top-of-fabric which is a special flag
>>>
>>> so
>>>
>>>        leaf configured-level {          type level;          description            "The configured level value of this node.";        }
>>>
>>> should be something much more complex around a union of
>>>
>>> tof
>>>
>>> leaf-only
>>>
>>> leaf-with-leaf-2-leaf
>>>
>>> numeric
>>>
>>> Sandy> I'd like to add more description: "The value '0' indicates leaf-only, the value "1" indicates leaf-with-leaf-2-leaf, and the value "2' indicates tof." Do you think it's OK?
>>>
>>>
>>>
>> well, you can do that but it's really an enum where the value should not
>> matter
>>
>> Sandy1> The "hierarchy-indications" and "configured-level" are both
>> indicate the node's level. The "hierarchy-indications" isn't
>> configurable because it's the actual node level.
>>
>> The "configured-level" it the configured level which can be set by
>> network administrator. I'd like to keep the "hierarchy-indications"
>> non-configurable.
>>
>> And the two leaves use the same enumeration type and values. The value
>> includes the above three types or any other type.
>>
>> Do you think it's OK?
>>
>> But I have a question about it, it seems like we are not define the range
>> of level value. If the maximum level value needs be defined?
>>
>>>
>>> then
>>>
>>> overload
>>>
>>> in configuration sense should be
>>>
>>> overload {
>>>
>>> status: true/false
>>>
>>> timeout: optional timeout on config element
>>>
>>> }
>>>
>>> so I'd split between configured-overload and in-overload or just overload
>>> Sandy> What's the meaning of "timeout"? Now in the model, the local "overload" is configurable, the "overload" in node TIE isn't configurable.
>>>
>>>
>> timeout is used very often. Basically there should be 2 timeouts
>>
>> on-startup
>>
>> this means node goes into overload until this tiemr expires when starting
>> up
>>
>> immediate
>>
>> it means, set overload (but not on startup, right when configure) and
>> remove after timeout expired
>>
>> Sandy1>  Please review my understanding to check if it's right:
>> "on-startup" and "immediate" are value of "yang:date-and-time" type which
>> is configurable. The router will go into overload status when the two
>> parameters expired in different situation. But the two parameters only take
>> effect when the "overload" is set to true.
>>>
>>>
>>> if we allow to configure maximum nonce delta we should probably also allow to configure lifetime delta (both are pretty dangerous since they can break convergence real fast)
>>>
>>> +--rw holdtime?
>>>
>>> should be global-holdtime
>>> Sandy> OK.
>>>
>>>
>> ack
>>
>>
>>> since that can be ultimately per link
>>>
>>> same for tide generation
>>>
>>>           +--rw tie-security-key-id?         uint32
>>>
>>> that should refer to standard yang security chain as e.g. OSPF uses
>>>
>>> that should be also originating-key-id or something since we need (missing right now) the keys we are willing to accept as RW
>>> Sandy> May I change this to the following, it's borrowed from OSPF YANG model. The crypto-algorithm has many types, does RIFT support all of them, or just some of them?
>>>           |     |     |     |  +--rw tie-security           |     |     |     |     +--:(auth-key-chain)?           |     |     |     |     |  +--rw key-chain?           |     |     |     |     |         key-chain:key-chain-ref           |     |     |     |     +--:(auth-key-explicit)           |     |     |     |        +--rw key-id?     uint32           |     |     |     |        +--rw key?        string           |     |     |     |        +--rw crypto-algorithm?           |     |     |     |                identityref
>>>
>>> on acceptance we need following variants
>>>
>>> SecurityChecking {
>>>    NoChecking,
>>>    Permissive,
>>>    Loose,
>>>    Strict,
>>> }
>>> Sandy> OK.
>>>
>>>
>> ack
>>
>>> same @ link level for the security keys
>>> Sandy> OK. Once you confirm the security key format, it will be syned to interface.
>>>
>>>
>> ack, basically keep to whatever OSPF does,. I thought ACee abstracted the
>> whole keychain IGP stuff and we should use that
>>
>>
>>> look @ YAML model we use in open source RIFT to see further details
>>>
>>> own pod missing
>>> Sandy> The "pod" is the fourth leaf in node, please check it agin, do I make some mistakes?
>>>
>>>
>> maybe I missed
>>
>>
>>>
>>> @ interface level
>>>
>>> what is
>>>
>>>     +--ro hal?    level
>>>
>>> it seems backwards, HAL is of level type, no?
>>> Sandy> The "HAL" is "The highest defined level value seen from all valid level offers received." Does the description need to be improved?
>>>
>>>
>> well, name the node HAL and the type is level
>>
>> Sandy1> OK. It will be renamed to ""node-HAL".
>>
>>>
>>> also list of HAL systemid offers is helpful here
>>> Sandy> OK. I can add the systemid which offer the level.
>>>
>>>
>> yepp, there maybe multiple
>>
>> Sandy1> OK.  A systemid list will be added for it.
>>
>> Thanks,
>>
>> Sandy
>>
>>> also on link add instance-name
>>> Sandy> Do you mean the RIFT instance name? The whole model is following an instance, so the interface is also belong the same instance with the node. Different instances are distinguished by the node.
>>>
>>> DATABASE
>>>
>>>
>>>                 |  +--ro (type)?                 |  |  +--:(prefix)                 |  |  +--:(positive-disaggregation)                 |  |  +--:(negative-disaggregation)                 |  |  +--:(external)                 |  |  +--:(positive-external-disaggregation)                 |  |  +--:(pgp)
>>>
>>> oder strictly per thrift model since order has meaning here
>>> Sandy> OK. I'll modify the order according to section 8.2.28.1.
>>>
>>>
>> ack
>>
>>
>>>                 |  |  +--ro link-id-pair* [remote-id]                 |  |  |  +--ro local-id?    uint32                 |  |  |  +--ro remote-id    uint32                 |  |  |  +--ro if-index?    uint32  Rijsman, et al.          Expires August 26, 2021                [Page 7] Internet-Draft               RIFT YANG Model               February 2021                  |  |  |  +--ro if-name?     if:interface-ref                 |  |  +--ro cost?                         uint32                 |  |  +--ro bandwidth?                    uint32                 |  |  +--ro flood-reduction?              boolean                 |  |  +--ro received-link-capabilities                 |  |     +--ro bfd?                     boolean                 |  |     +--ro v4-forwarding-capable?   boolean
>>>
>>> missing
>>>
>>>    14: optional set<common.AddressFamilyType>
>>>        (python.immutable = "")                address_families;
>>> Sandy> OK. I'll add it.
>>>
>>>
>> ack
>>
>>
>>
>>
>