Re: [PATCH v2 00/31] Implement user mode network for kvm tools

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

 



* Alexander Graf <agraf@xxxxxxx> wrote:

> 
> On 04.07.2011, at 11:11, Ingo Molnar wrote:
> 
> > 
> > * Alexander Graf <agraf@xxxxxxx> wrote:
> > 
> >>>> I don't see how it would. Once you overrun device buffers, you 
> >>>> have to do something. Either you drop packets or you stall the 
> >>>> guest. I'd usually prefer the former :).
> >>> 
> >>> What scenario do you see where we'd have to drop packets?
> >>> 
> >>> When the guest sends packets, we send them over to the host TCP 
> >>> socket - no blocking.
> >> 
> >> When the guest sends packets, I'd hope you have 2 threads:
> >> 
> >> * vcpu
> >> * virtio network queue process
> >> 
> >> So those two run in parallel now, with the network queue processing 
> >> packets while the vcpu pushes packets into the ring. What if the 
> >> network thread is slower than the vcpu fills the ring? You only 
> >> have so many entries in a vring.
> >> 
> >>> When the host receives packets it should only read data out of 
> >>> the host socket(s) if the vring buffer suggests that there's 
> >>> space available.
> >> 
> >> I agree :).
> >> 
> >>> So i don't see we'd need to drop packets or block things - we 
> >>> just have to react to packets and to vring space availability in 
> >>> a straightforward way.
> >> 
> >> Well, the only way for the sending path is to stall the vcpu, 
> >> otherwise the guest figures "oh, I can't push packets into the 
> >> vring, let's just drop it", no?
> > 
> > No, that's not how the Linux TCP/IP implementation works.
> > 
> > Filled up TX rings are pretty normal on physical hardware: we do not 
> > drop packets but the TCP state machine keeps buffering and filling 
> > the device as it can.
> > 
> > The same will happen with virtual guests as well - there's no packet 
> > dropping nor 'blocking of the whole guest'.
> 
> I see. Can you guarantee that other guests (in case that ever gets 
> implemented) behave the same?

Do you mean can i remove 100% of fear, uncertainty and doubt about an 
unknown 'black box' guest OS? No.

But the queueing logic of TCP/IP stacks is pretty similar in practice 
so i'd be very surprised if Windows (which i guess you must be 
referring to) dropped packets due to TX overflow. It would be very 
stupid to drop packets on TX: the sending stack has to buffer the TCP 
stream *anyway* (and has no choice about that, the app cannot resend 
the socket data), so it achieves nothing from dropping the packet and 
adding resend complexity to itself.

Thanks,

	Ingo
--
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