Suspension although 100% online

This is maybe a misunderstanding or a partial truth.

You’re right that UDP by itself (just like IP packets) doesn’t provide session orientation or awareness of receiver-speed, but that is okay, because QUIC adds those things.

So for context, TCP is built on top of IP packets. IP packets are like post cards - they get sent and no one cares if they arrive or are responded to. TCP adds acknowledgements, packet ordering, port numbers, and so on. With TCP, if the receiver starts going slower, the sender slows down, and vice versa. Unfortunately, TCP bakes some pretty rigid settings into how congestion control is decided into your operating system kernel, so if you wanted to tune it to use less resources on routers when you have hundreds of parallel streams, it’s pretty hard to do.

Similar to TCP, QUIC is built on top of UDP packets, which are just IP packets with a port number. QUIC adds acknowledgements, packet ordering, port numbers, and so on. QUIC slows down if the receiver slows down. Crucially, QUIC allows us to improve the congestion controller to be more aware of the parallelism inherent in Storj upload/download streams.

When we want UDP enabled for Storj, it’s because we want to use QUIC, which gives us better control over congestion control than TCP does. Using QUIC we will be able to protect your router better, with more complete knowledge of the nature of our distributed parallel network streams.

It’s always possible for someone to get DoSed with IP packets, which have all of the same problems you ascribe to UDP. Enabling or disabling UDP doesn’t change the fact that anyone can send you packets. It’s what you or your router do with the packets that matters.

It is precisely for the reasons you evidently disable UDP that we are moving towards QUIC on top of UDP. We want to be better network citizens and right now hundreds of TCP connections with dueling congestion control can stress routers out pretty bad.

7 Likes