Re: [Rift] AD Review of draft-ietf-rift-rift-12 (Part 2a)

Jordan Head <jhead@juniper.net> Tue, 13 September 2022 12:34 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 B8EC7C14F73A; Tue, 13 Sep 2022 05:34:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.668
X-Spam-Level:
X-Spam-Status: No, score=-7.668 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.571, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_TEMPERROR=0.01, URIBL_BLOCKED=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=l4BndXka; dkim=pass (1024-bit key) header.d=juniper.net header.b=hLpGsmOP
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 472AcBdY9yVx; Tue, 13 Sep 2022 05:34:52 -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 00212C1524B5; Tue, 13 Sep 2022 05:34:51 -0700 (PDT)
Received: from pps.filterd (m0108163.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28D2WZWi030150; Tue, 13 Sep 2022 05:34:50 -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 : content-id : content-transfer-encoding : mime-version; s=PPS1017; bh=/IhFFMs9gsd74xGHh5v3pmh4JmByGG7jm6B9rxHVs1Y=; b=l4BndXkauC5G29j3pWS9ZAQXypBhMnsGQtCIjV9QebClG2t8jgBchS7DKQXTWcBxuzmU CF4qNPcqES4bXG9/0ACgnjZPQ4lbc6EwJ62YkPP8JtYlxBNMb23ziBgXP4nIQ533QNzk VT7/plfvKw0a5wTf9f/FVsDK/qxBqJX41SIf5qwXoMtY1C+0GY9W0mx3Y0dgY8UauGNW egOCVku7eaVP6/tSOuEfG5YpvOM/4bCZ31GKgvSneSKZecRtcXF0dVukK1noAjPOAoAA QvzuaOPyqTNBvCHnekBwzO++27EGBUihukh8mE1xF2aUnMXhWwSWL0xnRtyJRliOeLHw yg==
Received: from na01-obe.outbound.protection.outlook.com (mail-eastusazlp17011018.outbound.protection.outlook.com [40.93.11.18]) by mx0b-00273201.pphosted.com (PPS) with ESMTPS id 3jjh5r0wwg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 13 Sep 2022 05:34:50 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XOoqDE6rpgUOXkkdOG4lQNqo3RH6bNyEbdkYqNkC5D9RCv26d1ZtZyTn4yWovaLGv7P3NTwQpfcKcAyAc9TVds1Xn5d/+BHzAGooQLeYTgJp6eVNRdMp5wGM72B7sNdasLiKNEVxq0/B972yUyCH0oVdl6Z+SDV1Hm5VDJmojl1jAqmVo8PpEYDuOVlgZlbERSL908HlLn2D7ygTq/7gbAStHpiX5RJrGbgRwmr0FMrWgGBSto1ctKNZy9Rlq2cnWv2dYHlxs9in5mMm6LfQqvy6H0MoytA7c1PMcVe9Q8cRLQCKV1ehAB+zq4V91CbCRV4NghqJNEW8mBtV0Su2DA==
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=/IhFFMs9gsd74xGHh5v3pmh4JmByGG7jm6B9rxHVs1Y=; b=Ft59m0CwebtPQCFIUd0456zzAGEk8lzMCS8hy1GSb6mxPa0pFqsQghkOZF63P+Cd61GHEATlPkwSYw1HplD10IX9O6W3x3qmiEWL1BnWeeqVrVODzi5XOPeyJELTXLU3KO98m/KRhL95ZxVxUUTsUGjG0+ZhO2Ll9RBBcMkAKe0ZGWSm1vhUInGCfMRYSMCCaCyWSpy8E+1jjFHQq8z5zAXKZLZ+7/khR2N9Hdoqja91fUArR2x65ajARzL9olFvQawcJrjMAG8dcze7oIhD1qj2rRPIntRynXRxOAh37DCuQXbvYQjxxi/ZaZ/fc87A8z4t8/ZJDSDvw8CrwQBqCQ==
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=/IhFFMs9gsd74xGHh5v3pmh4JmByGG7jm6B9rxHVs1Y=; b=hLpGsmOPrVmpOJNjqdsKMPG1Y4Y7ya5gPaIKGuMwa+Rv8n2JQ5GV2s8+D6kGk0sZ5BkVsWbB2aaODk+bPVs/RkcMQ8zpSslG/UMAi9vJ0k+Yf3PlFDtPA5zzZrrWfiIkNxAYhVpaTZxU32mVnr1jsEAEu+N7QjuywQY041Ylu/Q=
Received: from BL0PR05MB5362.namprd05.prod.outlook.com (2603:10b6:208:67::16) by BN3PR05MB2483.namprd05.prod.outlook.com (2a01:111:e400:7bb3::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.12; Tue, 13 Sep 2022 12:34:42 +0000
Received: from BL0PR05MB5362.namprd05.prod.outlook.com ([fe80::9ca7:eee:ff02:7d0d]) by BL0PR05MB5362.namprd05.prod.outlook.com ([fe80::9ca7:eee:ff02:7d0d%6]) with mapi id 15.20.5632.012; Tue, 13 Sep 2022 12:34:42 +0000
From: Jordan Head <jhead@juniper.net>
To: Alvaro Retana <aretana.ietf@gmail.com>, Tony Przygienda <tonysietf@gmail.com>
CC: "rift-chairs@ietf.org" <rift-chairs@ietf.org>, "draft-ietf-rift-rift@ietf.org" <draft-ietf-rift-rift@ietf.org>, "EXT-zhang.zheng@zte.com.cn" <zhang.zheng@zte.com.cn>, "rift@ietf.org" <rift@ietf.org>
Thread-Topic: [Rift] AD Review of draft-ietf-rift-rift-12 (Part 2a)
Thread-Index: AQHYncKY/ib1VR/PHUmzmLg6WRhTca3dW9CA
Date: Tue, 13 Sep 2022 12:34:42 +0000
Message-ID: <3B71A60A-A043-46B0-9A10-2604D177FCD6@juniper.net>
References: <CAMMESsxBr0+UriSaTDVZMrFzU6DSiuC3-wO4+7HgX4nX7SLHmg@mail.gmail.com> <CA+wi2hPcFoGoTi=GFx9zyXeKFmM3WZi82YBX4WVjY2jYPW7Mig@mail.gmail.com> <CO1PR11MB488171455D0FD980DC4D4C39D8769@CO1PR11MB4881.namprd11.prod.outlook.com> <CAMMESsx1oCVofW1cNzr5xo60vw50P4iUEedzwQW54xKQ0zezjw@mail.gmail.com> <CA+wi2hNtSwEGHc8ySjEPTamvqJBBh7AFbbPngvjh07QJS=ttrw@mail.gmail.com> <CAMMESsxvp7MByOzoiNHWNNGNm9bp5aiUEgrhKriU7BYy=pYXLQ@mail.gmail.com> <CA+wi2hM7arcayCEh+9YN4bccp1ZB41EFK+7JijZ+TViFUWKtqQ@mail.gmail.com> <CAMMESsz=6HQLsQQVMW4QS_OLtnoTMgvpt3R3AXDdycTp4ig2EA@mail.gmail.com>
In-Reply-To: <CAMMESsz=6HQLsQQVMW4QS_OLtnoTMgvpt3R3AXDdycTp4ig2EA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/16.64.22081401
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=ed755496-9d9a-40ea-8bfc-81ba15d4236e; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2022-09-13T12:18:51Z; 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_|BN3PR05MB2483:EE_
x-ms-office365-filtering-correlation-id: b174a14c-e6c5-4526-7f4a-08da95845527
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: RZe7QaP8px3yT8L7WeY/K7Z0YvfaJV8WWbm6khM+Q3jJy9lKNzM6DCW3rZ1IWuY9O6E1yYVyc7aLWqmL3EwIOy3mYea44IfmUm6w7UX16i/HpvGh/Sw0CeQv9oBmnvLkYsosoFvV0o+VvuLDZg8cZEZW00NGCtMOZiDzGxYTwefPMxMIlQpQcI87H6h0XQQKoHt1IGq3TB8DzXLG8gb9rS0VG9rw/0G4DxD+vxPlHH81eS4MEo+ONCz7akLh+Fh5yrmgF/nWX6Qb8Cc/LrfycBMcCgdGSS2MTW9zbUtT/VPaUJTHyZ/FWQi0R3mnyZLjMmK1e933B/izZjS7VOt3ar4kWXCEo6rtWNB/UWw7vs8JJXT5q0OyIMz6FXL55pOcrM10i41f3HuZPO2gCYdrWnea+ZTvbep9Etw+Gvx1i1UAzt/xCXi/DM2EOw3GmYgrcEgTNymRgGX3ZwP7TR4mYuq17DgqzYWAKyqkmIFvIhumomFa9SmYdu1nzrF1tu40fNqT7+xvMSqPnlGCOqh5eQt31tGTnK4dSoHAcpyWqWJTnPnWXH6gogVVyiSbCC2kLsp5DEdk9gMSrS5i6IXS8J4Qguz0thT7imIDTQNLYA9d/S3AIfSKrXGJ0oZQbmUREd4yZdBF0sySvhFAM/tJYUlsrMliglWTddMR16vK/0xri9YbGNGnfYNKkga6PYUe4x53RCS0q49dlyGzCZvOji5Rnpb6BknsrDEDdIS2rZphcOJ86Foz5mDJe78lx1/0ZPZ6l+fmHpDh7PavmB1KzE/8W4gJHbUgu4b74ktdBPQ=
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:(13230022)(4636009)(366004)(396003)(376002)(39860400002)(136003)(346002)(451199015)(6512007)(38100700002)(38070700005)(110136005)(71200400001)(4326008)(86362001)(6506007)(8936002)(316002)(33656002)(2906002)(8676002)(54906003)(36756003)(83380400001)(66946007)(2616005)(186003)(122000001)(6486002)(478600001)(66476007)(66556008)(76116006)(66446008)(5660300002)(64756008)(41300700001)(91956017)(30864003)(45980500001)(579004); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: xBpKJGOfrI+IpdN8Y+SBF3WZjFcJFtewZK8OrWo96lzW/hBnK1SzLb4omp5PC9FPBFtBgAqzE/K8y6nPltrgPmMqLXv0iURETp+bkby31SW0RDBiCgj9EzzojrbK0EGoqFSEnH5Qf8BLJU9hOan4ptL7PMWqe4mvPLGjsxk6F6/f/ztaqvYnfuS8sDhNCJHnVAdAE5ZYfhEbn/3JHakwY20pfVFa8Oj3Znu0LJaGp+5E/qPWG+J8Fppf7pwBpJZNUcJgGGWyJnU5/V0YRzkiPQZxS0JDhWggTYTe2mpQyifyjBvNmuiR9PanvQoPHOSBCR2MvqJWxIpucXYOOOSEa0IrIbhBB18T9UJwD1OOmTRTdZp9PqwCOu5TJ/twU5T82gESAhT4dBzHzjHHRn36TpyOwCHMWiLN9E+UkND3+iPHm8QELtzoXtmxmgnIjXcLP6spmhROboI6LeL9Uwe+ZG33WcAV9TceQrIQXWHeeSGEx5E+OIZDR4ZfNrWa+zL9lSitxpAvZijWKHEYYQnfXD5OrAP6M+AjGI/8njy3e6FtHIDa3AAvgi2/EBLr66djuCswJKl26iAXZry4VSusuONdElCFrdwxqVJsFhcqpMUGjupV/Hw7NzObPtFNI35aujiE+qQFPH5oIanZatBm/s6oT0+FDb+cEhgWm54rgCEXb7zydwBkOOrKnct0dOVNLiAR7AcIq7J5bQ6AHGtq+PY1ZHoUnPNG+AAMiPMaM3sOq45N7f7xXRzNcvXZdjSNytK80L5kFwifb5vPabMeFUg/4inuvahOXuOYJzkTjFbdpjSmitfU0nyYY4H8k/5mgK3mF1u+kaTB6KgVu2HyAvJjt15e5+S97v/kEi0rQ4BmDG+np0uTcBrQcJteTR9DAjnNKOcoYgXlruA1kMhy2nVzM6jp7HkICfTOw+oENlNIIQ1820J5JgsAl9OS5rQPSQYKUYJm5S+d+mHYbOXK8wz8zYek+63a4bQnxnySlb60FrewdtuUlkmc6apKQlcYHTqPO+iYK93MoO9amGA22khGpzNbwCcW4r2t2jXuu4w1OKI6bQxSBsiQJCTcMZuHrxzgky5N6P5Um1uLT0TShd1QB4h4bgkz5hP2gTK5Ul64zkALcm90vSkIVJLzEy0hp9R70CQeMa6VmMwfu3PSDupShEEimz64LoF1tD1hHpS3ciuFL71ydIw2tPLWctuNPcFWHtOzuXa4DzLsx5FB79QfXDTcUYhPgyVbv29UYPLSKonpvwt3TV1oflB7yEFvhdW2vrc8oszRkQx1Fmhw9fnmRMNiPqiSlbGZkaQfpWo1ZorjErqI1VoO1et2MxRMISCIqi7OKOrSW18FSaOCHU8KxmcAbCVca8QWcSG16Z/p5UFH0MLaFHCKFW5BNTiD0eeZmyn9d6kO0SCIM+lkqjEkI+PIsTZPYjd5CqSswkiqdcoT+62B2k6ARLzKTs8DyoriM9YWfStSgsOnZ8pW1j77grWRUSij4c2+aWgQ5Ks8meRysgXoCoY1wqLk5ZE5rjKAKzr0JbBZWowp3HQ4wiy6idnJTgY4ktL1qodE6S67ucUOXIODoDzrUlmAtXVWgQXBaJL7mkWRoniKnponIZgodmxC6RT9rYeYnIlar9Np5SK+PAaACsYpqJoenQJS
Content-Type: text/plain; charset="utf-8"
Content-ID: <1881FDE08953F74DA4C4A7948134EFCD@namprd05.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR05MB2483
X-Proofpoint-ORIG-GUID: vtzEsYQPKP9Fm1wOtilFgOiUSffMLM9q
X-Proofpoint-GUID: vtzEsYQPKP9Fm1wOtilFgOiUSffMLM9q
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-13_05,2022-09-13_01,2022-06-22_01
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 adultscore=0 malwarescore=0 bulkscore=0 clxscore=1011 priorityscore=1501 spamscore=0 impostorscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2207270000 definitions=main-2209130057
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/J_8GR91r7joLe4xzurRfO-2g-oA>
Subject: Re: [Rift] AD Review of draft-ietf-rift-rift-12 (Part 2a)
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: Tue, 13 Sep 2022 12:34:57 -0000

Hi Alvaro,

We pushed the new version last night (-16), my replies are inline.

Thanks
Jordan

On 7/22/22, 8:00 AM, "Alvaro Retana" <aretana.ietf@gmail.com> wrote:

    [External Email. Be cautious of content]


Hi!

I have a couple of replies and then some comments on the updated text in -15.

Thanks!

Alvaro.


...
> > Part 2a starts with §4.2 (Specification) and goes just through §4.2.2 -- I
> > just started reading the LIE FSM/§4.2.2.1. I included a couple of comments
> > on the schema itself.
...


For the Chairs/Shepherd:

> > - §8.1 includes a set of suggested UDP ports, but they are not reflected
> > in the registry. Early allocation has not been requested -- you should
> > consider doing so. See rfc7120.

The same comment applies to the multicast addresses.

    jhead>> Ack.


...
> > [minor] "IPv4 Time to Live (TTL) / IPv6 Hop Limit (HL) of 1" Was GTSM
> > (rfc5082) considered? Several documents (for example, rfc8085 and
> > draft-ietf-opsec-v6) suggest its use. You may be asked about it later. It
> > would be good to preempt those questions by adding some text in the
> > Security Considerations about any risks...or using it.
>
> There is a religious war about 255 vs. 1 since a long time. I personally in
> deployment was hurt @ least twice by implementations ending up not checking
> TTL/misprocessing and forwarding one-hop packets with 254 on unicast/
> multicast. Also, having a buggy FIB looping tightly packets with TTL 255 is
> seldom fun. I never saw a thing not decrementing TTL and dropping on 1. I
> prefer the 1 with possibly a multi-hop spoof (never saw that in my life
> frankly, such an attack is really, really hard to engineer) than a rogue
> packet running away in the network or micro looping 255 times on fast links.
>
> What I saw were replay attacks and against those RIFT is extremely well
> protected as far it's practically implementable. Plus, if one _really_ wants
> security one configures adjacency keys (and RIFT allows a full plethora of
> that) rather than rely on the 255 hack to have "kind of a little lick of
> security".
>
> So if the security folks push on it we can always go to 255 or write that the
> TLL received MUST be either 255 or 1 to satisfy both camps.
...
> > 1500 LIEs arriving with IPv4 Time to Live (TTL) / IPv6 Hop Limit (HL)
> > 1501 larger than 1 MUST be ignored.
> >
> > [major] "MUST be ignored" The specification of the sender (§4.2.2) says
> > that "LIEs SHOULD be sent with an IPv4 Time to Live (TTL) / IPv6 Hop Limit
> > (HL) of 1". This is a Normative conflict because it is only recommended to
> > the sender, but required by the receiver.
>
> aha, yes, very good. I'm reluctant to say MUST since it's not always possible
> on a platform to force TTL (this is UDP). So I make it SHOULD on both sides.
>
> your comment on the 255/1 stands of course.

The text in -15 says:

   LIEs SHOULD be sent with an IPv4 Time to Live (TTL) / IPv6 Hop
   Limit (HL) of either 1 or 255 to prevent RIFT information
   reaching beyond a single L3 next-hop in the topology.

   ...

   LIEs arriving with IPv4 Time to Live (TTL) / IPv6 Hop Limit (HL)
   different than 1 or 255 SHOULD be ignored.


The good thing is that you removed the Normative conflict: both
sentences now say SHOULD.  The bad thing is that, even if providing
more options, anything can be used (1, 2, 4, 56, 123, 254, 255, etc.)
because neither the sender nor the receiver is required to do
anything.

In the reply (above) you suggested using MUST.  That would be a good
start.  But then you also said you were reluctant...

Note that in my original comment I was just asking whether GTSM was
considered and to justify why not (if you had considered and didn't
want to use it), not to add the cumbersome support for both cases.
IOW, do it any way you want, please be clear about any requirement
(MUST), and justify why you're not following what other documents
recommend (if not using 255) and how any issues can be mitigated (or
if they need to be -- see the Security Considerations in rfc5082).

    jhead>> Discussed with Tony and we're good with changing things to MUST for sending and receiving a TTL/HL of 1 or 255 only.
    jhead>> Also made the same adjustments for how TIEs are exchanged.

> > [major] "LIEs SHOULD be sent with network control precedence." When is it
> > ok to not do so? IOW, when is this behavior recommended and not required.
> > BTW, please add a reference.
>
> hard to implement often that's why it's not MUST. will add ref to precedence.

You didn't add a reference.

    jhead>> Added RFC2474 for both TIEs and LIEs as an informative reference as it indicates that NC is "commonly" used for control plane traffic.

*****
What follows are comments on -15 covering the same sections (§4.2
(Specification) through §4.2.2).
*****

[Line numbers from idnits.]


...
1417    4.2.  Specification
...
1423       The FSMs, as usual, are presented as states the FSM can assume,
1424       events that it can be given and according actions performed when
1425       transitioning between states on event processing.

1427       Actions are performed before the end state is assumed.

[nit] Suggestion>
   The FSMs are presented as states a node (?) can be in,
   events that can take place, and resulting actions, which
   are performed before the next state is taken.

    jhead>> Changed to: "...states a neighbor...".

...
1441       Any attempt to transition from a state towards another on reception
1442       of an event where no action is specified MUST be considered an
1443       unrecoverable error, i.e. the protocol MUST reset all adjacencies,
1444       discard all the state and MAY NOT start again.

[major] "MUST be considered an unrecoverable error"

Given that the meaning of this phrase is explained, we don't need
Normative language:  s/MUST/must

    jhead>> Fixed.

[major] "MAY NOT start again"

"MAY NOT" is not an rfc2119 keyword.  I assume you mean that the
behavior is not optional (i.e. mandatory), right?   s/MAY NOT/MUST NOT

    jhead>> This doesn't need to be normative, changed it to "may not".

...
1461    4.2.1.  Transport

1463       All packet formats are defined in Thrift [thrift] models in
1464       Appendix B.  LIE packet format is contained in the `LIEPacket` schema
1465       element.  TIE packet format is contained in `TIEPacket`, TIDE and
1466       TIRE accordingly in `TIDEPacket`, `TIREPacket` and the whole packet
1467       is a union of the above in `ProtocolPacket` while it contains a
1468       `PacketHeader` as well.

[nit] s/ and the whole packet is a union of the above in
`ProtocolPacket` while it contains a `PacketHeader` as well./.  The
whole packet is the union of a 'PacketHeader' and the above.

    jhead>> I re-read this and didn't like how it parsed either, I changed things to this:

        "All RIFT packet structures and their contents are defined in the Thrift models in Appendix B.

        The packet structure itself is defined in `ProtocolPacket` which contains the packet header (`PacketHeader`) and the packet contents (`PacketContent`). `PacketContent` is a union of the LIE, TIE, TIDE, and TIRE packets and are defined in `LIEPacket`, `TIEPacket`, `TIDEPacket`, and `TIREPacket` respectively.

        In terms of bits on the wire, it is the `ProtocolPacket` that is serialized and carried in an envelope defined in..."

...
1477    4.2.2.  Link (Neighbor) Discovery (LIE Exchange)
...
1507       An implementation MAY listen and send LIEs on IPv4 and/or IPv6
1508       multicast addresses.  A node MUST NOT originate LIEs on an address
1509       family if it does not process received LIEs on that family.  LIEs on
1510       same link are considered part of the same LIE FSM independent of the
1511       address family they arrive on.  Observe further that the LIE source
1512       address may not identify the peer uniquely in unnumbered or link-
1513       local address cases so the response transmission MUST occur over the
1514       same interface the LIEs have been received on.  A node MAY use any of
1515       the adjacency's source addresses it saw in LIEs on the specific
1516       interface during adjacency formation to send TIEs (Section 4.2.3.3).
1517       That implies that an implementation MUST be ready to accept TIEs on
1518       all addresses it used as source of LIE frames.

[major] "An implementation MAY listen and send LIEs on IPv4 and/or
IPv6 multicast addresses."

Sorry to come back to this, but it's really bothering me.  After
reading this multiple times I figured out what is the problem: Yes,
it's optional to listen/send on IPv4 and/or IPv6 -- I too like the
flexibility.  *But*, for rift to work there's an expectation that at
least one will be used.  IOW, while the selection is flexible,
selecting (at least) one AF is *not* optional (otherwise the protocol
doesn't work).

The "MAY" above is not a Normative statement because one AF (or both)
should be used.  The sentence is really just a statement of fact: any
(or both) AF can be used.

All this is to suggest this change: s/MAY/may

    jhead>> Fixed.

[major] "MAY use any of the adjacency's source addresses it saw in
LIEs...to send TIEs."  This use of "MAY" makes using the source
address from a LIE optional.

§4.2.3.3 says that "TIEs...using the
destination address on which the LIE adjacency has been formed", which
doesn't make the use optional.

I'm also revisiting this -- again, statement of fact, not an option: s/MAY/may

    jhead>> Fixed.

1520       A simplified version on platforms with limited multicast support MAY
1521       implement optional sending and reception of LIE frames on IPv4 subnet
1522       broadcast addresses and IPv6 all routers multicast address though
1523       such technique is less optimal and presents a wider attack surface
1524       from security perspective.

[major] Ahhh...mmmm...

Let's start with this: I'm not sure how to read this sentence, a few
commas would help.

You don't need to solve all the cases.  What is "limited multicast
support"?  As I interpret the sentence, IPv6 seems to support
multicast so the choice is simple: use IPv6.  As you explain, the node
doesn't have to use both.

The phrase "MAY implement optional..." is a double indication that
"sending and reception" is optional: you don't have to.  Which seems
to point to the obvious conclusion of use IPv6.

In summary, I don't understand the value of this sentence, including
the use of a normative MAY ... but maybe I just don't understand the
sentence itself. :-(

    jhead>> I think the main solution here would be for us would be to convey things more clearly. I think the "limited" gives an indication of flexibility for those that want it. I think "with limited or no multicast support" works better?

    Obviously most implementations would use IPv6, followed by some IPv4, but there are platforms that only implement really simple IPv4 stacks without multicast support (which could be described as "limited or no"). IoT-style devices come to mind here as an example. My view of this is that calling it out this way helps bridge the gap between implicitly vs. explicitly supported and makes things clearer for some implementors. As you know there are specifications where the language _technically_ allows for something and others where the language shows that authors _intentionally_ allow something. I think we fall into the latter.

    As a result, I've changed things to the following:

        "A simplified version MAY be implemented on platforms with limited or no multicast support (e.g. IOT devices) by sending and receiving LIE frames on IPv4 subnet broadcast addresses and IPv6 all routers multicast address. However, this technique is less optimal and presents a wider attack surface from a security perspective."


1526       A ThreeWay adjacency (as defined in the glossary) over any address
1527       family implies support for IPv4 forwarding if the
1528       `ipv4_forwarding_capable` flag in `LinkCapabilities` is set to true.
1529       A node, in case of absence of IPv4 addresses on such links and
1530       advertising `ipv4_forwarding_capable` as true, MUST forward IPv4
1531       packets using gateways discovered on IPv6-only links advertising this
1532       capability.  It is expected that the whole fabric supports the same
1533       type of forwarding of address families on all the links, any other
1534       combination is outside the scope of this specification.
1535       `ipv4_forwarding_capable` MUST be set to true when LIEs from a IPv4
1536       address are sent and MAY be set to true in LIEs on IPv6 address if no
1537       LIEs are sent from a IPv4 address.  If IPv4 and IPv6 LIEs indicate
1538       contradicting information protocol behavior is unspecified.

[major] "absence of IPv4 addresses...and advertising
`ipv4_forwarding_capable`...MUST forward IPv4 packets using gateways
discovered on IPv6-only links"

    jhead>> Allow me to preface a couple of things. I think it's obvious that Table 1 caused some confusion outside of its own scope, and after reading it in conjunction with your comments I realized that my interpretation may not be the same as everyone elses. I've split this table into two new tables, one to describe how LIE exchange ocurrs over different address family combinations and another to factor in `ipv4_forwarding_capable` in the same context. I may refer to those new tables in some of my replies.

Just to be clear, the choice of which AF to use when sending LIEs is
up to the nodes -- which then means that nodes may decide (or be
configured) to only use IPv6 with RIFT, even if IPv4 is configured on
the interface.  Right?  I assume that's true because it is the third
case shown in Table 1.

    jhead>> Correct, neighbors may exchange LIEs over IPv6 with `ipv4_forwarding_capable` set in order to exchange IPv4 traffic without an IPv4 LIE exchange.

IOW, not having IPv4 configured ("absence of IPv4 addresses") is not
the only case where ipv4_forwarding_capable can be set, and also not
the only case where the interface will support v4overv6.  This will
also happen if the LIEs/TIEs are only advertised over IPv6 (regardless
of which AFs are supported/configured on the interface).

The sentence above is then misleading because it mandates the v4overv6
behavior only in the "absence of IPv4 addresses".

    jhead>> The word choice here is intentional: "absence of IPv4 addresses" does not mean IPv4 isn't configured on an interface. I think the new Table 2 will help clear some of this confusion up.

[major] "MUST forward IPv4 packets using gateways discovered on IPv6-only links"

I assume that this means that the IPv4 packet is encapsulated in IPv6
and sent to a link-local address -- is that what you mean?  Using
"gateways discovered" may give the impression that there's more
involved.  You may want to consider being explicit about the
operation.

Also, in Figure 1 the text (for the 3rd case: IPv4/IPv6 over IPv6)
simply says "IPv4 is forwarded", giving the wrong impression that the
IPv4 is natively (not encapsulated) forwarded.

At some point we talked about the fact that forwarding is out of scope
-- that's ok.  I'm calling out this text because it requires
forwarding ("MUST forward").  Please make the behavior non-normative
and declare the specific mechanism to "forward IPv4 packets...on
IPv6-only links" out of scope.

    jhead>> I'd like to point you to the new Table 2 again here. We are describing the generic behavior in terms of how packets are forwarded, not the implementation. I've added the following sentence:

        "The specific forwarding implementation to support the described behavior is out of scope for this document."

    jhead>> In other words, the behavior is normative (MUST), but the implementation of it is not (and is out of scope).

[minor] s/`ipv4_forwarding_capable` MUST be set to true when LIEs from
a IPv4 address are sent and MAY be set to true in LIEs on IPv6 address
if no LIEs are sent from a IPv4 address./If IPv4 forwarding is
supported on an interface, `ipv4_forwarding_capable` MUST be set to
true when LIEs from a IPv4 address are sent and MAY be set to true in
LIEs on IPv6 address if no LIEs are sent from a IPv4 address.

    jhead>> Fixed.

[nit] s/information protocol/information, protocol

    jhead>> Fixed.

1540       Operation of a fabric where only some of the links are supporting
1541       forwarding on an address family or have an address in a family and
1542       others do not is outside the scope of this specification.

[] I think it's ok to leave the operation of the fabric out of scope,
but the ability to forward IPv4 traffic without having it configured
means that there are some operational aspects that are left out, and
which are not clearly specified anywhere else (as in not even in other
specifications).

For example, take a look at §3/rfc9229 (IPv4 Routes with an IPv6 Next
Hop in the Babel Routing Protocol).  The intent is not to compare,
just to point out a recent example of something similar which resulted
in significant discussion during IESG Evaluation.

I don't expect any action, just something to keep in mind if it comes up later.

    jhead>> Okay, noted.

...
1550          +=======+=======+=============================================+
1551          | AF    | AF    | Behavior                                    |
1552          +=======+=======+=============================================+
1553          | IPv4  | IPv4  | LIEs and TIEs are exchanged over IPv4, no   |
1554          |       |       | IPv6 forwarding.  TIEs are received on any  |
1555          |       |       | of the LIE sending addresses.               |
1556          +-------+-------+---------------------------------------------+
1557          | IPv6  | IPv6  | LIEs and TIEs are exchanged over IPv6 only, |
1558          |       |       | no IPv4 forwarding if either of the         |
1559          |       |       | `ipv4_forwarding_capable` flags is false.   |
1560          |       |       | If both `ipv4_forwarding_capable` flags are |
1561          |       |       | true IPv4 is forwarded.  TIEs are received  |
1562          |       |       | on any of the LIE sending addresses.        |
1563          +-------+-------+---------------------------------------------+
1564          | IPv4, | IPv6  | LIEs and TIEs are exchanged over IPv6, no   |
1565          | IPv6  |       | IPv4 forwarding if either of the            |
1566          |       |       | `ipv4_forwarding_capable` flags is false.   |
1567          |       |       | If both `ipv4_forwarding_capable` are true  |
1568          |       |       | IPv4 is forwarded.  TIEs are received on    |
1569          |       |       | any of the IPv6 LIE sending addresses.      |
1570          +-------+-------+---------------------------------------------+
1571          | IPv4, | IPv4, | LIEs and TIEs are exchanged over IPv6 and   |
1572          | IPv6  | IPv6  | IPv4, unspecified behavior if either of the |
1573          |       |       | `ipv4_forwarding_capable` flags is false or |
1574          |       |       | IPv4 and IPv6 advertise different flags as  |
1575          |       |       | described previously.  IPv4 and IPv6 are    |
1576          |       |       | forwarded.  TIEs are received on any of the |
1577          |       |       | IPv4 and IPv6 LIE sending addresses.        |
1578          +-------+-------+---------------------------------------------+

[minor] Two of the columns have an "AF" header.  It is not clear (just
from the header) how their meaning is different.  Please clarify.

I'm assuming that the first column shows the AFs enabled on the
interface, and the second one shows the AF used to exchange TIEs/LIEs.
Or does the first column represent which AFs are intended to be
forwarded (to cover the "absence of IPv4 addresses")?   In either
case, it looks like the table may be incomplete.

    jhead>> Agreed, this Table wasn't clearly defined. In the original version the left/right columns correspond to local/remote neighbors and their configured address families. I've clarified this in the new tables.

[minor] The Behavior of the second and third cases is the same, which
adds to my question about what the AF columns mean.  Are the columns
representing only one side?

    jhead>> Should be cleared up by the above changes.

[nit] Case 4: "IPv4 and IPv6 are forwarded."

The placement of this sentence after the behavior of
ipv4_forwarding_capable is explained (again) gives the impression that
IPv4 and IPv6 are always forwarded.

    jhead>> Should be cleared up by the above changes.

[minor] Related question, so I don't forget later.  In Case 2
(IPv6/IPv6), for example, if only one side sets
ipv4_forwarding_capable, I'm assuming the TIEs won't include any IPv4
information.  Is that true?  Where is that specified?  It seems
obvious, but it would be nice if it was explicitly specified
somewhere.

    jhead>> Should be cleared up by the above changes.

...
1608       A node MUST form a ThreeWay adjacency (or in other words consider the
1609       neighbor "valid" and hence reflecting it) if and only if the
1610       following first order logic conditions are satisfied on a LIE packet
1611       as specified by the `LIEPacket` schema element and received on a link

[] -12 (the last version I had looked at) listed a couple of
conditions related to the PoDs:

   A node tries to form a three-way adjacency if and only if

   1.  the node is in the same PoD or either the node or the neighbor
       advertises "undefined/any" PoD membership (PoD# = 0) AND

   ...

   3.  the neighbor is not member of some PoD while the node has a
       northbound adjacency already joining another PoD AND


Are these conditions not needed any more?  I know they were taken off
because I was confused with them -- but I guess that the text (in -12)
about how they could be "optionally disregarded" made them not
required.

Just checking...

    jhead>> Correct, they're not required for implementation, existing LIE validation will keep the topology conformant.

...
1616       2.  the neighboring node uses a valid System ID (i.e. value different
1617           from `IllegalSystemID`) in `sender` element in `PacketHeader`
1618           *and*

[nit] s/in `sender` element/in the `sender` element

    jhead>> Fixed.

1620       3.  the neighboring node uses a different System ID than the node
1621           itself

[nit] For consistency, looks like you're missing an "*and*".

    jhead>> Fixed.

1623       4.  the advertised MTUs in `LiePacket` element match on both sides
1624           *and*

[major] This clause talks about the "advertised MTUs", but advertising
the MTU is optional.

Suggestion>
   the MTU on on the link (either advertised in the `LiePacket`
   element or the 'default_mtu_size') matches on both sides *and*

    jhead>> Added language to clarify.


[EoR P2a-15]


Juniper Business Use Only