RFC 4404
Definitions of Managed Objects for Fibre Channel Over TCP/IP (FCIP)
RFC 4404: Definitions of Managed Objects for Fibre Channel Over TCP/IP (FCIP) π
Okay bestie, let's get the vibes straight first π . This is RFC 4404 from the Network Working Group, and it's a Standards Track doc, so it's an actual Internet standard β¨. It came out in February 2006. The authors are R. Natarajan (F5 Networks) and A. Rijhsinghani (Accton Technology Corporation). The header doesn't list anything it obsoletes or updates, so no drama there π«Ά.
Status of This Memo π
This document is an Internet standards track protocol for the Internet community, and it's basically asking for discussion and suggestions for improvements π¦. If you want the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). And the big news is that distribution of this memo is unlimited, so go share it π.
Copyright Notice π
Copyright (C) The Internet Society (2006). That's the legal tea, bestie β.
Abstract β¨
This memo defines a chunk of the Management Information Base (MIB) that network management protocols use in TCP/IP-based internets π§. Specifically, it defines the objects you need to manage Fibre Channel Over TCP/IP (FCIP) entities. Those are the things that connect Fibre Channel (FC) fabrics with IP networks, and honestly it's giving bridge energy π.
Table of Contents ποΈ
1. The Internet-Standard Management Framework ......................2
2. Overview of FCIP Management Model ...............................2
3. Relationship to Other MIBs ......................................4
4. MIB Definitions .................................................6
5. Security Considerations ........................................29
6. IANA Considerations ............................................30
7. Acknowledgements ...............................................30
8. Normative References ...........................................30
9. Informative References .........................................31
1. The Internet-Standard Management Framework β¨
If you want the full tea on the current Internet-Standard Management Framework, check out section 7 of RFC 3410 [RFC3410] π.
Managed objects live in a virtual information store called the Management Information Base, or MIB ποΈ. You usually reach MIB objects through the Simple Network Management Protocol (SNMP) π‘. The objects get defined using the mechanisms in the Structure of Management Information (SMI) π§©. This memo gives you 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] π.
2. Overview of FCIP Management Model π¦
Quick heads up: the Fibre Channel Over TCP/IP (FCIP) Entity is fully described from a functional point of view in [RFC3821] π. A bunch of FCIP Entities plus their matching FC Entities (described in [FCBB2]), all living inside one SNMP Context, is what this doc calls an FCIP device π. This section looks at FCIP from the management side, so let's go π₯.
+------------------------------------------+
| FCIP Device |
| |
| +-----------+ +-----------+ |
| |FCIP Entity| |FCIP Entity| |
| | | | | |
| | | | | |
| +--+--+--+--+ +--+--+--+--+ |
| | | | | | | |
| | | | | | | |
| FCIP Links FCIP Links |
| |
+------------------------------------------+
The FCIP device gives you an IP-based interconnection model for linking up FC fabric elements πΈ. In this model, the FCIP devices plus the IP network they run on together make up a brand new FCIP transport network π.
This IP-based FCIP Interconnection Model supports the following topology:
- The FCIP-based transport network is formed by interconnecting the FCIP devices.
- Each FCIP device has one or more FCIP Entities or Instances.
- Peer FCIP Entities are connected by FCIP Links attached to VE_ports/B_Access.
- Each FCIP Link Endpoint contains one or more Data Engines.
- The FCIP device can work as a stand-alone box or as part of a FC fabric element.
Each FCIP Entity managed by this MIB is called an FCIP Instance π§. Here's how the MIB is broken up:
2.1. FCIP Entity Instances Table π
This table holds info about the entity's existing instances of FCIP entities π.
2.2. FCIP Link Table π
This one has the info about this FCIP device's existing FCIP links β.
2.3. FCIP TCP Connection Table π§΅
This table has info about existing TCP connections π. Each FCIP link inside an FCIP entity has one or more TCP connections. The FCIP entity uses a Data Engine for each TCP connection to handle FC frame encapsulation, de-encapsulation, and transmission of FCIP frames on that connection. It's a whole choreography, bestie π.
2.4. FCIP Dynamic Route Table π£οΈ
This table holds routing info that the FCIP device finds dynamically π. The FCIP device may use the SLPv2 protocol [RFC3822] together with other protocols, such as Fabric Shortest Path First (FSPF), to dynamically discover other FCIP entities and fill this table in. That way it can map destination domains to FCIP Links πΊοΈ.
2.5. FCIP Static Route Table π
This table has routing info that the Network Admin configures by hand into the FCIP device π οΈ. When there's no dynamic discovery of remote FCIP entities, the Network Manager can set up remote domains and FCIP Entities that this device can reach in this table π.
Both the static and dynamic routing tables can be active at any point in time π . If a DID shows up in both tables, the static route table wins for that DID, so it takes precedence over the dynamic entry β¨. Main character energy for the static table, no cap π.
2.6. FCIP Discovery Domain Table π§
This table maps this device's FCIP Entities into FCIP Discovery Domains ποΈ.
2.7. FCIP Link Error Table π¨
The FCIP Link Errors Table has counters that show error conditions on an FCIP Link π.
3. Relationship to Other MIBs πΈ
Objects you can reach through other MIB modules that apply to FCIP devices are NOT included in this MIB module π. Wait, correction: they have not been included here, and the following subsections list all the applicable MIB modules that should be present alongside FCIP-MGMT-MIB π.
3.1. Relationship to the 'TCP' Group π§Ά
This group is mandatory for all systems that implement TCP. Objects relevant to TCP must be obtained from this group [RFC4022] π.
3.2. Relationship to the 'interfaces' MIB π
The 'interfaces' group is defined as mandatory for all systems, and it holds info about an entity's interfaces π§©. Each logical/virtual interface created as an FCIP Link should be represented as a row in the ifTable, with a unique ifIndex value and an ifType of 'fcipLink' (224) for each interface. For the full list of interface types, check the IANA registry at http://www.iana.org/assignments/smi-numbers π¦. These are the only ifIndex values that matter to an FCIP Entity, because FCIP runs on top of TCP/IP π.
FCIP runs over TCP. So, by definition, there's no ifTable interface sitting directly beneath it, which means ifStackLowerLayer is always 0 π. For any protocol using FCIP (that is, above FCIP), FCIP looks like a regular FC interface β¨. As stated in [RFC4044], a regular "FC interface will typically have no other ifTable rows stacked on top of it", so ifStackHigherLayer is typically zero π.
3.3. Relationship to the Fibre Channel Management MIB π§
The Fibre Channel Management MIB [RFC4044] is assumed for FC functionality managed objects π .
3.4. Specific Interface Group MIB Objects π―
This table gives specific implementation guidelines for applying the objects defined in the Interfaces Group MIB to FCIP Links π. For any object not listed here, check its generic definition in [RFC2863] π.
Object Guidelines
ifType 'fcipLink' (224)
ifSpeed The ifSpeed for the physical interface(s)
over which the FCIP Link runs.
ifPhysAddress There is no physical address corresponding
to an FCIP Link (only World Wide Name, WWN).
Reported as 0.
ifAdminStatus Write access is not required, and support
for 'testing' is not required.
ifOperStatus Support for 'testing' is not required.
The value 'dormant' has no meaning for
FCIP Links.
ifInOctets The number of octets of FCIP information
ifHCInOctets contained in received frames in TCP
streams, starting with FCIP header.
ifInUcastPkts The number of FCIP frames received
ifHCInUcastPkts on this FCIP Link.
ifOutOctets The number of octets of FCIP information
ifHCOutOctets contained in transmitted frames in TCP
streams, starting with FCIP header.
ifOutUcastPkts The number of FCIP frames transmitted
ifHCOutUcastPkts on this FCIP Link.
ifInMulticastPkts These counters are not incremented.
ifInBroadcastPkts
ifOutMulticastPkts
ifOutBroadcastPkts
ifHCInMulticastPkts
ifHCInBroadcastPkts
ifHCOutMulticastPkts
ifHCOutBroadcastPkts
ifLinkUpDownTrapEnable Default is 'disabled'.
ifPromiscuousMode This will be 'false'.
ifConnectorPresent This will be 'false'.
Part 1 wraps here, bestie π§. Next up is Section 4, the MIB Definitions module, and it's where all the actual OBJECT-TYPE magic lives π. Stay tuned!
Okay bestie, the MIB is where the magic really happens π§ Here are the textual conventions first, the little type definitions everything else leans on π
-- ******************************************************************
-- Textual conventions
--
FcipDomainIdInOctetForm ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The Domain ID of a FC entity in octet form
to support the concatenation(000000h||Domain_ID)
format defined in the FSPF routing protocol."
REFERENCE
"FC-SW-3 section 4.8"
SYNTAX OCTET STRING (SIZE(1))
FcipEntityMode ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The type of port mode provided by an FCIP Entity
for an FCIP Link. An FCIP Entity can be an E-Port
mode for one of its FCIP Link Endpoints or a B-Port
mode for another of its FCIP Link Endpoints."
REFERENCE
"FC-BB, rev 4.7, 2 May 1997, section 3."
SYNTAX INTEGER {
ePortMode(1),
bPortMode(2)
}
FcipEntityId ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The FCIP entity identifier as defined in RFC 3821."
REFERENCE
"RFC 3821, Section 7.1, FCIP Special Frame Format"
SYNTAX OCTET STRING (SIZE(8))
Next up is the FCIP group, which holds the global scalar objects that only apply to FCIP devices β¨
-- ******************************************************************
-- The FCIP group
--
-- This group defines the global scalar objects applicable to FCIP
-- devices only
--
fcipDynIpConfType OBJECT-TYPE
SYNTAX INTEGER {
slpv2(1),
none(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The type of discovery protocol used to discover remote
FCIP entities. The value of this object is persistent
across system restarts."
::= { fcipConfig 1 }
fcipDeviceWWN OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The World Wide Name of this FCIP device."
::= { fcipConfig 2 }
fcipEntitySACKOption OBJECT-TYPE
SYNTAX INTEGER {
enabled(1),
disabled(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indication of whether the TCP Selective Acknowledgement
Option is enabled at this FCIP device to let the receiver
acknowledge multiple lost packets in a single ACK for faster
recovery."
REFERENCE
"The Selective Ack option is defined in RFC 2883."
::= { fcipConfig 3 }
Now the FCIP Entity Table, which is basically the guest list of FCIP entities on the device π
-- ******************************************************************
-- The FCIP Entity Table
--
fcipEntityInstanceTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcipEntityInstanceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about this FCIP device's existing instances of
FCIP entities."
REFERENCE
"RFC 3821, Section 5.4, FCIP Entity"
::= { fcipConfig 4 }
fcipEntityInstanceEntry OBJECT-TYPE
SYNTAX FcipEntityInstanceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row of the FCIP entity table with information
about a particular FCIP entity. Once a row has been
created, it is non-volatile across agent restarts until it
is deleted."
INDEX { fcipEntityId }
::= { fcipEntityInstanceTable 1 }
FcipEntityInstanceEntry ::=
SEQUENCE {
fcipEntityId FcipEntityId,
fcipEntityName SnmpAdminString,
fcipEntityAddressType InetAddressType,
fcipEntityAddress InetAddress,
fcipEntityTcpConnPort InetPortNumber,
fcipEntitySeqNumWrap TruthValue,
fcipEntityPHBSupport TruthValue,
fcipEntityStatus RowStatus
}
fcipEntityId OBJECT-TYPE
SYNTAX FcipEntityId
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The FCIP entity identifier."
REFERENCE
"RFC 3821, Section 7.1, FCIP Special Frame Format"
::= { fcipEntityInstanceEntry 1 }
fcipEntityName OBJECT-TYPE
SYNTAX SnmpAdminString (SIZE (0..32))
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An administratively-assigned name for this FCIP entity."
::= { fcipEntityInstanceEntry 2 }
fcipEntityAddressType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of Internet address by which the entity is
reachable. Only address types IPv4 and IPv6 are supported."
::= { fcipEntityInstanceEntry 3 }
fcipEntityAddress OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The Internet address for the entity, if configured. The
format of this address is determined by the value of the
fcipEntityAddressType object."
::= { fcipEntityInstanceEntry 4 }
fcipEntityTcpConnPort OBJECT-TYPE
SYNTAX InetPortNumber
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"A TCP port other than the FCIP Well-Known port on which the
FCIP entity listens for new TCP connection requests. It
contains the value zero(0) if the FCIP Entity only listens
on the Well-Known port."
DEFVAL { 0 }
::= { fcipEntityInstanceEntry 5 }
fcipEntitySeqNumWrap OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of whether the FCIP Entity supports protection
against sequence number wrap."
REFERENCE
"The PAWS option is defined in RFC 1323."
::= { fcipEntityInstanceEntry 6 }
fcipEntityPHBSupport OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of whether the FCIP Entity supports PHB IP
quality of service (QoS)."
REFERENCE
"Per hop behavior is defined in RFC 2474, definition of the
Differentiated Services Field."
::= { fcipEntityInstanceEntry 7 }
fcipEntityStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object specifies the operational status of the row.
When a management station sets the status to active(1), then
the values for the objects fcipEntityName,
fcipEntityAddressType, and fcipEntityAddress should be
supplied as part of the set request. The values of the
objects fcipEntityName, fcipEntityAddressType, and
fcipEntityAddress can be changed if the row status is in
active state. The object fcipEntityTcpConnPort takes the
default value zero(0), if no value is supplied at the time
of row creation.
Setting the status to destroy(6) deletes the specified FCIP
entity instance row from the table. It also deletes all the
rows corresponding to the specified FCIP entity from the
fcipLinkTable and fcipTcpConnTable tables."
::= { fcipEntityInstanceEntry 8 }
Last stop for this part is the start of the FCIP Link Table, where the links between entities live π¦
-- ******************************************************************
-- The FCIP Link Table
--
fcipLinkTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcipLinkEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about FCIP links that exist on this device."
::= { fcipConfig 5 }
fcipLinkEntry OBJECT-TYPE
SYNTAX FcipLinkEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row of the FCIP link table containing
information about a particular FCIP link. The values of the
read-create objects in this table are persistent across
system restarts."
INDEX { fcipEntityId, fcipLinkIndex }
::= { fcipLinkTable 1 }
FcipLinkEntry ::=
SEQUENCE {
fcipLinkIndex Unsigned32,
fcipLinkIfIndex InterfaceIndex,
fcipLinkCost Unsigned32,
fcipLinkLocalFcipEntityMode FcipEntityMode,
fcipLinkLocalFcipEntityAddressType InetAddressType,
fcipLinkLocalFcipEntityAddress InetAddress,
fcipLinkRemFcipEntityWWN FcNameIdOrZero,
fcipLinkRemFcipEntityId FcipEntityId,
fcipLinkRemFcipEntityAddressType InetAddressType,
fcipLinkRemFcipEntityAddress InetAddress,
fcipLinkStatus RowStatus,
fcipLinkCreateTime TimeStamp
}
fcipLinkIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary integer that uniquely identifies one FCIP link
within an FCIP entity."
::= { fcipLinkEntry 1 }
fcipLinkIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The ifIndex value of the virtual interface corresponding to
the FCIP Link running over TCP/IP."
::= { fcipLinkEntry 2 }
fcipLinkCost OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The FSPF cost associated with this FCIP Link."
DEFVAL { 0 }
::= { fcipLinkEntry 3 }
fcipLinkLocalFcipEntityMode OBJECT-TYPE
SYNTAX FcipEntityMode
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The mode of the local end of the FCIP link."
::= { fcipLinkEntry 4 }
fcipLinkLocalFcipEntityAddressType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of Internet address contained in the corresponding
instance of fcipLinkLocalFcipEntityAddress. Only address
types IPv4 and IPv6 are supported."
::= { fcipLinkEntry 5 }
fcipLinkLocalFcipEntityAddress OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The Internet address for the local end of this FCIP Link.
The format of this object is determined by the value of the
fcipLinkLocalFcipEntityAddressType object."
::= { fcipLinkEntry 6 }
fcipLinkRemFcipEntityWWN OBJECT-TYPE
SYNTAX FcNameIdOrZero
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The World Wide Name of the remote FC Fabric Entity."
REFERENCE
"RFC 3821, Section 7.1, FCIP Special Frame Format"
::= { fcipLinkEntry 7 }
fcipLinkRemFcipEntityId OBJECT-TYPE
SYNTAX FcipEntityId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The remote FCIP entity's identifier."
REFERENCE
"RFC 3821, Section 7.1, FCIP Special Frame Format"
::= { fcipLinkEntry 8 }
okay so picking up right where the link table leaves off: the remote address gets its own type and value, the row status controls the whole lifecycle, and then we're into the TCP connection table, which is lowkey where the Data Engine magic happens π¦
fcipLinkRemFcipEntityAddressType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of Internet address contained in the corresponding
instance of fcipLinkRemFcipEntityAddress. Only address
types IPv4 and IPv6 are supported."
::= { fcipLinkEntry 9 }
fcipLinkRemFcipEntityAddress OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The Internet address for the remote end of this FCIP Link.
The format of this object is determined by the value of the
fcipLinkRemFcipEntityAddressType object."
::= { fcipLinkEntry 10 }
fcipLinkStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object specifies the operational status of the row.
The values of objects fcipLinkLocalFcipEntityAddressType,
fcipLinkLocalFcipEntityAddress, fcipLinkRemFcipEntityWWN,
fcipLinkRemFcipEntityId, fcipLinkRemFcipEntityAddressType,
and fcipLinkRemFcipEntityAddress can be changed if the row
is in active(1) state. The object fcipLinkCost is set to
the value zero(0) if no value is supplied at the time of row
creation.
Setting the status to destroy(6) deletes the specified FCIP
link from the table. It also deletes all rows corresponding
to the specified FCIP link from the fcipTcpConnTable table."
::= { fcipLinkEntry 11 }
fcipLinkCreateTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime when this entry was last created."
::= { fcipLinkEntry 12 }
-- ******************************************************************
-- The TCP Connection Table
--
fcipTcpConnTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcipTcpConnEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about existing TCP connections. Each FCIP link
within an FCIP entity manages one or more TCP connections.
The FCIP entity employs a Data Engine for each TCP
connection for handling FC frame encapsulation,
de-encapsulation, and transmission of FCIP frames on the
connection."
::= { fcipConfig 6 }
fcipTcpConnEntry OBJECT-TYPE
SYNTAX FcipTcpConnEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row of the FCIP TCP Connection table containing
information about a particular TCP connection."
INDEX { fcipEntityId,
fcipLinkIndex,
fcipTcpConnLocalPort,
fcipTcpConnRemPort}
::= { fcipTcpConnTable 1 }
FcipTcpConnEntry ::=
SEQUENCE {
fcipTcpConnLocalPort InetPortNumber,
fcipTcpConnRemPort InetPortNumber,
fcipTcpConnRWSize Unsigned32,
fcipTcpConnMSS Unsigned32
}
fcipTcpConnLocalPort OBJECT-TYPE
SYNTAX InetPortNumber
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The local port number for this TCP connection."
::= { fcipTcpConnEntry 1 }
fcipTcpConnRemPort OBJECT-TYPE
SYNTAX InetPortNumber
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The remote port number for this TCP connection."
::= { fcipTcpConnEntry 2 }
fcipTcpConnRWSize OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The default maximum TCP Receiver Window size for this TCP
connection."
::= { fcipTcpConnEntry 3 }
fcipTcpConnMSS OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The TCP Maximum Segment Size (MSS) for this TCP connection."
::= { fcipTcpConnEntry 4 }
-- ******************************************************************
-- The Dynamic Route Table
--
fcipDynamicRouteTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcipDynamicRouteEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about dynamically discovered routing
information. The FCIP device may use the SLPv2 protocol in
conjunction with other protocols (say, FSPF) for dynamically
discovering other FCIP entities and may populate this table
with FCIP link information for each Destination Address
Identifier."
::= { fcipConfig 7 }
fcipDynamicRouteEntry OBJECT-TYPE
SYNTAX FcipDynamicRouteEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row of the FCIP Dynamic Route Table containing
information about a particular FCIP route."
INDEX { fcipEntityId, fcipDynamicRouteDID }
::= { fcipDynamicRouteTable 1 }
FcipDynamicRouteEntry ::=
SEQUENCE {
fcipDynamicRouteDID FcipDomainIdInOctetForm,
fcipDynamicRouteLinkIndex Unsigned32
}
fcipDynamicRouteDID OBJECT-TYPE
SYNTAX FcipDomainIdInOctetForm
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"8-bit ID of a Fibre Channel Domain that is reachable from
this FCIP device."
::= { fcipDynamicRouteEntry 1 }
fcipDynamicRouteLinkIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The FCIP Link used to reach the domain specified by the
corresponding instance of fcipDynamicRouteDID. The link
identified by a value of this object is the same FCIP link
as identified by the same value of fcipLinkIndex for the
same FCIP entity."
::= { fcipDynamicRouteEntry 2 }
-- ******************************************************************
-- The Static Route Table
--
fcipStaticRouteTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcipStaticRouteEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about static route entries configured by the
Network Admin. In the absence of dynamic discovery of
remote FCIP entities, the Network Manager will figure out
all remote FCIP devices that are reachable from this device
and populate this table with FCIP link information for each
Domain ID. At any time, both static and dynamic routing
can be active, and an entry in the static route table for a
given DID takes precedence over the entry in the dynamic
route table for the same Domain ID."
::= { fcipConfig 8 }
fcipStaticRouteEntry OBJECT-TYPE
SYNTAX FcipStaticRouteEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row of the FCIP Static Route Table containing
information about a particular FCIP route. The values of
the read-create objects in this table are persistent across
system restarts."
INDEX { fcipEntityId, fcipStaticRouteDID }
::= { fcipStaticRouteTable 1 }
FcipStaticRouteEntry ::=
SEQUENCE {
fcipStaticRouteDID FcipDomainIdInOctetForm,
fcipStaticRouteLinkIndex Unsigned32,
fcipStaticRouteStatus RowStatus
}
fcipStaticRouteDID OBJECT-TYPE
SYNTAX FcipDomainIdInOctetForm
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"8-bit ID of a Fibre Channel Domain that is reachable from
this FCIP device."
::= { fcipStaticRouteEntry 1 }
fcipStaticRouteLinkIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The FCIP Link used to reach the domain specified by the
corresponding instance of fcipStaticRouteDID. The link
identified by a value of this object is the same FCIP link
as identified by the same value of fcipLinkIndex for the
same FCIP entity."
::= { fcipStaticRouteEntry 2 }
fcipStaticRouteStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object specifies the operational status of the row.
When a management station sets the status to active(1),
the values for the object fcipStaticRouteLinkIndex should be
supplied as part of the set request.
Setting the status to destroy(6) deletes the specified FCIP
static route entry from the table."
::= { fcipStaticRouteEntry 3 }
-- ******************************************************************
-- The FCIP Discovery Domain Table
--
fcipDiscoveryDomainTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcipDiscoveryDomainEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about FCIP Discovery Domains. Each FCIP
Discovery Domain is associated with one or more FCIP
entities."
::= { fcipConfig 9 }
fcipDiscoveryDomainEntry OBJECT-TYPE
SYNTAX FcipDiscoveryDomainEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row of the FCIP Discovery Domain Table
containing information about a particular FCIP Discovery
Domain that is associated with one or more FCIP entities.
The values of the read-write object fcipDiscoveryDomainName
are persistent across system restarts."
INDEX { fcipEntityId, fcipDiscoveryDomainIndex }
::= { fcipDiscoveryDomainTable 1 }
FcipDiscoveryDomainEntry ::=
SEQUENCE {
fcipDiscoveryDomainIndex Unsigned32,
fcipDiscoveryDomainName SnmpAdminString
}
fcipDiscoveryDomainIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An integer that uniquely identifies an FCIP Discovery Domain
associated with this FCIP entity."
::= { fcipDiscoveryDomainEntry 1 }
fcipDiscoveryDomainName OBJECT-TYPE
SYNTAX SnmpAdminString (SIZE (0..128))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The name of this FCIP Discovery Domain."
REFERENCE
"RFC 3822, Section 4.1.1, FCIP Discovery Domains"
::= { fcipDiscoveryDomainEntry 2 }
-- ******************************************************************
-- The FCIP Link Errors
--
fcipLinkErrorsTable OBJECT-TYPE
SYNTAX SEQUENCE OF FcipLinkErrorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of error counters for FCIP Links. Each counter
records the number of times a particular error happened that
caused a TCP connection to close down."
REFERENCE
"RFC 3821, Section 5.2, FCIP Link"
::= { fcipConfig 10 }
okay bestie, the error counters are next, and they're giving everything ππ
fcipLinkErrorsEntry OBJECT-TYPE
SYNTAX FcipLinkErrorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row of the FCIP Link Errors Table containing
error counters for an FCIP Link."
INDEX { fcipEntityId, fcipLinkIndex }
::= { fcipLinkErrorsTable 1 }
FcipLinkErrorsEntry ::=
SEQUENCE {
fcipLinkFcipLossofFcSynchs Counter32,
fcipLinkFcipEncapErrors Counter32,
fcipLinkFcipNotReceivedSfResps Counter32,
fcipLinkFcipSfRespMismatches Counter32,
fcipLinkFcipSfInvalidNonces Counter32,
fcipLinkFcipReceivedSfDuplicates Counter32,
fcipLinkFcipSfInvalidWWNs Counter32,
fcipLinkFcipBB2LkaTimeOuts Counter32,
fcipLinkFcipSntpExpiredTimeStamps Counter32,
fcipLinkTcpTooManyErrors Counter32,
fcipLinkTcpExcessiveDroppedDatagrams Counter32,
fcipLinkTcpSaParamMismatches Counter32
}
fcipLinkFcipLossofFcSynchs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times FC synchronization was lost on this FCIP
Link. The last discontinuity of this counter is indicated
by fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 1 }
fcipLinkFcipEncapErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of FCIP frames received with encapsulation errors
such as improper header, format, or length. The last
discontinuity of this counter is indicated by
fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 2 }
fcipLinkFcipNotReceivedSfResps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times an FCIP Special Frame Response was
expected but not received on this FCIP Link. The last
discontinuity of this counter is indicated by
fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 3 }
fcipLinkFcipSfRespMismatches OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times FCIP Special Frame Bytes mismatch
happened on this FCIP Link. The last discontinuity of this
counter is indicated by fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 4 }
fcipLinkFcipSfInvalidNonces OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times FCIP Special Frame Invalid Connection
Nonce happened on this FCIP Link. The last discontinuity
of this counter is indicated by fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 5 }
fcipLinkFcipReceivedSfDuplicates OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times duplicate FCIP Special Frames were
received on this FCIP Link. The last discontinuity of this
counter is indicated by fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 6 }
fcipLinkFcipSfInvalidWWNs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times FCIP Special Frames with invalid
destination FC Fabric Entity WWN were received on this FCIP
Link. The last discontinuity of this counter is indicated
by fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 7 }
fcipLinkFcipBB2LkaTimeOuts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of FC Keep Alive Time-outs that occurred on
this FCIP Link. The last discontinuity of this counter
is indicated by fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 8 }
fcipLinkFcipSntpExpiredTimeStamps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of frames discarded due to an expired Simple
Network Time Protocol (SNTP) timestamp on this FCIP Link.
The last discontinuity of this counter is indicated by
fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 9 }
fcipLinkTcpTooManyErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of TCP connections that closed down on this
FCIP Link due to too many errors on the connection. The
last discontinuity of this counter is indicated by
fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 10 }
fcipLinkTcpExcessiveDroppedDatagrams OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of TCP connections that closed down on this
FCIP Link due to an excessive number of dropped FCIP
packets. The last discontinuity of this counter is
indicated by fcipLinkCreateTime."
::= { fcipLinkErrorsEntry 11 }
fcipLinkTcpSaParamMismatches OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times TCP connections with Security
Association parameter mismatches were closed down on this
FCIP Link. The last discontinuity of this counter is
indicated by fcipLinkCreateTime."
REFERENCE
"RFC 3821, Section 9.4.2, TCP Connection Security
Associations (SAs)"
::= { fcipLinkErrorsEntry 12 }
-- ******************************************************************
-- Conformance Statements
--
fcipCompliances OBJECT IDENTIFIER ::= { fcipConformance 1 }
fcipGroups OBJECT IDENTIFIER ::= { fcipConformance 2 }
fcipCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statement for FCIP MIB."
MODULE -- this module
MANDATORY-GROUPS {
fcipEntityScalarGroup,
fcipEntityInstanceGroup,
fcipLinkGroup,
fcipTcpConnGroup,
fcipDiscoveryDomainGroup,
fcipLinkErrorsGroup
}
GROUP fcipDynamicRouteGroup
DESCRIPTION
"This group is mandatory only for systems that do not
have these objects in any other FC MIB. It may be
implemented even in that case for convenience."
GROUP fcipStaticRouteGroup
DESCRIPTION
"This group is mandatory only for systems that do not
have these objects in any other FC MIB. It may be
implemented even in that case for convenience."
OBJECT fcipEntityAddressType
SYNTAX INTEGER { ipv4(1), ipv6(2) }
DESCRIPTION
"Only IPv4 and IPv6 address types need to be supported for
addressing FCIP entities."
OBJECT fcipEntityAddress
SYNTAX InetAddress (SIZE(4|16))
DESCRIPTION
"Size of FCIP entity's IP address depends on address type.
FCIP entity address size is four if the IP address is
IPv4 and sixteen if the IP address type is IPv6."
OBJECT fcipLinkLocalFcipEntityAddressType
SYNTAX INTEGER { ipv4(1), ipv6(2) }
DESCRIPTION
"Only IPv4 and IPv6 address types need to be supported for
addressing the local FCIP entities."
OBJECT fcipLinkLocalFcipEntityAddress
SYNTAX InetAddress (SIZE(4|16))
DESCRIPTION
"Size of FCIP entity's IP address depends on address type.
FCIP entity address size is four if the IP address is
IPv4 and sixteen if the IP address type is IPv6."
OBJECT fcipLinkRemFcipEntityAddressType
SYNTAX INTEGER { ipv4(1), ipv6(2) }
DESCRIPTION
"Only IPv4 and IPv6 address types need to be supported for
addressing the remote FCIP entities."
OBJECT fcipLinkRemFcipEntityAddress
SYNTAX InetAddress (SIZE(4|16))
DESCRIPTION
"Size of FCIP entity's IP address depends on the address
type. FCIP entity address size is four if the IP address
is IPv4 and sixteen if the IP address type is IPv6."
::= { fcipCompliances 1 }
fcipEntityScalarGroup OBJECT-GROUP
OBJECTS { fcipDynIpConfType,
fcipDeviceWWN,
fcipEntitySACKOption
}
STATUS current
DESCRIPTION
"Collection of scalar objects applicable to all FCIP
instances."
::= { fcipGroups 1 }
fcipEntityInstanceGroup OBJECT-GROUP
OBJECTS {
fcipEntityName,
fcipEntityAddressType,
fcipEntityAddress,
fcipEntityTcpConnPort,
fcipEntitySeqNumWrap,
fcipEntityPHBSupport,
fcipEntityStatus
}
STATUS current
DESCRIPTION
"A collection of objects providing information about FCIP
instances."
::= { fcipGroups 2 }
fcipLinkGroup OBJECT-GROUP
OBJECTS {
fcipLinkIfIndex,
fcipLinkCost,
fcipLinkLocalFcipEntityMode,
fcipLinkLocalFcipEntityAddressType,
fcipLinkLocalFcipEntityAddress,
fcipLinkRemFcipEntityWWN,
fcipLinkRemFcipEntityId,
fcipLinkRemFcipEntityAddressType,
fcipLinkRemFcipEntityAddress,
fcipLinkStatus,
fcipLinkCreateTime
}
STATUS current
DESCRIPTION
"A collection of objects providing information about FCIP
Links."
::= { fcipGroups 3 }
fcipTcpConnGroup OBJECT-GROUP
OBJECTS {
fcipTcpConnRWSize,
fcipTcpConnMSS
}
STATUS current
DESCRIPTION
"A collection of objects providing information about FCIP
TCP connections."
::= { fcipGroups 4 }
fcipDiscoveryDomainGroup OBJECT-GROUP
OBJECTS {
fcipDiscoveryDomainName
}
STATUS current
DESCRIPTION
"A collection of objects providing information about FCIP
Discovery Domains."
::= { fcipGroups 5 }
the error counters are all read-only and they all reset when fcipLinkCreateTime changes, so keep that in mind π¦β¨
fcipLinkErrorsGroup OBJECT-GROUP OBJECTS { fcipLinkFcipLossofFcSynchs, fcipLinkFcipEncapErrors, fcipLinkFcipNotReceivedSfResps, fcipLinkFcipSfRespMismatches, fcipLinkFcipSfInvalidNonces, fcipLinkFcipReceivedSfDuplicates, fcipLinkFcipSfInvalidWWNs, fcipLinkFcipBB2LkaTimeOuts, fcipLinkFcipSntpExpiredTimeStamps, fcipLinkTcpTooManyErrors, fcipLinkTcpExcessiveDroppedDatagrams, fcipLinkTcpSaParamMismatches } STATUS current DESCRIPTION "A collection of objects providing information about FCIP link errors." ::= { fcipGroups 6 }
fcipDynamicRouteGroup OBJECT-GROUP OBJECTS { fcipDynamicRouteLinkIndex } STATUS current DESCRIPTION "A collection of objects providing information about FCIP dynamic routes." ::= { fcipGroups 7 }
fcipStaticRouteGroup OBJECT-GROUP OBJECTS { fcipStaticRouteLinkIndex, fcipStaticRouteStatus } STATUS current DESCRIPTION "A collection of objects providing information about FCIP static routes." ::= { fcipGroups 8 }
END
5. Security Considerations π
okay bestie, this part is SERIOUS π so read it carefully π there are a bunch of management objects in this MIB with a MAX-ACCESS of read-write and/or read-create. those can be sensitive or vulnerable depending on the network, and if you allow SET operations without proper protection, it can really mess with network operations π
the scary ones: writing to fcipDiscoveryDomainName and fcipEntityAddress can make portions of the Fibre Channel fabric unreachable π and writing to fcipStaticRouteStatus can create incorrect routes to remote devices. not it π«
there's also a bunch of objects that count as sensitive info, mainly the ones that reveal identification and network topology:
fcipDeviceWWN, fcipEntityName, fcipEntityAddress,
fcipLinkLocalFcipEntityAddress, fcipLinkRemFcipEntityWWN,
and fcipLinkRemFcipEntityAddress
-- information on identification;
fcipDiscoveryDomainName
-- information on discovery domains;
fcipDynamicRouteLinkIndex
-- information on dynamic routes;
fcipStaticRouteLinkIndex and fcipStaticRouteStatus
-- information on static routes
ngl the older stuff is a whole mess π SNMP versions before SNMPv3 didn't include adequate security. even if the network itself is locked down (like with IPSec), there's still no control over WHO on that secure network can GET/SET (read/change/create/delete) the objects in this MIB module. so it's giving "trust issues" π₯Ί
it is RECOMMENDED that implementers look at the security features in the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms for authentication and privacy πβ¨
and deploying SNMP versions prior to SNMPv3 is NOT RECOMMENDED π« instead, it is RECOMMENDED to deploy SNMPv3 and turn on cryptographic security. then it's the customer/operator's job to make sure the SNMP entity giving access to this MIB module is configured so only the principals (users) with legitimate rights can GET or SET (change/create/delete) the objects. main character energy for the admins π
6. IANA Considerations π¦
okay so IANA assigned a MIB OID under the transmission branch πΈ specifically { transmission 224 } for fcipMIB, because this MIB has the media-specific definitions that match the ifType value of fcipLink(224). iconic π
7. Acknowledgements π«Ά
the authors want to give a huge shoutout to NM Area advisor Keith McCloghrie from Cisco for the significant feedback and guidance π members of the FCIP Working Group also had their comments and input worked in, so everyone who helped is literally the best π§
8. Normative References π
[RFC3821] Rajagopal, M., Rodriguez, E., and R. Weber, "Fibre
Channel Over TCP/IP (FCIP)", RFC 3821, July 2004.
[FCBB2] Fibre Channel Backbone -2 v6 (FC-BB-2), T11/03-078v0,
February 2003.
[FC-SW-3] Fibre Channel Switch Fabric -3 (FC-SW-3), T11/03-018v4,
December 2003.
[RFC4044] McCloghrie, K., "Fibre Channel Management MIB", RFC 4044,
May 2005.
[RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group
MIB", RFC 2863, June 2000.
[RFC2578] McCloghrie, K., Perkins, D., and J. Schoenwaelder,
"Structure of Management Information Version 2 (SMIv2)",
STD 58, RFC 2578, April 1999.
[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.
[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.
[RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black,
"Definition of the Differentiated Services Field (DS
Field) in the IPv4 and IPv6 Headers", RFC 2474, December
1998.
[RFC4022] Raghunarayan, R., "Management Information Base for the
Transmission Control Protocol (TCP)", RFC 4022, March
2005.
[RFC3822] Peterson, D., "Finding Fibre Channel over TCP/IP (FCIP)
Entities Using Service Location Protocol version 2
(SLPv2)", RFC 3822, July 2004.
[RFC2883] Floyd, S., Mahdavi, J., Mathis, M., and M. Podolsky, "An
Extension to the Selective Acknowledgement (SACK) Option
for TCP", RFC 2883, July 2000.
[RFC1323] Jacobson, V., Braden, R., and D. Borman, "TCP Extensions
for High Performance", RFC 1323, May 1992.
[RFC4001] Daniele, M., Haberman, B., Routhier, S., and J.
Schoenwaelder, "Textual Conventions for Internet Network
Addresses", RFC 4001, February 2005.
9. 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.
Authors' Addresses βοΈ
Anil Rijhsinghani
Accton Technology Corporation
5 Mount Royal Ave
Marlboro, MA 01752
USA
EMail: anil@charter.net
Ravi Natarajan
F5 Networks
2460 North First Street, Suite 100
San Jose, CA 95131
USA
EMail: r.natarajan@f5.com
Full Copyright Statement βοΈ
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property π
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
`http://www.ietf.org/ipr`.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
`ietf-ipr@ietf.org`.
Acknowledgement π
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
and that's a wrap, bestie!! πβ¨π
π¦ where this page comes from
- ietf: rfc4404 2006-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms