[libvirt-users] Network hooks for ethernet interfaces

Vasiliy Tolstov v.tolstov at selfip.ru
Thu Apr 11 20:43:06 UTC 2019


ср, 10 апр. 2019 г. в 19:46, Ruben Kerkhof <ruben at rubenkerkhof.com>:
>
> On Wed, Apr 10, 2019 at 1:44 PM Laine Stump <laine at redhat.com> wrote:
> >
> > On 4/9/19 11:35 AM, Ruben Kerkhof wrote:
> > > On Tue, Apr 9, 2019 at 5:10 PM Michal Privoznik <mprivozn at redhat.com> wrote:
> > >>
> > >> On 4/9/19 4:38 PM, Ruben Kerkhof wrote:
> > >>> Hi all,
> > >>>
> > >>> I have a hook script, /etc/libvirt/hooks/network, that doesn't seem to
> > >>> be called when I attach an interface with type 'ethernet' with this
> > >>> xml snippet:
> > >>>
> > >>> <interface type='ethernet'>
> > >>>       <model type="virtio"/>
> > >>>       <source>
> > >>>           <ip address="10.100.0.1" prefix="24" peer="10.100.0.10"/>
> > >>>       </source>
> > >>> </interface>
> > >>>
> > >>> https://www.libvirt.org/hooks.html#intro says
> > >>> "A network is started or stopped or an interface is plugged/unplugged
> > >>> to/from the network (since 1.2.2)".
> > >>>
> > >>> While I don't have a network defined in xml, I'd expect this to work
> > >>> just as well for 'ethernet' type interfaces. Am I wrong?
> > >>
> > >>
> > >> Hotplugging an 'ethernet' type of interface doesn't really relate to any
> > >> libvirt network. Hence libvirt doesn't call 'network' hook script. If
> > >> you'd continue reading you'll see what is the 'network' hook fed with
> > >> (on stdin): info on domain in question AND network where the event
> > >> ocurred. But there is no network, is it?
> > >
> > > No not in the libvirt sense there isn't, you're right.
> > >>
> > >> But maybe you can work around this by waiting for
> > >> DEVICE_ADDED/DEVICE_REMOVED events? What is it that you're trying to solve?
> > >
> > > I'd like to enable proxy_arp on the interface among other things.
> > > I can easily do this from the same script that adds the interface
> > > though, so I have a workaround, but a hook that triggers on all
> > > interface events felt cleaner.
> >
> > Also keep in mind that the hook scripts aren't an officially supported
> > part of the API, and are thus liable to change without warning. As an
> > example, danpb has proposed changing the network hook:
> >
> >   https://www.redhat.com/archives/libvir-list/2019-March/msg01280.html
> >
> > Once this goes in, any network hook script that uses the plugged and
> > unplugged hooks will no longer work; you would instead need to use the
> > port-created and port-deleted hooks.
>
> That's good to know, thank you Laine.
>
> In that case perhaps adding this functionality to libvirt itself would
> make more sense?
>
> Some background, I'm implementing
> https://vincent.bernat.ch/en/blog/2018-l3-routing-hypervisor, so
> announcing /32 host routes to our vms with BGP.
> Our existing vms use /24 network addressing, and to keep that working,
> I need to set proxy_arp on the interface.
>
I done something like this in some Russian Cloud hosting provider, but
we use OSPF to redistribute routes in DC, and sync their via bgp
between dc.
I don't recommend hooks, write small netlink based program that
listens events about interface up, check it names and set proxy arp
for it.
This is not blocking and easy to modify/test/write. Or set proxy_arp
globally (but this is not recommended)

-- 
Vasiliy Tolstov,
e-mail: v.tolstov at selfip.ru




More information about the libvirt-users mailing list