[libvirt] Re: [netcf-devel] [RFC] Reporting host interface status/statistics via netcf/libvirt, and listing active vs. inactive interfaces

Daniel P. Berrange berrange at redhat.com
Wed Jun 17 20:09:24 UTC 2009


On Wed, Jun 17, 2009 at 07:27:43PM +0100, Daniel P. Berrange wrote:
> On Wed, Jun 17, 2009 at 11:16:28AM -0700, David Lutterkort wrote:
> > 
> >       * int netcf_if_operstate(netcf_if *) - return 1 if interface is
> >         up, 0 if not
> >       * int netcf_if_stats(netcf_if *, netcf_if_stats *) - get rx/tx
> >         statistics; which ones needs to be figured out in detail
> >       * int netcf_if_addrinfo(netcf_if *, netcf_if_addrinfo *) - get
> >         address info, i.e. IPv4 and/or IPv6 addresses assigned to the
> >         interface
> > 
> > One wrinkle is that netcf operates at the level of 'connections', not
> > with individual interfaces, e.g. when a physical NIC eth0 is enslaved to
> > a bridge br0, only the bridge is currently visible through the netcf
> > API. So for statistics gathering, you'd only see the statistics for br0
> > - if statistics for individual devices on the bridge are needed, we can
> > either report all of them in netcf_if_stats, or provide a mechanism to
> > get at the subinterfaces so that netcf_if_stats etc. can be called
> > separately for br0 and eth0.
> 
> Hmm, this seems wrong to me. 'connections' are an application level
> concept. The libvirt API should be exposing all the interfaces on 
> the host, so you should see all the br0, bond0, and eth0  & eth1
> devices for a bridge on top of a bond.  An application using libvirt
> can filter this to only show the logical 'connections' if required.
> 
> If you start out with a fresh machine and virConnectListInterfaces
> gives you back 2 objects for 'eth0' and 'eth1', I would not expect
> these objects to disappear from the API when I created a 'bond0' out
> of them.

Actually I'm going to possibly disagree with myself now :-)

I was mixing up the concept of physical interfaces vs logical
interfaces.  Our node device APIs already  provide the ability
to enumerate all physical interfaces, so there's no need to dup
that in the inteface APIs. So yes the virInterface APIs only need
to show the logical configured interfaces, eg just the br0 and
not the eth0 underneath it. The statistics would be reported 
wrt the br0 device - AFAICT there's no need to report statistics
wrt to the underlying eth0 device  - at least not in the context
of virt-management.  For general non-virt host management you
might care about underling eth0 devices eg to see how a bond
device is working, but that could be out of scope of libvirt
and the job of a general OS monitoring app


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list