Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make a clean break with the past #256

Closed
squarooticus opened this issue Sep 30, 2020 · 7 comments · Fixed by #263
Closed

Make a clean break with the past #256

squarooticus opened this issue Sep 30, 2020 · 7 comments · Fixed by #263
Assignees

Comments

@squarooticus
Copy link

To avoid the problem SSL/TLS had for years with ambiguity re: the CN in the presence of the SAN extension, you should clearly state somewhere that when SVCB is available for an authority endpoint, the legacy defaults (hostname on port 80/443) must never be used as a fallback or as part of a pool of options for the client. That, or explain clearly the justification for the current design choice.

@bemasc
Copy link
Collaborator

bemasc commented Sep 30, 2020

What's the concern here? The current design allows fallback when it is safe, but this is independent of the HTTPS upgrade, which applies regardless of connection fallback.

@squarooticus
Copy link
Author

My concern is with §3 step 6.

Realistically, there will always be legacy authority endpoints to handle the long tail of clients that don't support SVCB. But, this authority endpoint will expect less and less load over time, and at some point may fail to be adequately load balanced. If a problem appears with the SVCB chain that causes all clients to fall back to the authority record, you could get a stampeding herd all directed at the target of that record, effectively creating a DDoS.

The justification might be the need to support the type of spec change being discussed in #252. I'm not sure that eliminating fallback is doable, even if it might be a good idea in theory. But it seems like the reasoning should be spelled out somewhere.

@bemasc
Copy link
Collaborator

bemasc commented Sep 30, 2020

you could get a stampeding herd all directed at the target of that record, effectively creating a DDoS.

OK, but the alternative would be that those users would have already failed to connect. Why is that better?

I think the main motivation for the current fallback logic is that more fallback means more resilience. Ultimately, I think fallback behaviors are going to vary between clients: different clients have different design considerations, and the standard can't justify strict requirements on this topic.

If we did eliminate fallback in the way you describe, we would still probably have to allow it in cases where there are ServiceMode records but none are compatible with the client. In other words, eliminating fallback would not reduce client complexity.

@squarooticus
Copy link
Author

I think I'm not going to be the only one with these questions, which suggests it might be worthwhile to explain the design choice in an appendix. I agree it doesn't belong in the main text along with normative protocol design.

@bemasc
Copy link
Collaborator

bemasc commented Sep 30, 2020

I don't think this is really a design choice. It's a "MAY", documenting that there's no reason to forbid this behavior. Forbidding the fallback would certainly require a justification (as in Section 8.1).

@bemasc
Copy link
Collaborator

bemasc commented Oct 2, 2020

Conclusion: Remove the item number on this requirement.

@bemasc bemasc self-assigned this Oct 2, 2020
bemasc pushed a commit that referenced this issue Oct 2, 2020
Apart from editorial changes, this reduces the strength of the "alias
target fallback" recommendation from SHOULD to MAY.  (This is the case
where an AliasMode record points to a ServiceMode RRSet but all
connection attempts have failed, and the client still wants to follow
the alias.)

Fixes #256
bemasc pushed a commit that referenced this issue Oct 2, 2020
Apart from editorial changes, this reduces the strength of the "alias
target fallback" recommendation from SHOULD to MAY.  (This is the case
where an AliasMode record points to a ServiceMode RRSet but all
connection attempts have failed, and the client still wants to follow
the alias.)

Fixes #256
@bemasc
Copy link
Collaborator

bemasc commented Oct 23, 2020

Update: Step 5 should be updated so its purpose is clearer and it has normative strength. Leaving the 4->5 fallback as SHOULD.

enygren pushed a commit that referenced this issue Nov 2, 2020
Fixes #256 

* Adjust fallback behavior.  Clarify steps 4/5 (primarily editorial) and be explicit about how this works (eg, use to A/AAAA records when no SVCB record or no compatable SVCB record).

* Reduces the strength of the "alias target fallback" recommendation (previously step 6) from SHOULD to MAY.  (This is the case where an AliasMode record points to a ServiceMode RRSet containing compatable SVCB records but all connection attempts have failed, and the client still wants to follow the alias.)

* Rename mandatory section and reword DNSSEC rule
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants