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

Protocol stacks that are not equivalent #305

Closed
MaxF12 opened this issue Mar 29, 2019 · 7 comments
Closed

Protocol stacks that are not equivalent #305

MaxF12 opened this issue Mar 29, 2019 · 7 comments
Assignees

Comments

@MaxF12
Copy link
Collaborator

MaxF12 commented Mar 29, 2019

Per the architecture draft, only protocol stacks that are equivalent can be safely raced. What is the expected behavior if selection properties are set in such a way that the resulting candidate set includes protocol stacks that are not equivalent? Would the selection properties simply be treated as invalid?

@gorryfair
Copy link
Contributor

To me "equivalent" relates to either candidate would provide the set of functions needed.

At the risk I don't answer your question: My take is that one can always define policy and API properties that produce a useless outcome. It's not the job of a TAPS system to validate these (although someone may like to try that as a separate sanity checking tool); in just the same way that someone can write code that doesn't implement an algorithm.

The goal is rather that if this specifies "sensible" properties and policy you get the required outcome. You may get no connection or something unexpected if the request is not well-founded.

@MaxF12
Copy link
Collaborator Author

MaxF12 commented May 8, 2019

Right, so if an application chooses to provide properties that allow both TCP and UDP the implementation would race those two which would result in a default win for UDP, is that correct?

@mwelzl
Copy link
Contributor

mwelzl commented May 24, 2019

I agree, and I'd say the answer to your question is yes. Of course, later you may find that UDP doesn't really work on the path for the given port, and then it would be great to have an open TCP connection available to fall back to.

@philsbln
Copy link
Contributor

philsbln commented Jul 4, 2019

I guess we should define "equivalent protocol stacks" a little less rigorous in the architecture document. For an application that does not care about message boundaries, and reliable transport and has its own congestion control, protocol stacks with TCP and UDP may indeed be equivalent with respect to the application's requirements.

This would require to rewrite 1. of the enumeration in Section 4.2.3 which could use a second look anyway, because it mixes up application requirements in sense of interface behaviour and application protocols that directly depend on specific transport protocols beneath, which is what PR #327 is all about.

@britram
Copy link
Contributor

britram commented Nov 19, 2019

See also mailing list discussion in July 2019.

@theri
Copy link
Contributor

theri commented Nov 19, 2019

We also need to say here what "equivalence" means for security.
Right now, Security Considerations says "As described above in Section 4.2.3, if a Transport Services system races between two different Protocol Stacks, both MUST use the same security protocols and options."
I think if we consider equivalence as "you can use whatever stack that satisfies the things that the application requested", this should also apply to security.
Now that the application has to explicitly select a security protocol, I think it should also be allowed for the application to say that multiple security protocols are fine. Like, allow applications to say "Use TLS 1.3 if available, but if not, TLS 1.2 is also fine" (instead of failing).

@tfpauly
Copy link
Contributor

tfpauly commented Dec 2, 2019

Fixed by #389

@tfpauly tfpauly closed this as completed Dec 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants