Hi Michal,
these are the steps:
- start the vm with qemu
sudo qemu-system-x86_64-spice -m 2048 -enable-kvm -smp 3 -cdrom
/home/machine_A/ubuntu.iso -netdev
tap,ifname=tap0,vhost=on,id=n1,vhostforce=on,queues=3,script=/etc/tap0_ifup.sh,downscript=/etc/tap0_ifdown.sh
-device virtio-net-pci,netdev=n1,mac=9E:58:00:d2:53:03,mq=on,vectors=8
-netdev
tap,ifname=tap1,vhost=on,id=n2,vhostforce=on,queues=3,script=/etc/tap1_ifup.sh,downscript=/etc/tap1_ifdown.sh
-device virtio-net-pci,netdev=n2,mac=7A:53:00:d1:59:04,mq=on,vectors=8
-device virtio-net,netdev=network2 -netdev user,id=network2 -hda
switch_A.img
- attach the tap to the bridges in the host machine (to have the traffic
coming from the outsider traffic generator injected in the vm)
- in the VM:
- enable ip_forward
- enable promiscuous mode for the interface
- send the "tc qdisc" command to configure the output NIC with 2
traffic classes (TC) assigned to 2 different queues
- add the iptables mangle rules to the POSTROUTING chain to assign TC1
to the traffic with dport 7777 and TC0 to the traffic with dport 8888
I'm sending 2 UDP flows, I have no loss under 3Mbps each.
If I capture traffic with tcpdump on the ingress and on the egress nic (of
the VM), I see a difference of 50% of packets
When I did a test on the host machine, to check if it has the same problem,
I've reached an aggregated traffic of 90Mbps with no loss.
That's why I think that there is some misconfiguration on the virtual NIC.
Thanks
Silvia
On Mon, Mar 29, 2021 at 11:13 AM Michal Privoznik <mprivozn at redhat.com>
wrote:
> On 3/27/21 2:53 PM, Silvia Fichera wrote:
> > Hi all,
> > I want to use tc qdisc settings in a network coposed of several qemu
> > VMs, connected through bridges and tap interfaces.
> > I generate traffic with a spirent. Everything is fine when the
> > scheduling discipline is not installed but when I run the command to
set
> > taprio queues traffic on the VM's NIC the traffic is dropped, i
can send
> > max 1mbps.
> > I think that there is something missing in the virtual NIC
configuration
> > or setup. With ethtool i can see that queues are configured. I've
also
> > noticed the BQL equals to 0, that is different than the physical
machine
> > (BQL=18600) where everything works correctly.
> > I've read that it could be because NIC drivers do not support that
> setting.
> >
> > Do you have any suggestions?
>
> Hey,
>
> I'm not familiar with taprio, but what's implemented in libvirt is
htb
> and sfq and that works well. Are you setting qdisc-s yourself or
> modifying libvirt created structure?
>
> Are you setting these qdiscs from the host, right?
> I know that when changing QoS settings (when libvirt changes qdics/class
> layout) for a brief moment packets are not transmitted from/to guest. I
> suspect that kernel is freeing up queues or something. But this does not
> look like your case, does it?
>
> Michal
>
>
--
Silvia Fichera
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://listman.redhat.com/archives/libvirt-users/attachments/20210329/9b259887/attachment.htm>