performance; it counts iSCSI data bytes and PDUs.
For implementations that support error recovery without terminating a
session, the iscsiSessionCxnErrorStatsTable contains counters for the
numbers of digest and connection errors that have occurred within the
session.
6.13. iscsiConnection
The iscsiConnectionAttributesTable contains a list of active
connections within each session. It contains the IP addresses and
TCP (or other protocol) ports of both the local and remote sides of
the connection. These may be used to locate other connection-related
information and statistics in the TCP MIB module [RFC4022].
The attributes table also contains a connection state. This state is
not meant to directly map to the state tables included within the
iSCSI specification; they are meant to be simplified, higher-level
definitions of connection state that provide information more useful
to a user or network manager.
No statistics are kept for connections.
6.14. IP Addresses and TCP Port Numbers
The IP addresses in this module are represented by two attributes,
one of type InetAddressType, and the other of type InetAddress.
These are taken from [RFC4001], which specifies how to support
addresses that may be either IPv4 or IPv6.
The TCP port numbers that appear in a few of the structures are
described as simply port numbers, with a protocol attribute
indicating whether they are TCP ports or something else. This will
allow the module to be compatible with iSCSI over transports other
than TCP in the future.
6.15. Descriptors: Using OIDs in Place of Enumerated Types
The iSCSI MIB module has a few attributes, namely, the digest method
attributes, where an enumerated type would work well, except that an
implementation may need to extend the attribute and add types of its
own. To make this work, this MIB module defines a set of object
identities within the iscsiDescriptors subtree. Each of these object
identities is basically an enumerated type.
Attributes that make use of these object identities have a value that
is an Object Identifier (OID) instead of an enumerated type. These
OIDs can indicate either the object identities defined in this module
or object identities defined elsewhere, such as in an enterprise MIB
module. Those implementations that add their own digest methods
should also define a corresponding object identity for each of these
methods within their own enterprise MIB module, and return its OID
whenever one of these attributes is using that method.
6.16. Notifications
Three notifications are provided. One is sent by an initiator
detecting a critical login failure, another is sent by a target
detecting a critical login failure, and the third is sent upon a
session being terminated due to an abnormal connection or digest
failure. Critical failures are defined as those that may expose
security-related problems that may require immediate action, such as
failures due to authentication, authorization, or negotiation
problems. Attributes in the initiator, target, and instance objects
provide the information necessary to send in the notification, such
as the initiator or target name and IP address at the other end that
may have caused the failure.
To avoid sending an excessive number of notifications due to multiple
errors counted, an SNMP agent implementing the iSCSI MIB module
SHOULD NOT send more than three iSCSI notifications in any 10-second
period.
The 3-in-10 rule was chosen because one notification every three
seconds was deemed often enough, but should two or three different
notifications happen at the same time, it would not be desirable to
suppress them. Three notifications in 10 seconds is a happy medium,
where a short burst of notifications is allowed, without inundating
the network and/or notification host with a large number of
notifications.
7. MIB Definitions
ISCSI-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, NOTIFICATION-TYPE,
Unsigned32, Counter32, Counter64, Gauge32,
mib-2
FROM SNMPv2-SMI
TEXTUAL-CONVENTION, TruthValue, RowPointer, TimeStamp, RowStatus,
AutonomousType, StorageType
FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
FROM SNMPv2-CONF
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB -- RFC 3411
InetAddressType, InetAddress, InetPortNumber
FROM INET-ADDRESS-MIB -- RFC 4001
;
iscsiMibModule MODULE-IDENTITY
LAST-UPDATED "200605220000Z" -- May 22, 2006
ORGANIZATION "IETF IPS Working Group"
CONTACT-INFO
"
Mark Bakke
Cisco Systems, Inc
7900 International Drive, Suite 400
Bloomington, MN
USA 55425
E-mail: mbakke@cisco.com
Marjorie Krueger
Hewlett-Packard
Networked Storage Architecture
Networked Storage Solutions Org.
8000 Foothills Blvd.
Roseville, CA 95747
E-mail: marjorie_krueger@hp.com
Tom McSweeney
IBM Corporation
600 Park Offices Drive
Research Triangle Park, NC
USA 27709
E-mail: tommcs@us.ibm.com
James Muchow
Qlogic Corp.
6321 Bury Dr.
Eden Prairie, MN
USA 55346
E-mail: james.muchow@qlogic.com"
DESCRIPTION
"The iSCSI Protocol MIB module.
Copyright (C) The Internet Society (2006). This version of
this MIB module is part of RFC 4544; see the RFC itself for
full legal notices."
REVISION "200605220000Z" -- May 22, 2006
DESCRIPTION
"Initial version of the iSCSI Protocol MIB module"
::= { mib-2 142 }
iscsiNotifications OBJECT IDENTIFIER ::= { iscsiMibModule 0 }
iscsiObjects OBJECT IDENTIFIER ::= { iscsiMibModule 1 }
iscsiConformance OBJECT IDENTIFIER ::= { iscsiMibModule 2 }
iscsiAdmin OBJECT IDENTIFIER ::= { iscsiMibModule 3 }
-- Textual Conventions
IscsiTransportProtocol ::= TEXTUAL-CONVENTION
DISPLAY-HINT "d"
STATUS current
DESCRIPTION
"This data type is used to define the transport
protocols that will carry iSCSI PDUs."
REFERENCE
"RFC791, RFC1700
The presently known, officially delegated numbers
can be found at:
http://www.iana.org/assignments/protocol-numbers"
SYNTAX Unsigned32 (0..255)
IscsiDigestMethod ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"This data type represents the methods possible
for digest negotiation.
none - a placeholder for a secondary digest method
that means only the primary method can be
used.
other - a digest method other than those defined below.
noDigest - does not support digests (will operate without
a digest (Note: implementations must support
digests to be compliant with the RFC3720).
CRC32c - require a CRC32C digest."
REFERENCE
"RFC 3720, Section 12.1, HeaderDigest and DataDigest"
SYNTAX INTEGER {
none(1),
other(2),
noDigest(3),
crc32c(4)
}
IscsiName ::= TEXTUAL-CONVENTION
DISPLAY-HINT "223t"
STATUS current
DESCRIPTION
"This data type is used for objects whose value is an
iSCSI name with the properties described in RFC 3720
section 3.2.6.1, and encoded as specified in RFC 3720
section 3.2.6.2. A zero-length string indicates the
absence of an iSCSI name."
REFERENCE
"RFC 3720, Section 3.2.6, iSCSI Names."
SYNTAX OCTET STRING (SIZE(0 | 16..223))
--**********************************************************************
iscsiDescriptors OBJECT IDENTIFIER ::= { iscsiAdmin 1 }
iscsiHeaderIntegrityTypes OBJECT IDENTIFIER ::= { iscsiDescriptors 1 }
iscsiHdrIntegrityNone OBJECT-IDENTITY
STATUS current
DESCRIPTION
"The authoritative identifier when no integrity
scheme (for either the header or data) is being
used."
REFERENCE
"RFC 3720, Section 12.1, HeaderDigest and DataDigest"
::= { iscsiHeaderIntegrityTypes 1 }
iscsiHdrIntegrityCrc32c OBJECT-IDENTITY
STATUS current
DESCRIPTION
"The authoritative identifier when the integrity
scheme (for either the header or data) is CRC32c."
REFERENCE
"RFC 3720, Section 12.1, HeaderDigest and DataDigest"
::= { iscsiHeaderIntegrityTypes 2 }
iscsiDataIntegrityTypes OBJECT IDENTIFIER ::= { iscsiDescriptors 2 }
iscsiDataIntegrityNone OBJECT-IDENTITY
STATUS current
DESCRIPTION
"The authoritative identifier when no integrity
scheme (for either the header or data) is being
used."
REFERENCE
"RFC 3720, Section 12.1, HeaderDigest and DataDigest"
::= { iscsiDataIntegrityTypes 1 }
iscsiDataIntegrityCrc32c OBJECT-IDENTITY
STATUS current
DESCRIPTION
"The authoritative identifier when the integrity
scheme (for either the header or data) is CRC32c."
REFERENCE
"RFC 3720, Section 12.1, HeaderDigest and DataDigest"
::= { iscsiDataIntegrityTypes 2 }
--**********************************************************************
iscsiInstance OBJECT IDENTIFIER ::= { iscsiObjects 1 }
-- Instance Attributes Table
iscsiInstanceAttributesTable OBJECT-TYPE
SYNTAX SEQUENCE OF IscsiInstanceAttributesEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of iSCSI instances present on the system."
::= { iscsiInstance 1 }
iscsiInstanceAttributesEntry OBJECT-TYPE
SYNTAX IscsiInstanceAttributesEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry (row) containing management information applicable
to a particular iSCSI instance."
INDEX { iscsiInstIndex }
::= { iscsiInstanceAttributesTable 1 }
IscsiInstanceAttributesEntry ::= SEQUENCE {
iscsiInstIndex Unsigned32,
iscsiInstDescr SnmpAdminString,
iscsiInstVersionMin Unsigned32,
iscsiInstVersionMax Unsigned32,
iscsiInstVendorID SnmpAdminString,
iscsiInstVendorVersion SnmpAdminString,
iscsiInstPortalNumber Unsigned32,
iscsiInstNodeNumber Unsigned32,
iscsiInstSessionNumber Unsigned32,
iscsiInstSsnFailures Counter32,
iscsiInstLastSsnFailureType AutonomousType,
iscsiInstLastSsnRmtNodeName IscsiName,
iscsiInstDiscontinuityTime TimeStamp
}
iscsiInstIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary integer used to uniquely identify a particular
iSCSI instance. This index value must not be modified or
reused by an agent unless a reboot has occurred. An agent
should attempt to keep this value persistent across reboots."
::= { iscsiInstanceAttributesEntry 1 }
iscsiInstDescr OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A UTF-8 string, determined by the implementation to
describe the iSCSI instance. When only a single instance
is present, this object may be set to the zero-length
string; with multiple iSCSI instances, it may be used in
an implementation-dependent manner to describe the purpose
of the respective instance."
::= { iscsiInstanceAttributesEntry 2 }
iscsiInstVersionMin OBJECT-TYPE
SYNTAX Unsigned32 (0..255)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum version number of the iSCSI specification
such that this iSCSI instance supports this minimum
value, the maximum value indicated by the corresponding
instance in iscsiInstVersionMax, and all versions in
between."
REFERENCE
"RFC 3720, Section 10.12, Login Request"
::= { iscsiInstanceAttributesEntry 3 }
iscsiInstVersionMax OBJECT-TYPE
SYNTAX Unsigned32 (0..255)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum version number of the iSCSI specification
such that this iSCSI instance supports this maximum
value, the minimum value indicated by the corresponding
instance in iscsiInstVersionMin, and all versions in
between."
REFERENCE
"RFC 3720, Section 10.12, Login Request"
::= { iscsiInstanceAttributesEntry 4 }
iscsiInstVendorID OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A UTF-8 string describing the manufacturer of the
implementation of this instance."
::= { iscsiInstanceAttributesEntry 5 }
iscsiInstVendorVersion OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A UTF-8 string set by the manufacturer describing the
version of the implementation of this instance. The
format of this string is determined solely by the
manufacturer, and is for informational purposes only.
It is unrelated to the iSCSI specification version numbers."
::= { iscsiInstanceAttributesEntry 6 }
iscsiInstPortalNumber OBJECT-TYPE
SYNTAX Unsigned32
UNITS "transport endpoints"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of rows in the iscsiPortalAttributesTable
that are currently associated with this iSCSI instance."
::= { iscsiInstanceAttributesEntry 7 }
iscsiInstNodeNumber OBJECT-TYPE
SYNTAX Unsigned32
UNITS "iSCSI nodes"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of rows in the iscsiNodeAttributesTable
that are currently associated with this iSCSI instance."
::= { iscsiInstanceAttributesEntry 8 }
iscsiInstSessionNumber OBJECT-TYPE
SYNTAX Unsigned32
UNITS "sessions"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of rows in the iscsiSessionAttributesTable
that are currently associated with this iSCSI instance."
::= { iscsiInstanceAttributesEntry 9 }
iscsiInstSsnFailures OBJECT-TYPE
SYNTAX Counter32
UNITS "sessions"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of times a session belonging
to this instance has been failed. If this counter has
suffered a discontinuity, the time of the last discontinuity
is indicated in iscsiInstDiscontinuityTime."
REFERENCE
"RFC 3720, Section 12.1, HeaderDigest and DataDigest"
::= { iscsiInstanceAttributesEntry 10 }
iscsiInstLastSsnFailureType OBJECT-TYPE
SYNTAX AutonomousType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The counter object in the iscsiInstSsnErrorStatsTable
that was incremented when the last session failure occurred.
If the reason for failure is not found in the
iscsiInstSsnErrorStatsTable, the value { 0.0 } is
used instead."
::= { iscsiInstanceAttributesEntry 11 }
iscsiInstLastSsnRmtNodeName OBJECT-TYPE
SYNTAX IscsiName
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The iSCSI name of the remote node from the failed
session."
::= { iscsiInstanceAttributesEntry 12 }
iscsiInstDiscontinuityTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of SysUpTime on the most recent occasion
at which any one or more of this instance’s counters
suffered a discontinuity.
If no such discontinuities have occurred since the last
re-initialization of the local management subsystem,
then this object contains a zero value."
::= { iscsiInstanceAttributesEntry 13 }
-- Instance Session Failure Stats Table
iscsiInstanceSsnErrorStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF IscsiInstanceSsnErrorStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Statistics regarding the occurrences of error types
that result in a session failure."
::= { iscsiInstance 2 }
iscsiInstanceSsnErrorStatsEntry OBJECT-TYPE
SYNTAX IscsiInstanceSsnErrorStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry (row) containing management information applicable
to a particular iSCSI instance."
AUGMENTS { iscsiInstanceAttributesEntry }
::= { iscsiInstanceSsnErrorStatsTable 1 }
IscsiInstanceSsnErrorStatsEntry ::= SEQUENCE {
iscsiInstSsnDigestErrors Counter32,
iscsiInstSsnCxnTimeoutErrors Counter32,
iscsiInstSsnFormatErrors Counter32
}
iscsiInstSsnDigestErrors OBJECT-TYPE
SYNTAX Counter32
UNITS "sessions"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The count of sessions that were failed due to receipt of
a PDU containing header or data digest errors. If this
counter has suffered a discontinuity, the time of the last
discontinuity is indicated in iscsiInstDiscontinuityTime."
REFERENCE
"RFC 3720, Section 6.7, Digest Errors"
::= { iscsiInstanceSsnErrorStatsEntry 1 }
iscsiInstSsnCxnTimeoutErrors OBJECT-TYPE
SYNTAX Counter32
UNITS "sessions"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The count of sessions that were failed due to a sequence
exceeding a time limit. If this counter has suffered a
discontinuity, the time of the last discontinuity
is indicated in iscsiInstDiscontinuityTime."
REFERENCE
"RFC 3720, Section 6.4, Connection Timeout Management"
::= { iscsiInstanceSsnErrorStatsEntry 2 }
iscsiInstSsnFormatErrors OBJECT-TYPE
SYNTAX Counter32
UNITS "sessions"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The count of sessions that were failed due to receipt of
a PDU that contained a format error. If this counter has
suffered a discontinuity, the time of the last discontinuity
is indicated in iscsiInstDiscontinuityTime."
REFERENCE
"RFC 3720, Section 6.6, Format Errors"
::= { iscsiInstanceSsnErrorStatsEntry 3 }
--**********************************************************************
iscsiPortal OBJECT IDENTIFIER ::= { iscsiObjects 2 }
-- Portal Attributes Table
iscsiPortalAttributesTable OBJECT-TYPE
SYNTAX SEQUENCE OF IscsiPortalAttributesEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of transport endpoints (using TCP or another transport
protocol) used by this iSCSI instance. An iSCSI instance may
use a portal to listen for incoming connections to its targets,
to initiate connections to other targets, or both."
::= { iscsiPortal 1 }
iscsiPortalAttributesEntry OBJECT-TYPE
SYNTAX IscsiPortalAttributesEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry (row) containing management information applicable
to a particular portal instance."
INDEX { iscsiInstIndex, iscsiPortalIndex }
::= { iscsiPortalAttributesTable 1 }
IscsiPortalAttributesEntry ::= SEQUENCE {
iscsiPortalIndex Unsigned32,
iscsiPortalRowStatus RowStatus,
iscsiPortalRoles BITS,
iscsiPortalAddrType InetAddressType,
iscsiPortalAddr InetAddress,
iscsiPortalProtocol IscsiTransportProtocol,
iscsiPortalMaxRecvDataSegLength Unsigned32,
iscsiPortalPrimaryHdrDigest IscsiDigestMethod,
iscsiPortalPrimaryDataDigest IscsiDigestMethod,
iscsiPortalSecondaryHdrDigest IscsiDigestMethod,
iscsiPortalSecondaryDataDigest IscsiDigestMethod,
iscsiPortalRecvMarker TruthValue,
iscsiPortalStorageType StorageType
}
iscsiPortalIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary integer used to uniquely identify a particular
transport endpoint within this iSCSI instance. This index
value must not be modified or reused by an agent unless a
reboot has occurred. An agent should attempt to keep this
value persistent across reboots."
::= { iscsiPortalAttributesEntry 1 }
iscsiPortalRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This field allows entries to be dynamically added and
removed from this table via SNMP. When adding a row to
this table, all non-Index/RowStatus objects must be set.
When the value of this object is ’active’, the values of
the other objects in this table cannot be changed.
Rows may be discarded using RowStatus.
Note that creating a row in this table will typically
cause the agent to create one or more rows in
iscsiTgtPortalAttributesTable and/or
iscsiIntrPortalAttributesTable."
::= { iscsiPortalAttributesEntry 2 }
iscsiPortalRoles OBJECT-TYPE
SYNTAX BITS {
targetTypePortal(0),
initiatorTypePortal(1)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"A portal can operate in one or both of two roles:
as a target portal and/or an initiator portal. If
the portal will operate in both roles, both bits
must be set.
This object will define a corresponding row that
will exist or must be created in the
iscsiTgtPortalAttributesTable, the
iscsiIntrPortalAttributesTable or both. If the
targetTypePortal bit is set, one or more corresponding
iscsiTgtPortalAttributesEntry rows will be found or
created. If the initiatorTypePortal bit is set,
one or more corresponding iscsiIntrPortalAttributesEntry