RFC 4935

Fibre Channel Fabric Configuration Server MIB

πŸ“… published August 2007, from ietf

RFC 4935: Fibre Channel Fabric Configuration Server MIB πŸŽ€

okay bestie, this one is a standards track doc from August 2007 πŸ¦‹ It's written by C. DeSanti, H.K. Vivek, and K. McCloghrie from Cisco Systems, plus S. Gai from Nuova Systems. It's a "Standards Track" category, which means it's a real protocol spec that people are supposed to implement, not just a vibe. The title block doesn't list anything it obsoletes or updates, so nothing is being replaced or amended here ✨

Status of This Memo

this doc is an Internet standards track protocol for the Internet community, and it's literally asking for discussion and suggestions for improvements πŸ’… for the official standardization state and status, check the current edition of "Internet Official Protocol Standards" (STD 1). distribution of this memo is unlimited, so share away 🌸

Copyright (C) The IETF Trust (2007). πŸ”₯

Abstract

this memo defines a piece of the Management Information Base (MIB) for use with network management protocols in the Internet community 🧚 specifically, it describes managed objects for info about the Fabric Configuration Server function of a Fibre Channel network. iconic πŸ‘‘

Table of Contents

   1. Introduction ....................................................3
   2. The Internet-Standard Management Framework ......................3
   3. Short Overview of Fibre Channel .................................3
   4. Relationship to Other MIBs ......................................5
   5. MIB Overview ....................................................5
      5.1. Fibre Channel Management Instance ..........................6
      5.2. Switch Index ...............................................6
      5.3. Fabric Index ...............................................6
      5.4. The MIB Groups .............................................7
      5.5. OS Logical Unit Number (LUN) Map Entries ...................8
   6. The T11-FC-FABRIC-CONFIG-SERVER-MIB Module ......................9
   7. IANA Considerations ............................................45
   8. Security Considerations ........................................45
   9. Acknowledgements ...............................................46
   10. Normative References ..........................................47
   11. Informative References ........................................48

1. Introduction ✨

okay so this memo is the MIB slice for network management, and it's all about the Fabric Configuration Server function of a Fibre Channel network πŸŽ€ the Fabric Configuration Server is how a management app discovers the topology and attributes of a fabric. the topology it finds includes Interconnect Elements (like switches, hubs, bridges, and so on), their ports, and "platforms" made of one or more Fibre Channel nodes. it's giving discovery era πŸ”

this memo was previously approved by INternational Committee for Information Technology Standards (INCITS) Task Group T11.5 (http://www.t11.org). this doc is a product of the IETF's IMSS working group πŸ¦‹

the key words for this doc are "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL". they're to be read as described in BCP 14, RFC 2119 [RFC2119]. bestie, these words are doing the heavy lifting, so don't skim them 🫢

2. The Internet-Standard Management Framework 🌈

for a detailed tour of the docs that describe the current Internet-Standard Management Framework, check section 7 of RFC 3410 [RFC3410] πŸ’œ

managed objects are accessed through a virtual information store called the Management Information Base, or MIB. MIB objects are usually accessed through the Simple Network Management Protocol (SNMP) 🧚 the objects in the MIB are defined using the mechanisms from the Structure of Management Information (SMI). this memo specifies a MIB module that's 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 Fibre Channel πŸ¦‹

okay, 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 Small Computer System Interface (SCSI) command sets, the High-Performance Parallel Interface (HIPPI) data framing, IP (Internet Protocol), IEEE 802.2, and more πŸ’…

physically, Fibre Channel is a bunch of communication points called N_Ports, linked either through a switching network (called a Fabric) or by a point-to-point link. a Fibre Channel "node" is one or more N_Ports. a Fabric can have multiple Interconnect Elements, and some of those are switches. an N_Port connects to the Fabric through a switch port called an F_Port. when multiple FC nodes hang off a single switch port in an "Arbitrated Loop" topology, the switch port is an FL_Port and the nodes' ports are NL_Ports. Nx_Port means either an N_Port or an NL_Port, and Fx_Port means either an F_Port or an FL_Port 🫢 a switch port linked to another switch port by an Inter-Switch Link (ISL) is an E_Port. a B_Port connects a bridge device to an E_Port on a switch, and it gives you a subset of E_Port functionality πŸŽ€

a lot of FC parts, like the Fabric, each node, and most ports, have globally unique names. these are usually formatted as World Wide Names (WWNs). more info on WWNs is in [FC-FS] ✨ WWNs are expected to stay persistent across agent and unit resets πŸ‘‘

FC frames carry 24-bit address identifiers that name the frame's source and destination ports. every FC port has both an address identifier and a WWN. when a Fabric is in use, the FC address identifiers are dynamic and a switch assigns them 🧚 each octet of a 24-bit address is a level in an address hierarchy, and the Domain_ID is the highest level 🌸

the Fibre Channel Fabric Configuration Server gives a management app a way to discover fabric topology and attributes. it's designed so it can be distributed among switches and reached from any Nx_Port. but it isn't restricted to being part of a Fabric, and it isn't required to be either πŸ’–

the info registered with and available from each Fabric Configuration Server is modeled as a Fabric made of one or more Interconnect Elements, which each have some physical Ports. it also includes one or more Fibre Channel nodes grouped into Platforms to make discovery and management easier πŸ¦‹ the Ports connect either to other Ports on other Interconnect Elements, or to Nx_Ports. each Interconnect Element may have attributes like its name, type, Domain Identifier, Management Identifier, Logical Name, Management Address(es), Information List, Zoning Enforcement Status, and so on. each Port may have attributes like its name, type, TX type, Module type, physical port number, attached port name(s), port state, speed, and so on. each platform may have attributes like its name, type, description, label, location, management address, and so on πŸ“

the Fibre Channel Fabric Configuration Server is defined in the FC-GS specification. it's one of a set of functions collectively known as the Management Service. the latest version is [FC-GS-5] πŸ”₯

the latest standard for an interconnecting Fabric with multiple Fabric Switch elements is [FC-SW-4]. [FC-SW-4] carries forward the earlier spec for operating a single Fabric in a physical infrastructure, and adds Virtual Fabrics plus the specification for how multiple Virtual Fabrics can run within one (or more) physical infrastructures πŸ’… each frame can be tagged in its header to show which of the Virtual Fabrics it's going out on. all frames entering a particular "Core Switch" [FC-SW-4] (that's a physical switch) on the same Virtual Fabric get processed by the same "Virtual Switch" inside that Core Switch πŸ‘‘

4. Relationship to Other MIBs 🌈

the first standardized MIB for Fibre Channel [RFC2837] was focused on Fibre Channel switches. it's been replaced by the more generic Fibre Channel Management MIB [RFC4044], which defines basic info for Fibre Channel hosts and switches, including extensions to the standard IF-MIB for Fibre Channel interfaces πŸ’œ

this MIB goes beyond [RFC4044] to cover the function, in Fibre Channel switches, of providing the Fabric Configuration Server function 🧚

this MIB imports some common Textual Conventions from T11-TC-MIB [RFC4439] and from T11-FC-NAME-SERVER-MIB [RFC4438]. it also imports URLString from NETWORK-SERVICES-MIB [RFC2788] ✨

5. MIB Overview πŸŽ€

this MIB module gives you a way to monitor how one or more Fabric Configuration Servers (FCS) in a Fibre Channel (FC) network operate, and to configure some of their parameters πŸ¦‹ the capabilities include triggering a discovery of the configuration of one or more Fabrics, retrieving the results of that discovery, and controlling and monitoring how an FCS operates. the discovered configuration contains info about:

  • Interconnect Elements (IEs), i.e., switches, hubs, bridges, etc.,
  • Ports on IEs, and
  • Platforms that consist of one or more FC nodes.

5.1. Fibre Channel Management Instance πŸ’…

a Fibre Channel management instance is defined in [RFC4044] 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 works for a single SNMP agent with multiple AgentX [RFC2741] sub-agents, where each sub-agent implements a different Fibre Channel management instance.

the object, fcmInstanceIndex, is IMPORTed from the FC-MGMT-MIB [RFC4044] as the index value that uniquely identifies each Fibre Channel management instance. for example, that's within the same SNMP context ([RFC3411], section 3.3.1) 🌸

5.2. Switch Index 🧚

the FC-MGMT-MIB [RFC4044] defines the fcmSwitchTable as a table of info about Fibre Channel switches managed by Fibre Channel management instances. each Fibre Channel management instance can manage one or more Fibre Channel switches πŸ“ the Switch Index, fcmSwitchIndex, is IMPORTed from the FC-MGMT-MIB as the index value that uniquely identifies a Fibre Channel switch among those (one or more) managed by the same Fibre Channel management instance πŸ’–

5.3. Fabric Index 🧚

okay so bestie, when you've got multiple Fabrics, each one gets its own copy of all the Fabric-related management instrumentation πŸ’… so this MIB puts all the Fabric-related info into tables that are INDEXed by a random-ish integer called a "Fabric Index" πŸŽ€ Its syntax is T11FabricIndex, which gets imported from T11-TC-MIB [RFC4439]. If a device is hooked up to just one physical Fabric with no virtual Fabrics involved, the Fabric Index is ALWAYS going to be 1 (simple, iconic ✨). But in a setup with lots of virtual and/or physical Fabrics, this index is how you tell them apart πŸ¦‹

ngl, it's super likely that a Fibre Channel switch will have ports hooked up to multiple virtual and/or physical Fabrics πŸ‘€ So to make life easier when a management protocol wants to ask about all the Fabrics one switch is connected to, fcmSwitchIndex gets listed before t11FcsFabricIndex whenever they both show up in the same INDEX clause πŸ’œ main character organization, literally.

5.4. The MIB Groups 🌸

this section walks through the six MIB groups in the module 🫢

5.4.1. The t11FcsDiscoveredConfigGroup Group πŸ”

this group holds the Fabric configuration info that the Fabric Configuration Servers discovered ✨

5.4.2. The t11FcsDiscoveryStatusGroup Group πŸ“Š

this group has the objects you use to keep an eye on how discovery of Fabric configurations is going for the Fabric Configuration Servers πŸ‘€

5.4.3. The t11FcsDiscoveryControlGroup Group πŸŽ›οΈ

this one has the objects for asking a Fabric Configuration Server to go discover the configuration of one or more Fabrics πŸ”₯

5.4.4. The t11FcsStatisticsGroup Group πŸ“ˆ

this group is all about the statistics information for the Fabric Configuration Server πŸ’…

5.4.5. The t11FcsNotificationGroup Group πŸ””

this group has three notifications, and each one gets generated when an FCS:

  • rejects a registration, deregistration, or query request πŸ™…β€β™€οΈ
  • completes discovery on a range of Fabrics πŸŽ‰
  • learns that a management address of an Interconnect Element has changed πŸ”„

5.4.5.1. Flow Control for Notifications 🚦

okay, so when you're defining SNMP notifications for events that happen in the data-plane, you have to think about how often they could get generated 😭 Unless something is limiting them, those notifications need some kind of flow control. Like, you could define it so that once a certain maximum number has happened within a set time interval, any further notifications get suppressed for some later time interval πŸ›‘ BUT here's the tea: when that suppression happens, the Network Management System (NMS) that missed the suppressed notifications still needs a way to find out how many it missed πŸ’€ So you'd need to define an extra Counter32 object, and/or a brand new type of notification to send at the end of the interval.

is that extra complexity annoying? yeah, lowkey, but it's totally necessary for notifications that need flow control πŸ™ˆ

now for the notifications in this MIB module, the ones that come from control-plane events (and can't start a chain reaction), it's different 🌈

  • trying to estimate the max number that could possibly be generated per unit time for each type of notification is way too simplistic πŸ™ƒ For example, it's unreasonable to ask how many t11FcsDiscoveryCompleteNotify notifications could show up in a time interval, because it depends on so many things: how big is the network? how many Virtual Fabrics need to be discovered? how fast can the operator ask for another discovery after the last one finishes? 🀯
  • the extra complexity of flow-controlling these kinds of notifications just isn't worth it ✨

5.4.6. The t11FcsNotificationInfoGroup Group ℹ️

this group has the notification control and notification information objects for keeping an eye on Fabric Configuration Server request rejections and the discovery of topology information πŸ’–

5.5. OS Logical Unit Number (LUN) Map Entries 🧩

so FC-GS-5 defines a "Platform" as not just a set of zero or more FC nodes, but also a set of zero or more "OS LUN Map Entries" (check Figure 8 in [FC-GS-5]) πŸ‘‘ Info about "OS LUN Map Entries" is NOT in this T11-FC-FABRIC-CONFIG-SERVER-MIB, sorry bestie 😭 Instead, you can get LUN Map info through the scsiLunMapGroup object group defined in the SCSI-MIB [RFC4455] πŸ¦‹

6. The T11-FC-FABRIC-CONFIG-SERVER-MIB Module πŸ’Ž

T11-FC-FABRIC-CONFIG-SERVER-MIB  DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    NOTIFICATION-TYPE, mib-2, Counter32, Unsigned32
                  FROM SNMPv2-SMI                  -- [RFC2578]
    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
                  FROM SNMPv2-CONF                 -- [RFC2580]
    TEXTUAL-CONVENTION, TruthValue, TimeStamp
                  FROM SNMPv2-TC                   -- [RFC2579]
    SnmpAdminString
                  FROM SNMP-FRAMEWORK-MIB          -- [RFC3411]
    URLString
                  FROM NETWORK-SERVICES-MIB        -- [RFC2788]

    FcPortType, FcNameIdOrZero, FcDomainIdOrZero,
    fcmInstanceIndex, fcmSwitchIndex, FcAddressIdOrZero
                  FROM FC-MGMT-MIB                 -- [RFC4044]
    T11NsGs4RejectReasonCode
                  FROM T11-FC-NAME-SERVER-MIB      -- [RFC4438]
    T11FabricIndex
                  FROM T11-TC-MIB                  -- [RFC4439]
    t11FamLocalSwitchWwn
                  FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [RFC4439]


t11FcFabricConfigServerMIB   MODULE-IDENTITY
    LAST-UPDATED  "200706270000Z"
    ORGANIZATION  "For the initial versions, T11.
                   For later versions, the IETF's IMSS Working Group."
    CONTACT-INFO
             "     Claudio DeSanti
                   Cisco Systems, Inc.
                   170 West Tasman Drive
                   San Jose, CA 95134 USA
                   EMail: cds@cisco.com

                   Keith McCloghrie
                   Cisco Systems, Inc.
                   170 West Tasman Drive
                   San Jose, CA 95134 USA
                   EMail: kzm@cisco.com"
    DESCRIPTION
            "The MIB module for the management of a Fabric
            Configuration Server (FCS) in a Fibre Channel (FC)
            network.  An FCS is defined by the FC-GS-5 standard.  This
            MIB provides the capabilities to trigger a discovery of
            the configuration of one or more Fabrics, to retrieve the
            results of such a discovery, as well as to control and
            monitor the operation of an FCS.  The discovered
            configuration contains information about:

               - Interconnect Elements (IEs), i.e., switches, hubs,
                 bridges, etc.,
               - Ports on IEs, and
               - Platforms that consist of one or more FC nodes.

           Copyright (C) The IETF Trust (2007).  This version of
           this MIB module is part of RFC 4935;  see the RFC itself for
           full legal notices."
    REVISION    "200706270000Z"
    DESCRIPTION
           "Initial version of this MIB module, published as RFC 4935."
    ::= { mib-2 162 }

t11FcsMIBObjects       OBJECT IDENTIFIER
                                    ::= { t11FcFabricConfigServerMIB 1 }
t11FcsMIBConformance   OBJECT IDENTIFIER
                                    ::= { t11FcFabricConfigServerMIB 2 }
t11FcsNotifications    OBJECT IDENTIFIER
                                    ::= { t11FcFabricConfigServerMIB 0 }

t11FcsDiscovery        OBJECT IDENTIFIER ::= { t11FcsMIBObjects 1 }
t11FcsDiscoveredConfig OBJECT IDENTIFIER ::= { t11FcsMIBObjects 2 }
t11FcsStats            OBJECT IDENTIFIER ::= { t11FcsMIBObjects 3 }
t11FcsNotificationInfo OBJECT IDENTIFIER ::= { t11FcsMIBObjects 4 }

--
-- Textual Conventions
--

T11FcListIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS  current
    DESCRIPTION
            "An index that identifies a list of elements.
            All elements that belong to the same list have the
            same index value.  This syntax is used for objects
            which identify a list in the INDEX clause of a table
            of elements of that type of list."
    SYNTAX  Unsigned32 (1..4294967295)

T11FcListIndexPointerOrZero ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS  current
    DESCRIPTION
            "Objects with this syntax point to a list of elements
            contained in a table, by holding the same value as the
            object with syntax T11FcListIndex defined in the table's
            INDEX clause, or, zero to indicate an empty list.
            Note that such a table could have one row per list, or
            it could have one row per element of a list.

            The definition of an object with this syntax must
            identify the table(s) into which it points."
    SYNTAX  Unsigned32 -- the default range of (0..4294967295)

T11FcIeType ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
            "The type of Interconnect Element (IE):

                     unknown(1)  - an unknown IE.
                     other(2)    - some other type of IE.
                     switch(3)   - the IE is a switch.
                     hub(4)      - the IE is a hub.
                     bridge(5)   - the IE is a bridge."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, Table 96."
    SYNTAX  INTEGER {
                unknown(1),
                other(2),
                switch(3),
                hub(4),
                bridge(5)
            }

T11FcPortState  ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
            "The state of a port:

                     unknown(1)  - unknown state.
                     other(2)    - some other state.
                     online(3)   - port is in online state.
                     offline(4)  - port is in offline state.
                     testing(5)  - port is in testing state.
                     fault(6)    - port is faulty."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, Table 106."

    SYNTAX  INTEGER {
                unknown(1),
                other(2),
                online(3),
                offline(4),
                testing(5),
                fault(6)
            }

Okay bestie, now we're getting into the port transceiver types πŸ”Œβœ¨ This first one is a textual convention, and it's giving a whole menu of laser and wire flavors πŸ’…

T11FcPortTxType ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
            "The technology of the port transceiver:

               unknown(1)         - unknown (includes the 'null' type)
               other(2)           - some other technology
               shortwave850nm(3)  - Short wave laser - SN (850 nm)
               longwave1550nm(4)  - Long wave laser - LL (1550 nm)
               longwave1310nm(5)  - Long wave laser cost
                                    reduced - LC (1310 nm)
               electrical(6)      - Electrical - EL.
               tenGbaseSr850(7)   - 10GBASE-SR 850nm laser
               tenGbaseLr1310(8)  - 10GBASE-LR 1310nm laser
               tenGbaseEr1550(9)  - 10GBASE-ER 1550nm laser
               tenGbaseLx1300(10) - 10GBASE-LX4 WWDM 1300nm laser
               tenGbaseSw850(11)  - 10GBASE-SW 850nm laser
               tenGbaseLw1310(12) - 10GBASE-LW 1310nm laser
               tenGbaseEw1550(13) - 10GBASE-EW 1550nm laser
            "
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, Table 101."
    SYNTAX  INTEGER {
                unknown(1),
                other(2),
                shortwave850nm(3),
                longwave1550nm(4),
                longwave1310nm(5),
                electrical(6),
                tenGbaseSr850(7),
                tenGbaseLr1310(8),
                tenGbaseEr1550(9),
                tenGbaseLx1300(10),
                tenGbaseSw850(11),
                tenGbaseLw1310(12),
                tenGbaseEw1550(13)
            }

Next up is the reject reason explanation, which is basically the full list of "why did this request get bounced" codes πŸ™ˆ Every single one has its own little explanation, so this one is a lot, but it's so thorough it's kind of iconic πŸ‘‘

T11FcsRejectReasonExplanation ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
            "The reject reason code explanation:

                  noAdditionalExplanation(1)
                       - no additional explanation.
                  invNameIdForIEOrPort(2)
                       - the format of IE or port name is invalid.
                  ieListNotAvailable(3)
                       - IE list is not available.
                  ieTypeNotAvailable(4)
                       - IE type is not available.
                  domainIdNotAvailable(5)
                       - Domain ID is not available.
                  mgmtIdNotAvailable(6)
                       - mgmt ID is not available.
                  fabNameNotAvailable(7)
                       - Fabric_Name is not available.
                  ielogNameNotAvailable(8)
                       - IE logical name is not available.
                  mgmtAddrListNotAvailable(9)
                       - mgmt address list is not available.
                  ieInfoListNotAvailable(10)
                       - IE info list is not available.
                  portListNotAvailable(11)
                       - port list is not available.
                  portTypeNotAvailable(12)
                       - port type is not available.
                  phyPortNumNotAvailable(13)
                       - physical port number is not available.
                  attPortNameListNotAvailable(14)
                       - attached port name list is not available.
                  portStateNotAvailable(15)
                       - port state is not available.
                  unableToRegIELogName(16)
                       - not able to register IE logical name.
                  platformNameNoExist(17)
                       - platform name does not exist.
                  platformNameAlreadyExists(18)
                       - platform name already exists.
                  platformNodeNameNoExists(19)
                       - platform node name does not exist.
                  platformNodeNameAlreadyExists(20)
                       - platform node name already exists.
                  resourceUnavailable(21)
                       - resource unavailable.
                  noEntriesInLunMap(22)

                       - zero entries in OS LUN Map.
                  invalidDeviceNameLength(23)
                       - invalid OS device name length.
                  multipleAttributes(24)
                       - multiple attributes of same type in
                         platform attribute block.
                  invalidAttribBlockLength(25)
                       - invalid platform attribute block length.
                  attributesMissing(26)
                       - required platform attributes not present."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, Table 124."
    SYNTAX  INTEGER {
                noAdditionalExplanation(1),
                invNameIdForIEOrPort(2),
                ieListNotAvailable(3),
                ieTypeNotAvailable(4),
                domainIdNotAvailable(5),
                mgmtIdNotAvailable(6),
                fabNameNotAvailable(7),
                ielogNameNotAvailable(8),
                mgmtAddrListNotAvailable(9),
                ieInfoListNotAvailable(10),
                portListNotAvailable(11),
                portTypeNotAvailable(12),
                phyPortNumNotAvailable(13),
                attPortNameListNotAvailable(14),
                portStateNotAvailable(15),
                unableToRegIELogName(16),
                platformNameNoExist(17),
                platformNameAlreadyExists(18),
                platformNodeNameNoExists(19),
                platformNodeNameAlreadyExists(20),
                resourceUnavailable(21),
                noEntriesInLunMap(22),
                invalidDeviceNameLength(23),
                multipleAttributes(24),
                invalidAttribBlockLength(25),
                attributesMissing(26)
            }

--
-- Objects for Fabric Discovery
--

Now we get to the fabric discovery objects 🧚 The first one is the discovery table, where the control info lives. Quick heads up: values written here don't survive an agent reboot, so keep that in mind 🫢

t11FcsFabricDiscoveryTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF T11FcsFabricDiscoveryEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "This table contains control information for discovery
            of Fabric configuration by switches.

            Values written to objects in this table are not
            retained over agent reboots."
    ::= { t11FcsDiscovery 1 }

t11FcsFabricDiscoveryEntry OBJECT-TYPE
    SYNTAX       T11FcsFabricDiscoveryEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "Control information for discovery by the switch
            identified by fcmInstanceIndex and fcmSwitchIndex."
    INDEX   { fcmInstanceIndex, fcmSwitchIndex }
    ::= { t11FcsFabricDiscoveryTable 1 }

T11FcsFabricDiscoveryEntry ::= SEQUENCE {
    t11FcsFabricDiscoveryRangeLow   T11FabricIndex,
    t11FcsFabricDiscoveryRangeHigh  T11FabricIndex,
    t11FcsFabricDiscoveryStart      INTEGER,
    t11FcsFabricDiscoveryTimeOut    Unsigned32
}

t11FcsFabricDiscoveryRangeLow  OBJECT-TYPE
    SYNTAX       T11FabricIndex
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
            "The discovery by a particular switch operates
            within all existing Fabrics that have a Fabric
            Index within a specific inclusive range.  This
            object specifies the minimum Fabric Index value
            within that range.  This value just represents
            the lower end of the range and does not necessarily
            represent any existing Fabric."
    ::= { t11FcsFabricDiscoveryEntry 1 }

t11FcsFabricDiscoveryRangeHigh  OBJECT-TYPE
    SYNTAX       T11FabricIndex
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
            "The discovery by a particular switch operates
            within all existing Fabrics that have a Fabric
            Index within a specific inclusive range.  This
            object specifies the maximum Fabric Index value
            within that range.  This value just represents the
            higher end of the range and does not necessarily
            represent any existing Fabric."
    ::= { t11FcsFabricDiscoveryEntry 2 }

t11FcsFabricDiscoveryStart  OBJECT-TYPE
    SYNTAX       INTEGER {
                     start(1),
                     noOp(2)
                 }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
            "This object provides the capability to trigger the start
            of a discovery by a Fabric Configuration Server.  If this
            object is set to 'start', then the discovery is started on
            those Fabrics that have their Fabric Index value in the
            range specified by t11FcsFabricDiscoveryRangeLow and
            t11FcsFabricDiscoveryRangeHigh.  It is recommended that
            whenever an instance of this object is set to 'start',
            that the desired range be specified at the same time by
            setting the corresponding instances of
            t11FcsFabricDiscoveryRangeLow and
            t11FcsFabricDiscoveryRangeHigh.

            Setting this object to 'start' will be rejected if a
            discovery is already/still in progress on any Fabrics in
            the specified range.

            No action is taken if this object is set to 'noOp'.
            The value of this object when read is always 'noOp'."
    ::= { t11FcsFabricDiscoveryEntry 3 }

t11FcsFabricDiscoveryTimeOut OBJECT-TYPE
    SYNTAX       Unsigned32 (300..86400)
    UNITS        "Seconds"
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
            "The minimum interval of time for which the discovered
            Fabric information is cached by a Fabric Configuration
            Server."
    DEFVAL { 900 }
    ::= { t11FcsFabricDiscoveryEntry 4 }

--
-- Discovery State table
--

t11FcsDiscoveryStateTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF T11FcsDiscoveryStateEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "This table contains the status of discovery of
            locally known Fabrics."
    ::= { t11FcsDiscovery 2 }

t11FcsDiscoveryStateEntry OBJECT-TYPE
    SYNTAX       T11FcsDiscoveryStateEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "The discovery status for a particular Fabric on the
            switch identified by fcmInstanceIndex and fcmSwitchIndex."
    INDEX   { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex }
    ::= { t11FcsDiscoveryStateTable 1 }

T11FcsDiscoveryStateEntry ::= SEQUENCE {
    t11FcsFabricIndex              T11FabricIndex,
    t11FcsDiscoveryStatus          INTEGER,
    t11FcsDiscoveryCompleteTime    TimeStamp
}

t11FcsFabricIndex OBJECT-TYPE
    SYNTAX       T11FabricIndex
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "A unique index value that uniquely identifies a
            particular Fabric.

            In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics
            can operate within one (or more) physical infrastructures,
            and this index value is used to uniquely identify a
            particular (physical or virtual) Fabric within a physical
            infrastructure.

            In a Fabric conformant to versions earlier than FC-SW-4,
            only a single Fabric could operate within a physical
            infrastructure, and thus, the value of this Fabric Index
            was defined to always be 1."
    ::= { t11FcsDiscoveryStateEntry 1 }

okay so the status object is basically the discovery vibe check πŸ’… it starts out localOnly and only levels up when a discovery actually runs ✨

t11FcsDiscoveryStatus  OBJECT-TYPE
    SYNTAX       INTEGER {
                     inProgress(1),
                     completed(2),
                     localOnly(3)
                 }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
            "The status of the discovery for the particular Fabric.

            Initially when the switch comes up, all instances of this
            object have the value: 'localOnly', and the database
            contains only local information, i.e., no information
            discovered via the Fabric Configuration Server protocol
            specified in FC-GS-5.

            If t11FcsFabricDiscoveryStart is set to 'start' for a
            range of Fabrics that includes this Fabric, then the
            value of this object transitions to 'inProgress'.  When
            the discovery completes, this object transitions to
            'completed', and the data is cached for the minimum
            interval of time specified by
            t11FcsFabricDiscoveryTimeOut.  After this interval has
            been exceeded, the data may be lost, in which case, the
            value of this object changes to 'localOnly'.

            This object cannot be set via SNMP to any value other
            than 'localOnly'.  If this object is set (via SNMP) to
            'localOnly', the cached data for the Fabric is discarded
            immediately, and if a discovery initiated from this
            switch was in progress for this Fabric, then that
            discovery is aborted."
    ::= { t11FcsDiscoveryStateEntry 2 }

t11FcsDiscoveryCompleteTime  OBJECT-TYPE
    SYNTAX       TimeStamp
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "This object contains the value of sysUpTime at which
            discovery was most recently completed or aborted on this
            Fabric.  This object contains the value of zero before
            the first discovery on this Fabric."
    ::= { t11FcsDiscoveryStateEntry 3 }

--
--      The Database of Fabric Configuration Information

--
-- Interconnect Element table
--

t11FcsIeTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF T11FcsIeEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "A table of Interconnect Elements.  Interconnect
            Elements (IEs) are switches, hubs, bridges etc.

            By default, the Fabric Configuration Server will
            maintain detailed information pertaining only to
            local resources.  As far as discovered topology is
            concerned, only the IE name, type, and Domain ID
            information will be maintained.  If a discovery
            cycle is triggered on a set of Fabrics, this table
            along with the Port and Platform tables will be
            populated with the discovered information.  The
            discovered data will be retained in this table for
            at least t11FcsFabricDiscoveryTimeOut seconds after
            the completion of its discovery or until the
            discovered data is invalidated."
    ::= { t11FcsDiscoveredConfig 1 }

t11FcsIeEntry OBJECT-TYPE
    SYNTAX       T11FcsIeEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "Information about an Interconnect Element that was
            discovered on a Fabric (identified by t11FcsFabricIndex),
            by a switch (identified by fcmInstanceIndex and
            fcmSwitchIndex)."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2."
    INDEX   { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex,
              t11FcsIeName }
    ::= { t11FcsIeTable 1 }

T11FcsIeEntry ::= SEQUENCE {
    t11FcsIeName                FcNameIdOrZero,
    t11FcsIeType                T11FcIeType,
    t11FcsIeDomainId            FcDomainIdOrZero,
    t11FcsIeMgmtId              FcAddressIdOrZero,
    t11FcsIeFabricName          FcNameIdOrZero,
    t11FcsIeLogicalName         OCTET STRING,
    t11FcsIeMgmtAddrListIndex   T11FcListIndexPointerOrZero,
    t11FcsIeInfoList            OCTET STRING
}

t11FcsIeName  OBJECT-TYPE
    SYNTAX       FcNameIdOrZero (SIZE(8 | 16))
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "The WWN of an Interconnect Element.  This object
            uniquely identifies an Interconnect Element on a
            Fabric.  If the IE is a switch, then this object
            is the Switch_Name (WWN) of the switch."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.1."
    ::= { t11FcsIeEntry 1 }

t11FcsIeType  OBJECT-TYPE
    SYNTAX       T11FcIeType
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The type of this Interconnect Element."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.2"
    ::= { t11FcsIeEntry 2 }

t11FcsIeDomainId  OBJECT-TYPE
    SYNTAX       FcDomainIdOrZero
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The Domain ID of this Interconnect Element."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.3."
    ::= { t11FcsIeEntry 3 }

t11FcsIeMgmtId  OBJECT-TYPE
    SYNTAX       FcAddressIdOrZero
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The management identifier of this Interconnect Element.
            If the Interconnect Element is a switch, this object will
            be the Domain Controller identifier of the switch.  When
            the value of the identifier is unknown, this object
            contains the all-zeros value: x'00 00 00'."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.4."
    DEFVAL { '000000'h }
    ::= { t11FcsIeEntry 4 }

t11FcsIeFabricName  OBJECT-TYPE
    SYNTAX       FcNameIdOrZero (SIZE(8 | 16))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The Fabric_Name (WWN) of this Interconnect Element.
            When the Fabric_Name is unknown, this object contains
            the all-zeros value: x'00 00 00 00 00 00 00 00'."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.5."
    DEFVAL { '0000000000000000'h }
    ::= { t11FcsIeEntry 5 }

t11FcsIeLogicalName  OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (0..255))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The logical name of this Interconnect Element.
            When the logical name is unknown, this object contains
            the zero-length string."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.6."
    ::= { t11FcsIeEntry 6 }

t11FcsIeMgmtAddrListIndex  OBJECT-TYPE
    SYNTAX       T11FcListIndexPointerOrZero
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The management address list for this Interconnect Element.
            This object points to an entry in the
            t11FcsMgmtAddrListTable."
    REFERENCE

            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.7."
    ::= { t11FcsIeEntry 7 }

t11FcsIeInfoList  OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (0..252))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The information list for this Interconnect Element.

            The value of this object is formatted as specified in
            FC-GS-5, i.e., it has the following substrings in order:
            vendor name, model name/number, and release code/level,
            followed by zero or more substrings of vendor-specific
            information.  Each substring is terminated with a byte
            containing a null value (x'00')."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.8"
    ::= { t11FcsIeEntry 8 }

--
-- Management Address List table
--

t11FcsMgmtAddrListTable  OBJECT-TYPE
    SYNTAX       SEQUENCE OF T11FcsMgmtAddrListEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "This table contains the set of management address lists
            that are currently referenced by any instance of the
            t11FcsIeMgmtAddrListIndex or
            t11FcsPlatformMgmtAddrListIndex objects."
    ::= { t11FcsDiscoveredConfig 2 }

t11FcsMgmtAddrListEntry  OBJECT-TYPE
    SYNTAX       T11FcsMgmtAddrListEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "Information about one management address in a
            management address list, which is known to a
            switch (identified by fcmInstanceIndex and
            fcmSwitchIndex)."
    INDEX   { fcmInstanceIndex, fcmSwitchIndex,
              t11FcsMgmtAddrListIndex, t11FcsMgmtAddrIndex }

    ::= { t11FcsMgmtAddrListTable 1 }

T11FcsMgmtAddrListEntry ::= SEQUENCE {
    t11FcsMgmtAddrListIndex        T11FcListIndex,
    t11FcsMgmtAddrIndex            Unsigned32,
    t11FcsMgmtAddr                 URLString
}

t11FcsMgmtAddrListIndex  OBJECT-TYPE
    SYNTAX       T11FcListIndex
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "The index value of the management address list."
    ::= { t11FcsMgmtAddrListEntry 1 }

t11FcsMgmtAddrIndex OBJECT-TYPE
    SYNTAX       Unsigned32 (1..4294967295)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "An integer value to distinguish different
            management addresses in the same list."
    ::= { t11FcsMgmtAddrListEntry 2 }

t11FcsMgmtAddr  OBJECT-TYPE
    SYNTAX       URLString
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The management address of this entry.

            The format of this object is a Uniform Resource
            Locator (URL), e.g., for SNMP, see RFC 4088."
    REFERENCE
            "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5,
            FC-GS-5, section 6.2.3.2.7"
    ::= { t11FcsMgmtAddrListEntry 3 }

--
-- Ports
--

t11FcsPortTable  OBJECT-TYPE
    SYNTAX       SEQUENCE OF T11FcsPortEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION

            "This table contains information about the ports of IEs."
    ::= { t11FcsDiscoveredConfig 4 }

t11FcsPortEntry  OBJECT-TYPE
    SYNTAX       T11FcsPortEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "Information about a particular port of an Interconnect
            Element (identified by t11FcsIeName).  The port is
            connected to a Fabric (identified by t11FcsFabricIndex)
            and known to a switch (identified by fcmInstanceIndex
            and fcmSwitchIndex)."
    INDEX   { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex,
              t11FcsIeName, t11FcsPortName }
    ::= { t11FcsPortTable 1 }

T11FcsPortEntry ::= SEQUENCE {
    t11FcsPortName                    FcNameIdOrZero,
    t11FcsPortType                    FcPortType,
    t11FcsPortTxType                  T11FcPortTxType,
    t11FcsPortModuleType              Unsigned32,
    t11FcsPortPhyPortNum              Unsigned32,
    t11FcsPortAttachPortNameIndex     T11FcListIndexPointerOrZero,
    t11FcsPortState                   T11FcPortState,
    t11FcsPortSpeedCapab              OCTET STRING,
    t11FcsPortOperSpeed               OCTET STRING,
    t11FcsPortZoningEnfStatus         OCTET STRING
}

Okay bestie, we're picking up right where the port table left off πŸ¦‹βœ¨

t11FcsPortName OBJECT-TYPE SYNTAX FcNameIdOrZero (SIZE(8 | 16)) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The Port_Name (WWN) of the port for which this row contains information." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.1." ::= { t11FcsPortEntry 1 }

t11FcsPortType OBJECT-TYPE SYNTAX FcPortType MAX-ACCESS read-only STATUS current DESCRIPTION "The Port Type of this port."

REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.2." ::= { t11FcsPortEntry 2 }

t11FcsPortTxType OBJECT-TYPE SYNTAX T11FcPortTxType MAX-ACCESS read-only STATUS current DESCRIPTION "The Port TX Type of this port." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.3." ::= { t11FcsPortEntry 3 }

t11FcsPortModuleType OBJECT-TYPE SYNTAX Unsigned32 (0..255) MAX-ACCESS read-only STATUS current DESCRIPTION "The port module type of this port." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.4." ::= { t11FcsPortEntry 4 }

t11FcsPortPhyPortNum OBJECT-TYPE SYNTAX Unsigned32 -- the default range of (0..4294967295) MAX-ACCESS read-only STATUS current DESCRIPTION "The physical number for this port. FC-GS-5 says that the contents of this field, which are carried in a field with a size of 4 bytes, are not to be restricted due to vendor-specific methods for numbering physical ports." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.5." ::= { t11FcsPortEntry 5 }

t11FcsPortAttachPortNameIndex OBJECT-TYPE SYNTAX T11FcListIndexPointerOrZero MAX-ACCESS read-only STATUS current DESCRIPTION "The attached port name list for this port. This object points to an entry in the t11FcsAttachPortNameListTable."

REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.6." ::= { t11FcsPortEntry 6 }

t11FcsPortState OBJECT-TYPE SYNTAX T11FcPortState MAX-ACCESS read-only STATUS current DESCRIPTION "The state of this port." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.7." ::= { t11FcsPortEntry 7 }

t11FcsPortSpeedCapab OBJECT-TYPE SYNTAX OCTET STRING (SIZE (2)) MAX-ACCESS read-only STATUS current DESCRIPTION "The port speed capabilities of this port. The two octets of the value are formatted as described in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.8." ::= { t11FcsPortEntry 8 }

t11FcsPortOperSpeed OBJECT-TYPE SYNTAX OCTET STRING (SIZE (2)) MAX-ACCESS read-only STATUS current DESCRIPTION "The operating speed of this port. The two octets of the value are formatted as described in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.9." ::= { t11FcsPortEntry 9 }

t11FcsPortZoningEnfStatus OBJECT-TYPE SYNTAX OCTET STRING (SIZE (12)) MAX-ACCESS read-only STATUS current DESCRIPTION "The zoning enforcement status of this port. The 12 octets of the value are formatted as described in FC-GS-5." REFERENCE

"ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.10." ::= { t11FcsPortEntry 10 }


Ngl, the port objects are giving **fully detailed port profile** ✨ Each one points back to FC-GS-5, so you always know where the number came from 🧚 The WWN, port type, speed bits and zoning status are all in there, and the physical port number is allowed to be vendor-specific 🌸

Next up is the Attached Port List table, the list of port names hanging off a port πŸŽ€

-- -- Attached Port List table --

t11FcsAttachPortNameListTable OBJECT-TYPE SYNTAX SEQUENCE OF T11FcsAttachPortNameListEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains all the lists of attach port names." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.6" ::= { t11FcsDiscoveredConfig 5 }

t11FcsAttachPortNameListEntry OBJECT-TYPE SYNTAX T11FcsAttachPortNameListEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about the name of a particular attached port, which is known to a switch (identified by fcmInstanceIndex and fcmSwitchIndex)." INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsAttachPortNameListIndex, t11FcsAttachPortName } ::= { t11FcsAttachPortNameListTable 1 }

T11FcsAttachPortNameListEntry ::= SEQUENCE { t11FcsAttachPortNameListIndex T11FcListIndex, t11FcsAttachPortName OCTET STRING }

t11FcsAttachPortNameListIndex OBJECT-TYPE SYNTAX T11FcListIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "The index value of the attach port name list." ::= { t11FcsAttachPortNameListEntry 1 }

t11FcsAttachPortName OBJECT-TYPE SYNTAX OCTET STRING (SIZE (12)) MAX-ACCESS read-only STATUS current DESCRIPTION "The attached port name. Zero or more of these names may be associated with a port object. The first 8 bytes of this object contain the WWN of the port followed by 2 reserved bytes. Following this is one byte of Port flags and one byte of Port type, as described in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.3.6" ::= { t11FcsAttachPortNameListEntry 2 }


This table is basically a bunch of lists, and each name is 12 bytes: the WWN up front, then 2 reserved bytes, then the port flags and port type bytes πŸ’… It's all tied together through the switch's instance and switch indexes, so everything stays in its lane πŸ’œ

Last bit of this chunk is the Platforms section, where the platform entry starts getting **seriously detailed** πŸ‘‘

-- -- Platforms --

t11FcsPlatformTable OBJECT-TYPE SYNTAX SEQUENCE OF T11FcsPlatformEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains information on platforms.

By default, this table only contains local (e.g., for a local switch) information. If a discovery is triggered, this table will also contain information gathered by the discovery process. The discovered information is retained in this table for at least t11FcsFabricDiscoveryTimeOut seconds after the completion of its discovery or until the discovered cache is invalidated." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4" ::= { t11FcsDiscoveredConfig 6 }

t11FcsPlatformEntry OBJECT-TYPE SYNTAX T11FcsPlatformEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about a particular platform, which is known to a switch (identified by fcmInstanceIndex and fcmSwitchIndex).

A platform can contain multiple nodes. Information on nodes is contained in the t11FcsNodeNameListTable. The t11FcsPlatformNodeNameListIndex object in this table points to the list of nodes contained in this platform. Similarly, the t11FcsPlatformMgmtAddrListIndex object in this table points to the list of management addresses associated with this platform." INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex, t11FcsPlatformIndex } ::= { t11FcsPlatformTable 1 }

T11FcsPlatformEntry ::= SEQUENCE { t11FcsPlatformIndex Unsigned32, t11FcsPlatformName OCTET STRING, t11FcsPlatformType OCTET STRING, t11FcsPlatformNodeNameListIndex T11FcListIndexPointerOrZero, t11FcsPlatformMgmtAddrListIndex T11FcListIndexPointerOrZero, t11FcsPlatformVendorId SnmpAdminString, t11FcsPlatformProductId SnmpAdminString, t11FcsPlatformProductRevLevel SnmpAdminString, t11FcsPlatformDescription SnmpAdminString, t11FcsPlatformLabel SnmpAdminString, t11FcsPlatformLocation SnmpAdminString, t11FcsPlatformSystemID SnmpAdminString, t11FcsPlatformSysMgmtAddr T11FcListIndexPointerOrZero, t11FcsPlatformClusterId SnmpAdminString, t11FcsPlatformClusterMgmtAddr T11FcListIndexPointerOrZero, t11FcsPlatformFC4Types OCTET STRING }

t11FcsPlatformIndex OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) MAX-ACCESS not-accessible STATUS current DESCRIPTION "An integer value to distinguish one platform from other platforms in the same Fabric." ::= { t11FcsPlatformEntry 1 }

t11FcsPlatformName OBJECT-TYPE SYNTAX OCTET STRING (SIZE (1..255)) MAX-ACCESS read-only STATUS current DESCRIPTION "The name of this platform. The last byte of the value indicates the format of the name (even if the name itself is the zero-length string) as specified in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.2" ::= { t11FcsPlatformEntry 2 }

t11FcsPlatformType OBJECT-TYPE SYNTAX OCTET STRING (SIZE (4)) MAX-ACCESS read-only STATUS current DESCRIPTION "The type(s) of this platform, encoded in 4 bytes as specified in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.3" ::= { t11FcsPlatformEntry 3 }

t11FcsPlatformNodeNameListIndex OBJECT-TYPE SYNTAX T11FcListIndexPointerOrZero MAX-ACCESS read-only STATUS current DESCRIPTION "The list of nodes for this platform. This object points to an entry in the t11FcsNodeNameListTable." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.6" ::= { t11FcsPlatformEntry 4 }

t11FcsPlatformMgmtAddrListIndex OBJECT-TYPE SYNTAX T11FcListIndexPointerOrZero MAX-ACCESS read-only STATUS current DESCRIPTION "The list of management addresses for this platform. This object points to an entry in the t11FcsMgmtAddrListTable." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.7" ::= { t11FcsPlatformEntry 5 }

t11FcsPlatformVendorId OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 12)) MAX-ACCESS read-only STATUS current DESCRIPTION "The identifier of the vendor of this platform, in the format specified in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.5" ::= { t11FcsPlatformEntry 6 }

t11FcsPlatformProductId OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 20)) MAX-ACCESS read-only STATUS current DESCRIPTION "The vendor's product and/or model identifier for this platform, in the format specified in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.5" ::= { t11FcsPlatformEntry 7 }


<pink>Okay bestie, we're picking up right where the last part left off</pink> πŸ’…βœ¨ This batch is all about the platform's product revision level, description, label, location, and cluster stuff, then the Node Name List table, the stats counters, and the notification controls. Let's go πŸŽ€

<purple>The product revision level</purple> is the first one here. It's a 0-or-4-to-32 character string, read-only, and it follows the format in FC-GS-5 🌸

t11FcsPlatformProductRevLevel OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 4..32)) MAX-ACCESS read-only STATUS current DESCRIPTION "The product revision level for this platform, in the format specified in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.5" ::= { t11FcsPlatformEntry 8 }

t11FcsPlatformDescription OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 4..128)) MAX-ACCESS read-only STATUS current DESCRIPTION "The description of this platform, in the format specified in FC-GS-5. This value should include the full name and version identification of the platform's hardware type and software operating system." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.10" ::= { t11FcsPlatformEntry 9 }

t11FcsPlatformLabel OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 4..64)) MAX-ACCESS read-only STATUS current DESCRIPTION "An administratively assigned symbolic name for the platform, in the format specified in FC-GS-5." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.11"

::= { t11FcsPlatformEntry 10 }

t11FcsPlatformLocation OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 4..128)) MAX-ACCESS read-only STATUS current DESCRIPTION "The physical location of the platform, in the format specified in FC-GS-5 (e.g., 'telephone closet, 3rd floor')." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.12" ::= { t11FcsPlatformEntry 11 }

t11FcsPlatformSystemID OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 4..64)) MAX-ACCESS read-only STATUS current DESCRIPTION "An identifier for a hosting system that this platform is associated with. This identifier is used to associate platforms of logical types (e.g., logical partitions) with a physical system." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.5" ::= { t11FcsPlatformEntry 12 }

t11FcsPlatformSysMgmtAddr OBJECT-TYPE SYNTAX T11FcListIndexPointerOrZero MAX-ACCESS read-only STATUS current DESCRIPTION "A list of management addresses for the platform." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, sections 6.2.3.4.5 and 6.2.3.2.7." ::= { t11FcsPlatformEntry 13 }

t11FcsPlatformClusterId OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 4..64)) MAX-ACCESS read-only STATUS current DESCRIPTION "An identifier for a cluster that this platform is associated with, where a cluster is a set of independent platforms that are managed together to provide increased performance capabilities, failover, etc."

REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.5" ::= { t11FcsPlatformEntry 14 }

t11FcsPlatformClusterMgmtAddr OBJECT-TYPE SYNTAX T11FcListIndexPointerOrZero MAX-ACCESS read-only STATUS current DESCRIPTION "A list of management addresses for the cluster identified in the corresponding instance of t11FcsPlatformClusterId." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, sections 6.2.3.4.5 and 6.2.3.2.7." ::= { t11FcsPlatformEntry 15 }

t11FcsPlatformFC4Types OBJECT-TYPE SYNTAX OCTET STRING (SIZE (0 | 32)) MAX-ACCESS read-only STATUS current DESCRIPTION "The FC-4 types supported by this platform, formatted as a bit mask as specified in FC-GS-5. If this object contains the zero-length string, the types are unknown." REFERENCE "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, FC-GS-5, section 6.2.3.4.5" ::= { t11FcsPlatformEntry 16 }

-- -- Node Name List table --

t11FcsNodeNameListTable OBJECT-TYPE SYNTAX SEQUENCE OF T11FcsNodeNameListEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains all the lists of nodes." ::= { t11FcsDiscoveredConfig 7 }

t11FcsNodeNameListEntry OBJECT-TYPE SYNTAX T11FcsNodeNameListEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about a node, which is known to a switch (identified by fcmInstanceIndex and fcmSwitchIndex)." INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsNodeNameListIndex, t11FcsNodeName } ::= { t11FcsNodeNameListTable 1 }

T11FcsNodeNameListEntry ::= SEQUENCE { t11FcsNodeNameListIndex T11FcListIndex, t11FcsNodeName FcNameIdOrZero }

t11FcsNodeNameListIndex OBJECT-TYPE SYNTAX T11FcListIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "The index value of the node name list." ::= { t11FcsNodeNameListEntry 1 }

t11FcsNodeName OBJECT-TYPE SYNTAX FcNameIdOrZero (SIZE(8 | 16)) MAX-ACCESS read-only STATUS current DESCRIPTION "The name of this node." ::= { t11FcsNodeNameListEntry 2 }

-- -- Statistics --

t11FcsStatsTable OBJECT-TYPE SYNTAX SEQUENCE OF T11FcsStatsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains all the statistics related to the Fabric Configuration Server." ::= { t11FcsStats 1 }

t11FcsStatsEntry OBJECT-TYPE SYNTAX T11FcsStatsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A set of statistics for a particular Fabric (identified by t11FcsFabricIndex) on a switch (identified by fcmInstanceIndex and fcmSwitchIndex)."

INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex } ::= { t11FcsStatsTable 1 }

T11FcsStatsEntry ::= SEQUENCE { t11FcsInGetReqs Counter32, t11FcsOutGetReqs Counter32, t11FcsInRegReqs Counter32, t11FcsOutRegReqs Counter32, t11FcsInDeregReqs Counter32, t11FcsOutDeregReqs Counter32, t11FcsRejects Counter32 }

t11FcsInGetReqs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of Get Requests received by the Fabric Configuration Server on this Fabric.

This counter has no discontinuities other than those that all Counter32s have when sysUpTime=0." ::= { t11FcsStatsEntry 1 }

t11FcsOutGetReqs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of Get Requests sent by the Fabric Configuration Server on this Fabric to other servers in the Fabric.

This counter has no discontinuities other than those that all Counter32s have when sysUpTime=0." ::= { t11FcsStatsEntry 2 }

t11FcsInRegReqs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of Registration Requests received by the Fabric Configuration Server on this Fabric.

This counter has no discontinuities other than those that all Counter32s have when sysUpTime=0." ::= { t11FcsStatsEntry 3 }

t11FcsOutRegReqs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of Registration Requests sent by the Fabric Configuration Server on this Fabric.

This counter has no discontinuities other than those that all Counter32s have when sysUpTime=0." ::= { t11FcsStatsEntry 4 }

t11FcsInDeregReqs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of Deregistration Requests received by the Fabric Configuration Server on this Fabric.

This counter has no discontinuities other than those that all Counter32s have when sysUpTime=0." ::= { t11FcsStatsEntry 5 }

t11FcsOutDeregReqs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of Deregistration Requests sent by the Fabric Configuration Server on this Fabric.

This counter has no discontinuities other than those that all Counter32s have when sysUpTime=0." ::= { t11FcsStatsEntry 6 }

t11FcsRejects OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of requests rejected by the Fabric Configuration Server on this Fabric.

This counter has no discontinuities other than those that all Counter32s have when sysUpTime=0." ::= { t11FcsStatsEntry 7 }

-- -- Notification Control Table --

t11FcsNotifyControlTable OBJECT-TYPE SYNTAX SEQUENCE OF T11FcsNotifyControlEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of control information for notifications generated due to Fabric Configuration Server events.

Values written to objects in this table should be persistent/retained over agent reboots." ::= { t11FcsNotificationInfo 1 }

t11FcsNotifyControlEntry OBJECT-TYPE SYNTAX T11FcsNotifyControlEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry contains notification control information for a Fabric Configuration Server on a particular Fabric (identified by t11FcsFabricIndex) on a particular switch (identified by fcmInstanceIndex and fcmSwitchIndex)." INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex } ::= { t11FcsNotifyControlTable 1 }

T11FcsNotifyControlEntry ::= SEQUENCE { t11FcsReqRejectNotifyEnable TruthValue, t11FcsDiscoveryCompNotifyEnable TruthValue, t11FcsMgmtAddrChangeNotifyEnable TruthValue, t11FcsRejectCtCommandString OCTET STRING, t11FcsRejectRequestSource FcNameIdOrZero, t11FcsRejectReasonCode T11NsGs4RejectReasonCode, t11FcsRejectReasonCodeExp T11FcsRejectReasonExplanation, t11FcsRejectReasonVendorCode OCTET STRING }

t11FcsReqRejectNotifyEnable OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "This object specifies if the Fabric Configuration Server should generate 't11FcsRqRejectNotification' notifications.

If the value of this object is 'true', then the notification is issued. If the value of this object is 'false', then the notification is not issued." DEFVAL { false } ::= { t11FcsNotifyControlEntry 1 }


<lavender>That's the whole batch</lavender> πŸ¦‹ Next up we've got the rest of the notification control objects, so keep your eyes peeled πŸ‘€πŸ’œ

t11FcsDiscoveryCompNotifyEnable OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "This object specifies if the Fabric Configuration Server should generate 't11FcsDiscoveryCompleteNotify' notifications.

If the value of this object is 'true', then the notification is issued. If the value of this object is 'false', then the notification is not issued." DEFVAL { false } ::= { t11FcsNotifyControlEntry 2 }

t11FcsMgmtAddrChangeNotifyEnable OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "This object specifies if the Fabric Configuration Server should generate 't11FcsMgmtAddrChangeNotify' notifications.

If the value of this object is 'true', then the notification is issued. If the value of this object is 'false', then the notification is not issued." DEFVAL { false } ::= { t11FcsNotifyControlEntry 3 }

t11FcsRejectCtCommandString OBJECT-TYPE SYNTAX OCTET STRING (SIZE (0..255)) MAX-ACCESS read-only STATUS current DESCRIPTION "The binary content of the Fabric Configuration Server request, formatted as an octet string (in network byte order) containing the Common Transport Information Unit (CT_IU), as described in Table 2 of FC-GS-5 (including the preamble), which was most recently rejected by the Fabric Configuration Server for this Fabric.

This object contains the zero-length string if and when the CT-IU's content is unavailable.

When the length of this object is 255 octets, it contains the first 255 octets of the CT-IU (in network byte order)." ::= { t11FcsNotifyControlEntry 4 }

t11FcsRejectRequestSource OBJECT-TYPE SYNTAX FcNameIdOrZero MAX-ACCESS read-only STATUS current DESCRIPTION "The WWN that was the source of the CT_IU contained in the corresponding instance of t11FcsRejectCtCommandString." ::= { t11FcsNotifyControlEntry 5 }

t11FcsRejectReasonCode OBJECT-TYPE SYNTAX T11NsGs4RejectReasonCode MAX-ACCESS read-only STATUS current DESCRIPTION "This object contains the reason code corresponding to the latest Fabric Configuration Server request rejected by the local system." ::= { t11FcsNotifyControlEntry 6 }

t11FcsRejectReasonCodeExp OBJECT-TYPE SYNTAX T11FcsRejectReasonExplanation MAX-ACCESS read-only STATUS current DESCRIPTION "When the corresponding instance of t11FcsRejectReasonCode has the value: 'unable to perform command request', this object contains the corresponding reason code explanation." ::= { t11FcsNotifyControlEntry 7 }

t11FcsRejectReasonVendorCode OBJECT-TYPE SYNTAX OCTET STRING (SIZE(1)) MAX-ACCESS read-only STATUS current DESCRIPTION

"A registration reject vendor-specific code. This object contains the vendor-specific code of the most recently rejected Fabric Configuration Server Registration request for the particular port on the particular Fabric." ::= { t11FcsNotifyControlEntry 8 } -- -- Notifications --

t11FcsRqRejectNotification NOTIFICATION-TYPE OBJECTS { t11FamLocalSwitchWwn, t11FcsRejectReasonCode, t11FcsRejectReasonCodeExp, t11FcsRejectReasonVendorCode } STATUS current DESCRIPTION "This notification is generated whenever the Fabric Configuration Server on a switch (indicated by the value of t11FamLocalSwitchWwn) rejects a Fabric Configuration Server request.

The Fabric Configuration Server should update the t11FcsRejectReasonCode, t11FcsRejectReasonCodeExp and t11FcsRejectReasonVendorCode objects with the corresponding reason code, explanation and vendor specific code before sending the notification." ::= { t11FcsNotifications 1 }

t11FcsDiscoveryCompleteNotify NOTIFICATION-TYPE OBJECTS {t11FcsFabricDiscoveryRangeLow} STATUS current DESCRIPTION "This notification is generated by the Fabric Configuration Server on the completion of the discovery of Fabrics in the range that has t11FcsFabricDiscoveryRangeLow at its low end." ::= { t11FcsNotifications 2 }

t11FcsMgmtAddrChangeNotify NOTIFICATION-TYPE OBJECTS { t11FcsMgmtAddrChangeFabricIndex, t11FcsMgmtAddrChangeIeName } STATUS current DESCRIPTION "This notification is generated by the Fabric Configuration Server whenever the management address of an IE changes, i.e., whenever an entry in the t11FcsMgmtAddrListTable changes."

::= { t11FcsNotifications 3 }

t11FcsMgmtAddrChangeFabricIndex OBJECT-TYPE SYNTAX T11FabricIndex MAX-ACCESS accessible-for-notify STATUS current DESCRIPTION "The index value that identifies the Fabric on which a management address change has been detected." ::= { t11FcsNotificationInfo 2 }

t11FcsMgmtAddrChangeIeName OBJECT-TYPE SYNTAX FcNameIdOrZero MAX-ACCESS accessible-for-notify STATUS current DESCRIPTION "The IE for which a management address change has been detected." ::= { t11FcsNotificationInfo 3 }

-- Conformance

t11FcsMIBCompliances OBJECT IDENTIFIER ::= { t11FcsMIBConformance 1 } t11FcsMIBGroups OBJECT IDENTIFIER ::= { t11FcsMIBConformance 2 }

t11FcsMIBCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for entities that implement the Fabric Configuration Server." MODULE MANDATORY-GROUPS { t11FcsDiscoveredConfigGroup, t11FcsDiscoveryStatusGroup, t11FcsNotificationInfoGroup, t11FcsNotificationGroup }

GROUP t11FcsDiscoveryControlGroup DESCRIPTION "This group is mandatory only for those systems that allow discovery of configuration by Fabric Configuration Servers to be controlled via a MIB."

GROUP t11FcsStatisticsGroup DESCRIPTION "These counters, containing Fabric Configuration Server statistics, are mandatory only for those systems that count such events."

OBJECT t11FcsDiscoveryStatus WRITE-SYNTAX INTEGER { localOnly(3) } MIN-ACCESS read-only DESCRIPTION "Write access is not required. However, if write access is supported, then the only writable value is 'localOnly'."

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

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

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

::= { t11FcsMIBCompliances 1 }

-- Units of Conformance

t11FcsDiscoveryControlGroup OBJECT-GROUP OBJECTS { t11FcsFabricDiscoveryRangeLow, t11FcsFabricDiscoveryRangeHigh, t11FcsFabricDiscoveryStart, t11FcsFabricDiscoveryTimeOut } STATUS current DESCRIPTION "A collection of objects for requesting a Fabric Configuration Server to discover the configuration of one or more Fabrics." ::= { t11FcsMIBGroups 1 }

t11FcsDiscoveryStatusGroup OBJECT-GROUP OBJECTS { t11FcsDiscoveryStatus, t11FcsDiscoveryCompleteTime } STATUS current DESCRIPTION "A collection of objects with which to monitor the status of discovery (of Fabric configurations) by Fabric Configuration Servers."

::= { t11FcsMIBGroups 2 }

t11FcsDiscoveredConfigGroup OBJECT-GROUP OBJECTS { t11FcsIeType, t11FcsIeDomainId, t11FcsIeMgmtId, t11FcsIeFabricName, t11FcsIeLogicalName, t11FcsIeMgmtAddrListIndex, t11FcsIeInfoList, t11FcsMgmtAddr, t11FcsPortType, t11FcsPortTxType, t11FcsPortModuleType, t11FcsPortPhyPortNum, t11FcsPortAttachPortNameIndex, t11FcsPortState, t11FcsPortSpeedCapab, t11FcsPortOperSpeed, t11FcsPortZoningEnfStatus, t11FcsAttachPortName, t11FcsPlatformName, t11FcsPlatformType, t11FcsPlatformNodeNameListIndex, t11FcsPlatformMgmtAddrListIndex, t11FcsPlatformVendorId, t11FcsPlatformProductId, t11FcsPlatformProductRevLevel, t11FcsPlatformDescription, t11FcsPlatformLabel, t11FcsPlatformLocation, t11FcsPlatformSystemID, t11FcsPlatformSysMgmtAddr, t11FcsPlatformClusterId, t11FcsPlatformClusterMgmtAddr, t11FcsPlatformFC4Types, t11FcsNodeName } STATUS current DESCRIPTION "A collection of objects to contain the Fabric configuration information discovered by Fabric Configuration Servers." ::= { t11FcsMIBGroups 3 }

t11FcsStatisticsGroup OBJECT-GROUP OBJECTS { t11FcsInGetReqs, t11FcsOutGetReqs, t11FcsInRegReqs, t11FcsOutRegReqs, t11FcsInDeregReqs, t11FcsOutDeregReqs, t11FcsRejects } STATUS current DESCRIPTION "A collection of objects for Fabric Configuration Server statistics information." ::= { t11FcsMIBGroups 4 }

t11FcsNotificationInfoGroup OBJECT-GROUP OBJECTS { t11FcsReqRejectNotifyEnable, t11FcsDiscoveryCompNotifyEnable, t11FcsMgmtAddrChangeNotifyEnable, t11FcsRejectCtCommandString, t11FcsRejectRequestSource, t11FcsRejectReasonCode, t11FcsRejectReasonCodeExp, t11FcsRejectReasonVendorCode, t11FcsMgmtAddrChangeFabricIndex, t11FcsMgmtAddrChangeIeName } STATUS current DESCRIPTION "A collection of notification control and notification information objects for monitoring Fabric Configuration Servers." ::= { t11FcsMIBGroups 5 }

t11FcsNotificationGroup NOTIFICATION-GROUP NOTIFICATIONS { t11FcsRqRejectNotification, t11FcsDiscoveryCompleteNotify, t11FcsMgmtAddrChangeNotify } STATUS current DESCRIPTION "A collection of notifications for monitoring Fabric Configuration Servers." ::= { t11FcsMIBGroups 6 }

END


# 7. IANA Considerations ✨

IANA has done its thing and assigned a MIB OID (162) under the mib-2 subtree πŸ§šπŸ’–

# 8. Security Considerations πŸ”βœ¨

Okay bestie, this part is serious, but we can still make it cute πŸŽ€. There are a bunch of management objects in this MIB module with a MAX-ACCESS of read-write and/or read-create. Those objects may be considered sensitive or vulnerable in some network environments. Supporting SET operations in a non-secure environment without proper protection can have a negative effect on network operations 😭. These are the objects, and what makes each one sensitive:

t11FcsFabricDiscoveryRangeLow t11FcsFabricDiscoveryRangeHigh t11FcsFabricDiscoveryTimeOut t11FcsFabricDiscoveryStart -- the ability to specify parameters for, and trigger the start of, a topology discovery. t11FcsDiscoveryStatus -- the ability to abort a discovery, or invalidate discovered information. t11FcsReqRejectNotifyEnable t11FcsDiscoveryCompNotifyEnable t11FcsMgmtAddrChangeNotifyEnable -- the ability to enable/disable notifications.


Again, these objects may be considered sensitive or vulnerable in some network environments. For example, being able to invalidate discovered topology could let an attacker hide unauthorized equipment on the network πŸ‘€πŸ’€. And yep, SET support in a non-secure environment without protection can still cause network trouble.

Some of the readable objects in this MIB module (the ones 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, and possibly even encrypt their values when sending them over the network via SNMP πŸ”’. Here are the tables and objects, and what makes them sensitive:

t11FcsIeTable t11FcsMgmtAddrListTable t11FcsPortTable t11FcsAttachPortNameListTable t11FcsPlatformTable t11FcsNodeNameListTable -- contains information about the topology of the Fibre Channel network.

t11FcsStatsTable -- contains statistics information about the operation of the Fabric Configuration Server.


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 look into the security features provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms for authentication and privacy πŸ’œ.

Deployment of SNMP versions before SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and turn on cryptographic security πŸ”. It's then up to the customer or operator to make sure the SNMP entity giving access to an instance of this MIB module is configured so that only the principals (users) with legitimate rights can GET or SET (change/create/delete) these objects 🫢.

---

# 9. Acknowledgements πŸ™

This document was originally developed and approved by the INCITS Task Group T11.5 (`http://www.t11.org`) as the SM-FCFGM project 🌸. We want to shout out the many contributions and comments from the INCITS Technical Committee T11, especially from these folks:

- T11 Chair: Robert Snively, Brocade
- T11 Vice Chair: Claudio DeSanti, Cisco Systems
- T11.5 Chair: Roger Cummings, Symantec
- T11.5 Vice Chair: Scott Kipp, McData
- and T11.5 members.

The document was then a work item of the IETF's IMSS Working Group, chaired by David Black (EMC Corporation). Big thanks to Bert Wijnen (Lucent Technologies) for his thorough review of the document πŸ‘‘. We also want to acknowledge Dan Romascanu (Avaya), the IETF Area Director, for his comments and help 🧚.

---

# 10. Normative References πŸ“š

- `[RFC2578]` McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
- `[RFC2579]` McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
- `[RFC2580]` McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.
- `[RFC2788]` Freed, N. and S. Kille, "Network Services Monitoring MIB", RFC 2788, March 2000.
- `[RFC3411]` Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks", STD 58, RFC 3411, December 2002.
- `[FC-FS]` "Fibre Channel - Framing and Signaling (FC-FS)" ANSI INCITS 373-2003, `http://www.t11.org/t11/stat.nsf/upnum/1331-d`, April 2003.
- `[FC-GS-5]` "Fibre Channel - Generic Services - 5 (FC-GS-5)", ANSI INCITS 427-2007, `http://www.t11.org/t11/stat.nsf/upnum/1677-d`, 2007.
- `[FC-SW-4]` "Fibre Channel - Switch Fabric - 4 (FC-SW-4)", ANSI INCITS 418-2006, `http://www.t11.org/t11/stat.nsf/upnum/1674-d`, December 2006.
- `[RFC4044]` McCloghrie, K., "Fibre Channel Management MIB", RFC 4044, May 2005.
- `[RFC4438]` DeSanti, C., Gaonkar, V., Vivek, H.K., McCloghrie, K., and S. Gai, "Fibre Channel Name Server MIB", RFC 4438, March 2006.
- `[RFC4439]` DeSanti, C., Gaonkar, V., McCloghrie, K., and S. Gai, "Fibre Channel Fabric Address Manager MIB", RFC 4439, March 2006.
- `[RFC2119]` Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

---

# 11. 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.
- `[RFC4455]` Hallak-Stamler, M., Bakke, M., Lederman, Y., Krueger, M., and K. McCloghrie, "Definition of Managed Objects for Small Computer System Interface (SCSI) Entities", RFC 4455, April 2006.

---

# Authors' Addresses πŸ’Œ

Claudio DeSanti Cisco Systems, Inc. 170 West Tasman Drive San Jose, CA 95134 USA Phone: +1 408 853-9172 EMail: cds@cisco.com

H.K. Vivek Cisco Systems, Inc. 71 Millers Rd Bangalore, India Phone: +91 80 2289933x5117 EMail: hvivek@cisco.com

Keith McCloghrie Cisco Systems, Inc. 170 West Tasman Drive San Jose, CA 95134 USA Phone: +1 408 526-5260 EMail: kzm@cisco.com

Silvano Gai Nuova Systems 3 West Plumeria Drive San Jose, CA 95134 Phone: +1 408 387-6123 EMail: sgai@nuovasystems.com


---

# Full Copyright Statement Β©

The copyright for this one is `Copyright (C) The IETF Trust (2007).` ✨ It's subject to the rights, licenses and restrictions in BCP 78, and the authors keep all their rights except where BCP 78 says otherwise πŸ’….

This document and the info in it are provided AS IS. THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE disclaim ALL WARRANTIES, EXPRESS OR IMPLIED. That includes, but isn't limited to, any warranty that using the info won't infringe any rights, and any implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE πŸ™ˆ.

---

# Intellectual Property βš–οΈ

The IETF takes no position on whether any Intellectual Property Rights (or other rights) that might be claimed to cover this technology are valid or in scope. It also doesn't say whether licenses for those rights might or might not be available, and it hasn't independently looked for any such rights πŸ€·β€β™€οΈ. Info on how RFC documents handle rights is in BCP 78 and BCP 79.

Copies of IPR disclosures sent to the IETF Secretariat, plus any assurances of licenses, or the results of attempts to get a general license or permission for implementers or users, can be found in the IETF's online IPR repository at `http://www.ietf.org/ipr` πŸ”Ž.

The IETF also invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard. Send that info 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