Re: [Rift] Dear RIFT protocol and RIFT YANG co-author, plsreviewtheupdateofRIFT YANG model

Bruno Rijsman <brunorijsman@gmail.com> Fri, 10 July 2020 10:40 UTC

Return-Path: <brunorijsman@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 EC5313A08A2 for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 03:40:26 -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, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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 Q-a4waXmmvLM for <rift@ietfa.amsl.com>; Fri, 10 Jul 2020 03:40:25 -0700 (PDT)
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) (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 C37BB3A089D for <rift@ietf.org>; Fri, 10 Jul 2020 03:40:24 -0700 (PDT)
Received: by mail-ej1-x635.google.com with SMTP id a1so5497652ejg.12 for <rift@ietf.org>; Fri, 10 Jul 2020 03:40:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=g07IDG6uSdu544NqQS/6cc9nIkck7jWq/7wcsFItU0w=; b=F+35M5j4MpbbUNNVeozP/frErN3r621sipkHiobeNF1p2Nm2n/h1mGvejX/jqqOFt5 etnK5pJg6g+KUxRYdINHrWlTTFcq7i07JHHR60v23p2nZDRPnEkxszErm8pBIk9SW8kr CTXbwuuZ1Xvrn+tR1Tkm2rKnvopHjLLHRkRcl2lVmLarlxlgx27M/aVqf4z7OjshbtzX hoITYdwNq5Yzf10Jk4FjcKC+y0N2IdpZE4c3rUhk0ztfDdf39Z/EePrO0pNBTF/p8doN whzBhLU0jcrTK94J0uMEEE3N5faJjQ9uSFOueysLLx5b5FSK4uT54VDojAB/9Uaeah4j o1yw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=g07IDG6uSdu544NqQS/6cc9nIkck7jWq/7wcsFItU0w=; b=pWFwlAOFXM3sGYslhE0QJcLL57n3mawectUFgB773/be8tn2uiq09N489kyYC5rIQr 7qooQq0ymjIZ/5yCNL/w5cTF5S3D/dt9hkwLsv0B+WfQpaAyTNPXB0AgvVAhZF8XaRfw VhJcMgXYowdoqHWNfiw+LRyVXg0Z+dTb6f/2IyAjP2tLK1kQX9mi3aiOBJdZZ9wl/RWq QVQoF4eCPaAXV9EtCbp6/VrDAp8gmJMXfrt5RbpRTZ5kpuQ9iGP9xKBnFF2UIeFjvhxW 1kuNDlzrhj0NiBwJGS2w/cR8m8ah2yuOwTVAz1PbvcBuITqfvaX+wBr4mdc6Fzo6gxeE CCEg==
X-Gm-Message-State: AOAM531qvLsXyU+G7xDUeQ6zM1b2wZDjJpS9zM2ylwPogCxNuHwbe8Bj uDdavSGTfn5FAi/5PPiK7aE=
X-Google-Smtp-Source: ABdhPJxbCvI6z94WfBrfGCLzzi/7vqV/VCJYgCOHo/jHzHunjgVyT+r17tK3QDbs5Otwgz6hpHZPnQ==
X-Received: by 2002:a17:906:7253:: with SMTP id n19mr35174930ejk.31.1594377623235; Fri, 10 Jul 2020 03:40:23 -0700 (PDT)
Received: from [192.168.178.192] (82-73-48-167.cable.dynamic.v4.ziggo.nl. [82.73.48.167]) by smtp.gmail.com with ESMTPSA id d16sm3346342ejo.31.2020.07.10.03.40.22 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Jul 2020 03:40:22 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <32F1F103-D95A-4A43-AA25-3180916B5F2E@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_ACF3E322-D145-4049-8D3F-04008A172542"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Date: Fri, 10 Jul 2020 12:40:21 +0200
In-Reply-To: <D300B738-343B-48FE-976C-A04F23E3CE1B@gmail.com>
Cc: rift@ietf.org
To: zhang.zheng@zte.com.cn
References: <BF881FFF-9AFC-48F0-BC86-AF8069DE957A@juniper.net, 1B02CCAE-000D-4EA3-8240-4EA7CFCA3AEF@gmail.com> <202007061506485460169@zte.com.cn> <D300B738-343B-48FE-976C-A04F23E3CE1B@gmail.com>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/UmITmUEE7-CyM5nt6F-GfpUg314>
Subject: Re: [Rift] Dear RIFT protocol and RIFT YANG co-author, plsreviewtheupdateofRIFT YANG model
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: Fri, 10 Jul 2020 10:40:27 -0000

I was just looking at the YANG data model, and I noticed that it does *not* allow different source addresses to be specified, so your question was sort of moot.

What it *does* allow is different RX addresses to be specified for TIEs and flooding traffic.  These are receive multicast addresses, so they will appear as the destination address on the packet.  They are not source addresses.

— Bruno

> On Jul 10, 2020, at 12:36 PM, Bruno Rijsman <brunorijsman@gmail.com> wrote:
> 
> Hi Sandy,
> 
> Thanks for the updated model; the next round of review comments will follow shortly.
> 
> Meanwhile, here are the answers to your questions:
>> And I have two questions:
>> 
>> There is a leaf "cost" in the neighbor grouping, is the "metric" duplicated with the "cost"?
>> 
> Currently, your YANG datamodel has both cost and metric attributes per neighbor (as well as bandwidth):
> 
> +--ro neighbor
>       +--ro cost?      uint32
>       +--ro metric?    uint32
>       +--ro bandwidth? uint32
> 
> Most of the text in the RIFT spec (including the definition) uses the term "cost" to mean the cost of a link to an immediately neighboring node. The term "distance" is used to mean the total cost of a path to a remote node.
> 
> The Thrift datamodel in the RIFT spec is super inconsistent in its terminology:
> 
>  /** neighbor of a node */
>  struct NodeNeighborsTIEElement {
>  /** level of neighbor */
>  1: required common.LevelType level;
>  /** Cost to neighbor.
>  @note: All parallel links to same node
>  incur same cost, in case the neighbor has multiple
>  parallel links at different cost, the largest distance
>  (highest numerical value) MUST be advertised.
>  @note: any neighbor with cost <= 0 MUST be ignored
>  in computations */
>  3: optional common.MetricType cost
>  = common.default_distance;
> 
> Note that the Thrift attribute is called "cost" but it's type is "MetricType" and it 's default value is "default_distance" 8-)
> 
> Bottom line: cost and metric are synonyms, we only need neighbor cost OR neighbor metric in the YANG (not both). I suggest that we only keep cost and get rid of metric. We do need bandwidth as a separate attribute.
> 
> Note: in a later e-mail I will send a rather long list of attributes that could be added to the YANG data model. bandwidth-adjusted-cost will be one of those additional attributes that I will suggest (see section 4.3.6. Fabric Bandwidth Balancing in the RIFT spec).
> 
>> If different source addresses can be used for LIE and TIE sending?
>> 
> 
> One thing to consider is that LIEs are always sent on IPv4 *and* IPv6.  Flooding packets (not just TIEs, but also TIDEs and TIREs) are sent on IPv4 *or* IPv6 but not both.
> 
> For a given address family, I think that it would be reasonable to require that LIEs and flooding traffic *must* be sent on the same source address. The reason is that once a neighbor has been discovered by virtue of receiving LIEs from a particular address, we want to open up a listening socket for that particular neighbor for flooding traffic. That flooding socket has the same remote address but potentially a different UDP port.
> 
> My implementation does not actually bind to a remote address, but I *could* have chosen to do so:
> 
> agg_101> show interface if_101_1 sockets
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> | Traffic  | Direction | Family | Local Address                | Local Port | Remote Address  | Remote Port |
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> | LIEs     | Receive   | IPv4   | 224.0.0.81                   | 20001      | Any             | Any         |
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> | LIEs     | Receive   | IPv6   | ff02::a1f7%en0               | 20001      | Any             | Any         |
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> | LIEs     | Send      | IPv4   | 192.168.178.192              | 63729      | 224.0.0.71      | 20002       |
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> | LIEs     | Send      | IPv6   | fe80::4b0:a72c:c8eb:dd5a%en0 | 63730      | ff02::a1f7%en0  | 20002       |
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> | Flooding | Receive   | IPv4   | 192.168.178.192              | 20004      | Any             | Any         |
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> | Flooding | Receive   | IPv6   | fe80::4b0:a72c:c8eb:dd5a%en0 | 20004      | Any             | Any         |
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> | Flooding | Send      | IPv4   | 192.168.178.192              | 54629      | 192.168.178.192 | 20003       |
> +----------+-----------+--------+------------------------------+------------+-----------------+-------------+
> 
>