Skip to main content

Service binding and parameter specification via the DNS (DNS SVCB and HTTPS RRs)
draft-ietf-dnsop-svcb-https-09

Discuss


Yes

Warren Kumari

No Objection

(Martin Vigoureux)

No Record

Alvaro Retana
Andrew Alston

Summary: Has a DISCUSS. Has enough positions to pass once DISCUSS positions are resolved.

Francesca Palombini Discuss

Discuss (2022-03-02 for -08)
Thank you for the work on this document

Many thanks to Cullen Jennings for his ART ART review:
https://mailarchive.ietf.org/arch/msg/art/CfAGYlDfw5kPjlhbujmikX43J6Q/. 

I am concerned by the use of SHOULD in this document. In several places (see 1. below for what I identified as problematic SHOULDs) the document lacks text about why these are SHOULD and not MUST or MAY. I agree with John Klensin, who formulated it very clearly:

If SHOULD is used, then it must be accompanied by at least one of:
(1) A general description of the character of the exceptions and/or in what areas exceptions are likely to arise.  Examples are fine but, except in plausible and rare cases, not enumerated lists.
(2) A statement about what should be done, or what the considerations are, if the "SHOULD" requirement is not met.
(3) A statement about why it is not a MUST.


I also have a number of non blocking comments and questions. I will appreciate answers to my questions, to improve my understanding. If any clarification comes out of it, I hope it will help improve the document.

Francesca

1. -----

FP: SHOULD lacking additional context:

   Within a SVCB RRSet, all RRs SHOULD have the same Mode.  If an RRSet

   is used to impose an ordering on SVCB RRs.  SVCB RRs with a smaller
   SvcPriority value SHOULD be given preference over RRs with a larger
   SvcPriority value.

   In AliasMode, the SVCB record aliases a service to a TargetName.
   SVCB RRSets SHOULD only have a single resource record in AliasMode.
   If multiple are present, clients or recursive resolvers SHOULD pick
   one at random.

   In AliasMode, records SHOULD NOT include any SvcParams, and
   recipients MUST ignore any SvcParams that are present.

   Zone-file implementations
   SHOULD enforce self-consistency. 

   If the client is SVCB-optional, and connecting using this list of
   endpoints has failed, the client SHOULD attempt non-SVCB connection
   modes.

   If the client enforces DNSSEC validation on A/AAAA responses, it
   SHOULD apply the same validation policy to SVCB.

   If the client is unable to complete SVCB resolution due to its chain
   length limit, the client SHOULD fall back to the authority endpoint,
   as if the origin's SVCB record did not exist.

   For compatibility with clients that require default transports, zone
   operators SHOULD ensure that at least one RR in each RRSet supports
   the default transports.

   Global Scoped Entry Registry [Attrleaf].  The scheme SHOULD have an
   entry in the IANA URI Schemes Registry [RFC7595].  The scheme SHOULD
   have a defined specification for use with SVCB.
Comment (2022-03-02 for -08)
2. -----

   This subsection briefly describes the SVCB RR in a non-normative
   manner.  (As mentioned above, this all applies equally to the HTTPS
   RR which shares the same encoding, format, and high-level semantics.)

FP: I am not sure about why this section is described as non-normative but does define requirements etc. Maybe it is normatively described somewhere else? Then a pointer to that makes sense. Also why does this mention encoding and format but there is no encoding specified.

3. -----

   format specific to the SvcParamKey.  Their definition should specify
   both their presentation format and wire encoding (e.g., domain names,
   binary data, or numeric values).  The initial SvcParamKeys and

FP: I have the feeling "should" is not the right term here, I suggest to change to "must" or "is required to". Also, it would have been useful to me to add a pointer to RFC 8499 in the terminology about "presentation format".

4. -----

 The value is then
   validated and converted into wire-format in a manner specific to each
   key.

FP: Section 15.4 states

   registration policy ([RFC8126], Section 4.4).  The Format Reference
   MUST specify how to convert the SvcParamValue's presentation format
   to wire format and MAY detail its intended meaning and use.  An entry

This covers the conversion, but does not cover the validation mentioned above.

5. -----

   SvcParams in presentation format MAY appear in any order, but keys
   MUST NOT be repeated.

FP: Seems to contradict

   SvcParamKeys SHALL appear in increasing numeric order.

6. -----

   If the client has an in-progress TCP connection to
   [2001:db8::2]:1234, it MAY proceed with TLS on that connection using
   ech="222...", even though the other record in the RRSet has higher
   priority.

FP: I believe this is descriptive of the example and should not use BCP 14 MAY.

7. -----


   For example, the following is a valid list of SvcParams:

   ech=... key65333=ex1 key65444=ex2 mandatory=key65444,ech

 
FP: I expected this to be a comma separated list.

8. -----

   length prefix.  In presentation format, the value is a single
   ECHConfigList encoded in Base64 [base64].  Base64 is used here to

FP: Please clarify that "Base 64 Encoding" (Section 4) is used (rather than "Base 64 Encoding with URL and Filename Safe Alphabet" (Section 5))

9. -----

FP: According to 8126, the registry "Service Parameter Keys (SvcParamKeys)" should include a change controller field.

10. -----

Table 1

FP: The table reports that 

   | 65280-65534 | N/A             | Private Use    | (This document) |

But that is not specified in the text above, that only talks about first come first serve registration policy. That should be made consistent.

# Nits and Editorials

11. ------

When the "=" is omitted, the value is interpreted as empty.

FP: When the optional "=" SvcParamValue is omitted

12. -----

   All protocols employing "http://" or "https://" URLs SHOULD respect
   HTTPS RRs.  For example, clients that support HTTPS RRs and implement

FP: I am not sure how the first sentence is supposed to be implemented, hence why BCP 14 SHOULD is used here. I also think "respect HTTPS RRs" might not be the clearest wording.

Erik Kline (was Discuss) Yes

Comment (2022-05-09)
Thanks for the changes!

(Referring to 4001 seems odd to me, and maybe unnecessary.)

Paul Wouters Yes

Comment (2022-05-11)
While a little more complicated that I'd wish, it seems this does seem to be one of the simpler and more robust solutions to the "CNAME at apex" problem.

As for Ben's (former) DISCUSS, Ben is correct that this document pushes deployments towards https and makes assumptions that the http and https namespaces are providing identical context even though formally this is not the case. While technically this is a protocol issue, I do believe that in practice everyone already assumes that the content for a certain domain name would be the same for http and https unless the http just contains a redirect to https. I find this case similar to the case where everyone in the world assumes Paul@nohats.ca and paul@nohats.ca goes to the same mailbox, even though SMTP formally claims the LHS may not be interpreted in such a way and could be delivered to different people.

As such, I am not taking over Ben's DISCUSS on this.

Warren Kumari Yes

John Scudder No Objection

Comment (2022-03-02 for -08)
I support Francesca Palombini's discuss.

Lars Eggert No Objection

Comment (2022-02-28 for -08)
Thanks to Dale Worley for their General Area Review Team (Gen-ART) review
(https://mailarchive.ietf.org/arch/msg/gen-art/ctABeNgyI1ywOHNXs17ZO07rLFY).

-------------------------------------------------------------------------------
All comments below are about very minor potential issues that you may choose to
address in some way - or ignore - as you see fit. Some were flagged by
automated tools (via https://github.com/larseggert/ietf-reviewtool), so there
will likely be some false positives. There is no need to let me know what you
did with these suggestions.

Document still refers to the "Simplified BSD License", which was corrected in
the TLP on September 21, 2021. It should instead refer to the "Revised BSD
License".

"Table of Contents", paragraph 2, nit:
> iding transient connections to a sub-optimal default server, negotiating a pr
>                                  ^^^^^^^^^^^
This word is normally spelled as one.

Section 2.4.2. , paragraph 10, nit:
> its SvcParams all comply with each others' requirements. Zone-file implement
>                                    ^^^^^^^
Did you mean "other's"?

Section 3.2. , paragraph 2, nit:
> ons. 4.2. Recursive resolvers Whether or not the recursive resolver is aware
>                               ^^^^^^^^^^^^^^
Consider shortening this phrase to just "Whether". It is correct though if you
mean "regardless of whether".

Section 9.1. , paragraph 5, nit:
> o alt3.example:9443 * Fallback to the the client's non-Alt-Svc connection beh
>                                   ^^^^^^^
Possible typo: you repeated a word.

Section 9.3. , paragraph 2, nit:
> rtext HTTP. If this redirection would result in a loss of functionality (e.g
>                                 ^^^^^^^^^^^^
Consider removing "would". (Usually, "would" does not occur in a conditional
clause, unless to make a request or give a polite order.).

Section 12. , paragraph 3, nit:
> his registry are subject to a First Come First Served registration policy ([
>                                     ^^^^
It seems that a comma is missing.

"D.2. ", paragraph 14, nit:
> fy the IANA instructions (pure First Come First Served) - Recommend against
>                                      ^^^^
It seems that a comma is missing.

Document references draft-ietf-tls-esni-13, but -14 is the latest available
revision.

Martin Duke No Objection

Comment (2022-03-01 for -08)
To this DNS non-expert, I found it hard to follow the motivation for AliasMode. In particular, I asked myself the following questions that could have been answered in the Introduction or in (2.4.2):

- Why is it not OK for a CNAME to alias the apex, but OK for AliasMode to do so? [having asked around, it's because CNAME aliases all the record types, which is nonsensical for the apex, and AliasMode does not]

- For non-apex domains, under what conditions would I use AliasMode instead of a CNAME? Is it just when I don't want to bring along record types besides A, AAAA, and SVCB?

Murray Kucherawy (was Discuss, No Objection, Discuss) No Objection

Comment (2022-05-09)
I support Francesca's DISCUSS around use of SHOULDs.

Thanks for the fixes to IANA Considerations.  One minor issue remains, which is that we're allowing an automatically-expiring document (an I-D) to set the bar for what constitutes a valid Format Reference.  Given such a registration might be permanent, a disappearing reference seems a curious choice.  The discussion in the WG indicates that this is done to support experimental registrations and the like; it might be good for the text to say so.

Robert Wilton No Objection

Comment (2022-03-02 for -08)
I would like to thank Joe for the Opsdir review.

I just have some minor comments (I'm not a DNS expert):

In 2.3,
   to indicate that "foo://api.example.com:8443" is aliased to
   "svc4.example.net".  The owner of example.net, in turn, could publish
   this record:

   svc4.example.net.  7200  IN SVCB 3 svc4.example.net. (
       alpn="bar" port="8004" ech="..." )

   to indicate that these services are served on port number 8004, which
   supports the protocol "bar" and its associated transport in addition
   to the default transport protocol for "foo://".

I can understand how this record indicates that it supports protocol "bar", but it is not obvious to me how this record also indicates that it also supports "foo://".

2.4.1.  SvcPriority

   RRSets are explicitly unordered collections, so the SvcPriority field
   is used to impose an ordering on SVCB RRs.  SVCB RRs with a smaller
   SvcPriority value SHOULD be given preference over RRs with a larger
   SvcPriority value.

Would it be helpful for this text to indicate under what conditions this SHOULD is not a MUST?  Which is perhaps related to the text in section 5.1?

   The primary purpose of AliasMode is to allow aliasing at the zone
   apex, where CNAME is not allowed.  In AliasMode, the TargetName will
   be the name of a domain that resolves to SVCB, AAAA, and/or A
   records.  (See Section 6 for aliasing of SVCB-compatible RR types.)
   The TargetName SHOULD NOT be equal to the owner name, as this would
   result in a loop.

It was unclear to me that this is a SHOULD NOT rather than a MUST NOT.  I.e., are there some circumstances where it is useful to not comply with this.

   In AliasMode, records SHOULD NOT include any SvcParams, and
   recipients MUST ignore any SvcParams that are present.

Again, I wasn't sure why this isn't a MUST NOT rather than a SHOULD NOT?

Finally, thank you for providing the examples in 11.3, I found them to be particularly helpful.

Regards,
Rob

Roman Danyliw No Objection

Comment (2022-02-28 for -08)
Thanks to Kyle Rose for the security feedback in the TSVART review.

** Section 2.1.  Per the ABNF (with the caveat that my manual review of such syntax might be rusty):

--  What role does “value = *OCTET” play in the specification of SvcParams?  It doesn’t appear to be used or explained.

-- Should a top-level ‘SvcParams’ rule be defined (i.e., define the formal syntax of the entire parameter which is a list of SvcParam)?

-- (Editorial) To make it clear that “char-string” is defined in Appendix A, it would be helpful to:

OLD
SvcParamValue = char-string

NEW
SvcParamValue = char-string    ; per Appendix A

** Section 3.1.  Recommend explicit saying which connection should be abandoned – s/the client SHOULD abandon the connection attempt/the client SHOULD abandon the connection attempt to the target service/

** Section 7.4.  Unpacking the first paragraph for easier commentary:

(a)   The "ipv4hint" and "ipv6hint" keys convey IP addresses that clients
   MAY use to reach the service.  

(b) If A and AAAA records for TargetName
   are locally available, the client SHOULD ignore these hints.
   

(c) Otherwise, clients SHOULD perform A and/or AAAA queries for
   TargetName as in Section 3, and clients SHOULD use the IP address in
   those responses for future connections.  

(a) seems to be saying that the value of the SrcParamValue is going to return an IP address associated with a TargetName. (b) seems to be saying that if the client already has an IP address for the TargetName in the cache, then ignore the hints.  Per (c), why would A/AAAA queries need to be performed to resolve TargetName?  Isn’t the hint the associated IP address?

** Section 9.3.  Editorial.  s/the the/the/

** Section 10.  Editorial.  s/the value of the parameter is an ECHConfigList [ECH]/ the value of the parameter is an ECHConfigList per Section 4 of [ECH]

** Section 10.  Editorial. s/ProtocolNameList in Section 7.1/ ProtocolNameList in Section 7.1.2/

** Section 10.2. s/smaller SvcPriority/lower SvcPriority value/

** Section A.1  Per the ABNF:
-- What role does “item” rule play?  It’s not referenced or explained.  (see below)

-- It would be useful to state somewhere which ABNF rule corresponds to which form of the list.  Perhaps something like:

OLD 
   For implementations that allow "," and "\" in item values, the
   following escaping syntax applies:

NEW
For implementations that allow "," and "\" in item values, the   ‘comma-separated’ rule for the escaping syntax applies.  For those that do not required escaping, the ‘item’ syntax rule applies.

Zaheduzzaman Sarker No Objection

Comment (2022-03-02 for -08)
Thanks for the efforts on this specification. Thanks to Kyle Rose for his TSVART reviews, my understanding is those issues are not really transport related issues and has been addressed.

I am think I am sympathetic to Ben's discuss but also understand this is well within the HSTS norms. I will be watching that discussion.

I have only one question: My understanding on this specification is - if there is a record 

   _8080._foo.example.com. 3600 IN SVCB 0 foosvc.example.net.

then _foo.example.com must not have any ServiceMode SVCB record. is that correct? it was not so obvious to me.

Éric Vyncke No Objection

Comment (2022-03-02 for -08)
Thank you for the work put into this document. Important piece of work as it is related to some ADD documents as well. 

Please find below some non-blocking COMMENT points (but replies would be appreciated even if only for my own education), and some nits.

Special thanks to Tim Wicinski for the shepherd's write-up including the detailed section about the WG consensus even if I regret the absence of intended status justification. 

I hope that this helps to improve the document,

Regards,

-éric

Cosmetic one: I have seen only two "ordinary AAAA/A lookups" and too many "A or AAAA"... this hurts my IPv6 eyes ;-)

## Section 1
Just a thank you for such a well-written and clear introduction. This comment also applies to most of the document BTW !

## Section 1.1
"Enable SRV-like benefits (e.g. apex delegation, as mentioned above) for HTTP, where SRV [SRV] has not been widely adopted", if the "old" SRV has not been adopted, then what is the probability of having the "new" SVCB adopted ?

Should "HSTS" be expanded at first use ?

## Section 1.2
In "Cooperating DNS recursive resolvers will perform subsequent record resolution (for SVCB, A, and AAAA records)", is it assumed that only cached information (A, AAAA) will be used ? Else, it may slow down the resolution of the SVCB.

In "Additional Section of the response", is it assumed that the response in this sentence is only a response to a SVCB query ?

## Section 2.2
What is the reason for using uncompressed fully-qualified targetname ? Should there be some justifications for this absence of compression ?

## Section 2.4.1
Usually when "SHOULD" is used, the specification describes the exception(s).

## Section 2.4.2
Same comment about the use of "SHOULD" (also in many other places)

"In AliasMode, the TargetName will be the name of a domain that resolves to SVCB, AAAA, and/or A records. ", is it a "will" or a "MUST" ? Should "CNAME" also be a potential answer (at the expense of another query)?

"this AliasMode record can be replaced by a CNAME" except for apex ...

## Section 2.5.2
Suggest to use a SVCB RR rather than HTTPS to ease the reading of the example.

If compressed DNS name would be allowed (see my comment on sect 2.2) then using "." would bring nearly no size benefit.

## Section 3

Would a mechanism similar to happy eye ball be used to request SVCB, AAAA, and A ? It is described later in section 5 but an early hint would not hurt.

"Clients resolve AAAA and/or A records for the selected TargetName, and MAY choose between them using an approach such as Happy Eyeballs" why not a "SHOULD" ?

## Section 4.1
"authoritative DNS servers SHOULD return A, AAAA, and SVCB records in the Additional Section for any TargetNames that are in the zone", shouldn't the SVCB RRs be in the Answer section? What did I misread ?

## Section 7.2
Strongly suggest not to limit ports to UDP and TCP but either cite UDP and TCP as examples or include SCTP/DCCP.

## Section 7.4
"For best performance, server operators SHOULD include an "ipv6hint" parameter whenever they include an "ipv4hint" parameter." There is a bias in the sentence for "ipv4hint" and it should only applies when both "ipv6hint" and "ipv4hint" exist.

## Section 11.1
"zone owners SHOULD choose alias target names that indicate the scheme in use", would a "it is RECOMMENDED" be more applicable and suitable ?

Alvaro Retana No Record

Andrew Alston No Record

(Benjamin Kaduk; former steering group member) Discuss

Discuss [Treat as non-blocking comment] (2022-03-01 for -08)
I'd like to have a (hopefully brief!) discussion about our description of
the "strict transport security" functionality the HTTPS RRtype provides,
with respect to its accuracty/completeness and how explicit vs implicit we
should be about the corresponding divergence from "pure" HTTP behavior.

It's pretty clear that at a pure HTTP protocol level (which as far as I
can tell is the scope of applicability that we claim) that resources
accessed with "http" scheme and resources accessed with "https" scheme
have no intrinsic relationship -- §4.2.2 of
draft-ietf-httpbis-semantics-19 says:

   Resources made available via the "https" scheme have no shared
   identity with the "http" scheme.  They are distinct origins with
   separate namespaces.  [...]

But the procedures in this document (e.g., §9.5, §9) seem pretty clear
that, when an HTTPS record is published, accesses for "http" scheme
resources should be converted to "https" scheme accesses, with implication
that the client should expect to get the same resource back from the
modified query compared to the unmodified "http"-scheme one.

While there is a caution in §9.5 that:

   If this redirection would result in a loss of functionality (e.g.
   important resources that are only available on the "http" origin),
   the operator MUST NOT publish an HTTPS RR.

but in my reading it leaves some important details as only implicit!
We need to care not only about resources only available on one vs the
other origin, but also about whether the translation would change the
semantics of the client's request/response exchange.  That is, whether the
resources accessible by the different schemes are actually analogous
(which, per the above, is not required by HTTP and is subject to the site
administrator's control or in some cases other application protocols on
top of HTTP used by that origin).

This (mostly implicit) requirement is a potential barrier for adoption of
the HTTPS RRtype, and while the precondition is very often going to be
satisfied, I wanted to get a sense for whether we should make the
requirement more explicit, and possibly more prominent in the document
(e.g., mention it in the Introduction).  I don't know what the right
answer is, but it seems important enough to ensure that the topic receives
deliberate consideration.

(Martin Vigoureux; former steering group member) No Objection

No Objection (for -08)