[Bier] Comments on draft-chen-bier-frr-02.

"Jeffrey (Zhaohui) Zhang" <zzhang@juniper.net> Tue, 16 March 2021 21:41 UTC

Return-Path: <zzhang@juniper.net>
X-Original-To: bier@ietfa.amsl.com
Delivered-To: bier@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 87FC43A0FD7 for <bier@ietfa.amsl.com>; Tue, 16 Mar 2021 14:41:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.357
X-Spam-Level:
X-Spam-Status: No, score=-3.357 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.248, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, 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=juniper.net header.b=I7BsvsUR; dkim=pass (1024-bit key) header.d=juniper.net header.b=LZL1f4Nr
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 6I0CkGd2yl51 for <bier@ietfa.amsl.com>; Tue, 16 Mar 2021 14:41:43 -0700 (PDT)
Received: from mx0b-00273201.pphosted.com (mx0b-00273201.pphosted.com [67.231.152.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EBAE63A1045 for <bier@ietf.org>; Tue, 16 Mar 2021 14:41:35 -0700 (PDT)
Received: from pps.filterd (m0108163.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12GLSwMc009350; Tue, 16 Mar 2021 14:41:33 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : subject : date : message-id : content-type : content-transfer-encoding : mime-version; s=PPS1017; bh=0HhI8XOy6SpZgk1CD9Y9zEWu+6zY6L1cbsCExl1l/6A=; b=I7BsvsURVpoKmASNmgK8xoljxYWE6AfSKE1JcQZfylR2eG1GlVA3MV9hC+hG6Q5JajLu 52tPR2XDzggQYODsCdGeVeO3x+kix6QjthJ3yGF+vlK3gOWo8oNEbB3FDVKiGjDxAyIV M9klJGMIJZncXoQ/tW/rzoO0z6Y/3/NEoNEPEsypv71hhXDjgXlMrgu1xFVay7kqyfsd 2JPJQu3skBm3PrLIr3wMUmcH2mEMbO02WPi8x1RTTv84XXYoSj+NCl9pStXPwi/o//RH U2HKp7v0FLr61Zhq/rvGlzyg+GE0HMtKgkwpD0oPjmlRM1igYQmSxClRdG5OD0fPtCSm 9w==
Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2057.outbound.protection.outlook.com [104.47.36.57]) by mx0b-00273201.pphosted.com with ESMTP id 378sgvxq3k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 16 Mar 2021 14:41:33 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W8b/PfDn9a2ttbJThEazGf1EEo+dfMR/z9E4yAAMkW2DDsuLvoJuTc5HYjXwNS4oE04A39rB/runI2E1CsTHL2ALjiqjRriAbVZc/Z4wksvNGRVSeNIfHF+QVuQzGLGz7UnjUE01CAaICg8nPI/d8ivuQGcQymJuBaBEgqLn0RUhE+axTdgUENNihpvq26fzE3nqJZMSWb+daQR0UBm4zVYK+6SFS06zTMBowIBSBP4th5+e/eOzFFIgbH0gOGclUyeAd4iE8pCdPWX+dZxf5NppdsjZLeXy/wO6GDKkZci7JwaAbm1Coyvn8ugs8aln3XdQXr+pRcEo4iLIwAlpDg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0HhI8XOy6SpZgk1CD9Y9zEWu+6zY6L1cbsCExl1l/6A=; b=GbQKXKfqRyY09+h9QNx0OurmjfOd3b9Bmna3dTxzpeV+8Kzxp4zOQ4LN6QGFwLVlnRzyTSVMXAEdnNaGwneGEXmG4+fMmtAIWlAwQgHy/286uho7xmmbsThrtgJYwFg9S24F01mLfEfbv1Rs5X8+acKqp+Ni1zhppD3N8ClK8GK7NCPz8Caoe+COsnVxE8SKbRxrr/nPCSTiqSQH3lHj4JNp7nSDfoUy54nppyxEqtVYq7qlEeA7pyWsNXG8fmzOMy3yHGMZXFCDw26NfckKHRibABvW3ZbByE+vBTHcGHFHcz1/3FYnC6DjoaesE79+kuULVsw046o9awiZ+0qYaw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=juniper.net; dmarc=pass action=none header.from=juniper.net; dkim=pass header.d=juniper.net; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0HhI8XOy6SpZgk1CD9Y9zEWu+6zY6L1cbsCExl1l/6A=; b=LZL1f4NrX2xSLsWdRlPm92l9KbV4JCl/I0aQe1ch9cTGhErnFN2H2BQD9dvZrYObjYJ0mUFE1rPVVRSmOL6BjKMM0VCEyA9jma4TtSlvW6I5Ve7wlyf+1u2FUR9D8A6gyII47fI0rszZxrBe0D/7Y+p14gaIFvP/4R2tQt+eWzE=
Received: from MN2PR05MB5981.namprd05.prod.outlook.com (2603:10b6:208:c3::15) by BLAPR05MB7267.namprd05.prod.outlook.com (2603:10b6:208:29c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.11; Tue, 16 Mar 2021 21:41:31 +0000
Received: from MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::203e:7f1f:be91:161c]) by MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::203e:7f1f:be91:161c%6]) with mapi id 15.20.3955.012; Tue, 16 Mar 2021 21:41:31 +0000
From: "Jeffrey (Zhaohui) Zhang" <zzhang@juniper.net>
To: Huaimo Chen <huaimo.chen@futurewei.com>, "bier@ietf.org" <bier@ietf.org>
Thread-Topic: Comments on draft-chen-bier-frr-02.
Thread-Index: AdcarQ4JLoZGL76CTimMbvlaYdVumQ==
Date: Tue, 16 Mar 2021 21:41:31 +0000
Message-ID: <MN2PR05MB5981712D40FD05376D55784FD46B9@MN2PR05MB5981.namprd05.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
dlp-product: dlpe-windows
dlp-version: 11.6.0.76
dlp-reaction: no-action
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ActionId=044035c6-cc93-47d8-b660-1edd3b3f5ee8; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ContentBits=0; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=true; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Method=Standard; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Name=0633b888-ae0d-4341-a75f-06e04137d755; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2021-03-16T21:40:09Z; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4;
authentication-results: futurewei.com; dkim=none (message not signed) header.d=none;futurewei.com; dmarc=none action=none header.from=juniper.net;
x-originating-ip: [71.248.165.31]
x-ms-publictraffictype: Email
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: 989ec2fa-2e44-4903-c5ac-08d8e8c4436e
x-ms-traffictypediagnostic: BLAPR05MB7267:
x-microsoft-antispam-prvs: <BLAPR05MB726732E64C3C79D89189DE68D46B9@BLAPR05MB7267.namprd05.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: awmaCVczWGgxtqH4OkUL+W9HbWM/LlI/ZXU2i4bAUI4RKXK1rO50lxIfIbauBNAsMA5v6GfE9WCWDpPnbtGEO/Ti5KYChcRDOHBC3wUNRc6BCE1fw46EKPyncfDhtZ4nJi4Y0Mh1lc74DEFAs+Xe1YHKzQP0Jp3pk7Fa7pUQnOxnNxeehM4UTGnr4y684vWCXjW4jKwTwq+LqZmfzHFne4TbwoX9wxl0ec4c+xqhQqLqnPUQVW1CrUsdB4XCCSRoM0eVOD6ZTIV/11BHx3gGbYEJnQFM9w00KBmT/4jI5mjXRIMhGrsV5aMaIm4ihUM1mUqM3KsGCx+mSKtQfsR8C5KR4M2B5sw0ITSMFJqdEB7XMouyy9g4ZId5LYQsOvUpqmK3ISvF8qcU+OSKTvgfDar/CroyljAXVTspcqsfjSNT/eV1SSIEhw9GxlWhR2hUD3tjjzXxlQ1nfxdjl6awN9++jA7cbWjBCmN1caFv9tf/XNpVHJRchAI0qT+v3eVRrNogqQ2xTiIlCMjolrC1Dwj5PsW8F22mNlRibJ16H4eMHXQjS7KYEPXIGGc79Ii3
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR05MB5981.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(136003)(396003)(376002)(366004)(346002)(8676002)(66476007)(2906002)(9686003)(110136005)(71200400001)(5660300002)(316002)(66446008)(6506007)(8936002)(86362001)(7696005)(64756008)(186003)(66556008)(33656002)(66946007)(52536014)(76116006)(83380400001)(55016002)(478600001)(26005); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata: =?us-ascii?Q?5nrO16Z4QRGotC0cD6oiNK7HAqc74mLECzpH3VkWaKaPq14lPvYCH3/g0SoH?= =?us-ascii?Q?xjXeKs3M/4nDfZZpT+IsiYgBMvwyyl4vtsxyDEi83h27D4+G5ipiyO833pvc?= =?us-ascii?Q?PQHGu+erxx+QYvAuVEPVYKayvXCbvj1FsyZrGi02EIDXW0T2UPBkpy2wgxbn?= =?us-ascii?Q?IjX6edEr7tXvuu3qKohSX0wLzmh74oA2P3u55FvgrIgGfT2urfORmQoT3ro+?= =?us-ascii?Q?R2vlSAiBzmUb9x7VuKR5IlM+rATcNDs7804bFwZdb2MxRMmDuAu+UNnbsev+?= =?us-ascii?Q?WXmomNF6wUzwPQ0tu4Mf/oQ8i47qlbImZ5KUM98y/4wldtXmxSacKbp6fYJV?= =?us-ascii?Q?s1heKHrbZUwwp4Q7N6jugR+T3QI3BYarBv6mUxKIMfeA21WzqPdcnSdgvTKt?= =?us-ascii?Q?8lbdZAC/Z2H7YFlOPSY1H/t8l3qLY6wdGmBLP7jum5rsuGfyRaUBC6IAmjSG?= =?us-ascii?Q?J2qw38Ny0zMRet6/VRpqYd5M2/RD46BhNiPaVCV548AyIj/jyWSH7rqxeRcl?= =?us-ascii?Q?FLiOeSOP2oxOYAxoO1Bd1K6VpkC4y8unvWy9isjJm/9oL/m6YX8K/woHtfVw?= =?us-ascii?Q?f6oNZPiMAemcUhCRkMtKOfgFujlvvyW5wQDlOw49+Cm2lTWHmpA2hJHe8HEP?= =?us-ascii?Q?062lnSqahR6nXaYX6P22/UGbP7bcdfxeN++ah95Xb5OhaCopFphWUbj/8oT6?= =?us-ascii?Q?uL0b+qTg2anfB3/g4TIrGDWWnSa0sucmNkSgY0tTnPw7dnA6yDh+NsK/+plP?= =?us-ascii?Q?Vikb8uw6acdbLLCu3hZeWM7uPKb2+NvgnYjYiomyOE4//dkgHNuOFFSQ9eb7?= =?us-ascii?Q?25VVcyYfQiwUb+tZHgJYgO4Pgd4c+3k0wRn6l6uG+ON3jzsIm4DD6sPoo2AN?= =?us-ascii?Q?Pa+QwSWjfQnBJYsYxb+QB3eFYeeHPkT0uF+gDXlbgMM48VEwVf9S9JNYGmXJ?= =?us-ascii?Q?s6honJuyLvKYdDznW71PyzbBirStRdbMEXXX/k/fHQ6+aXE+DvJlNCvkW7KM?= =?us-ascii?Q?TDd7kSgh2YKT/ldc09XUAbWMFOEZGiaqTHAJaqkRRtMdjnyS6zhMLCNUFqiZ?= =?us-ascii?Q?3VOcf7tjzhEG7MRT3dvBBCzf4MlvhJwvJP8Y2jdkDx+gM1qnaXJt6RV/haap?= =?us-ascii?Q?+fWQ6BQwsIS69GQE2cO3qnVsyXbcUOdMAzT+P+ng2T1z17652pJKE2iDHR5e?= =?us-ascii?Q?PHX6D9PL8+ijBeDAtYRb7DSulhQXGmzWdYebgIVBNZbuxZ+BwuZpU7cxq/3Z?= =?us-ascii?Q?whDz40NyjE2Y9Nb7Q4jSz/v9+svwVPvF7da81Xe8wiHzyQLHtmUV1iLreLLn?= =?us-ascii?Q?MdUaRdLtOlsO6/Rhb+n5hP7S?=
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MN2PR05MB5981.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 989ec2fa-2e44-4903-c5ac-08d8e8c4436e
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Mar 2021 21:41:31.3563 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: S6Sm3AmoCCHNQXSPXTc0GD95zvspirMv16BNUkPPuA545iUqI7//KMHHTbTfEbrQcLYnzsZ6Bp/A9gQcVNHjpw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR05MB7267
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-16_08:2021-03-16, 2021-03-16 signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 mlxscore=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 mlxlogscore=999 clxscore=1015 adultscore=0 suspectscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2103160137
Archived-At: <https://mailarchive.ietf.org/arch/msg/bier/zrPz0pvPpbQrVQZ-2ySauxX7Bbc>
Subject: [Bier] Comments on draft-chen-bier-frr-02.
X-BeenThere: bier@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "\"Bit Indexed Explicit Replication discussion list\"" <bier.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/bier>, <mailto:bier-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/bier/>
List-Post: <mailto:bier@ietf.org>
List-Help: <mailto:bier-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/bier>, <mailto:bier-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 16 Mar 2021 21:41:48 -0000

Hi Huaimo,

Please see my comments below.

Some are nits, but if I understand it correctly, the idea of using
multiple per-nbr FRR BIFTs is flawed.

   [I-D.merling-bier-frr] proposes a tunnel-based fast re-route (FRR)
   ... Before the
   primary bit mask is recomputed and updated, some of BIER packets may
   be forwarded incorrectly.

Would like to see elaborations on why some of the packets may be
forwarded incorrectly - especially if you consider the approach
at the end of this mail.

   This document describes a mechanism for fast re-route (FRR)
   protection against the failure of a node or link in the core of a
   BIER domain, which resolves the above issue.  It is based on LFA,
   which is called LFA-based BIER-FRR.

Unicast FRR can be based on many mechanisms, and BIER FRR can simply
follow suit. It does not have to be limited to LFA or tunnel - simple
ECMP can also work if there are ECMP paths (if an ECMP branch is no
longer available you can simply take another one).

   In normal operations, the normal BIFT is used to forward BIER
   packets.  When a neighbor fails, the BFR as PLR uses the FRR BIFT for
   the neighbor to forward BIER packets.  For a BIER packet to traverse
   the BFR and the failed neighbor, the BFR reroutes the packet around
   the failed neighbor using the FRR BIFT for the neighbor.  For a BIER
   packet to traverse the BFR and any other neighbors, the BFR forwards
   the packet to its expected next hop neighbors using the forwarding
   entries with these BFR neighbors in the FRR BIFT.

I do not see why there is a need for per-neighbor FRR BIFT. It is also not
clear how the switch between normal BIFT and FRR BIFT is done - in fact
I think it is flawed - more on that later.

   From the BIRT on the BFR, a "Bit Index Forwarding Table" (BIFT) is
   derived.  In addition to having a route to a BFER in each row of the
   BIFT which is the same as the BIRT, it has a "Forwarding Bit Mask"
   (F-BM) in its each row.  For the rows in the BIRT that have the same
   SI and the same BFR-NBR, the F-BM for each of these rows in the BIFT
   is the logical OR of the BitStrings of these rows.

Need to be a bit more strict here. A row in BIFT is about a
particular BFER, which could be reached via two ECMP nbrs.
The F-BM is really for a nbr, not for a row. See Figure 6 in RFC8279.

   When a BFR receives a packet, for each BFER k (from the rightmost to
   the leftmost) represented in the SI and BitString of the packet, if
   BFER k is the BFR itself, the BFR copies the packet, sends the copy
   to the multicast flow overlay and clears bit k in the original
   packet; otherwise the BFR finds the row (i.e., forwarding entry) in
   the BIFT for the sub-domain using the SI and BitString as the key or
   say index, and then copies, updates and forwards the packet to the
   BFR-NBR (i.e., the next hop) indicated by the row (i.e., forwarding
   entry).

Strictly speaking, the BIFT is for <sub-domain, SI> (if we ignore
different bitstringLen), and the lookup key is 'k' not the entire bitstring.

   The FRR-BIRT for BFR-NBR X of the BFR considers the failure of X and
   maps the BFR-id (in the sub-domain) of a BFER to the BFR-prefix of

A nit here - strictly speaking it's not that you map the bfr-id to bier
prefix in BIRT. BIRT is built based on how a BIER prefix is reached,
and the mapping is the other way around - you map the prefix to a BFR-id
when you derive the BIFTs from BIRT.

   The BFR may build the FRR-BIRT for BFR-NBR X by copying its BIRT to
   the FRR-BIRT first, and then change the next hop with value BFR-NBR X
   in the FRR-BIRT to a backup next hop (BNH) to protect against the
   failure of X.  In other wards, for the BFR-id of a BFER in the FRR-
   BIRT for BFR-NBR X, if the next hop BFR-NBR on the path to the BFER
   is X, it is changed to a BNH when there is a BNH on a backup path to
   the BFER without going through X and the link from the BFR to X.

   If there is not any BNH to a BFER to protect against the failure of
   X, the next hop BFR-NBR X to the BFER in the FRR-BIRT for BFR-NBR X
   is changed to NULL.  For a multicast packet having the BFER as one of
   its destinations, if the next hop BFR-NBR to the BFER is NULL, the
   BFR does not send the packet to the next hop BFR-NBR NULL but drops
   it when X fails.

A nit - it's not that the packdet is dropped. Rather, the bit for that
BFER is simply cleared.

So for BFERs not affected by X's failure, they're still present in
X's FRR BIFT and are the same as in the normal BIFT. Keeping these
per-nbr FRR BIFTs with those unaffected entries
just does not make sense - you might as well have one BIFT in which
each row includes ECMP/backup branches. Of course, this is implementation
details/preferences, but:

- it's not good to specify this controversial implementation details
- switching to using FRR BIFT is actually flawed - see later comments.

   The forwarding procedure defined in [RFC8279] is updated/enhanced for
   a FRR-BIFT to consider the case where the next hop BFR-NBR to a BFER
   is NULL.  For a multicast packet with the BitString indicating a BFER
   as one of its destinations, the updated forwarding procedure checks
   whether the next hop BFR-NBR to the BFER in the FRR-BIFT is NULL.  If
   it is NULL, the procedure will not send the packet to this next hop
   BFR-NBR NULL but drop the packet.

A nit - not "drop the packet" but simply clear the bit.
Additionally, even when you do not support FRR you also have situations
whwere some BFERs are simply not reachable. In other words, clearing
the bit for those BFERs is the base requirement/assumption in RFC8279,
not a update/enhancement.

   The FRR-BIFTs will be pre-computed and installed ready for activation
   when a failure is detected.  Once the BFR detects the failure of its
   BFR-NBR X, it activates the FRR-BIFT for X to forward packets with
   BIER headers and de-activates its BIFT.  After activation of the FRR-
   BIFT, it remains in effect until it is no longer required.

Let's say this BFR has several BFR neighbors (including X and W).
X fails first and W fails instantly after that.
Which FRR BIFT do you use? X's FRR BIFT does not consider W's failure
and W's FRR BIFT does not consider X's failure, so using either one alone
has problems. Notice that this is different from the typical
"multiple failure" scenario - it's not that X and W may depend on each
other but it could be that some BFERs have a common backup neighbor Y, yet
if you use X's FRR BIFT then those BFERs normally reachable via W
are not protected now that W also fails. Similarly, if you use W's
FRR BIFT then those BFERs normally reachable via X are not protected
now that X also fails.

That's why a single BIFT should be used for both normal and FRR forwarding,
just like in unicast case.

   The number of entries in a FRR BIFT is the number of BFERs.  Each FRR
   BIFT on a BFR can be compressed through combining all the entries
   with the same BFR-BNR and F-BM into one entry.  The number of entries
   in a compressed FRR BIFT is the number of neighbors of the BFR minus
   one.

   For example, the compressed FRR-BIFT for BFR C on BFR B is shown in
   Figure 7.  The number of entries in it is three, which equals the
   number (four) of neighbors of BFR B minus one.

                 +----------------+---------+------------+
                 |     BFR-id     |  F-BM   |  BFR-NBR   |
                 | (SI:BitString) |         | (Next Hop) |
                 +================+=========+============+
                 | 1, 4 (0:01001) |  01001  |     G      |
                 +----------------+---------+------------+
                 | 2, 3 (0:00110) |  00110  |     E      |
                 +----------------+---------+------------+
                 |  5 (0:10000)   |  10000  |     A      |
                 +----------------+---------+------------+

             Figure 7: Compressed FRR BIFT for BFR C on BFR B

   For a BIER packet with a BFR-ID as a destination, the entry
   containing the BFR-ID is used to forward the packet.

Not sure of the benefit of compression here. It makes the lookup more
complicated. If the memory consumption is a concern, just get rid of
per-nbr FRR-BIT and use a single one. Additionally, the F-BM and BFR-NBR
information can be considered forwarding information that can be pointed
at by multiple BIFT entries, so the above compression does not really
give you much savings.

   Once BFR B detects the failure of its BFR-NBR X, after receiving the
   packet from BFR A, BFR B copies, updates and sends the packet using
   the FRR-BIFT for X on BFR B to avoid X and link from B to X according
   to the forwarding procedure defined in [RFC8279].

   For example, once BFR B detects the failure of its BFR-NBR C, after
   receiving the packet from BFR A, BFR B copies, updates and sends the
   packet to BFR G and BFR E using the FRR-BIFT for BFR C on BFR B to
   avoid C and link from B to C.

See earlier comments about failure of multiple neighbors (who do not
use each other for backup). Using a per-nbr FRR BIFT not only is
unnecessary, but also has problems.

A better way is to simply have a single BIFT for both normal and FRR
forwarding. Each entry has some ECMP and/or primary/backup branches,
and you simply use another ECMP branch or a backup branch when the
normally used branch fails. A backup branch can go through completely
different nbr, or go through the same neighbor but via a tunnel.

Jeffrey

Juniper Business Use Only