Alexei Starovoitov wrote: > 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. +1 > I'd like to see the final Acks from John/Daniel and Jakub/Lorenz before merging. > Folks, > please prioritize the review of these patches. This is getting really close I'll take another pass over it today. Thanks