Skip to main content

Management Information Base for Virtual Machines Controlled by a Hypervisor
RFC 7666

Document Type RFC - Proposed Standard (October 2015) Errata
Authors Hirochika Asai , Michael MacFaden , Jürgen Schönwälder , Keiichi Shima , Tina Tsou (Ting ZOU)
Last updated 2020-01-21
RFC stream Internet Engineering Task Force (IETF)
Formats
Additional resources Mailing list discussion
IESG Responsible AD Joel Jaeggli
Send notices to (None)
RFC 7666
quot;
       ::= { vmCpuAffinityEntry 3 }

   -- The virtual storage devices on each virtual machine.  This
   -- document defines some overlapped objects with hrStorage in
   -- HOST-RESOURCES-MIB (RFC 2790), because virtual resources are
   -- allocated from the hypervisor's resources, which is the 'host
   -- resources'.
   vmStorageTable OBJECT-TYPE
       SYNTAX       SEQUENCE OF VmStorageEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
               "The conceptual table of virtual storage devices
               attached to the virtual machine."
       ::= { vmObjects 7 }

   vmStorageEntry OBJECT-TYPE
       SYNTAX       VmStorageEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
               "An entry for one virtual storage device attached to the
               virtual machine."
       INDEX { vmStorageVmIndex, vmStorageIndex }
       ::= { vmStorageTable 1 }

   VmStorageEntry ::=
       SEQUENCE {
           vmStorageVmIndex        VirtualMachineIndexOrZero,
           vmStorageIndex          VirtualMachineStorageIndex,
           vmStorageParent         Integer32,
           vmStorageSourceType     VirtualMachineStorageSourceType,
           vmStorageSourceTypeString
                                   SnmpAdminString,
           vmStorageResourceID     SnmpAdminString,
           vmStorageAccess         VirtualMachineStorageAccess,
           vmStorageMediaType      IANAStorageMediaType,
           vmStorageMediaTypeString
                                   SnmpAdminString,
           vmStorageSizeUnit       Integer32,
           vmStorageDefinedSize    Integer32,
           vmStorageAllocatedSize  Integer32,
           vmStorageReadIOs        Counter64,
           vmStorageWriteIOs       Counter64,

Asai, et al.                 Standards Track                   [Page 25]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

           vmStorageReadOctets     Counter64,
           vmStorageWriteOctets    Counter64,
           vmStorageReadLatency    Counter64,
           vmStorageWriteLatency   Counter64
       }

   vmStorageVmIndex OBJECT-TYPE
       SYNTAX       VirtualMachineIndexOrZero
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
               "This value identifies the virtual machine (guest) this
               storage device has been allocated to.  The value zero
               indicates that the storage device is currently not
               allocated to any virtual machines."
       ::= { vmStorageEntry 1 }

   vmStorageIndex OBJECT-TYPE
       SYNTAX       VirtualMachineStorageIndex
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
               "A unique value identifying a virtual storage device
               allocated to the virtual machine."
       ::= { vmStorageEntry 2 }

   vmStorageParent OBJECT-TYPE
       SYNTAX       Integer32 (0..2147483647)
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The value of hrStorageIndex, which is the parent (i.e.,
               physical) device of this virtual device on systems
               implementing the HOST-RESOURCES-MIB.  The value zero
               denotes this virtual device is not any child
               represented in the hrStorageTable."
       ::= { vmStorageEntry 3 }

   vmStorageSourceType OBJECT-TYPE
       SYNTAX       VirtualMachineStorageSourceType
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The source type of the virtual storage device."
       ::= { vmStorageEntry 4 }

   vmStorageSourceTypeString OBJECT-TYPE
       SYNTAX       SnmpAdminString (SIZE (0..255))

Asai, et al.                 Standards Track                   [Page 26]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "A (detailed) textual string of the source type of the
               virtual storage device.  For example, this represents
               the specific format name of the sparse file."
       ::= { vmStorageEntry 5 }

   vmStorageResourceID OBJECT-TYPE
       SYNTAX       SnmpAdminString (SIZE (0..255))
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "A textual string that represents the resource
               identifier of the virtual storage.  For example, this
               contains the path to the disk image file that
               corresponds to the virtual storage."
       ::= { vmStorageEntry 6 }

   vmStorageAccess OBJECT-TYPE
       SYNTAX       VirtualMachineStorageAccess
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The access permission of the virtual storage device."
       ::= { vmStorageEntry 7 }

   vmStorageMediaType OBJECT-TYPE
       SYNTAX       IANAStorageMediaType
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The media type of the virtual storage device."
       ::= { vmStorageEntry 8 }

   vmStorageMediaTypeString OBJECT-TYPE
       SYNTAX       SnmpAdminString (SIZE (0..255))
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "A (detailed) textual string of the virtual storage
               media.  For example, this represents the specific driver
               name of the emulated media such as 'IDE' and 'SCSI'."
       ::= { vmStorageEntry 9 }

   vmStorageSizeUnit OBJECT-TYPE
       SYNTAX       Integer32 (1..2147483647)
       MAX-ACCESS   read-only

Asai, et al.                 Standards Track                   [Page 27]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

       STATUS       current
       DESCRIPTION
               "The multiplication unit in bytes for
               vmStorageDefinedSize and vmStorageAllocatedSize.  For
               example, when this value is 1048576, the storage size
               unit for vmStorageDefinedSize and vmStorageAllocatedSize
               is MiB."
       ::= { vmStorageEntry 10 }

   vmStorageDefinedSize OBJECT-TYPE
       SYNTAX       Integer32 (-1|0..2147483647)
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The defined virtual storage size defined in the unit
               designated by vmStorageSizeUnit.  If this information is
               not available, this value MUST be -1."
       ::= { vmStorageEntry 11 }

   vmStorageAllocatedSize OBJECT-TYPE
       SYNTAX       Integer32 (-1|0..2147483647)
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The storage size allocated to the virtual storage from
               a physical storage in the unit designated by
               vmStorageSizeUnit.  When the virtual storage is block
               device or raw file, this value and vmStorageDefinedSize
               are supposed to equal.  This value MUST NOT be different
               from vmStorageDefinedSize when vmStorageSourceType is
               'block' or 'raw'.  If this information is not available,
               this value MUST be -1."
       ::= { vmStorageEntry 12 }

   vmStorageReadIOs OBJECT-TYPE
       SYNTAX       Counter64
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The number of read I/O requests.

               Discontinuities in the value of this counter can occur
               at re-initialization of the hypervisor and
               administrative state (vmAdminState) changes of the
               virtual machine."
       ::= { vmStorageEntry 13 }

   vmStorageWriteIOs OBJECT-TYPE

Asai, et al.                 Standards Track                   [Page 28]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

       SYNTAX       Counter64
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The number of write I/O requests.

               Discontinuities in the value of this counter can occur
               at re-initialization of the hypervisor and
               administrative state (vmAdminState) changes of the
               virtual machine."
       ::= { vmStorageEntry 14 }

   vmStorageReadOctets OBJECT-TYPE
       SYNTAX       Counter64
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The total number of bytes read from this device.

               Discontinuities in the value of this counter can occur
               at re-initialization of the hypervisor and
               administrative state (vmAdminState) changes of the
               virtual machine."
       ::= { vmStorageEntry 15 }

   vmStorageWriteOctets OBJECT-TYPE
       SYNTAX       Counter64
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The total number of bytes written to this device.

               Discontinuities in the value of this counter can occur
               at re-initialization of the hypervisor and
               administrative state (vmAdminState) changes of the
               virtual machine."
       ::= { vmStorageEntry 16 }

   vmStorageReadLatency OBJECT-TYPE
       SYNTAX       Counter64
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The total number of microseconds read requests have
               been queued for this device.

               This would typically be implemented by storing the high
               precision system timestamp of when the request is

Asai, et al.                 Standards Track                   [Page 29]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

               received from the virtual machine with the request, the
               difference between this initial timestamp and the time
               at which the requested operation has completed SHOULD be
               converted to microseconds and accumulated.

               Discontinuities in the value of this counter can occur at
               re-initialization of the hypervisor and administrative
               state (vmAdminState) changes of the virtual machine."
       ::= { vmStorageEntry 17 }

   vmStorageWriteLatency OBJECT-TYPE
       SYNTAX       Counter64
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The total number of microseconds write requests have
               been queued for this device.

               This would typically be implemented by storing the high
               precision system timestamp of when the request is
               received from the virtual machine with the request; the
               difference between this initial timestamp and the time
               at which the requested operation has completed SHOULD be
               converted to microseconds and accumulated.

               Discontinuities in the value of this counter can occur
               at re-initialization of the hypervisor and
               administrative state (vmAdminState) changes of the
               virtual machine."
       ::= { vmStorageEntry 18 }

   -- The virtual network interfaces on each virtual machine.
   vmNetworkTable OBJECT-TYPE
       SYNTAX       SEQUENCE OF VmNetworkEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
               "The conceptual table of virtual network interfaces
               attached to the virtual machine."
       ::= { vmObjects 8 }

   vmNetworkEntry OBJECT-TYPE
       SYNTAX       VmNetworkEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
               "An entry for one virtual network interface attached to

Asai, et al.                 Standards Track                   [Page 30]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

               the virtual machine."
       INDEX { vmIndex, vmNetworkIndex }
       ::= { vmNetworkTable 1 }

   VmNetworkEntry ::=
       SEQUENCE {
           vmNetworkIndex          VirtualMachineNetworkIndex,
           vmNetworkIfIndex        InterfaceIndexOrZero,
           vmNetworkParent         InterfaceIndexOrZero,
           vmNetworkModel          SnmpAdminString,
           vmNetworkPhysAddress    PhysAddress
       }

   vmNetworkIndex OBJECT-TYPE
       SYNTAX       VirtualMachineNetworkIndex
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
               "A unique value identifying a virtual network interface
               allocated to the virtual machine."
       ::= { vmNetworkEntry 1 }

   vmNetworkIfIndex OBJECT-TYPE
       SYNTAX       InterfaceIndexOrZero
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The value of ifIndex, which corresponds to this virtual
               network interface.  If this device is not represented in
               the ifTable, then this value MUST be zero."
       ::= { vmNetworkEntry 2 }

   vmNetworkParent OBJECT-TYPE
       SYNTAX       InterfaceIndexOrZero
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The value of ifIndex, which corresponds to the parent
               (i.e., physical) device of this virtual device.  The
               value zero denotes this virtual device is not any
               child represented in the ifTable."
       ::= { vmNetworkEntry 3 }

   vmNetworkModel OBJECT-TYPE
       SYNTAX       SnmpAdminString (SIZE (0..255))
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION

Asai, et al.                 Standards Track                   [Page 31]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

               "A textual string containing the (emulated) model of the
               virtual network interface.  For example, this value is
               'virtio' when the emulation driver model is virtio."
       ::= { vmNetworkEntry 4 }

   vmNetworkPhysAddress OBJECT-TYPE
       SYNTAX       PhysAddress
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION
               "The Media Access Control (MAC) address of the virtual
               network interface."
       ::= { vmNetworkEntry 5 }

   -- Notification definitions:

   vmPerVMNotificationsEnabled OBJECT-TYPE
       SYNTAX       TruthValue
       MAX-ACCESS   read-write
       STATUS       current
       DESCRIPTION
               "Indicates if the notification generator will send
               notifications per virtual machine.  Changes to this
               object MUST NOT persist across re-initialization of
               the management system, e.g., SNMP agent."
       ::= { vmObjects 9 }

   vmBulkNotificationsEnabled OBJECT-TYPE
       SYNTAX       TruthValue
       MAX-ACCESS   read-write
       STATUS       current
       DESCRIPTION
               "Indicates if the notification generator will send
               notifications per set of virtual machines.  Changes to
               this object MUST NOT persist across re-initialization of
               the management system, e.g., SNMP agent."
       ::= { vmObjects 10 }

   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 11 }

Asai, et al.                 Standards Track                   [Page 32]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

   vmRunning NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of a virtual machine has been changed to
               running(4) from some other state.  The other state is
               indicated by the included value of vmOperState."
       ::= { vmNotifications 1 }

   vmShuttingdown NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of a virtual machine has been changed to
               shuttingdown(10) from some other state.  The other state
               is indicated by the included value of vmOperState."
       ::= { vmNotifications 2 }

   vmShutdown NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of a virtual machine has been changed to
               shutdown(11) from some other state.  The other state is
               indicated by the included value of vmOperState."
       ::= { vmNotifications 3 }

   vmPaused NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }

Asai, et al.                 Standards Track                   [Page 33]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of a virtual machine has been changed to
               paused(8) from some other state.  The other state is
               indicated by the included value of vmOperState."
       ::= { vmNotifications 4 }

   vmSuspending NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of a virtual machine has been changed to
               suspending(5) from some other state.  The other state is
               indicated by the included value of vmOperState."
       ::= { vmNotifications 5 }

   vmSuspended NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of a virtual machine has been changed to
               suspended(6) from some other state.  The other state is
               indicated by the included value of vmOperState."
       ::= { vmNotifications 6 }

   vmResuming NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of a virtual machine has been changed to
               resuming(7) from some other state.  The other state is
               indicated by the included value of vmOperState."

Asai, et al.                 Standards Track                   [Page 34]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

       ::= { vmNotifications 7 }

   vmMigrating NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of a virtual machine has been changed to
               migrating(9) from some other state.  The other state is
               indicated by the included value of vmOperState."
       ::= { vmNotifications 8 }

   vmCrashed NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when a virtual machine
               has been crashed.  The previous state of the virtual
               machine is indicated by the included value of
               vmOperState."
       ::= { vmNotifications 9 }

   vmDeleted NOTIFICATION-TYPE
       OBJECTS      {
                       vmName,
                       vmUUID,
                       vmOperState,
                       vmPersistent
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when a virtual machine
               has been deleted.  The prior state of the virtual
               machine is indicated by the included value of
               vmOperState."
       ::= { vmNotifications 10 }

   vmBulkRunning NOTIFICATION-TYPE
       OBJECTS      {
                       vmAffectedVMs

Asai, et al.                 Standards Track                   [Page 35]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of one or more virtual machines has been changed
               to running(4) from any prior state, except for
               running(4).  Management stations are encouraged to
               subsequently poll the subset of virtual machines of
               interest for vmOperState."
       ::= { vmNotifications 11 }

   vmBulkShuttingdown NOTIFICATION-TYPE
       OBJECTS      {
                      vmAffectedVMs
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of one or more virtual machines has been changed
               to shuttingdown(10) from a state other than
               shuttingdown(10).  Management stations are encouraged to
               subsequently poll the subset of virtual machines of
               interest for vmOperState."
       ::= { vmNotifications 12 }

   vmBulkShutdown 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(11) from a state other than shutdown(11).
               Management stations are encouraged to subsequently poll
               the subset of virtual machines of interest for
               vmOperState."
       ::= { vmNotifications 13 }

   vmBulkPaused NOTIFICATION-TYPE
       OBJECTS      {
                       vmAffectedVMs
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of one or more virtual machines has been changed
               to paused(8) from a state other than paused(8).

Asai, et al.                 Standards Track                   [Page 36]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

               Management stations are encouraged to subsequently poll
               the subset of virtual machines of interest for
               vmOperState."
       ::= { vmNotifications 14 }

   vmBulkSuspending NOTIFICATION-TYPE
       OBJECTS      {
                       vmAffectedVMs
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of one or more virtual machines has been changed
               to suspending(5) from a state other than suspending(5).
               Management stations are encouraged to subsequently poll
               the subset of virtual machines of interest for
               vmOperState."
       ::= { vmNotifications 15 }

   vmBulkSuspended NOTIFICATION-TYPE
       OBJECTS      {
                       vmAffectedVMs
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of one or more virtual machines has been changed
               to suspended(6) from a state other than suspended(6).
               Management stations are encouraged to subsequently poll
               the subset of virtual machines of interest for
               vmOperState."
       ::= { vmNotifications 16 }

   vmBulkResuming NOTIFICATION-TYPE
       OBJECTS      {
                       vmAffectedVMs
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of one or more virtual machines has been changed
               to resuming(7) from a state other than resuming(7).
               Management stations are encouraged to subsequently poll
               the subset of virtual machines of interest for
               vmOperState."
       ::= { vmNotifications 17 }

   vmBulkMigrating NOTIFICATION-TYPE

Asai, et al.                 Standards Track                   [Page 37]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

       OBJECTS      {
                       vmAffectedVMs
                    }
       STATUS       current
       DESCRIPTION
               "This notification is generated when the operational
               state of one or more virtual machines has been changed
               to migrating(9) from a state other than migrating(9).
               Management stations are encouraged to subsequently poll
               the subset of virtual machines of interest for
               vmOperState."
       ::= { vmNotifications 18 }

   vmBulkCrashed 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 virtual
               machines of interest for vmOperState."
       ::= { vmNotifications 19 }

   vmBulkDeleted 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 virtual
               machines of interest for vmOperState."
       ::= { vmNotifications 20 }

   -- Compliance definitions:
   vmCompliances  OBJECT IDENTIFIER ::= { vmConformance 1 }
   vmGroups       OBJECT IDENTIFIER ::= { vmConformance 2 }

   vmFullCompliances MODULE-COMPLIANCE
       STATUS       current
       DESCRIPTION
               "Compliance statement for implementations supporting
               read/write access, according to the object definitions."
       MODULE     -- this module
       MANDATORY-GROUPS {

Asai, et al.                 Standards Track                   [Page 38]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

           vmHypervisorGroup,
           vmVirtualMachineGroup,
           vmCpuGroup,
           vmCpuAffinityGroup,
           vmStorageGroup,
           vmNetworkGroup
       }
       GROUP  vmPerVMNotificationOptionalGroup
       DESCRIPTION
               "Support for per-VM notifications is optional.  If not
               implemented, then vmPerVMNotificationsEnabled MUST report
               false(2)."
       GROUP  vmBulkNotificationsVariablesGroup
       DESCRIPTION
               "Necessary only if vmPerVMNotificationOptionalGroup is
               implemented."
       GROUP  vmBulkNotificationOptionalGroup
       DESCRIPTION
               "Support for bulk notifications is optional.  If not
               implemented, then vmBulkNotificationsEnabled MUST report
               false(2)."

       ::= { vmCompliances 1 }

   vmReadOnlyCompliances MODULE-COMPLIANCE
       STATUS       current
       DESCRIPTION
               "Compliance statement for implementations supporting
               only read-only access."
       MODULE     -- this module
       MANDATORY-GROUPS {
           vmHypervisorGroup,
           vmVirtualMachineGroup,
           vmCpuGroup,
           vmCpuAffinityGroup,
           vmStorageGroup,
           vmNetworkGroup
       }

       OBJECT vmPerVMNotificationsEnabled
       MIN-ACCESS   read-only
       DESCRIPTION
               "Write access is not required."

       OBJECT vmBulkNotificationsEnabled
       MIN-ACCESS   read-only
       DESCRIPTION
               "Write access is not required."

Asai, et al.                 Standards Track                   [Page 39]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

       ::= { vmCompliances 2 }

   vmHypervisorGroup OBJECT-GROUP
       OBJECTS {
           vmHvSoftware,
           vmHvVersion,
           vmHvObjectID,
           vmHvUpTime,
           vmNumber,
           vmTableLastChange,
           vmPerVMNotificationsEnabled,
           vmBulkNotificationsEnabled
       }
       STATUS       current
       DESCRIPTION
               "A collection of objects providing insight into the
               hypervisor itself."
        ::= { vmGroups 1 }

   vmVirtualMachineGroup OBJECT-GROUP
       OBJECTS {
           -- vmIndex
           vmName,
           vmUUID,
           vmOSType,
           vmAdminState,
           vmOperState,
           vmAutoStart,
           vmPersistent,
           vmCurCpuNumber,
           vmMinCpuNumber,
           vmMaxCpuNumber,
           vmMemUnit,
           vmCurMem,
           vmMinMem,
           vmMaxMem,
           vmUpTime,
           vmCpuTime
       }
       STATUS       current
       DESCRIPTION
               "A collection of objects providing insight into the
               virtual machines controlled by a hypervisor."
       ::= { vmGroups 2 }

   vmCpuGroup OBJECT-GROUP
       OBJECTS {
           -- vmCpuIndex,

Asai, et al.                 Standards Track                   [Page 40]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

           vmCpuCoreTime
       }
       STATUS       current
       DESCRIPTION
               "A collection of objects providing insight into the
               virtual machines controlled by a hypervisor."
       ::= { vmGroups 3 }

   vmCpuAffinityGroup OBJECT-GROUP
       OBJECTS {
           -- vmCpuPhysIndex,
           vmCpuAffinity
       }
       STATUS       current
       DESCRIPTION
               "A collection of objects providing insight into the
               virtual machines controlled by a hypervisor."
       ::= { vmGroups 4 }

   vmStorageGroup OBJECT-GROUP
       OBJECTS {
           -- vmStorageVmIndex,
           -- vmStorageIndex,
           vmStorageParent,
           vmStorageSourceType,
           vmStorageSourceTypeString,
           vmStorageResourceID,
           vmStorageAccess,
           vmStorageMediaType,
           vmStorageMediaTypeString,
           vmStorageSizeUnit,
           vmStorageDefinedSize,
           vmStorageAllocatedSize,
           vmStorageReadIOs,
           vmStorageWriteIOs,
           vmStorageReadOctets,
           vmStorageWriteOctets,
           vmStorageReadLatency,
           vmStorageWriteLatency
       }
       STATUS       current
       DESCRIPTION
               "A collection of objects providing insight into the
               virtual storage devices controlled by a hypervisor."
       ::= { vmGroups 5 }

   vmNetworkGroup OBJECT-GROUP
       OBJECTS {

Asai, et al.                 Standards Track                   [Page 41]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

           -- vmNetworkIndex,
           vmNetworkIfIndex,
           vmNetworkParent,
           vmNetworkModel,
           vmNetworkPhysAddress
       }
       STATUS       current
       DESCRIPTION
               "A collection of objects providing insight into the
               virtual network interfaces controlled by a hypervisor."
       ::= { vmGroups 6 }

   vmPerVMNotificationOptionalGroup NOTIFICATION-GROUP
       NOTIFICATIONS {
           vmRunning,
           vmShuttingdown,
           vmShutdown,
           vmPaused,
           vmSuspending,
           vmSuspended,
           vmResuming,
           vmMigrating,
           vmCrashed,
           vmDeleted
       }
       STATUS       current
       DESCRIPTION
               "A collection of notifications for per-VM notification
               of changes to virtual machine state (vmOperState) as
               reported by a hypervisor."
       ::= { vmGroups 7 }

   vmBulkNotificationsVariablesGroup OBJECT-GROUP
       OBJECTS {
           vmAffectedVMs
       }
       STATUS       current
       DESCRIPTION
               "The variables used in vmBulkNotificationOptionalGroup
               virtual network interfaces controlled by a hypervisor."
       ::= { vmGroups 8 }

   vmBulkNotificationOptionalGroup NOTIFICATION-GROUP
       NOTIFICATIONS {
           vmBulkRunning,
           vmBulkShuttingdown,
           vmBulkShutdown,
           vmBulkPaused,

Asai, et al.                 Standards Track                   [Page 42]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

           vmBulkSuspending,
           vmBulkSuspended,
           vmBulkResuming,
           vmBulkMigrating,
           vmBulkCrashed,
           vmBulkDeleted
       }
       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 }

   END

6.2.  IANA-STORAGE-MEDIA-TYPE-MIB

   IANA-STORAGE-MEDIA-TYPE-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, mib-2
           FROM SNMPv2-SMI
       TEXTUAL-CONVENTION
           FROM SNMPv2-TC;

   ianaStorageMediaTypeMIB MODULE-IDENTITY
       LAST-UPDATED "201510120000Z"        -- 12 October 2015
       ORGANIZATION "IANA"
       CONTACT-INFO
               "Internet Assigned Numbers Authority
                Postal: ICANN
                        12025 Waterfront Drive, Suite 300
                        Los Angeles, CA 90094-2536
                        United States
                Tel:    +1 310-301-5800
                Email: iana@iana.org"

       DESCRIPTION
               "This MIB module defines Textual Conventions
               representing the media type of a storage device.

               Copyright (c) 2015 IETF Trust and the persons identified
               as authors of the code.  All rights reserved.

               Redistribution and use in source and binary forms, with
               or without modification, is permitted pursuant to, and
               subject to the license terms contained in, the

Asai, et al.                 Standards Track                   [Page 43]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

               Simplified BSD License set forth in Section 4.c of the
               IETF Trust's Legal Provisions Relating to IETF Documents
               (http://trustee.ietf.org/license-info)."

          REVISION "201510120000Z"        -- 12 October 2015
          DESCRIPTION
                  "The initial version of this MIB, published as
                  RFC 7666."
          ::= { mib-2 237 }

   IANAStorageMediaType ::= TEXTUAL-CONVENTION
       STATUS       current
       DESCRIPTION
               "The media type of a storage device:

               unknown(1)     The media type is unknown, e.g., because
                              the implementation failed to obtain the
                              media type from the hypervisor.

               other(2)       The media type is other than those
                              defined in this conversion.

               hardDisk(3)    The media type is hard disk.

               opticalDisk(4) The media type is optical disk.

               floppyDisk(5)  The media type is floppy disk."

       SYNTAX       INTEGER {
                       other(1),
                       unknown(2),
                       hardDisk(3),
                       opticalDisk(4),
                       floppyDisk(5)
                    }

   END

Asai, et al.                 Standards Track                   [Page 44]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

7.  IANA Considerations

   This document defines the first version of the IANA-maintained
   IANA-STORAGE-MEDIA-TYPE-MIB module, which allows new storage media
   types to be added to the enumeration in IANAStorageMediaType.  An
   Expert Review, as defined in RFC 5226 [RFC5226], is REQUIRED for each
   modification.

   The MIB module in this document uses the following IANA-assigned
   OBJECT IDENTIFIER values recorded in the SMI Numbers registry:

         Descriptor                OBJECT IDENTIFIER value
         ----------                -----------------------

         vmMIB                     { mib-2 236 }
         ianaStorageMediaTypeMIB   { mib-2 237 }

8.  Security Considerations

   This MIB module is typically implemented on the hypervisor not inside
   a virtual machine.  Virtual machines, possibly under other
   administrative domains, would not have access to this MIB as the SNMP
   service would typically operate in a separate management network.

   There are two objects defined in this MIB module,
   vmPerVMNotificationsEnabled and vmBulkNotificationsEnabled, that have
   a MAX-ACCESS clause of read-write.  Enabling notifications can lead
   to a substantial number of notifications if many virtual machines
   change their state concurrently.  Hence, such objects may be
   considered sensitive or vulnerable in some network environments.  The
   support for SET operations in a non-secure environment without proper
   protection can have a negative effect on the management system.  It
   is RECOMMENDED that these objects have access of read-only instead of
   read-write on deployments where SNMPv3 strong security (i.e.,
   authentication and encryption) is not used.

   There are a number of managed objects in this MIB that may contain
   sensitive information.  The objects in the vmHvSoftware and
   vmHvVersion list information about the hypervisor's software and
   version.  Some may wish not to disclose to others which software they
   are running.  Further, an inventory of the running software and
   versions may be helpful to an attacker who hopes to exploit software
   bugs in certain applications.  Moreover, the objects in the vmTable,
   vmCpuTable, vmCpuAffinityTable, vmStorageTable, and
   vmNetworkTable list information about the virtual machines and their
   virtual resource allocation.  Some may wish not to disclose to others
   how many and what virtual machines they are operating.

Asai, et al.                 Standards Track                   [Page 45]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

   It is thus important to control even GET access to these objects and
   possibly to even encrypt the values of these objects when sending
   them over the network via SNMP.  Not all versions of SNMP provide
   features for such a secure environment.

   SNMPv1 by itself is not a secure environment.  Even if the network
   itself is secure (for example by using IPsec), there is no control as
   to who on the secure network is allowed to access and GET/SET
   (read/change/create/delete) the objects in this MIB module.

   It is recommended that the implementers consider using the security
   features as provided by the SNMPv3 framework.  Specifically, the use
   of the User-based Security Model [RFC3414] and the View-based Access
   Control Model [RFC3415] is recommended.

   It is then a customer/user responsibility to ensure that the SNMP
   entity giving access to an instance of this MIB is properly
   configured to give access to the objects only to those principals
   (users) that have legitimate rights to indeed GET or SET
   (change/create/delete) them.

9.  References

9.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC2578]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Structure of Management Information
              Version 2 (SMIv2)", STD 58, RFC 2578,
              DOI 10.17487/RFC2578, April 1999,
              <http://www.rfc-editor.org/info/rfc2578>.

   [RFC2579]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Textual Conventions for SMIv2",
              STD 58, RFC 2579, DOI 10.17487/RFC2579, April 1999,
              <http://www.rfc-editor.org/info/rfc2579>.

   [RFC2580]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Conformance Statements for SMIv2",
              STD 58, RFC 2580, DOI 10.17487/RFC2580, April 1999,
              <http://www.rfc-editor.org/info/rfc2580>.

Asai, et al.                 Standards Track                   [Page 46]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

   [RFC2790]  Waldbusser, S. and P. Grillo, "Host Resources MIB",
              RFC 2790, DOI 10.17487/RFC2790, March 2000,
              <http://www.rfc-editor.org/info/rfc2790>.

   [RFC2863]  McCloghrie, K. and F. Kastenholz, "The Interfaces Group
              MIB", RFC 2863, DOI 10.17487/RFC2863, June 2000,
              <http://www.rfc-editor.org/info/rfc2863>.

   [RFC3413]  Levi, D., Meyer, P., and B. Stewart, "Simple Network
              Management Protocol (SNMP) Applications", STD 62,
              RFC 3413, DOI 10.17487/RFC3413, December 2002,
              <http://www.rfc-editor.org/info/rfc3413>.

   [RFC3414]  Blumenthal, U. and B. Wijnen, "User-based Security Model
              (USM) for version 3 of the Simple Network Management
              Protocol (SNMPv3)", STD 62, RFC 3414,
              DOI 10.17487/RFC3414, December 2002,
              <http://www.rfc-editor.org/info/rfc3414>.

   [RFC3415]  Wijnen, B., Presuhn, R., and K. McCloghrie, "View-based
              Access Control Model (VACM) for the Simple Network
              Management Protocol (SNMP)", STD 62, RFC 3415,
              DOI 10.17487/RFC3415, December 2002,
              <http://www.rfc-editor.org/info/rfc3415>.

   [RFC3418]  Presuhn, R., Ed., "Management Information Base (MIB) for
              the Simple Network Management Protocol (SNMP)", STD 62,
              RFC 3418, DOI 10.17487/RFC3418, December 2002,
              <http://www.rfc-editor.org/info/rfc3418>.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              DOI 10.17487/RFC5226, May 2008,
              <http://www.rfc-editor.org/info/rfc5226>.

   [RFC6933]  Bierman, A., Romascanu, D., Quittek, J., and M.
              Chandramouli, "Entity MIB (Version 4)", RFC 6933,
              DOI 10.17487/RFC6933, May 2013,
              <http://www.rfc-editor.org/info/rfc6933>.

9.2.  Informative References

   [IEEE8021-BRIDGE-MIB]
              IEEE, "IEEE8021-BRIDGE-MIB", October 2008,
              <http://www.ieee802.org/1/files/public/MIBs/
              IEEE8021-BRIDGE-MIB-200810150000Z.txt>.

Asai, et al.                 Standards Track                   [Page 47]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

   [IEEE8021-Q-BRIDGE-MIB]
              IEEE, "IEEE8021-Q-BRIDGE-MIB", October 2008,
              <http://www.ieee802.org/1/files/public/MIBs/
              IEEE8021-Q-BRIDGE-MIB-200810150000Z.txt>.

   [libvirt]  The libvirt developers, "The libvirt virtialization API",
              <http://www.libvirt.org/>.

   [RFC3410]  Case, J., Mundy, R., Partain, D., and B. Stewart,
              "Introduction and Applicability Statements for Internet-
              Standard Management Framework", RFC 3410,
              DOI 10.17487/RFC3410, December 2002,
              <http://www.rfc-editor.org/info/rfc3410>.

   [VMware]   VMware, Inc., "The VMware Hypervisor",
              <http://www.vmware.com/>.

   [Xen]      The Xen Project, "The Xen Hypervisor",
              <http://www.xenproject.org/>.

Asai, et al.                 Standards Track                   [Page 48]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

Appendix A.  State Transition Table

   +--------------+----------------+--------------+--------------------+
   |    State     |   Change to    |  Next State  |    Notification    |
   |              |  vmAdminState  |              |                    |
   |              |     at the     |              |                    |
   |              | hypervisor or  |              |                    |
   |              |    (Event)     |              |                    |
   +--------------+----------------+--------------+--------------------+
   |  suspended   |    running     |   resuming   |    vmResuming |    |
   |              |                |              |   vmBulkResuming   |
   |              |                |              |                    |
   |  suspending  |    (suspend    |  suspended   |   vmSuspended |    |
   |              |   operation    |              |  vmBulkSuspended   |
   |              |   completed)   |              |                    |
   |              |                |              |                    |
   |   running    |   suspended    |  suspending  |   vmSuspending |   |
   |              |                |              |  vmBulkSuspending  |
   |              |                |              |                    |
   |              |    shutdown    | shuttingdown |  vmShuttingdown |  |
   |              |                |              | vmBulkShuttingdown |
   |              |                |              |                    |
   |              | (migration to  |  migrating   |   vmMigrating |    |
   |              |     other      |              |  vmBulkMigrating   |
   |              |   hypervisor   |              |                    |
   |              |   initiated)   |              |                    |
   |              |                |              |                    |
   |   resuming   |    (resume     |   running    |    vmRunning |     |
   |              |   operation    |              |   vmBulkRunning    |
   |              |   completed)   |              |                    |
   |              |                |              |                    |
   |    paused    |    running     |   running    |    vmRunning |     |
   |              |                |              |   vmBulkRunning    |
   |              |                |              |                    |
   | shuttingdown |   (shutdown    |   shutdown   |    vmShutdown |    |
   |              |   operation    |              |   vmBulkShutdown   |
   |              |   completed)   |              |                    |
   |              |                |              |                    |
   |   shutdown   |    running     |   running    |    vmRunning |     |
   |              |                |              |   vmBulkRunning    |
   |              |                |              |                    |
   |              | (if this state |  migrating   |   vmMigrating |    |
   |              |    entry is    |              |  vmBulkMigrating   |
   |              |  created by a  |              |                    |
   |              |   migration    |              |                    |
   |              | operation (*)  |              |                    |
   |              |                |              |                    |

Asai, et al.                 Standards Track                   [Page 49]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

   |              |   (deletion    |  (no state)  |    vmDeleted |     |
   |              |   operation    |              |   vmBulkDeleted    |
   |              |   completed)   |              |                    |
   |              |                |              |                    |
   |  migrating   |   (migration   |   running    |    vmRunning |     |
   |              |   from other   |              |   vmBulkRunning    |
   |              |   hypervisor   |              |                    |
   |              |   completed)   |              |                    |
   |              |                |              |                    |
   |              | (migration to  |   shutdown   |    vmShutdown |    |
   |              |     other      |              |   vmBulkShutdown   |
   |              |   hypervisor   |              |                    |
   |              |   completed)   |              |                    |
   |              |                |              |                    |
   |  preparing   |  (preparation  |   shutdown   |    vmShutdown |    |
   |              |   completed)   |              |   vmBulkShutdown   |
   |              |                |              |                    |
   |   crashed    |       -        |      -       |         -          |
   |              |                |              |                    |
   |              |   (crashed)    |   crashed    |    vmCrashed |     |
   |              |                |              |   vmBulkCrashed    |
   |              |                |              |                    |
   |  (no state)  |  (preparation  |  preparing   |         -          |
   |              |   initiated)   |              |                    |
   |              |                |              |                    |
   |              | (migrate from  | shutdown (*) |    vmShutdown |    |
   |              |     other      |              |   vmBulkShutdown   |
   |              |   hypervisor   |              |                    |
   |              |   initiated)   |              |                    |
   +--------------+----------------+--------------+--------------------+

                  State Transition Table for vmOperState

Asai, et al.                 Standards Track                   [Page 50]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

Acknowledgements

   The authors would like to thank Andy Bierman, David Black, Joe Marcus
   Clarke, C.M. Heard, Joel Jaeggli, Tom Petch, Randy Presuhn, and Ian
   West for providing helpful comments during the development of this
   specification.

   Juergen Schoenwaelder was partly funded by Flamingo, a Network of
   Excellence project (ICT-318488) supported by the European Commission
   under its Seventh Framework Programme.

Contributors

   Yuji Sekiya
   The University of Tokyo
   2-11-16 Yayoi
   Bunkyo-ku, Tokyo 113-8658
   Japan

   Email: sekiya@wide.ad.jp

   Cathy Zhou
   Huawei Technologies
   Bantian, Longgang District
   Shenzhen 518129
   China

   Email: cathyzhou@huawei.com

   Hiroshi Esaki
   The University of Tokyo
   7-3-1 Hongo
   Bunkyo-ku, Tokyo 113-8656
   Japan

   Email: hiroshi@wide.ad.jp

Asai, et al.                 Standards Track                   [Page 51]
RFC 7666             Virtual Machine Monitoring MIB         October 2015

Authors' Addresses

   Hirochika Asai
   The University of Tokyo
   7-3-1 Hongo
   Bunkyo-ku, Tokyo  113-8656
   Japan

   Phone: +81 3 5841 6748
   Email: panda@hongo.wide.ad.jp

   Michael MacFaden
   VMware Inc.

   Email: mrm@vmware.com

   Juergen Schoenwaelder
   Jacobs University
   Campus Ring 1
   Bremen 28759
   Germany

   Email: j.schoenwaelder@jacobs-university.de

   Keiichi Shima
   IIJ Innovation Institute Inc.
   2-10-2 Fujimi
   Chiyoda-ku, Tokyo  102-0071
   Japan

   Email: keiichi@iijlab.net

   Tina Tsou
   Huawei Technologies (USA)
   2330 Central Expressway
   Santa Clara, CA  95050
   United States

   Email: tina.tsou.zouting@huawei.com

Asai, et al.                 Standards Track                   [Page 52]