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

Jordan Head <jhead@juniper.net> Mon, 13 March 2023 14:24 UTC

Return-Path: <jhead@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 7AD4EC15C522; Mon, 13 Mar 2023 07:24:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.797
X-Spam-Level:
X-Spam-Status: No, score=-2.797 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_DNSWL_LOW=-0.7, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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="u7vGdY52"; dkim=pass (1024-bit key) header.d=juniper.net header.b="HMuHkmnB"
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 6SZ33lBB5v3T; Mon, 13 Mar 2023 07:24:40 -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 BAAFFC159823; Mon, 13 Mar 2023 07:24:27 -0700 (PDT)
Received: from pps.filterd (m0108161.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32DA8hbi032319; Mon, 13 Mar 2023 07:24:26 -0700
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=3GlOJJzCM0f5Bh92r2CcfVpyMuzPw/ISbRBMduIXc6o=; b=u7vGdY52BSs+CZhqTA0ui3etUSIovc9vdYPRVuv1khH7p9gZXttJ9ffn69Hr340mdcyZ JAjREnY6GxofTDraMWiMRmWeFNIpZA7d8+CXZDYEKWJnR9SBL2XVDTjV5TNX9arkPZ5b PJNAytWxD0LGreHynJnRr7mFPIrCqjYdPuoCfDbdFTo8GyLY92izoMuD+uqCZC4iKi7N egPUyMX7QGmfdkOeuDSAgCrphXiZwaRW/kbSDhKXC7VaB/oJswdyrwboBtbH7Z4ETCGl Z42FkRymEblODU+rMoAZRy54wHawLf6QEw/XMvXajEPW4LeWarDqWceAd0d58ErFpBY8 UA==
Received: from mw2pr02cu002-vft-obe.outbound.protection.outlook.com (mail-westus2azlp17013039.outbound.protection.outlook.com [40.93.10.39]) by mx0b-00273201.pphosted.com (PPS) with ESMTPS id 3pa1tkgfss-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 13 Mar 2023 07:24:26 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Icb51m2QuXyswIjmhyPZxnDiFv7F5jr5ZLk1LG1R2errJHcNn5l2BA1Ls13ig45vOIxM2B9N3+S/8QRyb9UkrgA2A1u4DfhyDGImQOViKc3mPsgE4e6bcIWTSijoF/MgT5K/ZO4vfe8Pahx5mdjSz65BfEK5sZUIHm1EOLoNEYCpDHW4IxROKOC2wcD9FF48sc/oPNXXy07QWvSynwXT9vRYxvNOl5qeynPVuu4d6MQJuZKQmsuNYfUBHG2rnK7N+7YX+4kMUpy0Ahyz0H+xHufcVm/JD1Alqt6uw/yRvKrU+njGgxDixuDCIoZDOQNePEGZ9yIqoPOmV4QtQlBoBA==
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=3GlOJJzCM0f5Bh92r2CcfVpyMuzPw/ISbRBMduIXc6o=; b=XLxujCK/SqJz7m3mnuEqHufYkvsfAuZ2cZ5CX9d4lvvE97Lxv/4g2R6lSRqYA7/Ha51jkd64Ilxq6uh9W7l6qBOr3ln5uoNDvF6beK23MDczptao5uwyG6YJVQdzP5B2ujSDCsFpmGYZ3lolcoUaZ3XuIWgrCXsQo7whKNR6VHikcQaxcSdobxTW1ZMlcO6qGnJ4S1uPv88ln8cPKCXgTirwViBfAb7l1CDMrmGLQmU8axE2lwuk6lTls9s0wCWDXFhyWXmY+vuKrssSPajla8plntvvTXyvSJ8CQ0jvgerjMqIckfyrnSO/yEuML47RKLM7R4ldHz3SY/kUz/mf4Q==
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=3GlOJJzCM0f5Bh92r2CcfVpyMuzPw/ISbRBMduIXc6o=; b=HMuHkmnBXcbYT4GRbFx1WcNjmAK0MZkvt7e7eB0vym/PFudZgy7B/lqEjNNuRC8jCZztDlJpir9oP6d+tHgX1B6ESVr2EZEdgdbKO3VEfH2bfAo2v1eiedxhrde8qIX0U51REyspn8s7DHJAKbNGBhUjs4XB0CjTuERWN57hDRU=
Received: from BL0PR05MB5362.namprd05.prod.outlook.com (2603:10b6:208:67::16) by DS0PR05MB9174.namprd05.prod.outlook.com (2603:10b6:8:c6::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.26; Mon, 13 Mar 2023 14:24:22 +0000
Received: from BL0PR05MB5362.namprd05.prod.outlook.com ([fe80::9aab:bbdf:73ae:82e6]) by BL0PR05MB5362.namprd05.prod.outlook.com ([fe80::9aab:bbdf:73ae:82e6%7]) with mapi id 15.20.6178.024; Mon, 13 Mar 2023 14:24:22 +0000
From: Jordan Head <jhead@juniper.net>
To: Tony Przygienda <tonysietf@gmail.com>, Alvaro Retana <aretana.ietf@gmail.com>
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: [Rift] AD Review of draft-ietf-rift-rift-16 (4.2.3.3)
Thread-Index: AQHZQHRFnFa6kJEM5k2jJV2b1l71bK7bcQmAgB06AYA=
Date: Mon, 13 Mar 2023 14:24:22 +0000
Message-ID: <0F46B279-68F0-42C6-92E5-C851B39169AE@juniper.net>
References: <CAMMESsysz8Yk7e2Snzq7Rivihfv50=F=ks3X_cAUsFKoaaSCiQ@mail.gmail.com> <CA+wi2hPnke3z8Mf0gwnmZw7tGktSHsk_Zzo1bgzHf0MuQH=JLg@mail.gmail.com>
In-Reply-To: <CA+wi2hPnke3z8Mf0gwnmZw7tGktSHsk_Zzo1bgzHf0MuQH=JLg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/16.70.23021201
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=true; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ContentBits=0; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ActionId=59e3786c-da4f-4a99-9c5f-6a2e7b2b3505; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2023-03-13T14:21:19Z; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Method=Standard; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Name=Juniper Business Use Only;MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=true;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL0PR05MB5362:EE_|DS0PR05MB9174:EE_
x-ms-office365-filtering-correlation-id: 43033952-89bf-4333-5acc-08db23cea3e3
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: kJ3RAk/MNxTdZ/OrTx8pgZHBVO0bR0RK7EiN51h0uDoIzepDammKN+TgUrLebwipPNv1xqz5U1C8KT6tt4KXjAs2G9j6MMfJPqRQudGzBfL0ZekYJHnG9ReIM9y+pDPtmaCHkgIpQcxMA6tMYDiMi0wZeIqa4cIAnX9EVtQUlmXT7rUeNG7q1ssbMB82mi/wBU/fA/6wf5wru/HzdsrmVKJFC3c1KY6Vr0xCQQn9JAMs/O2FlRL4QqfzQYwKWRvCRzsIvMPEhwSNHvkH4H5Tqx/7iqjfLjB4TSFbqBFLALBLnCzsQeyg1LdPCkhVMW5uXKVvEgQ3inl6uOJAY+/Z9tYXwR2s+0x/FLHI5+h9yJ/PkRP3u6NlPE2wojG5ThJS+98vYjq/v85rY840BYbWsYliL1xfSGiMUVxO9Cl9ZtwDY5FVjldm0dphMHazC+AoT4MLYynK48zYfY5J7IZGph1AQZWd/pWn8vsBhDgyIH98Z1egMJdHBYzgfVGhQuFZSIy0lDyAUNU25cIGQMwEf1s2mQMO7sIVTjt17FBVD+JHieY4dQx6hLV3AzdavEUaNQFS2zrClkL29kULzMfqxnyDnzpyJ+q6Sm+WeKS7aQ71s6gYI2fWpJExnJEoBkUzAwdeI8ihm5QLbxOSf6i3Zf+XtpF+4xwgMXOM34d2b/7GTW2mTGbFa8STG+VdTrlZLZH5Tk/YAEAhI15pxpyx5ecayBHlLyn46vnnDMdaK1Q=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR05MB5362.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(39860400002)(376002)(366004)(346002)(136003)(396003)(451199018)(38070700005)(86362001)(33656002)(122000001)(38100700002)(36756003)(8936002)(2906002)(41300700001)(9326002)(30864003)(5660300002)(54906003)(4326008)(186003)(6506007)(26005)(6512007)(110136005)(316002)(83380400001)(53546011)(2616005)(66446008)(66556008)(91956017)(6486002)(478600001)(66476007)(66946007)(76116006)(8676002)(71200400001)(64756008)(45980500001); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: XrvMZ4XDI36pia8qaQbLfm+redn+OawBj0k1KqqhwX3ixlc/vZhiYVnyR/i4tZvgALEkelzpqge3XXmoYxDaqVDahaGjPIbxoItpMXg2sfbc/KGtFkhI/PnlP5pqWCTDss22STjxBgS3TuXEkSvOUxv3bktJDAhwxBtt4RrISisgiUmX661EtvYxSjOuLpnB9DGya7HhmUsUNk4+U1awxSmrTfCJq5Mfv3q5j4UP4DuGTAZLLSbqXdy9bTRQEnDOi1f/gWULIVZFPeCASzVLM72sDgtZX+HJJ72hh5HUW8qei03RqCMEZwwk6cHsSw0tNhrEDA1FUxQ6if43nxmnDw/ROKXdJP8s3R/iCq1deukJgfVnuSa07GdMzqgVLWrukrwpEhGzVVGpZTlFLnlfIeKwlOAfb2uvPQ4Y/mzEDuIrZwehGj3x1q11XUD1mDVgxhcwSeN51NvDZoUANM01NZRLnxMnmhNUJNBW6Lpw+lflCR7yr/fVozsojJaRD3lWj2IILp3IYAfn0JCR72gXwJ6uRtQ4p2JXOYfTIp+GpiIhYSAOoZ4eyNTsNuCxPFEy3VgvcpNqg/BtoKDqGfu4hh6GyMwCkJCTAf2JPsGyV+KvvijJHYpP35Ac0ziaaxJl11VgGLLB4UcMKpisqMbOWDtIvu1QaTQE6opDUxvz3l1tCzENDJUkxPXoU7XlKuOsqJV9Sfs4i+BjUDMT/1fNACbD/6zrb69L0W6RmLji4oIdhsKksPfWU78y21zgrVxi4FOa1z+jO77PzqFE/PO+NHzjZ3T2s4/LJuVhzHhB0XWu+Sv/qutSxXv/vTWdy4x2CZcEAtG/qIKXFy6px2v/lQpHiHy8LQGc8SUg1wA/Ox3ShOEM4dO86ZN3KhXQihdNevqkL28xi9eFbbxNkbsExNahwjGsBZGR+wxdM5axg6jsLxhI5b5z6HZ3w+oY2vXYGeWMPJWemHrDNwFTqbRrR9qpVIqWFeo2ktCQ05MC8UBIkX+4J3TNLfNaGo8oI6eG4y+IlEZPgs6iD0jrcCykaUbo9uz70NmV3PcesnWwThijySsDbYrpqCJhOuaMTE0IxgL1iW6jdwLt23IValDvUCqaxgy+UXTViFMPmiTE+qORcfV1homRcHYtpxDbsqUftAEAFA/4fetTvRalKGc3WGitWoc8EqSpQYMovSoShFl0TcPdsEJISJn5424EKEnzoWYL5I3dJjjzYlaXJ5FGMkwSReO0syR/7MOIgVon7h5gGv2z5xg5Rg/J9p9TgW7nsJCWgH9coSGKsoZN61uXYwnrOVJBUqGH+rjnOCuIWl/ZgnE97OP6J2qt1zIP2rT5gts1mUOb2UMF7JAu0GaxzEfkwOFl9kMbp7fSAfzYfdjRI3QR31pWAzwKG75+AsTUCfg+5H4oWUFi3refRTb0QwiUx5ap9R1cxBh2zl19alU7PijYDegcnhCxp6IAm96+m8bv6IYwUUNYCscOn1LdTihxwlyEpCqX+mARazUfcyGkXyiBMf2m6RwtNXo/7kZxGPiF/pVXtHNxE3ybEMx6Tk+Kvd9jgo3baDmzxWquFwH2ZFxTfw72JKuiKSwjx5sG
Content-Type: multipart/alternative; boundary="_000_0F46B27968F042C692E5C851B39169AEjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL0PR05MB5362.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 43033952-89bf-4333-5acc-08db23cea3e3
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Mar 2023 14:24:22.2517 (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: SPr+MiBsvcZvX012KXTGeK2kshpWTLS6TThzCDw3ogUzsE/V5J4OGXkwvoL8RTQbhC1j3VEbnFWvQj9JQ8/eyQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR05MB9174
X-Proofpoint-GUID: qRdsRPW3g34tGFu_UCtQtfjVdi_Q4ZnY
X-Proofpoint-ORIG-GUID: qRdsRPW3g34tGFu_UCtQtfjVdi_Q4ZnY
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-13_07,2023-03-13_02,2023-02-09_01
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 mlxscore=0 malwarescore=0 suspectscore=0 phishscore=0 mlxlogscore=999 spamscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 clxscore=1015 bulkscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2303130114
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/shhukR8ngMyCa3DR8qAxPIbm-Rw>
Subject: Re: [Rift] AD Review of draft-ietf-rift-rift-16 (4.2.3.3)
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: Mon, 13 Mar 2023 14:24:44 -0000

Hi Alvaro,

My comments inline as jhead>>

Thanks


From: Tony Przygienda tonysietf@gmail.com<mailto:tonysietf@gmail.com>
Date: Wednesday, February 22, 2023 at 3:05 PM
To: Alvaro Retana aretana.ietf@gmail.com<mailto:aretana.ietf@gmail.com>
Cc: Jordan Head jhead@juniper.net<mailto:jhead@juniper.net>, draft-ietf-rift-rift@ietf.org<mailto:draft-ietf-rift-rift@ietf.org> draft-ietf-rift-rift@ietf.org<mailto:draft-ietf-rift-rift@ietf.org>, rift-chairs@ietf.org<mailto:rift-chairs@ietf.org> rift-chairs@ietf.org<mailto:rift-chairs@ietf.org>, rift@ietf.org<mailto:rift@ietf.org> rift@ietf.org<mailto:rift@ietf.org>, EXT-zhang.zheng@zte.com.cn<mailto:EXT-zhang.zheng@zte.com.cn> zhang.zheng@zte.com.cn<mailto:zhang.zheng@zte.com.cn>
Subject: Re: [Rift] AD Review of draft-ietf-rift-rift-16 (4.2.3.3)


[External Email. Be cautious of content]


Hi!

Just 4.2.3.3.


Alvaro.



2404    4.2.3.3.  Flooding

2406       The mechanism used to distribute TIEs is the well-known (albeit
2407       modified in several respects to take advantage of Fat Tree topology)
2408       flooding mechanism used in link-state protocols.  Although flooding
2409       is initially more demanding to implement it avoids many problems with
2410       update style used in diffused computation by distance vector
2411       protocols.  However, since flooding tends to present a significant
2412       burden in large, densely meshed topologies (Fat Trees being
2413       unfortunately such a topology) RIFT provides as solution a close to
2414       optimal global flood reduction and load balancing optimization in
2415       Section 4.2.3.9.

[] "well-known...flooding mechanism used in link-state protocols.
...avoids many problems with...distance vector protocols."

Please don't assume knowledge and remove references/comparisons
to/with other protocols.

    jhead>> See next comment.

[] "close to optimal global flood reduction"

I might have to read §4.2.3.9, but this sounds like marketing to me.

    jhead>> Between the comparisons to other protocols and the "marketing" component, I've removed the first paragraph of the Flooding section.

2417       As described before, TIEs themselves are transported over UDP with
2418       the ports indicated in the LIE exchanges and using the destination
2419       address on which the LIE adjacency has been formed.  For unnumbered
2420       IPv4 interfaces same considerations apply as in other link-state
2421       routing protocols and are largely implementation dependent.

[] "For unnumbered IPv4 interfaces same considerations apply as in
other link-state routing protocols and are largely implementation
dependent."

Assumes knowledge of other protocols.  Besides that, the sentence
doesn't say much by pointing to considerations that are "largely
implementation dependent".

    jhead>> Removed.

2423       TIEs are uniquely identifed by `TIEID` schema element.  `TIEID` space
2424       is a total order achieved by comparing the elements in sequence
2425       defined in the element and comparing each value as an unsigned
2426       integer of corresponding length.  They contain a `seq_nr` element to
2427       distinguish newer versions of same TIE.  TIEIDs also carry
2428       `origination_time` and `origination_lifetime`.  Field
2429       `origination_time` contains the absolute timestamp when the TIE was
2430       generated.  Field `origination_lifetime` carries lifetime when the
2431       TIE was generated.  Those are normally disregarded during comparison
2432       and carried purely for debugging/security purposes if present.  They
2433       may be used for comparison of last resort to differentiate otherwise
2434       equal ties and they can be used on fabrics with synchronized clock to
2435       prevent lifetime modification attacks.

[nit] s/identifed by `TIEID`/identified by the `TIEID`

    jhead>> Fixed.

[major] "total order achieved by comparing the elements in sequence"

When comparing, which value is considered better/more recent?

    jhead>> I've added pseudo code for TIE ordering in a new figure named "TIE Ordering", it should make things much clearer. It is normative, and I will refer to it as such as part of some of your other comments. I pasted it below, hopefully e-mail doesn't screw up the indentation, but I should have -17 published by the time you read this:

    for each TIEPacket:
        TIEHeader = TIEPacket.TIEHeader
        TIEElement = TIEPacket.TIEElement

        seq_nr = TIEHeader.seq_nr

        TIEID = TIEHeader.TIEID
        direction = TIEID.direction

        # System ID
        originator = TIEID.originator

        # TIETypeType
        tietype = TIEID.tietype
        tie_nr = TIEID.tie_nr

        if X.direction > Y.direction:
            return X.direction
        else if X.direction < Y.direction:
            return Y.direction
        else if X.originator > Y.originator:
            return X.originator
        else if X.originator < Y.originator:
            return Y.originator
        else:
            if X.tietype == Y.tietype:
                if X.tie_nr == Y.tie_nr:
                    if X.seq_nr == Y.seq_nr:
                        X.lifetime_left = X.remaining_lifetime - time since TIE was received
                        Y.lifetime_left = Y.remaining_lifetime - time since TIE was received

                        if absolute_value_of(X.lifetime_left - Y.lifetime_left) <= common.lifetime_diff2ignore:
                            return equal

                        else:
                            return TIE with largest lifetime_left
                    else:
                        return X.seq_nr compared to Y.seq_nr
                else:
                    return X.tie_nr compared to Y.tie_nr
            else:
                return X.TIEType compared to Y.TIEType

[minor] "They contain a `seq_nr` element to distinguish newer versions
of same TIE.  TIEIDs also carry `origination_time` and
`origination_lifetime`."

TIEID doesn't contain any of that:

/** Unique ID of a TIE. */
struct TIEID {
    /** direction of TIE */
    1: required common.TieDirectionType    direction;
    /** indicates originator of the TIE */
    2: required common.SystemIDType        originator;
    /** type of the tie */
    3: required common.TIETypeType         tietype;
    /** number of the tie */
    4: required common.TIENrType           tie_nr;
} (python.immutable = "")

    jhead>> Fixed


But the TIEHeader does:

/** Header of a TIE. */
struct TIEHeader {
    /** ID of the tie. */
    2: required TIEID                             tieid;
    /** Sequence number of the tie. */
    3: required common.SeqNrType                  seq_nr;

    /** Absolute timestamp when the TIE was generated. */
   10: optional common.IEEE802_1ASTimeStampType   origination_time;
   /** Original lifetime when the TIE was generated.  */
   12: optional common.LifeTimeInSecType          origination_lifetime;
}


[minor] The grammar could be better:

s/
   TIEIDs also carry `origination_time` and `origination_lifetime`.
   Field `origination_time` contains the absolute timestamp when the
   TIE was generated.  Field `origination_lifetime` carries lifetime
   when the TIE was generated.
/
   The TIEHEader can also carry an `origination_time` that contains the absolute timestamp of when the TIE was generated, and an `origination_lifetime` to indicate the original lifetime when the TIE was generated.


    jhead>> Reworked, see following comments.

[major] "Those are normally disregarded during comparison..."

Does this refer to the text in the second sentence ("`TIEID` space is
a total order achieved by comparing the elements in sequence...") or
to some other comparison.  Also, this makes me think that you have
been referring to the TIEHeader (and not the TIEID) all along -- is
that correct?

    jhead>> Removed the bits about comparison.

[major] "normally disregarded during comparison...[but]...may be used
for comparison of last resort"

Are they used or not?  The use of "normally" doesn't help because it
immediately points are possible exceptions...

If used, how are they compared?  Which one is better/more recent?

    jhead>> Removed the bits about being used in comparison, practically speaking they're not applicable here. Our new TIE Ordering reflects this.

[minor] "can be used on fabrics with synchronized clock"

§4.3.4 says that RIFT assumes that all nodes are sync'ed, so "fabrics
with synchronized clock" would mean all the time, right?

    jhead>> Reworked this a bit by hinting toward the schema and being a more specific about the synchronization aspect:

        The TIEHEader can also carry an `origination_time` schema element (for fabrics that utilize precision timing) which contains the absolute timestamp of when the TIE was generated and an `origination_lifetime` to indicate the original lifetime when the TIE was generated. If carried, they can be used for debugging or security purposes (e.g. to prevent lifetime modification attacks).


[major] "can be used...to prevent lifetime modification attacks"

"can be used" or "are used"?  It seems (from a quick read of §4.4.3),
that neither are used -- but that the remaining lifetime
(remaining_lifetime) is.  Is that correct?

Looking closer, I noticed that the origination_lifetime and the
remaining_lifetime come from the same variable:

   12: optional common.LifeTimeInSecType          origination_lifetime;
   ...
   2: required     common.LifeTimeInSecType        remaining_lifetime;

But I couldn't figure out where the LifeTimeInSecType is decremented
as there's no TIE FSM.  Where is that specified?

    jhead>> The new TIE Ordering bits we state:

         "lifetime_left" = "remaining_lifetime" - time since the TIE was received.

    The exact proceudure to decrement is an implementation specific detail.

This is the related text in the Security Considerations:

5755    7.4.  Lifetime

5757       Traditional IGP protocols are vulnerable to lifetime modification and
5758       replay attacks that can be somewhat mitigated by using techniques
5759       like [RFC7987].  RIFT removes this attack vector by protecting the
5760       lifetime behind a signature computed over it and additional nonce
5761       combination which makes even the replay attack window very small and
5762       for practical purposes irrelevant since lifetime cannot be
5763       artificially shortened by the attacker.

[major] "Traditional IGP protocols are vulnerable...somewhat mitigated
by using techniques like [RFC7987]."

Remove all mentions of other protocols!  Also, the reference is
irrelevant because it points to an IS-IS specification.

    jhead>> Removed.

[minor] s/lifetime/remaining lifetime

    jhead>> Fixed.

[] s/which makes even the replay attack window very small and for
practical purposes irrelevant since lifetime cannot be artificially
shortened by the attacker./which results in the inability of an
attacker to artificially shorten the remaining lifetime.

    jhead>> Fixed.

2437       Remaining lifetime counts down to 0 from origination lifetime.  TIEs
2438       with lifetimes differing by less than `lifetime_diff2ignore` MUST be
2439       considered EQUAL (if all other fields are equal).  This constant MUST
2440       be larger than `purge_lifetime` to avoid retransmissions.

[] It would be very nice if the naming and its use was consistent.
For example, you mentioned the "origination_lifetime" above, but
"origination lifetime" here.  It makes it really hard to search and to
keep track of where things are specified.

    jhead>> Fixed. I'll look for more inconsistencies and address them.

[major] "This constant MUST be larger than `purge_lifetime` to avoid
retransmissions."

They are both *constants*, which intuitively mean that they have a set
value.  Note that neither is listed in Appendix C.1 (Configurable
Protocol Constants), should they be?

    jhead>> Most of Appendix C's items are already in the schema. I've added the couple that weren't there and removed Appendix C per Tony's comment.

2442       All valid TIE types are defined in `TIETypeType`. This enum indicates
2443       what TIE type the TIE is carrying.  In case the value is not known to
2444       the receiver, the TIE MUST be re-flooded.  This allows for future
2445       extensions of the protocol within the same major schema with types
2446       opaque to some nodes with some restrictions.

[] Note my comments before about consistency related to TIE Types.


Juniper Business Use Only