Return-Path: <paul.hoffman@vpnc.org>
X-Original-To: dnsop@ietfa.amsl.com
Delivered-To: dnsop@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id 091C81A0437
 for <dnsop@ietfa.amsl.com>; Thu, 21 Aug 2014 09:11:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.047
X-Spam-Level: 
X-Spam-Status: No, score=-3.047 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, HELO_MISMATCH_COM=0.553, J_CHICKENPOX_84=0.6,
 RCVD_IN_DNSWL_MED=-2.3] autolearn=ham
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 J2DAB-uWTT6f for <dnsop@ietfa.amsl.com>;
 Thu, 21 Aug 2014 09:11:27 -0700 (PDT)
Received: from proper.com (Hoffman.Proper.COM [207.182.41.81])
 (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 478CB1A0414
 for <dnsop@ietf.org>; Thu, 21 Aug 2014 09:11:22 -0700 (PDT)
Received: from [10.20.30.90] (50-0-66-181.dsl.dynamic.sonic.net [50.0.66.181])
 (authenticated bits=0)
 by proper.com (8.14.9/8.14.7) with ESMTP id s7LGBJtf074609
 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO);
 Thu, 21 Aug 2014 09:11:21 -0700 (MST)
 (envelope-from paul.hoffman@vpnc.org)
X-Authentication-Warning: proper.com: Host 50-0-66-181.dsl.dynamic.sonic.net
 [50.0.66.181] claimed to be [10.20.30.90]
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Paul Hoffman <paul.hoffman@vpnc.org>
In-Reply-To: <20140821172757.504f49b7@vulcan>
Date: Thu, 21 Aug 2014 09:11:18 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <97A31C1B-329D-44A3-A7C5-888F9E10C38D@vpnc.org>
References: <B4ACD73A-25EF-4063-81D4-DCFE6DB78AB1@vpnc.org>
 <20140821102232.73071610@vulcan>
 <586AEB36-C10F-4E6E-AC55-BAADE7C00FD4@vpnc.org>
 <20140821172757.504f49b7@vulcan>
To: Shane Kerr <shane@time-travellers.org>
X-Mailer: Apple Mail (2.1878.6)
Archived-At: http://mailarchive.ietf.org/arch/msg/dnsop/4eoXijWdUex_eEOyvDwWrYK4vic
Cc: dnsop <dnsop@ietf.org>
Subject: Re: [DNSOP] New draft on representing DNS messages in JSON
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnsop>,
 <mailto:dnsop-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dnsop/>
List-Post: <mailto:dnsop@ietf.org>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsop>,
 <mailto:dnsop-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Aug 2014 16:11:29 -0000

On Aug 21, 2014, at 8:27 AM, Shane Kerr <shane@time-travellers.org> =
wrote:

>>> * In general I'm not super enthusiastic about the mixing of binary
>>> and formatted data - I tend to think an application will want one
>>> or the other. Perhaps it makes more sense to define two formats,
>>> one binary and one formatted? Or...
>>=20
>> All fields are optional, so a profile could say "don't include these"
>> or "always include those". Further, and more importantly, most RDATA
>> are binary. I did not want to force implementations to use the
>> presentation format for RDATA.
>=20
> The problem with an "all fields are optional" approach is that it puts
> all the burden on the consumer of the data, right? You literally have
> no idea what to expect. (That's kind of why I proposed some sort of
> schema below.)

Correct.

> I understand not wanting to force implementations to use the
> presentation format for RDATA... OTOH it seems likely that the reason
> people are putting data in JSON is so they can see what it is. We =
could
> always try the RFC 3597 approach for an unknown RTYPE?

Define "unknown". Note that at least one "known" RTYPE has its =
description wrong, but you'd only know that if you read the RFC errata.

I could have RDATA is a string that is in presentation format, and hope =
that all emitters and receivers get that right, with an optional =
additional filed of rdataOctets! for a base64url-encoded version. If the =
emitter doesn't know the presentation form, it uses that only; if the =
emitter isn't sure that the receiver knows the presentation form, the =
emitter adds an rdataOctets! field as well. If the emitter knows that =
the RDATA is broken (such as a three-octet value for an A record), it =
just uses an rdataOctets! field. Would that suffice for you?=20

>>> * Maybe it makes sense to define a meta-record so consumers can know
>>> what to expect? Something that lists which names will (or may)
>>> appear.
>>=20
>> That would be a JSON schema. Just using that phrase will cause
>> screaming in the Apps Area. Having said that, it's perfectly
>> reasonable for a profile to insist that each record have a profile
>> indicator such as "Profile": "Private DNS interchange v3.1".
>=20
> Screaming aside, applications will either have an implicit schema or =
an
> explicit one. Defining the problem to be out of scope may be necessary
> to get something published, but that's a symptom of IETF brokenness
> IMHO, since it reduces the usefulness of any such RFC. :(

The IETF looked at the horrid mess crated by XML schema, and decided =
that implicit schema described in text are better. And before you attack =
the messenger on this, note that (a) I tried to get the IETF to look at =
JSON schema again and (b) I'm the co-chair of the JSON WG.

>>> I'd be mildly curious to see a comparison of the compressed sizes of
>>> JSON-formatted data (without data duplicated as binary stuff) versus
>>> non-JSON-formatted data. My intuition is that compression will
>>> remove most of the horrible redundancy that is involved in JSON,
>>> but there's only one way to be sure. ;)
>>=20
>> Sure. It's pretty trivial to do, for example, a CBOR format that
>> follows this; there are now CBOR libraries for most popular modern
>> languages (see http://cbor.io/). If folks here want that, I can add
>> it as an appendix. To be clear, however, I haven't heard anyone
>> saying they want compression so badly they are willing to lose
>> readability of the data.
>=20
> Oh, I meant with gzip or the like, not some JSON crafted format.
>=20
> So the idea is:
>=20
>   $ tcpdump -w somefile.pcap
>   $ pcap2dnsjson somefile.pcap somefile.json
>   $ gzip somefile.pcap
>   $ gzip somefile.json
>   $ ls -l somefile.{pcap,json}.gz
>=20
> Then compare the sizes of the compressed files.
>=20
> The idea being that when moving files around via scp or rsync or
> whatever they'd probably be compressed like this, and probably also =
for
> medium-term storage. My hope is that a compressed JSON is roughly the
> same size as a compress raw pcap file, since basically they have the
> same entropy.
>=20
> The reason I bring this up is to give a feel for the size cost of a
> bloated text format in practice. :)

Noted. That's an easy thing for implementers of this format to do. So is =
saying that size is so important (maybe because we finally have so many =
DNSSEC keys passed about) that CBOR or something like it would be =
better.

--Paul Hoffman=

