> And TCP wants to pretend that all your data arrives as a linear stream one after the other;
This is actually very nice for an application developer. Probably a tiny bit less nice if you are running popular services taking 100k req/s.
This is actually very nice for an application developer. Probably a tiny bit less nice if you are running popular services taking 100k req/s.
That's why I would suggest that were possible the kernel should only expose something at most as high level as UDP, and we build the TCP abstractions on top of that in user level. Of course, you wouldn't want to re-write everything from scratch all the time: you'd use libraries.
The nice thing about user level libraries is that you can swap them out for better versions or for different abstractions without any privileged access.