RFC 1289
DECnet Phase IV MIB Extensions
RFC 1289: DECnet Phase IV MIB Extensions ๐
okay bestie, this is the one where DECnet Phase IV gets its own MIB so IP network managers can keep track of it too ๐
- RFC: 1289
- Title: DECnet Phase IV MIB Extensions
- Author: J. Saperia, Digital Equipment Corporation
- Date: December 1991
- Status: IAB standards track protocol ๐ฆ
Status of This Memo โจ
so this memo is an extension to the SNMP MIB ๐ง it's officially an IAB standards track protocol for the Internet community, and it's literally asking everyone to chime in with discussion and suggestions for improvements ๐ซถ for the current standardization state, go check the "IAB Official Protocol Standards" doc because that's the source of truth. and yes, distribution of this memo is unlimited, so share away ๐
Table of Contents ๐ธ
Abstract.......................................................... 1
1. Introduction................................................... 1
2. Selected Objects............................................... 2
3. Objects........................................................ 3
3.1 Format of Definitions......................................... 3
3.2 Textual Conventions........................................... 4
4. Object Definitions............................................. 4
5. Acknowledgements............................................... 63
6. References..................................................... 63
7. Security Considerations........................................ 64
8. Author's Address............................................... 64
Abstract ๐ฅ
okay so this memo defines a set of DECnet Phase IV extensions made for the Internet MIB ๐ when you use them together with the structure of management information (RFC 1155), the management information base for TCP/IP-based internets (RFC 1213), and the Simple Network Management Protocol (RFC 1157), you can get integrated network management of combined TCP/IP and DECnet Phase IV internets. it's giving teamwork ๐คโจ this document was produced by the DECnet Phase IV MIB working group of the Internet Engineering Task Force (IETF) ๐
1. Introduction ๐ฆ
so once SNMP (RFC 1157), the MIB for TCP/IP-based internets (RFC 1213), and the SMI (RFC 1155) got adopted by the Internet, and loads of vendors shipped products using them, managers could finally do way better network management in TCP/IP internets ๐ as these standards got more popular, network managers wanted the same setup to handle multi-protocol networks too, obsessed with that idea honestly ๐ญ
DECnet Phase IV is a widely used protocol that often lives alongside IP in the same internets ๐ this memo explains how IP-based management stations can manage DECnet Phase IV systems, especially router products, in one integrated way using the standard Internet SMI, MIB and Simple Network Management Protocol ๐
the DECnet Phase IV objects were defined to work with the Internet MIB, so the Internet community can access and control them ๐ this document does not cover other DECnet-based protocols like RBMS (remote bridge management software) or other Digital Equipment Corporation Specific Hardware platforms. those are a different story ๐
2. Selected Objects ๐ง
the objects in this memo come from the DIGITAL Network Architecture Network Management Functional Specification Version 4.0.0, dated July 1983 ๐ the authors tried to put the variables into a reasonable order by grouping them. the groups are:
- System Group
- Network Management Group
- Session Group
- End Group
- Routing Group
- Circuit Group
- DDCMP Group
- DDCMP Multipoint Control Group
- Ethernet Group
- Counters Group
- Adjacency Group
- Line Group
- Non Broadcast Line Group
- Area Group
they also kept the original syntax of each object wherever they could ๐ for example, the DECnet Phase IV object Executor State started out as a NICE (Network Information and Control Exchange) data type, which was a coded single-field object 1 byte long. when it moved into the Internet MIB using the Internet SMI, it became an enumerated integer โจ
3. Objects ๐
all objects in this memo are described using the standard Internet SMI and BER from RFC 1155 ๐ธ a full object description includes its name, syntax and encoding. like the objects in RFC 1156, each object name is identified by an administratively assigned object identifier. that identifies an Object Type, and once you pair an object type with a specific instance, you've got a uniquely identified object ๐ฅ
object descriptors in this memo follow RFC 1156, so they're text strings meant for humans to read ๐ซถ the descriptors come from that same DIGITAL Network Architecture Network Management Functional Specification Version 4.0.0 (July 1983), which defined the DECnet Phase IV objects. then they got tweaked to match the object type names in the standard Internet MIB as closely as possible ๐ the object definition info also comes straight from that spec wherever possible.
one thing to note: in this document, EXECUTOR refers only to the DECnet software. it isn't meant to affect any other protocols running on the system ๐
3.1 Format of Definitions ๐
every object in this memo has five fields: Object, Syntax, Definition, Access, and Status ๐ฆ
- OBJECT is a textual name (the OBJECT DESCRIPTOR) for the object type, combined with an administratively obtained OBJECT IDENTIFIER.
- SYNTAX gives the object type's abstract syntax, written in the ASN.1 from RFC 1155.
- DEFINITION is a general description of the object type. It explains the object's original purpose in the DECnet Phase IV environment so everyone reads the info the same way. Format changes made to fit RFC 1155 are noted here too ๐
- ACCESS uses the standard access keywords from RFC 1156. This MIB uses read-only, read-write, and not-accessible ๐
- STATUS uses one keyword to say whether the object type is mandatory or optional. The obsolete and deprecated keywords aren't used here, since this is the first version of the DECnet Phase IV MIB ๐ง
3.2 Textual Conventions ๐
this DECnet Phase IV MIB adds some new datatypes as textual conventions ๐ they're there to make the new objects easier to understand. no changes to the SMI or SNMP are needed to support them. they're described in 4.0 (Object Definitions) ๐
4. Object Definitions โจ
time for the actual MIB ๐ฅ here's the start of it, verbatim:
RFC1289-phivMIB
DEFINITIONS ::= BEGIN
IMPORTS
Gauge
FROM RFC1155-SMI
OBJECT-TYPE
FROM RFC-1212
mib-2, DisplayString
FROM RFC1213-MIB;
-- DECNet Phase-IV MIB
phiv OBJECT IDENTIFIER ::= { mib-2 18 }
-- textual conventions
PhivAddr ::= OCTET STRING (SIZE (2))
-- This data type is intended as a short word representation of
-- standard DECnet Phase IV addresses. DECnet addresses are
-- hierarchically structured numbers assigned to a particular
-- DECnet node. The address is structured so that the area
-- number is contained in the most significant 6 bits of the
-- first octet. The next 2 bits of the first octet contain
-- the first two bits of the host address. The remainder of
-- the host address is contained in the second octet.
PhivCounter ::= INTEGER
-- This data type has been created for DECnet counters. These
-- counters latch at their maximum specified value until either
-- the system is restared, or they are reset to zero by the user
-- or management software.
-- groups in the decnetiv mib
phivSystem OBJECT IDENTIFIER ::= { phiv 1 }
phivManagement OBJECT IDENTIFIER ::= { phiv 2 }
session OBJECT IDENTIFIER ::= { phiv 3 }
end OBJECT IDENTIFIER ::= { phiv 4 }
routing OBJECT IDENTIFIER ::= { phiv 5 }
circuit OBJECT IDENTIFIER ::= { phiv 6 }
ddcmp OBJECT IDENTIFIER ::= { phiv 7 }
control OBJECT IDENTIFIER ::= { phiv 8 }
ethernet OBJECT IDENTIFIER ::= { phiv 9 }
counters OBJECT IDENTIFIER ::= { phiv 10 }
adjacency OBJECT IDENTIFIER ::= { phiv 11 }
line OBJECT IDENTIFIER ::= { phiv 12 }
nonBroadcastLine OBJECT IDENTIFIER ::= { phiv 14 }
area OBJECT IDENTIFIER ::= { phiv 15 }
-- System Group
-- The implementation of the System Group is mandatory for
-- all systems.
phivSystemState OBJECT-TYPE
SYNTAX INTEGER {
on (1),
off (2),
shut (3),
restricted (4)
}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This represents the operational state of the executor
node.
The possible states are:
ON Allows logical links.
OFF Allows no new links, terminates existing
links, and stops routing traffic through.
SHUT Allows no new logical links, does not
destroy existing logical links, and goes
to the OFF state when all logical links are
gone.
RESTRICTED Allows no new incoming logical links from
other nodes.
NOTE: These values are incremented by one compared to
the standard DECnet values in order to maintain
compliance with RFC 1155)."
::= { phivSystem 1 }
phivExecIdent OBJECT-TYPE
SYNTAX DisplayString ( SIZE (0..32) )
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This is a text string that describes the executor node
(for example, 'Research Lab'). The string is up to 32
characters of any type."
::= { phivSystem 2 }
-- Network Management Group
-- The implementation of the Network Management Group is
-- mandatory for all systems which contain a DECnet style
-- management version.
that's the first chunk of the MIB, bestie! ๐ง the MIB keeps going from here, so stay tuned for the next part ๐
Okay bestie, this is where the MIB objects really start getting good ๐ First up is the management version, which is basically the node's version ID card ๐
phivMgmtMgmtVers OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..255) )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This is the read-only Network Management Version,
consisting of the version number, the Engineering
Change Order (ECO) number, and the user ECO number
(for example, 3.0.0). This parameter applies to the
executor node only."
::= { phivManagement 1 }
-- Session Layer Group
-- The implementation of the Session Layer Group is mandatory for
-- all systems that implement session layer communications.
phivSessionSystemName OBJECT-TYPE
SYNTAX DisplayString ( SIZE (0..6) )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Name to be associated with the node identification.
Only one name can be assigned to a node address or a
circuit identification. No name should be used more than
once in a DECnet network. Node-name is one to six upper
case alphanumeric characters with at least one alpha
character. A length of 0 indicates no name."
::= { session 1 }
phivSessionInTimer OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the maximum duration between the
time a connect is received for a process at the
executor node and the time that process accepts or
rejects it. If the connect is not accepted or rejected
by the user within the number of seconds specified,
Session Control rejects it for the user. A 0
indicates no timer is running."
::= { session 2 }
phivSessionOutTimer OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the duration between the time the
executor requests a connect and the time that connect is
acknowledged by the destination node. If the connect is
not acknowledged within the number of seconds
specified, Session Control returns an error. A 0
indicates no timer is running."
::= { session 3 }
-- End Communication Layer Group
-- The implementation of the End Communication Layer Group is
-- mandatory for all systems that implement end layer
-- communications.
-- Remote State Table
phivEndRemoteTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivEndRemoteEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about the state of sessions between the
node under study and the nodes found in the table."
::= { end 1 }
phivEndRemoteEntry OBJECT-TYPE
SYNTAX PhivEndRemoteEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about a particular remote node as seen
from the end communication layer."
INDEX { phivEndRemoteHostNodeID }
::= { phivEndRemoteTable 1 }
PhivEndRemoteEntry ::=
SEQUENCE {
phivEndRemoteHostNodeID
PhivAddr,
phivEndRemoteState
INTEGER,
phivEndCircuitIndex
INTEGER,
phivEndActiveLinks
INTEGER,
phivEndDelay
INTEGER (0..65535)
}
phivEndRemoteHostNodeID OBJECT-TYPE
SYNTAX PhivAddr -- OCTET STRING (SIZE (2))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value is the address of the remote node to be
evaluated."
::= { phivEndRemoteEntry 1 }
phivEndRemoteState OBJECT-TYPE
SYNTAX INTEGER {
on (1),
off (2),
shut (3),
restricted (4)
}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This represents the operational state of the remote node
being evaluated.
The possible states are:
ON Allows logical links.
OFF Allows no new links, terminates existing
links, and stops routing traffic through.
SHUT Allows no new logical links, does not
destroy existing logical links, and goes
to the OFF state when all logical links are
gone.
RESTRICTED Allows no new incoming logical links from
other nodes.
NOTE: These values are incremented by one compared to
the standard DECnet values in order to maintain
compliance with RFC 1155."
::= { phivEndRemoteEntry 2 }
phivEndCircuitIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A unique index value for each known circuit used to
communicate with the remote node. This is the same
value as phivCircuitIndex."
::= { phivEndRemoteEntry 3 }
phivEndActiveLinks OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This read-only parameter represents the number of active
logical links from the executor to the destination node."
::= { phivEndRemoteEntry 4 }
phivEndDelay OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This read-only parameter is the average round trip
delay in seconds to the destination node. This
parameter is kept on a remote node basis."
::= { phivEndRemoteEntry 5 }
-- End System Counter Table
phivEndCountTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivEndCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about the counters associated with each end
system that is known to the entity. These counters
reflect totals from the perspective of the executor
node."
::= { end 2 }
phivEndCountEntry OBJECT-TYPE
SYNTAX PhivEndCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about a particular session between two end
systems."
INDEX { phivEndCountHostNodeID }
::= { phivEndCountTable 1 }
PhivEndCountEntry ::=
SEQUENCE {
phivEndCountHostNodeID
PhivAddr,
phivEndCountSecsLastZeroed
PhivCounter (0..65535),
phivEndCountUsrBytesRec
PhivCounter,
phivEndCountUsrBytesSent
PhivCounter,
phivEndUCountUsrMessRec
PhivCounter,
phivEndCountUsrMessSent
PhivCounter,
phivEndCountTotalBytesRec
PhivCounter,
phivEndCountTotalBytesSent
PhivCounter,
phivEndCountTotalMessRec
PhivCounter,
phivEndCountTotalMessSent
PhivCounter,
phivEndCountConnectsRecd
PhivCounter (0..65535),
phivEndCountConnectsSent
PhivCounter (0..65535),
phivEndCountReponseTimeouts
PhivCounter (0..65535),
phivEndCountRecdConnectResErrs
PhivCounter (0..65535)
}
phivEndCountHostNodeID OBJECT-TYPE
SYNTAX PhivAddr -- OCTET STRING (SIZE (2))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value is the address of the remote node to be
evaluated."
::= { phivEndCountEntry 1 }
phivEndCountSecsLastZeroed OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value is the number of seconds that have elapsed
since the counters for the node in this table row were
last set to zero. This counter is located in the
network management layer, but is returned with the
end system information which follows."
::= { phivEndCountEntry 2 }
phivEndCountUsrBytesRec OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of user bytes received from the target host."
::= { phivEndCountEntry 3 }
phivEndCountUsrBytesSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of user bytes sent to the target host."
::= { phivEndCountEntry 4 }
phivEndUCountUsrMessRec OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of user messages received from the target host."
::= { phivEndCountEntry 5 }
phivEndCountUsrMessSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of user messages sent to the target host."
::= { phivEndCountEntry 6 }
phivEndCountTotalBytesRec OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of bytes received from the target host."
::= { phivEndCountEntry 7 }
phivEndCountTotalBytesSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of bytes sent to the target host."
::= { phivEndCountEntry 8 }
phivEndCountTotalMessRec OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of messages received from the target host."
::= { phivEndCountEntry 9 }
phivEndCountTotalMessSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of messages sent to the target host."
::= { phivEndCountEntry 10 }
phivEndCountConnectsRecd OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of connects received from the target host."
::= { phivEndCountEntry 11 }
phivEndCountConnectsSent OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of connects sent to the target host."
::= {phivEndCountEntry 12 }
phivEndCountReponseTimeouts OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of response timeouts."
::= { phivEndCountEntry 13 }
phivEndCountRecdConnectResErrs OBJECT-TYPE SYNTAX PhivCounter (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "Number of received connect resource errors." ::= {phivEndCountEntry 14 }
-- additional End System objects
phivEndMaxLinks OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum active logical link count allowed for the executor." ::= { end 3 }
phivEndNSPVers OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255) ) ACCESS read-only STATUS mandatory DESCRIPTION "This read-only parameter represents the version number of the node End Communication S/W. The format is version number, ECO, and user ECO, e.g., 4.1.0" ::= { end 4 }
phivEndRetransmitFactor OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum number of times the source End Communication at the executor node will restart the retransmission timer when it expires. If the number is exceeded, Session Control disconnects the logical link for the user." ::= { end 5 }
phivEndDelayFact OBJECT-TYPE SYNTAX INTEGER (1..255) ACCESS read-write STATUS mandatory DESCRIPTION "This is the number by which to multiply one sixteenth of the estimated round trip delay to a node to set the retransmission timer to that node." ::= { end 6 }
phivEndDelayWeight OBJECT-TYPE SYNTAX INTEGER (1..255) ACCESS read-write STATUS mandatory DESCRIPTION "This number represents the weight to apply to a current round trip delay estimate to a remote node when updating the estimated round trip delay to a node. On some systems the number must be 1 less than a power of 2 for computational efficiency." ::= { end 7 }
phivEndInactivityTimer OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum duration of inactivity (no data in either direction) on a logical link before the node checks to see if the logical link still works.
If no activity occurs within the minimum number of seconds, End Communication generates artificial traffic to test the link (End Communication specification)." ::= { end 8 }
phivEndCountZeroCount OBJECT-TYPE SYNTAX INTEGER { other (1), reset (2) } ACCESS read-write STATUS mandatory DESCRIPTION "When this value is set to 2, all of the counters in the End System Counter Table are set to zero." ::= { end 9 }
phivEndMaxLinksActive OBJECT-TYPE SYNTAX PhivCounter (0..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the high water mark for the number of links that were active at any one time." ::= { end 10 }
-- Routing Layer Group
-- The implementation of the Routing Layer Group is mandatory for -- all systems that implement level 1 routing layer -- communications.
phivRouteBroadcastRouteTimer OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value determines the maximum time in seconds allowed between Routing updates on Ethernet circuits. When this timer expired before a routing update occurs, a routing update is forced. With a standard calculation, Routing also uses this timer to enforce a minimum delay between routing updates." ::= { routing 1 }
phivRouteBuffSize OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This parameter value determines the maximum size of a Routing message. It therefore determines the maximum size message that can be forwarded. This size includes protocol overhead down to and including the End Communication layer, plus a constant value of 6. (This value of 6 is included to provide compatibility with the parameter definition in Phase III, which included the Routing overhead.) It does not include Routing or Data link overhead (except for the constant value of 6). There is one buffer size for all circuits.
NOTE: The BUFFER SIZE defines the maximum size messages that the Routing layer can forward. The SEGMENT BUFFER SIZE (defined below) defines the maximum size messages that the End Communication layer can transmit or receive. The SEGMENT BUFFER SIZE is always less than or equal to the BUFFER SIZE. Normally the two parameters will be equal. They may be different to allow the network manager to alter buffer sizes on all nodes without interruption of service. They both include an extra 6 bytes for compatibility with Phase III." ::= { routing 2 }
phivRouteRoutingVers OBJECT-TYPE SYNTAX DisplayString ( SIZE (0..255) ) ACCESS read-only STATUS mandatory DESCRIPTION "This read-only parameter identifies the executor node's Routing version number. The format is version number, ECO, and user ECO, e.g., 4.1.0" ::= { routing 3 }
phivRouteMaxAddr OBJECT-TYPE SYNTAX INTEGER (1..1023) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the largest node number and, therefore, number of nodes that can be known about by the executor node's home area." ::= { routing 4 }
phivRouteMaxBdcastNonRouters OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum total number of nonrouters the executor node can have on its Ethernet circuits." ::= { routing 5 }
phivRouteMaxBdcastRouters OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum total number of routers the executor node can have on its Ethernet circuits." ::= { routing 6 }
phivRouteMaxBuffs OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum number of transmit buffers that Routing may use for all circuits." ::= { routing 7 }
phivRouteMaxCircuits OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum number of Routing circuits that the executor node can know about." ::= { routing 8 }
phivRouteMaxCost OBJECT-TYPE SYNTAX INTEGER (1..1022) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum total path cost allowed from the executor to any node within an area. The path cost is the sum of the circuit costs along a path between two nodes. This parameter defines the point where the executor node's Routing routing decision algorithm declares another node unreachable because the cost of the least costly path to the other node is excessive. For correct operation, this parameter must not be less than the maximum path cost of the network." ::= { routing 9 }
phivRouteMaxHops OBJECT-TYPE SYNTAX INTEGER (1..30) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum number of routing hops allowable from the executor to any other reachable node within an area. (A hop is the logical distance over a circuit between two adjacent nodes.) This parameter defines the point where the executor node's Routing routing decision algorithm declares another node unreachable because the length of the shortest path between the two nodes is too long. For correct operation, this parameter must not be less than the network diameter. (The network diameter is the reachability distance between the two nodes of the network having the greatest reachability distance, where reachability distance is the length the shortest path between a given pair of nodes.)" ::= { routing 10 }
phivRouteMaxVisits OBJECT-TYPE SYNTAX INTEGER (1..63) ACCESS read-write STATUS mandatory DESCRIPTION "This value represents the maximum number of nodes a message coming into the executor node can have visited. If the message is not for this node and the MAXIMUM VISITS number is exceeded, the message is discarded. The MAXIMUM VISITS parameter defines the point where the packet lifetime control algorithm discards a packet that has traversed too many nodes. For correct operation, this parameter must not be less than the maximum path length of the network. (The maximum path length is the routing distance between the two nodes of the network having the greatest routing distance, where routing distance is the length of the least costly path between a given pair of nodes.)" ::= { routing 11 }
phivRouteRoutingTimer OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This value determines the maximum time in seconds allowed between Routing updates on non-Ethernet circuits. When this timer expires before a routing update occurs, a routing update is forced." ::= { routing 12 }
Alright bestie, the routing segment size and node type are up first, then the counters that track all the ways packets can go missing ๐ซ
phivRouteSegBuffSize OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This parameter value determines the maximum size of an
end-to-end segment. The size is a decimal integer in
the range 1-65535. This size is in bytes. This size
includes protocol overhead down to and including the
End Communication layer, plus a constant value of 6.
(This value of 6 is included to provide compatibility
with the BUFFER SIZE parameter definition.) It does not
include Routing or Data link overhead (except for the
constant value of 6)."
::= { routing 13 }
Okay so phivRouteSegBuffSize is the max size of an end-to-end segment ๐ It's a decimal integer from 1 to 65535, counted in bytes. The +6 is there for compatibility with the BUFFER SIZE thing, and routing or data link overhead doesn't get counted (except that +6) โจ
phivRouteType OBJECT-TYPE
SYNTAXINTEGER {
routing-III (1),
nonrouting-III (2),
area (3),
routing-IV (4),
nonrouting-IV (5)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This parameter indicates the type of the executor
node. The node-type is one of the following:
routing-III
nonrouting-III
routing-IV
ronrouting-IV
area
A routing node has full routing capability. A
nonrouting node contains a subset of the Routing
routing modules. The III and IV indicate the DNA
phase of the node. Nonrouting nodes can deliver
and receive packets to and from any node, but cannot
route packets from other nodes through to other nodes.
An area node routes between areas. Refer to the Routing
specification for details.
For adjacent nodes, this is a read-only parameter that
indicates the type of the reachable adjacent node.
NOTE: The ROUTING-III and NONROUTING-III values are
incremented by one compared to the standard DECnet
values in order to maintain compliance with RFC 1155)"
::= { routing 14 }
So phivRouteType tells you what kind of node the executor is ๐
Routing nodes are the full-capability ones, nonrouting nodes can send and receive packets to and from anyone but won't pass other nodes' traffic along, and area nodes route between areas ๐ฆ Adjacent nodes get the same read-only info about their neighbours. The III and IV are the DNA phase. Also, the III values are one higher than standard DECnet, which is done to stay compliant with RFC 1155 ๐
phivRouteCountAgedPktLoss OBJECT-TYPE
SYNTAX PhivCounter (0..127)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of aged packet losses."
::= { routing 15 }
phivRouteCountNodeUnrPktLoss OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of node unreachable packet losses."
::= { routing 16 }
phivRouteCountOutRngePktLoss OBJECT-TYPE
SYNTAX PhivCounter (0..127)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of node out-of-range packet losses."
::= { routing 17 }
phivRouteCountOverSzePktLoss OBJECT-TYPE
SYNTAX PhivCounter (0..127)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of Oversized packet losses."
::= { routing 18 }
phivRouteCountPacketFmtErr OBJECT-TYPE
SYNTAX PhivCounter (0..127)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of packet format errors."
::= { routing 19 }
phivRouteCountPtlRteUpdtLoss OBJECT-TYPE
SYNTAX PhivCounter (0..127)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of partial routing update losses."
::= { routing 20 }
phivRouteCountVerifReject OBJECT-TYPE
SYNTAX PhivCounter (0..127)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of verification rejects."
::= { routing 21 }
Now the counters ๐ฅบ They're all read-only and they're basically the tally of every packet that got lost, and why ๐ There's aged packet losses, node unreachable, node out-of-range, oversized, packet format errors, partial routing update losses, and verification rejects. Each one has its own PhivCounter range, so keep an eye on those numbers ๐
-- Level 1 Routing Table
phivLevel1RouteTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivLevel1RouteEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about the currently known DECnet Phase
IV Routes."
::= { routing 22 }
phivLevel1RouteEntry OBJECT-TYPE
SYNTAX PhivLevel1RouteEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about the currently known DECnet Phase
IV Routes."
INDEX { phivLevel1RouteNodeAddr }
::= { phivLevel1RouteTable 1 }
PhivLevel1RouteEntry ::=
SEQUENCE {
phivLevel1RouteNodeAddr
PhivAddr,
phivLevel1RouteCircuitIndex
INTEGER,
phivLevel1RouteCost
INTEGER (0..65535),
phivLevel1RouteHops
INTEGER (0..127),
phivLevel1RouteNextNode
PhivAddr
}
phivLevel1RouteNodeAddr OBJECT-TYPE
SYNTAX PhivAddr -- OCTET STRING (SIZE (2))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value is the address of the node about which
routing information is contained in this level 1
routing table."
::= { phivLevel1RouteEntry 1 }
phivLevel1RouteCircuitIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A unique index value for each known circuit. This is
the index to the circuit state table and is the same
value as phivCircuitIndex."
::= { phivLevel1RouteEntry 2 }
phivLevel1RouteCost OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This read-only parameter represents the total cost
over the current path to the destination node. Cost is
a positive integer value associated with using a
circuit. Routing routes messages (data) along the path
between two nodes with the smallest cost. COST is kept
on a remote node basis."
::= { phivLevel1RouteEntry 3 }
phivLevel1RouteHops OBJECT-TYPE
SYNTAX INTEGER (0..127)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This read-only parameter represents the number of hops
over to a destination node. A hop is Routing value
representing the logical distance between two nodes in
a network. HOPS is kept on a remote node basis."
::= { phivLevel1RouteEntry 4 }
phivLevel1RouteNextNode OBJECT-TYPE
SYNTAX PhivAddr -- OCTET STRING (SIZE (2))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This read-only value indicates the next node on the
circuit used to get to the node under scrutiny
(next hop)."
::= { phivLevel1RouteEntry 5 }
Level 1 routing table time ๐บ๏ธ This is the info on every DECnet Phase IV route the node currently knows about, indexed by node address โจ Each row has the cost (the total over the current path, and the smaller the better, since routing picks the cheapest path), the hops, the circuit index that matches phivCircuitIndex, and the next node on the way there ๐
-- Additional routing parameters
phivRouteCountZeroCount OBJECT-TYPE
SYNTAX INTEGER {
other (1),
reset (2)
}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"When this value is set to 2, the following objects are
set to Zero: phivRouteCountAgedPktLoss,
phivRouteCountNodeUnrPktLoss,
phivRouteCountOutRngePktLoss,
phivRouteCountOverSzePktLoss,
phivRouteCountPacketFmtErr,
phivRouteCountPtlRteUpdtLoss, and
phivRouteCountVerifReject."
::= { routing 23 }
phivRouteSystemAddr OBJECT-TYPE
SYNTAX PhivAddr
ACCESS read-only
STATUS mandatory
DESCRIPTION
"DECnet Phase IV node address."
::= { routing 24 }
-- Circuit Group
-- The implementation of the Circuit Group is mandatory for
-- all systems.
-- Circuit Parameters Table
phivCircuitParametersTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivCircuitParametersEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about the parameters associated with all
circuits currently known."
::= {circuit 1 }
phivCircuitParametersEntry OBJECT-TYPE
SYNTAX PhivCircuitParametersEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Parameters information about all circuits currently
known."
INDEX { phivCircuitIndex }
::= { phivCircuitParametersTable 1 }
PhivCircuitParametersEntry ::=
SEQUENCE {
phivCircuitIndex
INTEGER,
phivCircuitLineIndex
INTEGER,
phivCircuitCommonState
INTEGER,
phivCircuitCommonSubState
INTEGER,
phivCircuitCommonName
DisplayString,
phivCircuitExecRecallTimer
INTEGER (0..65535),
phivCircuitCommonType
INTEGER,
phivCircuitService
INTEGER,
phivCircuitExecCost
INTEGER (1..25),
phivCircuitExecHelloTimer
INTEGER (1..8191)
}
phivCircuitIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A unique index value for each known circuit."
::= { phivCircuitParametersEntry 1 }
phivCircuitLineIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The line on which this circuit is active. This is
the same as the IfIndex."
::= { phivCircuitParametersEntry 2 }
phivCircuitCommonState OBJECT-TYPE
SYNTAX INTEGER {
on (1),
off (2),
service (3),
cleared (4)
}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the circuit's Network Management
operational state. NOTE: These values are incremented
by one compared to the standard DECnet values in order
to maintain compliance with RFC 1155."
::= { phivCircuitParametersEntry 3 }
phivCircuitCommonSubState OBJECT-TYPE
SYNTAX INTEGER {
starting (1),
reflecting (2),
looping (3),
loading (4),
dumping (5),
triggering (6),
autoservice (7),
autoloading (8),
autodumping (9),
autotriggering (10),
synchronizing (11),
failed (12),
running (13)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the circuit's Network Management
operational and service substate. NOTE: These values are
incremented by one compared to the standard DECnet values
in order to maintain compliance with RFC 1155."
::= { phivCircuitParametersEntry 4 }
A few more bits to wrap up: phivRouteCountZeroCount lets you reset those counters back to zero when it's set to 2, and phivRouteSystemAddr is the node's own DECnet Phase IV address ๐ซถ Then we get into the Circuit Group, which has to be implemented on every system ๐ The circuit parameters table covers all the circuits currently known, and each entry holds the index, line index, state and substate, plus the other settings listed above ๐ธ
okay so we're picking up right where the circuit parameters get extra juicy ๐ first up is the name tag for each circuit, and then the timers and types rolling in ๐ฆ
phivCircuitCommonName OBJECT-TYPE
SYNTAX DisplayString ( SIZE (0..16) )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The name of the circuit entry in the table, for example,
SVA-0 or in a level 2 router ASYNC-8 or ETHER-1)."
::= { phivCircuitParametersEntry 5 }
phivCircuitExecRecallTimer OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This parameter represents the minimum number of
seconds to wait before restarting the circuit. A
value of 0 indicates not timer is running."
::= { phivCircuitParametersEntry 6 }
phivCircuitCommonType OBJECT-TYPE
SYNTAX INTEGER {
ddcmp-point (1),
ddcmp-control (2),
ddcmp-tributary (3),
x25 (4),
ddcmp-dmc (5),
ethernet (6),
ci (7),
qp2-dte20 (8),
bisync (9),
other (14),
fddi (15)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Represents the type of the circuit. For X.25 circuits,
the value must be set to X25. For DDCMP and Ethernet
circuits it is read only and is the same value as the
protocol of the associated line.
NOTE: Values 1 - 5 are incremented by one compared to the
standard DECnet values in order to maintain compliance
with RFC 1155."
::= { phivCircuitParametersEntry 7 }
the common type one is a big deal ngl ๐ซถ X.25 circuits have to be set to X25, and for DDCMP and Ethernet it's read only and matches the protocol of the line it's attached to ๐ธ there's also a little note that values 1 - 5 got bumped up by one from the standard DECnet numbers so they stay compliant with RFC 1155 ๐
phivCircuitService OBJECT-TYPE
SYNTAX INTEGER {
enabled (1),
disabled (2)
}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value indicates whether or not Network Management
allows service operations on a circuit. The values for
service-control are as follows:
ENABLED SERVICE state and/or service functions are
allowed.
DISABLED SERVICE state and/or service functions are not
allowed.
NOTE: These values are incremented by one compared to the
standard DECnet values in order to maintain compliance
with RFC 1155."
::= { phivCircuitParametersEntry 8 }
phivCircuitExecCost OBJECT-TYPE
SYNTAX INTEGER (1..25)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the routing cost of the circuit.
Routing sends messages along the path between two nodes
having the smallest cost."
::= { phivCircuitParametersEntry 9 }
phivCircuitExecHelloTimer OBJECT-TYPE
SYNTAX INTEGER (1..8191)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value determines the frequency of Routing Hello
messages sent to the adjacent node on the circuit."
::= { phivCircuitParametersEntry 10 }
the service object is the on/off switch for Network Management ๐ฅ it's enabled (1) or disabled (2), and the same +1 DECnet shift note from before shows up here too ๐ the cost object is a routing cost from 1 to 25, and routing picks the path with the smallest cost between two nodes ๐ง the hello timer controls how often Routing Hello messages go out to the adjacent node on the circuit โจ
-- Circuit Counters Table
phivCircuitCountTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivCircuitCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about the counters associated with all
circuits currently known."
::= { circuit 2 }
phivCircuitCountEntry OBJECT-TYPE
SYNTAX PhivCircuitCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Counter information about all circuits currently known"
INDEX { phivCircuitIndex }
::= { phivCircuitCountTable 1 }
PhivCircuitCountEntry ::=
SEQUENCE {
phivCircuitCountSecLastZeroed
PhivCounter (0..65535),
phivCircuitCountTermPacketsRecd
PhivCounter,
phivCircuitCountOriginPackSent
PhivCounter,
phivCircuitCountTermCongLoss
PhivCounter (0..65535),
phivCircuitCountCorruptLoss
PhivCounter (0..255),
phivCircuitCountTransitPksRecd
PhivCounter,
phivCircuitCountTransitPkSent
PhivCounter,
phivCircuitCountTransitCongestLoss
PhivCounter (0..65535),
phivCircuitCountCircuitDown
PhivCounter (0..255),
phivCircuitCountInitFailure
PhivCounter (0..255),
phivCircuitCountAdjDown
PhivCounter,
phivCircuitCountPeakAdj
PhivCounter,
phivCircuitCountBytesRecd
PhivCounter,
phivCircuitCountBytesSent
PhivCounter,
phivCircuitCountDataBlocksRecd
PhivCounter (0..65535),
phivCircuitCountDataBlocksSent
PhivCounter,
phivCircuitCountUsrBuffUnav
PhivCounter (0..65535)
}
phivCircuitCountSecLastZeroed OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of seconds since the circuit counters for this
circuit were last zeroed."
::= { phivCircuitCountEntry 1 }
phivCircuitCountTermPacketsRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of terminating packets received on this circuit."
::= { phivCircuitCountEntry 2 }
phivCircuitCountOriginPackSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of originating packets sent on this circuit."
::= { phivCircuitCountEntry 3 }
phivCircuitCountTermCongLoss OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of terminating congestion losses on this
circuit."
::= { phivCircuitCountEntry 4 }
phivCircuitCountCorruptLoss OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of corruption losses on this circuit."
::= { phivCircuitCountEntry 5 }
phivCircuitCountTransitPksRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of Transit packets received on this circuit."
::= { phivCircuitCountEntry 6 }
phivCircuitCountTransitPkSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of transit packets sent on this circuit."
::= { phivCircuitCountEntry 7 }
phivCircuitCountTransitCongestLoss OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of transit congestion losses on this circuit."
::= { phivCircuitCountEntry 8 }
phivCircuitCountCircuitDown OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of circuit downs on this circuit."
::= { phivCircuitCountEntry 9 }
phivCircuitCountInitFailure OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of Initialization failures on this circuit."
::= { phivCircuitCountEntry 10 }
phivCircuitCountAdjDown OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This counter indicates the number of adjacency losses
that result from any of the following:
Node listener timeout
Invalid data received at node listener
Unexpected control (initialization or verification)
message received
Routing message received with a checksum error
Node identification from a routing message or a
Hello message that is not the one expected Hello
message received indicating that connectivity
became one-way
Adjacency idled."
::= { phivCircuitCountEntry 11 }
phivCircuitCountPeakAdj OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This counter indicates the maximum number of nodes
that are up on the circuit."
::= { phivCircuitCountEntry 12 }
phivCircuitCountBytesRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of bytes received on this circuit."
::= { phivCircuitCountEntry 13 }
phivCircuitCountBytesSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of bytes sent on this circuit."
::= { phivCircuitCountEntry 14 }
phivCircuitCountDataBlocksRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of data blocks received on this circuit."
::= { phivCircuitCountEntry 15 }
phivCircuitCountDataBlocksSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of data blocks sent on this circuit."
::= { phivCircuitCountEntry 16 }
phivCircuitCountUsrBuffUnav OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of user buffer unavailable errors."
::= { phivCircuitCountEntry 17 }
okay the counters table is a whole vibe ๐๐ every circuit gets its own row of stats, from how many seconds since they were last zeroed to bytes sent and received, data blocks, and buffer errors ๐ the adjacency-down counter is the drama queen of the bunch ๐ it lists all the ways an adjacency can get lost, like listener timeouts, bad data, checksum errors, and adjacency idling ๐
-- Additional Circuit Parameters
phivCircuitOrigQueueLimit OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This parameter indicates the maximum number of
originating packets that may be outstanding on this
circuit. This does not include route-thru traffic."
::= { circuit 3 }
phivCircuitCountZeroCount OBJECT-TYPE
SYNTAX INTEGER {
other (1),
reset (2)
}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"When this value is set to 2, all of the counters in the
Circuit Counter Table are set to zero."
::= { circuit 4 }
-- DDCMP Circuit Group
-- The implementation of the DDCMP Circuit Group is mandatory for
-- all systems which support DDCMP circuits.
-- DDCMP Parameters Table
phivDDCMPCircuitParametersTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivDDCMPCircuitParametersEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about DDCMP circuit parameters."
::= { ddcmp 1}
the zero-count object is the big reset button ๐ฅ setting it to 2 zeroes every counter in the Circuit Counter Table, and the queue limit caps how many originating packets can be outstanding on a circuit, not counting route-thru traffic ๐ then we get to the DDCMP Circuit Group, which is mandatory for all systems that support DDCMP circuits ๐ซถ next up is the DDCMP parameters table โจ
Okay so this is where the circuit tables really start to shine โจ First up is the parameters table, which holds info about the DDCMP circuits that are currently known ๐
phivDDCMPCircuitParametersEntry OBJECT-TYPE
SYNTAX PhivDDCMPCircuitParametersEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Parameters information about DDCMP circuits currently
known."
INDEX { phivDDCMPCircuitIndex }
::= { phivDDCMPCircuitParametersTable 1 }
PhivDDCMPCircuitParametersEntry ::=
SEQUENCE {
phivDDCMPCircuitIndex
INTEGER,
phivDDCMPCircuitAdjNodeAddr
INTEGER (0..65535),
phivDDCMPCircuitTributary
INTEGER (0..255)
}
phivDDCMPCircuitIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A unique index value for each known DDCMP circuit.
This is the same value as phivCircuitIndex."
::= { phivDDCMPCircuitParametersEntry 1 }
phivDDCMPCircuitAdjNodeAddr OBJECT-TYPE
SYNTAX PhivAddr -- OCTET STRING (SIZE (2))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The address of the adjacent node."
::= { phivDDCMPCircuitParametersEntry 2 }
phivDDCMPCircuitTributary OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the Data Link physical tributary
address of the circuit."
::= { phivDDCMPCircuitParametersEntry 3 }
Next, the circuit counter table, which is all about the DDCMP counters tied to every circuit we know about. Look at all those little counters going brrr ๐ฅ
-- DDCMP Circuit Counter Table
phivDDCMPCircuitCountTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivDDCMPCircuitCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about the DDCMP counters associated with all
circuits currently known."
::= { ddcmp 2 }
phivDDCMPCircuitCountEntry OBJECT-TYPE
SYNTAX PhivDDCMPCircuitCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Counter information about DDCMP circuits now known"
INDEX { phivCircuitIndex }
::= { phivDDCMPCircuitCountTable 1 }
PhivDDCMPCircuitCountEntry ::=
SEQUENCE {
phivDDCMPCircuitErrorsInbd
PhivCounter (0..255),
phivDDCMPCircuitErrorsOutbd
PhivCounter (0..255),
phivDDCMPCircuitRmteReplyTimeouts
PhivCounter (0..255),
phivDDCMPCircuitLocalReplyTimeouts
PhivCounter (0..255),
phivDDCMPCircuitRmteBuffErrors
PhivCounter (0..255),
phivDDCMPCircuitLocalBuffErrors
PhivCounter (0..255),
phivDDCMPCircuitSelectIntervalsElap
PhivCounter (0..65535),
phivDDCMPCircuitSelectTimeouts
PhivCounter (0..255)
}
phivDDCMPCircuitErrorsInbd OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of Data errors inbound."
::= { phivDDCMPCircuitCountEntry 1 }
phivDDCMPCircuitErrorsOutbd OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of outbound data errors."
::= { phivDDCMPCircuitCountEntry 2 }
phivDDCMPCircuitRmteReplyTimeouts OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of remote reply timeouts."
::= { phivDDCMPCircuitCountEntry 3 }
phivDDCMPCircuitLocalReplyTimeouts OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of local Reply timeouts."
::= { phivDDCMPCircuitCountEntry 4 }
phivDDCMPCircuitRmteBuffErrors OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of remote reply time out errors."
::= { phivDDCMPCircuitCountEntry 5 }
phivDDCMPCircuitLocalBuffErrors OBJECT-TYPE
SYNTAX PhivCounter (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of local buffer errors."
::= { phivDDCMPCircuitCountEntry 6 }
phivDDCMPCircuitSelectIntervalsElap OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Selection intervals that have elapsed."
::= {phivDDCMPCircuitCountEntry 7 }
phivDDCMPCircuitSelectTimeouts OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of selection timeouts."
::= {phivDDCMPCircuitCountEntry 8 }
Then there's the line count table, which has one entry per line. It's giving organized ๐ฆ
-- DDCMP Line Count Table
phivDDCMPLineCountTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivDDCMPLineCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The DDCMP Line Count Table."
::= { ddcmp 3 }
phivDDCMPLineCountEntry OBJECT-TYPE
SYNTAX PhivDDCMPLineCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"There is one entry in the table for each line."
INDEX { phivDDCMPLineCountIndex }
::= { phivDDCMPLineCountTable 1 }
PhivDDCMPLineCountEntry ::=
SEQUENCE {
phivDDCMPLineCountIndex
INTEGER,
phivDDCMPLineCountDataErrsIn
PhivCounter (0..255),
phivDDCMPLineCountRmteStationErrs
PhivCounter (0..255),
phivDDCMPLineCountLocalStationErrs
PhivCounter (0..255)
}
phivDDCMPLineCountIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The line on which this entry's equivalence is
effective. The interface identified by a particular
value of this index is the same interface as
identified by the same value of phivLineIndex.
This value is the IfIndex."
::= { phivDDCMPLineCountEntry 1 }
phivDDCMPLineCountDataErrsIn OBJECT-TYPE
SYNTAX PhivCounter ( 0..255 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of data errors inbound."
::= { phivDDCMPLineCountEntry 2 }
phivDDCMPLineCountRmteStationErrs OBJECT-TYPE
SYNTAX PhivCounter ( 0..255 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of remote station errors."
::= { phivDDCMPLineCountEntry 3 }
phivDDCMPLineCountLocalStationErrs OBJECT-TYPE
SYNTAX PhivCounter ( 0..255 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of local station errors."
::= { phivDDCMPLineCountEntry 4 }
Now the multipoint circuit control group. The comment says it's mandatory for any system that supports DDCMP multipoint control circuits, so if that's you, this part is not optional ๐
-- DDCMP Multipoint Circuit Control Group
-- The implementation of the DDCMP Multipoint Circuit Control
-- Group is mandatory for all systems which support DDCMP
-- multipoint control circuits.
phivControlSchedTimer OBJECT-TYPE
SYNTAX INTEGER (50..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the number of milliseconds
between recalculation of tributary polling priorities."
DEFVAL { 200 }
::= { control 1 }
phivControlDeadTimer OBJECT-TYPE
SYNTAX INTEGER (1..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the number of milliseconds
between polls of one of the set of dead
tributaries."
DEFVAL { 10000 }
::= { control 2 }
phivControlDelayTimer OBJECT-TYPE
SYNTAX INTEGER (1..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the minimum number of
milliseconds to delay between polls. The delay timer
limits the effect of a very fast control station on
slow tributaries."
::= { control 3 }
phivControlStreamTimer OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the number of milliseconds a
tributary or a half duplex remote station is
allowed to hold the line.
NOTE: This parameter can also be applied to
half-duplex lines of type DDCMP POINT."
DEFVAL { 6000 }
::= { control 4 }
Last stop for this part is the control parameters table, plus the first object in it, the babble timer โฑ๏ธ๐ซถ
-- DDCMP Multipoint Circuit Control Parameters Table
phivControlParametersTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivControlParametersEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about control circuit parameters."
::= { control 5 }
phivControlParametersEntry OBJECT-TYPE
SYNTAX PhivControlParametersEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Parameters information about control circuits
currently known."
INDEX { phivControlCircuitIndex }
::= { phivControlParametersTable 1 }
PhivControlParametersEntry ::=
SEQUENCE {
phivControlCircuitIndex
INTEGER,
phivControlBabbleTimer
INTEGER (1..65535),
phivControlMaxBuffs
INTEGER (0..254),
phivControlMaxTransmits
INTEGER (1..255),
phivControlDyingBase
INTEGER (0..255),
phivControlDyingIncrement
INTEGER (0..255),
phivControlDeadThreshold
INTEGER (0..255),
phivControlDyingThreshold
INTEGER (0..255),
phivControlInactTreshold
INTEGER (0..255),
phivControlPollingState
INTEGER,
phivControlPollingSubState
INTEGER,
phivControlTransTimer
INTEGER (0..65535)
}
phivControlCircuitIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A unique index value for each known multirpoint
control circuit.
This is the same value as phivCircuitIndex."
::= { phivControlParametersEntry 1 }
phivControlBabbleTimer OBJECT-TYPE
SYNTAX INTEGER (1..65535)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the number of milliseconds that a
selected tributary or remote half-duplex station is
allowed to transmit."
DEFVAL { 6000 }
::= { phivControlParametersEntry 2 }
phivControlMaxBuffs OBJECT-TYPE
SYNTAX INTEGER (0..254)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the maximum number of buffers the
tributary can use from a common buffer pool. If not
set, there is no common buffer pool and buffers are
explicitly supplied by the higher level. Count is a
decimal integer in the range 1-254."
::= { phivControlParametersEntry 3 }
phivControlMaxTransmits OBJECT-TYPE
SYNTAX INTEGER (1..255)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the maximum number of data
messages that can be transmitted at one time. Count
is a decimal integer in the range 1-255."
DEFVAL { 4 }
::= { phivControlParametersEntry 4 }
phivControlDyingBase OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the base priority to which a
tributary is reset each time it has been polled. A
separate base can be set for each of the indicated
polling states. Base is a decimal integer in the range
0-255. If not set, the defaults are: active, 255;
inactive, 0; and dying, 0."
::= { phivControlParametersEntry 5 }
phivControlDyingIncrement OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the increment added to the
tributary priority each time the scheduling timer
expires. If not set, the defaults are: active, 0;
inactive, 64; and dying, 16."
::= { phivControlParametersEntry 6 }
phivControlDeadThreshold OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the number of times to poll the
active, inactive, or dying tributary before changing
its polling state to dead because of receive timeouts.
Count is a decimal integer in the range 0-255."
DEFVAL { 8 }
::= { phivControlParametersEntry 7 }
phivControlDyingThreshold OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the number of times to poll the
active or inactive tributary before changing its
polling state to dying because of receive timeouts.
Count is a decimal integer in the range 0-255."
DEFVAL { 2 }
::= { phivControlParametersEntry 8 }
phivControlInactTreshold OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the number of times to poll the
active tributary before changing its polling state to
inactive because of no data response. Count is a
decimal integer in the range
0-255."
DEFVAL { 8 }
::= { phivControlParametersEntry 9 }
phivControlPollingState OBJECT-TYPE
SYNTAX INTEGER {
automatic (1),
active (2),
inactive (3),
dying (4),
dead (5)
}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the state of the tributary
relative to the multipoint polling algorithm. If not
set the default is AUTOMATIC. The possible states are:
AUTOMATIC
The tributary's state is allowed to vary according to
the operation of the polling algorithm.
ACTIVE/INACTIVE/DYING/DEAD
The tributary is locked in the specified state.
NOTE: These values are incremented by one compared to
the standard DECnet values in order to maintain
compliance with RFC 1155."
::= { phivControlParametersEntry 10 }
phivControlPollingSubState OBJECT-TYPE
SYNTAX INTEGER {
active (1),
inactive (2),
dying (3),
dead (4)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the tributary's state as
determined by the polling algorithm. This applies
only when the polling state is AUTOMATIC and is
read-only to Network Management. Polling-substate is
one of ACTIVE, INACTIVE, DYING, or DEAD. It is
displayed as a tag on the polling state, for example:
AUTOMATIC-INACTIVE."
::= { phivControlParametersEntry 11 }
phivControlTransTimer OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the number of milliseconds to
delay between data message transmits. Milliseconds is
a decimal integer in the range 0-65535."
DEFVAL { 0 }
::= { phivControlParametersEntry 12 }
Okay so the control group is the knobs-and-dials part of the MIB ๐ maxBuffs caps how many buffers the tributary can grab from a shared pool, and if there's no pool at all, the higher level just hands buffers over directly ๐งบ. MaxTransmits is how many data messages can be in flight at once (default 4 ๐), and TransTimer is the millisecond delay between data transmits (default 0, no waiting, bestie ๐โโ๏ธ).
The polling stuff is giving whole drama ๐ญ. DyingBase and DyingIncrement control the priority math: each poll resets the priority to a base, and every time the scheduling timer goes off it gets bumped up by an increment, with separate defaults for active, inactive, and dying. The three thresholds (DeadThreshold, DyingThreshold, InactTreshold, yes the typo is in the original ๐) count how many polls you get before a tributary slides into dying, dead, or inactive. And PollingState lets you either let the algorithm drive (AUTOMATIC, the default โจ) or lock the tributary into a specific state. Its note is important, iykyk: the values are shifted up by one from the DECnet ones so they stay compliant with RFC 1155 ๐ซถ. PollingSubState is the read-only tag that shows what the algorithm decided, like AUTOMATIC-INACTIVE ๐.
Now we're in the Ethernet group, which is mandatory for any system that supports ethernet links ๐ฅ. Here's the table definition and its entry format:
-- Ethernet Group
-- The implementation of the Ethernet Group is mandatory
-- for all systems which support ethernet links.
-- Ethernet Parameters Table
phivEthLinkParametersTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivEthLinkParametersEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about ethernet link parameters."
::= { ethernet 1}
phivEthLinkParametersEntry OBJECT-TYPE
SYNTAX PhivEthLinkParametersEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Parameter information about ethernet links currently
known."
INDEX { phivEthLinkIndex }
::= { phivEthLinkParametersTable 1 }
PhivEthLinkParametersEntry ::=
SEQUENCE {
phivEthLinkIndex
INTEGER,
phivEthDesigRouterNodeAddr
PhivAddr,
phivEthMaxRouters
INTEGER (0..255),
phivEthRouterPri
INTEGER (0..127),
phivEthHardwareAddr
OCTET STRING
}
Next up, the individual ethernet fields. The link index is the circuit the info comes from (same as phivCircuitIndex), and the designated router address is just that, the router's address. MaxRouters caps how many routers (other than the executor itself) Routing will allow on owned circuits, and RouterPri is the priority this router has in designated router selection ๐. The hardware address is six octets, and the doc is very clear that it is not the same as ifPhysAddress ๐.
phivEthLinkIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The circuit over which this links information is
collected. This is the same as phivCircuitIndex."
::= { phivEthLinkParametersEntry 1 }
phivEthDesigRouterNodeAddr OBJECT-TYPE
SYNTAX PhivAddr -- OCTET STRING (SIZE (2))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value is the address of the designated router."
::= { phivEthLinkParametersEntry 2 }
phivEthMaxRouters OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This parameter is the maximum number of routers (other
than the executor itself) allowed on the circuit by
Routing for circuits that are owned by the executor
node."
::= { phivEthLinkParametersEntry 3 }
phivEthRouterPri OBJECT-TYPE
SYNTAX INTEGER (0..127)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This parameter is the priority that this router is to
have in the selection of designated router for the
circuit on circuits that are owned by the executor
node."
DEFVAL { 64 }
::= { phivEthLinkParametersEntry 4 }
phivEthHardwareAddr OBJECT-TYPE
SYNTAX OCTET STRING ( SIZE (6) )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This read-only parameter is the address that is
associated with the line device hardware as seen by
the DECnet Software. This value is not the same as
ifPhysAddress."
::= { phivEthLinkParametersEntry 5 }
Last bit for this part: the counters group ๐. It's mandatory for systems that only support DECnet style locking counters, and the table starts off with the counter entry format ๐งฎ. The first counter is the bytes-received tally, and the index field just points back at the interface (same value as phivLineIndex, which is the IfIndex ๐ฆ).
-- Counters Group
-- The implementation of the Counters Group is mandatory for
-- systems which only support DECnet style locking counters.
-- Counters Table
phivCountersCountTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivCountersCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about ethernet link counters."
::= { counters 1 }
phivCountersCountEntry OBJECT-TYPE
SYNTAX PhivCountersCountEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Counter information about ethernet links currently
known.."
INDEX { phivCountersIndex }
::= { phivCountersCountTable 1 }
PhivCountersCountEntry ::=
SEQUENCE {
phivCountersIndex
INTEGER,
phivCountersCountBytesRecd
PhivCounter,
phivCountersCountBytesSent
PhivCounter,
phivCountersCountDataBlocksRecd
PhivCounter,
phivCountersCountDataBlocksSent
PhivCounter,
phivCountersCountEthUsrBuffUnav
PhivCounter (0..65535),
phivCountersCountMcastBytesRecd
PhivCounter,
phivCountersCountDataBlksRecd
PhivCounter,
phivCountersCountDataBlksSent
PhivCounter,
phivCountersCountMcastBlksRecd
PhivCounter,
phivCountersCountBlksSentDef
PhivCounter,
phivCountersCountBlksSentSingleCol
PhivCounter,
phivCountersCountBlksSentMultCol
PhivCounter,
phivCountersCountSendFailure
PhivCounter,
phivCountersCountCollDetectFailure
PhivCounter (0..65535),
phivCountersCountReceiveFailure
PhivCounter (0..65535),
phivCountersCountUnrecFrameDest
PhivCounter (0..65535),
phivCountersCountDataOver
PhivCounter (0..65535),
phivCountersCountSysBuffUnav
PhivCounter (0..65535),
phivCountersCountUsrBuffUnav
PhivCounter (0..65535)
}
phivCountersIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The interface to which these counters apply. This is
the same interface as identified by the same value of
phivLineIndex. This value is the IfIndex."
::= { phivCountersCountEntry 1 }
phivCountersCountBytesRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of bytes received over this link."
::= { phivCountersCountEntry 2 }
okay bestie, the counters are giving everything ๐๐
phivCountersCountBytesSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of bytes sent over this link."
::= { phivCountersCountEntry 3 }
phivCountersCountDataBlocksRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of data blocks received over this link."
::= { phivCountersCountEntry 4 }
phivCountersCountDataBlocksSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of data blocks sent over this link."
::= { phivCountersCountEntry 5 }
phivCountersCountEthUsrBuffUnav OBJECT-TYPE
SYNTAX PhivCounter (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of user buffer unavailable errors over this
link."
::= { phivCountersCountEntry 6 }
phivCountersCountMcastBytesRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of multicast bytes received over this link."
::= { phivCountersCountEntry 7 }
phivCountersCountDataBlksRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of data blocks received over this link."
::= { phivCountersCountEntry 8 }
phivCountersCountDataBlksSent OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of data blocks sent over this link."
::= { phivCountersCountEntry 9 }
phivCountersCountMcastBlksRecd OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of multicast blocks received over this link."
::= { phivCountersCountEntry 10 }
phivCountersCountBlksSentDef OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of blocks sent, initially deferred over this
link."
::= { phivCountersCountEntry 11 }
phivCountersCountBlksSentSingleCol OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of blocks sent, single collision over this link."
::= { phivCountersCountEntry 12 }
phivCountersCountBlksSentMultCol OBJECT-TYPE
SYNTAX PhivCounter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of blocks sent, multiple collisions over this
link."
::= { phivCountersCountEntry 13 }
phivCountersCountSendFailure OBJECT-TYPE
SYNTAX INTEGER ( 0..65535 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of send failures over this link."
::= { phivCountersCountEntry 14 }
phivCountersCountCollDetectFailure OBJECT-TYPE
SYNTAX INTEGER ( 0..65535 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of collision detect check failures over this
link."
::= { phivCountersCountEntry 15 }
phivCountersCountReceiveFailure OBJECT-TYPE
SYNTAX INTEGER ( 0..65535 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of receive failures over this link."
::= { phivCountersCountEntry 16 }
phivCountersCountUnrecFrameDest OBJECT-TYPE
SYNTAX INTEGER ( 0..65535 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of unrecognized frame destinations over this
link."
::= { phivCountersCountEntry 17 }
phivCountersCountDataOver OBJECT-TYPE
SYNTAX INTEGER ( 0..65535 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of data overruns over this link."
::= { phivCountersCountEntry 18 }
phivCountersCountSysBuffUnav OBJECT-TYPE
SYNTAX INTEGER ( 0..65535 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of system buffer unavailables over this link."
::= { phivCountersCountEntry 19 }
phivCountersCountUsrBuffUnav OBJECT-TYPE
SYNTAX INTEGER ( 0..65535 )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Number of user buffer unavailables."
::= { phivCountersCountEntry 20 }
-- Adjacency Group
-- The implementation of the Adjacency Group is mandatory for all
-- conformant implementations of this memo.
phivAdjTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivAdjEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The Adjacency Table."
::= { adjacency 1 }
phivAdjEntry OBJECT-TYPE
SYNTAX PhivAdjEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"There is one entry in the table for each adjacency."
INDEX { phivAdjCircuitIndex }
::= { phivAdjTable 1 }
PhivAdjEntry ::=
SEQUENCE {
phivAdjCircuitIndex
INTEGER,
phivAdjNodeAddr
PhivAddr,
phivAdjBlockSize
INTEGER,
phivAdjListenTimer
INTEGER (1..65535),
phivAdjCircuitEtherServPhysAddr
OCTET STRING,
phivAdjType
INTEGER,
phivAdjState
INTEGER,
phivAdjPriority
INTEGER,
phivAdjExecListenTimer
INTEGER (1..65535)
}
phivAdjCircuitIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A unique index value for each known circuit."
::= { phivAdjEntry 1 }
phivAdjNodeAddr OBJECT-TYPE
SYNTAX PhivAddr -- OCTET STRING (SIZE (2))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The address of the adjacent node."
::= { phivAdjEntry 2 }
phivAdjBlockSize OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This read-only parameter is the block size that was
negotiated with the adjacent Routing layer during Routing
initialization over a particular circuit. It includes the
routing header, but excludes the data link header. This
parameter is qualified by ADJACENT NODE."
::= { phivAdjEntry 3 }
phivAdjListenTimer OBJECT-TYPE
SYNTAX INTEGER (1..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value determines the maximum number of seconds
allowed to elapse before Routing receives some message
(either a Hello message or a user message) from the
adjacent node on the circuit. It was agreed during
Routing initialization with the adjacent Routing layer.
This parameter is qualified by ADJACENT NODE."
::= { phivAdjEntry 4 }
phivAdjCircuitEtherServPhysAddr OBJECT-TYPE
SYNTAX OCTET STRING ( SIZE (6) )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This parameter indicates the Ethernet physical address
of an adjacent node that is being serviced on this
circuit. This parameter is a qualifier for SERVICE
SUBSTATE."
::= { phivAdjEntry 5 }
phivAdjType OBJECT-TYPE
SYNTAX INTEGER {
routing-III (1),
nonrouting-III (2),
area (3),
routing-IV (4),
nonrouting-IV (5)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This parameter indicates the type of adjacency.
For adjacent nodes, this is a read-only parameter that
indicates the type of the reachable adjacent node.
NOTE: The routing-III and nonrouting-III values are
incremented by one compared to the standard DECnet
values in order to maintain compliance with RFC 1155)"
::= { phivAdjEntry 6 }
phivAdjState OBJECT-TYPE
SYNTAX INTEGER {
initializing (1), -- Ethernet one-way
up (2), -- Ethernet two-way
run (3), -- The eight DDCMP/X.25 states
circuit-rejected (4),
data-link-start (5),
routing-layer-initialize (6),
routing-layer-verify (7),
routing-layer-complete (8),
off (9),
halt (10)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value indicates the state of a router adjacency.
On adjacencies over a circuit of type
(phivCircuitCommonType) Ethernet, CI, or FDDI, with an
adjacent node of type (phivAdjType) ROUTING IV or AREA,
this variable is the state of the Ethernet
Initialization Layer for this adjacency, and can have
values INITIALIZING or UP. (See Section 9.1.1 of
DECnet Phase IV Routing Layer Functional Specification.)
On adjacencies over a circuit of type
(phivCircuitCommonType) Ethernet, CI, or FDDI, with an
adjacent node of type (phivAdjType) NONROUTING IV,
this variable will always take on the value UP.
On adjacencies over a circuit of type
(phivCircuitCommonType) DDCMP POINT, DDCMP CONTROL,
DDCMP TRIBUTARY, DDCMP DMC, or X.25, this variable is
the state of the Routing Layer Initialization Circuit
State. (See section 7.3, ibid.) It can have values
between RUN and HALT.
On adjacencies over a circuit of type
(phivCircuitCommonType) OTHER, this variable may be
used in a manner consistent with the Initialization
Layer used on that circuit."
::= { phivAdjEntry 7 }
phivAdjPriority OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Priority assigned by the adjacent node for this
circuit."
::= { phivAdjEntry 8 }
phivAdjExecListenTimer OBJECT-TYPE
SYNTAX INTEGER (1..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This read-only value determines the maximum number of
seconds allowed to elapse before Routing receives some
message (either a Hello message or a user message) from
the adjacent node on the circuit. It was agreed during
Routing initialization with the adjacent Routing layer."
::= { phivAdjEntry 9 }
-- Line Group
Okay bestie, we're picking up right where the Line Group left off ๐ฆ Here's the Line Group's table setup, with the whole group marked as a must-have for every conformant implementation ๐
-- The implementation of the Line Group is mandatory for all
-- conformant implementations of this memo.
phivLineTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivLineEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The Line Table."
::= { line 1 }
phivLineEntry OBJECT-TYPE
SYNTAX PhivLineEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"There is one entry in the table for each line."
INDEX { phivLineIndex }
::= { phivLineTable 1 }
PhivLineEntry ::=
SEQUENCE {
phivLineIndex
INTEGER,
phivLineName
DisplayString,
phivLineState
INTEGER,
phivLineSubstate
INTEGER,
phivLineService
INTEGER,
phivLineDevice
DisplayString,
phivLineReceiveBuffs
INTEGER (0..65535),
phivLineProtocol
INTEGER,
phivLineServiceTimer
INTEGER (1..65535),
phivLineMaxBlock
INTEGER (1..65535)
}
So the Line Table is a table with one row per line, and each row is a PhivLineEntry ๐ Let's go through the columns, because there are a lot of them, and some have that sneaky "incremented by one compared to DECnet" energy ๐
phivLineIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The line on which this entry's equivalence is effective.
This is the same as the IfIndex."
::= { phivLineEntry 1 }
phivLineName OBJECT-TYPE
SYNTAX DisplayString ( SIZE (0..16) )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The name of the line on this row of the table."
::= { phivLineEntry 2 }
phivLineState OBJECT-TYPE
SYNTAX INTEGER {
on (1),
off (2),
service (3),
cleared (4)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents Network Management operational
state.
NOTE that these values are incremented by one compared to
the standard DECnet values."
::= { phivLineEntry 3 }
phivLineIndex is the line the row is about, and it's the same as the IfIndex ๐ธ phivLineName is just the line's name, capped at 16 characters ๐ง And phivLineState is the Network Management operational state, with on, off, service, and cleared as the options. Note the little "+1 vs DECnet" warning in there. Those numbers are shifted, so don't go assuming they match the old DECnet ones ๐
phivLineSubstate OBJECT-TYPE
SYNTAX INTEGER {
starting (1),
reflecting (2),
looping (3),
loading (4),
dumping (5),
triggering (6),
auto-service (7),
auto-loading (8),
auto-dumping (9),
auto-triggering (10),
synchronizing (11),
failed (12),
running (13)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the line's read-only Network
Management substate.
NOTE that these values are incremented by one compared to
the standard DECnet values."
::= { phivLineEntry 4 }
phivLineService OBJECT-TYPE
SYNTAX INTEGER {
starting (1),
reflecting (2),
looping (3),
other (4)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the line's read-only Network
Management service.
NOTE that these values are incremented by one compared to
the standard DECnet values and OTHER is a new addition."
::= { phivLineEntry 5 }
phivLineDevice OBJECT-TYPE
SYNTAX DisplayString ( SIZE (0..16) )
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the Physical Link device to be
used on the line."
::= { phivLineEntry 6 }
phivLineReceiveBuffs OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the number of receive buffers
reserved for the line. It is a decimal number in
the range 0-65535. 0 is supported for those vendors
that do not reserve buffers on a per line basis and
use a pool of buffers that can be used by any line."
::= { phivLineEntry 7 }
phivLineSubstate is the line's read-only substate, and it has thirteen flavours, from starting all the way to running ๐ฅ phivLineService is the service state, and this one gets a glow-up: other is the brand-new addition ๐ phivLineDevice names the Physical Link device used on the line. phivLineReceiveBuffs is how many receive buffers are reserved for the line, and the spicy bit is that 0 is allowed for vendors who use a shared pool of buffers instead of reserving them per line ๐ซถ
phivLineProtocol OBJECT-TYPE
SYNTAX INTEGER {
ddcmp-point (1),
ddcmp-control (2),
ddcmp-tributary (3),
reserved (4),
ddcmp-dmc (5),
lapb (6),
ethernet (7),
ci (8),
qp2 (9),
other (14),
fddi (15)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the protocol used on the line
device. Note that these values are incremented by
one compared to the standard DECnet values."
::= { phivLineEntry 8 }
phivLineServiceTimer OBJECT-TYPE
SYNTAX INTEGER (1..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the amount of time in
milliseconds allowed to elapse before a Data Link
receive request completes while doing service
operations."
::= { phivLineEntry 9 }
phivLineMaxBlock OBJECT-TYPE
SYNTAX INTEGER (1..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the Data Link maximum block
size on the line."
::= { phivLineEntry 10 }
phivLineProtocol is the protocol on the line device, and it's a whole buffet ๐ Watch out for the gap: there's no 10 through 13, and then other jumps all the way to 14, which is so random but also very real ๐คทโโ๏ธ phivLineServiceTimer is how many milliseconds you wait for a Data Link receive request to finish while doing service stuff โฑ๏ธ And phivLineMaxBlock is the biggest Data Link block size on the line ๐ฆ
Heads up, these are all read-only columns. Nothing in this table is writable, so you're just reading the room, not changing it ๐
Next up is the Non Broadcast Line Group ๐ Its header comment says it's mandatory for every system that implements non broadcast lines, which is a very different vibe from the Line Group's "everyone has to do this" energy ๐
-- Non Broadcast Line Group
-- The implementation of the Non Broadcast Line Group is
-- mandatory for all systems which implement non broadcast
-- lines.
phivNonBroadcastTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivNonBroadcastEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The Non Broadcast Table."
::= { nonBroadcastLine 1 }
phivNonBroadcastEntry OBJECT-TYPE
SYNTAX PhivNonBroadcastEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"There is one entry in the table for each
Non Broadcast line."
INDEX { phivNonBroadcastIndex }
::= { phivNonBroadcastTable 1 }
PhivNonBroadcastEntry ::=
SEQUENCE {
phivNonBroadcastIndex
INTEGER,
phivNonBroadcastController
INTEGER,
phivNonBroadcastDuplex
INTEGER,
phivNonBroadcastClock
INTEGER,
phivNonBroadcastRetransmitTimer
INTEGER (1..65535)
}
phivNonBroadcastIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The Non Broadcast line on which this entry's
equivalence is effective. This is the same value
as the IfIndex."
::= { phivNonBroadcastEntry 1 }
The Non Broadcast table works just like the Line table, one row per non broadcast line, keyed by phivNonBroadcastIndex, which again is the IfIndex ๐ฆ
phivNonBroadcastController OBJECT-TYPE
SYNTAX INTEGER {
normal (1),
loopback (2),
other (3)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the Physical Link hardware
controller mode for the line device. The values
for controller-mode are:
NORMAL For normal controller operating mode.
LOOPBACK For software controllable loopback of the
controller. On those devices that can support this
mode, it causes all transmitted messages to be looped
back from within the controller itself. This is
accomplished without any manual intervention other
than the setting of this parameter value.
OTHER indicates function is not supported
Note that these values are incremented by one compared to
the standard DECnet values."
::= { phivNonBroadcastEntry 2 }
phivNonBroadcastDuplex OBJECT-TYPE
SYNTAX INTEGER {
full (1),
half (2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the Physical Link hardware
duplex mode of the line device. The possible modes
are:
FULL Full-duplex
HALF Half-duplex
Note that these values are incremented by one compared to
the standard DECnet values."
::= { phivNonBroadcastEntry 3 }
phivNonBroadcastClock OBJECT-TYPE
SYNTAX INTEGER {
external (1),
internal (2),
other (3)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents the Physical Link hardware clock
mode for the line device. The values for clock-mode are:
INTERNAL For software controllable loopback use of
the clock. On those devices that can support this
mode, it causes the device to supply a clock signal
such that a transmitted messages can be looped
back from outside the device. This may require manual
intervention other than the setting of this parameter
value. For example, the operator may have to connect
a loopback plug in place of the normal line.
EXTERNAL For normal clock operating mode, where the
clock signal is supplied externally to the controller.
Note that these values are incremented by one compared to
the standard DECnet values."
::= { phivNonBroadcastEntry 4 }
phivNonBroadcastRetransmitTimer OBJECT-TYPE
SYNTAX INTEGER (1..65535)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value represents number of milliseconds before
the Data Link retransmits a block on the line. On
half-duplex lines, this parameter is the select timer."
DEFVAL { 3000 }
::= { phivNonBroadcastEntry 5 }
phivNonBroadcastController is the hardware controller mode, with normal, loopback, and other as the choices. Loopback is the one that loops everything back from inside the controller itself, and it's flipped on just by setting this parameter, no hands needed ๐ phivNonBroadcastDuplex is the duplex mode, full or half ๐ phivNonBroadcastClock is the clock mode, and this one's a bit of a plot twist: internal is the loopback-ish option where the device supplies its own clock, which may need someone to plug in a loopback plug, while external is the normal setup where the clock comes from outside the controller ๐ Last but not least, phivNonBroadcastRetransmitTimer is how many milliseconds pass before the Data Link resends a block, and it defaults to 3000 ๐
On half-duplex lines, this same timer doubles as the select timer, which is very multitasking of it ๐
Now for the Area Parameters Group ๐ Its header says it's mandatory for every system that does level 2 routing, so if you're not doing that, you can breathe easy ๐ธ
-- Area Parameters Group
-- The implementation of the Area Parameters Group is mandatory
-- for all systems which implement level 2 routing.
phivAreaTable OBJECT-TYPE
SYNTAX SEQUENCE OF PhivAreaEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Table of information kept on all areas known to
this unit."
::= { area 1 }
phivAreaEntry OBJECT-TYPE
SYNTAX PhivAreaEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The area routing information."
INDEX { phivAreaNum }
::= { phivAreaTable 1 }
PhivAreaEntry ::=
SEQUENCE {
phivAreaNum
INTEGER,
phivAreaState
INTEGER,
phivAreaCost
Gauge,
phivAreaHops
INTEGER,
phivAreaNextNode
To be continued... โจ We're mid-sequence, so the next part picks up right at phivAreaNextNode ๐ง
PhivAddr,
phivAreaCircuitIndex
INTEGER
}
phivAreaNum OBJECT-TYPE
SYNTAX INTEGER (0..64)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value indicates the area number of this entry."
::= { phivAreaEntry 1 }
phivAreaState OBJECT-TYPE
SYNTAX INTEGER {
reachable (4),
unreachable (5)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This value indicates the state of the area"
::= { phivAreaEntry 2 }
phivAreaCost OBJECT-TYPE
SYNTAX Gauge
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total cost over the current path to the
destination area. Cost is a value associated with
using a circuit. Routing routes messages (data)
along the path between 2 areas with the smallest
cost."
::= { phivAreaEntry 3 }
phivAreaHops OBJECT-TYPE
SYNTAX INTEGER (0..255)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number of hops to a destination area. A hop is
the routing value representing the logical distance
between two areas in network."
::= { phivAreaEntry 4 }
phivAreaNextNode OBJECT-TYPE
SYNTAX PhivAddr
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The next node on the circuit used to get to the
area under scrutiny."
::= { phivAreaEntry 5 }
phivAreaCircuitIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A unique index value for each known circuit."
::= { phivAreaEntry 6 }
-- Additional Area Parameters
phivAreaMaxCost OBJECT-TYPE
SYNTAX INTEGER (1..1022)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the maximum total path cost
allowed from the executor to any other level 2 routing
node. The AREA MAXIMUM COST number is decimal in the
range 1-1022. This parameter is only applicable if
the executor node is of type AREA."
::= { area 2 }
phivAreaMaxHops OBJECT-TYPE
SYNTAX INTEGER (1..30)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the maximum number of routing hops
allowable from the executor to any other level 2
routing node. This parameter is only applicable if the
executor node is of type AREA."
::= { area 3 }
phivRouteMaxArea OBJECT-TYPE
SYNTAX INTEGER (1..63)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"This value represents the largest area number and,
therefore, number of areas that can be known about
by the executor node's Routing. This parameter is only
applicable if the executor node is of type AREA."
::= { area 4 }
END
5. Acknowledgements ๐ท
This document is the result of work done by the DECnet Phase IV MIB working group. On top of that, the special contributions and comments of these lovely people are also acknowledged ๐ซถ:
- Chris Chiotasso, Sparticus
- Steven Hunter, National Energy Research Supercomputer Center, Lawrence Livermore National Laboratory
6. References ๐
Cerf, V., "IAB Recommendations for the Development of Internet Network Management Standards", RFC 1052, NRI, April 1988.
Rose M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", RFC 1155, Performance Systems International, Hughes LAN Systems, May 1990.
McCloghrie K., and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1156, Hughes LAN Systems, Performance Systems International, May 1990.
Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network Management Protocol", RFC 1157, SNMP Research, Performance Systems International, Performance Systems International, MIT Laboratory for Computer Science, May 1990.
McCloghrie K., and M. Rose, Editors, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1213, Performance Systems International, March 1991.
Rose, M., and K. McCloghrie, Editors, "Concise MIB Definitions", RFC 1212, Performance Systems International, Hughes LAN Systems, March 1991.
Cook, J., Editor, "Definitions of Managed Objects for the Ethernet-like Interface Types", RFC 1284, Chipcom Corporation, December 1991.
Digital Equipment Corporation, "DECnet-ULTRIX NCP Command Reference", Digital Equipment Corporation, Maynard, Massachusetts.
Digital Equipment Corporation, "DECnet-ULTRIX USE Guide", Digital Equipment Corporation, Maynard, Massachusetts.
Digital Equipment Corporation, "DECnet DIGITAL Network Architecture, Network Management Functional Specification", Version 4.0.0. Digital Equipment Corporation, Maynard, Massachusetts, July 1983.
Digital Equipment Corporation, "DECnet DIGITAL Network Architecture, Routing Layer Functional Specification", Version 2.0.0. Digital Equipment Corporation, Maynard, Massachusetts, May 1983.
Security Considerations ๐
Security issues are not discussed in this memo. ๐
Author's Address ๐
- Jon Saperia
- Digital Equipment Corporation
- 40 Old Bolton Road
- Stow, Massachusetts 01775-1215
- Phone: 508-496-8333
- EMail: saperia@enet.dec.com
๐ฆ where this page comes from
- ietf: rfc1289 1991-12
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms