Re: [Rift] [RIFT] spine-tof links break => spine-leaf adjacencies go down?

Tony Przygienda <tonysietf@gmail.com> Thu, 23 April 2020 21:28 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 DED993A13FE for <rift@ietfa.amsl.com>; Thu, 23 Apr 2020 14:28:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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] 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 hT1_s6XVQViw for <rift@ietfa.amsl.com>; Thu, 23 Apr 2020 14:28:25 -0700 (PDT)
Received: from mail-io1-xd35.google.com (mail-io1-xd35.google.com [IPv6:2607:f8b0:4864:20::d35]) (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 6E64D3A13F7 for <rift@ietf.org>; Thu, 23 Apr 2020 14:28:25 -0700 (PDT)
Received: by mail-io1-xd35.google.com with SMTP id i19so8027480ioh.12 for <rift@ietf.org>; Thu, 23 Apr 2020 14:28:25 -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=qtWfyF4+W5SAaC1HG7VJ0vhJS6lUOQQBvaveNdCqT3w=; b=sNaDEKgoYZZSZAXz/aqDuDiczDgh0wzP0/c4B0WWeWIubTtbTwvqE1TMTA++68dfAK ZaGPPe7R9yzRWYTgZRlQ8NIxW9wlSCBjWsV4GTn2fm2von/FndbxD2L6ikQZ3WqFsidT TydAby5FIpC9n8unDagR9xlAFMqrPrk5zuenw1+8ggzljx51vZ40OFpS8gEBRmd4bu2p RzhetHMBv5QuZruebO+ibts6b0z2YnYe97hqPRKGwuZVyJLWAFxuGI0VqyzJZnietm3W 4hhIt3HLI5qnm9US3uL9iBLXQMY2yY68STOzbudU+340n0pSHBY1qeDmkS9RYPeFMVHZ LEsg==
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=qtWfyF4+W5SAaC1HG7VJ0vhJS6lUOQQBvaveNdCqT3w=; b=PMRSsjYCmF266NEQuftZFXyYXzLssOSp8mlwfndbHfquH+YKnpCpGSbeYTTbNVYcLz KwWqROd6EHbpm9cIoRRGcx/3NCVkioYUkj7/6OVgwkqrxSoktXU22WQy300bMDhnVj52 udHgaPukCR7DKNwclfpxFyzTUCbbbrHigXMeHm5qKoC/Pj47JYLXlm6IlwHyFiVhwOcF BWwHgtqHMHWwVfZ0Pq0neNVPrRuMtQMRQvYjtJudcGRwb4Ht3ezmSEUlUI8HXUqIuhE2 ga94Sifs7W2z0h0s3fHfJbdO38G0jy6i45lOWercyRUKffb01Rr9390NbOq3nR9ii2ge 8tvw==
X-Gm-Message-State: AGi0PuZi1KgLo0bSTFth5FASloVSijEUVUs5dEbZTeOiCAeT26C56xXg aIUcLf/QzoJd1Kc54D5tl2DJPAD3R4plGjdqTog=
X-Google-Smtp-Source: APiQypLlsVXtqtQwFZHTPqeH2vBk8m6RLsFeBJ8Eb4aiMShDMCPyb0wBwUD1ckFPycEQ8x6QNBZqy8+BSaT3xFB8Cd4=
X-Received: by 2002:a05:6e02:60a:: with SMTP id t10mr5494518ils.302.1587677304762; Thu, 23 Apr 2020 14:28:24 -0700 (PDT)
MIME-Version: 1.0
References: <5e909790.1c69fb81.e9d94.cb7e@mx.google.com> <d72ecfbd-3fe0-4eb7-94e9-dbecd0b8610f@Spark> <EC67D4C2-CEFF-46C9-866F-D0F32547CC64@gmail.com>
In-Reply-To: <EC67D4C2-CEFF-46C9-866F-D0F32547CC64@gmail.com>
From: Tony Przygienda <tonysietf@gmail.com>
Date: Thu, 23 Apr 2020 14:27:18 -0700
Message-ID: <CA+wi2hO1zcsCebDjvHKgO8vdHtwJJCY2C4vUWBVC9xsjBGYvWg@mail.gmail.com>
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: "rift@ietf.org" <rift@ietf.org>, Tommaso Caiazzi <tommasocaiazzi@gmail.com>, "Pascal Thubert (pthubert)" <pthubert@cisco.com>, Mariano Scazzariello <mscazzariello@os.uniroma3.it>, Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, Jeff Tantsura <jefftant.ietf@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000c4b85005a3fbed55"
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/Y-toG2k_KeTbhKdsQm0iQkuD6aE>
Subject: Re: [Rift] [RIFT] spine-tof links break => spine-leaf adjacencies go down?
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: Thu, 23 Apr 2020 21:28:28 -0000

Absolutely intendend and expected behavior ;-) You can't figure out
topology from spine down basically without a ToF. ToFs are the only source
of truth where north is and if that isn't around no'one knows which way is
up ...

It's actually easy to put some code in that watches for the condition on a
node & complains that there are no valid offers.

Alternative would be to "store" offers and use them even if a node went
away. Think through that, it's impossible to converge the protocol
correctly then without having something like flooding of offers with seqnr#
and so on ...

--- tony

On Thu, Apr 23, 2020 at 11:13 AM Bruno Rijsman <brunorijsman@gmail.com>
wrote:

> While testing negative disaggregation with Mariano, I discovered an
> "interesting" behavior in RIFT and I would like to check whether this
> behavior is expected or not. I am not saying the behavior is wrong, I was
> just surprised to see it and wanted to check whether this was intended when
> the protocol was designed.
>
> Consider the following topology:
>
>  TOF1     TOF2
>    \       /
>     \     /
>      \   /
>      SPINE
>      /   \
>     /     \
>    /       \
>  LEAF1  LEAF2
>
> All adjacencies are 3way.
>
> The TOFs have top-of-fabric level 24.
>
> The leaves have level 0.
>
> The spine uses ZTP to derive a level, so it ends up with level 23.
>
> Now we break all links between the spine and its TOFs:
>
>  TOF1     TOF2
>    \       /
>     X     X   <<< These adj go down (as expected)
>      \   /
>      SPINE
>      /   \
>     /     \   <<< Surprise: these adj also go down
>    /       \
>  LEAF1  LEAF2
>
> At this point the spine node does not have any Valid Offered Levels (VOLs)
> because (see [1]):
> (1) The levels from the TOFs are not valid because the adjacencies are down
> (2) The levels from leaves are never accepted as valid offers
>
> Hence, the derived level for the spine becomes "undefined".
>
> Once the level of the spine becomes undefined, it stops accepting LIE
> messages from the leaves because a node whose level is undefined never
> accepts LIEs (see [2] below).
>
> Since the spine stops accepting LIEs from the leaves, the old LIEs time
> out and the adjacencies go down.
>
> *My question is: it is normal and expected that breaking the links from
> the spine to the TOFs *also* causes the adjacencies between th spine and
> the leaves to go down?*
>
> [1] On page [86] of draft-11 it says:
>
>  Valid Offered Level (VOL): A neighbor’s level received on a valid
>  LIE (i.e. passing all checks for adjacency formation while
>  disregarding all clauses involving level values) persisting for
>  the duration of the holdtime interval on the LIE. *Observe that*
> * offers from nodes offering level value of 0 do not constitute VOLs*
> * (since no valid DERIVED_LEVEL can be obtained from those and*
> * consequently ‘not_a_ztp_offer‘ MUST be ignored)*. Offers from LIEs
>  with ‘not_a_ztp_offer‘ being true are not VOLs either. If a node
>  maintains parallel adjacencies to the neighbor, VOL on each
>  adjacency is considered as equivalent, i.e. the newest VOL from
>  any such adjacency updates the VOL received from the same node.
>
> [2] On page [45] of draft -11 it says:
>
>  4. PROCESS_LIE:
>  1. if lie has wrong major version OR our own system ID or
>  invalid system ID then CLEANUP else
>  2. if lie has non matching MTUs then CLEANUP, PUSH
>  UpdateZTPOffer, PUSH MTUMismatch else
>  3. if PoD rules do not allow adjacency forming then CLEANUP,
>  PUSH PODMismatch, PUSH MTUMismatch else
>  4. if lie has undefined level OR *my level is undefined* OR this
>  node is leaf and remote level lower than HAT OR (lie’s level
>  is not leaf AND its difference is more than one from my
>  level) then CLEANUP, PUSH UpdateZTPOffer, PUSH
>  UnacceptableHeader else
>
>