Re: [dnsoverhttp] JSON DNS Suggestions

Zach Lym <zachlym@indolering.com> Tue, 15 November 2016 21:06 UTC

Return-Path: <indolering@gmail.com>
X-Original-To: dnsoverhttp@ietfa.amsl.com
Delivered-To: dnsoverhttp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 540341294F4 for <dnsoverhttp@ietfa.amsl.com>; Tue, 15 Nov 2016 13:06:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.399
X-Spam-Level:
X-Spam-Status: No, score=-2.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.199, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham 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 b8bAMgRmYyLI for <dnsoverhttp@ietfa.amsl.com>; Tue, 15 Nov 2016 13:06:51 -0800 (PST)
Received: from mail-yw0-x232.google.com (mail-yw0-x232.google.com [IPv6:2607:f8b0:4002:c05::232]) (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 9E56312955E for <dnsoverhttp@ietf.org>; Tue, 15 Nov 2016 13:06:51 -0800 (PST)
Received: by mail-yw0-x232.google.com with SMTP id r204so111886402ywb.0 for <dnsoverhttp@ietf.org>; Tue, 15 Nov 2016 13:06:51 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=8SWQdnm0PEJvqmN7+tH6HHv5XBZ6vcsUbU8hbiw61WM=; b=S/dvi217IGhvgRBQ7TUAAKfL6ELBzC4wO3N+/RInwWmUX3mJiiAa6ODQvDI3XIU5Ge 6zkzNqoICVDce+CffF7lBPN1U+W/PoafYvg5QD9vC7kU4ML9Qc18carfpCxfgkPnwBDs 2+QdNerVoWMnJIdgDb+9Ar54OHfDVyTqB90vWWNFA4uCm81tRA1hDdio+wsW86X46FrL LWbGs8O86sRSXjIhdTHyoCl+rDoYjU2uj7YjXgmp/Ef/PfWOWLh0RDBSMTvpeXVyXA/c GlC3T9yK+Un+upmJC5AaN9+czTEgfe9g0rWLQZ58P65/rjzN3fGgokc+EuMEi4sWkbxd K+Ag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to; bh=8SWQdnm0PEJvqmN7+tH6HHv5XBZ6vcsUbU8hbiw61WM=; b=eiPVUJeICbm7AUgdbaV1jcB0c9o3adx0ANOFvVzglvxc8UCJac+Da1v9hF3/l1/dVa jBkWDr9bRSFHZxNtOz5w6LYdyXBihaeCZh8YgqlTJoWzlyvHdZAUSPQ2aZUeJen03X3A fBcmbPASiDGYD+GYCkXZ0Kygrx/osXuGv1CGiWEwKY83f1c4AYG8+e9uQj02GqsGXUvm KbnA1BOPFkNY2mRcHbL95jeWEBhqWPB8PhMq9a4WzkOryHTVsezVkvtVuGQvnH+wDYNl Rtkz9oSj4hHi3pel9+CdwqO0YkpuIF7MpjJ648gyGc9ik6/t2kbsmrpX3uYsrFmsyt8M rQQw==
X-Gm-Message-State: ABUngvdSCxxDu4zDmzoaQwX/CUkRxdE2Um53hfkUmXLxden9yA8X9LFz0euaPlTLElkDovoNyzjBiGjocVXeEw==
X-Received: by 10.129.169.138 with SMTP id g132mr21386869ywh.196.1479244010553; Tue, 15 Nov 2016 13:06:50 -0800 (PST)
MIME-Version: 1.0
Sender: indolering@gmail.com
Received: by 10.37.170.39 with HTTP; Tue, 15 Nov 2016 13:06:09 -0800 (PST)
In-Reply-To: <F6ED335F-7F64-4A73-86C4-8F83534B88D1@icann.org>
References: <CABWuLVfrPMZc-ChZHrFuO5OU_EnZtQMjjHijg_DU2znGr+cwuQ@mail.gmail.com> <F6ED335F-7F64-4A73-86C4-8F83534B88D1@icann.org>
From: Zach Lym <zachlym@indolering.com>
Date: Tue, 15 Nov 2016 13:06:09 -0800
X-Google-Sender-Auth: HD1l3pbgUaBSKPiYVhG79AB4DcE
Message-ID: <CABWuLVeyVedAc==xBQD0taDGvVrSxWvDBimCxuLhTNhhnSWBAQ@mail.gmail.com>
To: "dnsoverhttp@ietf.org" <dnsoverhttp@ietf.org>
Content-Type: multipart/alternative; boundary="94eb2c003a08c9078305415d55c3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsoverhttp/Nx6dDdpO6zbOiKZTnnFKFNRYpSI>
Subject: Re: [dnsoverhttp] JSON DNS Suggestions
X-BeenThere: dnsoverhttp@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussion of DNS over HTTP <dnsoverhttp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnsoverhttp>, <mailto:dnsoverhttp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsoverhttp/>
List-Post: <mailto:dnsoverhttp@ietf.org>
List-Help: <mailto:dnsoverhttp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsoverhttp>, <mailto:dnsoverhttp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Nov 2016 21:06:53 -0000

>
> > While at EasyDNS, I created a library to translate between popular REST
> DNS APIs.  The syntax suggested by the current proposal is very different
> from what I found in the wild[0].
>
> This list shows that lots of developers have lots of preferences. :-)
>

The best standards tend to codify existing norms (WHAT-WG) or were formed
as the result of a competition (AES, SHA, etc).  A list of public APIs that
represent DNS records in JSON is the best proxy I can come up with.

Granted, being popular doesn't equate to being the "best" choice, but it's
more than just a pile of preferences.

>  I would like to propose the following changes to bring the spec:
> >
> > * Lowercase fields (`name`, `ttl`, etc)
>
> I painted the bike shed this way to match RFC 1035.
>

None of the APIs in the aforementioned list uppercase the field names ...
uppercase keywords died out with B&W terminals.

Dismiss this as bike shedding if you like, but I'm not going to let you
paint that bike shed neon pink ; )

> * Uppercase text values for `type` ("A", "CNAME", etc)
>
> That's already there in section 2.2.
>

I was advocating for the string representation by default, you have TYPE as
an integer and TYPEname as a string.  Going back to that list, the only
provider that accepts integers at all is Google and even they support both
strings and ints.

> * Array of RR objects for `question` and `answer` (no alternate "qname"
> field)
>
> One of the design goals for this format was the ability to specify invalid
> queries and responses so that it can be used to encapsulate some of the
> crap we see on the wire.
>

Ahh, I was confused and I misspoke!  Why should have both
qname/qtype/qclass in the message body AND a question array?

I'm not against getting rid of the question array, but I don't understand
why we are doing both....

> I'm also a bit concerned about parsing the "Specific RDATA Field Members"
> (`rdataA` and friends).  The proliferation of record types has led most
> APIs to stuffing everything (pref, prio, weight, port, etc) into the rdata
> field.  I think it would be best to require a space delimited rdata field
> and *optional* record-specific fields.  I can write a polygot library to
> split out such fields for client side developers.
>
> This sounds reasonable, but I added that in at the request of others on
> this mailing list.
>

Yes and while I agree with the reasoning, the implementation is problematic.

The current scheme requires a different rdata field for every record type.
Yet for most records, you keep the space delimited text form.  When you
look at real-world implementations, most just use space delimited rdata
values.  The two that do split fields from rdata tend to do so for MX and
SRV records.

Having a single representation for rdata lets one use a generic algorithm
for all records.  Making record-specific fields optional allows
applications to make use of them when it suites them.

> I'm fairly ignorant of the server side of things, feel free to educate me
> : )
>
> There is hopefully nothing server-specifc here!
>

For example, I generally don't care about stuff like the HEX representation.

> P.S. Is there a Github repo for the DNS JSON spec?
>
> Not yet, given that it is not clear what its home will be.
>
> --Paul Hoffman


If I created one, would you use it?  I prefer to break issues down into
single tickets instead of marathon emails.

Thanks,
-Zach Lym