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

Update SVCB #1341

Merged
merged 10 commits into from
Apr 1, 2022
Merged

Update SVCB #1341

merged 10 commits into from
Apr 1, 2022

Conversation

DesWurstes
Copy link
Contributor

The only breaking change worth mentioning is renaming SVCB_ECHCONFIG to SVCB_ECH. We can avoid this and use its legacy name internally if you wish.

I had chosen ( #1067 (comment) ) to forbid IPv4 addresses in ipv6hint to be consistent with the rest of the library. I don't know why ( MikeBishop/dns-alt-svc#361 ) but the SVCB spec requires otherwise.

@miekg @tmthrgd Would you like to review?

@miekg
Copy link
Owner

miekg commented Feb 21, 2022

Breaking changes in this record I fine, it's still draft IIRC

I had chosen ( #1067 (comment) ) to forbid IPv4 addresses in ipv6hint to be consistent with the rest of the library. I don't know why ( MikeBishop/dns-alt-svc#361 ) but the SVCB spec requires otherwise.

That sgtm, internal consistency is a good thing to have

svcb.go Outdated Show resolved Hide resolved
svcb.go Outdated Show resolved Hide resolved
svcb.go Outdated Show resolved Hide resolved
svcb.go Outdated Show resolved Hide resolved
svcb.go Outdated Show resolved Hide resolved
//
// It is incumbent upon the user of this library to reject the RRSet if
// or avoid constructing such an RRSet that:
// - "mandatory" is included as one of the keys of mandatory
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you want this to make a list in godoc you need empty lines before and after. Maybe just make this more prose?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't turn this list into a paragraph; it would be unreadable.

svcb.go Outdated Show resolved Hide resolved
svcb.go Outdated Show resolved Hide resolved
svcb.go Show resolved Hide resolved
svcb.go Show resolved Hide resolved
svcb.go Outdated
type SVCBECHConfig struct {
ECH []byte
type SVCBECH struct {
ECHConfigList []byte // includes the redundant length prefix
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is too long. Just Config? What does the draft use?

Copy link
Contributor Author

@DesWurstes DesWurstes Feb 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The draft uses ECHConfigList which is taken from the RFC draft of ECH/ESNI. Makes sense to keep the original name so that an ESNI dev can easily see what this represents.

@DesWurstes
Copy link
Contributor Author

DesWurstes commented Feb 21, 2022

@miekg Many thanks for your review. I have addresses your comments except "if you want this to make a list in godoc you need empty lines before and after. Maybe just make this more prose?" because I don't know how to turn this into a paragraph without making it unreadable.

I had chosen ( #1067 (comment) ) to forbid IPv4 addresses in ipv6hint to be consistent with the rest of the library. I don't know why ( MikeBishop/dns-alt-svc#361 ) but the SVCB spec requires otherwise.

That sgtm, internal consistency is a good thing to have

On the SVCB side, they decided to update their example, after which I updated the relevant code here. How this library treats IPv6-IPv4 subtypes is now SVCB-compliant and self-consistent.

Copy link
Collaborator

@tmthrgd tmthrgd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Most of the change is fine, but I really don't think we can or should make backwards incompatible changes. Nothing here was marked as WIP or anything. Considering the name changes don't have any actual impact on the code, I think they should be left as-is regardless of whether that differs from the draft spec or not. I'm fine with the other changes though.

svcb.go Outdated Show resolved Hide resolved
svcb.go Show resolved Hide resolved
@DesWurstes
Copy link
Contributor Author

Thanks for the review. I addressed the issues.

Copy link
Collaborator

@tmthrgd tmthrgd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@DesWurstes
Copy link
Contributor Author

Hello again @miekg . I have been impatiently waiting for Cloudflare to implement ECH over SVCB so it would be great if we could get this merged unless further reviews are planned. Many thanks.

@miekg miekg merged commit 2f577ca into miekg:master Apr 1, 2022
@DesWurstes
Copy link
Contributor Author

👍thank you

aanm pushed a commit to cilium/dns that referenced this pull request Jul 29, 2022
* Rename ECH, bump draft number

* AliasForm new treatment

* alpn is no longer mandatory by default

* Document the non-empty value requirement

* new test cases

* more test cases

* Continue forbidding v4-map-v6 but not v4-embed-v6

miekg#1067 (comment) and MikeBishop/dns-alt-svc#361

* Update documentation

* revert rename ech

* Reword AliasMode with key=value pairs
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 this pull request may close these issues.

3 participants