Hi Tomasz,

A few points to note, and this might make things clearer:

* The gateway initialization happens in a separate driver (I am referring to 
the part of the code which you did not find), please take a look at the 
QuantumLinuxBridgeInterfaceDriver class inside:
nova/network/linux_net.py

* For the reboot scenario that you mention, I did not say that the tap devices 
are created in the agent, I mentioned that only the bridge is created. The tap 
devices are created in the VIF driver. That part of the code needs to execute 
when the VM is being revived.

* As for your suggestion on using the interface type bridge, that would work 
only if plug is called only once in the lifetime of a VM. Quantum tries to 
support semantics beyond that; one should be able to plug a VIF into a port, 
may be unplug at a later time, plug into a port on a separate network, and so 
on. One way to achieve this is by using the interface type ethernet (and that's 
where the agent comes into play, hence it's required).

Thanks,
~Sumit.


> -----Original Message-----
> From: netstack-bounces+snaiksat=cisco....@lists.launchpad.net
> [mailto:netstack-bounces+snaiksat=cisco....@lists.launchpad.net] On
> Behalf Of Tomasz Paszkowski
> Sent: Wednesday, March 21, 2012 12:13 AM
> To: netstack@lists.launchpad.net
> Subject: Re: [Netstack] Fwd: [Openstack] Quantum 2012.1 RC1 available
> 
> Hi,
> 
> Comments inline
> 
> On Wed, Mar 21, 2012 at 12:18 AM, Sumit Naiksatam (snaiksat)
> <snaik...@cisco.com> wrote:
> >
> > Hi Tomasz,
> >
> >
> >
> > Thanks for your note. I am not sure I completely understand the
> problems you are facing. Please note that the patch you have referred
> to introduces the VIF-driver for Quantum's Linux Bridge plugin. The
> behavior of this is slightly different from the VIF driver that is used
> within Nova for plugging into a Linux bridge (when using a VLAN-
> NetworkManager). More responses inline.
> 
> VIF driver for Quantum's Linux bridge is already introduced in master:
> 
> ubuntu@vm-builder-2:~/build/nova/nova-
> 2012.1+git201203162209/nova/virt/libvirt$
> grep Quantum *
> vif.py:class QuantumLinuxBridgeVIFDriver(vif.VIFDriver):
> vif.py:    """VIF driver for Linux Bridge when running Quantum."""
> vif.py:
> linux_net.QuantumLinuxBridgeInterfaceDriver.create_tap_dev(dev)
> ubuntu@vm-builder-2:~/build/nova/nova-
> 2012.1+git201203162209/nova/network$
> grep Quantum *
> linux_net.py:# plugs interfaces using Linux Bridge when using
> QuantumManager
> linux_net.py:class
> QuantumLinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
> linux_net.py:
> QuantumLinuxBridgeInterfaceDriver.create_tap_dev(dev, mac_address)
> 
> 
> >
> >
> >
> > Thanks,
> >
> > ~Sumit.
> >
> >
> >
> > From: netstack-bounces+snaiksat=cisco....@lists.launchpad.net
> [mailto:netstack-bounces+snaiksat=cisco....@lists.launchpad.net] On
> Behalf Of Tomasz Paszkowski
> > Sent: Tuesday, March 20, 2012 2:54 PM
> > To: netstack@lists.launchpad.net
> >
> >
> > Subject: Re: [Netstack] Fwd: [Openstack] Quantum 2012.1 RC1 available
> >
> >
> >
> >
> >
> > as I wrote in bug report related to linux bridge and quantum in nova
> this code is broken in few places:
> >
> >
> >
> > 1)      tap devices for instances are set up (ip link set up) by
> quantum during creation and this is stoping libvirt from changing mac
> address of this interface which is breaking vm startup
> >
> >
> >
> > <Sumit> We have not seen issues with the VM startup. Could you kindly
> be a little more specific as to which MAC address needs to change, and
> is not getting changed?</Sumit>
> 
> 
> Hi,
> 
> Default template for libvirt for ethernet type interface is:
> 
> #for $nic in $nics
>     #if $vif_type == 'ethernet'
>         <interface type='ethernet'>
>             <target dev='${nic.name}' />
>             <mac address='${nic.mac_address}' />
>             <script path='${nic.script}' />
> 
> If we pass mac address within domain configuration libvirt is trying
> to set mac address on specified interface and this operation fails
> because it can't be performed on up interface (interface is beeing put
> up from nova code). This error stop libvirt from starting vm. Patch
> from http://paste.openstack.org/show/10976/ prevents setting this
> interface up.
> 
> 
> Op
> >
> >
> >
> > 2)      nova-network is not initializing bridge devices on startup
> and l3 interfaces
> >
> >
> >
> >
> >
> > <Sumit> Did you run the Quantum Linux Bridge agent? The agent does
> this work, and it only happens when the first VM comes up on that
> network. </Sumit>
> 
> 
> I can't find any code in linuxbridge_quantum_agent.py which is
> handling this. That's why I have modified code in init_host function
> nova/network/quantum/manager.py to do this.
> >
> > 3)      machine running instances after reboot is loosing all bridges
> and tap devices and there is no code which recreates this.
> >
> >
> >
> > <Sumit> I have not tested this, but again, if you were running the
> Quantum Linux Bridge agent, the bridges should get created again. The
> tap devices are created in the VIF driver, so that only happens when
> Nova calls "plug" on VM start-up. </Sumit>
> 
> No, tap devices are not created by this agent. Take a look at code
> from linuxbridge_quantum_agent.py:
> 
>     def add_tap_interface(self, network_id, vlan_id, tap_device_name):
>         """
>         If a VIF has been plugged into a network, this function will
>         add the corresponding tap device to the relevant bridge
>         """
>         if not tap_device_name:
>             return False
> 
>         if not self.device_exists(tap_device_name):
>             LOG.debug("Tap device: %s does not exist on this host,
> skipped" %
>                       tap_device_name)
>             return False
> 
> As you can see if the tap interface dosen't already exists function
> returns :-)
> 
> 
> 
> 
> >
> >
> >
> > problem 1 and 2 is resolved by code changes in nova and problem nr. 3
> is addressed by adapting interface type bridge with quantum linux
> bridge integration.
> >
> >
> >
> > patches are on launchpad https://bugs.launchpad.net/nova/+bug/941794
> >
> >
> >
> >
> >
> > At the end in my opinion we don't need an agent for linux bridge
> integration.
> >
> >
> >
> > <Sumit> As I mentioned earlier, in order to fully support the Quantum
> attach/detach interface semantics, the interface-type has to be set to
> "ethernet" (so that tap devices can be used, and be added to the bridge
> only when attach is called, and vice versa), and the agent has to be
> run so that the per-host configuration is done correctly.  So the agent
> is needed. Of course, if there are any issues, those need to be
> fixed.</Sumit>
> 
> Im my opinion for linux bridge integration with quantum we can easily
> use
> interface type 'bridge' in libvirt. This solves problem with tap
> devices after reboot and frees agent from plugging/unplugging
> interfaces. Amount of code needed to be changed to achive
> this is small: http://paste.openstack.org/show/10977/. We need also to
> add <target dev='${nic.name}' /> statment to bridge section in
> libvirt.xml.template but this is only requires to be mentioned within
> README file.
> 
> --
> Tomasz Paszkowski
> SS7, Asterisk, SAN, Datacenter, Cloud Computing
> +48500166299
> 
> --
> Mailing list: https://launchpad.net/~netstack
> Post to     : netstack@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~netstack
> More help   : https://help.launchpad.net/ListHelp

-- 
Mailing list: https://launchpad.net/~netstack
Post to     : netstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~netstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to