Open Habbie opened 6 years ago
It does not solve the 'protocol' layer the way we suggested in #11, instead relying on ALPN for that, which as I understand is not great for our use case.
I do like 'prepend the whole thing to your UDP packet or TCP connection' a bit, it avoids all the record mangling.
As much as I like the proxy protocol, it becomes something that a non-proxy protocol-aware receiver can't parse at all, as opposed to the current solution that can be safely ignored.
Also, AFAIK the proxy protocol currently only exists over TCP.
As much as I like the proxy protocol, it becomes something that a non-proxy protocol-aware receiver can't parse at all, as opposed to the current solution that can be safely ignored.
Well, we did write down that anybody seeing XPF while not expecting it should refuse the query. This would give us that for free (although it might turn it into a drop). That's actually what I like about it.
Also, AFAIK the proxy protocol currently only exists over TCP.
I saw the suggestion as having two sides: (1) the wire format for PROXY (2) the 'wrapping'. I'm unsure (1) makes sense for us, it's all quite verbose and to people already having a DNS wire parser it's actually more work. For (2) see above.
I'm not at all advocating for either side, but there is some minor food for thought in the document.
From other protocol implementations I found that it's often easier to unwrap something than to peek into the inner packet.
Extra points for unwrapping just meaning stripping something in front, but not from the back.
Extra points for unwrapping just meaning stripping something in front, but not from the back.
This.
This does have a certain appeal, but how (should?) we distinguish between a wrapped connection from a plain one? For the proxy case I can see some benefit in restricting this to [persistent] TCP only, but it would perhaps need alternate ports.
I believe we would have to use alternate ports dedicated to this indeed. I'm not sure this is a better solution than the current XPF
one, both make sense and might have different use cases.
Using an entirely separate port with a prepended "wrapper" rather than something in the tail of the packet should satisfy the privacy advocates, though.
It would also simplify things for those implementations (including BIND AFAIK) that would like to examine (and act on) the transport meta data before parsing the entirety of the packet.
I'm also undecided either way, but there's merit in having the discussion.
@enygren wrote: