Re: [Rift] RIFT protocol implementation

Antoni Przygienda <prz@juniper.net> Wed, 18 March 2020 16:34 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 13E483A1839 for <rift@ietfa.amsl.com>; Wed, 18 Mar 2020 09:34:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 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, 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=PtxbtDOl; dkim=pass (1024-bit key) header.d=juniper.net header.b=SfL43kNz
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 b5sYfs9rimYS for <rift@ietfa.amsl.com>; Wed, 18 Mar 2020 09:34:41 -0700 (PDT)
Received: from mx0a-00273201.pphosted.com (mx0a-00273201.pphosted.com [208.84.65.16]) (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 9139B3A1836 for <rift@ietf.org>; Wed, 18 Mar 2020 09:34:41 -0700 (PDT)
Received: from pps.filterd (m0108156.ppops.net [127.0.0.1]) by mx0a-00273201.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 02IGMvuS009468; Wed, 18 Mar 2020 09:34:33 -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=F+JDofm02iNgtQc4vOqiUiXbImcrAlapVXOXyrH3Fm0=; b=PtxbtDOlkuXW+5KgPU+Hs5aCZxHB4cfr/zvLRn3CjWk7dJ4u67lQMxmDidLl8ClgXv5N Jb92k9DN8Z/i6w06uLJlyJV9QB+dUAasJL+e8BJSKozI/dIqsEaVNgfkuLnI6z+EP4eh utoZJ34ypwXeXY+1YPsvsf38Nal/5YE8SjprZedBFinHEjerM2ZRut5XAIsms9gbylYz sVTboBbWkkeEj5rDry36tuRg5uQOX38eab/LHbLCrEFPjsZsUdBCGszWYAEmMtSLMtWW XDWuRNyoZ2GlQx9P5fksxVaw1bZ9yEELcrij6t6lSHrSM5FO6TanEvgGWT47BfGqIA9B 7A==
Received: from nam04-co1-obe.outbound.protection.outlook.com (mail-co1nam04lp2051.outbound.protection.outlook.com [104.47.45.51]) by mx0a-00273201.pphosted.com with ESMTP id 2yuabm99p4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 Mar 2020 09:34:33 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LY4kwkzUfJ8KGynnx90p0Hmi+cZkjd/eK2qKL/DkvJWIUf1Sn1a+/FkmRrOYaC/0EeEjGG5Shh1Iv3y5qwtE2NJ5txonneTwZ5MzhXohAtf1PArhz0D+9b+IZ1xjqHqzQjR0bqffOjdV7hc9x9AeO4XCHsjAwWNlBTlpDLfFYpYjBx05ZINlHB6SG1cdKs9NyVMPqYd+HjXX36nNoW+CNGtelIGrJneda6COnj9JuW/M/CyU6/GOvkgtWeTXtc7mj4619HXU2sWTQltdSFNMReEJUf3T8eDD1CTIfF0xQA2LOstOVcMZjH5Kvws9twAFk0qpnvO7kUWqc59BJTMEVQ==
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=F+JDofm02iNgtQc4vOqiUiXbImcrAlapVXOXyrH3Fm0=; b=LqAMWQc14joTJdMxuWURpmIyQcpm+1CeXhDhBlp5KT4OmWGrWP4ju28BW4Tvx9IZhRcHnIsrfjGpD2+I5NIkrRQspMKM0r5rhjaBaZLXSkwoRC3U4nrMVLE0MrLYJzaBNYmuG4z+p1aaRHnkFV4Ds3mAv+2Wu7Vbo6LloFNpubHR8JEmFK/VkY5yyPGc+VjSYNZT9UyS5qiAkTXtRIu7HoR3PAlB9L7dv4GQQU6mH5yoZzmjbDulz0PxU93h01vG2YbOPj0GeO96GfDcd8KJ8GBvz4CjMca/WWkuckhqY6/gV4erpp5wM8VPnRe9b3heuZXpletoiUbmitK5d5GvRA==
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=F+JDofm02iNgtQc4vOqiUiXbImcrAlapVXOXyrH3Fm0=; b=SfL43kNzXxs/4two6ngjFSCDc+ecuEh4hVcAm+5/tFF7m4LOXHU36VeLTQ0XsPI1UMky+41JJnWCn20nPIA+lz1gbEvbp6YSF0Y9wOKO3G21oswuY+MFmfP2RSIjFpTg+MT7fS0LDJENVavoOm063cwjHcyQPct4BIq1PWR6VQI=
Received: from BYAPR05MB4296.namprd05.prod.outlook.com (2603:10b6:a02:f4::20) by BYAPR05MB5125.namprd05.prod.outlook.com (2603:10b6:a03:9d::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.12; Wed, 18 Mar 2020 16:34:30 +0000
Received: from BYAPR05MB4296.namprd05.prod.outlook.com ([fe80::2927:c4e3:301b:2b31]) by BYAPR05MB4296.namprd05.prod.outlook.com ([fe80::2927:c4e3:301b:2b31%7]) with mapi id 15.20.2835.012; Wed, 18 Mar 2020 16:34:29 +0000
From: Antoni Przygienda <prz@juniper.net>
To: Mariano Scazzariello <mscazzariello@os.uniroma3.it>, Bruno Rijsman <brunorijsman@gmail.com>
CC: Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com>, "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com>, Giuseppe Di Battista <giuseppe.dibattista@uniroma3.it>, "rift@ietf.org" <rift@ietf.org>
Thread-Topic: RIFT protocol implementation
Thread-Index: AQHV/KjXN8nLHQyCvE6C5Xb9rbY0fahNOk6AgAB2uQCAANUqgP//kQUA
Date: Wed, 18 Mar 2020 16:34:29 +0000
Message-ID: <C8542AB2-9C17-42FF-8DD8-1AB3C8C65159@juniper.net>
References: <AM6PR04MB432519F740317CFE30ED33C8C1420@AM6PR04MB4325.eurprd04.prod.outlook.com> <4586A088-9D59-47E7-B6D6-3B94E82AEB1F@gmail.com> <349c1186-e6f4-a68e-289d-b832285033fe@fing.edu.uy> <9EA55459-D718-4575-ADE6-D061023AAE34@gmail.com> <b642570c-caed-9de4-4a5e-dcd4943c3f0e@fing.edu.uy> <16a8f23f-db46-ebe0-4503-1cbeee076ffb@os.uniroma3.it> <CAObb+j7j8MQRzax3UDyN4KWNC6sB0jfOSop+Vf2YxZ+EjcVjtw@mail.gmail.com> <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <E824E104-63BF-415E-BBBB-8A6EF7FAE332@gmail.com> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <A24BFF42-9AAE-4837-85EA-ACD55BDCEF41@gmail.com> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <CA+wi2hN2LziBFx68VEk5HLEVv3Jwj+0uWiZdf=QzJKfaXY1CTw@mail.gmail.com> <fe29024c-7170-97f5-fe3c-d381ef1d62d2@os.uniroma3.it>
In-Reply-To: <fe29024c-7170-97f5-fe3c-d381ef1d62d2@os.uniroma3.it>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels: MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Enabled=true; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Name=Juniper Business Use Only; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Enabled=true; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_ContentBits=0; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Method=Standard; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_ActionId=263ae224-31a4-4a04-8447-00003d502a98; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_SetDate=2020-03-18T16:29:29Z;
user-agent: Microsoft-MacOutlook/16.35.20030802
x-originating-ip: [66.129.242.11]
x-ms-publictraffictype: Email
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: e58e0b0d-debf-4385-6dc3-08d7cb5a3b61
x-ms-traffictypediagnostic: BYAPR05MB5125:
x-microsoft-antispam-prvs: <BYAPR05MB5125BADBDD577B0D72252717ACF70@BYAPR05MB5125.namprd05.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:1824;
x-forefront-prvs: 03468CBA43
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(199004)(26005)(33656002)(6512007)(36756003)(498600001)(71200400001)(186003)(54906003)(4326008)(2616005)(110136005)(86362001)(6506007)(8936002)(64756008)(66476007)(66446008)(66946007)(76116006)(81156014)(81166006)(2906002)(8676002)(66556008)(53546011)(6486002)(7116003)(5660300002)(3480700007); DIR:OUT; SFP:1102; SCL:1; SRVR:BYAPR05MB5125; H:BYAPR05MB4296.namprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1;
received-spf: None (protection.outlook.com: juniper.net does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: RGGri+g3+/DvK0iuyDyg9g4LTwFKxfysvNPQOAzRkP7qjspaKOxgLjbkwvS/cp98E0KC33rpHiEgx5C0eYnBigImkowAmrA4/7FWF8Ri5hq9KMgKUqNCGDDmGG6iooodUgsE1jpqwVGWLCtquhkAhmLsG0AVmyxnwXUEujvaOgzv/xk8M1eyyFQQP1PySbQGjSpvzwLZJ4ikT6JWmYh4/r1Ad8Frr5hrrXQ3mJ5j4gMSTrDVybxqlwuohQyuwSjegRaQSe5pnU5X1dS2NUKWsZanLw5O+xFyA80H6ZlNMM9wV8VaNa3PIcuwDZUMlwjFobX+C+BINDLQybvTYZu5xIrHZcf7ojUXXyqqCw1FoebVum6qlAF/X8bnqdnPkFRz/qoarTzKameO9biLlCLfhhS3ItMDoiGu0XPteKR+pLZ2sks/aWwPfD+1AVIogsWPAS9my+fU5hto/iFnA19oKd6cdvu4z/rtqVppPDrnE5xQYRAQlwrcFerazw2bp4Z7xAxgfKY6Hv/f4esi4t3dwA==
x-ms-exchange-antispam-messagedata: vTOCOXTeVLxBl8Co1TYzbg6C/ZyAYACQs+HNSnR+uIbrd/heAAPnjBGyCncw3RqYQ1+a5mFXCBB0W1bX3kWiZzw5km0hhF9Bq1C326CvHvIxjKtF8WDhhKmzwHS3GiZ+85uqb6lUg8PRm6rsllhOdA==
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_C8542AB29C1742FF8DD81AB3C8C65159junipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-Network-Message-Id: e58e0b0d-debf-4385-6dc3-08d7cb5a3b61
X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2020 16:34:29.8591 (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: O1ZmENkQTD0+Te8bSAhtnHVH+LIj/OsfXd4FIBdCnt6yLaq8YzUMXhEclWxdnHcO
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR05MB5125
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.645 definitions=2020-03-18_07:2020-03-18, 2020-03-18 signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 mlxlogscore=999 clxscore=1011 malwarescore=0 phishscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 spamscore=0 mlxscore=0 suspectscore=0 priorityscore=1501 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2003180075
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/Bg-FdY118Pog44bSq3fNxqyNtK0>
Subject: Re: [Rift] RIFT protocol implementation
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Mar 2020 16:34:44 -0000

Forwarding the discussion to the rift ietf list for further exposure & since I generally think it will be possibly more productive in a wider forum. Roma Tre University is working on Bruno’s open source and there’s a bunch of interesting tools they’re developing as well as you can read below.

--- tony

From: Mariano Scazzariello <mscazzariello@os.uniroma3.it>
Date: Wednesday, March 18, 2020 at 9:10 AM
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: Antoni Przygienda <prz@juniper.net>, Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com>, "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com>, Giuseppe Di Battista <giuseppe.dibattista@uniroma3.it>
Subject: Re: RIFT protocol implementation


Hi everyone,
thanks for the extremely detailed suggestions! I have a lot of stuff which I can use to work on the implementation. Also thanks Tony for giving me further useful tips.

Also, I'm happy that we agree on almost every implementation detail and I agree with your suggested variations (like the flag for the spf_run_direction method).

About point C, I did not write anything since it seems quite easy to extend the Thrift model. If I have any issues, I'll surely ask you for some help. I also wrote a point D (which is how to handle the negative disaggregation in the RIB/FIB when received), but I read the Pascal slides (I add the link<https://urldefense.com/v3/__https:/bitbucket.org/riftrfc/rift_draft/src/master/negative*20disaggregation.pptx__;JQ!!NEt6yMaO-gk!QBFQP3Ec6u0elEKgEFaAEndcjyQntJXvMg0h2TfAH6kn4JLUaMb3FOYpDQOltw$> here, so everyone can access them easily) and the steps used in that presentation are the same that I thought.

I still have some doubts about the special SPF run:
2) We will also need a new member field orig_neg_disagg_prefixes (once again of type set, I think) that contains the negatively disaggregated prefixes that are autonomously being originated based on the detection of fallen leafs based on the difference between the normal and special SPF run.
You are proposing to postpone the RIB/FIB update after the special SPF run (which can detect additional fallen leaf nodes). This is right,  but should this only occur on ToF nodes? If we consider a node X, which is not a ToF, that receives a negative disaggregation TIE, it should only add the prefix in the prop_neg_disagg_prefixes set and check if it received this prefix from all its parent nodes and propagate it if required. Then it should proceed to update its RIB/FIB, without running the special SPF. Am I right?

About the flooding oscillations, Tony writes "Your best protection is scaled, randomized tests". Here at Roma Tre University we developed a tool called Kathará<https://urldefense.com/v3/__https:/www.kathara.org/__;!!NEt6yMaO-gk!QBFQP3Ec6u0elEKgEFaAEndcjyQntJXvMg0h2TfAH6kn4JLUaMb3FOZujrrECA$> which is able to emulate network scenarios using Docker containers. Recently, we also developed a Fat Tree Generator, that automatically generates a fat tree topology starting from the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathará. It also auto-configures the routing protocol on each node (of course, we also included the RIFT-Python implementation). So we can generate Fat Tree topologies of any size and run tests on it to verify functional and behavioral aspects (and also gather routing information such as PDU size and count). We are also developing a Fat Tree Test Framework (in collaboration with Leonardo and the team at UY university) which implements typical data center network scenarios (such as link failure, node failure, fallen leaf, partitioned fabric and so on) to run integration tests on it. For example, we can check if the routing table of a node is equal to the expected one after a failure (e.g. loss of a multipath or a prefix). With this tool we can surely run randomized tests (at any scale, since Kathará supports Kubernetes) to ensure that no flooding oscillations occur.

I agree to move the discussion on the RIFT WG mailing list. Maybe someone of you should introduce us and explain what we're doing.

Thanks everyone for your time,
Mariano.