Subject: Re: [dbound] [DNSOP] Over on the dbound list: draft-dcrocker-dns-perimeter-00

From: Bob Harold <[email-masked]>
Date: Thu, 4 Apr 2019 10:17:59 -0400

(Replying to the dbound list)

On Wed, Apr 3, 2019 at 3:07 PM Dave Crocker <[email-masked]> wrote:

> Howdy. I've posted a draft that might be of interest to folk in this
> group.
>
> It's best venue is almost certainly the dbound mailing list, where it is
> already starting to get discussion (and cross-posted to the dmarc list.)
>
> Discussing it here, on a third list, doesn't seem advisable, but it's
> already been noted on the dbound discussion that the draft raises issues
> that might be of concern to the dnsop community.
>
> d/
> --
> Dave Crocker
> Brandenburg InternetWorking
> bbiw.net

I have two questions:

If I want to separate these levels:
example.
a.example.
b.a.example.

Then a.example is both a 'begin' and 'end' node.  Do I put in two records,
one for 'begin' and one for 'end'?

Secondly, if I have:
a.example.
b.a.example.
c.a.example.
d.a.example.
...
z.a.example.

And I want to separate z.a.example, but not the others, and there are often
changes to the list.  Without having to mark every one, how can I (as
a.example), mark above the cut that z.a.example is separate?

-- 
Bob Harold

---

From: Dave Crocker <[email-masked]>
Date: Thu, 4 Apr 2019 07:54:14 -0700

Bob,

On 4/4/2019 7:17 AM, Bob Harold wrote:
> Then a.example is both a 'begin' and 'end' node.  Do I put in two 
> records,  one for 'begin' and one for 'end'?

First, note that Perimeters are actually /between/ node names.  So the 

 > example.
   {perimeter}
 > a.example.
   {perimeter}
 > b.a.example.

Some choices for marking these will depend upon the specific Schema that 
is defined.  So, for example, I could imagine a Schema that demands an 
'end' above a 'begin' and I could imagine a Scheme that merely requires 
either one to be in place, or requires a specific one.

So for a simple hierarchy there might a schema specification might 
merely mandate that each perimeter down a hierarchy be marked by a new 
'begin':

   {perimeter}

 > example.
   \
    ._perim TXT begin <schema>

   {perimeter}

 > a.example.
   \
    ._perim TXT begin <schema>

   {perimeter}

 > b.a.example.
   \
    ._perim TXT begin <schema>

Each _perim record, in the above sequence, for example., is declaring 
that there is a Perimeter above the associated DNS node name.

but yes, the requirement might be for more verbosity:

   {perimeter}

 > example.
   \
    ._perim TXT begin <schema>
    ._perim TXT end <schema>

   {perimeter}

 > a.example.
   \
    ._perim TXT end <schema>
    ._perim TXT begin <schema>

   {perimeter}

 > b.a.example.
   \
    ._perim TXT end <schema>
    ._perim TXT begin <schema>

And my having to write this response makes me suspect there's some 
benefit in adding an end-begin shorthand to the specification, to reduce 
the verbosity and permit a single record to declares Perimeters both 
above and below the node.  It's purpose would be for Perimeter hierarchy 
have a one-name level, such as your example (and I suspect would be a 
common use.)

> Secondly, if I have:
> a.example.
> b.a.example.
> c.a.example.
> d.a.example.
> ...
> z.a.example.
> 
> And I want to separate z.a.example, but not the others, and there are 
> often changes to the list.  Without having to mark every one, how can I 
> (as a.example), mark above the cut that z.a.example is separate?

Cool.  Subset of branches.

 > z.a.example.
   \
    ._perim TXT begin <schema>

would clearly work.

If there were a need to instead have a.example make the declaration, I 
don't see an obvious answer.

My first thought is for the Scheme to have a sub-notation, to indicate 
that the presence of the Perimeter is not for all branches, such as by 
having it list the children links it applies to.  But that's not feeling 
terribly satisfactory.

d/

---

From: Bob Harold <[email-masked]>
Date: Thu, 4 Apr 2019 12:57:47 -0400

> Agreed.

> don't see an obvious answer.

This is my concern.

> having it list the children links it applies to.  But that's not feeling

Not great, but probably required.  Could the RFC include a note about this
possible issue?

---

From: Dave Crocker <[email-masked]>
Date: Thu, 4 Apr 2019 10:28:56 -0700

>     have a one-name level, such as your example (and I suspect would be a

OK.

Since adding constructs makes a spec and its implementation more 
complicated,(*) I'll ask the group whether the simplicity of having just 
'begin' and 'end' for marking Perimeters -- at the expense of the 
verbosity of extra records -- is preferred or whether adding a third 
choice, as a contraction, such as "endbegin", is preferred so there 
would be only one record.

(For completeness:  The 'part' construct doesn't define a Perimeter, so 
it doesn't come into this issue.)

>       > a.example.
>       > b.a.example.
>       > c.a.example.
>       > d.a.example.
>       > ...
>       > z.a.example.
> Not great, but probably required.  Could the RFC include a note about 
> this possible issue?

Sure.  But I'll also ask for suggestions to see whether we can have 
Perimeter handle this sufficiently to satisfy folk.

I'm taking the open question as:

      How should DNS Perimeter Overlay provide for a parent node to 
specify that a subordinate Perimeter applies only to a subset of its 
subordinate links?

It might help to move this from the abstract to the concrete if we 
develop a few real-world examples we'd like to cover.  I don't have any 
to suggest but hope others do.

d/

(*) I tend to think of additions as having disproportionate effects, 
best treated as exponential.  So adding even one item to a small list of 
features is worth worrying about.