Re: [PATCH RFC 0/3] kcm: Kernel Connection Multiplexor (KCM)
flat view
From: Sowmini Varadhan <hidden>
Date: 2015-09-21 21:26:30
On (09/21/15 10:33), Tom Herbert wrote:
quoted
Some things that were not clear to me from the patch-set: The doc statses that we re-assemble packets the "stated length" - but how will the receiver know the "stated length"?BPF program returns the length of the next message. In my testing so far I've been using HTTP/2 which defines a frame format with first 3 bytes being header length field . The BPF program (using LLVM/Clang-- thanks Alexei!) is just:
Maybe I dont see something about the mux/demux here (I have to take a closer look at reserve_psock/unreserve_psock), but will every tcp segment have a 3 byte length in the payload? Not every TCP segment in the RDS-TCP case will have a RDS header, thus the comments before rds_send_xmit(), thus applying the bpf filter to a TCP segment holding some "from-the-middle" piece of the RDS dgram may not be possible
quoted
the notes say one can "accept()" over a kcm socket- but "accept()" is itself a connection-oriented concept- one does not accept() on
:
The accept method is overloaded on KCM sockets to do the socket cloning operation. This is unrelated to TCP semantics, connection management is performed on TCP sockets (i.e. before being attached to a KCM multiplexor).
If possible,it might be better to use some other glibc-func/name/syscall/sockopt/whatever for this, rather than overloading accept().. feels like that would keep the semantics cleaner, and probably less likely to trip up on accept code in the kernel.. --Sowmini