Re: [transparent networking] Re: [PATCH] kvm tools: Implement virtio network device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/13/2011 04:33 PM, Avi Kivity wrote:
On 04/13/2011 04:02 PM, Ingo Molnar wrote:
* Asias He<asias.hejun@xxxxxxxxx>  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<asias.hejun@xxxxxxxxx>
> >
> >  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?


macvtap does non-privileged setupless networking.


But this doesn't really answer your message. No, there is no tcp-level virtio device. However, because of GSO/GRO, I don't think there is a huge win to be gained by bypassing the lower layers. If you want to send a megabyte's worth of data into a tcp stream, you prepend a header and post it to virtio-net, and this goes all the way down to the real device.

I'm not sure tcp-offload like you propose would pass netdev@. Similar approaches for real hardware were rejected since they would bypass the tcp stack. Things like netfilter would no longer work.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux