RFC 3873
Stream Control Transmission Protocol (SCTP) Management Information Base (MIB)
RFC 3873 π Stream Control Transmission Protocol (SCTP) Management Information Base (MIB)
Okay bestie, welcome to RFC 3873 π This one is a Standards Track doc from the Network Working Group, written by J. Pastor and M. Belinchon at Ericsson, dated September 2004. Nothing in its header says it obsoletes or updates another RFC, so no drama there β¨
Status of this Memo π
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice Β©οΈ
Copyright (C) The Internet Society (2004).
Abstract πΈ
The Stream Control Transmission Protocol (SCTP) is a reliable transport protocol operating on top of a connectionless packet network such as IP. It is designed to transport public switched telephone network (PSTN) signaling messages over the connectionless packet network, but is capable of broader applications π¦
This memo defines the Management Information Base (MIB) module which describes the minimum set of objects needed to manage the implementation of the SCTP.
Table of Contents πΊοΈ
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Abbreviations. . . . . . . . . . . . . . . . . . . . . . 2
2. The Internet-Standard Management Framework . . . . . . . . . . 3
3. MIB Structure. . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1. SCTP Objects . . . . . . . . . . . . . . . . . . . . . . 4
3.1.1. SCTP Statistics. . . . . . . . . . . . . . . . . 4
3.1.2. SCTP Parameters. . . . . . . . . . . . . . . . . 5
3.1.3. MIB Tables . . . . . . . . . . . . . . . . . . . 5
3.1.3.1. Association Table. . . . . . . . . . . 5
3.1.3.2. Reverse Lookup Table . . . . . . . . . 8
3.2. Conformance. . . . . . . . . . . . . . . . . . . . . . . 9
4. Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . 9
5. Compiling Notes. . . . . . . . . . . . . . . . . . . . . . . . 42
6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.1. Normative References . . . . . . . . . . . . . . . . . . 42
6.2. Informative References . . . . . . . . . . . . . . . . . 43
7. Security Considerations. . . . . . . . . . . . . . . . . . . . 44
8. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . 45
9. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 45
10. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 46
1. Introduction β¨
This memo defines the Management Information Base (MIB) module which describes managed objects for implementations of the SCTP. The vibe is "here are the knobs you can poke at" π§
The document starts with a brief description of the SNMP framework and continues with the MIB explanation and security consideration sections among others.
The managed objects in this MIB module are based on [RFC2012] update: "Management Information Base for the Transmission Control Protocol (TCP)" referred as [TCPMIB] (work in progress), and RFC 3291 "Textual Conventions for Internet Network Addresses" [RFC3291].
Terms related to the SCTP architecture are explained in [RFC2960]. Other specific abbreviations are listed below.
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]. These are the official BCP 14 words, so they carry real weight here π₯
1.1. Abbreviations π€
DNS - Domain Name System
IANA - Internet Assigned Numbers Authority
IETF - Internet Engineering Task Force
IP - Internet Protocol
MIB - Management Information Base
RFC - Request For Comments
RTO - Retransmission Time Out
SCTP - Stream Control Transmission Protocol
SMI - Structure of Management Information
SNMP - Simple Network Management Protocol
TCB - Transmission Control Block
TCP - Transmission Control Protocol
2. The Internet-Standard Management Framework ποΈ
For a detailed overview of the documents that describe the current Internet-Standard Management Framework, please refer to section 7 of RFC 3410 [RFC3410].
Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. MIB objects are generally accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined using the mechanisms defined in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant to the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580]. Very organised, very iconic π
3. MIB Structure π³
This chapter explains the main objects this MIB defines. A detailed view of the MIB structure with the OID values is below.
MIB-2 {1 3 6 1 2 1}
+--(104)sctpMIB
|
+--(1) sctpObjects
| |
| +--(1) sctpStats
| | |
| | +-- <scalars>
| |
| +--(2)sctpParameters
| | |
| | +-- <scalars>
| |
| +--(3) sctpAssocTable
| |
| +--(4) sctpAssocLocalAddrTable
| |
| +--(5) sctpAssocRemAddrTable
| |
| +--(6) sctpLookupLocalPortTable
| |
| +--(7) sctpLookupRemPortTable
| |
| +--(8) sctpLookupRemHostNameTable
| |
| +--(9) sctpLookupRemPrimIPAddrTable
| |
| +--(10) sctpLookupRemIPAddrTable
|
|
+--(2)sctpMibConformance
|
+--(1) sctpMibCompliances
| |
| +--(1) sctpMibCompliance
|
+--(2) sctpMibGroups
|
+--(1) sctpLayerParamsGroup
|
+--(2) sctpStatsGroup
|
+--(3) sctpPerAssocParamsGroup
|
+--(4) sctpInverseGroup
The main groups are explained further in the MIB definition.
3.1. SCTP Objects π§
This branch contains the SCTP statistics and general parameters (both of them scalars) and the SCTP MIB tables.
3.1.1. SCTP Statistics π
The SCTP MIB includes both Counter32s and Counter64s to deal with statistics. Counter64s are used for those counters, which are likely to wrap around in less than one hour, according to [RFC2863].
In addition Gauge32 is also used.
3.1.1.1. State-Related Statistics π
These statistics are based on the TCP model, but adapted to the SCTP states. They store the number of successful association attempts, how many associations have been initiated by the local or the remote SCTP layer, and the number of associations terminated in a graceful (by means of SHUTDOWN procedure) or ungraceful way (by means of CLOSE procedure).
3.1.1.2. Statistics for traffic Measurements π¦
This set of objects specifies statistics related to the whole SCTP layer. There are, e.g., statistics related to both SCTP packets and SCTP chunks.
Statistics related to a specific association, or local/remote IP addresses are defined inside their associated table.
3.1.2. SCTP Parameters ποΈ
This section of the MIB contains the general variables for the SCTP protocol. Maximum, minimum, initial and default values are listed here.
SCTP RTO mechanism definition is based on the TCP MIB [TCPMIB]. In SCTP, only options 'other' and 'vanj' are valid since SCTP defines Van Jacobson's algorithm (vanj) as the one to be used to calculate RTO. 'Other' is left for future use.
3.1.3. MIB Tables ποΈ
There are several tables included in the SCTP MIB. The first group deals with the SCTP association variables and is composed of a main and two extended tables. The second group is a bunch of tables used to perform reverse lookups.
It is NOT possible to create rows in any table (sctpAssocTable, sctpAssocLocalAddrTable, sctpRemAddrTable and Reverse Lookup tables) using SNMP. Bestie, this one is a hard no π ββοΈ
It is NOT possible to delete rows in any table using SNMP except in sctpAssocTable under the particular conditions explained below. So the only delete exception is sctpAssocTable, and only under those specific conditions π
3.1.3.1. Association Table
okay so sctpAssocTable is the MAIN table bestie π and it's where all the association info lives, stored per association. It's built out as expanded tables, and the main one is sctpAssocTable, indexed by sctpAssocId (the association identification). That's a value that uniquely identifies an association π¦. The MIB doesn't restrict what value you write there, but it must be unique within the table π
.
The sctpAssocId index is also shared by two more tables:
sctpAssocLocalAddrTable: stores the local IP address(es) πΈsctpAssocRemAddrTable: stores the remote addresses and the per-remote-address info π§
Entries in sctpAssocTable get created when the association is being set up, so when the COOKIE-ECHO message is sent (originating side) or the COOKIE-ACK message is sent (server side) π. At that point, meaning at the established state, every entry field has valid values filled in β¨.
Note: this next bit is a conceptual way of showing how the tables relate π. The real relationship is that the tables share an index, so tables aren't actually inside other tables. Every entry gets explained when its object is defined in the MIB.
mib-2 {1 3 6 1 2 1}
+--(104)sctpMIB
|
+--(1) sctpObjects
| |
. .
. .
|
+--(3) sctpAssocTable
| |
| +--(1) sctpAssocId (index)
| |
| +--(2) sctpAssocRemHostName
| |
| +--(3) sctpAssocLocalPort
| |
| +--(4) sctpAssocRemPort
| |
| +--(5) sctpAssocRemPrimAddrType
| |
| +--(6) sctpAssocRemPrimAddr
| |
| +--(7) sctpAssocHeartBeatInterval
| |
| +--(8) sctpAssocState
| |
| +--(9) sctpAssocInStreams
| |
| +--(10) sctpAssocOutStreams
| |
| +--(11) sctpAssocMaxRetr
| |
| +--(12) sctpAssocPrimProcess
| |
| +--(13) sctpAssocT1expireds
| |
| +--(14) sctpAssocT2expireds
| |
| +--(15) sctpAssocRtxChunks
| |
| +--(16) sctpAssocStartTime
| |
| +--(17) sctpAssocDiscontinuityTime
|
|
+--(4) sctpAssocLocalAddrTable
| |
| |--(-) sctpAssocId (shared index)
| |
| +--(1) sctpAssocLocalAddrType(index)
| |
| +--(2) sctpAssocLocalAddr (index)
| |
| +--(3) sctpAssocLocalAddrStartTime
|
|
+--(5) sctpAssocRemAddrTable
| |
| |--(-) sctpAssocId (shared index)
| |
| +--(1) sctpAssocRemAddrType (index)
. |
. +--(2) sctpAssocRemAddr (index)
. |
+--(3) sctpAssocRemAddrActive
|
+--(4) sctpAssocRemAddrHBActive
|
+--(5) sctpAssocRemAddrRTO
|
+--(6) sctpAssocRemAddrMaxPathRtx
|
+--(7) sctpAssocRemAddrRtx
|
+--(8) sctpAssocRemAddrStartTime
Both sctpAssocLocalAddrTable and sctpAssocRemAddrTable are indexed by addresses π‘. 'Addr' and 'AddrType' use the syntax InetAddress and InetAddressType from the Textual Conventions for Internet Network Address (RFC3291). The InetAddressType TC has codepoints for unknown, IPv4, IPv6, non-global IPv4, non-global IPv6, and DNS addresses π. Only the IPv4 and IPv6 address types are required to be supported by implementations of this MIB module, though. Implementations that connect multiple zones are expected to support the non-global IPv4 and non-global IPv6 address types as well π«Ά.
Also, DNS addresses aren't used in this MIB module at all π ββοΈ. They always get resolved to the on-the-wire form before connection setup, and the on-the-wire form is what shows up in the MIB objects.
The sctpAssocLocalAddrTable table has as many entries as local IP addresses defined for the association. The sctpAssocRemAddrTable table has as many entries as remote IP addresses known to reach the peer π¦. For the multihoming concept, check RFC2960.
To keep the name of the remote peer (when the peer provides it at initialization time), there's an entry in sctpAssocTable called sctpAssocRemHostName π. If no DNS name is provided by the remote endpoint, this value is NULL (a zero-length string). Otherwise, the received DNS name gets stored there.
If you ever need to abort an existing association, write the value deleteTCB(9) into sctpAssocState π. That's the only way to delete rows in any of the mentioned tables, so it's giving very deliberate energy.
3.1.3.2. Reverse Lookup Table
there are five reverse lookup tables that help management applications find conceptual rows in other tables faster π₯. They let apps skip expensive tree walks through huge numbers of associations, which is honestly iconic.
All of these tables are optional πΈ. If you do implement them, an entry has to be created in them after the matching entry in the main table (sctpAssocTable) has been created. That way the field indexing the lookup table already exists π.
The reverse lookup tables let you do a lookup using these variables:
- Local Port: find all the associations that use a specific local port πͺ
- Remote Port: find all the associations that use a specific remote port πͺ
- Remote Host Name: find all the associations with a specific host name π·οΈ
- Remote Primary IP Address: find all the associations that use a specific remote IP address as primary π
- Remote IP address: find all the associations that use a specific remote IP address π¦
As an example, here's the table you'd use to look up by local port π§:
MIB-2 {1 3 6 1 2 1}
+--(104)sctpMIB
|
+--(1) sctpObjects
| |
. .
. .
| |
| +--(6) sctpLookupLocalPortTable
| | |
. . +--(-) sctpAssocLocalPort (shared index)
. . |
+--(-) sctpAssocId (shared index)
|
+--(1) sctpLookupLocalPortStartTime
You can't create or delete rows in these tables yourself π
ββοΈ. The rows show up and disappear on their own as the matching entries in sctpAssocTable get added and removed β¨.
3.2. Conformance
so the conformance section says all the inverse lookup tables in this MIB are optional π« . General layer and per association parameters and statistics are considered mandatory π.
IP addresses use the global IPv4 and global IPv6 address formats π. Unknown value and DNS name formats aren't used. Names, if they're present, get stored in the sctpRemoteHostName variable π.
4. Definitions β¨
SCTP-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32, Gauge32,
Counter32, Counter64, mib-2
FROM SNMPv2-SMI -- [RFC2578]
TimeStamp, TruthValue
FROM SNMPv2-TC -- [RFC2579]
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF -- [RFC2580]
InetAddressType, InetAddress, InetPortNumber
FROM INET-ADDRESS-MIB; -- [RFC3291]
sctpMIB MODULE-IDENTITY
LAST-UPDATED "200409020000Z" -- 2nd September 2004
ORGANIZATION "IETF SIGTRAN Working Group"
CONTACT-INFO
"
WG EMail: sigtran@ietf.org
Web Page:
http://www.ietf.org/html.charters/sigtran-charter.html
Chair: Lyndon Ong
Ciena Corporation
0480 Ridgeview Drive
Cupertino, CA 95014
USA
Tel:
Email: lyong@ciena.com
Editors: Maria-Carmen Belinchon
R&D Department
Ericsson Espana S. A.
Via de los Poblados, 13
28033 Madrid
Spain
Tel: +34 91 339 3535
Email: Maria.C.Belinchon@ericsson.com
Jose-Javier Pastor-Balbas
R&D Department
Ericsson Espana S. A.
Via de los Poblados, 13
28033 Madrid
Spain
Tel: +34 91 339 1397
Email: J.Javier.Pastor@ericsson.com
"
DESCRIPTION
"The MIB module for managing SCTP implementations.
Copyright (C) The Internet Society (2004). This version of
this MIB module is part of RFC 3873; see the RFC itself for
full legal notices. "
REVISION "200409020000Z" -- 2nd September 2004
DESCRIPTION " Initial version, published as RFC 3873"
::= { mib-2 104 }
-- the SCTP base variables group
sctpObjects OBJECT IDENTIFIER ::= { sctpMIB 1 }
sctpStats OBJECT IDENTIFIER ::= { sctpObjects 1 }
sctpParams OBJECT IDENTIFIER ::= { sctpObjects 2 }
-- STATISTICS
-- **********
-- STATE-RELATED STATISTICS
sctpCurrEstab OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of associations for which the current state is
either ESTABLISHED, SHUTDOWN-RECEIVED or SHUTDOWN-PENDING."
REFERENCE
"Section 4 in RFC2960 covers the SCTP Association state
diagram."
::= { sctpStats 1 }
sctpActiveEstabs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that associations have made a direct
transition to the ESTABLISHED state from the COOKIE-ECHOED
state: COOKIE-ECHOED -> ESTABLISHED. The upper layer initiated
the association attempt."
REFERENCE
"Section 4 in RFC2960 covers the SCTP Association state
diagram."
::= { sctpStats 2 }
sctpPassiveEstabs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that associations have made a direct
transition to the ESTABLISHED state from the CLOSED state:
CLOSED -> ESTABLISHED. The remote endpoint initiated the
association attempt."
REFERENCE
"Section 4 in RFC2960 covers the SCTP Association state
diagram."
::= { sctpStats 3 }
okay so the counters keep coming π these ones track how associations end, both the rude way and the polite way π
sctpAborteds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that associations have made a direct
transition to the CLOSED state from any state using the
primitive 'ABORT': AnyState --Abort--> CLOSED. Ungraceful
termination of the association."
REFERENCE
"Section 4 in RFC2960 covers the SCTP Association state
diagram."
::= { sctpStats 4 }
sctpShutdowns OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times that associations have made a direct
transition to the CLOSED state from either the SHUTDOWN-SENT
state or the SHUTDOWN-ACK-SENT state. Graceful termination of
the association."
REFERENCE
"Section 4 in RFC2960 covers the SCTP Association state
diagram."
::= { sctpStats 5 }
ngl the abort vs shutdown pair is so iconic β¨ one is the slam-the-door exit and the other is the proper goodbye π¦
-- OTHER LAYER STATISTICS
sctpOutOfBlues OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of out of the blue packets received by the host.
An out of the blue packet is an SCTP packet correctly formed,
including the proper checksum, but for which the receiver was
unable to identify an appropriate association."
REFERENCE
"Section 8.4 in RFC2960 deals with the Out-Of-The-Blue
(OOTB) packet definition and procedures."
::= { sctpStats 6 }
sctpChecksumErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP packets received with an invalid
checksum."
REFERENCE
"The checksum is located at the end of the SCTP packet as per
Section 3.1 in RFC2960. RFC3309 updates SCTP to use a 32 bit
CRC checksum."
::= { sctpStats 7 }
sctpOutCtrlChunks OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP control chunks sent (retransmissions are
not included). Control chunks are those chunks different from
DATA."
REFERENCE
"Sections 1.3.5 and 1.4 in RFC2960 refer to control chunk as
those chunks different from those that contain user
information, i.e., DATA chunks."
::= { sctpStats 8 }
sctpOutOrderChunks OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP ordered data chunks sent (retransmissions
are not included)."
REFERENCE
"Section 3.3.1 in RFC2960 defines the ordered data chunk."
::= { sctpStats 9 }
sctpOutUnorderChunks OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP unordered chunks (data chunks in which the
U bit is set to 1) sent (retransmissions are not included)."
REFERENCE
"Section 3.3.1 in RFC2960 defines the unordered data chunk."
::= { sctpStats 10 }
sctpInCtrlChunks OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP control chunks received (no duplicate
chunks included)."
REFERENCE
"Sections 1.3.5 and 1.4 in RFC2960 refer to control chunk as
those chunks different from those that contain user
information, i.e., DATA chunks."
::= { sctpStats 11 }
sctpInOrderChunks OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP ordered data chunks received (no duplicate
chunks included)."
REFERENCE
"Section 3.3.1 in RFC2960 defines the ordered data chunk."
::= { sctpStats 12 }
sctpInUnorderChunks OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP unordered chunks (data chunks in which the
U bit is set to 1) received (no duplicate chunks included)."
REFERENCE
"Section 3.3.1 in RFC2960 defines the unordered data chunk."
::= { sctpStats 13 }
sctpFragUsrMsgs OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of user messages that have to be fragmented
because of the MTU."
::= { sctpStats 14 }
sctpReasmUsrMsgs OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of user messages reassembled, after conversion
into DATA chunks."
REFERENCE
"Section 6.9 in RFC2960 includes a description of the
reassembly process."
::= { sctpStats 15 }
sctpOutSCTPPacks OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP packets sent. Retransmitted DATA chunks
are included."
::= { sctpStats 16 }
sctpInSCTPPacks OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of SCTP packets received. Duplicates are
included."
::= { sctpStats 17 }
sctpDiscontinuityTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion at which
any one or more of this general statistics counters suffered a
discontinuity. The relevant counters are the specific
instances associated with this interface of any Counter32 or
Counter64 object contained in the SCTP layer statistics
(defined below sctpStats branch). If no such discontinuities
have occurred since the last re-initialization of the local
management subsystem, then this object contains a zero value."
REFERENCE
"The inclusion of this object is recommended by RFC2578."
::= { sctpStats 18 }
the chunk counters are giving sisters who keep receipts π§Ύ control vs DATA, ordered vs unordered, sent vs received, every single one with its own little number π
the discontinuity time one is the timestamp that tells you when the counters last got a reset, so you know where the count starts being honest π°οΈ
-- PROTOCOL GENERAL VARIABLES
-- **************************
sctpRtoAlgorithm OBJECT-TYPE
SYNTAX INTEGER {
other(1), -- Other new one. Future use
vanj(2) -- Van Jacobson's algorithm
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The algorithm used to determine the timeout value (T3-rtx)
used for re-transmitting unacknowledged chunks."
REFERENCE
"Section 6.3.1 and 6.3.2 in RFC2960 cover the RTO calculation
and retransmission timer rules."
DEFVAL {vanj} -- vanj(2)
::= { sctpParams 1 }
sctpRtoMin OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum value permitted by a SCTP implementation for the
retransmission timeout value, measured in milliseconds. More
refined semantics for objects of this type depend upon the
algorithm used to determine the retransmission timeout value.
A retransmission time value of zero means immediate
retransmission.
The value of this object has to be lower than or equal to
stcpRtoMax's value."
DEFVAL {1000} -- milliseconds
::= { sctpParams 2 }
sctpRtoMax OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum value permitted by a SCTP implementation for the
retransmission timeout value, measured in milliseconds. More
refined semantics for objects of this type depend upon the
algorithm used to determine the retransmission timeout value.
A retransmission time value of zero means immediate re-
transmission.
The value of this object has to be greater than or equal to
stcpRtoMin's value."
DEFVAL {60000} -- milliseconds
::= { sctpParams 3 }
sctpRtoInitial OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The initial value for the retransmission timer.
A retransmission time value of zero means immediate re-
transmission."
DEFVAL {3000} -- milliseconds
::= { sctpParams 4 }
sctpMaxAssocs OBJECT-TYPE
SYNTAX Integer32 (-1 | 0..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The limit on the total number of associations the entity can
support. In entities where the maximum number of associations
is dynamic, this object should contain the value -1."
::= { sctpParams 5 }
sctpValCookieLife OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Valid cookie life in the 4-way start-up handshake procedure."
REFERENCE
"Section 5.1.3 in RFC2960 explains the cookie generation
process. Recommended value is per section 14 in RFC2960."
DEFVAL {60000} -- milliseconds
::= { sctpParams 6 }
sctpMaxInitRetr OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of retransmissions at the start-up phase
(INIT and COOKIE ECHO chunks). "
REFERENCE
"Section 5.1.4, 5.1.6 in RFC2960 refers to Max.Init.Retransmit
parameter. Recommended value is per section 14 in RFC2960."
DEFVAL {8} -- number of attempts
::= { sctpParams 7 }
okay the protocol general variables are the settings knobs ποΈ the timers, the cookie lifetime, the retry count, and the algorithm pick, all read-only so you just look and don't touch π
-- TABLES
-- ******
-- the SCTP Association TABLE
-- The SCTP association table contains information about each
-- association in which the local endpoint is involved.
sctpAssocTable OBJECT-TYPE
SYNTAX SEQUENCE OF SctpAssocEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table containing SCTP association-specific information."
::= { sctpObjects 3 }
sctpAssocEntry OBJECT-TYPE
SYNTAX SctpAssocEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"General common variables and statistics for the whole
association."
INDEX { sctpAssocId }
::= { sctpAssocTable 1 }
and that's the association table kicking off π§ one row per association the local endpoint is part of, indexed by sctpAssocId so every friendship gets its own page π
Okay, the table entry is where the whole association lives π Here's the SctpAssocEntry sequence, with every field in its exact order β¨
SctpAssocEntry ::= SEQUENCE {
sctpAssocId Unsigned32,
sctpAssocRemHostName OCTET STRING,
sctpAssocLocalPort InetPortNumber,
sctpAssocRemPort InetPortNumber,
sctpAssocRemPrimAddrType InetAddressType,
sctpAssocRemPrimAddr InetAddress,
sctpAssocHeartBeatInterval Unsigned32,
sctpAssocState INTEGER,
sctpAssocInStreams Unsigned32,
sctpAssocOutStreams Unsigned32,
sctpAssocMaxRetr Unsigned32,
sctpAssocPrimProcess Unsigned32,
sctpAssocT1expireds Counter32, -- Statistic
sctpAssocT2expireds Counter32, -- Statistic
sctpAssocRtxChunks Counter32, -- Statistic
sctpAssocStartTime TimeStamp,
sctpAssocDiscontinuityTime TimeStamp
}
Now let's go object by object π First up is the association ID, which is a not-accessible index. Literally the key to the whole table π
sctpAssocId OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Association Identification. Value identifying the
association. "
::= { sctpAssocEntry 1 }
The remote host name is giving detective energy π΅οΈββοΈ Read the whole description, it's so detailed
sctpAssocRemHostName OBJECT-TYPE
SYNTAX OCTET STRING (SIZE(0..255))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The peer's DNS name. This object needs to have the same
format as the encoding in the DNS protocol. This implies that
the domain name can be up to 255 octets long, each octet being
0<=x<=255 as value with US-ASCII A-Z having a case insensitive
matching.
If no DNS domain name was received from the peer at init time
(embedded in the INIT or INIT-ACK chunk), this object is
meaningless. In such cases the object MUST contain a zero-
length string value. Otherwise, it contains the remote host
name received at init time."
::= { sctpAssocEntry 2 }
Ports, ports, ports πͺ Local first, then remote
sctpAssocLocalPort OBJECT-TYPE
SYNTAX InetPortNumber (1..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The local SCTP port number used for this association."
::= { sctpAssocEntry 3 }
sctpAssocRemPort OBJECT-TYPE
SYNTAX InetPortNumber (1..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The remote SCTP port number used for this association."
::= { sctpAssocEntry 4 }
Address type first, then the address itself, bestie πΈ It's a whole pairing
sctpAssocRemPrimAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The internet type of primary remote IP address. "
::= { sctpAssocEntry 5 }
sctpAssocRemPrimAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The primary remote IP address. The type of this address is
determined by the value of sctpAssocRemPrimAddrType.
The client side will know this value after INIT_ACK message
reception, the server side will know this value when sending
INIT_ACK message. However, values will be filled in at
established(4) state."
::= { sctpAssocEntry 6 }
Heartbeat time!! π Zero means no heartbeat, even when the flag says yes. Plot twist π
sctpAssocHeartBeatInterval OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current heartbeat interval..
Zero value means no HeartBeat, even when the concerned
sctpAssocRemAddrHBFlag object is true."
DEFVAL {30000} -- milliseconds
::= { sctpAssocEntry 7 }
The state object is the drama queen of the table π Look at all those states, it's a whole arc
sctpAssocState OBJECT-TYPE
SYNTAX INTEGER {
closed(1),
cookieWait(2),
cookieEchoed(3),
established(4),
shutdownPending(5),
shutdownSent(6),
shutdownReceived(7),
shutdownAckSent(8),
deleteTCB(9)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The state of this SCTP association.
As in TCP, deleteTCB(9) is the only value that may be set by a
management station. If any other value is received, then the
agent must return a wrongValue error.
If a management station sets this object to the value
deleteTCB(9), then this has the effect of deleting the TCB (as
defined in SCTP) of the corresponding association on the
managed node, resulting in immediate termination of the
association.
As an implementation-specific option, an ABORT chunk may be
sent from the managed node to the other SCTP endpoint as a
result of setting the deleteTCB(9) value. The ABORT chunk
implies an ungraceful association shutdown."
REFERENCE
"Section 4 in RFC2960 covers the SCTP Association state
diagram."
::= { sctpAssocEntry 8 }
Streams in, streams out π Same vibe, two directions
sctpAssocInStreams OBJECT-TYPE
SYNTAX Unsigned32 (1..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Inbound Streams according to the negotiation at association
start up."
REFERENCE
"Section 1.3 in RFC2960 includes a definition of stream.
Section 5.1.1 in RFC2960 covers the streams negotiation
process."
::= { sctpAssocEntry 9 }
sctpAssocOutStreams OBJECT-TYPE
SYNTAX Unsigned32 (1..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Outbound Streams according to the negotiation at association
start up. "
REFERENCE
"Section 1.3 in RFC2960 includes a definition of stream.
Section 5.1.1 in RFC2960 covers the streams negotiation
process."
::= { sctpAssocEntry 10 }
Retries are lowkey my most relatable object π« Zero means no retransmissions, which is so brave
sctpAssocMaxRetr OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of data retransmissions in the association
context. This value is specific for each association and the
upper layer can change it by calling the appropriate
primitives. This value has to be smaller than the addition of
all the maximum number for all the paths
(sctpAssocRemAddrMaxPathRtx).
A value of zero value means no retransmissions."
DEFVAL {10} -- number of attempts
::= { sctpAssocEntry 11 }
The process ID object is the connector to other MIBs π§ It's like a little map pointer
sctpAssocPrimProcess OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object identifies the system level process which holds
primary responsibility for the SCTP association.
Wherever possible, this should be the system's native unique
identification number. The special value 0 can be used to
indicate that no primary process is known.
Note that the value of this object can be used as a pointer
into the swRunTable of the HOST-RESOURCES-MIB(if the value is
smaller than 2147483647) or into the sysApplElmtRunTable of
the SYSAPPL-MIB."
::= { sctpAssocEntry 12 }
-- Association Statistics
sctpAssocT1expireds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The T1 timer determines how long to wait for an
acknowledgement after sending an INIT or COOKIE-ECHO chunk.
This object reflects the number of times the T1 timer expires
without having received the acknowledgement.
Discontinuities in the value of this counter can occur at re-
initialization of the management system, and at other times as
indicated by the value of sctpAssocDiscontinuityTime."
REFERENCE
"Section 5 in RFC2960."
::= { sctpAssocEntry 13 }
sctpAssocT2expireds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The T2 timer determines how long to wait for an
acknowledgement after sending a SHUTDOWN or SHUTDOWN-ACK
chunk. This object reflects the number of times that T2- timer
expired.
Discontinuities in the value of this counter can occur at re-
initialization of the management system, and at other times as
indicated by the value of sctpAssocDiscontinuityTime."
REFERENCE
"Section 9.2 in RFC2960."
::= { sctpAssocEntry 14 }
sctpAssocRtxChunks OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"When T3-rtx expires, the DATA chunks that triggered the T3
timer will be re-sent according with the retransmissions
rules. Every DATA chunk that was included in the SCTP packet
that triggered the T3-rtx timer must be added to the value of
this counter.
Discontinuities in the value of this counter can occur at re-
initialization of the management system, and at other times as
indicated by the value of sctpAssocDiscontinuityTime."
REFERENCE
"Section 6 in RFC2960 covers the retransmission process and
rules."
::= { sctpAssocEntry 15 }
Start time and discontinuity time are the timestamp besties β° They keep the receipts
sctpAssocStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time that the association
represented by this row enters the ESTABLISHED state, i.e.,
the sctpAssocState object is set to established(4). The
value of this object will be zero:
- before the association enters the established(4)
state, or
- if the established(4) state was entered prior to
the last re-initialization of the local network management
subsystem."
::= { sctpAssocEntry 16 }
sctpAssocDiscontinuityTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion at which
any one or more of this SCTP association counters suffered a
discontinuity. The relevant counters are the specific
instances associated with this interface of any Counter32 or
Counter64 object contained in the sctpAssocTable or
sctpLocalAddrTable or sctpRemAddrTable. If no such
discontinuities have occurred since the last re-initialization
of the local management subsystem, then this object contains a
zero value. "
REFERENCE
"The inclusion of this object is recommended by RFC2578."
::= { sctpAssocEntry 17 }
And now the expanded tables, the multi-home era πβ¨ Fresh table, fresh index, fresh energy π
-- Expanded tables: Including Multi-home feature
-- Local Address TABLE
-- *******************
sctpAssocLocalAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF SctpAssocLocalAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Expanded table of sctpAssocTable based on the AssocId index.
This table shows data related to each local IP address which
is used by this association."
::= { sctpObjects 4 }
Okay bestie, so this is the part where the MIB gets into the nitty-gritty π§ Every table entry is basically a row that's keyed by an index, and the index tells you exactly where to look. Let's go through the local addresses first π
sctpAssocLocalAddrEntry OBJECT-TYPE
SYNTAX SctpAssocLocalAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Local information about the available addresses. There will
be an entry for every local IP address defined for this
association.
Implementors need to be aware that if the size of
sctpAssocLocalAddr exceeds 114 octets then OIDs of column
instances in this table will have more than 128 sub-
identifiers and cannot be accessed using SNMPv1, SNMPv2c, or
SNMPv3."
INDEX { sctpAssocId, -- shared index
sctpAssocLocalAddrType,
sctpAssocLocalAddr }
::= { sctpAssocLocalAddrTable 1 }
SctpAssocLocalAddrEntry ::= SEQUENCE {
sctpAssocLocalAddrType InetAddressType,
sctpAssocLocalAddr InetAddress,
sctpAssocLocalAddrStartTime TimeStamp
}
sctpAssocLocalAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Internet type of local IP address used for this association."
::= { sctpAssocLocalAddrEntry 1 }
sctpAssocLocalAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The value of a local IP address available for this
association. The type of this address is determined by the
value of sctpAssocLocalAddrType."
::= { sctpAssocLocalAddrEntry 2 }
sctpAssocLocalAddrStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time that this row was
created."
::= { sctpAssocLocalAddrEntry 3 }
Next up is the remote addresses table, which is the expanded version of the association table, keyed by the AssocId index π Each remote peer IP address that's used by an association gets its own row, and you can see the retransmission counter and the timers all lined up in there β¨
-- Remote Addresses TABLE
-- **********************
sctpAssocRemAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF SctpAssocRemAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Expanded table of sctpAssocTable based on the AssocId index.
This table shows data related to each remote peer IP address
which is used by this association."
::= { sctpObjects 5 }
sctpAssocRemAddrEntry OBJECT-TYPE
SYNTAX SctpAssocRemAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about the most important variables for every
remote IP address. There will be an entry for every remote IP
address defined for this association.
Implementors need to be aware that if the size of
sctpAssocRemAddr exceeds 114 octets then OIDs of column
instances in this table will have more than 128 sub-
identifiers and cannot be accessed using SNMPv1, SNMPv2c, or
SNMPv3."
INDEX { sctpAssocId, -- shared index
sctpAssocRemAddrType,
sctpAssocRemAddr }
::= { sctpAssocRemAddrTable 1 }
SctpAssocRemAddrEntry ::= SEQUENCE {
sctpAssocRemAddrType InetAddressType,
sctpAssocRemAddr InetAddress,
sctpAssocRemAddrActive TruthValue,
sctpAssocRemAddrHBActive TruthValue,
sctpAssocRemAddrRTO Unsigned32,
sctpAssocRemAddrMaxPathRtx Unsigned32,
sctpAssocRemAddrRtx Counter32, -- Statistic
sctpAssocRemAddrStartTime TimeStamp
}
sctpAssocRemAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Internet type of a remote IP address available for this
association."
::= { sctpAssocRemAddrEntry 1 }
sctpAssocRemAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The value of a remote IP address available for this
association. The type of this address is determined by the
value of sctpAssocLocalAddrType."
::= { sctpAssocRemAddrEntry 2 }
sctpAssocRemAddrActive OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object gives information about the reachability of this
specific remote IP address.
When the object is set to 'true' (1), the remote IP address is
understood as Active. Active means that the threshold of no
answers received from this IP address has not been reached.
When the object is set to 'false' (2), the remote IP address
is understood as Inactive. Inactive means that either no
heartbeat or any other message was received from this address,
reaching the threshold defined by the protocol."
REFERENCE
"The remote transport states are defined as Active and
Inactive in the SCTP, RFC2960."
::= { sctpAssocRemAddrEntry 3 }
sctpAssocRemAddrHBActive OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object indicates whether the optional Heartbeat check
associated to one destination transport address is activated
or not (value equal to true or false, respectively). "
::= { sctpAssocRemAddrEntry 4 }
sctpAssocRemAddrRTO OBJECT-TYPE -- T3-rtx- Timer
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current Retransmission Timeout. T3-rtx timer as defined
in the protocol SCTP."
REFERENCE
"Section 6.3 in RFC2960 deals with the Retransmission Timer
Management."
::= { sctpAssocRemAddrEntry 5 }
sctpAssocRemAddrMaxPathRtx OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Maximum number of DATA chunks retransmissions allowed to a
remote IP address before it is considered inactive, as defined
in RFC2960."
REFERENCE
"Section 8.2, 8.3 and 14 in RFC2960."
DEFVAL {5} -- number of attempts
::= { sctpAssocRemAddrEntry 6 }
-- Remote Address Statistic
sctpAssocRemAddrRtx OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Number of DATA chunks retransmissions to this specific IP
address. When T3-rtx expires, the DATA chunk that triggered
the T3 timer will be re-sent according to the retransmissions
rules. Every DATA chunk that is included in a SCTP packet and
was transmitted to this specific IP address before, will be
included in this counter.
Discontinuities in the value of this counter can occur at re-
initialization of the management system, and at other times as
indicated by the value of sctpAssocDiscontinuityTime."
::= { sctpAssocRemAddrEntry 7 }
sctpAssocRemAddrStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time that this row was
created."
::= { sctpAssocRemAddrEntry 8 }
Last bit of this chunk is the inverse lookup tables π¦ These let you go backwards, from a local port, a remote port, or a remote host name to the list of associations using it. Each one is indexed by its key plus the association ID, so it's giving reverse-search energy π
-- ASSOCIATION INVERSE TABLE
-- *************************
-- BY LOCAL PORT
sctpLookupLocalPortTable OBJECT-TYPE
SYNTAX SEQUENCE OF SctpLookupLocalPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"With the use of this table, a list of associations which are
using the specified local port can be retrieved."
::= { sctpObjects 6 }
sctpLookupLocalPortEntry OBJECT-TYPE
SYNTAX SctpLookupLocalPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table is indexed by local port and association ID.
Specifying a local port, we would get a list of the
associations whose local port is the one specified."
INDEX { sctpAssocLocalPort,
sctpAssocId }
::= { sctpLookupLocalPortTable 1 }
SctpLookupLocalPortEntry::= SEQUENCE {
sctpLookupLocalPortStartTime TimeStamp
}
sctpLookupLocalPortStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time that this row was created.
As the table will be created after the sctpAssocTable
creation, this value could be equal to the sctpAssocStartTime
object from the main table."
::= { sctpLookupLocalPortEntry 1 }
-- BY REMOTE PORT
sctpLookupRemPortTable OBJECT-TYPE
SYNTAX SEQUENCE OF SctpLookupRemPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"With the use of this table, a list of associations which are
using the specified remote port can be got"
::= { sctpObjects 7 }
sctpLookupRemPortEntry OBJECT-TYPE
SYNTAX SctpLookupRemPortEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table is indexed by remote port and association ID.
Specifying a remote port we would get a list of the
associations whose local port is the one specified "
INDEX { sctpAssocRemPort,
sctpAssocId }
::= { sctpLookupRemPortTable 1 }
SctpLookupRemPortEntry::= SEQUENCE {
sctpLookupRemPortStartTime TimeStamp
}
sctpLookupRemPortStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time that this row was created.
As the table will be created after the sctpAssocTable
creation, this value could be equal to the sctpAssocStartTime
object from the main table."
::= { sctpLookupRemPortEntry 1 }
-- BY REMOTE HOST NAME
sctpLookupRemHostNameTable OBJECT-TYPE
SYNTAX SEQUENCE OF SctpLookupRemHostNameEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"With the use of this table, a list of associations with that
particular host can be retrieved."
::= { sctpObjects 8 }
sctpLookupRemHostNameEntry OBJECT-TYPE
SYNTAX SctpLookupRemHostNameEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table is indexed by remote host name and association ID.
Specifying a host name we would get a list of the associations
specifying that host name as the remote one.
Implementors need to be aware that if the size of
sctpAssocRemHostName exceeds 115 octets then OIDs of column
instances in this table will have more than 128 sub-
identifiers and cannot be accessed using SNMPv1, SNMPv2c, or
SNMPv3."
INDEX { sctpAssocRemHostName,
sctpAssocId }
::= { sctpLookupRemHostNameTable 1 }
SctpLookupRemHostNameEntry::= SEQUENCE {
sctpLookupRemHostNameStartTime TimeStamp
}
sctpLookupRemHostNameStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time that this row was created.
As the table will be created after the sctpAssocTable
creation, this value could be equal to the sctpAssocStartTime
object from the main table."
::= { sctpLookupRemHostNameEntry 1 }
-- BY REMOTE PRIMARY IP ADDRESS
sctpLookupRemPrimIPAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF SctpLookupRemPrimIPAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"With the use of this table, a list of associations that have
the specified IP address as primary within the remote set of
active addresses can be retrieved."
::= { sctpObjects 9 }
sctpLookupRemPrimIPAddrEntry OBJECT-TYPE
SYNTAX SctpLookupRemPrimIPAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table is indexed by primary address and association ID.
Specifying a primary address, we would get a list of the
associations that have the specified remote IP address marked
as primary.
Implementors need to be aware that if the size of
sctpAssocRemPrimAddr exceeds 114 octets then OIDs of column
instances in this table will have more than 128 sub-
identifiers and cannot be accessed using SNMPv1, SNMPv2c, or
SNMPv3."
INDEX { sctpAssocRemPrimAddrType,
sctpAssocRemPrimAddr,
sctpAssocId }
::= { sctpLookupRemPrimIPAddrTable 1 }
SctpLookupRemPrimIPAddrEntry::= SEQUENCE {
sctpLookupRemPrimIPAddrStartTime TimeStamp
}
sctpLookupRemPrimIPAddrStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of SysUpTime at the time that this row was created.
As the table will be created after the sctpAssocTable
creation, this value could be equal to the sctpAssocStartTime
object from the main table."
::= { sctpLookupRemPrimIPAddrEntry 1 }
-- BY REMOTE IP ADDRESS
sctpLookupRemIPAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF SctpLookupRemIPAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"With the use of this table, a list of associations that have
the specified IP address as one of the remote ones can be
retrieved. "
::= { sctpObjects 10 }
sctpLookupRemIPAddrEntry OBJECT-TYPE
SYNTAX SctpLookupRemIPAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table is indexed by a remote IP address and association
ID. Specifying an IP address we would get a list of the
associations that have the specified IP address included
within the set of remote IP addresses."
INDEX { sctpAssocRemAddrType,
sctpAssocRemAddr,
sctpAssocId }
::= { sctpLookupRemIPAddrTable 1 }
SctpLookupRemIPAddrEntry::= SEQUENCE {
sctpLookupRemIPAddrStartTime TimeStamp
}
sctpLookupRemIPAddrStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of SysUpTime at the time that this row was created.
As the table will be created after the sctpAssocTable
creation, this value could be equal to the sctpAssocStartTime
object from the main table."
::= { sctpLookupRemIPAddrEntry 1 }
-- 4.1 Conformance Information
sctpMibConformance OBJECT IDENTIFIER ::= { sctpMIB 2 }
sctpMibCompliances OBJECT IDENTIFIER ::= { sctpMibConformance 1 }
sctpMibGroups OBJECT IDENTIFIER ::= { sctpMibConformance 2 }
-- 4.1.1 Units of conformance
--
-- MODULE GROUPS
--
sctpLayerParamsGroup OBJECT-GROUP
OBJECTS { sctpRtoAlgorithm,
sctpRtoMin,
sctpRtoMax,
sctpRtoInitial,
sctpMaxAssocs,
sctpValCookieLife,
sctpMaxInitRetr
}
STATUS current
DESCRIPTION
"Common parameters for the SCTP layer, i.e., for all the
associations. They can usually be referred to as configuration
parameters."
::= { sctpMibGroups 1 }
sctpStatsGroup OBJECT-GROUP
OBJECTS { sctpCurrEstab,
sctpActiveEstabs,
sctpPassiveEstabs,
sctpAborteds,
sctpShutdowns,
sctpOutOfBlues,
sctpChecksumErrors,
sctpOutCtrlChunks,
sctpOutOrderChunks,
sctpOutUnorderChunks,
sctpInCtrlChunks,
sctpInOrderChunks,
sctpInUnorderChunks,
sctpFragUsrMsgs,
sctpReasmUsrMsgs,
sctpOutSCTPPacks,
sctpInSCTPPacks,
sctpDiscontinuityTime,
sctpAssocT1expireds,
sctpAssocT2expireds,
sctpAssocRtxChunks,
sctpAssocRemAddrRtx
}
STATUS current
DESCRIPTION
"Statistics group. It includes the objects to collect state
changes in the SCTP protocol local layer and flow control
statistics."
::= { sctpMibGroups 2 }
sctpPerAssocParamsGroup OBJECT-GROUP
OBJECTS { sctpAssocRemHostName,
sctpAssocLocalPort,
sctpAssocRemPort,
sctpAssocRemPrimAddrType,
sctpAssocRemPrimAddr,
sctpAssocHeartBeatInterval,
sctpAssocState,
sctpAssocInStreams,
sctpAssocOutStreams,
sctpAssocMaxRetr,
sctpAssocPrimProcess,
sctpAssocStartTime,
sctpAssocDiscontinuityTime,
sctpAssocLocalAddrStartTime,
sctpAssocRemAddrActive,
sctpAssocRemAddrHBActive,
sctpAssocRemAddrRTO,
sctpAssocRemAddrMaxPathRtx,
sctpAssocRemAddrStartTime
}
STATUS current
DESCRIPTION
"The SCTP group of objects to manage per-association
parameters. These variables include all the SCTP basic
features."
::= { sctpMibGroups 3 }
sctpPerAssocStatsGroup OBJECT-GROUP
OBJECTS
{ sctpAssocT1expireds,
sctpAssocT2expireds,
sctpAssocRtxChunks,
sctpAssocRemAddrRtx
}
STATUS current
DESCRIPTION
"Per Association Statistics group. It includes the objects to
collect flow control statistics per association."
::= { sctpMibGroups 4 }
sctpInverseGroup OBJECT-GROUP
OBJECTS { sctpLookupLocalPortStartTime,
sctpLookupRemPortStartTime,
sctpLookupRemHostNameStartTime,
sctpLookupRemPrimIPAddrStartTime,
sctpLookupRemIPAddrStartTime
}
STATUS current
DESCRIPTION
"Objects used in the inverse lookup tables."
::= { sctpMibGroups 5 }
-- 4.1.2 Compliance Statements
--
-- MODULE COMPLIANCES
--
sctpMibCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMP entities which implement
this SCTP MIB Module.
There are a number of INDEX objects that cannot be represented
in the form of OBJECT clauses in SMIv2, but for which we have
the following compliance requirements, expressed in OBJECT
clause form in this description clause:
-- OBJECT sctpAssocLocalAddrType
-- SYNTAX InetAddressType {ipv4(1), ipv6(2)}
-- DESCRIPTION
-- It is only required to have IPv4 and IPv6 addresses without
-- zone indices.
-- The address with zone indices is required if an
-- implementation can connect multiple zones.
--
-- OBJECT sctpAssocLocalAddr
-- SYNTAX InetAddress (SIZE(4|16))
-- DESCRIPTION
-- An implementation is only required to support globally
-- unique IPv4 and IPv6 addresses.
--
-- OBJECT sctpAssocRemAddrType
-- SYNTAX InetAddressType {ipv4(1), ipv6(2)}
-- DESCRIPTION
-- It is only required to have IPv4 and IPv6 addresses without
-- zone indices.
-- The address with zone indices is required if an
-- implementation can connect multiple zones.
--
-- OBJECT sctpAssocRemAddr
-- SYNTAX InetAddress (SIZE(4|16))
-- DESCRIPTION
-- An implementation is only required to support globally
-- unique IPv4 and IPv6 addresses.
--
" -- closes DESCRIPTION clause of MODULE-COMPLIANCE
MODULE -- this module
MANDATORY-GROUPS { sctpLayerParamsGroup,
sctpPerAssocParamsGroup,
sctpStatsGroup,
sctpPerAssocStatsGroup
}
OBJECT sctpAssocRemPrimAddrType
SYNTAX InetAddressType { ipv4(1),
ipv6(2)
}
DESCRIPTION
"It is only required to have IPv4 and IPv6 addresses
without zone indices.
The address with zone indices is required if an
implementation can connect multiple zones."
OBJECT sctpAssocRemPrimAddr
SYNTAX InetAddress (SIZE(4|16))
DESCRIPTION
"An implementation is only required to support globally
unique IPv4 and globally unique IPv6 addresses."
OBJECT sctpAssocState
WRITE-SYNTAX INTEGER { deleteTCB(9) }
MIN-ACCESS read-only
DESCRIPTION
"Only the deleteTCB(9) value MAY be set by a management
station at most. A read-only option is also considered to
be compliant with this MIB module description."
GROUP sctpInverseGroup
DESCRIPTION
"Objects used in inverse lookup tables. This should be
implemented, at the discretion of the implementers, for
easier lookups in the association tables"
::= { sctpMibCompliances 1 }
END
5. Compiling Notes π₯
Okay so when you compile the MIB module, you might spot warnings that look like these. They're totally normal, bestie, don't panic π
- warning: index of row `sctpAssocLocalAddrEntry' can exceed OID
size limit by 141 subidentifier(s)
- warning: index of row `sctpAssocRemAddrEntry' can exceed OID
size limit by 141 subidentifier(s)
- warning: index of row `sctpLookupRemHostNameEntry' can exceed
OID size limit by 140 subidentifier(s)
- warning: index of row `sctpLookupRemPrimIPAddrEntry' can exceed
OID size limit by 141 subidentifier(s)
- warning: index of row `sctpLookupRemIPAddrEntry' can exceed OID
size limit by 141 subidentifier(s)
So here's the tea π΅ these warnings happen because the row objects have index objects of type InetAddress or OCTET STRING, and those can be up to 255 octets. If that size limit were actually reached, the names of the column instances in those rows would blow past the 128 sub-identifier limit that current versions of SNMP have. The real size limits for the index objects are noted in the conceptual row DESCRIPTION clauses. For the InetAddress index objects, those limits won't be reached with any of the address types in current use β¨
6. References π
6.1. Normative References
okay bestie, these are the must-read docs the spec leans on πβ¨
[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.
[RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C., Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M., Zhang, L., and V. Paxson, "Stream Control Transmission Protocol", RFC 2960, October 2000. π¦
[RFC3291] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, "Textual Conventions for Internet Network Addresses", RFC 3291, May 2002.
[RFC3309] Stone, J., Stewart, R., and D. Otis, "Stream Control Transmission Protocol (SCTP) Checksum Change", RFC 3309, September 2002.
6.2. Informative References
these ones are more like the extra reading list. good for going deeper, not required to get the core idea π§
[RFC1213] McCloghrie, K. and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets:MIB-II", STD 17, RFC 1213, March 1991.
[RFC2012] McCloghrie, K., "SNMPv2 Management Information Base for the Transmission Control Protocol using SMIv2", RFC 2012, November 1996.
[RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
[VANJ] Jacobson, V., "Congestion Avoidance and Control", SIGCOMM 1988, Stanford, California.
[IPv6ARCH] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., Onoe, A., and B. Zill, "IPv6 Scoped Address Architecture", Work in Progress, December 2002.
[sctpImplem] Stewart, R., Ong, L., Arias-Rodriguez, I., Caro, A., and M. Tuexen, "Stream Control Transmission Protocol (SCTP) Implementers Guide", Work in Progress, January 2002.
[TCPMIB] Fenner, B., McCloghrie, K., Raghunarayan, R., and J. Schoenwalder, "Management Information Base for the Transmission Control Protocol (TCP)", Work in Progress, November 2002.
[UDPMIB] Fenner, B., "Management Information Base for User Datagram Protocol (UDP)", Work in Progress, June 2002.
[MIBGUIDE] Heard, C.M., "Guidelines for MIB Authors and Reviewers", Work in Progress, February 2003.
7. Security Considerations
okay this section is the serious one, so pay attention ππ some objects in this MIB are read-write or read-create, and that means they can be changed or made. those are sensitive or vulnerable in some networks, and SET operations in a non-secure setup without proper protection can seriously mess with network operations. here are the tables and objects and how sensitive they are:
- The
sctpAssocStateobject has aMAX-ACCESSclause ofread-write, which allows termination of an arbitrary connection. Unauthorized access could cause a denial of service. π¨
some of the readable objects here (anything with a MAX-ACCESS other than not-accessible) can also be sensitive or vulnerable in some environments. so it's important to control even GET and/or NOTIFY access to them, and possibly even encrypt their values when they're sent over the network via SNMP. here's the breakdown:
- The
sctpAssocTable,sctpAssocLocalAddressTable,sctpAssocRemAddressTableand the lookup tables contain objects providing information on the active associations on the device, local and peer's IP addresses, the status of these associations and the associated processes. This information may be used by an attacker to launch attacks against known/unknown weakness in certain protocols/applications. - The
sctpAssocTablecontains objects providing information on local and remote ports objects, that can be used to identify what ports are open on the machine and can thus suggest what attacks are likely to succeed, without the attacker having to run a port scanner. π
SNMP versions prior to SNMPv3 did not include adequate security. even if the network itself is secure (for example by using IPSec), there is 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. no cap, that's a big deal.
It is RECOMMENDED that implementers consider the security features as provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy). π
Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It is then a customer/operator responsibility to ensure that the SNMP entity giving access to an instance of this MIB module is properly configured to give access to the objects only to those principals (users) that have legitimate rights to indeed GET or SET (change/create/delete) them. main character energy here is locking the door πͺπ
The above objects also have privacy implications, i.e., they disclose who is connecting to what hosts. These are sensitive from a perspective of preventing traffic analysis, and also to protect individual privacy. literally everyone's connections are private stuff, so treat them that way π«Ά
8. Acknowledgments
shoutout to the people who gave their invaluable comments πβ¨ Juergen Schoenwaelder, David Partain, Shawn A. Routhier, Ed Yarwood, John Linton, Shyamal Prasad, Juan-Francisco Martin, Dave Thaler, and Bert Wijnen. the whole team is iconic π
9. Authors' Addresses
the people behind it, with their contact info π
Javier Pastor-Balbas
Ericsson Espana S.A.
Network Signaling System Management
Via de los Poblados 13
Madrid, 28033
Spain
Phone: +34-91-339-1397
EMail: J.Javier.Pastor@ericsson.com
Maria-Carmen Belinchon
Ericsson Espana S.A.
Network Signaling System Management
Via de los Poblados 13
Madrid, 28033
Spain
Phone: +34-91-339-3535
EMail: maria.carmen.belinchon@ericsson.com
10. Full Copyright Statement
Copyright (C) The Internet Society (2004).
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/S HE 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. the legal stuff is a lot, but the vibe is "no promises, use at your own risk" π
Intellectual Property
the IETF takes no position on 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 here, or on whether any license under such rights might or might not be available. it also doesn't claim to have made any independent effort to identify those rights. info on the IETF's procedures for rights in IETF Documents is in BCP 78 and BCP 79. π§Ύ
copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt to get a general license or permission for implementers or users to use those proprietary rights can be found in 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 required to implement this standard. send that info to the IETF at ietf-ipr@ietf.org. π
Acknowledgement
funding for the RFC Editor function is currently provided by the Internet Society. thank you to them, bestie ππ
π¦ where this page comes from
- ietf: rfc3873 2004-09
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms