On Aug 8, 2012, at 7:06 PM, Ansis Atteka wrote:
> 
> On Wed, Aug 8, 2012 at 2:18 PM, Laine Stump <la...@laine.org> wrote:
> On 08/08/2012 03:43 PM, Ansis Atteka wrote:
>> 
>> 
>> On Sat, Aug 4, 2012 at 10:16 PM, Laine Stump <la...@laine.org> wrote:
>> Although it's been possible (ever since openvswitch was added to
>> libvirt in 0.9.11) for a libvirt network to use an openvswitch bridge
>> (by adding <virtualport type='openvswitch'>), the virtualport in the
>> network would always have a default random interfaceid included, which
>> would be re-used for all interfaces using that network, which doesn't
>> really work at all. The alternative was to not specify openvswitch in
>> the <network> definition, but to do it in the guest's <interface>
>> definition instead - this of course goes against the principle of not
>> having host-specific config embedded in guest config.
>> 
>> This patch series enhances the functionality of <virtualport>
>> elements, to allow omitting some attributes (and even the type), and
>> to merge the interface, network, and portgroup virtualports rather
>> than simply picking one. This not only makes openvswitch <network>s
>> more practical (because the network can specify type='openvswitch'
>> without also specifying an interfaceid), but also makes <virtualport>
>> in networks and portgroups more useful in general - for example, an
>> interface can specify an interfaceid (used only by openvswitch) *and*
>> an instanceid (used only by 802.1Qbh), while the network's virtualport
>> specifies only the type, and the portgroups specify the managerid,
>> typeid, profileid, or whatever is appropriate for the type of switch
>> used by the network.
>> 
>> The result is that the guest config can be completely devoid of
>> knowledge about the type of switch being used on the hardware, but can
>> still enjoy full configurability for whatever switch ends up being
>> used.
>> If I understand correctly, then these patch series should enable
>> following configuration to work:
>> 
>> The domain XML:
>> ...
>>     <interface type='network'>
>>       <mac address='52:54:00:25:0c:bb'/>
>>       <source network='ovsnet'/>
>>       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
>> function='0x0'/>
>>     </interface>
>> ...
>> 
>> The network XML:
>> <network>
>>   <name>ovsnet</name>
>>   <uuid>ad68ae68-ee26-5c65-8cff-e6c182ff3593</uuid>
>>   <bridge name='ovs'/>
>>   <forward mode='bridge'/>
>>   <mac address='52:54:00:44:A4:D8'/>
>>   <virtualport type='openvswitch'/>
>> </network>
>> 
>> 
>> And then I would expect that libvirt would auto generate the
>> interface IDs for each interface that gets added to this ovsnet
>> network,
> 
> That was (at some point anyway) my intent - if the interface has an interface 
> id use it, if not then generate one, but...
> 
> 
>> but instead I am seeing the following error:
>> 
>> 2012-08-08 19:22:16.149+0000: 10840: error : 
>> virNetDevVPortProfileCheckComplete:165 : XML error: missing interfaceid in 
>> <virtualport type='openvswitch'>
> 
> Urg. In the end I forgot that part, so when it checks for completeness, it 
> fails. I'll make a patch to fix that.
> 
> Thanks for catching that bug.
> 
> (one issue about this - since it's not known until runtime that the network 
> is ovs, the interfaceid won't be generated until then, and at that time it's 
> not reasonable to update the interfaceid in the guest's persistent config. 
> So, if you're configured this way, the guest will get a different new 
> interfaceid every time it is restarted.)
> That will not work well from the OpenFlow Controller
> perspective.
> 
> Interface ID must not change across guest restarts,
> otherwise OpenFlow Controller will loose the track
> on which interface was which.
> 
I agree with Ansis here. If this UUID changes each time the VM is started, it's 
effectively useless for something external to libvirt/OVS to utilize to 
recognize the interface. It needs to remain the same for the life of the 
interface on the VM.

> 
> 
>> 
>> I guess, it would be desirable to auto-generate interface
>> IDs, if the network was of type openvswitch? Otherwise
>> domain XML still needs to know what kind of type is
>> the underlying bridge in the network XML.
> 
> Agreed. It's okay if it *optionally* puts in that info (just in case the 
> network is ovs), but it shouldn't require it.
> 
> 
>> 
>> Though, how would this work in Actual Config, once the
>> network type gets switched back from OVS to Linux
>> Bridge? Would the interface ID be automatically removed
>> from all relevant Domain XMLs?
> 
> Kind of. More exactly, the interface ID would be ignored when not relevant. 
> Similarly, you could also have an instanceid (used by 802.1Qbg), and if the 
> actual network type was ovs, the instanceid would be ignored. The only thing 
> you *can't* do is to specify <virtualport type='xyz'> in the interface if the 
> network is actually some other type.




--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to