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

Add a requirement for extensibility #10

Closed
chris-wood opened this issue Nov 20, 2020 · 9 comments
Closed

Add a requirement for extensibility #10

chris-wood opened this issue Nov 20, 2020 · 9 comments

Comments

@chris-wood
Copy link

During IETF 109, @tfpauly suggested that an extension be added that allow deployments to negotiate that the "full" version of IP proxying not be implemented. Such an extension might negotiate the use of IP header compression, for example. It might be worth adding this to the requirements document.

@tfpauly
Copy link

tfpauly commented Nov 20, 2020

I don't think it would negotiate not implementing to the full IP proxying. I think full IP proxying can always be the baseline, but rather than it must allow extensions to negotiate doing compression or other performance optimizations.

@chris-wood
Copy link
Author

Poor choice of words on my part (lateness of the hour). Your phrasing is basically what I was after.

@DavidSchinazi
Copy link
Collaborator

What does "full IP proxying" mean here? Not compressing the IP header?

@gloinul
Copy link

gloinul commented Nov 20, 2020

If you are keeping all the IP header then its tunneling and not proxying. Because you are encapsulating the packet in QUIC and then decapsulating it.

@DavidSchinazi
Copy link
Collaborator

I think this is backwards. The requirement is for a protocol that can send encapsulated unmodified IP packets. Compressing IP headers sounds like a very useful extension, but you always need to be able to send uncompressed packets when compression fails.

@gloinul
Copy link

gloinul commented Nov 24, 2020

I do think calling it full proxying is wrong. However, I think we are running into an issue in that we don't have definitions for what is tunneling, and what is proxying.

To me tunneling is only encapsulation and then decapsulation. This implies no rewrite of any of the inner headers by the MASQUE client or server. I think the network to network use cases are aiming for pure tunneling as the source IP address of packet the MASQUE server decapsulate will not be rewritten.

IP Proxying could be to encapsualte the complete header but have the MASQUE server rewrite the source IP address after decapsulation and then forward it towards the target address. Due to this I think the single client to network use case can be proxying.

If we contrast this with the UDP proxying (CONNECT-UDP) where an inner UDP payload destined to the target from the MASQUE client gets it IP + UDP headers generated by the MASQUE Server (proxy) before the packet being forward towards target.

So I hope you see that there might be some mismatch in expectations between parties here.

@SpencerDawkins
Copy link

This was discussed during chartering, so it's not a new point of confusion, and it's confused people in both IETF and 3GPP within the past 7 days, so @gloinul and I aren't the only ones who are still confused.

I agree with @gloinul about tunneling being encapsulation and decapsulation (and I'm pretty sure that's almost a universal understanding in the INT area).

If you're talking about rewriting an IP source address (and, I suppose, related translations), but nothing else, I'm not sure how this is NOT a Network Address Translator.

To me, proxying is doing more than network address translation - there are obviously a lot of things that would fall under the category of "more", like CONNECT-UDP, but what CONNECT-UDP does isn't the only possible thing proxies do.

Do The Right Thing, of course.

@DavidSchinazi
Copy link
Collaborator

I agree that "full proxying" is not defined, and I'd prefer to not use that term at all.

Regardless of terminology, I personally think that the minimum viable product here is a system that transfers IP packets unmodified. There is a clear use case for that, and any modification to IP headers or payloads should be left to extensions (to be clear, these extensions will be incredibly useful to the performance of the overall system).

achernya added a commit to achernya/draft-ietf-masque-ip-proxy-reqs that referenced this issue Jan 7, 2021
Previously, the text wrote the data transports must transmit packets
in their unmodified entirety, precluding extensions. This commit
updates the text to note extensions of the data formats are
permissible.

This addresses ietf-wg-masque#10 but
does not change the terminology as there does not seem to be consensus
yet.
achernya added a commit to achernya/draft-ietf-masque-ip-proxy-reqs that referenced this issue Jan 7, 2021
Previously, the text wrote the data transports must transmit packets
in their unmodified entirety, precluding extensions. This commit
updates the text to note extensions of the data formats are
permissible.

This addresses ietf-wg-masque#10 but
does not change the terminology as there does not seem to be consensus
yet.
achernya added a commit to achernya/draft-ietf-masque-ip-proxy-reqs that referenced this issue Jan 7, 2021
Previously, the text wrote the data transports must transmit packets
in their unmodified entirety, precluding extensions. This commit
updates the text to note extensions of the data formats are
permissible.

This addresses ietf-wg-masque#10 but
does not change the terminology as there does not seem to be consensus
yet. This also addresses
ietf-wg-masque#13 by removing the
only-unmodified requirement.
@DavidSchinazi
Copy link
Collaborator

We wrote text in draft-ietf-masque-ip-proxy-reqs-01 that should address this issue.

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

No branches or pull requests

5 participants