Subject: Re: [homenet] I-D ACTION:draft-lemon-homenet-naming-architecture-00.txt

From: Markus Stenberg <[email-masked]>
Date: Fri, 1 Apr 2016 10:32:38 +0300

I have partially browsed through the draft. For the record, I am not big fan of the hybrid solution either as I consider the whole mdns rather ‘loud’ on the link, and hybrid just makes the solution worse by causing the spam to occur across multiple links. It is working solution _given current stuff_ though, which I am not sure can be ignored[1].

So, to comments about some parts of the draft:

Section 2.1: It looks interesting. I like having separate naming and connectivity provider, if we can pry the reverse delegation off the connection providers’ dead hands at any rate.

Section 2.2: I am not sure I like ‘flat’ namespace, as it prevents e.g. DNS-SD records from being associated with the particular namespace (or is this ‘flat’ in some logical sense and not really talking about label sequences?).

Section 2.3: I think public should be separate DNS-SD (+DNS-update) zone with manual opt-in, and not created out of local entries. 

Section 2.4.2: I think adding service registration to DHCP would be a mistake. (Wrong level in typical implementation stack, as it is not really tied to network configuration but instead property of applications; one _could_ do it but I find it non-desirable.)

Section 2.4.3: I would like some sort of ‘claim ownership of record X, allow updating it only if you are owner’ schemed DNS-Update to be the main method. It would also address conflict resolution _given_ single server (hard to do in distributed fashion though; the rest of draft seems to argue for loosely synchronized state while I would assert single master + read-only slaves would work better for this model as the ownership claim would be atomic / race-free)

Section 2.5: Not fan of using just IP address for authentication, instead, see above.

Section 3.6: TOFU is usually better than nothing at least..

Section 4.6: We got some (user) feedback that ULA should be preferred over GUA as GUA can go away, disrupting in-home stuff unneccessarily. (Obviously not mosh user.)

The draft seems like good start at least. 

Disclaimer: I didn’t quite read all of it as I am mostly just browsing through everything going on at the moment (and wondering if I should react to the dnssd WGLCs that already expired while I was on vacation, grumble.)

Cheers,

-Markus

[1] The classic argument ‘for’ hybrid are e.g. historic printers. However, I am pretty sure e.g. first-hop router could proxy-DNSSD-register them to DNS and mDNS could be just let rot in practise. (Later addition: Oh.  Section 2.4.1 covers this to some degree already.)

---

From: Ted Lemon <[email-masked]>
Date: Fri, 1 Apr 2016 09:09:57 -0400

Thanks for the review Marcus!

On Fri, Apr 1, 2016 at 3:32 AM, Markus Stenberg <[email-masked]>
wrote:

> Section 2.1: It looks interesting. I like having separate naming and
> connectivity provider, if we can pry the reverse delegation off the
> connection providers’ dead hands at any rate.
>

If you mean "get the ISP to do the delegation," I think having it as part
of the architecture will at least get them thinking about it, which is a
start! :)

> Section 2.2: I am not sure I like ‘flat’ namespace, as it prevents e.g.
> DNS-SD records from being associated with the particular namespace (or is
> this ‘flat’ in some logical sense and not really talking about label
> sequences?).
>

It's intended to be flat in the sense of a single label.   What would you
see as the use for a non-flat namespace?   You mention DNS-SD records
"being associated with a particular namespace," but this is more of a
campus-wide DNS-SD solution than a homenet solution.   If you are trying to
address the campus use case, I think that could be accomplished in a
follow-on document, since it's not the primary goal.   But say on--is there
more to it than that?

> Section 2.3: I think public should be separate DNS-SD (+DNS-update) zone
> with manual opt-in, and not created out of local entries.
>

Okay, but how would that work?   Do you mean just a different name
externally than internally?   I agree with that to some extent, but it
makes the UI harder because now the user has two different names for the
same resource, depending on whether they are internal or external to the
homenet.

> Section 2.4.2: I think adding service registration to DHCP would be a
> mistake. (Wrong level in typical implementation stack, as it is not really
> tied to network configuration but instead property of applications; one
> _could_ do it but I find it non-desirable.)
>

I tend to agree, but I put it in there for completeness.   Like you, I'm
not sure how it would work on a GP client.  On something like a printer I
think it would be fine, since the set of services to be advertised is known
in advance; that's why I even included it.

> Section 2.4.3: I would like some sort of ‘claim ownership of record X,
> allow updating it only if you are owner’ schemed DNS-Update to be the main
> method. It would also address conflict resolution _given_ single server
> (hard to do in distributed fashion though; the rest of draft seems to argue
> for loosely synchronized state while I would assert single master +
> read-only slaves would work better for this model as the ownership claim
> would be atomic / race-free)
>

I thought I'd talked about that.   My idea was to put a key on each record
that is used to sign subsequent updates or deletions.   You would lose
control of the record if you went offline, however, since the whole name
would expire.   I didn't address that issue in the document.

> Section 2.5: Not fan of using just IP address for authentication, instead,

I agree.   However, it is as good as we have with mDNS, so I think it's
okay as a stopgap.   Molto preferito los llaves.

> Section 3.6: TOFU is usually better than nothing at least..

Yup.   I think TOFU is a good start.   Anything more than that is going to
require some kind of user interaction.

> Section 4.6: We got some (user) feedback that ULA should be preferred over
> GUA as GUA can go away, disrupting in-home stuff unneccessarily. (Obviously
> not mosh user.)
>

Yes, exactly.

> The draft seems like good start at least.

Thanks!   That's all it's meant to be!

> Disclaimer: I didn’t quite read all of it as I am mostly just browsing
> through everything going on at the moment (and wondering if I should react
> to the dnssd WGLCs that already expired while I was on vacation, grumble.)
>

I am happy to take what I can get. :)

If you have time, I don't think Ralph has called consensus yet.   I
reviewed the hybrid document pretty closely, but my review of the other one
was sketchy.   Mostly because it seems correct and I don't think I disagree
with the overall thrust of it.  But I want to do a closer review on the
flight.

> [1] The classic argument ‘for’ hybrid are e.g. historic printers. However,
> I am pretty sure e.g. first-hop router could proxy-DNSSD-register them to
> DNS and mDNS could be just let rot in practise. (Later addition: Oh.
> Section 2.4.1 covers this to some degree already.)
>

Yes.   We are stuck with legacy, but let's not dig ourselves in deeper!

---

From: Markus Stenberg <[email-masked]>
Date: Fri, 15 Apr 2016 10:04:59 +0300

On 1.4.2016, at 16.09, Ted Lemon <[email-masked]> wrote:
> On Fri, Apr 1, 2016 at 3:32 AM, Markus Stenberg <[email-masked]> wrote:
> If you mean “get the ISP to do the delegation,” I think having it as part of the architecture will at least get them thinking about it, which is a start! :)

Yes. Not optimistic though :)

> It's intended to be flat in the sense of a single label.   What would you see as the use for a non-flat namespace?   You mention DNS-SD records "being associated with a particular namespace," but this is more of a campus-wide DNS-SD solution than a homenet solution.   If you are trying to address the campus use case, I think that could be accomplished in a follow-on document, since it's not the primary goal.   But say on—is there more to it than that?

Well, my reading at the time was that it was strictly <label>.<zone>; therefore, even DNS-SD <service>.<transport>.<zone> would be out of scope. I hoped it was just an error on reader’s part :) 

> Okay, but how would that work?   Do you mean just a different name externally than internally?   I agree with that to some extent, but it makes the UI harder because now the user has two different names for the same resource, depending on whether they are internal or external to the homenet.

Yes. Public should be opt-in, not default, because I for one at least don’t want to advertise every service in my home for various reasons; e.g. if there’s vulnerable product X, if trawling for the DNS-SD records in the well-defined home <domain> brings up data about it, someone can drive over and do bad things over wifi to e.g. broken Belkin wifi home automation stuff. Completely fictional example with nothing to do with the fact that the ones I used to use sometimes booted to default wifi, no password mode..

> I thought I'd talked about that.   My idea was to put a key on each record that is used to sign subsequent updates or deletions.   You would lose control of the record if you went offline, however, since the whole name would expire.   I didn’t address that issue in the document.

Ah, perhaps I read through it too rapidly (as the disclaimer said, it was beer-powered sudden review, not really very thorough one).

Cheers,

-Markus

---

From: Ted Lemon <[email-masked]>
Date: Fri, 15 Apr 2016 11:40:00 -0400

On Fri, Apr 15, 2016 at 3:04 AM, Markus Stenberg <[email-masked]>
wrote:

> > It's intended to be flat in the sense of a single label.   What would
> you see as the use for a non-flat namespace?   You mention DNS-SD records
> follow-on document, since it's not the primary goal.   But say on—is there
> more to it than that?
>
> Well, my reading at the time was that it was strictly <label>.<zone>;
> therefore, even DNS-SD <service>.<transport>.<zone> would be out of scope.
> I hoped it was just an error on reader’s part :)
>

Ah, thank you.   No, the error was on my part--I was aware that that had to
work, but wrote the document in a way that doesn't really allow it to
work.  I will come up with a better way to express this.   Thanks for
helping me to see this omission!

> Yes. Public should be opt-in, not default, because I for one at least
> don’t want to advertise every service in my home for various reasons; e.g.
> if there’s vulnerable product X, if trawling for the DNS-SD records in the
> well-defined home <domain> brings up data about it, someone can drive over
> and do bad things over wifi to e.g. broken Belkin wifi home automation
> stuff. Completely fictional example with nothing to do with the fact that
> the ones I used to use sometimes booted to default wifi, no password mode..
>

I agree in general, but there is a slight clarification: the question I'm
asking is not "should all devices registered locally appear globally by
default," but rather, "are there some devices for which the correct
behavior is that they appear globally by default."   My knee-jerk reaction
is the same as yours: no way.   However, I think it's worth exploring the
question.

> > I thought I'd talked about that.   My idea was to put a key on each
> record that is used to sign subsequent updates or deletions.   You would
> lose control of the record if you went offline, however, since the whole
> name would expire.   I didn’t address that issue in the document.
>
> Ah, perhaps I read through it too rapidly (as the disclaimer said, it was
> beer-powered sudden review, not really very thorough one).
>

No worries.   Perhaps I will be able to coax you to read the -01 with or
without beer goggles.   :)