Hi Stefan, All datagram communication in VMCI based AF_VSOCK is going through the host - also for loopback communication. The only difference wrt loopback is that the VMCI queue pairs implementing the shared queues for the stream protocols aren't registered with the hypervisor - they are created specifying the VMCI_QPFLAG_LOCAL flag, and exist only as local guest memory.
So in the current form, there isn't much loopback code in the vmci AF_VSOCK implementation, so it doesn't seem like there would be much to share either. Thanks, Jørgen ________________________________________ From: Stefan Hajnoczi <stefa...@redhat.com> Sent: Thursday, November 10, 2016 3:43 PM To: Jorgen S. Hansen Cc: cav...@redhat.com; netdev@vger.kernel.org Subject: AF_VSOCK loopback Hi Jorgen, Cathy Avery found that the AF_VSOCK VMCI transport does loopback inside the guest (but not on the host?). The virtio transport currently does no loopback. The loopback scenario I'm thinking of is where process A listens on port 1234 and process B on the same machine connects to port 1234 both with the same CID. I'd like to make the virtio transport compatible with VMCI transport semantics so AF_VSOCK behaves the same regardless of the transport. This means loopback must be added to virtio-vsock. The core net/vmware/af_vsock.c code does not implement loopback. How does VMCI do loopback? Are the loopback packets reflected back from the host? Or does the guest driver notice the loopback and avoid passing packets to the host in the first place? Maybe we can make the loopback code common in af_vsock.c if that avoids code duplication. Thanks, Stefan