Hey everyone! I really need some help here. I've got a setup with several servers that handle UDP packets and respond back, but I'm facing a unique challenge. I require a load balancer that can actually retry sending a UDP packet if it doesn't get any response within 3 milliseconds. It's important to me to get any response, with no parsing needed.
I understand that UDP usually doesn't guarantee responses, but I've hit some edge cases where if I don't have retries, my availability drops below 100%. Currently, I'm using Envoy Proxy, but it sadly doesn't support this sort of retry functionality for UDP. I even considered building a custom UDP filter for Envoy, but it's a huge task, and I've struggled just getting Envoy compiled without errors.
Does anyone know of any effective solutions for this? I'm dealing with a lot of traffic, so it's crucial!
2 Answers
Wow, that sounds like a tough spot. Can I ask what kind of application needs this kind of setup? Seems pretty complicated to implement a retry mechanism for UDP when it’s not designed for reliability.
Have you thought about switching to TCP? It would handle retries and connections better. Just a suggestion!
*sigh* Yeah, I'm aware of TCP’s advantages, but the client specifically wants UDP. It's frustrating!
It's a NAPTR DNS server, actually. I know, I wish it were different! But everyone's after that dream of 100% uptime, and the load balancer has to play a role, even if I think the client should be handling retries instead.