Thread (17 messages) 17 messages, 10 authors, 2021-09-05

Re: quic in-kernel implementation?

From: Stephen Hemminger <stephen@networkplumber.org>
Date: 2021-06-08 22:34:18
Also in: linux-cifs, linux-nfs

On Tue, 8 Jun 2021 17:03:16 -0400
Alexander Aring [off-list ref] wrote:
Hi,

On Tue, Jun 8, 2021 at 3:36 AM Stefan Metzmacher [off-list ref] wrote:
...
quoted
 
quoted
2) then switch focus to porting a smaller C userspace implementation of
QUIC to Linux (probably not msquic since it is larger and doesn't
follow kernel style)
to kernel in fs/cifs  (since currently SMB3.1.1 is the only protocol
that uses QUIC,
and the Windows server target is quite stable and can be used to test against)> 3) use the userspace upcall example from step 1 for
comparison/testing/debugging etc.
since we know the userspace version is stable  
With having the fuse-like socket before it should be trivial to switch
between the implementations.  
So a good starting point would be to have such a "fuse-like socket"
component? What about having a simple example for that at first
without having quic involved. The kernel calls some POSIX-like socket
interface which triggers a communication to a user space application.
This user space application will then map everything to a user space
generated socket. This would be a map from socket struct
"proto/proto_ops" to user space and vice versa. The kernel application
probably can use the kernel_FOO() (e.g. kernel_recvmsg()) socket api
directly then. Exactly like "fuse" as you mentioned just for sockets.

I think two veth interfaces can help to test something like that,
either with a "fuse-like socket" on the other end or an user space
application. Just doing a ping-pong example.

Afterwards we can look at how to replace the user generated socket
application with any $LIBQUIC e.g. msquic implementation as second
step.

- Alex
Socket state management is complex and timers etc in userspace are hard.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help