-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
CONNECT-UDP [QUIC] Stream reset: reset reason: protocol error, response details: http3.invalid_header_field #37157
Comments
Adding @danzh2010 for any insights |
The request has some invalid HTTP header. Can you share the requests you are sending? |
'''
''' |
@DavidSchinazi Is this how CONNECT-UDP header should be like? |
I am using this clinet
Please feel free to suggest any other library / option of testing this envoy config @DavidSchinazi @danzh2010 . Can I warp CONNECT-UDP with http3 curl ? |
@danzh2010 @DavidSchinazi I tried using masque_client too
envoy error logs
|
@rishabh78 CONNECT-UDP uses different headers than what CONNECT uses. The headers generated by your python client are incorrect:
An example of valid headers is:
This is documented in RFC 9298. However,
Additionally, note that you can pass in
|
Hey @DavidSchinazi ,
How will this work ? I want envoy to do load balancing between multiple udp upstreams servers , but in ./bazel-bin/quiche/masque_client --disable_certificate_verification 127.0.0.1:10001 https://127.0.0.1:10002 we are specifying https://127.0.0.1:10002 |
You can't load balance in this way. CONNECT-UDP works similar to CONNECT in that the client tells the proxy what target is it trying to reach. For example:
Target in this case is a host+port, or in other words an application somewhere with an open listening UDP socket. Separately, you can load balance at the HTTP layer. In that world, you can have the proxy send the HTTP request to another HTTP server. For example:
You can combine those two features, by having the proxy load balance the CONNECT-UDP request to another proxy. For example:
In that scenario, the client (in this case |
@DavidSchinazi the upstreams are udp backends Just for clarification Client: Main Proxy: Proxy (UDP Load Balancer): UDP Servers: ./bazel-bin/quiche/masque_client masque://127.0.0.1:10001 127.0.0.1:20001 --disable_certificate_verification Do you mean this @DavidSchinazi |
I'm sorry, but I'm not sure I understand what you mean by |
Main proxy
Proxy (LB )
./bazel-bin/quiche/masque_client masque://127.0.0.1:10001 udp://127.0.0.1:20001 --disable_certificate_verification |
Thanks for the diagram. What you're describing isn't possible with CONNECT-UDP, because the client controls the target IP and port, not the load balancer. What's the motivation behind your design choices? What are you trying to do? |
Hey @DavidSchinazi , In the above diagram, Client |
What protocol are you running over UDP between the Client and the UDP Servers? Is it HTTP/3 or something else? |
HTTP/3 |
In that case you don't need to use connect-udp. If you're comfortable with the proxies having access to the encrypted data then you can have the client send the requests to the main proxy and have them load balanced individually. |
@DavidSchinazi Envoy doesn't directly support HTTP to UDP bridging. Do I need to write a custom filter for this ? The proxy listens for HTTP/3 traffic and terminates the QUIC connection. How will It extracts the HTTP payload and forwards it as raw UDP packets to the second proxy / upstream ? For this case, do I need to write some custom filter ? |
I'm sorry, I don't understand what you're trying to do. |
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions. |
This issue has been automatically closed because it has not had activity in the last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted" or "no stalebot". Thank you for your contributions. |
If you are reporting any crash or any potential security issue, do not
open an issue in this repo. Please report the issue via emailing
[email protected] where the issue will be triaged appropriately.
Title: One line description
I have client which sends CONNECT-UDP traffic through an Envoy proxy, which forwards it to an upstream UDP server.
Description:
Envoy configuration
UDP server
Client
Envoy logs
The text was updated successfully, but these errors were encountered: