Re: [Rift] RIFT protocol implementation

Bruno Rijsman <brunorijsman@gmail.com> Thu, 14 May 2020 16:49 UTC

Return-Path: <brunorijsman@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 630433A0BAD; Thu, 14 May 2020 09:49:32 -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 vt7LDnwtlan9; Thu, 14 May 2020 09:49:30 -0700 (PDT)
Received: from mail-ua1-x944.google.com (mail-ua1-x944.google.com [IPv6:2607:f8b0:4864:20::944]) (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 57F2D3A0BA5; Thu, 14 May 2020 09:49:30 -0700 (PDT)
Received: by mail-ua1-x944.google.com with SMTP id g35so1402398uad.0; Thu, 14 May 2020 09:49:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=xEBTMfrlmUOkeUdCBv9U4JmYjx3HyBPqCgXeqB7NZls=; b=lraznbyZ4nN7/SGBq9qs0UyeUfo4N+5d6SnGs9yqhbkDcUL/vxda3JNDRybPnUBDCK SO3vUZStSdtQwg8Ke98Tl3Nzx8kf9O9WUMekKiNVC8TqXYmfBzAUwhIQjWcduwWy8Z3i zCDYOMMI3cPTWkM44rEFlS9w1SwdPX1z2Ov0CxGXGhVtwjkD6/n9IsCG9n0c1nwitx6/ csZqviR7pGjkPAti7yM+0hJwbZfjbmXfVfFktsFOsq989pxneGsqddbmZFtIJPOfI+LR kmMsxm+QDM4izKCnTXlZwEzbxOl0iXHrEFPNBknbnrfWPFiN0xxkcRhFg90ZzBlgiZqO oMuQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=xEBTMfrlmUOkeUdCBv9U4JmYjx3HyBPqCgXeqB7NZls=; b=RogLrFR8PpBtaaGPMhlUDUb55K1tHVMudlnnXDsy1XWK3QpYDX3B/A/A7EnSQ2uQdy tQfkFdGKyNlTrihJpZN6wwlNS/bUzW6fnr5T2wOlQuFHLvitnDfg+6CRIBCirltG0SlJ eSbwDdAIoR17tRmPCHSREDkizWpo8YZkfOuhnrYivNTFgoRAoewLWruZOHHPBLEqru/R vOqHc05HfE6gNUgQT3oPv7/hfQDSAui5v/Vr6rF+ZYDvBhWvCtABxnI3S61vp7pJZRKa UmnulX7cXJVJxaLXETeGqKh4Ld/oe/7NFsB3FsgRrZvCWTF5cS7KQXhF4vRZ9CKpotk/ kexg==
X-Gm-Message-State: AOAM533iARniHwceKO6zD852zzC9jpDy7sQGAfOgl9EMw/ep8OLZn6c4 ZAiZjYd813Aqsz4F6JkGwWiXG73D
X-Google-Smtp-Source: ABdhPJyqncJDmshtKQUlHh9SGbAUQX46gT99B33dzmPlaSzM+KrujizXIuQZMDcqBlk1pkQfWZ7tqA==
X-Received: by 2002:ab0:7392:: with SMTP id l18mr4896193uap.90.1589474969146; Thu, 14 May 2020 09:49:29 -0700 (PDT)
Received: from brunos-macbook.conexion.com (wisp-63.conexion.com. [168.234.219.63]) by smtp.gmail.com with ESMTPSA id g29sm790281uah.5.2020.05.14.09.49.27 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 May 2020 09:49:28 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <59C6BFC1-774B-4835-ABE8-247894711ECB@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_45370CD8-5A6D-4E1E-AF1D-1656A73B2D97"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Thu, 14 May 2020 10:49:26 -0600
In-Reply-To: <CA+wi2hMP2SG83ehqXRGO2roNTSdoTSm3erNyBGhverb6LRfRYg@mail.gmail.com>
Cc: Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, rift@ietf.org, fdt@ietf.org
To: Tony Przygienda <tonysietf@gmail.com>
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> <CA+wi2hMP2SG83ehqXRGO2roNTSdoTSm3erNyBGhverb6LRfRYg@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/-XExlAyb_wU7Uyh4l_wiEKfg2iY>
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:49:33 -0000

I am not disagreeing with you, Tony. Having to hand-craft a RIFT decoder for Wireshark stinks to high heaven. It would be infinitely better if we could use the message decoding C code that is generated by the Thrift-C compiler.

I think we are discovering some new requirements for model-based routing protocols that are new relative to the original use case of model-based APIs.

And we are discovering that those new requirements are not well supported by existing compilers (Thrift or otherwise).

I always had the urge to write an Internet-Draft on the topic of using Thrift as a modeling language for RIFT (what worked well, what didn’t work well, etc.) but I never got around to doing it.

Such a draft would be useful input for the formal languages BOF (WG?) https://www.ietf.org/mailman/listinfo/fdt <https://www.ietf.org/mailman/listinfo/fdt>

— Bruno


> On May 14, 2020, at 10:34 AM, Tony Przygienda <tonysietf@gmail.com> wrote:
> 
> 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 <mailto: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 <mailto: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 <mailto: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 <mailto: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 <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
>>