Subject: [OPSAWG] FW: vm mib notifications

From: Tina TSOU <[email-masked]>
Date: Tue, 7 May 2013 20:31:20 +0000

Dear Michael et al,
I move the discussion over to OPSAWG mailing list.
Based on the feedback I got from some readers, I think we need to clarify whether this draft supports only type 1 hypervisor (directly on bear metal) or if it does type 2 hypervisor (indirectly) as well, and if the draft was written with both types of hypervisors.

Thank you,
Tina

> -----Original Message-----
> From: Michael MacFaden [mailto:[email-masked]]
> Sent: 2013年5月6日 14:42
> To: Juergen Schoenwaelder
> Cc: [email-masked]
> Subject: Re: vm mib notifications
> 
> 
> Attached please find my suggested patch to the draft-asai-vmm-mib-03.txt
> 
> In short:
> 
> 1. Introduce a new TC called VirtualMachineList. It
>    is a clone of Q-BRIDGE-MIB PortList
> 
> 2. Introduce a new managed object, vmBulkNotificationsEnabled, to report
> which type
>    of events to receive, either bulk or existing per vm notifications.
> 
> 3. Adds a parallel set of notifications to match: vmRuning, vmShutdown,
> vmPaused, vmSuspended, vmCrashed, vmDeleted that only send a new
> accessible-for-notify variable vmAffectedVMs using SYNTAX
> VirtualMachineList.
> 
> Lastly,  I've added some comments (grep mrm) about what clients should
> expect with vmName, vmUUID, vmIndex based on my prior deployment
> experience with the similarly structured VMWARE-VMINFO-MIB.
> 
> Once patched, the VM-MIB should be syntactically correct to smilint -l9.
> Here are the pre-existing diagnostics before/after the patch.
> 
> $smilint -l 9 ./UUID-TC-MIB ./VM-MIB
> ./UUID-TC-MIB:71: warning: current type `UUID' is not referenced in this
> module
> ./UUID-TC-MIB:82: warning: current type `UUIDorZero' is not referenced in
> this module
> 
> 
> Thanks
> Mike MacFaden
> 

--- draft-asai-vmm-mib-03.txt	2013-05-06 09:57:55.000487000 -0700
+++ draft-mrm-vmm-mib-01.txt	2013-05-06 13:12:01.000086000 -0700
@@ -520,7 +520,7 @@
            FROM SNMPv2-SMI
        OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP
            FROM SNMPv2-CONF
-       TEXTUAL-CONVENTION, PhysAddress
+       TEXTUAL-CONVENTION, PhysAddress, TruthValue
            FROM SNMPv2-TC
        SnmpAdminString
            FROM SNMP-FRAMEWORK-MIB
@@ -943,6 +943,23 @@
                of the virtual machine to the next re-initialization."
         SYNTAX      Integer32 (1..2147483647)
 
+   VirtualMachineList ::= TEXTUAL-CONVENTION
+       DISPLAY-HINT "1x"
+       STATUS       current
+       DESCRIPTION
+        "Each octet within this value specifies a set of eight
+        Virtual Machine vmIndex, with the first octet specifying
+        Virtual Machine 1 through 8, the second octet specifying
+        Virtual Machine 9 through 16, etc.
+        Within each octet, the most significant bit represents
+        the lowest numbered vmIndex, and the least significant bit
+        represents the highest numbered vmIndex.  Thus, each Virtual
+        Machine of the host is represented by a single bit within the
+        value of this object.  If that bit has a value of '1',
+        then that Virtual Machine is included in the set of Virtual Machines;
+        the Virtual Machine is not included if its bit has a value of '0'."
+        SYNTAX      OCTET STRING
+        
 
    -- The hypervisor group
    --
@@ -1092,7 +1109,10 @@
        STATUS       current
        DESCRIPTION
                "A unique value, greater than zero, identifying the
-               virtual machine."
+               virtual machine. The value assigned to a given Virtual
+               machine may not persist across a reboot. A command generator
+               must use the vmUUID to identify a given Virtual Machine of
+               interest. (mrm -note- same design as IF-MIB/ifIndex)"
        ::= { vmEntry 1 }
 
    vmName OBJECT-TYPE
@@ -1109,7 +1129,10 @@
        STATUS       current
        DESCRIPTION
                "The virtual machine's 128-bit UUID or the zero-length
-               string when a UUID is not available."
+               string when a UUID is not available. The UUID if set
+               must uniquely identify a VM from all other Virtual Machines
+               in an administrative region. (*mrm -note- explain
+               case when this value may be empty."
        ::= { vmEntry 3 }
 
    vmOSType OBJECT-TYPE
@@ -1702,6 +1725,25 @@

    -- Notification definitions:
+
+   vmBulkNotificationsEnabled OBJECT-TYPE
+       SYNTAX       TruthValue
+       MAX-ACCESS   read-only
+       STATUS       current
+       DESCRIPTION
+               "Indicates if notification generator will send notifications
+                per VM or per set of VMs."
+       ::= { vmObjects 100 }
+   
+   vmAffectedVMs OBJECT-TYPE
+       SYNTAX       VirtualMachineList
+       MAX-ACCESS   accessible-for-notify
+       STATUS       current
+       DESCRIPTION
+               "A complete list of Virtual Machines whose state has changed.
+                This object is the only object sent with bulk notifications."
+       ::= { vmObjects 101 }
+      
    vmRunning NOTIFICATION-TYPE
        OBJECTS      {
                        vmName,
@@ -1710,15 +1752,29 @@
                     }
        STATUS       current
        DESCRIPTION
-               "This notification is generated when the operational
+              "This notification is generated when the operational
                state of a virtual machine has been changed to
                `running' from some other state.  The other state is
                indicated by the included value of vmOperState."
        ::= { vmNotifications 1 }
 
+   vmsRunning NOTIFICATION-TYPE
+       OBJECTS      {
+                       vmAffectedVMs
+                    }
+       STATUS       current
+       DESCRIPTION
+               "This notification is generated when the operational
+                state of one or more virtual machine has been changed to
+                `running' from a all prior states except for 'running.'
+                Management stations are encouraged to subsequently
+                poll the subset of VMs of interest for vmOperState."
+       ::= { vmNotifications 10 }
+       
+
    vmShutdown NOTIFICATION-TYPE
        OBJECTS      {
-                       vmName,
+                       vmName,       
                        vmUUID,
                        vmOperState
                     }
@@ -1730,6 +1786,18 @@
                indicated by the included value of vmOperState."
        ::= { vmNotifications 2 }
 
+   vmsShutdown NOTIFICATION-TYPE
+       OBJECTS      {
+                      vmAffectedVMs
+                    }
+       STATUS       current
+       DESCRIPTION
+               "This notification is generated when the operational
+               state of one or more virtual machine has been changed to
+               `shutdown' from a state other than `shutdown`.
+                Management stations are encouraged to subsequently
+                poll the subset of VMs of interest for vmOperState."
+       ::= { vmNotifications 20 }

@@ -1752,6 +1820,19 @@
                indicated by the included value of vmOperState."
        ::= { vmNotifications 3 }
 
+   vmsPaused NOTIFICATION-TYPE
+       OBJECTS      {
+                       vmAffectedVMs
+                    }
+       STATUS       current
+       DESCRIPTION
+               "This notification is generated when the operational
+               state of one or more virtual machines have been changed to
+               `paused' from a state other than `paused.`
+                Management stations are encouraged to subsequently
+                poll the subset of VMs of interest for vmOperState."
+       ::= { vmNotifications 30 }
+       
    vmSuspended NOTIFICATION-TYPE
        OBJECTS      {
                        vmName,
@@ -1766,6 +1847,19 @@
                indicated by the included value of vmOperState."
        ::= { vmNotifications 4 }
 
+   vmsSuspended NOTIFICATION-TYPE
+       OBJECTS      {
+                       vmAffectedVMs
+                    }
+       STATUS       current
+       DESCRIPTION
+               "This notification is generated when the operational
+               state of one or more virtual machines have been changed to
+               `suspended' from a state other than 'suspended.' 
+                Management stations are encouraged to subsequently
+                poll the subset of VMs of interest for vmOperState."
+       ::= { vmNotifications 40 }
+       
    vmCrashed NOTIFICATION-TYPE
        OBJECTS      {
                        vmName,
@@ -1780,6 +1874,18 @@
                vmOperState."
        ::= { vmNotifications 5 }
 
+   vmsCrashed NOTIFICATION-TYPE
+       OBJECTS      {
+                       vmAffectedVMs
+                    }
+       STATUS       current
+       DESCRIPTION
+               "This notification is generated when one or more virtual
+                machines have been crashed. 
+                Management stations are encouraged to subsequently
+                poll the subset of VMs of interest for vmOperState."
+       ::= { vmNotifications 50 }
+       
    vmDeleted NOTIFICATION-TYPE
        OBJECTS      {
                        vmName,
@@ -1798,11 +1904,24 @@
        STATUS       current
        DESCRIPTION
                "This notification is generated when a virtual machine
-               has been deleted. The previos state of the virtual
+               has been deleted. The prior state of the virtual
                machine is indicated by the included value of
                vmOperState."
        ::= { vmNotifications 6 }
 
+   vmsDeleted NOTIFICATION-TYPE
+       OBJECTS      {
+                       vmAffectedVMs
+                    }
+       STATUS       current
+       DESCRIPTION
+               "This notification is generated when one or more
+                virtual machines have been deleted.
+                Management stations are encouraged to subsequently
+                poll the subset of VMs of interest for vmOperState."
+
+       ::= { vmNotifications 60 }
+       
    -- Compliance definitions:
    vmGroups       OBJECT IDENTIFIER ::= { vmConformance 1 }
    vmCompliances  OBJECT IDENTIFIER ::= { vmConformance 2 }
@@ -1822,6 +1941,13 @@
            vmNetworkGroup,
            vmNotificationGroup
        }
+       GROUP vmBulkNotificationsVariablesGroup
+       DESCRIPTION
+            "Necessary only if vmNotificationOptionalGroup is implemented."
+       GROUP  vmNotificationOptionalGroup
+       DESCRIPTION
+            "Support for bulk notifications is optional. If not
+             implemented then vmBulkNotificationsEnabled must report false(2)"
        ::= { vmCompliances 1 }
 
    vmReadOnlyCompliances MODULE-COMPLIANCE
@@ -1891,7 +2017,8 @@
            vmHvObjectID,
            vmHvUpTime,
            vmNumber,
-           vmTableLastChange
+           vmTableLastChange,
+           vmBulkNotificationsEnabled
        }
        STATUS       current
        DESCRIPTION
@@ -2010,17 +2137,42 @@
        }
        STATUS       current
        DESCRIPTION
-
+          "A collection of notifications for virtual machines
+           controlled by a hypervisor."
+       ::= { vmGroups 7 }

 Asai, et al.            Expires October 12, 2013               [Page 36]
 
 Internet-Draft       Virtual Machine Monitoring MIB           April 2013
 
+   vmBulkNotificationsVariablesGroup OBJECT-GROUP
+   OBJECTS {
+       vmAffectedVMs
+   }
+   STATUS       current
+   DESCRIPTION
+       "The variables used in vmNotificationOptionalGroup
+        virtual network interfaces controlled by a hypervisor."
+    ::= { vmGroups 8 }
+
+
+   vmNotificationOptionalGroup NOTIFICATION-GROUP
+    NOTIFICATIONS {   
+           vmsRunning,
+           vmsShutdown,
+           vmsPaused,
+           vmsSuspended,
+           vmsCrashed,
+           vmsDeleted
+       }
+       STATUS       current
+       DESCRIPTION
+          "A collection of notifications for bulk notification
+           of changes to virtual machine state (vmOperState) as
+           reported by a given hypervisor."
+       ::= { vmGroups 9 }
 
-               "A collection of notifications for virtual machines
-               controlled by a hypervisor."
-       ::= { vmGroups 7 }
 
    END

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Wed, 8 May 2013 09:42:20 +0200

On Tue, May 07, 2013 at 08:31:20PM +0000, Tina TSOU wrote:

> Based on the feedback I got from some readers, I think we need to
> clarify whether this draft supports only type 1 hypervisor (directly
> on bear metal) or if it does type 2 hypervisor (indirectly) as well,
> and if the draft was written with both types of hypervisors.

Tina,

can you please clarify what you mean by type 1 hypervisor (directly on
bear metal) or if it does type 2 hypervisor (indirectly)?

/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/>

---

From: "Black, David" <[email-masked]>
Date: Wed, 8 May 2013 11:36:37 -0400

A type 1 hypervisor is effectively an Operating System - it runs directly on the hardware.
A type 2 hypervisor is effectively an application - it runs on an OS that runs on hardware.

More explanation and diagrams here: https://en.wikipedia.org/wiki/Hypervisor

Thanks,
--David

> From: [email-masked] [mailto:[email-masked]] On Behalf Of
> Juergen Schoenwaelder
> Sent: Wednesday, May 08, 2013 3:42 AM
> To: Tina TSOU
> Cc: [email-masked]
> Subject: Re: [OPSAWG] FW: vm mib notifications
> 
> _______________________________________________
> OPSAWG mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/opsawg

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Thu, 9 May 2013 00:54:08 +0200

Thanks.

I do not think the MIB module makes any assumptions that make it
specific to type 1 or type 2 hypervisors and reading the wiki page, it
seems the boundary between the two types is somewhat fuzzy anyway.

One of the goals is to allow implementation based on libvirt and I
leave it as an exercise to the readers to classify the virtualization
systems supported by libvirt as type 1 or type 2. ;-)

http://libvirt.org/

/js

---

From: Keiichi SHIMA <[email-masked]>
Date: Mon, 13 May 2013 14:39:57 +0900

Hello all,

> seems the boundary between the two types is somewhat fuzzy anyway.

I also don't think we need to distinguish type 1 and 2 in the draft.  Both types can cover the information items defined in our MIB draft.

This discussion reminds me of one another topic,  a container, such as LXC.  It is a kind of virtualization system well deployed recently, but we don't consider the type deeply at this moment in the draft.  In my opinion, I want to put the third type of virtualization monitor system aside, since it has a slightly different properties compared to the type 1 and 2 monitors.

---
Keiichi SHIMA (島 慶一)
WIDE project <[email-masked]>
Research Laboratory, IIJ Innovation Institute, Inc <[email-masked]>