On Sun, Mar 28, 2021 at 01:20:00PM -0700, Cong Wang wrote: > From: Cong Wang <cong.wang@xxxxxxxxxxxxx> > > We have thousands of services connected to a daemon on every host > via AF_UNIX dgram sockets, after they are moved into VM, we have to > add a proxy to forward these communications from VM to host, because > rewriting thousands of them is not practical. This proxy uses an > AF_UNIX socket connected to services and a UDP socket to connect to > the host. It is inefficient because data is copied between kernel > space and user space twice, and we can not use splice() which only > supports TCP. Therefore, we want to use sockmap to do the splicing > without going to user-space at all (after the initial setup). > > Currently sockmap only fully supports TCP, UDP is partially supported > as it is only allowed to add into sockmap. This patchset, as the second > part of the original large patchset, extends sockmap with: > 1) cross-protocol support with BPF_SK_SKB_VERDICT; 2) full UDP support. > > On the high level, ->read_sock() is required for each protocol to support > sockmap redirection, and in order to do sock proto update, a new ops > ->psock_update_sk_prot() is introduced, which is also required. And the > BPF ->recvmsg() is also needed to replace the original ->recvmsg() to > retrieve skmsg. To make life easier, we have to get rid of lock_sock() > in sk_psock_handle_skb(), otherwise we would have to implement > ->sendmsg_locked() on top of ->sendmsg(), which is ugly. > > Please see each patch for more details. > > To see the big picture, the original patchset is available here: > https://github.com/congwang/linux/tree/sockmap > this patchset is also available: > https://github.com/congwang/linux/tree/sockmap2 > > --- > v7: use work_mutex to protect psock->work > return err in udp_read_sock() > add patch 6/13 > clean up test case The feature looks great to me. I think the selftest is a bit light in terms of coverage, but it's acceptable. I'd like to see the final Acks from John/Daniel and Jakub/Lorenz before merging. Folks, please prioritize the review of these patches.