[Rift] cc: from private thread, flooding rules ...

Tony Przygienda <tonysietf@gmail.com> Sun, 28 April 2019 15:19 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 888D9120152 for <rift@ietfa.amsl.com>; Sun, 28 Apr 2019 08:19:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.999
X-Spam-Level:
X-Spam-Status: No, score=-0.999 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, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=no 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 XLRKldqqS5xi for <rift@ietfa.amsl.com>; Sun, 28 Apr 2019 08:19:36 -0700 (PDT)
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) (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 03A5012014F for <rift@ietf.org>; Sun, 28 Apr 2019 08:19:36 -0700 (PDT)
Received: by mail-ed1-x52c.google.com with SMTP id a8so4993290edx.3 for <rift@ietf.org>; Sun, 28 Apr 2019 08:19:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=nLWpQHREd0IGGKFnT0DdPWiY2U0Mi5+14gqTtA4KLug=; b=DhDzrNYqPgdsvlcArflQil0ZzVvZ2meq9Ih11m2b30UO45kaDmtOmu3BrSlf5oxTDd +Fbq74Df6avFDw9RTKaPlJ8sVMwEjdBPIQJ5fPKDIB/6hF/Cm8n5uO6vYivkz9mM+W3N xB4g3eFr0fSsai4YH54K0MV0xeoUIqLhl+ji1yNbwM+S5LtrkKMqf2vsZ2RoxGcEDZVl hAK1k836zru9wWXt+S4oN/ykcuBDXTXigiVRKF03AXb2Q0OpkfvCY95eIlEMZTpTlexn 9uMEuAS/GVGmNKyq1RvgC0Q/7u3Daa41xey1rqdpCsz26BtiPNnltO6BL+p8nF8YJg0E fKIg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=nLWpQHREd0IGGKFnT0DdPWiY2U0Mi5+14gqTtA4KLug=; b=jlbuSqH/M2wVXyJ03HZhemCnai4SGHhj5d4zJ5mF4k+eDSNPOixJLWK9VZXHqZN8VG l4XzFpYWOb81KjZtbAbMQgGu622iWVb7neZxzRoXFIDPmk/97Vc4E6jvtABeIK2W3uXA BBON2awGiakvTmystRiUA04+x64V5ncOsU4kjw/wEvCi7h+eoCsySPcgLHsq5+Poe/cW ywQAAyL8kBeVV/inLsEFPwFOSuc5b1f2rcNIooe55wmJBklrwzZQEoma7EYFb0QoDFaU D/vniJCYPBF9jDEtp6pAAN/zFZwdqlwd3GIY5DWnR6sTkfEnDxNf0356JCz9cmB8RkCx 19WQ==
X-Gm-Message-State: APjAAAVX6sxETAp8QjVxAz8IcHuTOLBJxWcN4r5xQ/Wg+Fh6PjuUzH20 SHHd2e2gSyFFZlyeJuhORbSlwsvzUHmX2DdwRXI=
X-Google-Smtp-Source: APXvYqz73Ku+n7N8xWh8toqv66i45GjxRrwZZDWVluLj+kER7G5brafBK78/bUyw+RxUtTm3rMjBMmKbp5x7FpdQpU8=
X-Received: by 2002:a05:6402:1256:: with SMTP id l22mr9013207edw.22.1556464774458; Sun, 28 Apr 2019 08:19:34 -0700 (PDT)
MIME-Version: 1.0
From: Tony Przygienda <tonysietf@gmail.com>
Date: Sun, 28 Apr 2019 08:18:58 -0700
Message-ID: <CA+wi2hNGa26WCAwFKxNFB42vaPpFL_YdtEpcnFkBte1v_0HSuA@mail.gmail.com>
To: xu.benchong@zte.com.cn
Cc: rift@ietf.org
Content-Type: multipart/alternative; boundary="000000000000fcb01d058798b12d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/_TD-7q3T3J-hIvnGeFszakWLFb4>
Subject: [Rift] cc: from private thread, flooding rules ...
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: Sun, 28 Apr 2019 15:19:38 -0000

Benchong,

I'm copy'ing mailing list from the private thread we started through for
posterity ;-) My answers marked with bold >

And yes, very good catch on flooding in first try, you must have really
thought stuff through carefully ;-)

--- tony

------------------------------
*From:* xu.benchong@zte.com.cn <xu.benchong@zte.com.cn>
*Sent:* Sunday, April 28, 2019 2:31 AM
*To:* Jeffrey (Zhaohui) Zhang
*Cc:* EXT-zhang.zheng@zte.com.cn; Antoni Przygienda; jefftant.ietf@gmail.com;
EXT-zzhang_ietf@hotmail.com
*Subject:* Re:RE: Re:I would drive fwd' adoption of drafts ...


1. Something about ZTP

Now the rift protocol ZTP model can auto build rift networks without
configuration(except IP address/IPv6 address/vpn, and ToF level/leaf-2-leaf
as rift-05 5.2.7, and Pod of ToP/Mobility attr).


> *in fact, v6 address can be obtained by ND, yes, ToF must be set (there
is no way what it up or down in a fabric otherwise). Yes, PoD of top is the
same discussion as ToF. I'm not aware we need any configuration for
mobility attributes *


Node or some links status changing may cause level change and then more
nodes need rebuild the neighbors, which break the REQ10 and REQ12.


NODE1-----NODE2

|         |

|         |

NODE3-----NODE4

|

|

NODE5 ......

|

|

    NODE6 ......

For example: NODE1 AND NODE2 level = 10, then after ZTP, NODE3 level = 9,
NODE4 = 9, NODE5 = 8, NODE6 = 7.

 When link between NODE1 and NODE3 break, after ZTP, NODE3 level = 8, NODE5
= 7, NODE6 = 6.


 Link unstable case network unstable. In the above example, Link between
NODE1 and NODE3 unstable will case NODE3/NODE5/NODE6 unstable.

I think rift should support two stage, ZTP and STABLE.


*> your picture fell apart in the formatting so I'm trying to reconstruct
or you have to resend it in fixed width ASCII (or just join the weekly on
Zoom if you can and we'll draw). I don't know how Node4 would be 9 in this
stage, the horizontal link you draw would be really an uplink for node 4
and with that node 4 would be @ level 8. Also I see two links between NOde1
and node 3. If node 2 is level 10 and node 3 has link to node 2 then node 3
would not change level. *


All node learned its level and PoD in ZTP stage. And they should not change
level In STABLE stage when HAL change, or they can get level and PoD
configuration by KV tie in any stage,



*> Yes, it would be possible to configure PoDs by KV but I don't see that
as being much different from configuring it on the device itself. The KV
would need to be directed so the node knows it is being targeted. Level you
cannot get from KV ;-) since you can't form 3-way until you have level
(observe that LIEs carry the level offers and with that levels are
negotiated to form 3-way). And you can't flood KV until you have an
established topology. *


2、KV tie can also take IP address/IPv6 address/vpn from ToF to others, and
the ToF get all networks configuration by Netconf or any other way.


*> yes, all addressing could be configured via KV but that's lots info on a
large fabric and again, I don't see a benefit compared to configuring the
device itself. Generally, information that you want "gathered" @ top of the
fabric like e.g. ARP/IP bindings or properties of nodes in fabric is helped
by KV, stuff that is node specific like "this node needs this ID" is not
very much since you flood part/all of fabric with it with no use & extend
the blast radius. Also, information that needs propagating south through
all or part fabric is helped by KV, e.g. key rollovers. *


KV tie should at least include

type

key-length

key-value

value-length

value



*> well, no ;-) *



   1. *schema itself contains the length already, both key and value are
   strings to be interpreted as seen fit*
   2. *type is not important, it's a string and the implementation can
   parse it any way it wants. There is no value is having e.g. a union
   allowing for all possible thrift types IMO. *
   3.
*As I said since a bit, what we need is a well-known K/V document that
   reserves stuff lots of people want as fair I see like ARP/IP bindings and
   then something where a key can be used by a vendor using his OUI prefix,
   something like well-known "OUI:XXXX:..." *


3.There are some other questions


C.3.2.2

6.  if DBTIE.HEADER < HEADER then

           I)    if originator is this node then bump_own_tie else

                 i.     if this is a N-TIE header from a northbound

                        neighbor then override DBTIE in LSDB with HEADER

                 ii.    else put HEADER into REQKEYS


C.3.3.2

   a.  for every HEADER in TIRE do

       1.  DBTIE = find HEADER in current LSDB

       2.  if DBTIE not found then do nothing

       3.  if DBTIE.HEADER < HEADER then put HEADER into REQKEYS


Why not put DBTIE.HEADER but put HEADER into REQKEYS


*> well, DBTIE.HEADER is _smaller_ than HEADER but we really want to get
the header (in fact its content) from the neighbor so when we request we
have to request the newest HEADER.  But yes, albeit IMO rather confusing,
putting DBTIE.HEADER into REQKEYS would also work since we would request
from neighbor an obsolete header which he would answer with the newest TIE
version. *


C.3.4.  b.

      3.  if DBTIE.HEADER > TIE.HEADER then


           i.     if DBTIE has content already then TXTIE = TIE


Why not TXTIE = DBTIE but TXTIE = TIE


*> right on ;-) and accolades since you found an oversight in flooding
rules write-down that good amount of people fine-combed already and are
implemented at least twice (and you seem to be doing it at least in a third
version ;-) The protocol would stabilize nevertheless on TIDEs as far I see
but still, a very good catch. Yes, this must be DBTIE (in fact, would you
mind to check Bruno's python code for this omission, please). I will
correct & add you to accolades section ;-) *