RFC 4044
Fibre Channel Management MIB
Fibre Channel Management MIB โจ (Part 1 of 10)
RFC 4044 ๐ Network Working Group, Request for Comments: 4044
Okay bestie, here's the header info first ๐
- Written by: K. McCloghrie at Cisco Systems, Inc ๐
- Date: May 2005 ๐
- Category: Standards Track ๐ฅ
- Obsoletes: RFC 2837 ๐ซถ (the header doesn't list anything it updates)
Status of This Memo
Okay so this doc is an Internet standards track protocol for the Internet community, and it's basically asking everyone to talk about it and suggest improvements ๐ฃ๏ธ For where this protocol sits in the standardization process, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐ And distribution is unlimited, so share it with everyone ๐
Copyright Notice
Copyright (C) The Internet Society (2005). ยฉ๏ธ๐
Abstract
This memo defines a piece of the Management Information Base (MIB) ๐ง MIBs are the sets of managed objects that network management protocols use across the Internet community. Specifically, it's all about managed objects for Fibre Channel info ๐ฆ
Table of Contents
1. Introduction ................................................. 2
2. The Internet-Standard Management Framework ................... 2
3. Short Overview of the Fibre Channel .......................... 2
4. MIB Overview ................................................. 3
4.1. The fcmInstanceBasicGroup Group ........................ 3
4.2. The fcmSwitchBasicGroup Group .......................... 4
4.3. The fcmPortBasicGroup Group ............................ 4
4.4. The fcmPortStatsGroup Group ............................ 4
4.5. The fcmPortClass23StatsGroup Group ..................... 4
4.6. The fcmPortLcStatsGroup Group .......................... 4
4.7. The fcmPortClassFStatsGroup Group ...................... 4
4.8. The fcmPortErrorsGroup Group ........................... 4
4.9. The fcmSwitchPortGroup Group ........................... 5
4.10. The fcmSwitchLoginGroup Group .......................... 5
4.11. The fcmLinkBasicGroup Group ............................ 5
5. Relationship to Other MIBs ................................... 5
5.1. The Interfaces Group MIB ............................... 5
5.2. Entity MIB ............................................. 8
5.3. Host Resources MIB ..................................... 9
6. Definitions .................................................. 9
7. Acknowledgements ............................................. 57
8. Normative References ......................................... 57
9. Informative References ....................................... 58
10. Security Considerations ...................................... 59
11. IANA Considerations .......................................... 60
11.1. OID Assignment ......................................... 60
11.2. FC Port Type Registry .................................. 60
12. Comparison to the Fibre Channel Management Integration MIB ... 62
12.1. Problems with the Fibre Channel Management Integration
MIB .................................................... 62
12.2. Detailed Changes ....................................... 62
13. Comparison to RFC 2837 ....................................... 67
1. Introduction โจ
This memo is basically the same MIB story as the abstract ๐ It defines a portion of the Management Information Base (MIB) for network management protocols in the Internet community, and it's specifically about managed objects for Fibre Channel info ๐ธ
2. The Internet-Standard Management Framework ๐
Want the full tea on the current Internet-Standard Management Framework? Check section 7 of RFC 3410 [RFC3410] ๐
Managed objects live in a virtual information store called the Management Information Base, or MIB ๐๏ธ You usually reach MIB objects through the Simple Network Management Protocol (SNMP) ๐ก Objects in the MIB are defined using the mechanisms in the Structure of Management Information (SMI) ๐งฉ This memo's MIB module is compliant with SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] ๐
3. Short Overview of the Fibre Channel ๐ฆ
Okay so the Fibre Channel (FC) is logically a bidirectional point-to-point serial data channel, and it's built for high performance ๐ฅ It's a general transport for higher level protocols like Intelligent Peripheral Interface (IPI) and Small Computer System Interface (SCSI) command sets, the High-Performance Parallel Interface (HIPPI) data framing, IP (Internet Protocol), IEEE 802.2, and more ๐
Physically, the Fibre Channel is a bunch of communication points, called N_Ports, that are connected either through a switching network called a Fabric, or by a point-to-point link ๐ธ๏ธ An FC "node" is made of one or more N_Ports ๐ง A Fabric can have multiple Interconnect Elements, and some of those are switches. An N_Port hooks up to the Fabric through a port on a switch called an F_Port โจ When multiple FC nodes plug into a single switch port using an "Arbitrated Loop" topology, that switch port is called an FL_Port, and the nodes' ports are called NL_Ports ๐ The term Nx_Port covers either an N_Port or an NL_port, and the term Fx_Port covers either an F_Port or an FL_port ๐ A switch port that connects to another switch port through an Inter Element Link (IEL) is called an E_Port ๐ And a B_Port connects a bridge device to an E_Port on a switch. It only gives you a subset of E_Port functionality, so it's a little lighter ๐
Lots of Fibre Channel components have globally-unique names, including the fabric, each node, and most ports ๐ท๏ธ These names are usually formatted as World Wide Names (WWNs). For more on WWNs, see [WWN1] and [WWN2] ๐ WWNs are expected to stay persistent across agent and unit resets ๐ซถ
Fibre Channel frames carry 24-bit address identifiers that show the source and destination ports of the frame ๐ฆ Every FC port has an address identifier and a WWN. When a fabric is in use, the FC address identifiers are dynamic, and a switch assigns them ๐
4. MIB Overview ๐ธ
This MIB has the idea of a Fibre Channel management instance. That's defined as a separable managed instance of Fibre Channel functionality ๐ Fibre Channel functionality can be grouped into management instances however is most convenient for the implementation(s) ๐ง For example, one grouping lets a single SNMP agent have multiple AgentX [RFC2741] sub-agents, with each sub-agent implementing a different Fibre Channel management instance ๐ To represent several Fibre Channel management instances within the same SNMP context (see section 3.3.1 of [RFC3411]), every table in this MIB is INDEX-ed by fcmInstanceIndex. That's an arbitrary integer that uniquely identifies one particular Fibre Channel management instance ๐
This MIB has eleven MIB groups, listed below ๐ญ
4.1. The fcmInstanceBasicGroup Group
This group holds basic info about a Fibre Channel managed instance, including its name and description, the Fibre Channel function(s) it performs, and optional pointers to hardware and/or software components ๐ฅ๏ธ
4.2. The fcmSwitchBasicGroup Group
This group holds basic info about a Fibre Channel switch, including its domain-id and whether it's the principal switch of its fabric ๐
4.3. The fcmPortBasicGroup Group
This group holds basic info about a Fibre Channel port. That includes its port name (WWN), the name of the node it's part of (if it has one), the type of port, the classes of service it supports, its transmitter and connector types, and the higher level protocols it supports ๐
Each Fibre Channel port has an entry in the ifTable (see below). The tables about ports in this MIB are indexed by the port's value of ifIndex ๐งท
4.4. The fcmPortStatsGroup Group
This group has traffic statistics for Fibre Channel ports that aren't specific to any particular class of service ๐
4.5. The fcmPortClass23StatsGroup Group
This group has traffic statistics specific to Class 2 or Class 3 traffic on Fibre Channel ports. That includes class-specific frame and octet counters, plus counters of busy and reject frames ๐งฎ
4.6. The fcmPortLcStatsGroup Group
Some stats in the fcmPortClass23StatsGroup can go up fast enough to deserve the Counter64 syntax. But some old SNMP systems don't (yet) support Counter64 objects, which is a bit sad ๐ญ So this group defines low-capacity (Counter32-based) versions of the Counter64-based stats in the fcmPortClass23StatsGroup group ๐ซถ
4.7. The fcmPortClassFStatsGroup Group
This group has traffic statistics specific to Class F traffic on the E_Ports of a Fibre Channel switch ๐
4.8. The fcmPortErrorsGroup Group
This group has counters for the various error conditions that can happen on Fibre Channel ports ๐
4.9. The fcmSwitchPortGroup Group
This group has info about ports on a Fibre Channel switch. For an Fx_Port, it includes the port's timeout values, its hold-time, and its capabilities in terms of maximum and minimum buffer-to-buffer credit allocations, maximum and minimum data field sizes, and support for class 2 and class 3 sequenced delivery ๐๏ธ For an E_Port or B_Port, it includes the buffer-to-buffer credit allocation and data field size ๐
4.10. The fcmSwitchLoginGroup Group
This group has info that a Fibre Channel switch knows about its attached/logged-in Nx_Ports, plus the service parameters agreed on with them ๐ค
4.11. The fcmLinkBasicGroup Group
This group has info known to a local Fibre Channel management instance about Fibre Channel links, including the ones that terminate locally ๐
5. Relationship to Other MIBs ๐ง
This MIB replaces two other MIBs: RFC 2837, and the Fibre Channel Management Integration MIB. The Integration MIB was originally submitted as an Internet Draft to the IETF's IPFC Working Group, and it's now available as [MIB-FA] ๐ฆ
5.1. The Interfaces Group MIB
The Interfaces Group MIB [RFC2863] holds generic info about all lower layer interfaces, meaning interfaces that are (potentially) below the internet layer ๐งฑ So each Fibre Channel port should get its own row in the ifTable, and that row holds the generic info about the interface/port ๐ The Interfaces Group MIB also says that extra info specific to a particular type of interface media should be defined in a media-specific MIB. This MIB is the media-specific MIB for Fibre Channel ports/interfaces ๐
Section 4 of [RFC2863] requires that a media-specific MIB clarify how the generic definitions apply to that type of media. Here are the clarifications for Fibre Channel interfaces ๐
5.1.1. Layering Model
The Interfaces Group MIB lets multiple ifTable entries be defined for interface sub-layers, and those entries can be arranged in a stack ๐ฅ
For Fibre Channel interfaces, no sublayers are defined. A Fibre Channel interface typically has no other ifTable rows stacked on top of it or underneath it ๐
5.1.2. Virtual Circuits
This Fibre Channel MIB doesn't deal with virtual circuits ๐ โโ๏ธ
5.1.3. ifRcvAddressTable
The ifRcvAddressTable doesn't apply to Fibre Channel interfaces ๐
That's the first chunk, bestie! ๐ Part 2 is coming next, and it gets into section 5.2 and the rest of the big picture ๐ธ
5.1.4. ifType โจ
okay so for a Fibre Channel interface, ifType is literally always 56 ๐ง no notes, no exceptions, iconic and simple ๐
5.1.5. ifXxxOctets ๐
so the definitions of ifInOctets and ifOutOctets (and the same goes for ifHCInOctets and ifHCOutOctets) say their values include framing characters ๐ซถ for Fibre Channel, that means they count every octet inside a frame from the Start-of-Frame delimiter up to the End-of-Frame delimiter, but the delimiters themselves don't get counted ๐ฆ the way the framing counts are set up is honestly so specific and I'm obsessed ๐ญ
5.1.6. Specific Interface Group MIB Objects ๐ธ
bestie, this table gives you the specific guidelines for using the Interfaces Group MIB objects on Fibre Channel interfaces ๐ anything that isn't listed here, go check its generic definition in [RFC2863]. and yes, if [RFC2863] and these guidelines ever disagree, [RFC2863] wins ๐
Object Guidelines
ifType 56
ifMtu The MTU as seen by a higher layer
protocol, like IP.
That is, when IP is running over the
interface, this object is the size of the
largest IP datagram that can be
sent/received over the interface.
ifSpeed For 1Gbs, this will be 1,000,000,000;
for 2Gbs, it will be 2,000,000,000. If
auto-negotiation is implemented and
enabled on an interface, and the
interface has not yet negotiated an
operational speed, this object SHOULD
reflect the maximum speed supported by
the interface.
ifPhysAddress The interface's 24-bit Fibre Channel
Address Identifier, or the zero-length
string if no Address Identifier has been
assigned to the interface.
ifAdminStatus Write access is not required, and support
for 'testing' is not required.
ifOperStatus Support for 'testing' is not required.
The value 'dormant' has no meaning for
Fibre Channel interfaces.
ifInOctets The number of octets of information
ifHCInOctets contained in received frames between the
Start-of-Frame and End-of-Frame
delimiters (excluding the delimiters).
ifInUcastPkts The number of unicast frames received,
ifHCInUcastPkts i.e., the number of Start-of-Frame
delimiters received for unicast frames.
ifInErrors The sum for this interface of
fcmPortLossofSynchs
fcmPortLossofSignals
fcmPortPrimSeqProtocolErrors
fcmPortInvalidTxWords
fcmPortInvalidCRCs
fcmPortAddressErrors
fcmPortDelimiterErrors
fcmPortTruncatedFrames
fcmPortEncodingDisparityErrors
plus any errors in fcmPortOtherErrors
that were input errors.
ifOutOctets The number of octets of information
ifHCOutOctets contained in transmitted frames between
the Start-of-Frame and End-of-Frame
delimiters (excluding the delimiters).
ifOutUcastPkts The number of frames transmitted,
ifHCOutUcastPkts i.e., the number
of start-of-frame delimiters transmitted
for unicast frames.
ifOutErrors This is the number of errors in
fcmPortOtherErrors that were output
errors.
ifInMulticastPkts These counters are not incremented
ifInBroadcastPkts (unless a proprietary mechanism for
ifOutMulticastPkts multicast/broadcast is supported).
ifOutBroadcastPkts
ifHCInMulticastPkts
ifHCInBroadcastPkts
ifHCOutMulticastPkts
ifHCOutBroadcastPkts
ifLinkUpDownTrapEnable Refer to [RFC2863]. Default is 'enabled'
ifHighSpeed The current operational speed of the
interface in millions of bits per second.
For 1Gbs, this will be 1000; for 2Gbs, it
will be 2000. If auto-negotiation is
implemented and enabled on an interface,
and the interface has not yet negotiated
an operational speed, this object SHOULD
reflect the maximum speed supported by
the interface.
ifPromiscuousMode This will normally be 'false'
ifConnectorPresent This will normally be 'true'.
5.2. Entity MIB ๐งฉ
the Entity MIB [RFC2737] is where you find info about individual physical components and how they're related hierarchically ๐ any Fibre Channel management instance tied to a physical component (or a whole hierarchy of them) will have its fcmInstancePhysicalIndex pointing at the matching row in the Entity MIB. if there's no physical match (or the component doesn't have a row in the Entity MIB), fcmInstancePhysicalIndex is 0. and ngl, an implementation is not required to support a non-zero value of fcmInstancePhysicalIndex ๐
5.3. Host Resources MIB ๐
the Host Resources MIB [RFC2790] has info about installed software modules ๐ same energy here: any Fibre Channel management instance that corresponds to a software module will have fcmInstanceSoftwareIndex pointing at the right row in the Host Resources MIB. no software module match (or no row in that MIB)? then fcmInstanceSoftwareIndex is 0. and an agent is not required to support a non-zero fcmInstanceSoftwareIndex either ๐ซถ
6. Definitions โจ
this is the actual MIB module, bestie, the good stuff ๐ every single line is copied exactly so it stays legit ๐
FC-MGMT-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE,
Integer32, Unsigned32, Counter32, Counter64, transmission
FROM SNMPv2-SMI
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF
TruthValue, TEXTUAL-CONVENTION
FROM SNMPv2-TC
ifIndex FROM IF-MIB
SnmpAdminString FROM SNMP-FRAMEWORK-MIB;
fcMgmtMIB MODULE-IDENTITY
LAST-UPDATED "200504260000Z" -- 26 April 2005
ORGANIZATION "IETF IPS (IP-Storage) Working Group"
CONTACT-INFO
" Keith McCloghrie
Cisco Systems, Inc.
Tel: +1 408 526-5260
E-mail: kzm@cisco.com
Postal: 170 West Tasman Drive
San Jose, CA USA 95134
"
DESCRIPTION
"This module defines management information specific to
Fibre Channel-attached devices.
Copyright (C) The Internet Society (2005). This version
of this MIB module is part of RFC 4044; see the RFC
itself for full legal notices."
REVISION "200504260000Z" -- 26 April 2005
DESCRIPTION
"Initial version of the Fibre Channel Mgmt MIB module."
::= { transmission 56 }
fcmgmtObjects OBJECT IDENTIFIER ::= { fcMgmtMIB 1 }
fcmgmtNotifications OBJECT IDENTIFIER ::= { fcMgmtMIB 2 }
fcmgmtNotifPrefix OBJECT IDENTIFIER ::= { fcmgmtNotifications 0 }
fcmgmtConformance OBJECT IDENTIFIER ::= { fcMgmtMIB 3 }
--********************************
-- Textual Conventions
--
FcNameIdOrZero ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The World Wide Name (WWN) associated with a Fibre Channel
(FC) entity. WWNs were initially defined as 64-bits in
length. The latest definition (for future use) is 128-bits
long. The zero-length string value is used in
circumstances in which the WWN is unassigned/unknown."
SYNTAX OCTET STRING (SIZE(0 | 8 | 16))
FcAddressIdOrZero ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"A Fibre Channel Address ID, a 24-bit value unique within
the address space of a Fabric. The zero-length string value
is used in circumstances in which the WWN is
unassigned/unknown."
SYNTAX OCTET STRING (SIZE(0 | 3))
FcDomainIdOrZero ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The Domain Id (of an FC switch), or zero if the no Domain
Id has been assigned."
SYNTAX Integer32 (0..239)
FcPortType ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The type of a Fibre Channel port, as indicated by the use
of the appropriate value assigned by IANA."
REFERENCE
"The IANA-maintained registry for
Fibre Channel port types (http://www.iana.org/)."
SYNTAX Unsigned32
FcClasses ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"A set of Fibre Channel classes of service."
REFERENCE
"Classes of service are described in FC-FS Section 13."
SYNTAX BITS { classF(0), class1(1), class2(2), class3(3),
class4(4), class5(5), class6(6) }
FcBbCredit ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The buffer-to-buffer credit of an FC port."
SYNTAX Integer32 (0..32767)
FcBbCreditModel ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The buffer-to-buffer credit model of an Fx_Port."
SYNTAX INTEGER { regular(1), alternate (2) }
FcDataFieldSize ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The Receive Data Field Size associated with an FC port."
SYNTAX Integer32 (128..2112)
Okay bestie, this is where the MIB objects start to show up, and they're giving structure ๐ง Here's the bitmask type for what a unit can do, then the management instance table โจ
FcUnitFunctions ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"A set of functions that a Fibre Channel Interconnect
Element or Platform might perform. A value with no bits set
indicates the function(s) are unknown. The individual bits
have the following meanings:
other - none of the following.
hub - a device that interconnects L_Ports, but does not
operate as an FL_Port.
switch - a fabric element conforming to the Fibre Channel
switch fabric set of standards (e.g., [FC-SW-3]).
bridge - a device that encapsulates Fibre Channel frames
within another protocol (e.g., [FC-BB], FC-BB-2).
gateway - a device that converts an FC-4 to another protocol
(e.g., FCP to iSCSI).
host - a computer system that provides end users with
services such as computation and storage access.
storageSubsys - an integrated collection of storage
controllers, storage devices, and necessary software that
provides storage services to one or more hosts.
storageAccessDev - a device that provides storage management
and access for heterogeneous hosts and heterogeneous devices
(e.g., medium changer).
nas - a device that connects to a network and provides file
access services.
wdmux - a device that modulates/demodulates each of several
data streams (e.g., Fibre Channel protocol data streams)
onto/from a different part of the light spectrum in an
optical fiber.
storageDevice - a disk/tape/etc. device (without the
controller and/or software required for it to be a
'storageSubsys')."
SYNTAX BITS {
other(0), -- none of the following
hub(1),
switch(2),
bridge(3),
gateway(4),
host(5),
storageSubsys(6),
storageAccessDev(7),
nas(8),
wdmux(9),
storageDevice(10)
}
Now the MIB object definitions, which are the part where the bits actually get used ๐
--********************************
-- MIB object definitions
--
fcmInstanceTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmInstanceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about the local Fibre Channel management
instances."
::= { fcmgmtObjects 1 }
fcmInstanceEntry OBJECT-TYPE
SYNTAX FcmInstanceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of attributes for a particular local Fibre Channel
management instance."
INDEX { fcmInstanceIndex }
::= { fcmInstanceTable 1 }
FcmInstanceEntry ::=
SEQUENCE {
fcmInstanceIndex Unsigned32,
fcmInstanceWwn FcNameIdOrZero,
fcmInstanceFunctions FcUnitFunctions,
fcmInstancePhysicalIndex Integer32,
fcmInstanceSoftwareIndex Integer32,
fcmInstanceStatus INTEGER,
fcmInstanceTextName SnmpAdminString,
fcmInstanceDescr SnmpAdminString,
fcmInstanceFabricId FcNameIdOrZero
}
fcmInstanceIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary integer value that uniquely identifies this
instance amongst all local Fibre Channel management
instances.
It is mandatory to keep this value constant between restarts
of the agent, and to make every possible effort to keep it
constant across restarts (but note, it is unrealistic to
expect it to remain constant across all re-configurations of
the local system, e.g., across the replacement of all non-
volatile storage)."
::= { fcmInstanceEntry 1 }
fcmInstanceWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"If the instance has one (or more) WWN(s), then this object
contains that (or one of those) WWN(s).
If the instance does not have a WWN associated with it, then
this object contains the zero-length string."
::= { fcmInstanceEntry 2 }
fcmInstanceFunctions OBJECT-TYPE
SYNTAX FcUnitFunctions
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"One (or more) Fibre Channel unit functions being performed
by this instance."
::= { fcmInstanceEntry 3 }
fcmInstancePhysicalIndex OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"If this management instance corresponds to a physical
component (or to a hierarchy of physical components)
identified by the Entity-MIB, then this object's value is
the value of the entPhysicalIndex of that component (or of
the component at the root of that hierarchy). If there is
no correspondence to a physical component (or no component
that has an entPhysicalIndex value), then the value of this
object is zero."
REFERENCE
"entPhysicalIndex is defined in the Entity MIB, RFC 2737."
::= { fcmInstanceEntry 4 }
fcmInstanceSoftwareIndex OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"If this management instance corresponds to an installed
software module identified in the Host Resources MIB, then
this object's value is the value of the hrSWInstalledIndex
of that module. If there is no correspondence to an
installed software module (or no module that has a
hrSWInstalledIndex value), then the value of this object is
zero."
REFERENCE
"hrSWInstalledIndex is defined in the Host Resources MIB,
RFC 2790"
::= { fcmInstanceEntry 5 }
fcmInstanceStatus OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
ok(2), -- able to operate correctly
warning(3), -- needs attention
failed(4) -- something has failed
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Overall status of the Fibre Channel entity/entities managed
by this management instance. The value should reflect the
most serious status of such entities."
::= { fcmInstanceEntry 6 }
fcmInstanceTextName OBJECT-TYPE
SYNTAX SnmpAdminString (SIZE(0..79))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"A textual name for this management instance and the Fibre
Channel entity/entities that it is managing."
::= { fcmInstanceEntry 7 }
fcmInstanceDescr OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"A textual description of this management instance and the
Fibre Channel entity/entities that it is managing."
::= { fcmInstanceEntry 8 }
fcmInstanceFabricId OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The globally unique Fabric Identifier that identifies the
fabric to which the Fibre Channel entity/entities managed by
this management instance are connected, or, of which they
are a part. This is typically the Node WWN of the principal
switch of a Fibre Channel fabric. The zero-length string
indicates that the fabric identifier is unknown (or not
applicable).
In the event that the Fibre Channel entity/entities managed
by this management instance is/are connected to multiple
fabrics, then this object records the first (known) one."
::= { fcmInstanceEntry 9 }
Next up is the switch table, which is where the domain IDs and principal-switch flags live ๐ฆ
--********************************
-- The Fibre Channel Switch Table
--
fcmSwitchTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmSwitchEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of information about Fibre Channel switches that
are managed by Fibre Channel management instances. Each
Fibre Channel management instance can manage one or more
Fibre Channel switches."
::= { fcmgmtObjects 2 }
fcmSwitchEntry OBJECT-TYPE
SYNTAX FcmSwitchEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about a particular Fibre Channel switch that is
managed by the management instance given by
fcmInstanceIndex."
INDEX { fcmInstanceIndex, fcmSwitchIndex }
::= { fcmSwitchTable 1 }
FcmSwitchEntry ::=
SEQUENCE {
fcmSwitchIndex Unsigned32,
fcmSwitchDomainId FcDomainIdOrZero,
fcmSwitchPrincipal TruthValue,
fcmSwitchWWN FcNameIdOrZero
}
fcmSwitchIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary integer that uniquely identifies a Fibre
Channel switch amongst those managed by one Fibre Channel
management instance.
It is mandatory to keep this value constant between restarts
of the agent, and to make every possible effort to keep it
constant across restarts."
::= { fcmSwitchEntry 1 }
fcmSwitchDomainId OBJECT-TYPE
SYNTAX FcDomainIdOrZero
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The Domain Id of this switch. A value of zero indicates
that a switch has not (yet) been assigned a Domain Id."
::= { fcmSwitchEntry 2 }
fcmSwitchPrincipal OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of whether this switch is the principal
switch within its fabric."
::= { fcmSwitchEntry 3 }
fcmSwitchWWN OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The World Wide Name of this switch."
::= { fcmSwitchEntry 4 }
And last for this part, the port table, which starts out as a single entry and has more coming in the next part ๐
--********************************
-- The Fibre Channel Port Table
--
fcmPortTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about Fibre Channel ports. Each Fibre Channel
port is represented by one entry in the IF-MIB's ifTable."
REFERENCE
"RFC 2863, The Interfaces Group MIB, June 2000."
::= { fcmgmtObjects 3 }
fcmPortEntry OBJECT-TYPE
SYNTAX FcmPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry contains information about a specific port."
INDEX { ifIndex }
::= { fcmPortTable 1 }
FcmPortEntry ::=
SEQUENCE {
fcmPortInstanceIndex Unsigned32,
fcmPortWwn FcNameIdOrZero,
fcmPortNodeWwn FcNameIdOrZero,
fcmPortAdminType FcPortType,
fcmPortOperType FcPortType,
fcmPortFcCapClass FcClasses,
fcmPortFcOperClass FcClasses,
fcmPortTransmitterType INTEGER,
fcmPortConnectorType INTEGER,
fcmPortSerialNumber SnmpAdminString,
fcmPortPhysicalNumber Unsigned32,
fcmPortAdminSpeed INTEGER,
fcmPortCapProtocols BITS,
fcmPortOperProtocols BITS
}
Okay bestie, the port objects keep going and they are so detailed ๐ฆ Here's the next batch, starting with the instance index that tells you which management instance runs each port ๐
fcmPortInstanceIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of fcmInstanceIndex by which the Fibre Channel
management instance, which manages this port, is identified
in the fcmInstanceTable."
::= { fcmPortEntry 1 }
fcmPortWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The World Wide Name of the port, or the zero-length string
if the port does not have a WWN."
::= { fcmPortEntry 2 }
fcmPortNodeWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The World Wide Name of the Node that contains this port, or
the zero-length string if the port does not have a node
WWN."
::= { fcmPortEntry 3 }
fcmPortAdminType OBJECT-TYPE
SYNTAX FcPortType
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The administratively desired type of this port."
::= { fcmPortEntry 4 }
fcmPortOperType OBJECT-TYPE
SYNTAX FcPortType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current operational type of this port."
::= { fcmPortEntry 5 }
fcmPortFcCapClass OBJECT-TYPE
SYNTAX FcClasses
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The classes of service capability of this port."
::= { fcmPortEntry 6 }
fcmPortFcOperClass OBJECT-TYPE
SYNTAX FcClasses
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The classes of service that are currently operational on
this port. For an FL_Port, this is the union of the classes
being supported across all attached NL_Ports."
::= { fcmPortEntry 7 }
fcmPortTransmitterType OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
other(2),
shortwave850nm(3),
longwave1550nm(4),
longwave1310nm(5),
electrical(6)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The technology of the port transceiver."
REFERENCE
"FC-GS-3, section 6.1.2.2.3"
::= { fcmPortEntry 8 }
fcmPortConnectorType OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
other(2),
gbic(3),
embedded(4),
glm(5),
gbicSerialId(6),
gbicNoSerialId(7),
sfpSerialId(8),
sfpNoSerialId(9)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The module type of the port connector. This object refers
to the hardware implementation of the port. It will be
'embedded' if the hardware equivalent to Gigabit interface
card (GBIC) is part of the line card and is unremovable. It
will be 'glm' if it's a gigabit link module (GLM). It will
be 'gbicSerialId' if the GBIC serial id can be read, else it
will be 'gbicNoSerialId'. It will be 'sfpSerialId' if the
small form factor (SFP) pluggable GBICs serial id can be
read, else it will be 'sfpNoSerialId'."
REFERENCE
"FC-GS-3, section 6.1.2.2.4"
::= { fcmPortEntry 9 }
fcmPortSerialNumber OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The serial number associated with the port (e.g., for a
GBIC). If not applicable, the object's value is a zero-
length string."
REFERENCE
"FC-GS-3, section 6.1.2.2.4"
::= { fcmPortEntry 10 }
fcmPortPhysicalNumber OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This is the port's 'Physical Port Number' as defined by
GS-3."
REFERENCE
"FC-GS-3, section 6.1.2.2.5"
::= { fcmPortEntry 11 }
fcmPortAdminSpeed OBJECT-TYPE
SYNTAX INTEGER {
auto(1),
eighthGbs(2), -- 125Mbs
quarterGbs(3), -- 250Mbs
halfGbs(4), -- 500Mbs
oneGbs(5), -- 1Gbs
twoGbs(6), -- 2Gbs
fourGbs(7), -- 4Gbs
tenGbs(8) -- 10Gbs
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The speed of the interface:
'auto' - auto-negotiation
'tenGbs' - 10Gbs
'fourGbs' - 4Gbs
'twoGbs' - 2Gbs
'oneGbs' - 1Gbs
'halfGbs' - 500Mbs
'quarterGbs' - 250Mbs
'eighthGbs' - 125Mbs"
::= { fcmPortEntry 12 }
fcmPortCapProtocols OBJECT-TYPE
SYNTAX BITS {
unknown(0),
loop(1),
fabric(2),
scsi(3),
tcpIp(4),
vi(5),
ficon(6)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A bit mask specifying the higher level protocols that are
capable of running over this port. Note that for generic
Fx_Ports, E_Ports, and B_Ports, this object will indicate
all protocols."
::= { fcmPortEntry 13 }
fcmPortOperProtocols OBJECT-TYPE
SYNTAX BITS {
unknown(0),
loop(1),
fabric(2),
scsi(3),
tcpIp(4),
vi(5),
ficon(6)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A bit mask specifying the higher level protocols that are
currently operational on this port. For Fx_Ports, E_Ports,
and B_Ports, this object will typically have the value
'unknown'."
::= { fcmPortEntry 14 }
--********************************
-- Port Statistics
--
fcmPortStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmPortStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of statistics for Fibre Channel ports."
::= { fcmgmtObjects 4 }
fcmPortStatsEntry OBJECT-TYPE
SYNTAX FcmPortStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing statistics for a Fibre Channel port.
If any counter in this table suffers a discontinuity, the
value of ifCounterDiscontinuityTime (defined in the IF-MIB)
must be updated."
REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000."
AUGMENTS { fcmPortEntry }
::= { fcmPortStatsTable 1 }
FcmPortStatsEntry ::=
SEQUENCE {
fcmPortBBCreditZeros Counter64,
fcmPortFullInputBuffers Counter64,
fcmPortClass2RxFrames Counter64,
fcmPortClass2RxOctets Counter64,
fcmPortClass2TxFrames Counter64,
fcmPortClass2TxOctets Counter64,
fcmPortClass2Discards Counter64,
fcmPortClass2RxFbsyFrames Counter64,
fcmPortClass2RxPbsyFrames Counter64,
fcmPortClass2RxFrjtFrames Counter64,
fcmPortClass2RxPrjtFrames Counter64,
fcmPortClass2TxFbsyFrames Counter64,
fcmPortClass2TxPbsyFrames Counter64,
fcmPortClass2TxFrjtFrames Counter64,
fcmPortClass2TxPrjtFrames Counter64,
fcmPortClass3RxFrames Counter64,
fcmPortClass3RxOctets Counter64,
fcmPortClass3TxFrames Counter64,
fcmPortClass3TxOctets Counter64,
fcmPortClass3Discards Counter64,
fcmPortClassFRxFrames Counter32,
fcmPortClassFRxOctets Counter32,
fcmPortClassFTxFrames Counter32,
fcmPortClassFTxOctets Counter32,
fcmPortClassFDiscards Counter32
}
fcmPortBBCreditZeros OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of transitions in/out of the buffer-to-buffer
credit zero state. The other side is not providing any
credit."
::= { fcmPortStatsEntry 1 }
fcmPortFullInputBuffers OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of occurrences when all input buffers of a port
were full and outbound buffer-to-buffer credit transitioned
to zero, i.e., there became no credit to provide to other
side."
::= { fcmPortStatsEntry 2 }
fcmPortClass2RxFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 2 frames received at this port."
::= { fcmPortStatsEntry 3 }
fcmPortClass2RxOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class 2 frames received
at this port."
::= { fcmPortStatsEntry 4 }
fcmPortClass2TxFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 2 frames transmitted out of this port."
::= { fcmPortStatsEntry 5 }
fcmPortClass2TxOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class 2 frames
transmitted out of this port."
::= { fcmPortStatsEntry 6 }
fcmPortClass2Discards OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 2 frames that were discarded upon
reception at this port."
::= { fcmPortStatsEntry 7 }
fcmPortClass2RxFbsyFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that F_BSY was returned to this port as
a result of a Class 2 frame that could not be delivered to
the other end of the link. This can occur when either the
fabric or the destination port is temporarily busy. Note
that this counter will never increment for an F_Port."
::= { fcmPortStatsEntry 8 }
fcmPortClass2RxPbsyFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that P_BSY was returned to this port as
a result of a Class 2 frame that could not be delivered to
the other end of the link. This can occur when the
destination port is temporarily busy."
::= { fcmPortStatsEntry 9 }
fcmPortClass2RxFrjtFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that F_RJT was returned to this port as
a result of a Class 2 frame that was rejected by the fabric.
Note that this counter will never increment for an F_Port."
::= { fcmPortStatsEntry 10 }
fcmPortClass2RxPrjtFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that P_RJT was returned to this port as
a result of a Class 2 frame that was rejected at the
destination N_Port."
::= { fcmPortStatsEntry 11 }
Okay so the port table is basically the full profile of each port ๐ง It covers identity (the WWNs ๐ซถ), type and speed, what protocols it can run, and what it's actually running right now.
Then we flip to Port Statistics ๐ each counter is its own little OBJECT-TYPE, all Counter64 ๐ฅ and the table is held together by fcmPortStatsEntry, which AUGMENTS fcmPortEntry ๐
okay the Class 2 TX busy and reject counters are done, so now we're in the Class 3 and Class F era ๐ ๐ง
fcmPortClass2TxFbsyFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that F_BSY was generated by this port
as a result of a Class 2 frame that could not be delivered
because either the Fabric or the destination port was
temporarily busy. Note that this counter will never
increment for an N_Port."
::= { fcmPortStatsEntry 12 }
fcmPortClass2TxPbsyFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that P_BSY was generated by this port
as a result of a Class 2 frame that could not be delivered
because the destination port was temporarily busy. Note
that this counter will never increment for an F_Port."
::= { fcmPortStatsEntry 13 }
fcmPortClass2TxFrjtFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that F_RJT was generated by this port
as a result of a Class 2 frame being rejected by the fabric.
Note that this counter will never increment for an N_Port."
::= { fcmPortStatsEntry 14 }
fcmPortClass2TxPrjtFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that P_RJT was generated by this port
as a result of a Class 2 frame being rejected at the
destination N_Port. Note that this counter will never
increment for an F_Port."
::= { fcmPortStatsEntry 15 }
fcmPortClass3RxFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 3 frames received at this port."
::= { fcmPortStatsEntry 16 }
fcmPortClass3RxOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class 3 frames received
at this port."
::= { fcmPortStatsEntry 17 }
fcmPortClass3TxFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 3 frames transmitted out of this port."
::= { fcmPortStatsEntry 18 }
fcmPortClass3TxOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class 3 frames
transmitted out of this port."
::= { fcmPortStatsEntry 19 }
fcmPortClass3Discards OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 3 frames that were discarded upon
reception at this port."
::= { fcmPortStatsEntry 20 }
fcmPortClassFRxFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class F frames received at this port."
::= { fcmPortStatsEntry 21 }
fcmPortClassFRxOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class F frames received
at this port."
::= { fcmPortStatsEntry 22 }
fcmPortClassFTxFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class F frames transmitted out of this port."
::= { fcmPortStatsEntry 23 }
fcmPortClassFTxOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class F frames
transmitted out of this port."
::= { fcmPortStatsEntry 24 }
fcmPortClassFDiscards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class F frames that were discarded upon
reception at this port."
::= { fcmPortStatsEntry 25 }
bestie, next up is the low-capacity section ๐ these are the Counter32 stats for systems that can't do Counter64 yet ๐
--********************************
-- Port Low-capacity Statistics
--
-- these are Counter32 "low-capacity" counters for systems
-- that do not support Counter64's
fcmPortLcStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmPortLcStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of Counter32-based statistics for systems that do
not support Counter64."
::= { fcmgmtObjects 5 }
fcmPortLcStatsEntry OBJECT-TYPE
SYNTAX FcmPortLcStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing low-capacity (i.e., based on Counter32)
statistics for a Fibre Channel port. If any counter in this
table suffers a discontinuity, the value of
ifCounterDiscontinuityTime (defined in the IF-MIB) must be
updated."
REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000."
AUGMENTS { fcmPortEntry }
::= { fcmPortLcStatsTable 1 }
FcmPortLcStatsEntry ::=
SEQUENCE {
fcmPortLcBBCreditZeros Counter32,
fcmPortLcFullInputBuffers Counter32,
fcmPortLcClass2RxFrames Counter32,
fcmPortLcClass2RxOctets Counter32,
fcmPortLcClass2TxFrames Counter32,
fcmPortLcClass2TxOctets Counter32,
fcmPortLcClass2Discards Counter32,
fcmPortLcClass2RxFbsyFrames Counter32,
fcmPortLcClass2RxPbsyFrames Counter32,
fcmPortLcClass2RxFrjtFrames Counter32,
fcmPortLcClass2RxPrjtFrames Counter32,
fcmPortLcClass2TxFbsyFrames Counter32,
fcmPortLcClass2TxPbsyFrames Counter32,
fcmPortLcClass2TxFrjtFrames Counter32,
fcmPortLcClass2TxPrjtFrames Counter32,
fcmPortLcClass3RxFrames Counter32,
fcmPortLcClass3RxOctets Counter32,
fcmPortLcClass3TxFrames Counter32,
fcmPortLcClass3TxOctets Counter32,
fcmPortLcClass3Discards Counter32
}
fcmPortLcBBCreditZeros OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of transitions in/out of the buffer-to-buffer
credit zero state. The other side is not providing any
credit."
::= { fcmPortLcStatsEntry 1 }
fcmPortLcFullInputBuffers OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of occurrences when all input buffers of a port
were full and outbound buffer-to-buffer credit transitioned
to zero, i.e., there became no credit to provide to other
side."
::= { fcmPortLcStatsEntry 2 }
fcmPortLcClass2RxFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 2 frames received at this port."
::= { fcmPortLcStatsEntry 3 }
fcmPortLcClass2RxOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class 2 frames received
at this port."
::= { fcmPortLcStatsEntry 4 }
fcmPortLcClass2TxFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 2 frames transmitted out of this port."
::= { fcmPortLcStatsEntry 5 }
fcmPortLcClass2TxOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class 2 frames
transmitted out of this port."
::= { fcmPortLcStatsEntry 6 }
fcmPortLcClass2Discards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 2 frames that were discarded upon
reception at this port."
::= { fcmPortLcStatsEntry 7 }
fcmPortLcClass2RxFbsyFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that F_BSY was returned to this port as
a result of a Class 2 frame that could not be delivered to
the other end of the link. This can occur when either the
fabric or the destination port is temporarily busy. Note
that this counter will never increment for an F_Port."
::= { fcmPortLcStatsEntry 8 }
fcmPortLcClass2RxPbsyFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that P_BSY was returned to this port as
a result of a Class 2 frame that could not be delivered to
the other end of the link. This can occur when the
destination port is temporarily busy."
::= { fcmPortLcStatsEntry 9 }
fcmPortLcClass2RxFrjtFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that F_RJT was returned to this port as
a result of a Class 2 frame that was rejected by the fabric.
Note that this counter will never increment for an F_Port."
::= { fcmPortLcStatsEntry 10 }
fcmPortLcClass2RxPrjtFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that P_RJT was returned to this port as
a result of a Class 2 frame that was rejected at the
destination N_Port."
::= { fcmPortLcStatsEntry 11 }
fcmPortLcClass2TxFbsyFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that F_BSY was generated by this port
as a result of a Class 2 frame that could not be delivered
because either the Fabric or the destination port was
temporarily busy. Note that this counter will never
increment for an N_Port."
::= { fcmPortLcStatsEntry 12 }
fcmPortLcClass2TxPbsyFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that P_BSY was generated by this port
as a result of a Class 2 frame that could not be delivered
because the destination port was temporarily busy. Note
that this counter will never increment for an F_Port."
::= { fcmPortLcStatsEntry 13 }
fcmPortLcClass2TxFrjtFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that F_RJT was generated by this port
as a result of a Class 2 frame being rejected by the fabric.
Note that this counter will never increment for an N_Port."
::= { fcmPortLcStatsEntry 14 }
fcmPortLcClass2TxPrjtFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that P_RJT was generated by this port
as a result of a Class 2 frame being rejected at the
destination N_Port. Note that this counter will never
increment for an F_Port."
::= { fcmPortLcStatsEntry 15 }
fcmPortLcClass3RxFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 3 frames received at this port."
::= { fcmPortLcStatsEntry 16 }
fcmPortLcClass3RxOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class 3 frames received
at this port."
::= { fcmPortLcStatsEntry 17 }
Okay bestie, the class 3 counters are wrapping up, so let's see how the port error counters are set up. ๐
fcmPortLcClass3TxFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 3 frames transmitted out of this port."
::= { fcmPortLcStatsEntry 18 }
fcmPortLcClass3TxOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets contained in Class 3 frames
transmitted out of this port."
::= { fcmPortLcStatsEntry 19 }
fcmPortLcClass3Discards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Class 3 frames that were discarded upon
reception at this port."
::= { fcmPortLcStatsEntry 20 }
--********************************
-- Port Error Counters
--
Port Error Counters ๐
Now this is the error squad! ๐ฅ Everything in this table is a read-only Counter32, so each one just keeps tally of something that went wrong on the port. The table itself is fcmPortErrorsTable, and it sits under fcmgmtObjects 6. Its entry is fcmPortErrorsEntry, which AUGMENTS fcmPortEntry. The description says that if any counter here has a discontinuity, ifCounterDiscontinuityTime from the IF-MIB has to get updated. Very responsible of them ๐ซถ
fcmPortErrorsTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmPortErrorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Error counters for Fibre Channel ports."
::= { fcmgmtObjects 6 }
fcmPortErrorsEntry OBJECT-TYPE
SYNTAX FcmPortErrorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Error counters for a Fibre Channel port. If any counter in
this table suffers a discontinuity, the value of
ifCounterDiscontinuityTime (defined in the IF-MIB) must be
updated."
REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000."
AUGMENTS { fcmPortEntry }
::= { fcmPortErrorsTable 1 }
FcmPortErrorsEntry ::=
SEQUENCE {
fcmPortRxLinkResets Counter32,
fcmPortTxLinkResets Counter32,
fcmPortLinkResets Counter32,
fcmPortRxOfflineSequences Counter32,
fcmPortTxOfflineSequences Counter32,
fcmPortLinkFailures Counter32,
fcmPortLossofSynchs Counter32,
fcmPortLossofSignals Counter32,
fcmPortPrimSeqProtocolErrors Counter32,
fcmPortInvalidTxWords Counter32,
fcmPortInvalidCRCs Counter32,
fcmPortInvalidOrderedSets Counter32,
fcmPortFrameTooLongs Counter32,
fcmPortTruncatedFrames Counter32,
fcmPortAddressErrors Counter32,
fcmPortDelimiterErrors Counter32,
fcmPortEncodingDisparityErrors Counter32,
fcmPortOtherErrors Counter32
}
fcmPortRxLinkResets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Link Reset (LR) Primitive Sequences
received."
::= { fcmPortErrorsEntry 1 }
fcmPortTxLinkResets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Link Reset (LR) Primitive Sequences
transmitted."
::= { fcmPortErrorsEntry 2 }
fcmPortLinkResets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times the reset link protocol was initiated
on this port. This includes the number of Loop
Initialization Primitive (LIP) events on an arbitrated loop
port."
::= { fcmPortErrorsEntry 3 }
fcmPortRxOfflineSequences OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Offline (OLS) Primitive Sequences received at
this port."
::= { fcmPortErrorsEntry 4 }
fcmPortTxOfflineSequences OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Offline (OLS) Primitive Sequences transmitted
by this port."
::= { fcmPortErrorsEntry 5 }
fcmPortLinkFailures OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of link failures. This count is part of FC-PH's
Link Error Status Block (LESB)."
REFERENCE
"FC-PH, rev 4.3, 1 June 1994, section 29.8 [FC-PH]."
::= { fcmPortErrorsEntry 6 }
fcmPortLossofSynchs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of instances of synchronization loss detected at
this port. This count is part of FC-PH's Link Error Status
Block (LESB)."
REFERENCE
"FC-PH, rev 4.3, 1 June 1994, section 29.8."
::= { fcmPortErrorsEntry 7 }
fcmPortLossofSignals OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of instances of signal loss detected at this
port. This count is part of FC-PH's Link Error Status Block
(LESB)."
REFERENCE
"FC-PH, rev 4.3, 1 June 1994, section 29.8."
::= { fcmPortErrorsEntry 8 }
fcmPortPrimSeqProtocolErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of primitive sequence protocol errors detected
at this port. This count is part of FC-PH's Link Error
Status Block (LESB)."
REFERENCE
"FC-PH, rev 4.3, 1 June 1994, section 29.8."
::= { fcmPortErrorsEntry 9 }
fcmPortInvalidTxWords OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of invalid transmission words received at this
port. This count is part of FC-PH's Link Error Status Block
(LESB)."
REFERENCE
"FC-PH, rev 4.3, 1 June 1994, section 29.8."
::= { fcmPortErrorsEntry 10 }
fcmPortInvalidCRCs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of frames received with an invalid CRC. This
count is part of FC-PH's Link Error Status Block (LESB)."
REFERENCE
"FC-PH, rev 4.3, 1 June 1994, section 29.8."
::= { fcmPortErrorsEntry 11 }
fcmPortInvalidOrderedSets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of invalid ordered sets received at this port."
::= { fcmPortErrorsEntry 12 }
fcmPortFrameTooLongs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of frames received at this port for which the
frame length was greater than what was agreed to in
FLOGI/PLOGI. This could be caused by losing the end of
frame delimiter."
::= { fcmPortErrorsEntry 13 }
fcmPortTruncatedFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of frames received at this port for which the
frame length was less than the minimum indicated by the
frame header - normally 24 bytes, but it could be more if
the DFCTL field indicates an optional header should have
been present."
::= { fcmPortErrorsEntry 14 }
fcmPortAddressErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of frames received with unknown addressing; for
example, an unknown SID or DID."
::= { fcmPortErrorsEntry 15 }
fcmPortDelimiterErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of invalid frame delimiters received at this
port. An example is a frame with a class 2 start and a
class 3 at the end."
::= { fcmPortErrorsEntry 16 }
fcmPortEncodingDisparityErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of encoding disparity errors received at this
port."
::= { fcmPortErrorsEntry 17 }
fcmPortOtherErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of errors that were detected on this port but
not counted by any other error counter in this row."
::= { fcmPortErrorsEntry 18 }
--********************************
-- The Fibre Channel Fx_Port Table
--
The Fibre Channel Fx_Port Table ๐ฆ
Next up is the Fx_Port table, which holds extra info that's only about Fx_Ports. ๐ง Each row in fcmFxPortTable matches one fcmPortTable entry that represents an Fx_Port. The timers and capability values in here are read-only, so the switch doesn't get to change them through this table. The rows are indexed by ifIndex.
fcmFxPortTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmFxPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Additional information about Fibre Channel ports that is
specific to Fx_Ports. This table will contain one entry for
each fcmPortTable entry that represents an Fx_Port."
::= { fcmgmtObjects 7 }
fcmFxPortEntry OBJECT-TYPE
SYNTAX FcmFxPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry contains information about a specific Fx_Port."
INDEX { ifIndex }
::= { fcmFxPortTable 1 }
FcmFxPortEntry ::=
SEQUENCE {
fcmFxPortRatov Unsigned32,
fcmFxPortEdtov Unsigned32,
fcmFxPortRttov Unsigned32,
fcmFxPortHoldTime Unsigned32,
fcmFxPortCapBbCreditMax FcBbCredit,
fcmFxPortCapBbCreditMin FcBbCredit,
fcmFxPortCapDataFieldSizeMax FcDataFieldSize,
fcmFxPortCapDataFieldSizeMin FcDataFieldSize,
fcmFxPortCapClass2SeqDeliv TruthValue,
fcmFxPortCapClass3SeqDeliv TruthValue,
fcmFxPortCapHoldTimeMax Unsigned32,
fcmFxPortCapHoldTimeMin Unsigned32
}
fcmFxPortRatov OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Resource_Allocation_Timeout Value configured for this
Fx_Port. This is used as the timeout value for determining
when to reuse an Nx_Port resource such as a
Recovery_Qualifier. It represents the Error_Detect_Timeout
value (see fcmFxPortEdtov) plus twice the maximum time that
a frame may be delayed within the Fabric and still be
delivered."
::= { fcmFxPortEntry 1 }
fcmFxPortEdtov OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Error_Detect_Timeout value configured for this Fx_Port.
This is used as the timeout value for detecting an error
condition."
::= { fcmFxPortEntry 2 }
fcmFxPortRttov OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Receiver_Transmitter_Timeout value of this Fx_Port.
This is used by the receiver logic to detect a Loss of
Synchronization."
::= { fcmFxPortEntry 3 }
fcmFxPortHoldTime OBJECT-TYPE
SYNTAX Unsigned32
UNITS "microseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum time that this Fx_Port shall hold a frame
before discarding the frame if it is unable to deliver the
frame. The value 0 means that this Fx_Port does not support
this parameter."
::= { fcmFxPortEntry 4 }
fcmFxPortCapBbCreditMax OBJECT-TYPE
SYNTAX FcBbCredit
UNITS "buffers"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of receive buffers that this port is
capable of making available for holding frames from attached
Nx_Port(s)."
::= { fcmFxPortEntry 5 }
fcmFxPortCapBbCreditMin is the next one, and it's giving "what's the least I can handle?" ๐ ๐
fcmFxPortCapBbCreditMin OBJECT-TYPE
SYNTAX FcBbCredit
UNITS "buffers"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum number of receive buffers that this port is
capable of making available for holding frames from attached
Nx_Port(s)."
::= { fcmFxPortEntry 6 }
fcmFxPortCapDataFieldSizeMax OBJECT-TYPE
SYNTAX FcDataFieldSize
UNITS "bytes"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum size in bytes of the Data Field in a frame that
this Fx_Port is capable of receiving from an attached
Nx_Port."
::= { fcmFxPortEntry 7 }
fcmFxPortCapDataFieldSizeMin OBJECT-TYPE
SYNTAX FcDataFieldSize
UNITS "bytes"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum size in bytes of the Data Field in a frame that
this Fx_Port is capable of receiving from an attached
Nx_Port."
::= { fcmFxPortEntry 8 }
fcmFxPortCapClass2SeqDeliv OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of whether this Fx_Port is capable of
supporting Class 2 Sequential Delivery."
::= { fcmFxPortEntry 9 }
fcmFxPortCapClass3SeqDeliv OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of whether this Fx_Port is capable of
supporting Class 3 Sequential Delivery."
::= { fcmFxPortEntry 10 }
fcmFxPortCapHoldTimeMax OBJECT-TYPE
SYNTAX Unsigned32
UNITS "microseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum holding time that this Fx_Port is capable of
supporting."
::= { fcmFxPortEntry 11 }
fcmFxPortCapHoldTimeMin OBJECT-TYPE
SYNTAX Unsigned32
UNITS "microseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum holding time that this Fx_Port is capable of
supporting."
::= { fcmFxPortEntry 12 }
--********************************
-- The Fibre Channel Inter-Switch Port Table
--
fcmISPortTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmISPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Additional information about E_Ports, B_Ports, and any
other type of Fibre Channel port to which inter-switch links
can be connected. This table will contain one entry for
each fcmPortTable entry that represents such a port."
::= { fcmgmtObjects 8 }
fcmISPortEntry OBJECT-TYPE
SYNTAX FcmISPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry contains information about a specific port
connected to an inter-switch link."
INDEX { ifIndex }
::= { fcmISPortTable 1 }
FcmISPortEntry ::=
SEQUENCE {
fcmISPortClassFCredit FcBbCredit,
fcmISPortClassFDataFieldSize FcDataFieldSize
}
fcmISPortClassFCredit OBJECT-TYPE
SYNTAX FcBbCredit
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The maximum number of Class F data frames that can be
transmitted by the inter-switch port without receipt of ACK
or Link_Response frames."
::= { fcmISPortEntry 1 }
fcmISPortClassFDataFieldSize OBJECT-TYPE
SYNTAX FcDataFieldSize
UNITS "bytes"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Receive Data Field Size that the inter-switch port has
agreed to support for Class F frames to/from this port. The
size specifies the largest Data Field Size for an FT_1
frame."
::= { fcmISPortEntry 2 }
Next up is the Fabric Login table, which is where the switch keeps track of the Nx_Ports that are logged in to its Fx_Ports. Lots of good stuff in here ๐ง๐ธ
--********************************
-- The Fabric Login table
--
-- This table contains the information held by FC switches
-- about the Nx_Ports that are logged-in/attached to their
-- Fx_Ports
fcmFLoginTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmFLoginEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table that contains one entry for each Nx_Port logged-
in/attached to a particular Fx_Port in the switch. Each
entry contains the services parameters established during
the most recent Fabric Login, explicit or implicit. Note
that an Fx_Port may have one or more Nx_Ports attached to
it."
::= { fcmgmtObjects 9 }
fcmFLoginEntry OBJECT-TYPE
SYNTAX FcmFLoginEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing service parameters established from a
successful Fabric Login."
INDEX { ifIndex, fcmFLoginNxPortIndex }
::= { fcmFLoginTable 1 }
FcmFLoginEntry ::=
SEQUENCE {
fcmFLoginNxPortIndex Unsigned32,
fcmFLoginPortWwn FcNameIdOrZero,
fcmFLoginNodeWwn FcNameIdOrZero,
fcmFLoginBbCreditModel FcBbCreditModel,
fcmFLoginBbCredit FcBbCredit,
fcmFLoginClassesAgreed FcClasses,
fcmFLoginClass2SeqDelivAgreed TruthValue,
fcmFLoginClass2DataFieldSize FcDataFieldSize,
fcmFLoginClass3SeqDelivAgreed TruthValue,
fcmFLoginClass3DataFieldSize FcDataFieldSize
}
fcmFLoginNxPortIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary integer that uniquely identifies an Nx_Port
amongst all those attached to the Fx_Port indicated by
ifIndex.
After a value of this object is assigned to a particular
Nx_Port, that value can be re-used when and only when it is
assigned to the same Nx_Port, or, after a reset of the value
of the relevant instance of ifCounterDiscontinuityTime."
REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000."
::= { fcmFLoginEntry 1 }
fcmFLoginPortWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The port name of the attached Nx_Port, or the zero-length
string if unknown."
::= { fcmFLoginEntry 2 }
fcmFLoginNodeWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The node name of the attached Nx_Port, or the zero-length
string if unknown."
::= { fcmFLoginEntry 3 }
fcmFLoginBbCreditModel OBJECT-TYPE
SYNTAX FcBbCreditModel
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The buffer-to-buffer credit model in use by the Fx_Port."
::= { fcmFLoginEntry 4 }
fcmFLoginBbCredit OBJECT-TYPE
SYNTAX FcBbCredit
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of buffers available for holding frames to be
transmitted to the attached Nx_Port. These buffers are for
buffer-to-buffer flow control in the direction from Fx_Port
to Nx_Port."
::= { fcmFLoginEntry 5 }
fcmFLoginClassesAgreed OBJECT-TYPE
SYNTAX FcClasses
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Classes of Service that the Fx_Port has agreed to
support for this Nx_Port."
::= { fcmFLoginEntry 6 }
fcmFLoginClass2SeqDelivAgreed OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of whether the Fx_Port has agreed to support
Class 2 sequential delivery for this Nx_Port. This is only
meaningful if Class 2 service has been agreed upon."
::= { fcmFLoginEntry 7 }
fcmFLoginClass2DataFieldSize OBJECT-TYPE
SYNTAX FcDataFieldSize
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Receive Data Field Size that the Fx_Port has agreed to
support for Class 2 frames to/from this Nx_Port. The size
specifies the largest Data Field Size for an FT_1 frame.
This is only meaningful if Class 2 service has been agreed
upon."
::= { fcmFLoginEntry 8 }
fcmFLoginClass3SeqDelivAgreed OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of whether the Fx_Port has agreed to support
Class 3 sequential delivery for this Nx_Port. This is only
meaningful if Class 3 service has been agreed upon."
::= { fcmFLoginEntry 9 }
fcmFLoginClass3DataFieldSize OBJECT-TYPE
SYNTAX FcDataFieldSize
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Receive Data Field Size that the Fx_Port has agreed to
support for Class 3 frames to/from this Nx_Port. The size
specifies the largest Data Field Size for an FT_1 frame.
This is only meaningful if Class 3 service has been agreed
upon."
::= { fcmFLoginEntry 10 }
Last bit for this part is the Link table, which helps management apps figure out the network topology ๐ฆ
--********************************
-- The Link table
--
-- This table is intended to assist management applications
-- in determining the topology of the network. The table
-- contains any recent information the known to the agent
-- about Fibre Channel links, not only those that terminate at
-- a local port but also any others for which information
-- is known.
fcmLinkTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcmLinkEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table containing any Fibre Channel link information that
is known to local Fibre Channel managed instances. One end
of such a link is typically at a local port, but the table
can also contain information on links for which neither end
is a local port.
If one end of a link terminates locally, then that end is
termed 'end1'; the other end is termed 'end2'."
::= { fcmgmtObjects 10 }
fcmLinkEntry OBJECT-TYPE
SYNTAX FcmLinkEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing information that a particular Fibre
Channel managed instance has about a Fibre Channel link.
The two ends of the link are called 'end1' and 'end2'."
INDEX { fcmInstanceIndex, fcmLinkIndex }
::= { fcmLinkTable 1 }
FcmLinkEntry ::=
SEQUENCE {
fcmLinkIndex Unsigned32,
fcmLinkEnd1NodeWwn FcNameIdOrZero,
fcmLinkEnd1PhysPortNumber Unsigned32,
fcmLinkEnd1PortWwn FcNameIdOrZero,
fcmLinkEnd2NodeWwn FcNameIdOrZero,
fcmLinkEnd2PhysPortNumber Unsigned32,
fcmLinkEnd2PortWwn FcNameIdOrZero,
fcmLinkEnd2AgentAddress SnmpAdminString,
fcmLinkEnd2PortType FcPortType,
fcmLinkEnd2UnitType FcUnitFunctions,
fcmLinkEnd2FcAddressId FcAddressIdOrZero
}
fcmLinkIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary integer that uniquely identifies one link
within the set of links about which a particular managed
instance has information."
::= { fcmLinkEntry 1 }
fcmLinkEnd1NodeWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The node name of end1, or the zero-length string if
unknown."
::= { fcmLinkEntry 2 }
okay bestie, the link table is still going, so let's keep the vibes up ๐โจ
fcmLinkEnd1PhysPortNumber OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The physical port number of end1, or zero if unknown."
REFERENCE
"FC-GS-3, section 6.1.2.2.5"
::= { fcmLinkEntry 3 }
fcmLinkEnd1PortWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The port WWN of end1, or the zero-length string if unknown.
('end1' is local if this value is equal to the value of
fcmPortWwn in one of the rows of the fcmPortTable.)"
::= { fcmLinkEntry 4 }
fcmLinkEnd2NodeWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The node name of end2, or the zero-length string if
unknown."
::= { fcmLinkEntry 5 }
fcmLinkEnd2PhysPortNumber OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The physical port number of end2, or zero if unknown."
REFERENCE
"FC-GS-3, section 6.1.2.2.5"
::= { fcmLinkEntry 6 }
fcmLinkEnd2PortWwn OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The port WWN of end2, or the zero-length string if
unknown."
::= { fcmLinkEntry 7 }
fcmLinkEnd2AgentAddress OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The address of the management agent for the Fibre Channel
Interconnect Element or Platform of which end2 is a part.
The GS-4 specification provides some information about
management agents. If the address is unknown, the value of
this object is the zero-length string."
REFERENCE
"FC-GS-3, section 6.1.2.1.7"
::= { fcmLinkEntry 8 }
fcmLinkEnd2PortType OBJECT-TYPE
SYNTAX FcPortType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The port type of end2."
REFERENCE
"FC-GS-3, section 6.1.2.2.2"
::= { fcmLinkEntry 9 }
fcmLinkEnd2UnitType OBJECT-TYPE
SYNTAX FcUnitFunctions
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of/function(s) performed by the Fibre Channel
Interconnect Element or Platform of which end2 is a part."
REFERENCE
"FC-GS-3, sections 6.1.2.1.2 and 6.1.2.3.2"
::= { fcmLinkEntry 10 }
fcmLinkEnd2FcAddressId OBJECT-TYPE
SYNTAX FcAddressIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Fibre Channel Address ID of end2, or the zero-length
string if unknown."
::= { fcmLinkEntry 11 }
--********************************
-- Conformance Section
--
fcmgmtCompliances OBJECT IDENTIFIER ::= { fcmgmtConformance 1 }
fcmgmtGroups OBJECT IDENTIFIER ::= { fcmgmtConformance 2 }
fcmgmtCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Describes the requirements for compliance to this Fibre
Channel Management MIB."
MODULE -- this module
MANDATORY-GROUPS { fcmInstanceBasicGroup,
fcmPortBasicGroup,
fcmPortErrorsGroup }
GROUP fcmPortStatsGroup
DESCRIPTION
"This group is mandatory for all systems that
are able to support the Counter64 date type."
GROUP fcmPortClass23StatsGroup
DESCRIPTION
"This group is mandatory only for systems that
keep class-specific traffic statistics on Class 2
and Class 3 traffic and are able to support the
Counter64 date type."
GROUP fcmPortClassFStatsGroup
DESCRIPTION
"This group is mandatory only for FC switches that
keep statistics on Class F traffic."
GROUP fcmPortLcStatsGroup
DESCRIPTION
"This group is mandatory only for agents that can not
support the Counter64 data type and/or need to provide
information accessible by SNMPv1 applications."
GROUP fcmSwitchBasicGroup
DESCRIPTION
"This group is mandatory only for Fibre Channel
managed instances that manage Fibre Channel
switches."
GROUP fcmSwitchPortGroup
DESCRIPTION
"This group is mandatory only for Fibre Channel
managed instances that manage Fibre Channel
switches."
GROUP fcmSwitchLoginGroup
DESCRIPTION
"This group is mandatory only for Fibre Channel
managed instances that manage Fibre Channel
switches."
GROUP fcmLinkBasicGroup
DESCRIPTION
"This group is optional."
OBJECT fcmInstancePhysicalIndex
SYNTAX Integer32 (0)
DESCRIPTION
"Implementation of a non-zero value is not required."
OBJECT fcmInstanceSoftwareIndex
SYNTAX Integer32 (0)
DESCRIPTION
"Implementation of a non-zero value is not required."
OBJECT fcmInstanceTextName
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT fcmInstanceDescr
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT fcmPortAdminType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT fcmPortAdminSpeed
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT fcmSwitchDomainId
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT fcmISPortClassFCredit
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
::= { fcmgmtCompliances 1 }
--********************************
-- Object Groups
--
fcmInstanceBasicGroup OBJECT-GROUP
OBJECTS { fcmInstanceWwn, fcmInstanceFunctions,
fcmInstancePhysicalIndex, fcmInstanceSoftwareIndex,
fcmInstanceStatus, fcmInstanceTextName,
fcmInstanceDescr, fcmInstanceFabricId }
STATUS current
DESCRIPTION
"Basic information about Fibre Channel managed instances."
::= { fcmgmtGroups 1 }
fcmSwitchBasicGroup OBJECT-GROUP
OBJECTS { fcmSwitchDomainId, fcmSwitchPrincipal, fcmSwitchWWN }
STATUS current
DESCRIPTION
"Basic information about Fibre Channel switches."
::= { fcmgmtGroups 2 }
fcmPortBasicGroup OBJECT-GROUP
OBJECTS { fcmPortInstanceIndex, fcmPortWwn, fcmPortNodeWwn,
fcmPortAdminType, fcmPortOperType, fcmPortFcCapClass,
fcmPortFcOperClass, fcmPortTransmitterType,
fcmPortConnectorType, fcmPortSerialNumber,
fcmPortPhysicalNumber, fcmPortAdminSpeed,
fcmPortCapProtocols, fcmPortOperProtocols }
STATUS current
DESCRIPTION
"Basic information about Fibre Channel ports."
::= { fcmgmtGroups 3 }
fcmPortStatsGroup OBJECT-GROUP
OBJECTS { fcmPortBBCreditZeros, fcmPortFullInputBuffers }
STATUS current
DESCRIPTION
"Traffic statistics, which are not specific to any one class
of service, for Fibre Channel ports."
::= { fcmgmtGroups 4 }
fcmPortClass23StatsGroup OBJECT-GROUP
OBJECTS { fcmPortClass2RxFrames, fcmPortClass2RxOctets,
fcmPortClass2TxFrames, fcmPortClass2TxOctets,
fcmPortClass2Discards, fcmPortClass2RxFbsyFrames,
fcmPortClass2RxPbsyFrames,
fcmPortClass2RxFrjtFrames,
fcmPortClass2RxPrjtFrames,
fcmPortClass2TxFbsyFrames,
fcmPortClass2TxPbsyFrames,
fcmPortClass2TxFrjtFrames,
fcmPortClass2TxPrjtFrames, fcmPortClass3RxFrames,
fcmPortClass3RxOctets, fcmPortClass3TxFrames,
fcmPortClass3TxOctets, fcmPortClass3Discards }
STATUS current
DESCRIPTION
"Traffic statistics for Class 2 and Class 3 traffic on Fibre
Channel ports."
::= { fcmgmtGroups 5 }
fcmPortClassFStatsGroup OBJECT-GROUP
OBJECTS { fcmPortClassFRxFrames,
fcmPortClassFRxOctets,
fcmPortClassFTxFrames,
fcmPortClassFTxOctets,
fcmPortClassFDiscards }
STATUS current
DESCRIPTION
"Traffic statistics for Class F traffic on Fibre Channel
ports."
::= { fcmgmtGroups 6 }
fcmPortLcStatsGroup OBJECT-GROUP
OBJECTS { fcmPortLcBBCreditZeros, fcmPortLcFullInputBuffers,
fcmPortLcClass2RxFrames, fcmPortLcClass2RxOctets,
fcmPortLcClass2TxFrames, fcmPortLcClass2TxOctets,
fcmPortLcClass2Discards, fcmPortLcClass3Discards,
fcmPortLcClass3RxFrames, fcmPortLcClass3RxOctets,
fcmPortLcClass3TxFrames, fcmPortLcClass3TxOctets,
fcmPortLcClass2RxFbsyFrames,
fcmPortLcClass2RxPbsyFrames,
fcmPortLcClass2RxFrjtFrames,
fcmPortLcClass2RxPrjtFrames,
fcmPortLcClass2TxFbsyFrames,
fcmPortLcClass2TxPbsyFrames,
fcmPortLcClass2TxFrjtFrames,
fcmPortLcClass2TxPrjtFrames }
STATUS current
DESCRIPTION
"Low-capacity (32-bit) statistics for Fibre Channel ports."
::= { fcmgmtGroups 7 }
fcmPortErrorsGroup OBJECT-GROUP
OBJECTS { fcmPortRxLinkResets, fcmPortTxLinkResets,
fcmPortLinkResets, fcmPortRxOfflineSequences,
fcmPortTxOfflineSequences, fcmPortLinkFailures,
fcmPortLossofSynchs, fcmPortLossofSignals,
fcmPortPrimSeqProtocolErrors, fcmPortInvalidTxWords,
fcmPortInvalidCRCs, fcmPortInvalidOrderedSets,
fcmPortFrameTooLongs, fcmPortTruncatedFrames,
fcmPortAddressErrors, fcmPortDelimiterErrors,
fcmPortEncodingDisparityErrors,
fcmPortOtherErrors }
STATUS current
DESCRIPTION
"Error statistics for Fibre Channel ports."
::= { fcmgmtGroups 8 }
fcmSwitchPortGroup OBJECT-GROUP
OBJECTS { fcmFxPortRatov, fcmFxPortEdtov, fcmFxPortRttov,
fcmFxPortHoldTime, fcmFxPortCapBbCreditMax,
fcmFxPortCapBbCreditMin,
fcmFxPortCapDataFieldSizeMax,
fcmFxPortCapDataFieldSizeMin,
fcmFxPortCapClass2SeqDeliv,
fcmFxPortCapClass3SeqDeliv,
fcmFxPortCapHoldTimeMax,
fcmFxPortCapHoldTimeMin,
fcmISPortClassFCredit,
fcmISPortClassFDataFieldSize }
STATUS current
DESCRIPTION
"Information about ports on a Fibre Channel switch."
::= { fcmgmtGroups 9 }
fcmSwitchLoginGroup OBJECT-GROUP
OBJECTS { fcmFLoginPortWwn, fcmFLoginNodeWwn,
fcmFLoginBbCreditModel, fcmFLoginBbCredit,
fcmFLoginClassesAgreed,
fcmFLoginClass2SeqDelivAgreed,
fcmFLoginClass2DataFieldSize,
fcmFLoginClass3SeqDelivAgreed,
fcmFLoginClass3DataFieldSize }
STATUS current
DESCRIPTION
"Information known to a Fibre Channel switch about
attached/logged-in Nx_Ports."
::= { fcmgmtGroups 10 }
fcmLinkBasicGroup OBJECT-GROUP
OBJECTS { fcmLinkEnd1NodeWwn , fcmLinkEnd1PhysPortNumber,
fcmLinkEnd1PortWwn, fcmLinkEnd2NodeWwn ,
fcmLinkEnd2PhysPortNumber, fcmLinkEnd2PortWwn,
fcmLinkEnd2AgentAddress, fcmLinkEnd2PortType,
fcmLinkEnd2UnitType, fcmLinkEnd2FcAddressId }
STATUS current
DESCRIPTION
"Information about Fibre Channel links."
::= { fcmgmtGroups 11 }
END
7. Acknowledgements โจ
okay so this memo is partly built on the original submission of the Fibre Channel Management Integration MIB to the IETF's IPFC Working Group (it's now available as [MIB-FA]) ๐ง and it obsoletes RFC 2837 ๐
big thank yous to the people who gave feedback that got folded in: Sudhir Pendse (SimpleSoft) ๐ซถ, Steve Senum (Cisco Systems) ๐, and Kha Sin Teow (Brocade) ๐ธ
8. Normative References
- [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
- [RFC2578] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
- [RFC2579] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
- [RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.
- [RFC2737] McCloghrie, K. and A. Bierman, "Entity MIB (Version 2)", RFC 2737, December 1999.
- [RFC2790] Waldbusser, S. and P. Grillo, "Host Resources MIB", RFC 2790, March 2000.
- [RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June 2000.
- [RFC3411] Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, December 2002.
- [FC-AL-2] "Fibre Channel - Arbitrated Loop (FC-AL-2)", ANSI INCITS 332-1999, 1999.
- [FC-BB] "Fibre Channel - Backbone (FC-BB)" ANSI INCITS 342-2001, 2001.
- [FC-FS] "Fibre Channel - Framing and Signaling (FC-FS)" ANSI INCITS 373-2003, April 2003.
- [FC-GS-3] "Fibre Channel - Generic Services - 3 (FC-GS-3)" ANSI INCITS 348-2001, 2001.
- [FC-MI] "Fibre Channel - Methodologies for Interconnects Technical Report (FC-MI)" INCITS TR-30-2002, 2002.
- [FC-PH] "Information Technology - Fibre Channel Physical and Signaling Interface (FC-PH)", ANSI X3.230, 1994.
- [FC-SW-3] "Fibre Channel - Switch Fabric - 3 (FC-SW-3)", ANSI INCITS 384-2004, June 2004.
9. Informative References
- [RFC2741] Daniele, M., Wijnen, B., Ellison, M., and D. Francisco, "Agent Extensibility (AgentX) Protocol Version 1", RFC 2741, January 2000.
- [RFC2837] Teow, K., "Definitions of Managed Objects for the Fabric Element in Fibre Channel Standard", RFC 2837, May 2000.
- [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
- [RFC3433] Bierman, A., Romascanu, D., and K.C. Norseth, "Entity Sensor Management Information Base", RFC 3433, December 2002.
- [MIB-FA] "INCITS Technical Report for Information Technology - Fibre Channel - Management Information Base - FA (MIB-FA)", INCITS, TR-32-2003.
- [WWN1] Snively, R., "New identifier formats based on IEEE registration",
http://standards.ieee.org/regauth/oui/tutorials/fibreformat.html, 16 January 2001. - [WWN2] Snively, R., "Use of the IEEE Registration Authority assigned 'company_id' with the ANSI X3.230 FC-PH Fibre Channel specification and its extensions",
http://standards.ieee.org/regauth/oui/tutorials/fibrecomp_id.html, 24 February 1997.
10. Security Considerations ๐
okay this section is serious, bestie, so pay attention ๐ there are a bunch of management objects in this MIB with a MAX-ACCESS clause of read-write, and these are the ones:
fcmInstanceTextName
fcmInstanceDescr
fcmSwitchDomainId
fcmPortAdminType
fcmPortAdminSpeed
fcmISPortClassFCredit
These objects may be considered sensitive or vulnerable in some network environments. For example, changing network topology or network speed could let an attacker get better performance at the expense of other network users ๐ค, and setting fcmSwitchDomainId to an invalid value could lead to denial of service in some configurations. Supporting SET operations in a non-secure environment without proper protection can have a negative effect on network operations.
Some of the readable objects in this MIB module (meaning objects with a MAX-ACCESS other than not-accessible) may also be considered sensitive or vulnerable in some network environments. So it's important to control even GET and/or NOTIFY access to these objects, and possibly even encrypt their values when sending them over the network via SNMP ๐. In particular, these objects give away information about network topology:
fcmLinkEnd1NodeWwn
fcmLinkEnd1PhysPortNumber
fcmLinkEnd1PortWwn
fcmLinkEnd2NodeWwn
fcmLinkEnd2PhysPortNumber
fcmLinkEnd2PortWwn
fcmLinkEnd2AgentAddress
fcmLinkEnd2PortType
fcmLinkEnd2UnitType
fcmLinkEnd2FcAddressId
SNMP versions before SNMPv3 did not include adequate security. Even if the network itself is secure (for example by using IPSec), there's still no control over who on that secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module.
It is RECOMMENDED that implementors consider the security features provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy).
Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It is then a customer/operator responsibility to make sure that the SNMP entity giving access to an instance of this MIB module is properly configured so that access to the objects is given only to those principals (users) that have legitimate rights to GET or SET (change/create/delete) them ๐ซถ
11. IANA Considerations ๐
11.1. OID Assignment
IANA has made a MIB OID assignment under the transmission branch. Specifically, transmission 56 has been assigned as the OID for fcMgmtMIB. This sub-identifier was requested because this MIB contains the media-specific definitions that correspond to the ifType value of fibreChannel(56) ๐ฆ
11.2. FC Port Type Registry
IANA has set up a registry for Fibre Channel Port Types. It's split into disjointed subset ranges, so let's go through them:
- a 'standard' range for Fibre Channel Port Types that have been standardized by the InterNational Committee for Information Technology Standards (INCITS)'s Technical Committee T11. This range is subject to the 'Expert Review' and 'Specification Required' policies described in [RFC2434], with the following provisions:
- the Expert Reviewer is to be appointed by the IESG.
- the Expert Reviewer shall obtain approval (or rejection) from INCITS Technical Committee T11 via the chair of that Committee. Rejected values shall not be added to the registry.
- if the addition is approved, the Expert shall advise IANA of how to record the reference to the T11 specification document that describes the newly added port type(s), and that is considered to be the "other permanent and readily available reference" required by [RFC2434].
The initial assignments in the 'standard' range will be as follows:
Assigned
Value Type Meaning
-------- ------ -------
1 unknown for use when the type is not known,
or is "unidentified" as specified in
section 5.1.2.10 of [FC-GS-3]
2 other used for types without assigned values
3 -- an obsolete value, not to be re-assigned
4 N_Port see [FC-FS]
5 NL_Port see [FC-FS]
6 F_Port see [FC-FS]
7 FL_Port see [FC-FS]
8 E_Port see [FC-FS]
9 B_Port see [FC-FS]
10 G_Port see [FC-SW-3]
11 GL_Port see [FC-SW-3]
12 F/NL_Port see [FC-AL-2]
The above range extends up to a maximum of 9,999.
- a range assigned under the "Private Use" policy described in [RFC2434] for values intended for private use by one party or among mutually consenting parties. Values in this range extend from 10,000 to 99,999. IANA will not make any allocations from this range.
- values larger than 99,999 are RESERVED.
12. Comparison to the Fibre Channel Management Integration MIB ๐
12.1. Problems with the Fibre Channel Management Integration MIB
The Fibre Channel Management Integration MIB [MIB-FA] had the following major problems, and I'm not gonna sugarcoat them ๐
- It wasn't formatted using SMIv2, which is mandatory.
- The MIB seemed to have been defined with the notion that it would be the only MIB that a Fibre Channel product will require. The notion of an agent implementing just a single MIB was abandoned by the IETF in 1992 as being non-scalable. Rather, a Fibre Channel MIB needed to be another MIB in the continuing series of MIBs defined by the IETF, and thus, it needed to be consistent with its predecessors. In other words, there are existing MIBs that all SNMP agents must support, even if the support of Fibre Channel interfaces is the only functionality that they have. Thus, it was essential that the Fibre Channel Integration MIB contained only objects for information that is specific to Fibre Channel. All objects relevant to non-Fibre Channel environments needed to be removed. This issue applied to a large fraction of the objects defined in the MIB.
- The MIB had some but not complete overlap in functionality with RFC 2837.
- Every SNMP agent must implement the ifTable. The ifTable counters are the MIB objects most well-used by administrators in SNMP management. SNMP agents need to implement a row in the ifTable for each of their network interfaces, including their Fibre Channel interfaces. The IF-MIB requires a media-specific MIB to specify how that type of interface uses the ifTable (see section 4 in RFC 2863). [RFC2837] doesn't do that, nor did the Fibre Channel Integration MIB.
- It incorrectly used the OCTET STRING syntax (instead of Counter32 or Counter64) for counters.
12.2. Detailed Changes
12.2.1. Removal of Sensor-Related Objects
Information about sensors is not specific to Fibre Channel, and therefore should not be in this MIB. (At the time of writing, the IETF's ENTITY MIB Working Group has produced a first draft of a Sensor MIB, see [RFC3433].) This removed the need for:
connUnitSensorTable (and all its contents)
connUnitNumSensors
connUnitSensorStatusChange
12.2.2. Removal of Trap-registration Objects
Information about registering "traps" is not specific to Fibre Channel, and therefore should not be in this MIB. (For similar functionality, see SNMP-NOTIFICATION-MIB and SNMP-TARGET-MIB in RFC 2573.) This removed the need for:
trapMaxClients
trapClientCount
trapRegTable (and all its contents)
12.2.3. Removal of Event-Related Objects โจ
okay so generic events aren't really a Fibre Channel thing, so they got kicked out of this MIB ๐ โโ๏ธ if you want that kind of functionality, go check out the Event group in RFC 2819 and the Notification Log MIB in RFC 3014. the SNMP-NOTIFICATION-MIB also handles filtering notifications, so it's giving "plenty of options elsewhere" ๐ this removed the need for:
connUnitEventTable(and all its contents)connUnitEventFilterconnUnitNumEventsconnUnitMaxEventsconnUnitEventCurrIDconnUnitEventTrap
12.2.4. Removal of Inventory-Related Information ๐ฆ
hardware (physical) stuff lives in the Entity MIB (RFC 2737), and software modules live in the Host Resources MIB (RFC 2790) ๐ง so this MIB doesn't need to repeat all that. instead, two new objects give you indexing into those MIBs: one holds a PhysicalIndex value (or zero), and the other holds an hrSWInstalledIndex value (or zero). these replaced the need for:
connUnitNumportsconnUnitRevsTable(and all its contents)connUnitNumRevsconnUnitPortRevisionconnUnitPortVendorconnUnitProductconnUnitInfoconnUnitSnconnUnitModuleIdconnUnitVendorIdconnUnitDeletedTrap
12.2.5. Removal of Revision Numbers ๐ข
the forward/backward compatibility rules for evolving MIBs are designed so MIBs don't carry revision numbers at all ๐ so this one had to go too. it removed the need for:
revisionNumber
12.2.6. Removal of Other Not FC-Specific Information ๐ โโ๏ธ
some other stuff got yeeted because it wasn't specific to Fibre Channel, so it doesn't belong here ๐ธ the removed list is:
systemURLstatusChangeTimeconfigurationChangeTimeconnUnitUrlconnUnitUpTimeconnUnitStateconnUnitContactconnUnitLocationconnUnitProxyMasterconnUnitControlconnUnitStatusconnUnitStatusChange
12.2.7. Clean-up of Ambiguous/Obsolete Definitions ๐งน
ngl some of the FC Management integration stuff was obsolete or just plain confusing, so we cleaned house ๐ซง these are the ones that got the boot:
statusChangeTime(obsolete)configurationChangeTime(obsolete)connUnitTableChangeTime(obsolete)connUnitStatusChangeTime(obsolete)connUnitConfigurationChangeTime(obsolete)connUnitNumZones(obsolete)connUnitZoneTable(referenced but not defined)connUnitLinkCurrIndex(badly defined)
12.2.8. Use of an ifTable Entry ๐ฆ
okay this one is my favourite because it's so not-chaotic ๐ญ these objects were removed because they just duplicated objects that already exist in the IF-MIB. the table below shows each redundant object next to the IF-MIB object(s) that already do its job:
redundant object existing object(s)
---------------- ------------------
connUnitPortStatCountError ifInErrors & ifOutErrors
connUnitPortStatCountTxObjects ifOutUcastPkts &
ifHCOutUcastPkts
connUnitPortStatCountRxObjects ifInUcastPkts &
ifHCInUcastPkts
connUnitPortStatCountTxElements ifOutOctets &
ifHCOutOctets
connUnitPortStatCountRxElements ifInOctets &
ifHCInOctets
connUnitPortStatCountRxMulticastObjects
ifInMulticastPkts &
ifHCInMulticastPkts
connUnitPortStatCountTxMulticastObjects
ifOutMulticastPkts &
ifHCOutMulticastPkts
connUnitPortStatCountRxBroadcastObjects
ifInBroadcastPkts &
ifHCInBroadcastPkts
connUnitPortStatCountTxBroadcastObjects
ifOutBroadcastPkts &
ifHCOutBroadcastPkts
connUnitPortFCId ifPhysAddress
connUnitPortControl ifAdminStatus
connUnitPortState ifAdminStatus
connUnitPortHWState ifOperStatus
connUnitPortStatus ifOperStatus
connUnitPortName ifAlias
connUnitPortStatObject ifSpecific
connUnitNumports ifNumber
connUnitPortStatusChange linkUp/linkDown
12.2.9. Removed Because of AgentX Difficulty ๐คฏ
so AgentX [RFC2741] has a master agent plus a bunch of sub-agents ๐งฉ implementing the same MIB across several sub-agents is totally doable as long as every table has a common index variable as the first auxiliary object in its INDEX clause. the problem is scalars, because they don't play nicely with AgentX, so all the remaining scalars got removed:
revisionNumberuNumbersystemURL
12.2.10. FC Management Instance ๐
the term "connectivity unit" got swapped out for "FC management instance" ๐ the old term was never properly defined in [MIB-FA], so it was giving a confusing mix of signals to implementers:
- the definition of
FcUnitTypemade it sound functional; - the definition of
uNumbermade it sound physical; - the definition of
connUnitProductmade it sound like a vendor's product; - etc.
so people just grouped things however was easiest for them to reach the management functionality. (one example is a single SNMP agent running several AgentX [RFC2741] sub-agents, each one supporting a separate implementation of the MIB.)
this isn't actually new, either. in practice, a "connectivity unit" means the same thing as a management "instance" in other MIBs, like the IPS WG's own iSCSI MIB ๐ง for this MIB, the meaning is: "a separable managed instance of Fibre Channel functionality". with that definition, "FC management instance" is just the more accurate name, so it's the better choice ๐
12.2.11. Counter Syntax ๐ฅ
all the packet and octet counters are now Counter64's, but Counter32 versions are included too for old agents ๐ซถ the error counters are now Counter32's. (ok so the chance of errors wrapping faster than an hour, even on a 10Gbs Fibre Channel interface, is probably impossible and at most improbable ๐ but if it did happen, the fact that errors are occurring would almost certainly show up in other MIB objects anyway.)
12.2.12. Obsolete/Little-Used Fibre Channel Features ๐ฅ
anything about Fibre Channel features that are obsolete or not widely implemented got deleted ๐๏ธ (see section 6.2.1 and section 6.2.2 of [FC-MI] for more detail.) the gone list is:
- Class 1 service,
- Intermix Mode,
- Stacked Conn Mode.
- PH version numbers
since Class 1 service is gone, only class 2 needs the F_BSY, F_RJT, P_BSY, and P_RJT counters now. they don't have to be counted for every class anymore, so these objects were deleted too:
connUnitPortStatCountFBSYFramesconnUnitPortStatCountPBSYFramesconnUnitPortStatCountFRJTFramesconnUnitPortStatCountPRJTFrames
12.3. Name Server Objects ๐๏ธ
the Name Server table was in the Fibre Channel Management Integration MIB [MIB-FA], but it isn't in this MIB right now ๐ that's because this MIB is already pretty huge, and a set of Name Server objects is expected to get their own separate (new) MIB.
12.4. Additional Objects ๐
support for Class F traffic got added, including 32-bit octet and frame counters ๐งโโ๏ธ
13. Comparison to RFC 2837 ๐
this MIB is a superset of RFC 2837, except for these bits:
- the
fcFeClass1AccountingGroupgroup is obsolete, fcFxPortConnectedNxPort,fcFxPortFcphVersionHigh,fcFxPortFcphVersionLow,fcFxPortFcphVersionAgreed,fcFxPortStackedConnModeAgreed,fcFxPortIntermixSuppAgreed,fcFxPortCapStackedConnMode, andfcFxPortCapIntermixare obsolete,fcFxPortBbCreditandfcFxPortRxBufSizeare per attached Nx_Port,fcFxPortBbCreditAvailableis ephemeral,fcFeModuleTableis mostly contained in theentPhysicalTable,fcFxPortPhysAdminStatus,fcFxPortPhysOperStatus, andfcFxPortPhysLastChangehave equivalents in theifTable.
Author's Address ๐๏ธ
Keith McCloghrie
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA USA 95134
Phone: +1 408-526-5260
EMail: kzm@cisco.com
Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (2005).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property ๐
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
Acknowledgement ๐ซถ
Funding for the RFC Editor function is currently provided by the Internet Society. ๐ธโจ
๐ฆ where this page comes from
- ietf: rfc4044 2005-05
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms