Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-53963

For OVS bridge Qos setting, the "average" and "peak" parameters are interpreted differently

    • libvirt-10.10.0-1.el9
    • No
    • Low
    • rhel-sst-virtualization
    • ssg_virtualization
    • 3
    • Dev ack
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • 10.10.0
    • None

      What were you trying to do that didn't work?

      "average" and "peak" are differently expressed for inbound for interface connected to OVS bridge;
      For OVS bridge, the "average" parameter is interpreted as min-rate, while "peak" is interpreted as max-rate ("average" indicates the min-rate, "peak" indicates the max-rate).
      While for linux bridge, the throughput is limited by the "average" parameter ("average" indicates the max-rate), "peak" is not used here;

      Please provide the package NVR for which bug is seen:

      libvirt-10.5.0-5.el9.x86_64

      How reproducible:

      100%

      Steps to reproduce

      1) create a ovs bridge named ovsbr0, then start vm with interface setting as below:

      # virsh dumpxml rhel --xpath //interface
      <interface type="bridge">
        <mac address="52:54:00:ed:88:bf"/>
        <source bridge="ovsbr0"/>
        <virtualport type="openvswitch">
          <parameters interfaceid="f2eac6c7-8fb0-4eec-9a95-e4ee413a3541"/>
        </virtualport>
        <bandwidth>
          <inbound average="512" peak="1024" burst="32"/>
        </bandwidth>
      ......
      </interface>
      

      2) check the inbound setting by tc:

      # tc class show dev vnet5
      class htb 1:1 parent 1:fffe prio 0 rate 4096Kbit ceil 8192Kbit burst 32Kb cburst 32Kb
      class htb 1:fffe root **rate 8192Kbit** ceil 8192Kbit burst 1499b cburst 1499b
      

      3) check the Qos setting by ovs command:

      # ovs-vsctl list qos
      _uuid               : 9cc72160-62ab-4842-bae8-3b74ab53e2c2
      external_ids        : {ifname=vnet5, vm-id="430e0466-de3f-4a95-ab8d-0fe85dffb586"}
      other_config        : {burst="262144", max-rate="8192000", min-rate="4096000"}
      queues              : {0=c0ffaeab-fe1c-4bbc-93d1-186b342a8249}
      type                : linux-htb
      (max-rate="8192000" bit, equals to 1024KB, as "peak" setting;
      min-rate="4096000"bit, equals to 512KB, as "average" setting)
      

      4) On guest, run netserver, and then on host, run netperf command as below:

      # netperf -H 10.73.179.229
      MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.73.179.229 () port 0 AF_INET : histogram : interval : dirty data : demo
      Recv   Send    Send                          
      Socket Socket  Message  Elapsed              
      Size   Size    Size     Time     Throughput  
      bytes  bytes   bytes    secs.    10^6bits/sec  
      131072  16384  16384    10.61       7.84
      

      While for linux bridge, it's different:

      # virsh dumpxml rhel --xpath //interface
      <interface type="bridge">
        <mac address="52:54:00:ed:88:bf"/>
        <source bridge="virbr0"/>
        <bandwidth>
          <inbound average="512" peak="1024" burst="32"/>
        </bandwidth>
      ......
      </interface>
      

      1). check the inbound:

      # tc class show dev vnet4
      class htb 1:1 root leaf 2: prio 0 **rate 4096Kbit** ceil 8192Kbit burst 32Kb cburst 1598b
      

      2) test the inbound:

      # netperf -H 192.168.122.213
      ......
      Recv   Send    Send                          
      Socket Socket  Message  Elapsed              
      Size   Size    Size     Time     Throughput  
      bytes  bytes   bytes    secs.    10^6bits/sec  
      131072  16384  16384    10.47       3.94 
      

      3) Check the definition on libvirt.org:
      average
      Specifies the desired average bit rate for the interface being shaped (in kilobytes/second).
      peak
      Optional attribute which specifies the maximum rate at which the bridge can send data (in kilobytes/second).

      Expected results

      For OVS bridge, the "average" parameter is interpreted as max-rate, consistent with the linux bridge.

      Actual results

      For OVS bridge, the "average" parameter is interpreted as min-rate, while "peak" is interpreted as max-rate ("average" indicates the min-rate, "peak" indicates the max-rate).

              mprivozn@redhat.com Michal Privoznik
              yalzhang@redhat.com Yalan Zhang
              virt-maint virt-maint
              Haijiao Zhao Haijiao Zhao
              Votes:
              0 Vote for this issue
              Watchers:
              12 Start watching this issue

                Created:
                Updated: