Revisiting User-Level Networking