Definition of Managed Objects for Small Computer System Interface (SCSI) Entities
Extracted elements (29)
Command counters are defined as both Counter32 and Counter64 because older SNMPv1 implementations cannot support Counter64, yet at 5 Gbit/s with 512-byte operations a Counter32 command counter wraps within an hour. A suggested implementation is to set Counter32 to the low-order 32 bits of the corresponding Counter64.
Data-volume counters (megabytes written/read) use megabyte granularity rather than bytes specifically so that Counter64 objects are not required; at typical data rates, megabyte-granularity Counter32s do not wrap within a relevant observation window.
SCSI domains (as defined by SAM-2) are not represented in this MIB because it is generally not possible to determine domain membership from within a managed system.
The 3-notifications-per-10-seconds rate limit was chosen as a compromise: one notification every three seconds is frequent enough for operational awareness, and allowing short bursts of up to three simultaneous notifications avoids suppressing coincident distinct alerts, without flooding the network.
The LUN is represented as the ScsiLUN OCTET STRING textual convention rather than a numeric integer because a 64-bit integer type does not exist in SMIv2; the encoding follows SAM-2.
The SCSI Instance abstraction (scsiInstanceTable) allows multiple vendor SCSI implementations to coexist under a single SNMP agent as separate instances, and enables a single agent to represent multiple physical subsystems each with its own SCSI instance, supporting virtualization and stacked-device scenarios.
The scsiInstStorageType object in each scsiInstanceTable row acts as a single control point governing the StorageType (and thus reboot persistence) for all writable rows in scsiIntrDevTable, scsiDscTgtTable, scsiAuthorizedIntrTable, and scsiLunMapTable that share the same scsiInstIndex.
The SCSI MIB extends but does not replace the Host Resources MIB (RFC 2790): scsiInstSoftwareIndex links a SCSI instance to an hrSWInstalledTable row, and the hrSWInstalledGroup should be used for any installed SCSI software package information not covered by this MIB.
The SCSI MIB links to transport-specific MIBs (iSCSI MIB, FCP MIB, etc.) via the scsiTransportPointer RowPointer in the scsiTransportTable and scsiPortTransportPtr in the scsiPortTable; if no MIB exists for a given transport, scsiTransportPointer is set to 0.0.
An SNMP agent implementing the SCSI MIB module should not send more than three SCSI notifications in any 10-second period, to avoid inundating the network or the destination host with excessive notifications.
Any managed system acting as a SCSI initiator or target/initiator device and port MUST support the scsiInitiatorDeviceGroup, which contains all managed information related to local SCSI initiator devices, ports, and monitored attached SCSI target devices.
For command counters on systems running at 4 Gbit/second or higher, each counter must be defined as both a Counter32 and a Counter64, with the Counter64 mandatory for such high-speed systems to prevent wrap within an hour.
Managed systems acting as a SCSI target or target/initiator device and port must support the scsiTargetDeviceGroup, which contains objects for local SCSI target devices, local target ports, attached initiator ports, logical units, and LU identifiers.
The scsiDeviceGroup, containing instance, device, port, and transport objects, is mandatory for all SCSI managed systems; every SCSI entity in a managed system must implement it.
The scsiDeviceTable contains management information for each SCSI device within a SCSI instance, including an administrative alias, a BITS role field (target/initiator/both), and a port count. It is indexed by scsiInstIndex and scsiDeviceIndex.
The scsiDscLunTable and scsiDscLunIdTable track remote logical units discovered by each local SCSI initiator port, storing the LUN value (ScsiLUN) and its Identification Descriptor attributes (code set, association, type per SPC-2 Table 172-174, and identifier value as OCTET STRING up to 255 bytes).
The scsiDscTgtTable lists all remote SCSI target ports or devices authorized to attach to each local SCSI initiator port, supporting both administrator-configured entries (scsiDscTgtConfigured=true) and auto-discovered entries (scsiDscTgtDiscovered=true, read-only). Per-target I/O statistics (commands in, megabytes written/read, high-speed command counter) are included. Rows are managed via RowStatus; scsiDscTgtName must be set before a row becomes active.
The scsiInstanceTable is the top-level entity table, representing distinct SCSI instances within a managed system. Each row includes an alias (SnmpAdminString up to 79 chars), a link to hrSWInstalledTable (scsiInstSoftwareIndex), vendor version string, notification enable flag, and a StorageType that governs persistence for all associated sub-tables.
The scsiIntrDevTable controls SCSI initiator device target-access policy via scsiIntrDevTgtAccessMode (autoEnable: discovered targets immediately usable; manualEnable: operator must set scsiIntrDscTgtConfigured=true first) and tracks cumulative LOGICAL UNIT RESET / TARGET RESET requests via scsiIntrDevOutResets.
The scsiPortTable tracks each port per device, capturing the port role (BITS: target/initiator), a RowPointer to the scsiTransportTable entry (scsiPortTransportPtr), and a Counter32 of busy statuses sent or received (scsiPortBusyStatuses).
The scsiTransportTable records the type of transport in use per device (scsiTransportType, an AutonomousType OID such as scsiTransportFCP), a RowPointer to the transport-specific MIB module row (scsiTransportPointer, 0.0 if no transport MIB exists), and the device name in the transport's naming format (scsiTransportDevName).
Transport type OIDs are defined under scsiTransportTypes: scsiTransportSPI (parallel SCSI/SPI-4), scsiTransportFCP (Fibre Channel/FCP-2), scsiTransportSRP (RDMA/InfiniBand), scsiTransportISCSI (iSCSI/RFC 3720), scsiTransportSBP (Serial Bus Protocol 3), and scsiTransportSAS (Serial Attached SCSI).
The scsiMIB module is assigned OID { mib-2 139 } via IANA registration. Transport type object identities (scsiTransportSPI through scsiTransportSAS) are defined under scsiTransportTypes within the module. IANA considerations are covered in Section 13.
Allowing SNMP write access to the scsiDscTgtTable (which controls which SCSI target devices an initiator may attach to) and the ScsiAuthorizedIntrTable (which controls which initiators may attach to a target port) presents significant security risks; the MIB permits but does not require such writes, and implementors must carefully control SNMP write authorization for these tables.
Section 11 addresses the security implications of SNMP management access to the SCSI MIB, including the risks of unauthorized modification of access-control objects (LUN maps, authorized initiator lists, discovered target lists) that could allow an attacker to redirect or deny access to storage resources.
ScsiIdentifier encodes a generic SCSI port identifier as OCTET STRING of SIZE(0..262); its internal format is transport-dependent and defined in SAM-2 Annex A.
ScsiLUN is a textual convention encoding a 64-bit SCSI Logical Unit Number as OCTET STRING of SIZE(2|8), formatted per SAM-2 Annex A Tables A.2 and A.3.
ScsiLuNameOrZero encodes a SCSI logical unit name as OCTET STRING of SIZE(0|8): either a zero-length string (meaning undefined or not applicable, per object description) or exactly 8 bytes representing the LU name per SAM-2.
ScsiName encodes SCSI device or port names as OCTET STRING of SIZE(0..262), with format transport-dependent per SAM-2 Tables A.4 and A.5. Each object using ScsiName must specify whether it refers to a port, a device, or conditionally either.