This is what the OS is supposed to do, imo. I am also happy I don’t have to worry about bulky 3p libraries. No, the more time I spent on it, the more I appreciated all the things TCP gives me for free, and it’s remarkable resilience in complex conditions. Maybe this changes with platform-specific optimized vectored IO, but that alone would be a huge effort. Don’t know all the reasons why (sorry, just didn’t have the time) but at least to me TCP wins the bang-for-the-buck-throughput-on-commodity-hardware category, hands down. When I ran quic benchmarks they got deprioritized in the presence of tcp traffic. And even if your cpu can handle the throughput, the congestion control can still bite you for god knows what reason. Not saying you can’t push the limits, and even outperform TCP, but to do so with a reliable cross platform way isn’t exactly trivial today.Īll my benchmarks (albeit user space) have shown that pushing bytes over udp has a higher CPU overhead, and that’s even if you omit retransmission, congestion control, etc etc (ie just push garbage bytes). In my experience, UDP in general isn’t as performant in practice as one would think. But even so, a kernel module is a pretty big ask only for connectivity. It's user space Go, which seemed to cap the data transfers when I tested it out.Ĭompared to another VPN? I’d be curious to know whether the kernel mode byte shuffling solves that problem.
0 Comments
Leave a Reply. |