On 02/17/2014 05:45 PM, John Ferlan wrote: > > >>> <h5><a name="elementVlanTag">Setting VLAN tag (on supported network types only)</a></h5> >>> diff --git a/docs/formatnetwork.html.in b/docs/formatnetwork.html.in >>> index 1ca1bec..d4c390a 100644 >>> --- a/docs/formatnetwork.html.in >>> +++ b/docs/formatnetwork.html.in >>> @@ -412,40 +412,81 @@ >>> >>> <p> >>> The <code><bandwidth></code> element allows setting >>> - quality of service for a particular network. >>> - <span class="since">Since 0.9.4</span> The limits specified >>> + quality of service for a particular network >>> + (<span class="since">since 0.9.4</span>). For a <code>domain</code> >>> + object, the limits specified are applied to the domain traffic. >> I'm quite sure about the 'domain traffic'. The <bandwidth/> under domain >> limits the particular <interface/> that has <bandwidth/>. Having 'domain >> traffic' written here may sound like if the domain traffic was >> aggregated and then shaped (which is done in network not in domain). >> Maybe 'domain interface traffic'? >> > Right - I struggled with this one when trying to merge things. Using > "domain interface traffic" does target a bit better. Of course the > context is discussing network bandwidth, so I guess I just assumed - hah > - that the reader would consider the domain traffic as the traffic for > that interface. > > In the end, they both affect the same target interface; however, it > wasn't quite clear which would take precedence. If the interface had > one set of values on it, then the domain was defined with a different > set, then what happens? That is a non-question, because there is no <bandwidth> subelement of a <domain>! The <bandwidth> element can appear in 3 places: 1) as a subelement of a domain's <interface>. In this case, the bandwidth applies to that one interface of that domain. 2) as a subelement of a <portgroup> in a <network>. In this case, if a domain's <interface> has a "portgroup='xxx'" attribute in its <source> element: <interface type='network'> <source network='testnet' portgroup='admin'/> ... *and* if the <interface itself has no <bandwidth> element, then the <bandwidth> element of the portgroup is applied to that interface. 3) as a subelement of a <network>. In this case, the bandwidth specified is intended to be to total aggregate bandwidth of all guest interfaces attached to that network. So, as you can see, there is no concept of "the bandwidth of a domain". The places where there may be a question of precendence: 1) if an <interface> has a <bandwidth> *and* it belongs to a portgroup that has a <bandwidth>. In this case, we decided that the bandwidth under the individual <interface> would take precedence, since at the time anyone who had permission to edit the domain (and its <interface>) also had permission to edit the network (and its <portgroup>); so allowing the specific config for one interface to override the general config for many interfaces was more useful. 2) if a <network> has a bandwidth defined for the aggregate of all interfaces attached to that network, and one interface has bandwidth defined that is higher than the aggregate for the entire network. In this case, the aggregate bandwidth for the network takes precedence, not because of anything we do, but just because the two choke points are independent of each other (the <interface> bandwidth control happens on the interface's tap device, and the <network> bandwidth control happens on the interface part of the bridge device created for that network). Did you maybe mean to say If the interface had one set of values on it, then the *NETWORK* was defined with a different set, then what happens? ? If so, then I believe (2) above explains in (rather obtusely, of course, but I hope it's possible to decipher it) > Or vice versa - a domain with a set of values > applied to an interface and then someone edits the network interface. It > seems it would be the "last" set to be applied that would "win". What is "interface" vs. "network interface"? I can't tell if you're talking about the same thing with two slightly different names, or incorrectly naming something in the <network> configuration. But if you're talking about interface bandwidth vs. network aggregate bandwidth, the way that it works is that both sets of rules are installed, and the traffic for that guest's interface is shaped twice - once as it goes in/out of the guest interface's tap device, then the same traffic is shaped again (in aggregate with all other traffic for the network) as it goes in/out of the interface that is a part of the network's bridge device. > Since this is an active topic for other recent patches, hopefully we can > come up with a wording that will stick going forward. I've copied Laine > on this response just to bring it to his attention and get his take as > well... > Although I understand the desire to eliminate nearly duplicated wording, I'm a bit concerned about trying to combine two things that are almost but not entirely the same, due to the potential of the combined information being wrong in one of both cases, or at least becoming unnecessarily confusing due to extra "exceptions" that are needed to explain the differences. In spite of that, I'm fine with it being combined - if people complain, we can always split it up again. I can never really form a good opinion about documentation without seeing it live on the web page and hearing how others interpret it, and my burn-out level on documentation has lately led to my opinion either being "yeah, that's okay", or "no, I don't like that, but I don't know how to / don't have time to fix it" :-P (The recent change to the information for <bandwidth> in the network documentation was a side effect of me making a small change to validation of network xml to disallow specifying <bandwidth> on network types where we can't support setting aggregate bandwidth for the entire network. While I was doing that, I noticed that the documentation about <bandwidth> in formatnetwork.html.in was obtuse/incorrect, so I made some changes to fix those things; I didn't think to look at the documentation for <bandwidth> in the domain (<interface>) XML docs, because I hadn't changed anything there.) -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list