Bug 1514963

Summary: unable to start a network with bandwidth description for outbound QOS
Product: [Fedora] Fedora Reporter: dravigon <dravidkumars>
Component: iprouteAssignee: Phil Sutter <psutter>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: 26CC: code, dravidkumars, jiri, libvirt-maint, mprivozn, psutter, rbalakri, rvokal, twoerner
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: iproute-4.14.1-4.fc26 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-02-26 11:02:55 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Libvirt client log none

Description dravigon 2017-11-19 17:50:26 UTC
Description of problem:
unable to start a network with bandwidth description for outbound QOS
my xml for network

<network>
  <name>sda</name>
  <uuid>173997d2-61b6-4425-a852-8f07a877f75f</uuid>
  <forward dev='enp3s0' mode='nat'>
    <nat>
      <port start='1024' end='2048'/>
    </nat>
    <interface dev='enp3s0'/>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:90:cb:d0'/>
  <domain name='sda'/>
  <bandwidth>
    <inbound average='50' peak='50' burst='50'/>
    <outbound average='50' peak='50' burst='50'/>
  </bandwidth>
  <ip address='192.100.0.12' netmask='255.255.255.0'>
  </ip>
</network>


Version-Release number of selected component (if applicable):libvirt 3.9.0


How reproducible:100%


Steps to Reproduce:
1.create a network with nat mode and with bandwith outbound rule in Qos
2.start the network


Actual results:
libvirt:  error : internal error: Child process (/usr/bin/tc filter add dev virbr0 parent ffff: protocol all u32 match u32 0 0 police rate 50kbps burst 50kb mtu 64kb drop flowid :1) unexpected exit status 1: What is ":1"?
Usage: ... u32 [ match SELECTOR ... ] [ link HTID ] [ classid CLASSID ]
               [ action ACTION_SPEC ] [ offset OFFSET_SPEC ]
               [ ht HTID ] [ hashkey HASHKEY_SPEC ]
               [ sample SAMPLE ] [skip_hw | skip_sw]
or         u32 divisor DIVISOR

Where: SELECTOR := SAMPLE SAMPLE ...
       SAMPLE := { ip | ip6 | udp | tcp | icmp | u{32|16|8} | mark }
                 SAMPLE_ARGS [ divisor DIVISOR ]
       FILTERID := X:Y:Z

NOTE: CLASSID is parsed at hexadecimal input.
libvirt: Network Driver error : Network not found: no network with matching uuid 'a734e030-f800-4b72-a077-f360134bdc13' (sda)


Expected results:
Network must start automatically

Additional info:
qemu version :2.10.0
dnsmasq is installed

Comment 1 Cole Robinson 2017-11-19 23:26:30 UTC
*** Bug 1514960 has been marked as a duplicate of this bug. ***

Comment 2 Cole Robinson 2017-11-19 23:26:47 UTC
*** Bug 1514962 has been marked as a duplicate of this bug. ***

Comment 3 Cole Robinson 2017-11-19 23:27:12 UTC
*** Bug 1514961 has been marked as a duplicate of this bug. ***

Comment 4 Michal Privoznik 2017-11-24 21:31:02 UTC
Interesting. I'm unable to reproduce this bug. What's your kernel and iproute packages version? Can you please attach full debug logs?

http://wiki.libvirt.org/page/DebugLogs

Comment 5 dravigon 2017-11-25 19:05:39 UTC
Created attachment 1359023 [details]
Libvirt client log

This is the libvirt client log

Comment 6 dravigon 2017-11-25 19:36:17 UTC
This has my libvirt daemon log and I have attached my libvirt client log with this bug report
https://drive.google.com/open?id=1TVGc5hwnw70biCdmFskmK66wBcYdWfA9

Comment 7 Michal Privoznik 2017-11-27 16:54:22 UTC
So I've managed to reproduce this issue. But only after I've upgraded tc to 4.13 or newer. I think the problem is the following tc's commit:

https://git.kernel.org/pub/scm/linux/kernel/git/shemminger/iproute2.git/commit/?id=e67aba559581143f9bc34f0706b0c3feeeab08fa

I'm investigating further.

Comment 8 Michal Privoznik 2017-11-27 18:17:31 UTC
So after some investigation I think I have fix:

https://marc.info/?l=linux-netdev&m=151180640029095&w=2

Switching over to iproute & Fedora (e.g. F26 has 4.13 built which is affected).

Comment 9 Michal Privoznik 2017-12-08 10:22:06 UTC
After some discussion on the list, another approach was implemented:

https://marc.info/?l=linux-netdev&m=151272830106092&w=2

Comment 10 Michal Privoznik 2017-12-28 10:06:31 UTC
The patch was merged upstream:

commit 3572e01a090a298e2f4c4f796bad6639b652e031
Author:     Michal Privoznik <mprivozn>
AuthorDate: Fri Dec 8 11:18:07 2017 +0100
Commit:     Stephen Hemminger <stephen>
CommitDate: Fri Dec 8 10:29:01 2017 -0800

    tc: util: Don't call NEXT_ARG_FWD() in __parse_action_control()
    
    Not all callers want parse_action_control*() to advance the
    arguments. For instance act_parse_police() does the argument
    advancing itself.
    
    Fixes: e67aba559581 ("tc: actions: add helpers to parse and print control actions")
    Signed-off-by: Michal Privoznik <mprivozn>

v4.14.1-114-g3572e01a