From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ingo Molnar Subject: [transparent networking] Re: [PATCH] kvm tools: Implement virtio network device Date: Wed, 13 Apr 2011 15:02:42 +0200 Message-ID: <20110413130242.GB24287@elte.hu> References: <1302695328-3503-1-git-send-email-asias.hejun@gmail.com> <4DA58E35.5010801@cs.helsinki.fi> <4DA59068.9060707@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Pekka Enberg , Cyrill Gorcunov , kvm@vger.kernel.org To: Asias He Return-path: Received: from mx3.mail.elte.hu ([157.181.1.138]:42827 "EHLO mx3.mail.elte.hu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752088Ab1DMNCq (ORCPT ); Wed, 13 Apr 2011 09:02:46 -0400 Content-Disposition: inline In-Reply-To: <4DA59068.9060707@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: * Asias He wrote: > >> Here are some scp performance test for differenct implementations: > >> None of rx and tx as thread: > >> guest to host 3.2MB/s > >> host to guest 3.1MB/s > >> > >> Only rx as thread: > >> guest to host 14.7MB/s > >> host to guest 33.4MB/s > >> > >> Both rx and tx as thread(This patch works this way): > >> guest to host 19.8MB/s > >> host to guest 32.5MB/s > >> > >> Signed-off-by: Asias He > > > > This is already in master. Thanks! > > > > Ingo suggested to CC the updated version of this patch to kvm list. So I > am posting this patch again. Thanks Asias, cool stuff. Maybe other KVM developers want to chime in about how to best implement transparent (non-TAP-using) guest-side networking. The best approach would be to not go down as low as the IP/Ethernet packeting level (it's unnecessary protocol overhead), but to implement some sort of streaming, virtio based TCP connection proxying support. Strictly talking the guest does not need ICMP packets to have working Internet connectivity - only passing/tunneling through TCP sockets would be enough. The following highlevel ops are needed: - connect/shutdown/close - send/receive - poll And would be passed through to the host side and mirrored there into real connect/shutdown TCP socket ops and into send/receive ops. The guest OS does not need to be 'aware' of this in any way, as long as the bzImage has this magic guest tunneling support included. Obviously, such a highlevel approach would be much faster as well than any packet level virtual networking approach. Does something like this exist upstream, or do we have to implement it? Thanks, Ingo