[Cbor] Using packed CBOR in BIRD's custom protocol

Maria Matejka <maria.matejka@nic.cz> Wed, 07 June 2023 10:35 UTC

Return-Path: <maria.matejka@nic.cz>
X-Original-To: cbor@ietfa.amsl.com
Delivered-To: cbor@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0C36FC151092 for <cbor@ietfa.amsl.com>; Wed, 7 Jun 2023 03:35:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.095
X-Spam-Level:
X-Spam-Status: No, score=-2.095 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, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 (1024-bit key) header.d=nic.cz
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 KlraKz3MhZnx for <cbor@ietfa.amsl.com>; Wed, 7 Jun 2023 03:35:09 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [217.31.204.67]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BD9E1C151084 for <cbor@ietf.org>; Wed, 7 Jun 2023 03:35:09 -0700 (PDT)
Received: from [IPV6:2001:1488:fffe:6:ffff:ffff:ffff:31] (unknown [IPv6:2001:1488:fffe:6:ffff:ffff:ffff:31]) by mail.nic.cz (Postfix) with ESMTPSA id 437D11C1382 for <cbor@ietf.org>; Wed, 7 Jun 2023 12:35:05 +0200 (CEST)
Authentication-Results: mail.nic.cz; auth=pass smtp.auth=maria.matejka@nic.cz smtp.mailfrom=maria.matejka@nic.cz
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1686134106; bh=5LEoVLx3oPZ3BWXzJmAmJyf7q7vYQHTN5HExNJKr/4E=; h=Date:To:From:Subject:From:Reply-To:Subject:To:Cc; b=jmECO1QO2veIHazzFRiNk/uCY3wkoRYcNO5noGHAH2NLsTHxwWDyhO3BVkx1F+TkF rwNAVfb54oqbmYcYfkfpUQZbHkc07Ip68uInsjrlaY9S2fcn8YSu0uNRQlznUVXYvp zoQS626yj8bFJSOF1JQHnuEKqE34a9fVrblNYRxI=
Content-Type: multipart/alternative; boundary="------------obbTH9Oh0U0R428EgM83fri0"
Message-ID: <25a4a6ed-5b00-c900-c9c6-b83dd45b4003@nic.cz>
Date: Wed, 07 Jun 2023 12:35:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0
To: cbor@ietf.org
Content-Language: en-US, cs
From: Maria Matejka <maria.matejka@nic.cz>
X-Virus-Scanned: clamav-milter 0.103.7 at mail
X-Virus-Status: Clean
X-Rspamd-Server: mail
X-Rspamd-Pre-Result: action=no action; module=multimap; Matched map: WHITELISTED_IP
X-Rspamd-Queue-Id: 437D11C1382
X-Spamd-Bar: /
X-Spamd-Result: default: False [-0.10 / 20.00]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ARC_NA(0.00)[]; WHITELISTED_IP(0.00)[2001:1488:fffe:6:ffff:ffff:ffff:31]; FROM_HAS_DN(0.00)[]; ASN(0.00)[asn:25192, ipnet:2001:1488::/32, country:CZ]
X-Rspamd-Action: no action
Archived-At: <https://mailarchive.ietf.org/arch/msg/cbor/5LWgnhxCZBdfFJQF9nZ_gXXfLWY>
Subject: [Cbor] Using packed CBOR in BIRD's custom protocol
X-BeenThere: cbor@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Concise Binary Object Representation \(CBOR\)" <cbor.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cbor>, <mailto:cbor-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cbor/>
List-Post: <mailto:cbor@ietf.org>
List-Help: <mailto:cbor-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cbor>, <mailto:cbor-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Jun 2023 10:40:23 -0000

Hello!

We're planning to implement a machine-friendly protocol for common and 
generic communication between BIRD and the surroundings, like GUIs and 
CLIs or automation machinery. (Currently, everybody is parsing our CLI, 
which is an awful mess.) We decided to go with CBOR and I'd like to 
consult with you whether our way is reasonable, and also ask some 
questions, as we're newbies in this area, if you don't mind.

We're definitely going for the packed CBOR as our data can easily get 
annoyingly big if not packed. Yet we typically don't know the actual 
contents of the dictionary when starting to pack – and we don't like 
caching the data either before sending it to generate the dictionary to 
the beginning. Is there any possibility to send dictionary updates? I'm 
quite confused by the wording of section 3 of draft-ietf-cbor-packed-08 
– at least my concerns are partially relieved by the Appendix A. I'm 
reading it this way – when we have anything to pack, we open a new 
113-tag enclosing the rest of the message … and as soon as we find 
something more to add to the dictionary, we *nest* the 113-tags and we 
put the new values to the end of the dictionary by explicitly marking 
them by their tags. Is this a valid understanding of that section?

Or should we better go for value-sharing by Marc A. Lehmann with tags 28 
and 29 in this kind of setup?

For the in-socket format, I'm also missing a possibility to explicitly 
say "the following object (data item) is exactly N bytes long" to allow 
for easier data management – shall we define this functionality and 
register it as a tag?

And also we're going to encode routing information (like BGP attributes) 
which may need a standardized representation, yet it's just a map (in 
case of one route) or a map of maps (full RIB). I think that in this 
case, it doesn't deserve a tag, yet it may be handy to write an 
informational RFC about that. Is this the right way to go?

Thank you for helping us.

-- 
Maria Matejka | BIRD Team Leader | CZ.NIC, z.s.p.o.