Re: [Rift] AD Review of draft-ietf-rift-rift-16 (4.2.3.3.1)

Antoni Przygienda <prz@juniper.net> Wed, 15 February 2023 14:26 UTC

Return-Path: <prz@juniper.net>
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 9812AC152574; Wed, 15 Feb 2023 06:26:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=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="SZPlYhc4"; dkim=pass (1024-bit key) header.d=juniper.net header.b="Y6KgK7+l"
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KVATmGwwi9CT; Wed, 15 Feb 2023 06:26:10 -0800 (PST)
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 47190C1595E5; Wed, 15 Feb 2023 06:26:10 -0800 (PST)
Received: from pps.filterd (m0108160.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31FBvNK8021936; Wed, 15 Feb 2023 06:26:09 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=PPS1017; bh=JwJv2g6u5UAjEmWzigcOmXfoCIKpiMKstlbLLZs2EGI=; b=SZPlYhc4rUqSdPLYi6q8Pmp3Ml3qr4Xh2WTvwfnWSsi+ToNbVUbvOJkOHw9kNSGzORxL HAyfustE2S7cJEkvOjcjOjSAO6lSB3GGxqxNOnObAHnp+K+IhyRCpEGlbXUvfk5f0i9/ 8lomZ95PUUux6j7KfBwYeH26eO+yOQeoZcfNsNbbKWGj5LB1fVDYKBgdjBGAwIjX4e5V ac6ZmYRUnUuLen4OP0RnY7xQ3M0rhHaITLS5DpPyyyZxwI73NTKvOwD9xLk4GaVVpVgl sden7vVBBn/SG/DV9OPRE6bhxerdi5wPpjp+0n1mNLwWIeuquCF08iMSRO/+BkvPW8Yf /A==
Received: from cy4pr02cu007-vft-obe.outbound.protection.outlook.com (mail-westcentralusazlp17011018.outbound.protection.outlook.com [40.93.6.18]) by mx0b-00273201.pphosted.com (PPS) with ESMTPS id 3nrxyr89b8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 Feb 2023 06:26:08 -0800
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AwJqU6L17b0FzmvT4lM5iPud72weZu+51NvOHbZhjx8nHaBP27a/0yrzAfyKt9vtjAU7jH2xAg+J8QBR7EIIKJpQys4pB2cHkwBOCZmmY5/PUxLcwOPiRB96rONlPeUeWeJMBYZcPBDm+77/gXJ6jkMJPyu9c1+qYwrHIx9HisUrRACa05yEMpauNOr8GAJf9acR/gJ+GfhFSOpidZGOdSquM/yg96YQJunVdXBt1HXDwK4/H6jdcgZye34DFt6A+QhOx5F5qBkGBWniYxDIH1mJffoKC5cZzLEJfLooi7gT1oulK3BdjZ/AAmVWyDB0zRXFxiZCKX6Bn6iPoorpAA==
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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JwJv2g6u5UAjEmWzigcOmXfoCIKpiMKstlbLLZs2EGI=; b=Opo9OcEg7Legnjqt+dttyUDNfrK+ufpNo9gS4Uh8ohrw/P2g4W+FvxoFHpvQwh9GXsz0MVcYV6uznevsD4mQYkKIMuuJXI+n1GPGR6xyosVAOlCtSF4L5mbxCEPY6bWnbkA7KqnVeuw4FDQugBfvkWeiS+cj6SmKsJLqdOrKxg162wuA6vdhtjy8w0C5KBBx8+ajNedNaIih+ka865jkTuTWhmUnL8tQFiFeLKIQvqBUdlR3kpmHOQHb8St09QsK2ekIunu1B2JDGN621U7DPEOodBDCdPJIg+i8uVjW0cs1nqwQdYeZnQKCK9nldOKZqXFY5oLwuzeKTgMjuttAbQ==
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=JwJv2g6u5UAjEmWzigcOmXfoCIKpiMKstlbLLZs2EGI=; b=Y6KgK7+lnxP0nfXLxmwzZdhRx/am6RwzvVdS6ENb1xEACuwdMlNfRHi5np7Bbw54/zVnOrbKw9CApMIKmT3z4j/3+KhtDK3tObg+clnCjn/zy51tOQYCr0nf5bj+0xqqwlI+buXttp91SvN0SAz0HJwMKGGNHZmQieXGc2UXKjk=
Received: from CO1PR05MB8492.namprd05.prod.outlook.com (2603:10b6:303:eb::7) by DM6PR05MB6778.namprd05.prod.outlook.com (2603:10b6:5:1f6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24; Wed, 15 Feb 2023 14:26:00 +0000
Received: from CO1PR05MB8492.namprd05.prod.outlook.com ([fe80::a9a5:986a:63e9:85fc]) by CO1PR05MB8492.namprd05.prod.outlook.com ([fe80::a9a5:986a:63e9:85fc%6]) with mapi id 15.20.6086.026; Wed, 15 Feb 2023 14:25:59 +0000
From: Antoni Przygienda <prz@juniper.net>
To: Alvaro Retana <aretana.ietf@gmail.com>, Jordan Head <jhead@juniper.net>
CC: "draft-ietf-rift-rift@ietf.org" <draft-ietf-rift-rift@ietf.org>, "rift-chairs@ietf.org" <rift-chairs@ietf.org>, "rift@ietf.org" <rift@ietf.org>, "EXT-zhang.zheng@zte.com.cn" <zhang.zheng@zte.com.cn>
Thread-Topic: AD Review of draft-ietf-rift-rift-16 (4.2.3.3.1)
Thread-Index: AQHZQT1xaTeFX5X0kUK45srdl4K4qq7QBV+f
Date: Wed, 15 Feb 2023 14:25:59 +0000
Message-ID: <CO1PR05MB849230A563339927838FB129ACA39@CO1PR05MB8492.namprd05.prod.outlook.com>
References: <CAMMESszF5yKx6t5nQNX8XhM_38iO8cdEWHoMsVOUDfsJiZvh0w@mail.gmail.com>
In-Reply-To: <CAMMESszF5yKx6t5nQNX8XhM_38iO8cdEWHoMsVOUDfsJiZvh0w@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=True; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2023-02-15T13:46:38.3028695Z; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ContentBits=0; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Method=Standard
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CO1PR05MB8492:EE_|DM6PR05MB6778:EE_
x-ms-office365-filtering-correlation-id: 71c5c52c-2ec1-4cb0-cc74-08db0f608f55
x-ld-processed: bea78b3c-4cdb-4130-854a-1d193232e5f4,ExtAddr
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: OjMX+osH6cS3IDfwgP5fpi5SpaOQZ2rCRGakWWXRU7zZlEMOiNgnD/iKlSXcx0O81/Vn0G267CCDZOsgjL6H9vMysC4z3cxAbGOJW+bqBEOhBbwjMWp5fsZLyPlChjw0/AkTtJZw6SqghopS+SzvmItGEhXGRLbLFA3iPQ2EJOUZ/XxAVCApdufEskG2onqu5C/JgZN8e8SuaH+P+5BpYzW7RFeC5xODewF5TRAEzwETl1YA+2ch3WpgUstQ7qbMrVTCLKA3VUbTLa0DpX2I5ex4rmOEJkO3npuC3pf3+8wewtbHJmOu0r8aBSe8kLHhZHVqD3UXngwtCg/TNTYKpFAid3GXcnno2NybK99tm17FH6YLDHE/tQBAig6euiA/Qmt6tW0TKaECMCZdZo2QNWtfmwqN1EnzC/7nFP54fA71GYBd2u9j/GIHEQAEyHzCUQBHoR0uJfnCsluaghSSnp6MewcHXLQ9KCQceS+45GTP0yzFS502mGdNao3xINnA+itMathOX5sOQyXaKi7JLJEPN74JQSFAidpEzvCKLgWurWJM8KKO9FxM8HsWoZHfT5DqriLXGFuYEMFHmY+mEpnRSkmC2dX4hJPkwLQd+zmxM3RZ44/qkjA2LwgU+pt+n79hDxRXwsT9AqSSms0aWbLhfGe4IFrBeSTvlAAas3z60twCAgtiFK6Lc+P+5xRpPgdioioDY9rwJZSfFjYGcQ==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO1PR05MB8492.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(39860400002)(346002)(136003)(366004)(376002)(396003)(451199018)(186003)(9686003)(26005)(478600001)(91956017)(66946007)(66446008)(66476007)(64756008)(6506007)(316002)(110136005)(76116006)(66556008)(8676002)(6636002)(4326008)(54906003)(7696005)(53546011)(83380400001)(66899018)(5660300002)(38100700002)(41300700001)(52536014)(8936002)(30864003)(2906002)(122000001)(33656002)(86362001)(38070700005)(71200400001)(55016003); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: wm94AxtSjSd79PFxUfx81XLJhyJZQb7CXAzZlkjDP6hw6c4UcJ9FBjXHCn+5hshEghuk3L23tS6LBKM+mkJB/U0EItq7iNoG4MxUY6ufJ1hQSwmhWpe1vkUnEbOErJEPb6mL+uUji8fqY7l09zHQVF63cT8gdPOW2gk8ydNqIvmojc/yJ0RtqSxPyJ6MGT+tmeSJu/+q2VM1m/YsrVjWQYCifb28JUW2iwSIUd3AiPFeP7BJIzTzjljO2PCfISixrHU9PJbpCw0Hh57qGPiVeC4rDwJ/I+LWZq+1D+2g37oTrQHI5ASS+QGuZuAB1AVsqXQCbQfNjhaV/mi5vvAAIno6uOGAYkFeBwJddq/cBKG5v08XnCOUF8607G5f7cBYyUnOjCndFSgwejHHvbXkc8xF7M8GhyMvNRndlrLfKV5DNZREbVozAX+lssvRw2Mjk7nzlIGaLiAxXA8zlKMaArhkS1neG1thNdoInfQU5AxrIHZogH+daJZ+i/z1VUVWNNZdGZSfGN2S+8cXy0SVD92PebWazpakOpehIiKIB/QPuHHQ3gw4O+DQ+eYUOEV3FHZgz368RuPVHWcZMIecA6qtkFe8tV3ALri+AWEz/tAiv98fEcJz7nXhdp5iHE4VhmaTVdSFHcJaInti7LCF7pT6uTBPoFrXK4RBAbiH1AdbwDvctw8CPVcr9OJxjlwERNs4DNmdGyMkLbqTu+09+RgueXdv5N8dUOqovP+IQ5xKUEAwe+JrAiud9m4/2CfY5SfViLT3Nhsj4fxnellAv8Gi0qxxb9JBQrRq6m5Bi/G1rv/w2rfrLlorLQh7dC+aK/ZivKLj7TcH+j3toIbRMVIHe8gD47XzL1xKmKkLTHrFNv62mbc5rZhl8pvwH7ltWqK22mpE7sYaJ7Rat920m6hVBjH6wkbzfez6D+6Xm3LmtqD+Z8RRsfWfnvfHDsvcozWBfUqIzmqQciMLHhyqzAP9jqa1Z+Mb1d0yNLtA76EQmJEUlzg1x/YyKJ+EZws0yStUICXJhecH8QBE/VWfqZ+iu67GPqeCkmW4d4jJBCZLtziZteXwDJLI/p6knZaCwI8P+7W9ywIAutV9+K04mduj/KlGpVCCXtdM8IZqdBwyhxFyFRecaaJPPvf4rwygQa/o93h+G3tVeQffxNKETKxfwgc8u6/C/X1ZXHjp7lcklNeQSG64M9k2VxKkRnnYYyeqVxG2O2vUfU/Ryzpb/Ce8nQXYPrPSiakBv3lDLsHIKd3/aQwLCFYIJPRNmV3UTEjqKmANI/mKNaXb90CHwsJ7sa/d7CLhAs+DLOB+InfewGnMVYEDIRFVOiWaxqzqN4uIOzbCE2UQ++upmkaCiW/q/2M5BnXP44773DoZOdGkvfQYMOY+oaJrR+fI6hdBQHGUHzDc4qIiqV4+ENXoJBykgRNVe0qqBtOgfRZ3sh5pOTuZJCLx7Oa0Rf9FDPWZsJ4yXGuEvSzKB26ZY48ufrsWSw+W+hBO88eC2qYvjFtiTUvuNPgqqeQV5SWD/bwtikxNBAAY2kCrihTG6S6g9JHfIZM2/aHfRh2TEWxAYum8Mpc3NNw5X7hX1IeTp/ux
Content-Type: multipart/alternative; boundary="_000_CO1PR05MB849230A563339927838FB129ACA39CO1PR05MB8492namp_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CO1PR05MB8492.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 71c5c52c-2ec1-4cb0-cc74-08db0f608f55
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Feb 2023 14:25:59.8942 (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: tG6JGqWh/Sk/fSWFKWY1K+OAydUAJaZZTNhYqMD5bZLcmcODdDSOG2OH9dMUHYjs
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR05MB6778
X-Proofpoint-ORIG-GUID: Jov600fofK9RxiCo3CUV2B2FjBzxzJHu
X-Proofpoint-GUID: Jov600fofK9RxiCo3CUV2B2FjBzxzJHu
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-15_06,2023-02-15_01,2023-02-09_01
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 mlxlogscore=999 priorityscore=1501 lowpriorityscore=0 malwarescore=0 bulkscore=0 phishscore=0 suspectscore=0 mlxscore=0 impostorscore=0 adultscore=0 clxscore=1011 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302150129
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/eDC1TyNVc_Z2nQkCIL0JVyOPbjI>
Subject: Re: [Rift] AD Review of draft-ietf-rift-rift-16 (4.2.3.3.1)
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.39
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: Wed, 15 Feb 2023 14:26:14 -0000

Inside as <prz>

From: Alvaro Retana <aretana.ietf@gmail.com>
Date: Wednesday, 15 February 2023 at 14:00
To: Jordan Head <jhead@juniper.net>
Cc: draft-ietf-rift-rift@ietf.org <draft-ietf-rift-rift@ietf.org>, rift-chairs@ietf.org <rift-chairs@ietf.org>, rift@ietf.org <rift@ietf.org>, EXT-zhang.zheng@zte.com.cn <zhang.zheng@zte.com.cn>
Subject: AD Review of draft-ietf-rift-rift-16 (4.2.3.3.1)
[External Email. Be cautious of content]


Hi!

This message contains §4.2.3.3.1 and a couple of "detours" -- I
pointed those out with separators; for example I dug introduce
you_are_sending_too_quickly and the comments below indicate that this
way:

===== <you_are_sending_too_quickly> =====
...
===== </you_are_sending_too_quickly> =====


Alvaro.



2448    4.2.3.3.1.  Normative Flooding Procedures

2450       On reception of a TIE with an undefined level value in the packet
2451       header the node MAY issue a warning and indiscriminately discard the
2452       packet.  Such packets can be useful however to establish e.g. via
2453       `instance_name`, `name` and `originator` elements in `LIEPacket`
2454       whether the cabling of the node fulfills expectations, even before
2455       ZTP procedures determine levels across the topology.

[] This paragraph seems out of place.


<prz> must have been moved during one of the endless rewrites/moves.
From 2nd sentence on this applies to LIEs and not TIEs and should be moved into LIE processing section.



[major] "MAY issue a warning and indiscriminately discard the packet"

Given that this is an option, what are the considerations to do so?
Is the warning due to the "TIE with an undefined level" or to the fact
that the packer was discarded?  If the former, can the actions be
performed independently of each other; for example, drop the packet
but not log a warning?

<prz> specification is completely permissive here as long as SOME warning is given since such a TIE should never be sent by a correct implementation.



[minor] "indiscriminately discard...packets can be useful"

I'm guessing that "indiscriminately" was used to emphasize the action.
If the packet can se useful, but not flooded (since we're in this
section), maybe the correct action is to ignore (not to discard).  ??

<prz> as you pointed out, from 2nd sentence on it should be inLIE processing section. So such a TIE should never be sent by a correct implementation and hence I think discard & log is the correct action.



[minor] "useful however to establish e.g. via `instance_name`, `name`
and `originator` elements in `LIEPacket` whether the cabling of the
node fulfills expectations"

I'm guessing this is not explained anywhere and that it is probably an
operational issue to be covered in the applicability document, right?

<prz> well, the LIE processing section explains when a LIE is acceptable. A node can send
`instance_name`, `name` and such stuff optionally on LIEs and with that those elements could be compared on
The remote side to an existing expectation to catch sophisticated multi-instance, non-expected node on other
Sie and other miscablings scenarios. This is not strictly protocol spec AFAIS but optional implementation elements. AFAIS
None of that stuff is normative unless you think we should write lots of verbiage with “MAY implement this and then
MAY do this” which I don’t think we’ll make the document any easier to read or contribute to interoperability.


2457       This section specifies the precise, normative flooding mechanism and
2458       can be omitted unless the reader is pursuing an implementation of the
2459       protocol or looks for a deep understanding of underlying information
2460       distribution mechanism.

[] This seems to be a better first-paragraph for the section.



2462       Flooding Procedures are described in terms of a flooding state of an
2463       adjacency and resulting operations on it driven by packet arrivals.
2464       The FSM itself has basically just a single state and is not well
2465       suited to represent the behavior.  An implementation MUST either
2466       implement the given procedures in a verbatim manner or behave on the
2467       wire in the same way as the provided normative procedures of this
2468       paragraph.

[nit] s/a flooding state/the flooding state


[minor] "The FSM itself has basically just a single state and is not
well suited to represent the behavior."

There's no TIE FSM, right?  Then why even mention it?

<prz> yes, no problem revmoing it. It’s basically saying WHY there is no FSM 😉



[major] "MUST either implement the given procedures in a verbatim
manner or behave on the wire in the same way as the provided normative
procedures of this paragraph."

Normative requirements with options are not great.  s/MUST/is expected to

Also, I don't know what the difference is between the options.

<prz> the difference is subtle and I ran at that stuff in interops on other things where people were testing whether I implemented the spec FSMs precisely (which I didn’t) but instead I implemented something that behaved externally exactly like the FSM of the spec. That led to a _loooong_ discussion with customer why they cannot get logs from me indicating the FSM states of the spec though my implementatqion was completely interoperable and acutally worked better than the spec when two of my vendors’ boxes were hooked up together 😉 Philosophically, a spec should be making absolut minimum possible normative and minimum possible is normalizing “external behavior on the wire” and nothing else. Though in practical terms (good) specs give of course FSM/MSC/procedures and so on …

So, if you want we can modify that to

“MUST implement a behavior that is externally indistinguishable from verbatim implementation of the FSMs and normative procedures given here”

I would think this is less clear than what is here already …



2470       RIFT does not specify any kind of flood rate limiting since such
2471       specifications always assume particular points in available
2472       technology speeds and feeds and those points are shifting at faster
2473       and faster rate (speed of light holding for the moment).

[] Judgement about other technology. :-(

Suggestion> RIFT does not specify any kind of flood rate limiting.
Instead, the packets provide hints...

<prz> I guess I’m not woke enough given no other technology is even named but whatever makes is politically more correct is ok with me :-/




2475       To help with adjustement of flooding speeds the encoded packets
2476       provide hints to react accordingly to losses or overruns via
2477       `you_are_sending_too_quickly` in `LIEPacket` and `Packet Number` in
2478       security envelope described in Section 4.4.3.  Flooding of all
2479       corresponding topology exchange elements SHOULD be performed at
2480       highest feasible rate whereas the rate of transmission MUST be
2481       throttled by reacting to packet elements and adequate features of the
2482       system such as e.g. queue lengths or congestion indications in the
2483       protocol packets.

[nit] s/in `LIEPacket`/in the `LIEPacket`

[nit] s/in security envelope/in the security envelope



===== <you_are_sending_too_quickly> =====

[] I went looking for `you_are_sending_too_quickly`:

2952    4.2.3.5.  'Flood Only Node TIEs' Bit

2954       RIFT includes an optional ECN (Explicit Congestion Notification)
2955       mechanism to prevent "flooding inrush" on restart or bring-up with
2956       many southbound neighbors.  A node MAY set on its LIEs the
2957       corresponding `you_are_sending_too_quickly` flag to indicate to the
2958       neighbor that it should temporarily flood node TIEs only to it and
2959       slow down the flooding of any other TIEs.  It SHOULD only set it in
2960       the southbound direction.  The receiving node SHOULD accommodate the
2961       request to lessen the flooding load on the affected node if south of
2962       the sender and SHOULD ignore the indication if northbound.

[nit] s/flood node TIEs only/only flood Node TIEs


[major] "It SHOULD only set it in the southbound direction."

The "SHOULD only" construct is always confusing.

s/
   A node MAY set on its LIEs the corresponding `you_are_sending_too_quickly`
   flag to indicate to the neighbor that it should temporarily flood node TIEs
   only to it and slow down the flooding of any other TIEs.  It SHOULD only
   set it in the southbound direction.
/
   A node MAY set the `you_are_sending_too_quickly` flag in its LIEs to
   indicate to southbound neighbors to temporarily only flood Node TIEs
   to it and slow down the flooding of any other TIEs.


[major] "The receiving node ...SHOULD ignore the indication if northbound."

s/northbound/north of the sender

When is it ok to not ignore the indication if north of the sender?
Why is this action recommended and not required?  The schema says that
it is "Ignored when received from southbound neighbor.", which sounds
to me more like a "MUST".


<prz> so


  1.  Yes, SHOULD only _should_ be rewritten 😉
  2.  Why is it still possibly useful to be send northbound? Well, because some implementatons may use it. Observe that southbound identical copies of things are flooded out all interfaces and there is no flood reduction (since it’s one hop only). An implementation may choose to keep one flooding queue for _all_ interafces. It’s arguably simpler. With that it cannot do anything with one neighbor “choking”. Another implementation may be more sophisticated and keep a queue _per_ southbound interface. With that it could do something with such indication (i.e. reorder TIEs it floods and so on). And that’s why it’s written that way, MAY set it and it SHOULD set it only southbound (implicitly MAY set it northbound) . And a very smart node may ignore the SHOULD ignore on recption when northbound since it may do something with it.

None of that is “just random ruminations” but direct discussons with different implementations and implications of that flag as people use it in different implementations today.




2964       Obviously this mechanism is most useful in the southbound direction.
2965       The distribution of node TIEs guarantees correct behavior of
2966       algorithms like disaggregation or default route origination.
2967       Furthermore though, the use of this bit presents an inherent trade-
2968       off between processing load and convergence speed since suppressing
2969       flooding of northbound prefixes from neighbors permanently will lead
2970       to traffic loss.

[minor] "Obviously this mechanism is most useful in the southbound direction."

It may not be obvious to everyone...

Is there any utility in the other direction?  If
`you_are_sending_too_quickly` is ignored anyway, it seems like this
sentence is not needed.

<prz> I explained above. Putting that into spec is however overspecification and starting to ruminate on implementation details which become obvious to someone who implements/deploys and are basically just fluff obscuring stuff for anybody else. Hence I would NOT include it in the spec.



===== </you_are_sending_too_quickly> =====



===== <Packet Number> =====

[] I also went looking for `Packet Number`.

Where's the Security Envelope in the schema?


<prz> I’m lost what you mean, in 4.4.3 first figure is the envelope with packet number prominent in it



>From §4.4.3:

5275       Packet Number:
5276          16 bits.  An optional, per adjacency, per packet type
5277          monotonically increasing number rolling over using sequence number
5278          arithmetic defined in Appendix A.  A node SHOULD correctly set the
5279          number on subsequent packets or otherwise MUST set the value to
5280          `undefined_packet_number` as provided in the schema.  This number
5281          can be used to detect losses and misordering in flooding for
5282          either operational purposes or in implementation to adjust
5283          flooding behavior to current link or buffer quality.  This number
5284          MUST NOT be used to discard or validate the correctness of
5285          packets.  Packet numbers are incremented on each interface and
5286          within that for each type of packet independently.  This allows to
5287          parallelize packet generation and processing for different types
5288          within an implementation if so desired.

[nit] s/using sequence number arithmetic/using the sequence number arithmetic


[major] "SHOULD correctly set the number on subsequent packets"

This is not a good Normative statement -- among other things, by
recommending it you're opening the door for it to be ok for the number
to not be "correctly set", not to mention the definition of "correct",
etc.

Given the references to Appendix A, it is Normative (right?), so
perhaps the right approach is to simply drop the sentence.

Suggestion>
s/
   An optional, per adjacency, per packet type monotonically increasing
   number rolling over using sequence number arithmetic defined in
   Appendix A.  A node SHOULD correctly set the number on subsequent
   packets or otherwise MUST set the value to `undefined_packet_number`
   as provided in the schema.
/
   An optional, per adjacency, per packet type number set using the
   sequence number arithmetic defined in Appendix A.  If the arithmetic
   in Appendix A is not used the node MUST set the value to
   `undefined_packet_number`.


<prz> Agree. This is better …


===== </Packet Number> =====



===== <Appendix A> =====

[] I also looked at Appendix A.

6968    Appendix A.  Sequence Number Binary Arithmetic

6970       The only reasonably reference to a cleaner than [RFC1982] sequence
6971       number solution is given in [Wikipedia].  It basically converts the
6972       problem into two complement's arithmetic.  Assuming a straight two
6973       complement's subtractions on the bit-width of the sequence number the
6974       corresponding >: and =: relations are defined as:

[] I'm not going to pretend to understand the details, but it seems
that you're saying that RFC1982 is not great and that what is on
Wikipedia is better -- Wikipedia claims the same thing.  Besides not
comparing what RIFT uses with other technology...

The references to Appendix A are Normative (as in, Appendix A is how
RIFT does it), right?  But the reference to RFC1982 is listed as
Normative while the one to Wikipedia is Informative.  Which one should
the implementation follow?  The options I see are: RFC1982, Wikipedia,
or Appendix A (the specification is self-contained there).

I would be very happy with the answer being Appendix A as Wikipedia is
not really a stable reference and you already said that RFC1982 is not
a good solution.  This would mean eliminating the two references and
relying on the text in the Appendix.

<prz> Yes, Appendix A is normative. We can kill all the other refs if you want, I personally am coming originally from Academia where publishing anything without showing previous art is called plagiarism so AFAIS _some_ kind of reference to 1982 as informative may be good.



===== </Appendix A> =====



2485       A node SHOULD NOT send out any topology information elements if the
2486       adjacency is not in a "ThreeWay" state.  No further tightening of
2487       this rule as to e.g. sequence is possible due to possible link
2488       buffering and re-ordering of LIEs and TIEs/TIDEs/TIREs in a real
2489       implementation for e.g.  performance purposes.

[major] "SHOULD NOT send...if the adjacency is not in a "ThreeWay" state"

Is it ok to ever send TIEs if not in ThreeWay?  Why is this behavior
recommended and not required?


<prz> because an implementation may be very asynchronous and the TIE component not be in sync with the flooding component (we see that today even in some ISIS/OSPF things). Plus, add odd buffering issues in a box these days until a packet finally makes it out. So it cannot be precluded that TIEs are still flying out the box after 3-way is down …

So it’s NOT ok but it can happen despite best intentions. In practidcal terms Hence the SHOULD NOT to make the remote aware that it better deals with the situation.


§4.2.2.1 defines ThreeWay as:

   ThreeWay: this state signifies that ThreeWay valid LIEs from a
   neighbor are received. On achieving this state the link can be
   advertised in `neighbors` element in `NodeTIEElement`.


I read that to mean that the TIE describing the local node MUST NOT be
sent unless in ThreeWay.  But that is different from forwarding other
TIEs.

I saw that the next sentence says that "No further tightening of this
rule as to e.g. sequence is possible..." but what you wrote is not
clear (maybe missing a couple of commas) and it doesn't seem to be
related to origination vs flooding.


<prz> well, should we write something like “SHOULD NOT send _any_ TIEs” ? to cover origination/forwarding/whatever? Until 3-way on a link no TIEs receive/send, end story (modulo the subtle implementation issues I mentioned).




2491       A node MUST drop any received TIEs/TIDEs/TIREs unless it is in
2492       ThreeWay state.

[] This sentence sort of answers some of my questions above.

<prz> Ah ok, so it’s already there …



2494       TIDEs and TIREs MUST NOT be re-flooded the way TIEs of other nodes
2495       MUST be always generated by the node itself and cross only to the
2496       neighboring node.

[] Suggestion>
   TIEs generated by other nodes MUST be re-flooded.  TIDEs and TIREs
   MUST NOT be re-flooded.


<prz> yes, it’s bits lot verbiage that’s more confusing than helpful


Juniper Business Use Only