Subject: Re: [OPSAWG] Hypervisor MIB document

From: Juergen Schoenwaelder <[email-masked]>
Date: Tue, 24 Apr 2012 12:29:25 +0200

Robert,

I am not sure what to do here. More inline...

On Wed, Mar 28, 2012 at 08:50:40AM -0400, Robert Story wrote:
 
> JS> > Most hypervisors have multiple network configurations available. An
> JS> > interface may be bridged to a hosy interface, use NAT on a host
> JS> > interface, or be a private network (which may or may not be shared
> JS> > with other VMs). I think there should be a vmNetTable. The vmIfTable
> JS> > should have a column indication which network, if any, it is attached
> JS> > to.
> JS> 
> JS> Can you elaborate? What would be in the vmNetTable?
> 
>  vmNetIndex - index of network
>  vmNetName - name
>  vmNetDesc (optional)
>  vmNetPhysIfIndex - ifIndex of physical interface (or 0 if none)
>  vmNetifType - vmNetNAT(0), vmNetPublicBridge(1), vmNetPrivateBridge(2)

I am not sure what the difference between public bridge and private
bridge is. My understanding is that we have at least the following
options:

a) The hypervisor emulates a bridge and attaches VMs to the bridge.
   This is a pure layer two solution.

b) The hypervisor emulates a router and attaches VMs by routing
   traffic to them. This is a layer three solution. There are two
   sub-options:

b1) The router has an assigned dedicates IP address space for this
    purpose.

b2) The router uses a NAT function to provide (NAT limited)
    connectivity.

   Both, b1 and b2 might be combined with a bridge in the hypervisor
   that provides direct connectivity between the VMs.

This is what I get out of the documentation I have seen (although not
fully clear since terminology tends to differ). Anyway, is this a
suitable view of the world? Is there stuff missing?

> Usually these virtual network offer DHCP addresses to guests, so it might
> be useful to have that configuration information available too, either in
> additional columns or in another table.
> 
> The vmIfTable would then look something like
> 
>   vmIfIndex - index of virtual interface; no relation to ifIndex
>   vmGuestIndex - index of guest to which interface is assigned
>   vmNetIndex - index of network to which interface is assigned
>   vmIfState - vmIfConnected(0), vmIfDisconnected(0)
>   vmIfPhysAddr
> 
> I don't think that guest or network index should be part of the index for
> this table, as either one can be changed at any time.

I am confused about a virtual interface that has no relation to an
ifIndex identifiable interface. How is that going to work? How does
the hypervisor forward traffic (independent of whether forwarding is
done via layer two or layer three) to the VM if there is no interface?

I am also unsure what the definition of vmIfConnected and
vmIfDisconnected would be? What makes an interface connected in the
above scenarios a), b1), and b2)?

> It may be useful to have a few convenience tables:
> 
> * vmGuestIfTable { vmGuestIndex, vmGuestIfIndex } vmNetIndex
> * vmNetIfTable { vmNetIndex, vmIfIndex} vmGuestIndex

I guess I am still not totally clear what the vmNetTable really
represents.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1, 28759 Bremen, Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>