RFC 6173

Definitions of Managed Objects for the Internet Fibre Channel Protocol (iFCP)

πŸ“… published March 2011, from ietf

Definitions of Managed Objects for the Internet Fibre Channel Protocol (iFCP) πŸ¦‹

okay bestie, this is RFC 6173 πŸ“œ It's a Standards Track doc from the Internet Engineering Task Force (IETF), with P. Venkatesen, Ed. from HCL Technologies as the editor. It was published in March 2011 under ISSN 2070-1721, and it obsoletes RFC 4369 🫢

Abstract ✨

so the big idea is that this doc defines Management Information Base (MIB) objects πŸ’… Those let you monitor and control Internet Fibre Channel Protocol (iFCP) gateway instances and their sessions, using network management protocols. It also says outright that it obsoletes RFC 4369 🌸

Status of This Memo πŸŽ€

this is an Internet Standards Track document, and it's a product of the Internet Engineering Task Force (IETF) 🌈 It represents the consensus of the IETF community, got public review, and was approved for publication by the Internet Engineering Steering Group (IESG). For more on Internet Standards, check Section 2 of RFC 5741 πŸ“š

info about the current status, errata, and how to give feedback lives at http://www.rfc-editor.org/info/rfc6173 πŸ”—

Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved. ✨

this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the date of publication. please read these carefully, bestie, because they describe your rights and restrictions. Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License πŸ™ˆ

this document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. the people controlling the copyright in some of that material may not have given the IETF Trust permission to allow modifications outside the IETF Standards Process. so without an adequate license from those people, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process. the exceptions are formatting it for publication as an RFC or translating it into languages other than English 🌸

Table of Contents 🧚

1. The Internet-Standard Management Framework.....................2
2. Introduction...................................................3
3. Technical Description..........................................4
4. Differences from RFC 4369......................................4
5. MIB Definition.................................................5
6. Security Considerations.......................................28
7. IANA Considerations...........................................29
8. References....................................................29
   8.1. Normative References.....................................29
   8.2. Informative References...................................30
9. Acknowledgments...............................................31

1. The Internet-Standard Management Framework πŸ“

okay so if you want the detailed overview of the docs that describe the current Internet-Standard Management Framework, go to 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 is compliant with SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] ✨

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] 🫢

2. Introduction 🌈

iFCP (RFC 4172 [RFC4172]) gives you Fibre Channel fabric functionality on an IP network, where TCP/IP switching and routing elements replace Fibre Channel components. it's used between iFCP gateways, and FC-to-IP-based storage gateways can use it for Fibre Channel Protocol (FCP) storage interconnects πŸ”₯

here's Figure 1, which shows an example of an interconnect between iFCP gateways πŸ¦‹

        Gateway Region                   Gateway Region
 +--------+  +--------+           +--------+  +--------+
 |   FC   |  |  FC    |           |   FC   |  |   FC   |
 | Device |  | Device |           | Device |  | Device |  Fibre
 |........|  |........| FC        |........|  |........|  Channel
 | N_PORT |  | N_PORT |<.........>| N_PORT |  | N_PORT |  Device
 +---+----+  +---+----+ Traffic   +----+---+  +----+---+  Domain
     |           |                     |           |         ^
 +---+----+  +---+----+           +----+---+  +----+---+     |
 | F_PORT |  | F_PORT |           | F_PORT |  | F_PORT |     |
=+========+==+========+===========+========+==+========+==========
 |    iFCP Layer      |<--------->|     iFCP Layer     |     |
 |....................|     ^     |....................|     |
 |     iFCP Portal    |     |     |     iFCP Portal    |     v
 +--------+-----------+     |     +----------+---------+    IP
      iFCP|Gateway      Control          iFCP|Gateway      Network
          |              Data                |
          |                                  |
          |                                  |
          |<------Encapsulated Frames------->|
          |      +------------------+        |
          |      |                  |        |
          +------+    IP Network    +--------+
                 |                  |
                 +------------------+

       Figure 1: Interconnect between iFCP Gateways

the iFCP MIB module is designed so a network management protocol like SNMP can monitor and manage local iFCP gateway instances, including the configuration of iFCP sessions between gateways πŸ’…

3. Technical Description πŸ’–

the iFCP MIB module is split into sections for iFCP local gateway instance management, iFCP session management, and iFCP session statistics ✨

the gateway management section gives default settings and info about each local instance. one management entity can monitor multiple local gateway instances. each local gateway is conceptually an independent gateway with both Fibre Channel and IP interfaces. the default IP Time Out Value (IP_TOV) can be configured for each gateway. other standard MIBs, like the Fibre Management MIB [RFC4044] or the Interfaces Group MIB [RFC2863], can manage non-iFCP-specific gateway parameters. the local gateway instance section gives iFCP-specific info, plus optional links to other standard management MIBs 🧚

the iFCP session management section covers iFCP sessions that use one of the local iFCP gateway instances. this section lets you manage specific iFCP parameters, including changing the IP_TOV from the gateway's default setting 🌸

the iFCP session statistics section gives statistical info on the iFCP sessions that use one of the local iFCP gateways. these tables augment the session management table. extra stats for a gateway or session that aren't iFCP-specific can come from other standard MIBs. the iFCP statistics come in both high-capacity (Counter64) and low-capacity (Counter32) methods πŸ“Š

the following MIB module imports from SNMPv2-SMI [RFC2578], SNMPv2-TC [RFC2579], SNMPv2-CONF [RFC2580], HCNUM-TC [RFC2856], IF-MIB [RFC2863], SNMP-FRAMEWORK-MIB [RFC3411], INET-ADDRESS-MIB [RFC4001], FC-MGMT-MIB [RFC4044], ENTITY-MIB (v3) [RFC4133], and RMON2-MIB [RFC4502] πŸŽ€

4. Differences from RFC 4369 πŸ™ˆ

as explained in [RFC6172], the iFCP address translation mode is deprecated. this document obsoletes the iFCP MIB module [RFC4369] for this change πŸ’€

5. MIB Definition πŸ‘‘

here's the MIB module itself, starting with its imports, module identity, and first textual convention πŸ’œ

IFCP-MGMT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Gauge32,
    Integer32,
    Unsigned32,
    transmission
         FROM SNMPv2-SMI

    OBJECT-GROUP,
    MODULE-COMPLIANCE
         FROM SNMPv2-CONF

    TEXTUAL-CONVENTION,
    TimeStamp,
    TruthValue,
    StorageType
         FROM SNMPv2-TC

--  From RFC 4502
    ZeroBasedCounter32
         FROM RMON2-MIB

--  From RFC 2856
    ZeroBasedCounter64
         FROM HCNUM-TC

--  From RFC 2863
    InterfaceIndexOrZero
         FROM IF-MIB

--  From RFC 3411
    SnmpAdminString
         FROM SNMP-FRAMEWORK-MIB

--  From RFC 4001
    InetAddressType,
    InetAddress,
    InetPortNumber
         FROM INET-ADDRESS-MIB

--  From RFC 4044
    FcNameIdOrZero,
    FcAddressIdOrZero
         FROM FC-MGMT-MIB

--  From RFC 4133
    PhysicalIndexOrZero
         FROM ENTITY-MIB
      ;

ifcpMgmtMIB   MODULE-IDENTITY
      LAST-UPDATED "201103090000Z"
      ORGANIZATION "IETF STORage Maintenance (STORM) Working Group"
      CONTACT-INFO "
        Working Group Email : storm@ietf.org
        Attn: Prakash Venkatesen
              HCL Technologies
              Email: prakashvn@hcl.com"

      DESCRIPTION
              "This module defines management information specific
               to Internet Fibre Channel Protocol (iFCP) gateway
               management.

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

               Redistribution and use in source and binary forms,
               with or without modification, is permitted pursuant
               to, and subject to the license terms contained in, the
               Simplified BSD License set forth in Section 4.c of the
               IETF Trust's Legal Provisions Relating to IETF
               Documents (http://trustee.ietf.org/license-info)."
          REVISION    "201103090000Z"
      DESCRIPTION
               "Second version of iFCP Management Module.  The iFCP
                address translation mode is deprecated.
                This MIB module published as RFC 6173."
          REVISION    "200601170000Z"
      DESCRIPTION
               "Initial version of iFCP Management Module.
                This MIB module published as RFC 4369."
      ::=  { transmission 230 }

--
--  Textual Conventions
--

  IfcpIpTOVorZero ::= TEXTUAL-CONVENTION
    DISPLAY-HINT   "d"
    STATUS         current
    DESCRIPTION    "The maximum propagation delay, in seconds,
                    for an encapsulated FC frame to traverse the
                    IP network.  A value of 0 implies fibre
                    channel frame lifetime limits will not be
                    enforced."
    REFERENCE      "RFC 4172, iFCP Protocol Specification"
    SYNTAX         Unsigned32 (0..3600)

Okay bestie, the MIB is where the iFCP gateway settings and session info get defined, so let's go πŸ‘‘βœ¨ First up are the textual conventions, which are basically custom types for the values we'll be using πŸ¦‹

     IfcpLTIorZero ::= TEXTUAL-CONVENTION
       DISPLAY-HINT   "d"
       STATUS         current
       DESCRIPTION    "The value for the Liveness Test Interval
                       (LTI) being used in an iFCP connection, in
                       seconds.  A value of 0 implies no Liveness
                       Test Interval will be used."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       SYNTAX         Unsigned32 (0..65535)

     IfcpSessionStates ::= TEXTUAL-CONVENTION
       STATUS         current
       DESCRIPTION    "The value for an iFCP session state."
       SYNTAX         INTEGER {down(1), openPending(2), open(3)}

     IfcpAddressMode ::= TEXTUAL-CONVENTION
       STATUS         current
       DESCRIPTION    "The values for iFCP Address Translation
                       Mode."
       REFERENCE      "RFC 6172, Deprecation of iFCP Address
                       Translation Mode"
       SYNTAX         INTEGER {addressTransparent(1),
                               addressTranslation(2)}

Next we set up the object identifier tree for the gateway objects and the local gateway instance table πŸ’… The LTI here is the Liveness Test Interval, and the whole table is all about the local gateway instances that get managed 🌸

   --
   -- Internet Fibre Channel Protocol (iFCP)
   --

   ifcpGatewayObjects      OBJECT IDENTIFIER ::= {ifcpMgmtMIB 1}
   ifcpGatewayConformance  OBJECT IDENTIFIER ::= {ifcpMgmtMIB 2}

   --
   -- Local iFCP Gateway Instance Information ==================
   --
   ifcpLclGatewayInfo OBJECT IDENTIFIER ::= {ifcpGatewayObjects 1}

   ifcpLclGtwyInstTable OBJECT-TYPE
       SYNTAX           SEQUENCE OF IfcpLclGtwyInstEntry
       MAX-ACCESS       not-accessible
       STATUS           current
       DESCRIPTION
   "Information about all local iFCP gateway instances that can
    be monitored and controlled.  This table contains an entry
    for each local iFCP gateway instance that is being managed."
       ::= {ifcpLclGatewayInfo 1}

   ifcpLclGtwyInstEntry OBJECT-TYPE
       SYNTAX           IfcpLclGtwyInstEntry
       MAX-ACCESS       not-accessible
       STATUS           current
       DESCRIPTION
   "An entry in the local iFCP gateway instance table.
    Parameters and settings for the gateway are found here."
       INDEX { ifcpLclGtwyInstIndex }
       ::= {ifcpLclGtwyInstTable 1}

   IfcpLclGtwyInstEntry ::= SEQUENCE {
       ifcpLclGtwyInstIndex             Unsigned32,
       ifcpLclGtwyInstPhyIndex          PhysicalIndexOrZero,
       ifcpLclGtwyInstVersionMin        Unsigned32,
       ifcpLclGtwyInstVersionMax        Unsigned32,
       ifcpLclGtwyInstAddrTransMode     IfcpAddressMode,
       ifcpLclGtwyInstFcBrdcstSupport   TruthValue,
       ifcpLclGtwyInstDefaultIpTOV      IfcpIpTOVorZero,
       ifcpLclGtwyInstDefaultLTInterval IfcpLTIorZero,
       ifcpLclGtwyInstDescr             SnmpAdminString,
       ifcpLclGtwyInstNumActiveSessions Gauge32,
       ifcpLclGtwyInstStorageType       StorageType
                                     }

   ifcpLclGtwyInstIndex  OBJECT-TYPE
       SYNTAX            Unsigned32 (1..2147483647)
       MAX-ACCESS        not-accessible
       STATUS            current
       DESCRIPTION
   "An arbitrary integer value to uniquely identify this iFCP
    gateway from other local gateway instances."
       ::= {ifcpLclGtwyInstEntry      1}

   ifcpLclGtwyInstPhyIndex OBJECT-TYPE
       SYNTAX            PhysicalIndexOrZero
       MAX-ACCESS        read-only
       STATUS            current
       DESCRIPTION
   "An index indicating the location of this local gateway within
    a larger entity, if one exists.  If supported, this is the
    entPhysicalIndex from the Entity MIB (Version 3), for this
    iFCP gateway.  If not supported, or if not related to a
    physical entity, then the value of this object is 0."
       REFERENCE      "Entity MIB (Version 3)"
       ::= {ifcpLclGtwyInstEntry      2}

   ifcpLclGtwyInstVersionMin OBJECT-TYPE
       SYNTAX            Unsigned32 (0..255)
       MAX-ACCESS        read-only
       STATUS            current
       DESCRIPTION
   "The minimum iFCP protocol version supported by the local iFCP
    gateway instance."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpLclGtwyInstEntry      3}

   ifcpLclGtwyInstVersionMax OBJECT-TYPE
       SYNTAX            Unsigned32 (0..255)
       MAX-ACCESS        read-only
       STATUS            current
       DESCRIPTION
   "The maximum iFCP protocol version supported by the local iFCP
    gateway instance."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpLclGtwyInstEntry      4}

   ifcpLclGtwyInstAddrTransMode OBJECT-TYPE
       SYNTAX            IfcpAddressMode
       MAX-ACCESS        read-write
       STATUS            current
       DESCRIPTION
   "The local iFCP gateway operating mode.  Changing this value
    may cause existing sessions to be disrupted."
       REFERENCE      "RFC 4172, iFCP Protocol Specification;
                       RFC 6172, Deprecation of iFCP Address
                       Translation Mode"
       DEFVAL            { addressTransparent }
       ::= {ifcpLclGtwyInstEntry      5}

   ifcpLclGtwyInstFcBrdcstSupport OBJECT-TYPE
       SYNTAX            TruthValue
       MAX-ACCESS        read-write
       STATUS            current
       DESCRIPTION
   "This value indicates whether the local iFCP gateway supports
    FC Broadcast.  Changing this value may cause existing sessions
    to be disrupted."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       DEFVAL            { false }
       ::= {ifcpLclGtwyInstEntry      6}

   ifcpLclGtwyInstDefaultIpTOV OBJECT-TYPE
       SYNTAX            IfcpIpTOVorZero
       UNITS             "seconds"
       MAX-ACCESS        read-write
       STATUS            current
       DESCRIPTION
   "The default IP_TOV used for iFCP sessions at this gateway.
    This is the default maximum propagation delay that will be
    used for an iFCP session.  The value can be changed on a
    per-session basis.  The valid range is 0 - 3600 seconds.
    A value of 0 implies that fibre channel frame lifetime limits
    will not be enforced."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       DEFVAL            { 6 }
       ::= {ifcpLclGtwyInstEntry      7}

   ifcpLclGtwyInstDefaultLTInterval OBJECT-TYPE
       SYNTAX            IfcpLTIorZero
       UNITS             "seconds"
       MAX-ACCESS        read-write
       STATUS            current
       DESCRIPTION
   "The default Liveness Test Interval (LTI), in seconds, used
    for iFCP sessions at this gateway.  This is the default
    value for an iFCP session and can be changed on a
    per-session basis.  The valid range is 0 - 65535 seconds.
    A value of 0 implies no Liveness Test Interval will be
    performed on a session."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       DEFVAL            { 10 }
       ::= {ifcpLclGtwyInstEntry      8}

   ifcpLclGtwyInstDescr  OBJECT-TYPE
       SYNTAX            SnmpAdminString (SIZE (0..64))
       MAX-ACCESS        read-write
       STATUS            current
       DESCRIPTION
   "A user-entered description for this iFCP gateway."
       DEFVAL            { "" }
       ::= {ifcpLclGtwyInstEntry      9}

   ifcpLclGtwyInstNumActiveSessions OBJECT-TYPE
       SYNTAX            Gauge32 (0..4294967295)
       MAX-ACCESS        read-only
       STATUS            current
       DESCRIPTION
   "The current total number of iFCP sessions in the open or
    open-pending state."
       ::= {ifcpLclGtwyInstEntry      10}

   ifcpLclGtwyInstStorageType OBJECT-TYPE
       SYNTAX            StorageType
       MAX-ACCESS        read-only
       STATUS            current
       DESCRIPTION
   "The storage type for this row.  Parameter values defined
    for a gateway are usually non-volatile, but may be volatile
    or permanent in some configurations.  If permanent, then
    the following parameters must have read-write access:
    ifcpLclGtwyInstAddrTransMode, ifcpLclGtwyInstDefaultIpTOV,
    and ifcpLclGtwyInstDefaultLTInterval."
       DEFVAL            { nonVolatile }
       ::= {ifcpLclGtwyInstEntry      11}

Last bit of the MIB: the N Port session information table 🧚 An iFCP session is a pair of N_PORTs joined by one TCP/IP connection, and this table keeps track of each one πŸ’œ Mind the index and the TCP-MIB pointers, because they're kind of a big deal πŸ™ˆ

   --
   -- iFCP N Port Session Information ============================
   --

   ifcpNportSessionInfo
              OBJECT IDENTIFIER ::= {ifcpGatewayObjects 2}

   ifcpSessionAttributesTable OBJECT-TYPE
       SYNTAX                         SEQUENCE OF
                                       IfcpSessionAttributesEntry
       MAX-ACCESS                     not-accessible
       STATUS                         current
       DESCRIPTION
   "An iFCP session consists of the pair of N_PORTs comprising
    the session endpoints joined by a single TCP/IP connection.
    This table provides information on each iFCP session
    currently using a local iFCP gateway instance.  iFCP sessions
    are created and removed by the iFCP gateway instances, which
    are reflected in this table."
       ::= {ifcpNportSessionInfo 1}

   ifcpSessionAttributesEntry OBJECT-TYPE
       SYNTAX                         IfcpSessionAttributesEntry
       MAX-ACCESS                     not-accessible
       STATUS                         current
       DESCRIPTION
   "Each entry contains information about one iFCP session consisting
    of a pair of N_PORTs joined by a single TCP/IP connection.  This
    table's INDEX includes ifcpLclGtwyInstIndex, which identifies the
    local iFCP gateway instance that created the session for the
    entry.

    Soon after an entry is created in this table for an iFCP session, it
    will correspond to an entry in the tcpConnectionTable of the TCP-MIB
    (RFC 4022).  The corresponding entry might represent a preexisting
    TCP connection, or it might be a newly created entry.  (Note that if
    IPv4 is being used, an entry in RFC 2012's tcpConnTable may also
    correspond.)  The values of ifcpSessionLclPrtlAddrType and
    ifcpSessionRmtPrtlIfAddrType in this table and the values of
    tcpConnectionLocalAddressType and tcpConnectionRemAddressType used
    as INDEX values for the corresponding entry in the
    tcpConnectionTable should be the same; this makes it simpler to
    locate a session's TCP connection in the TCP-MIB.  (Of course, all
    four values need to be 'ipv4' if there's a corresponding entry in
    the tcpConnTable.)

    If an entry is created in this table for a session, prior to
    knowing which local and/or remote port numbers will be used for
    the TCP connection, then ifcpSessionLclPrtlTcpPort and/or
    ifcpSessionRmtPrtlTcpPort have the value zero until such time as
    they can be updated to the port numbers (to be) used for the
    connection.  (Thus, a port value of zero should not be used to
    locate a session's TCP connection in the TCP-MIB.)

    When the TCP connection terminates, the entry in the
    tcpConnectionTable and the entry in this table both get deleted
    (and, if applicable, so does the entry in the tcpConnTable)."
       INDEX { ifcpLclGtwyInstIndex, ifcpSessionIndex }
       ::= {ifcpSessionAttributesTable 1}

okay bestie, the MIB table keeps going and it's giving organised πŸŽ€ every column is one attribute of a session, and the statistics table hangs off the end πŸ¦‹

   IfcpSessionAttributesEntry ::= SEQUENCE {
       ifcpSessionIndex               Integer32,
       ifcpSessionLclPrtlIfIndex      InterfaceIndexOrZero,
       ifcpSessionLclPrtlAddrType     InetAddressType,
       ifcpSessionLclPrtlAddr         InetAddress,
       ifcpSessionLclPrtlTcpPort      InetPortNumber,
       ifcpSessionLclNpWwun           FcNameIdOrZero,
       ifcpSessionLclNpFcid           FcAddressIdOrZero,
       ifcpSessionRmtNpWwun           FcNameIdOrZero,
       ifcpSessionRmtPrtlIfAddrType   InetAddressType,
       ifcpSessionRmtPrtlIfAddr       InetAddress,
       ifcpSessionRmtPrtlTcpPort      InetPortNumber,
       ifcpSessionRmtNpFcid           FcAddressIdOrZero,
       ifcpSessionRmtNpFcidAlias      FcAddressIdOrZero,
       ifcpSessionIpTOV               IfcpIpTOVorZero,
       ifcpSessionLclLTIntvl          IfcpLTIorZero,
       ifcpSessionRmtLTIntvl          IfcpLTIorZero,
       ifcpSessionBound               TruthValue,
       ifcpSessionStorageType         StorageType
                                          }

   ifcpSessionIndex                   OBJECT-TYPE
       SYNTAX                         Integer32 (1..2147483647)
       MAX-ACCESS                     not-accessible
       STATUS                         current
       DESCRIPTION
   "The iFCP session index is a unique value used as an index
    to the table, along with a specific local iFCP gateway
    instance.  This index is used because the local N Port and
    remote N Port information would create a complex index that
    would be difficult to implement."
       ::= {ifcpSessionAttributesEntry 1}

   ifcpSessionLclPrtlIfIndex          OBJECT-TYPE
       SYNTAX                         InterfaceIndexOrZero
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "This is the interface index in the IF-MIB ifTable being used
    as the local portal in this session, as described in the
    IF-MIB.  If the local portal is not associated with an entry
    in the ifTable, then the value is 0.  The ifType of the
    interface will generally be a type that supports IP, but an
    implementation may support iFCP using other protocols.  This
    object can be used to obtain additional information about the
    interface."
       REFERENCE     "RFC 2863, The Interfaces Group MIB (IF-MIB)"
       ::= {ifcpSessionAttributesEntry 2}

   ifcpSessionLclPrtlAddrType         OBJECT-TYPE
       SYNTAX                         InetAddressType
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The type of address in ifcpSessionLclIfAddr."
       ::= {ifcpSessionAttributesEntry 3}

   ifcpSessionLclPrtlAddr             OBJECT-TYPE
       SYNTAX                         InetAddress
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "This is the external IP address of the interface being used
    for the iFCP local portal in this session.  The address type
    is defined in ifcpSessionLclPrtlAddrType.  If the value is a
    DNS name, then the name is resolved once, during the initial
    session instantiation."
       ::= {ifcpSessionAttributesEntry 4}

   ifcpSessionLclPrtlTcpPort          OBJECT-TYPE
       SYNTAX                         InetPortNumber
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "This is the TCP port number that is being used for the iFCP
    local portal in this session.  This is normally an ephemeral
    port number selected by the gateway.  The value may be 0
    during an initial setup period."
       ::= {ifcpSessionAttributesEntry 5}

   ifcpSessionLclNpWwun               OBJECT-TYPE
       SYNTAX                         FcNameIdOrZero
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "World Wide Unique Name of the local N Port.  For an unbound
    session, this variable will be a zero-length string."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       DEFVAL                         { "" }
       ::= {ifcpSessionAttributesEntry 6}

   ifcpSessionLclNpFcid               OBJECT-TYPE
       SYNTAX                         FcAddressIdOrZero
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "Fibre Channel Identifier of the local N Port.  For an unbound
    session, this variable will be a zero-length string."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpSessionAttributesEntry 7}

   ifcpSessionRmtNpWwun               OBJECT-TYPE
       SYNTAX                         FcNameIdOrZero
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "World Wide Unique Name of the remote N Port.  For an unbound
    session, this variable will be a zero-length string."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       DEFVAL                         { "" }
       ::= {ifcpSessionAttributesEntry 8}

   ifcpSessionRmtPrtlIfAddrType       OBJECT-TYPE
       SYNTAX                         InetAddressType
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The type of address in ifcpSessionRmtPrtlIfAddr."
       ::= {ifcpSessionAttributesEntry 9}

   ifcpSessionRmtPrtlIfAddr           OBJECT-TYPE
       SYNTAX                         InetAddress
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "This is the remote gateway IP address being used for the
    portal on the remote iFCP gateway.  The address type is
    defined in ifcpSessionRmtPrtlIfAddrType.  If the value is a
    DNS name, then the name is resolved once, during the initial
    session instantiation."
       ::= {ifcpSessionAttributesEntry 10}

   ifcpSessionRmtPrtlTcpPort          OBJECT-TYPE
       SYNTAX                         InetPortNumber
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "This is the TCP port number being used for the portal on the
    remote iFCP gateway.  Generally, this will be the iFCP
    canonical port.  The value may be 0 during an initial setup
    period."
       DEFVAL                         { 3420 }
       ::= {ifcpSessionAttributesEntry 11}

   ifcpSessionRmtNpFcid               OBJECT-TYPE
       SYNTAX                         FcAddressIdOrZero
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "Fibre Channel Identifier of the remote N Port.  For an
    unbound session, this variable will be a zero-length string."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpSessionAttributesEntry 12}

   ifcpSessionRmtNpFcidAlias          OBJECT-TYPE
       SYNTAX                         FcAddressIdOrZero
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "Fibre Channel Identifier Alias assigned by the local gateway
    for the remote N Port.  For an unbound session, this variable
    will be a zero-length string."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpSessionAttributesEntry 13}

   ifcpSessionIpTOV                   OBJECT-TYPE
       SYNTAX                         IfcpIpTOVorZero
       UNITS                          "seconds"
       MAX-ACCESS                     read-write
       STATUS                         current
       DESCRIPTION
   "The IP_TOV being used for this iFCP session.  This is the
    maximum propagation delay that will be used for the iFCP
    session.  The value can be changed on a per-session basis
    and initially defaults to ifcpLclGtwyInstDefaultIpTOV for
    the local gateway instance.  The valid range is 0 - 3600
    seconds.  A value of 0 implies fibre channel frame lifetime
    limits will not be enforced."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpSessionAttributesEntry 14}

   ifcpSessionLclLTIntvl              OBJECT-TYPE
       SYNTAX                         IfcpLTIorZero
       UNITS                          "seconds"
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The Liveness Test Interval (LTI) used for this iFCP session.
    The value can be changed on a per-session basis and initially
    defaults to ifcpLclGtwyInstDefaultLTInterval for the local
    gateway instance.  The valid range is 0 - 65535 seconds.
    A value of 0 implies that the gateway will not originate
    Liveness Test messages for the session."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpSessionAttributesEntry 15}

   ifcpSessionRmtLTIntvl              OBJECT-TYPE
       SYNTAX                         IfcpLTIorZero
       UNITS                          "seconds"
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The Liveness Test Interval (LTI) as requested by the remote
    gateway instance to use for this iFCP session.  This value may
    change over the life of the session.  The valid range is 0 -
    65535 seconds.  A value of 0 implies that the remote gateway
    has not been requested to originate Liveness Test messages for
    the session."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpSessionAttributesEntry 16}

   ifcpSessionBound                   OBJECT-TYPE
       SYNTAX                         TruthValue
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "This value indicates whether this session is bound to a
    specific local and remote N Port.  Sessions by default are
    unbound and ready for future assignment to a local and remote
    N Port."
       REFERENCE      "RFC 4172, iFCP Protocol Specification"
       ::= {ifcpSessionAttributesEntry 17}

   ifcpSessionStorageType             OBJECT-TYPE
       SYNTAX                         StorageType
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The storage type for this row.  Parameter values defined
    for a session are usually non-volatile, but may be volatile
    or permanent in some configurations.  If permanent, then
    ifcpSessionIpTOV must have read-write access."
       DEFVAL            { nonVolatile }
       ::= {ifcpSessionAttributesEntry 18}

   --
   -- Local iFCP Gateway Instance Session Statistics =============
   --
   ifcpSessionStatsTable              OBJECT-TYPE
       SYNTAX                         SEQUENCE OF
                                         IfcpSessionStatsEntry
       MAX-ACCESS                     not-accessible
       STATUS                         current
       DESCRIPTION
   "This table provides statistics on an iFCP session."
       ::= {ifcpNportSessionInfo 2}

   ifcpSessionStatsEntry              OBJECT-TYPE
       SYNTAX                         IfcpSessionStatsEntry
       MAX-ACCESS                     not-accessible
       STATUS                         current
       DESCRIPTION
   "Provides iFCP-specific statistics per session."
       AUGMENTS {ifcpSessionAttributesEntry}
       ::= {ifcpSessionStatsTable 1}

okay so this is the MIB chunk where all the session counters live, and it's giving spreadsheet energy in the best way πŸ’…πŸŽ€

   IfcpSessionStatsEntry ::= SEQUENCE {
       ifcpSessionState               IfcpSessionStates,
       ifcpSessionDuration            Unsigned32,
       ifcpSessionTxOctets            ZeroBasedCounter64,
       ifcpSessionRxOctets            ZeroBasedCounter64,
       ifcpSessionTxFrames            ZeroBasedCounter64,
       ifcpSessionRxFrames            ZeroBasedCounter64,
       ifcpSessionStaleFrames         ZeroBasedCounter64,
       ifcpSessionHeaderCRCErrors     ZeroBasedCounter64,
       ifcpSessionFcPayloadCRCErrors  ZeroBasedCounter64,
       ifcpSessionOtherErrors         ZeroBasedCounter64,
       ifcpSessionDiscontinuityTime   TimeStamp
                                      }

   ifcpSessionState                   OBJECT-TYPE
       SYNTAX                         IfcpSessionStates
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The current session operating state."
       ::= {ifcpSessionStatsEntry 1}

   ifcpSessionDuration                OBJECT-TYPE
       SYNTAX                         Unsigned32 (0..4294967295)
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "This indicates, in seconds, how long the iFCP session has
    been in an open or open-pending state.  When a session is
    down, the value is reset to 0."

       ::= {ifcpSessionStatsEntry 2}

   ifcpSessionTxOctets                OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter64
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of octets transmitted by the iFCP gateway
    for this session.  Discontinuities in the value of this
    counter can occur at reinitialization of the management
    system, and at other times as indicated by the value of
    ifcpSessionDiscontinuityTime."
       ::= {ifcpSessionStatsEntry 3}

   ifcpSessionRxOctets                OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter64
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of octets received by the iFCP gateway for
    this session.  Discontinuities in the value of this
    counter can occur at reinitialization of the management
    system, and at other times as indicated by the value of
    ifcpSessionDiscontinuityTime."
       ::= {ifcpSessionStatsEntry 4}

   ifcpSessionTxFrames                OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter64
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of iFCP frames transmitted by the gateway
    for this session.  Discontinuities in the value of this
    counter can occur at reinitialization of the management
    system, and at other times as indicated by the value of
    ifcpSessionDiscontinuityTime."
       ::= {ifcpSessionStatsEntry 5}

   ifcpSessionRxFrames                OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter64
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of iFCP frames received by the gateway
    for this session.  Discontinuities in the value of this
    counter can occur at reinitialization of the management
    system, and at other times as indicated by the value of
    ifcpSessionDiscontinuityTime."

       ::= {ifcpSessionStatsEntry 6}

   ifcpSessionStaleFrames             OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter64
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of received iFCP frames that were stale and
    discarded by the gateway for this session.  Discontinuities
    in the value of this counter can occur at reinitialization
    of the management system, and at other times as indicated by
    the value of ifcpSessionDiscontinuityTime."
       ::= {ifcpSessionStatsEntry 7}

   ifcpSessionHeaderCRCErrors         OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter64
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of Cyclic Redundancy Check (CRC) errors that
    occurred in the frame header, detected by the gateway for this
    session.  Usually, a single Header CRC error is sufficient to
    terminate an iFCP session.  Discontinuities in the value of this
    counter can occur at reinitialization of the management system,
    and at other times as indicated by the value of
    ifcpSessionDiscontinuityTime."
       ::= {ifcpSessionStatsEntry 8}

   ifcpSessionFcPayloadCRCErrors      OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter64
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of CRC errors that occurred in the Fibre
    Channel frame payload, detected by the gateway for this
    session.  Discontinuities in the value of this counter can
    occur at reinitialization of the management system, and
    at other times as indicated by the value of
    ifcpSessionDiscontinuityTime."
       ::= {ifcpSessionStatsEntry 9}

   ifcpSessionOtherErrors             OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter64
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of errors, other than errors explicitly
    measured, detected by the gateway for this session.

    Discontinuities in the value of this counter can occur at
    reinitialization of the management system, and at other
    times as indicated by the value of
    ifcpSessionDiscontinuityTime."
       ::= {ifcpSessionStatsEntry 10}

   ifcpSessionDiscontinuityTime       OBJECT-TYPE
       SYNTAX                         TimeStamp
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The value of sysUpTime on the most recent occasion at which
    any one (or more) of the ifcpSessionStatsTable counters
    suffered a discontinuity.  The relevant counters are the
    specific Counter64-based instances associated with the
    ifcpSessionStatsTable: ifcpSessionTxOctets,
    ifcpSessionRxOctets, ifcpSessionTxFrames,
    ifcpSessionRxFrames, ifcpSessionStaleFrames,
    ifcpSessionHeaderCRCErrors, ifcpSessionFcPayloadCRCErrors,
    and ifcpSessionOtherErrors.  If no such discontinuities have
    occurred since the last reinitialization of the local
    management subsystem, then this object contains a zero value."
       ::= {ifcpSessionStatsEntry 11}

   --
   -- Low-Capacity Statistics
   --

   ifcpSessionLcStatsTable            OBJECT-TYPE
       SYNTAX                         SEQUENCE OF
                                        IfcpSessionLcStatsEntry
       MAX-ACCESS                     not-accessible
       STATUS                         current
       DESCRIPTION
   "This table provides low-capacity statistics for an iFCP
    session.  These are provided for backward compatibility with
    systems that do not support Counter64-based objects.  At
    1-Gbps rates, a Counter32-based object can wrap as often as
    every 34 seconds.  Counter32-based objects can be sufficient
    for many situations.  However, when possible, it is
    recommended to use the high-capacity statistics in
    ifcpSessionStatsTable based on Counter64 objects."
       ::= {ifcpNportSessionInfo 3}

   ifcpSessionLcStatsEntry            OBJECT-TYPE
       SYNTAX                         IfcpSessionLcStatsEntry
       MAX-ACCESS                     not-accessible
       STATUS                         current
       DESCRIPTION
   "Provides iFCP-specific statistics per session."
       AUGMENTS {ifcpSessionAttributesEntry}
       ::= {ifcpSessionLcStatsTable 1}

   IfcpSessionLcStatsEntry ::= SEQUENCE {
       ifcpSessionLcTxOctets            ZeroBasedCounter32,
       ifcpSessionLcRxOctets            ZeroBasedCounter32,
       ifcpSessionLcTxFrames            ZeroBasedCounter32,
       ifcpSessionLcRxFrames            ZeroBasedCounter32,
       ifcpSessionLcStaleFrames         ZeroBasedCounter32,
       ifcpSessionLcHeaderCRCErrors     ZeroBasedCounter32,
       ifcpSessionLcFcPayloadCRCErrors  ZeroBasedCounter32,
       ifcpSessionLcOtherErrors         ZeroBasedCounter32
                                      }
   ifcpSessionLcTxOctets              OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter32
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of octets transmitted by the iFCP gateway
    for this session."
       ::= {ifcpSessionLcStatsEntry 1}

   ifcpSessionLcRxOctets              OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter32
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of octets received by the iFCP gateway for
    this session."
       ::= {ifcpSessionLcStatsEntry 2}

   ifcpSessionLcTxFrames              OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter32
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of iFCP frames transmitted by the gateway
    for this session."
       ::= {ifcpSessionLcStatsEntry 3}

   ifcpSessionLcRxFrames              OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter32
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of iFCP frames received by the gateway
    for this session."
       ::= {ifcpSessionLcStatsEntry 4}

   ifcpSessionLcStaleFrames           OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter32
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of received iFCP frames that were stale and
    discarded by the gateway for this session."
       ::= {ifcpSessionLcStatsEntry 5}

   ifcpSessionLcHeaderCRCErrors       OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter32
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of CRC errors that occurred in the frame
    header, detected by the gateway for this session.  Usually,
    a single Header CRC error is sufficient to terminate an
    iFCP session."
       ::= {ifcpSessionLcStatsEntry 6}

   ifcpSessionLcFcPayloadCRCErrors    OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter32
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of CRC errors that occurred in the Fibre
    Channel frame payload, detected by the gateway for this
    session."
       ::= {ifcpSessionLcStatsEntry 7}

   ifcpSessionLcOtherErrors           OBJECT-TYPE
       SYNTAX                         ZeroBasedCounter32
       MAX-ACCESS                     read-only
       STATUS                         current
       DESCRIPTION
   "The total number of errors, other than errors explicitly
    measured, detected by the gateway for this session."
       ::= {ifcpSessionLcStatsEntry 8}

   --==========================================================
   ifcpCompliances
           OBJECT IDENTIFIER ::= {ifcpGatewayConformance 1}

Okay bestie, the MIB module is about to wrap up, so here's the rest of the code πŸ’…πŸŽ€

   ifcpGatewayCompliance MODULE-COMPLIANCE
       STATUS deprecated
       DESCRIPTION
   "This MODULE-COMPLIANCE has been deprecated because address
   translation mode has been deprecated in the iFCP standard.  It has
   the implementation requirements for iFCP MIB module compliance."
       MODULE       -- this module
       MANDATORY-GROUPS {
           ifcpLclGatewayGroup,
           ifcpLclGatewaySessionGroup,
           ifcpLclGatewaySessionStatsGroup,
           ifcpLclGatewaySessionLcStatsGroup
                        }

           OBJECT      ifcpSessionLclPrtlAddrType
           SYNTAX      InetAddressType { ipv4(1), ipv6(2) }
           DESCRIPTION
                  "Support is only required for global IPv4
                  and IPv6 address types."
           OBJECT      ifcpSessionRmtPrtlIfAddrType
           SYNTAX      InetAddressType { ipv4(1), ipv6(2) }
           DESCRIPTION
                  "Support is only required for global IPv4
                  and IPv6 address types."

           OBJECT      ifcpLclGtwyInstAddrTransMode
           SYNTAX      IfcpAddressMode {addressTransparent(1),
                                        addressTranslation(2)}
           DESCRIPTION
                  "This object must support addressTransparent(1) and
                    addressTranslation(2)."

       ::= {ifcpCompliances 1}

   ifcpGatewayComplianceNoTranslation MODULE-COMPLIANCE
       STATUS current
       DESCRIPTION
   "Implementation requirements for iFCP MIB module compliance.
    Address translation mode has been deprecated in the iFCP standard."
       REFERENCE      "RFC 4172, iFCP Protocol Specification;
                       RFC 6172, Deprecation of iFCP Address
                       Translation Mode"
       MODULE       -- this module
       MANDATORY-GROUPS {
           ifcpLclGatewayGroup,
           ifcpLclGatewaySessionGroupNoTranslation,
           ifcpLclGatewaySessionStatsGroup,
           ifcpLclGatewaySessionLcStatsGroup
                        }

           OBJECT      ifcpSessionLclPrtlAddrType
           SYNTAX      InetAddressType { ipv4(1), ipv6(2) }
           DESCRIPTION
                  "Support is only required for global IPv4
                  and IPv6 address types."

           OBJECT      ifcpSessionRmtPrtlIfAddrType
           SYNTAX      InetAddressType { ipv4(1), ipv6(2) }
           DESCRIPTION
                  "Support is only required for global IPv4
                  and IPv6 address types."

           OBJECT      ifcpLclGtwyInstAddrTransMode
           SYNTAX      IfcpAddressMode {addressTransparent(1)}
           DESCRIPTION
                  "Support is only required for addressTransparent(1)."

       ::= {ifcpCompliances 2}

   ifcpGroups OBJECT IDENTIFIER ::= {ifcpGatewayConformance 2}

   ifcpLclGatewayGroup OBJECT-GROUP
       OBJECTS {
       ifcpLclGtwyInstPhyIndex,
       ifcpLclGtwyInstVersionMin,
       ifcpLclGtwyInstVersionMax,
       ifcpLclGtwyInstAddrTransMode,
       ifcpLclGtwyInstFcBrdcstSupport,
       ifcpLclGtwyInstDefaultIpTOV,
       ifcpLclGtwyInstDefaultLTInterval,
       ifcpLclGtwyInstDescr,
       ifcpLclGtwyInstNumActiveSessions,
       ifcpLclGtwyInstStorageType
              }
       STATUS current
       DESCRIPTION
   "iFCP local device info group.  This group provides
    information about each gateway."
       ::= {ifcpGroups 1}

   ifcpLclGatewaySessionGroup OBJECT-GROUP
       OBJECTS {
       ifcpSessionLclPrtlIfIndex,
       ifcpSessionLclPrtlAddrType,
       ifcpSessionLclPrtlAddr,
       ifcpSessionLclPrtlTcpPort,
       ifcpSessionLclNpWwun,
       ifcpSessionLclNpFcid,
       ifcpSessionRmtNpWwun,
       ifcpSessionRmtPrtlIfAddrType,
       ifcpSessionRmtPrtlIfAddr,
       ifcpSessionRmtPrtlTcpPort,
       ifcpSessionRmtNpFcid,
       ifcpSessionRmtNpFcidAlias,
       ifcpSessionIpTOV,
       ifcpSessionLclLTIntvl,
       ifcpSessionRmtLTIntvl,
       ifcpSessionBound,
       ifcpSessionStorageType
              }
       STATUS deprecated
       DESCRIPTION
   "This OBJECT-GROUP has been deprecated because address translation
   mode has been deprecated in the iFCP standard. iFCP Session group.
   This group provides information about each iFCP session currently
   active between iFCP gateways."
       ::= {ifcpGroups 4}

   ifcpLclGatewaySessionStatsGroup OBJECT-GROUP
       OBJECTS {
       ifcpSessionState,
       ifcpSessionDuration,
       ifcpSessionTxOctets,
       ifcpSessionRxOctets,
       ifcpSessionTxFrames,
       ifcpSessionRxFrames,
       ifcpSessionStaleFrames,
       ifcpSessionHeaderCRCErrors,
       ifcpSessionFcPayloadCRCErrors,
       ifcpSessionOtherErrors,
       ifcpSessionDiscontinuityTime
              }
       STATUS current
       DESCRIPTION
   "iFCP Session Statistics group.  This group provides
    statistics with 64-bit counters for each iFCP session
    currently active between iFCP gateways.  This group
    is only required for agents that can support Counter64-
    based data types."
       ::= {ifcpGroups 5}

   ifcpLclGatewaySessionLcStatsGroup OBJECT-GROUP
       OBJECTS {
       ifcpSessionLcTxOctets,
       ifcpSessionLcRxOctets,
       ifcpSessionLcTxFrames,
       ifcpSessionLcRxFrames,
       ifcpSessionLcStaleFrames,
       ifcpSessionLcHeaderCRCErrors,
       ifcpSessionLcFcPayloadCRCErrors,
       ifcpSessionLcOtherErrors
              }
       STATUS current
       DESCRIPTION
   "iFCP Session Low-Capacity Statistics group.  This group
    provides statistics with low-capacity 32-bit counters
    for each iFCP session currently active between iFCP
    gateways.  This group is only required for agents that
    do not support Counter64-based data types, or that need
    to support SNMPv1 applications."
       ::= {ifcpGroups 6}

   ifcpLclGatewaySessionGroupNoTranslation OBJECT-GROUP
       OBJECTS {
       ifcpSessionLclPrtlIfIndex,
       ifcpSessionLclPrtlAddrType,
       ifcpSessionLclPrtlAddr,
       ifcpSessionLclPrtlTcpPort,
       ifcpSessionLclNpWwun,
       ifcpSessionLclNpFcid,
       ifcpSessionRmtNpWwun,
       ifcpSessionRmtPrtlIfAddrType,
       ifcpSessionRmtPrtlIfAddr,
       ifcpSessionRmtPrtlTcpPort,
       ifcpSessionRmtNpFcid,
       ifcpSessionIpTOV,
       ifcpSessionLclLTIntvl,
       ifcpSessionRmtLTIntvl,
       ifcpSessionBound,
       ifcpSessionStorageType
              }

       STATUS current
       DESCRIPTION
   "iFCP Session group.  This group provides information
    about each iFCP session currently active between iFCP
    gateways."
       ::= {ifcpGroups 7}

   END

6. Security Considerations ✨

Okay, this bit is seriously important, so let's be careful 🫢 There are a bunch of management objects in this MIB module with a MAX-ACCESS of read-write and/or read-create. These objects can be sensitive or vulnerable in some network environments, and turning on SET operations in a non-secure environment without proper protection can really mess with network operations 😭

Changing these object values, with a MAX-ACCESS of read-write, may cause disruption in storage traffic πŸ’€

     ifcpLclGtwyInstAddrTransMode
     ifcpLclGtwyInstFcBrdcstSupport
     ifcpLclGtwyInstDefaultIpTOV
     ifcpLclGtwyInstDefaultLTInterval
     ifcpSessionIpTOV

Changing this object value, with a MAX-ACCESS of read-write, may cause a user to lose track of the iFCP gateway πŸ™ˆ

     ifcpLclGtwyInstDescr

Some of the readable objects in this MIB module (the ones with a MAX-ACCESS other than not-accessible) may be 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 πŸ”βœ¨

These object tables give info about storage traffic sessions, and they can show a user who is communicating and exchanging storage data πŸ‘€

     ifcpLclGtwyInstTable
     ifcpSessionAttributesTable

SNMP versions before SNMPv3 didn't 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 implementers 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 enable cryptographic security. It is then a customer/operator responsibility to make sure the SNMP entity giving access to an instance of this MIB module is properly configured, so the objects are only accessible to principals (users) who have legitimate rights to GET or SET (change/create/delete) them πŸ’–

7. IANA Considerations πŸ¦‹

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

Descriptor        OBJECT IDENTIFIER value
----------        -----------------------
ifcpMgmtMIB       { transmission 230 }

8. References 🌸

8.1. Normative References

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [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.
  • [RFC2856] Bierman, A., McCloghrie, K., and R. Presuhn, "Textual Conventions for Additional High Capacity Data Types", RFC 2856, June 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.
  • [RFC4001] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, "Textual Conventions for Internet Network Addresses", RFC 4001, February 2005.
  • [RFC4044] McCloghrie, K., "Fibre Channel Management MIB", RFC 4044, May 2005.
  • [RFC4133] Bierman, A. and K. McCloghrie, "Entity MIB (Version 3)", RFC 4133, August 2005.
  • [RFC4172] Monia, C., Mullendore, R., Travostino, F., Jeong, W., and M. Edwards, "iFCP - A Protocol for Internet Fibre Channel Storage Networking", RFC 4172, September 2005.
  • [RFC4369] Gibbons, K., Monia, C., Tseng, J., and F. Travostino, "Definitions of Managed Objects for Internet Fibre Channel Protocol (iFCP)", RFC 4369, January 2006.
  • [RFC4502] Waldbusser, S., "Remote Network Monitoring Management Information Base Version 2", RFC 4502, May 2006.
  • [RFC6172] Black, D. and D. Peterson, "Deprecation of the Internet Fibre Channel Protocol (iFCP) Address Translation Mode", RFC 6172, March 2011.

8.2. Informative References

  • [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet Standard Management Framework", RFC 3410, December 2002.

9. Acknowledgments 🫢

okay bestie, the people who wrote the first iFCP MIB module (the [RFC4369] crew) deserve a whole parade πŸŽ€ credit goes to the authors of [RFC4369], listed below, for preparing the first version of the iFCP MIB module. The author of this update also wants to thank David Black, Tom Talpey, and David Harrington for their significant inputs on this update πŸ’œ

Authors of RFC 4369:

Kevin Gibbons
2Wire Corporation
1704 Automation Parkway
San Jose, CA 95131 USA
Phone: (408)895-1387
EMail: kgibbons@yahoo.com
Charles Monia
Consultant
7553 Morevern Circle
San Jose, CA 95135 USA
EMail: charles_monia@yahoo.com
Josh Tseng
Riverbed Technology
501 2nd Street, Suite 410
San Francisco, CA 94107 USA
Phone: (650)274-2109
EMail: joshtseng@yahoo.com
Franco Travostino
eBay Inc.
2145 Hamilton Avenue
San Jose, CA 95125
EMail: travos@ieee.org

Author's Address 🌸

Prakash Venkatesen (editor) is the one who kept this doc glowing up ✨

Prakash Venkatesen (editor)
HCL Technologies Ltd.
50-53, Greams Road,
Chennai - 600006
India
EMail: prakashvn@hcl.com

That's the whole doc, bestie πŸ¦‹ you made it through every section πŸ’…πŸ‘‘

πŸ“¦ where this page comes from