Re: [Rift] RIFT protocol implementation
Tony Przygienda <tonysietf@gmail.com> Thu, 14 May 2020 16:36 UTC
Return-Path: <tonysietf@gmail.com>
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 B800A3A0B39 for <rift@ietfa.amsl.com>; Thu, 14 May 2020 09:36:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.097
X-Spam-Level:
X-Spam-Status: No, score=-1.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 66HVd_u6N9C9 for <rift@ietfa.amsl.com>; Thu, 14 May 2020 09:36:16 -0700 (PDT)
Received: from mail-io1-xd43.google.com (mail-io1-xd43.google.com [IPv6:2607:f8b0:4864:20::d43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0DB563A0A8B for <rift@ietf.org>; Thu, 14 May 2020 09:36:15 -0700 (PDT)
Received: by mail-io1-xd43.google.com with SMTP id k18so1064018ion.0 for <rift@ietf.org>; Thu, 14 May 2020 09:36:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Jq74JRW0f9y11teRSSQsvpmO915N4QoyEZdMJR1Sijc=; b=s70A67a8NgPaWbBH9Q1E2slRDpkTLIFwYPR5p9NRIpyQ1/dFvQ+N9G3F9+s88obUUn wf23V7e0buB9W9utLbWjQEGB+6K2Xi3ztUBuwfPo3MOuhptn3epf1iKt2dqTWuDA2jLU Hgx2ocqdV524EyHoxcw7JjxC4lOG+N13rJd4lubVA0ZGAws0HFNtdCebeiNfi9HQzNhg Hm8YFe3Z+vobV039MjJnUFAm7SdFCKZVe6e/MaFs4ZlWAWF6XVRVtWQATdWMW6RFudBS yzICnO8k4oKBzwZQCE286U/UAJnwWOlcEwukngbHQrD2MGeK0Cz+tDHdKXIbivMt13XK WWyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Jq74JRW0f9y11teRSSQsvpmO915N4QoyEZdMJR1Sijc=; b=dA+xkhuiTePblMkp7DQ/PUG8w3bg8azIPSTkUP0/B2BKQ8WocA4zcdJkaArLoR6WfN xRZ/ev+mbrbrDd1xb2xZrk4VzzS5xZiFNiyyoP9By+S6B/NH1hHrNDAFWoI8gIf40njs x4tP2h3qgCjEsScpLhx81XaF2iv53p2jiE78uhx2zQl2mxtxrk2E6/pE5sH0dQdENV1X NWXZeFUnuGzOYDQ9ORX+VqQF8B0m6QXrrDlBDgvJe3JT6zbxFzAg0BCDHtxUb5kqVb72 AOyCDIN3RevsO6f7Qu3lwNplQDhsJ8tUu3CR5mveskwV+XxfNDE4AAC6nAlJrqGM+OPO 4CiA==
X-Gm-Message-State: AGi0Pubx0Lcw5H8xprFmZPypbhdotbPBtM3CSxwshs72GJLdyLVfjzSJ Cwdids0X37O02M9argCT3tu1rdL+yE/oBEn3p5A=
X-Google-Smtp-Source: APiQypKyzZJEFZTmdOgrlHhTb/tDaDatI2uA+/N+vSjfVP01L7++1xJ284uHdAXCXYIuDFrhyIqal+7JH1amq6YigcA=
X-Received: by 2002:a02:5249:: with SMTP id d70mr5311091jab.121.1589474175055; Thu, 14 May 2020 09:36:15 -0700 (PDT)
MIME-Version: 1.0
References: <AM6PR04MB432519F740317CFE30ED33C8C1420@AM6PR04MB4325.eurprd04.prod.outlook.com> <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> <C8542AB2-9C17-42FF-8DD8-1AB3C8C65159@juniper.net> <b82cfbc9-6531-cb3a-a7b2-01ed723f37b4@fing.edu.uy> <CA+wi2hOYT-xzh89=SkGexbqV_ZuEqnUD7nSc35veTR=Q+=KEnA@mail.gmail.com> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> <CA+wi2hPT_19kZ7t1D6BhPBxcjJMyarw5yq3YZ9OHrQ265QEWPw@mail.gmail.com> <CA+wi2hMa46PeDcCWdg_tdMJOpmoLW8sGoHwYKsu30aWDRi=KWg@mail.gmail.com> <3594E151-C392-4959-A4F9-8744D3621CCA@gmail.com>
In-Reply-To: <3594E151-C392-4959-A4F9-8744D3621CCA@gmail.com>
From: Tony Przygienda <tonysietf@gmail.com>
Date: Thu, 14 May 2020 09:34:40 -0700
Message-ID: <CA+wi2hMP2SG83ehqXRGO2roNTSdoTSm3erNyBGhverb6LRfRYg@mail.gmail.com>
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, rift@ietf.org
Content-Type: multipart/alternative; boundary="00000000000095791505a59e4b5a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/1bim130K3xfyQjpSzGkwTpfMsvE>
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: Thu, 14 May 2020 16:36:19 -0000
That runs in a sense completely counter a model based encoding (don't forget, thrift can run binary compressed messages as well, so how will you offset that ;-) But as I said, I didn't look @ the decode/encode too closely, especially not in the C code. Also, you'll have other effects like certain encoders omitting required with default values if not set since it's in a sense "implied" for the decoder. We do break fairly new ground here ;-) but I think over time the benefits of model based encoding/decoding will start influence other routing protocols (there are other types of protocols running today that are fully model based on encoding) given the advantages we were seeing in RIFT -- tony On Thu, May 14, 2020 at 5:59 AM Bruno Rijsman <brunorijsman@gmail.com> wrote: > One issue with using the Thrift decoder generated by the Thrift compiler > is that the user interface of Wireshark allows you to highlight certain > fields in the decoded message and automatically highlights the > corresponding bytes in the hexdump of the binary message. Thus the Thrift > decoder used in Wireshark must (a) know the exact order in which the fields > occurred in the binary message, which may not be the same order as in the > model and (b) know which bytes in the binary message correspond to which > fields in the decoded message. As far as I know the code generated by the > Thrift compiler currently does not generate that information. An > interesting approach would be to enhance the Thrift C back-end to include > that information. > > — Bruno > > On May 12, 2020, at 4:51 PM, Tony Przygienda <tonysietf@gmail.com> wrote: > > and quick question, why didn't you just push the binary into thrift > backend to deserialize? People may send compressed binary formats etc and > the encoding may change. Point of the modelling exercise > > -- tony > > > On Tue, May 12, 2020 at 3:48 PM Tony Przygienda <tonysietf@gmail.com> > wrote: > >> multiple people were looking JUST for this. >> >> maybe next interim implementation experience. this was lighting fast ;-) >> >> -- tony >> >> >> On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann < >> lalberro@fing.edu.uy> wrote: >> >>> Hello all, >>> >>> regarding the development of a wireshark dissector for RIFT, we are >>> happy to introduce you our work. It is available at >>> https://gitlab.com/fing-mina/datacenters/rift-dissector >>> >>> RIFT C dissector is a complete Wireshark dissector for decoding RIFT >>> protocol. The code identifies all the RIFT packets and builds a complete >>> dissection for the TIE ones. This dissector has been tested with the >>> current implementations of RIFT. >>> >>> Regards, >>> Leonardo >>> El 26/3/20 a las 13:23, Tony Przygienda escribió: >>> >>> Leonardo, that is a great project. Observe that depending on language >>> backend/thrift compiler different streams may represent the same encoding >>> so it's good to test it against more than one implementation. We should get >>> streams that has all possible LIEs and TIEs in it. >>> >>> If you run juniper standalone public package >>> https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build >>> a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a >>> v6/v4 links from a spine to a leaf. that will give you all the LIEs and >>> node TIEs and default prefixes. If you break a link via CLI you will get >>> disaggregation as well. If you struggle with that, ping me ... >>> >>> Having said that you can do all that with open source as well (but >>> observe we didn't pull open source to -11 draft yet which had some schema >>> changes albeit minor). you can pull the schema yourself with Bruno's help >>> or I'll get to it one of these days ;-) ... >>> >>> Architecturally, since RIFT will evolve and possibly move to newer major >>> schemas, I would suggest you provision for the possibility to put into >>> wireshark multiple schema files, basically you'd need to compile multiple >>> directories in differnt namespaces and use the correct one depending on the >>> major you found on packet envelope (you can always use the newest minor you >>> support on the major, they are always compatible). >>> >>> --- tony >>> >>> >>> >>> On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann < >>> lalberro@fing.edu.uy> wrote: >>> >>>> Hi everyone, >>>> >>>> as a part of this project we are developing a wireshark dissector for >>>> RIFT. The dissection for the security envelope is ready and tested. Now we >>>> are working on the Serialized RIFT Model Object dissection and for >>>> preparing the testing we are looking for a "known" trace, i.e we need a few >>>> packets and the exact values of these fields in the Thrift model. So if >>>> anyone can help us we'll be grateful. >>>> >>>> Regards, >>>> Leonardo. >>>> El 18/3/20 a las 13:34, Antoni Przygienda escribió: >>>> >>>> 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> >>>> <mscazzariello@os.uniroma3.it> >>>> *Date: *Wednesday, March 18, 2020 at 9:10 AM >>>> *To: *Bruno Rijsman <brunorijsman@gmail.com> <brunorijsman@gmail..com> >>>> *Cc: *Antoni Przygienda <prz@juniper.net> <prz@juniper.net>, Leonardo >>>> Alberro Zimmermann <lalberro@fing.edu.uy> <lalberro@fing.edu.uy>, >>>> "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com> >>>> <tommasocaiazzi@gmail.com> <tommasocaiazzi@gmail.com>, >>>> "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com> >>>> <lorenzoariemma@gmail.com> <lorenzoariemma@gmail.com>, Giuseppe Di >>>> Battista <giuseppe.dibattista@uniroma3.it> >>>> <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. >>>> >>>> _______________________________________________ >>>> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/rift >>>> >>>> >>> _______________________________________________ >>> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/rift >>> >>> >
- Re: [Rift] RIFT protocol implementation Antoni Przygienda
- Re: [Rift] RIFT protocol implementation Leonardo Alberro Zimmermann
- Re: [Rift] RIFT protocol implementation Tony Przygienda
- Re: [Rift] RIFT protocol implementation Leonardo Alberro Zimmermann
- Re: [Rift] RIFT protocol implementation Tony Przygienda
- Re: [Rift] RIFT protocol implementation Tony Przygienda
- Re: [Rift] RIFT protocol implementation Leonardo Alberro Zimmermann
- Re: [Rift] RIFT protocol implementation Tony Przygienda
- Re: [Rift] RIFT protocol implementation Bruno Rijsman
- Re: [Rift] RIFT protocol implementation Tony Przygienda
- Re: [Rift] RIFT protocol implementation Bruno Rijsman
- Re: [Rift] RIFT protocol implementation Tony Przygienda
- Re: [Rift] RIFT protocol implementation Leonardo Alberro Zimmermann
- Re: [Rift] RIFT protocol implementation Oliver Steudler