RFC 1162
Connectionless Network Protocol (ISO 8473) and End System to Intermediate System (ISO 9542) Management Information Base
RFC 1162: Connectionless Network Protocol (ISO 8473) and End System to Intermediate System (ISO 9542) Management Information Base ๐
okay bestie, we're getting into RFC 1162 today and it's giving network management realness ๐ฆ
Written by: Greg Satz, cisco Systems, Inc. ๐ Date: June 1990 ๐ Stream: Network Working Group Status: experimental, as the memo says itself in Section 1 ๐งช Obsoletes / Updates: the title block doesn't list anything it obsoletes or updates ๐ธ
This doc defines MIB objects for the ISO Connectionless Network Protocol (CLNP, ISO 8473) and the End System to Intermediate System protocol (ES-IS, ISO 9542), so you can manage them with SNMP. The text is super specific because implementers rely on every single word. ๐
Table of Contents โจ
1. Status of this Memo .................................. 1
2. Historical Perspective................................ 2
3. Objects .............................................. 3
3.1 Format of Definitions ............................... 3
4. Object Definitions ................................... 4
4.1 The CLNP Group ...................................... 5
4.1.1 The CLNP Interfaces table ......................... 14
4.1.2 The CLNP Routing table ............................ 16
4.1.3 The CLNP Address Translation Tables ............... 22
4.2 The CLNP Error Group ................................ 30
4.3 The ESIS Group ...................................... 47
5. Definitions .......................................... 50
6. Identification of OBJECT instances for use with the
SNMP ................................................. 66
6.1 clnpAddrTable Object Type Names ..................... 67
6.2 clnpRoutingTable Object Type Names .................. 67
6.3 clnpNetToMediaTable Object Type Names ............... 68
6.4 clnpMediaToNetTable Object Type Names ............... 68
7. References ........................................... 69
8. Security Considerations............................... 70
9. Author's Address...................................... 70
1. Status of this Memo โจ
okay so this memo defines an experimental chunk of the Management Information Base (MIB) ๐ง for network management protocols in TCP/IP-based internets.
It is NOT a standard for the Internet community, lowkey. However, after experimentation, if the Internet community reaches sufficient consensus, a later revision of this document may be placed in the Internet-standard MIB. ๐
Distribution of this memo is unlimited. ๐
2. Historical Perspective ๐
So, the history is giving main character energy. RFC 1052, the IAB Recommendations for the Development of Internet Network Management Standards [1], laid out a two-prong strategy for managing TCP/IP-based internets. ๐ซถ
In the short term, the Simple Network Management Protocol (SNMP), defined in RFC 1067, was used to manage nodes in the Internet community. In the long term, the OSI network management framework was going to be examined. Two documents defined the management information: RFC 1065, which defined the Structure of Management Information (SMI), and RFC 1066, which defined the Management Information Base (MIB). Both were designed to be compatible with SNMP and the OSI framework. โจ
The short-term plan was a total success: Internet-based network management tech was fielded by both the research and commercial communities within a few months, so parts of the Internet became network manageable in a timely way. ๐ฅ
Then RFC 1109, the Report of the Second Ad Hoc Network Management Review Group [2], found that the SNMP and OSI frameworks were more different than anyone expected. ๐ So the requirement for compatibility between the SMI/MIB and both frameworks was suspended. That let the operational framework, based on SNMP, keep up with new needs in the Internet community by producing MIB-II. ๐ฆ
In May of 1990, the core documents were elevated to "Standard Protocols" with "Recommended" status. So the Internet-standard network management framework is made up of three pieces: ๐
- Structure and Identification of Management Information for TCP/IP-based internets, RFC 1155 [3], which describes how managed objects in the MIB are defined.
- Management Information Base for Network Management of TCP/IP-based internets, RFC 1156 [4], which describes the managed objects in the MIB.
- the Simple Network Management Protocol, RFC 1157 [5], which defines the protocol used to manage these objects.
The IAB wanted simple, workable systems in the short term, so the list of managed objects in the Internet-standard MIB only included the elements considered essential. ๐ The SMI, though, defined three extensibility mechanisms: ๐ง
- Adding new standard objects by defining new versions of the MIB.
- Adding widely available but non-standard objects through the experimental subtree.
- Adding private objects through the enterprises subtree.
These extra objects can be used for vendor-specific elements, and also for experiments that help figure out which other objects are essential. ๐งช
Since the Internet-standard MIB came out, experience has led to a new document, MIB-II [6]. ๐
This memo uses the second method. It defines extensions to the MIB containing managed objects used for experimentation. After experimentation, if the Internet community reaches sufficient consensus, a later revision of this memo may be placed in the Internet-standard MIB. ๐ธ
3. Objects ๐
Managed objects are accessed via a virtual information store called the Management Information Base, or MIB. Objects in the MIB are defined using the subset of Abstract Syntax Notation One (ASN.1) [7] defined in the SMI. ๐ซถ
Each object has a name, a syntax, and an encoding. The name is an object identifier, an administratively assigned name that specifies an object type. The object type together with an object instance uniquely identifies one specific instantiation of the object. For human convenience, we often use a textual string, called the OBJECT DESCRIPTOR, to refer to the object type too. โจ
The syntax of an object type defines the abstract data structure for that object type, and the ASN.1 language is used for this. The SMI [3] purposely restricts which ASN.1 constructs can be used, and it does this explicitly for simplicity. ๐
The encoding of an object type is just how that object type is represented using its syntax. Tied to the syntax and encoding is how the object type is represented when it's sent over the network. ๐ฆ
This SMI specifies the use of the basic encoding rules of ASN.1 [8], subject to the additional requirements imposed by SNMP. ๐ฅ
3.1. Format of Definitions ๐
The next section has the specification of all object types in the MIB. Following the conventions of the companion memo, each object type is defined using these fields: ๐
OBJECT:: a textual name, called the OBJECT DESCRIPTOR, for the object type, along with its corresponding OBJECT IDENTIFIER.Syntax:: the abstract syntax for the object type, presented in ASN.1. Thismust resolveto an instance of the ASN.1 type ObjectSyntax defined in the SMI.Definition:: a textual description of the object type's semantics. Implementations should make sure their interpretation of the object type fulfills this definition, since this MIB is meant for multi-vendor environments. Because of that, it's vital that object types have consistent meaning across all machines. ๐ซถAccess:: one ofread-only,read-write,write-only, ornot-accessible. This sets the minimum level of support required. Locally, implementations may support other access types (e.g., an implementation may elect to permit writing a variable marked here asread-only). Protocol-specific "views" (like the ones implied by an SNMP community) may restrict access to a variable even further. ๐งStatus:: one ofmandatory,optional,obsolete, ordeprecated. Usingdeprecatedimpliesmandatorystatus. ๐
4. Object Definitions ๐ง
Here's the module, bestie. Look at how clean it is ๐ญ
CLNS-MIB DEFINITIONS ::= BEGIN
IMPORTS
experimental, OBJECT-TYPE, Counter
FROM RFC1155-SMI;
-- new type of NetworkAddress
ClnpAddress ::=
[APPLICATION 5]
IMPLICIT OCTET STRING (SIZE (1..21))
clns OBJECT IDENTIFIER ::= { experimental 1 }
clnp OBJECT IDENTIFIER ::= { clns 1 }
error OBJECT IDENTIFIER ::= { clns 2 }
echo OBJECT IDENTIFIER ::= { clns 3 }
es-is OBJECT IDENTIFIER ::= { clns 4 }
END
These objects can be used when the ISO Connectionless-mode Network Protocol [9] and the End System to Intermediate System [10] protocols are present. No assumptions are made about which underlying protocol is used to carry the SNMP. ๐ธ
This memo uses the string encoding of [11] to describe OSI addresses in text. ๐
The ASN.1 type ClnpAddress is used to denote an OSI address. It's a string of octets. The first octet contains a binary value in the range of 0..20, and it tells you the length in octets of the NSAP. After that first octet comes the NSAP, written in concrete binary notation, starting with the most significant octet. โจ
โ ๏ธ A zero-length NSAP is a "special" address meaning "the default NSAP" (analogous to the IP address of0.0.0.0). That NSAP is encoded as a single octet containing the value0. Not a typo, it's just iconic ๐
All other NSAPs are encoded in at least 2 octets. ๐ฆ
to be continued in part 2โฆ stay tuned, bestie ๐โญ
4.1. The CLNP Group โจ
Okay, bestie, first things first: the CLNP group is experimental ๐งช. It's still recommended for every system that supports CLNP, so if your box speaks CLNP, this is your group ๐
OBJECT:
-------
clnpForwarding { clnp 1 }
Syntax:
INTEGER {
is(1), -- entity is an intermediate system
es(2), -- entity is an end system and does not
forward PDUs
}
Access:
read-write.
Status:
mandatory.
So this one tells you whether the entity is running as an intermediate system or an end system ๐. Only intermediate systems forward PDUs that aren't addressed to them. End systems don't forward, period ๐ โโ๏ธ
OBJECT:
-------
clnpDefaultLifeTime { clnp 2 }
Syntax:
INTEGER
Access:
read-write.
Status:
mandatory.
This is the default value that goes into the Lifetime field of the CLNP PDU header for anything this entity sends out. Simple, but iconic โณ
OBJECT:
-------
clnpInReceives { clnp 3 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
This counter is the total of every input PDU received from all connected network interfaces running CLNP. Errors count too, so it's the full tally ๐ฅ
OBJECT:
-------
clnpInHdrErrors { clnp 4 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
Here we're counting input PDUs that got tossed because of problems in the CLNP header ๐ซ. That includes bad checksums, version mismatches, lifetime exceeded, and errors found while processing options, etc. Yikes, the header really has to be on point ๐ญ
OBJECT:
-------
clnpInAddrErrors { clnp 5 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
This one counts input PDUs thrown out because the NSAP address in the destination field wasn't a valid NSAP for this entity to receive ๐. Addresses it doesn't understand get counted here too. For end systems, it's specifically the PDUs that showed up with a destination NSAP that wasn't local ๐
OBJECT:
-------
clnpForwPDUs { clnp 6 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
This counts input PDUs where this entity wasn't the final destination, and where it actually tried to forward them onward ๐โโ๏ธ๐จ
OBJECT:
-------
clnpInUnknownNLPs { clnp 7 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
Okay, this is the count of locally-addressed PDUs that were received just fine but then discarded because the network layer protocol was unknown or unsupported (for example, not CLNP or ES-IS) ๐คทโโ๏ธ
OBJECT:
-------
clnpInUnknownULPs { clnp 8 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
Same vibe, but for the upper layer. These are locally-addressed PDUs that were received successfully and then dropped because the upper layer protocol was unknown or unsupported (for example, not TP4) ๐ซ
OBJECT:
-------
clnpInDiscards { clnp 9 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
These are input CLNP PDUs that had no problems stopping them from being processed, but got discarded anyway (for example, for lack of buffer space) ๐๏ธ. Heads up: this counter does not include PDUs discarded while they were waiting for re-assembly ๐
OBJECT:
-------
clnpInDelivers { clnp 10 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The total number of input PDUs that were successfully delivered to the CLNS transport user ๐ That's the success story right there ๐
OBJECT:
-------
clnpOutRequests { clnp 11 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
This counts every CLNP PDU that local CLNS user protocols handed to CLNP as a transmission request ๐ค. It does not include anything already counted in clnpForwPDUs, so no double-dipping ๐ โโ๏ธ
OBJECT:
-------
clnpOutDiscards { clnp 12 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
Here we're counting output CLNP PDUs that had no other problem stopping their transmission, but still got discarded (for example, for lack of buffer space) ๐. Note that this counter does include the PDUs counted in clnpForwPDUs, so it's a different vibe from the input side ๐
OBJECT:
-------
clnpOutNoRoutes { clnp 13 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
These are CLNP PDUs discarded because no route could be found to get them to their destination ๐บ๏ธโ. This counter also includes any PDUs counted in clnpForwPDUs ๐
OBJECT:
-------
clnpReasmTimeout { clnp 14 }
Syntax:
INTEGER
Access:
read-only.
Status:
mandatory.
This is the maximum number of seconds that received segments get held while they wait to be reassembled at this entity โฑ๏ธ. Patience, bestie ๐ซถ
OBJECT:
-------
clnpReasmReqds { clnp 15 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
This counts the CLNP segments received that needed to be reassembled at this entity ๐งฉ
OBJECT:
-------
clnpReasmOKs { clnp 16 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of CLNP PDUs that were successfully re-assembled at this entity ๐ Go, reassembly, go โจ
OBJECT:
-------
clnpReasmFails { clnp 17 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
This is the number of failures the CLNP reassembly algorithm detected, for any reason at all: timed out, buffer size, etc. ๐ Rough day for the reassembler
OBJECT:
-------
clnpSegOKs { clnp 18 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of CLNP PDUs that were successfully segmented at this entity ๐ชโ Clean cuts, no notes
OBJECT:
-------
clnpSegFails { clnp 19 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
These are CLNP PDUs that got discarded because they needed to be fragmented at this entity but couldn't be ๐ค
OBJECT:
-------
clnpSegCreates { clnp 20 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
This counts the CLNP PDU segments that were generated as a result of segmentation at this entity ๐ง
OBJECT:
-------
clnpInOpts { clnp 25 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of CLNP PDU segments that were input with options at this entity ๐ฆ
OBJECT:
-------
clnpOutOpts { clnp 26 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
And the output side: the number of CLNP PDU segments generated with options by this entity ๐คโจ
4.1.1. The CLNP Interfaces table ๐๏ธ
Okay, this table is the rundown of the entity's interfaces that are running CLNP ๐
OBJECT:
-------
clnpAddrTable { clnp 21 }
Syntax:
SEQUENCE OF ClnpAddrEntry
Access:
not-accessible.
Status:
mandatory.
This is the table of addressing information for this entity's CLNP addresses ๐. Not directly accessible, so you go through its entries ๐ช
OBJECT:
-------
clnpAddrEntry { clnpAddrTable 1 }
Syntax:
ClnpAddrEntry :: = SEQUENCE {
clnpAdEntAddr
ClnpAddress,
clnpAdEntIfIndex
INTEGER,
clnpAdEntReasmMaxSize
INTEGER (0..65535)
}
Access:
not-accessible.
Status:
mandatory.
Each entry is the addressing info for one of this entity's CLNP addresses ๐ท๏ธ. Think of it as one row per address, with three columns of info ๐
OBJECT:
-------
clnpAdEntAddr { clnpAddrEntry 1 }
Syntax:
ClnpAddress
Access:
read-only.
Status:
mandatory.
This is the CLNP address that the entry's addressing information is about ๐ฌ
OBJECT:
-------
clnpAdEntIfIndex { clnpAddrEntry 2 }
Syntax:
INTEGER
Access:
read-only.
Status:
mandatory.
This index value uniquely identifies the interface the entry applies to ๐. The interface you get from this value is the same interface you'd get from the same value of ifIndex, so the two line up perfectly ๐
OBJECT:
-------
clnpAdEntReasmMaxSize { clnpAddrEntry 3 }
Syntax:
INTEGER (0..65535)
Access:
read-only.
Status:
mandatory.
Last but not least: this is the size of the largest CLNP PDU that this entity can reassemble from incoming segmented PDUs received on this interface ๐งฉ๐
4.1.2. The CLNP Routing table โจ
okay so the CLNP Routing table is basically this entity's little black book of routes ๐๐ it's got an entry for every single route the entity knows about. no cap, this is the table everything else in the CLNP group is vibing off of.
OBJECT:
-------
clnpRoutingTable { clnp 22 }
Syntax:
SEQUENCE OF ClnpRouteEntry
Definition:
This entity's CLNP routing table.
Access:
not-accessible.
Status:
mandatory.
the whole table is a SEQUENCE OF ClnpRouteEntry, so each row is one route ๐ it's marked not-accessible, which means you can't grab the table as one object. you go through the rows instead ๐ฆ
OBJECT:
-------
clnpRouteEntry { clnpRoutingTable 1 }
Syntax:
ClnpRouteEntry ::= SEQUENCE {
clnpRouteDest
ClnpAddress,
clnpRouteIfIndex
INTEGER,
clnpRouteMetric1
INTEGER,
clnpRouteMetric2
INTEGER,
clnpRouteMetric3
INTEGER,
clnpRouteMetric4
INTEGER,
clnpRouteNextHop
ClnpAddress,
clnpRouteType
INTEGER,
clnpRouteProto
INTEGER,
clnpRouteAge
INTEGER
}
Definition:
A route to a particular destination.
Access:
not-accessible.
Status:
mandatory.
this is the row itself, and it's the main character of the whole section ๐ each route is a bundle of ten fields: where it's going, which interface to use, four metrics, the next hop, the type, the protocol, and how old it is. same row, same story, every time ๐ธ
OBJECT:
-------
clnpRouteDest { clnpRouteEntry 1 }
Syntax:
ClnpAddress
Definition:
The destination CLNP address of this route.
Access:
read-write.
Status:
mandatory.
clnpRouteDest is the destination, the place this route is trying to get to ๐ง it's a ClnpAddress and it's read-write, so it can be changed. mandatory, so every implementation has to have it ๐ซถ
OBJECT:
-------
clnpRouteIfIndex { clnpRouteEntry 2 }
Syntax:
INTEGER
Definition:
The index value which uniquely identifies the local
interface through which the next hop of this route should
be reached. The interface identified by a particular
value of this index is the same as identified by the same
value of ifIndex.
Access:
read-write.
Status:
mandatory.
clnpRouteIfIndex is the local interface you go out through to reach the next hop ๐ฆ it's an INTEGER that matches the same value of ifIndex, so the two stay in sync. the wording says should, not MUST, so keep that in mind when you're reading it, bestie ๐
OBJECT:
-------
clnpRouteMetric1 { clnpRouteEntry 3 }
Syntax:
INTEGER
Definition:
The primary routing metric for this route. The semantics
of this metric are determined by the routing-protocol
specified in the route's clnpRouteProto value. If this
metric is not used, its value should be set to -1.
Access:
read-write.
Status:
mandatory.
clnpRouteMetric1 is the main metric, the big one ๐ what it actually means depends on whichever routing protocol the route came from (that's what clnpRouteProto is for). if you're not using it, just set it to -1 ๐
OBJECT:
-------
clnpRouteMetric2 { clnpRouteEntry 4 }
Syntax:
INTEGER
Definition:
An alternate routing metric for this route. The
semantics of this metric are determined by the routing-
protocol specified in the route's clnpRouteProto value.
If this metric is not used, its value should be set to
-1.
Access:
read-write.
Status:
mandatory.
clnpRouteMetric2 is an alternate metric, a sidekick to Metric1 ๐ same rules apply: the routing protocol decides what it means, and if you don't need it, -1 is your friend โจ
OBJECT:
-------
clnpRouteMetric3 { clnpRouteEntry 5 }
Syntax:
INTEGER
Definition:
An alternate routing metric for this route. The
semantics of this metric are determined by the routing-
protocol specified in the route's clnpRouteProto value.
If this metric is not used, its value should be set to
-1.
Access:
read-write.
Status:
mandatory.
clnpRouteMetric3 is another alternate metric, same energy as Metric2 ๐ protocol decides the meaning, -1 if it's not used. it's giving repetition, but that's literally how the spec is written ๐ญ
OBJECT:
-------
clnpRouteMetric4 { clnpRouteEntry 6 }
Syntax:
INTEGER
Definition:
An alternate routing metric for this route. The
semantics of this metric are determined by the routing-
protocol specified in the route's clnpRouteProto value.
If this metric is not used, its value should be set to
-1.
Access:
read-write.
Status:
mandatory.
and the last metric, clnpRouteMetric4 ๐ same deal, one more alternate metric where the protocol sets the meaning and -1 means unused. four metrics total, and that's the whole squad ๐ง
OBJECT:
-------
clnpRouteNextHop { clnpRouteEntry 7 }
Syntax:
ClnpAddress
Definition:
The CLNP address of the next hop of this route.
Access:
read-write.
Status:
mandatory.
clnpRouteNextHop is the CLNP address of the next hop on the way ๐ซถ it's the very next stop before the destination, and it's a ClnpAddress, read-write, mandatory.
OBJECT:
-------
clnpRouteType { clnpRouteEntry 8 }
Syntax:
INTEGER {
other(1), -- none of the following
invalid(2), -- an invalidated route
-- route to directly
direct(3), -- connected (sub-)network
-- route to a non-local
remote(4) -- host/network/sub-network
}
Definition:
The type of route.
Setting this object to the value invalid(2) has the effect of
invaliding the corresponding entry in the clnpRoutingTable.
That is, it effectively dissasociates the destination
identified with said entry from the route identified with said
entry. It is an implementation-specific matter as to whether
the agent removes an invalidated entry from the table.
Accordingly, management stations must be prepared to receive
tabular information from agents that corresponds to entries
not currently in use. Proper interpretation of such entries
requires examination of the relevant clnpRouteType object.
Access:
read-write.
Status:
mandatory.
clnpRouteType tells you what kind of route this is, and it's a whole vibe ๐ other(1) is the catch-all for anything that doesn't fit the rest. invalid(2) is an invalidated route. direct(3) goes to a directly connected (sub-)network, and remote(4) goes to a non-local host, network or sub-network.
here's the tea ๐ setting this to invalid(2) doesn't delete the row. it just breaks the link between the destination and the route, which is kind of the whole point. whether the agent actually removes the entry is up to the implementation. so management stations need to be ready to see entries that aren't in use, and the only way to tell is by checking clnpRouteType ๐ฅ
OBJECT:
-------
clnpRouteProto { clnpRouteEntry 9 }
Syntax:
INTEGER {
other(1), -- none of the following
-- non-protocol information
-- e.g., manually
local(2), -- configured entries
-- set via a network
netmgmt(3), -- management protocol
-- similar to ipRouteProto
-- but omits several IP-specific
-- protocols
is-is(9),
ciscoIgrp(11),
bbnSpfIgp(12),
ospf(13),
bgp(14)
}
Definition:
The routing mechanism via which this route was learned.
Inclusion of values for gateway routing protocols is not
intended to imply that hosts should support those
protocols.
Access:
read-write.
Status:
mandatory.
clnpRouteProto is the "how did we find out about this route?" field ๐ต๏ธโโ๏ธ other(1) covers anything not listed. local(2) is for non-protocol stuff like manually configured entries. netmgmt(3) is for routes set through a network management protocol, and it's similar to ipRouteProto but leaves out a bunch of the IP-only protocols. then you've got is-is(9), ciscoIgrp(11), bbnSpfIgp(12), ospf(13) and bgp(14) ๐ธ
the definition also says that listing gateway routing protocols doesn't mean hosts are expected to run them. so don't go assuming your laptop has to speak BGP just because it's in the enum, bestie ๐
OBJECT:
-------
clnpRouteAge { clnpRouteEntry 10 }
Syntax:
INTEGER
Definition:
The number of seconds since this route was last updated
or otherwise determined to be correct. Note that no
semantics of "too old" can be implied except through
knowledge of the routing protocol by which the route was
learned.
Access:
read-write.
Status:
mandatory.
last one, clnpRouteAge ๐ง it's just the number of seconds since the route was last updated or confirmed to be correct. and here's the important bit: there's no universal definition of "too old". you only know that by understanding the routing protocol the route came from ๐ซถ
4.1.3. The CLNP Address Translation Tables โจ
okay bestie, these tables are where CLNP addresses get matched up with their physical addresses ๐ฆ Some interfaces don't use translation tables for this at all. If every interface is like that, the Address Translation table is empty, meaning zero entries ๐
OBJECT:
-------
clnpNetToMediaTable { clnp 23 }
Syntax:
SEQUENCE OF ClnpNetToMediaEntry
Access:
not-accessible
Status:
mandatory.
This is the CLNP Address Translation table for mapping from CLNP addresses to physical addresses ๐บ๏ธ
OBJECT:
-------
clnpNetToMediaEntry { clnpNetToMediaTable 1 }
Syntax:
ClnpNetToMediaEntry ::= SEQUENCE {
clnpNetToMediaIfIndex
INTEGER,
clnpNetToMediaPhysAddress
OCTET STRING,
clnpNetToMediaNetAddress
ClnpAddress,
clnpNetToMediaType
INTEGER,
clnpNetToMediaAge
INTEGER,
clnpNetToMediaHoldTime
INTEGER
}
Access:
not-accessible.
Status:
mandatory.
Each entry is one CLNP address to "physical" address equivalence ๐
OBJECT:
-------
clnpNetToMediaIfIndex { clnpNetToMediaEntry 1 }
Syntax:
INTEGER
Access:
read-write.
Status:
mandatory.
This is the interface where the entry's equivalence is effective. Whatever interface has a given value here is the same interface that has that same value in ifIndex ๐ง
OBJECT:
-------
clnpNetToMediaPhysAddress { clnpNetToMediaEntry 2 }
Syntax:
OCTET STRING
Access:
read-write.
Status:
mandatory.
This is the media-dependent "physical" address ๐
OBJECT:
-------
clnpNetToMediaNetAddress { clnpNetToMediaEntry 3 }
Syntax:
ClnpAddress
Access:
read-write.
Status:
mandatory.
This is the CLNP address that goes with the media-dependent "physical" address ๐
OBJECT:
-------
clnpNetToMediaType { clnpNetToMediaEntry 4 }
Syntax:
INTEGER {
other(1), -- none of the following
invalid(2), -- an invalidated mapping
dynamic(3),
static(4)
}
Access:
read-write.
Status:
mandatory.
This one tells you what kind of mapping it is ๐ Setting this object to invalid(2) invalidates the matching entry in the clnpNetToMediaTable. Basically it disassociates the interface from the mapping for that entry ๐
Whether the agent actually deletes an invalidated entry is up to the implementation, so management stations must be prepared to receive table info about entries that aren't in use anymore. To make sense of those, you have to look at the relevant clnpNetToMediaType object ๐
OBJECT:
-------
clnpNetToMediaAge { clnpNetToMediaEntry 5 }
Syntax:
INTEGER
Access:
read-write.
Status:
mandatory.
This is the number of seconds since the entry was last updated or confirmed as correct โฐ Heads up though: you can't call something "too old" unless you know what type of entry it is ๐ซถ
OBJECT:
-------
clnpNetToMediaHoldTime { clnpNetToMediaEntry 6 }
Syntax:
INTEGER
Access:
read-write.
Status:
mandatory.
This is how many seconds the entry will stay valid โณ Static entries should always report this field as -1 ๐ง
OBJECT:
-------
clnpMediaToNetTable { clnp 24 }
Syntax:
SEQUENCE OF ClnpMediaToNetEntry
Access:
not-accessible.
Status:
mandatory.
This is the CLNP Address Translation table for going the other way, from physical addresses back to CLNP addresses ๐
OBJECT:
-------
clnpMediaToNetEntry { clnpMediaToNetTable 1 }
Syntax:
ClnpMediaToNetEntry ::= SEQUENCE {
clnpMediaToNetIfIndex
INTEGER,
clnpMediaToNetNetAddress
ClnpAddress,
clnpMediaToNetPhysAddress
OCTET STRING,
clnpMediaToNetType
INTEGER,
clnpMediaToNetAge
INTEGER,
clnpMediaToNetHoldTime
INTEGER
}
Access:
not-accessible.
Status:
mandatory.
Each entry is one ClnpAddress to "physical" address equivalence ๐ธ
OBJECT:
-------
clnpMediaToNetIfIndex { clnpMediaToNetEntry 1 }
Syntax:
INTEGER
Access:
read-write.
Status:
mandatory.
Same deal as before: this is the interface where the equivalence works, and it's the same interface as the matching ifIndex value ๐ง
OBJECT:
-------
clnpMediaToNetAddress { clnpMediaToNetEntry 2 }
Syntax:
ClnpAddress
Access:
read-write.
Status:
mandatory.
This is the ClnpAddress that goes with the media-dependent "physical" address ๐
OBJECT:
-------
clnpMediaToNetPhysAddress { clnpMediaToNetEntry 3 }
Syntax:
OCTET STRING
Access:
read-write.
Status:
mandatory.
This is the media-dependent "physical" address ๐
OBJECT:
-------
clnpMediaToNetType { clnpMediaToNetEntry 4 }
Syntax:
INTEGER {
other(1), -- none of the following
invalid(2), -- an invalidated mapping
dynamic(3),
static(4)
}
Access:
read-write.
Status:
mandatory.
The type of mapping ๐ Setting this object to invalid(2) invalidates the matching entry in the clnpMediaToNetTable, which disassociates the interface from the mapping for that entry ๐
Deleting invalidated entries is up to the implementation, so management stations must be prepared to receive info about entries that aren't in use. To read those correctly, check the relevant clnpMediaToNetType object ๐
OBJECT:
-------
clnpMediaToNetAge { clnpMediaToNetEntry 5 }
Syntax:
INTEGER
Access:
read-write.
Status:
mandatory.
Seconds since the entry was last updated or confirmed as correct โฐ Same tea as before: "too old" only makes sense once you know the entry type ๐ซถ
OBJECT:
-------
clnpMediaToNetHoldTime { clnpMediaToNetEntry 6 }
Syntax:
INTEGER
Access:
read-write.
Status:
mandatory.
How many seconds the entry will be valid โณ Static entries should always report this as -1 ๐ง
4.2. The CLNP Error Group ๐
This group records the CLNP Error protocol and is recommended for all systems which support CLNP ๐ซถ Let's count those errors ๐
OBJECT:
-------
clnpInErrors { error 1 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of CLNP Error PDUs received by this entity ๐ฅ
OBJECT:
-------
clnpOutErrors { error 2 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of CLNP Error PDUs sent by this entity ๐ค
OBJECT:
-------
clnpInErrUnspecs { error 3 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of unspecified CLNP Error PDUs received by this entity ๐คทโโ๏ธ
OBJECT:
-------
clnpInErrProcs { error 4 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of protocol procedure CLNP Error PDUs received by this entity ๐
OBJECT:
-------
clnpInErrCksums { error 5 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of checksum CLNP Error PDUs received by this entity ๐งฎ
OBJECT:
-------
clnpInErrCongests { error 6 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of congestion drop CLNP Error PDUs received by this entity ๐
OBJECT:
-------
clnpInErrHdrs { error 7 }
Syntax:
Counter
Access:
read-only.
Status:
mandatory.
The number of header syntax CLNP Error PDUs received by this entity ๐ฆ
OBJECT:
-------
clnpInErrSegs { error 8 }
Syntax:
Counter
The first count here is about segmentation-disallowed Error PDUs that this entity received ๐ฅ Access is read-only and Status is mandatory, so it's a counter you can only peek at, not mess with ๐
OBJECT:
-------
clnpInErrIncomps { error 9 }
Syntax:
Counter
This one tracks incomplete PDU CLNP Error PDUs received by this entity ๐งฉ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpInErrDups { error 10 }
Syntax:
Counter
Next up are the duplicate option CLNP Error PDUs received by this entity ๐ฏโโ๏ธ Access is read-only and Status is mandatory โจ
OBJECT:
-------
clnpInErrUnreachDsts { error 11 }
Syntax:
Counter
Unreachable destination Error PDUs received by this entity get counted here ๐ซ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpInErrUnknownDsts { error 12 }
Syntax:
Counter
This counts unknown destination CLNP Error PDUs received by this entity ๐ต๏ธโโ๏ธ Access is read-only and Status is mandatory ๐ธ
OBJECT:
-------
clnpInErrSRUnspecs { error 13 }
Syntax:
Counter
Unspecified source route CLNP Error PDUs received by this entity are tallied here ๐บ๏ธ Access is read-only and Status is mandatory ๐ฆ
OBJECT:
-------
clnpInErrSRSyntaxes { error 14 }
Syntax:
Counter
Source route syntax CLNP Error PDUs received by this entity go in this counter ๐ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpInErrSRUnkAddrs { error 15 }
Syntax:
Counter
This one covers source route unknown address CLNP Error PDUs received by this entity ๐ Access is read-only and Status is mandatory ๐ซถ
OBJECT:
-------
clnpInErrSRBadPaths { error 16 }
Syntax:
Counter
Source route bad path CLNP Error PDUs received by this entity are counted here ๐ค๏ธ Access is read-only and Status is mandatory ๐ญ
OBJECT:
-------
clnpInErrHops { error 17 }
Syntax:
Counter
Hop count exceeded CLNP Error PDUs received by this entity get their tally here ๐ฆ Access is read-only and Status is mandatory ๐ฅ
OBJECT:
-------
clnpInErrHopReassms { error 18 }
Syntax:
Counter
This counts the hop count exceeded while reassembling CLNP Error PDUs received by this entity ๐งฉ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpInErrUnsOptions { error 19 }
Syntax:
Counter
Unsupported option CLNP Error PDUs received by this entity are counted here ๐
โโ๏ธ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpInErrUnsVersions { error 20 }
Syntax:
Counter
Version mismatch CLNP Error PDUs received by this entity show up in this counter ๐ Access is read-only and Status is mandatory โญ
OBJECT:
-------
clnpInErrUnsSecurities { error 21 }
Syntax:
Counter
Unsupported security option CLNP Error PDUs received by this entity get counted here ๐ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpInErrUnsSRs { error 22 }
Syntax:
Counter
This one tracks unsupported source route option CLNP Error PDUs received by this entity ๐งญ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpInErrUnsRRs { error 23 }
Syntax:
Counter
Unsupported record route option CLNP Error PDUs received by this entity are tallied here ๐ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpInErrInterferences { error 24 }
Syntax:
Counter
Reassembly interference CLNP Error PDUs received by this entity get counted in this one ๐ Access is read-only and Status is mandatory ๐ฆ
OBJECT:
-------
clnpOutErrUnspecs { error 25 }
Syntax:
Counter
Now we're on the sent side ๐ค Unspecified CLNP Error PDUs sent by this entity are counted here ๐ซง Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpOutErrProcs { error 26 }
Syntax:
Counter
Protocol procedure CLNP Error PDUs sent by this entity show up here ๐ Access is read-only and Status is mandatory โจ
OBJECT:
-------
clnpOutErrCksums { error 27 }
Syntax:
Counter
Checksum CLNP Error PDUs sent by this entity get counted in this one ๐งฎ Access is read-only and Status is mandatory ๐ธ
OBJECT:
-------
clnpOutErrCongests { error 28 }
Syntax:
Counter
Congestion drop CLNP Error PDUs sent by this entity are tallied here ๐ Access is read-only and Status is mandatory ๐ซถ
OBJECT:
-------
clnpOutErrHdrs { error 29 }
Syntax:
Counter
Header syntax CLNP Error PDUs sent by this entity get their count here ๐งพ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpOutErrSegs { error 30 }
Syntax:
Counter
This counts segmentation disallowed CLNP Error PDUs sent by this entity ๐ง Access is read-only and Status is mandatory ๐ฆ
OBJECT:
-------
clnpOutErrIncomps { error 31 }
Syntax:
Counter
Incomplete PDU CLNP Error PDUs sent by this entity are counted here ๐งฉ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpOutErrDups { error 32 }
Syntax:
Counter
Duplicate option CLNP Error PDUs sent by this entity get tallied in this counter ๐ฏโโ๏ธ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpOutErrUnreachDsts { error 33 }
Syntax:
Counter
Unreachable destination CLNP Error PDUs sent by this entity show up here ๐ซ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpOutErrUnknownDsts { error 34 }
Syntax:
Counter
Unknown destination CLNP Error PDUs sent by this entity are counted here ๐ต๏ธโโ๏ธ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpOutErrSRUnspecs { error 35 }
Syntax:
Counter
Unspecified source route CLNP Error PDUs sent by this entity get tallied here ๐บ๏ธ Access is read-only and Status is mandatory โญ
OBJECT:
-------
clnpOutErrSRSyntaxes { error 36 }
Syntax:
Counter
Source route syntax CLNP Error PDUs sent by this entity are counted in this one ๐ Access is read-only and Status is mandatory ๐ฅ
OBJECT:
-------
clnpOutErrSRUnkAddrs { error 37 }
Syntax:
Counter
Source route unknown address CLNP Error PDUs sent by this entity show up here ๐ Access is read-only and Status is mandatory ๐ฆ
OBJECT:
-------
clnpOutErrSRBadPaths { error 38 }
Syntax:
Counter
Source route bad path CLNP Error PDUs sent by this entity get counted here ๐ค๏ธ Access is read-only and Status is mandatory ๐
OBJECT:
-------
clnpOutErrHopss { error 39 }
Syntax:
Counter
Hop count exceeded CLNP Error PDUs sent by this entity are tallied here ๐ฆ Access is read-only and Status is mandatory โจ
OBJECT:
-------
clnpOutErrHopReassms { error 40 }
Syntax:
Counter
This counts the hop count exceeded while reassembling CLNP Error PDUs sent by this entity ๐งฉ Access is read-only and Status is mandatory ๐ธ
OBJECT:
-------
clnpOutErrUnsOptions { error 41 }
Syntax:
Counter
Unsupported option CLNP Error PDUs sent by this entity get counted here ๐
โโ๏ธ Access is read-only and Status is mandatory ๐ซถ
OBJECT:
-------
clnpOutErrUnsVersions { error 42 }
Syntax:
Counter
Version mismatch CLNP Error PDUs sent by this entity are counted in this one ๐ Access is read-only and Status is mandatory ๐
okay bestie, the last few error counters are giving ๐ Each one is a read-only Counter, and every one is mandatory ๐
OBJECT:
-------
clnpOutErrUnsSecurities { error 43 }
Syntax:
Counter
Definition:
The number of unsupported security option CLNP Error PDUs
sent by this entity.
Access:
read-only.
Status:
mandatory.
OBJECT:
-------
clnpOutErrUnsSRs { error 44 }
Syntax:
Counter
Definition:
The number of unsupported source route option CLNP Error
PDUs sent by this entity.
Access:
read-only.
Status:
mandatory.
OBJECT:
-------
clnpOutErrUnsRRs { error 45 }
Syntax:
Counter
Definition:
The number of unsupported record route option CLNP Error
PDUs sent by this entity.
Access:
read-only.
Status:
mandatory.
OBJECT:
-------
clnpOutErrInterferences { error 46 }
Syntax:
Counter
Definition:
The number of reassembly interference CLNP Error PDUs
sent by this entity.
Access:
read-only.
Status:
mandatory.
4.3. The ESIS Group โจ
The ESIS group is where the End System Intermediate System protocol lives ๐ง It's the bit that keeps track of neighbor reachability info, so it's basically the group chat that tells everyone who's still online ๐ซถ ngl, both ESs and ISs are expected to implement this group, as long as they're running CLNP. Here are the six counters:
OBJECT:
-------
esisESHin { es-is 1 }
Syntax:
Counter
Definition:
The number of ESH PDUs received by this entity.
Access:
read-only.
Status:
mandatory.
OBJECT:
-------
esisESHout { es-is 2 }
Syntax:
Counter
Definition:
The number of ESH PDUs sent by this entity.
Access:
read-only.
Status:
mandatory.
OBJECT:
-------
esisISHin { es-is 3 }
Syntax:
Counter
Definition:
The number of ISH PDUs received by this entity.
Access:
read-only.
Status:
mandatory.
OBJECT:
-------
esisISHout { es-is 4 }
Syntax:
Counter
Definition:
The number of ISH PDUs sent by this entity.
Access:
read-only.
Status:
mandatory.
OBJECT:
-------
esisRDUin { es-is 5 }
Syntax:
Counter
Definition:
The number of RDU PDUs received by this entity.
Access:
read-only.
Status:
mandatory.
OBJECT:
-------
esisRDUout { es-is 6 }
Syntax:
Counter
Definition:
The number of RDU PDUs sent by this entity.
Access:
read-only.
Status:
mandatory.
5. Definitions ๐
Okay, this is the actual MIB module, the part where all the names get their official IDs ๐ Everything below is copied exactly as the spec has it, so no touching ๐
CLNS-MIB DEFINITIONS ::= BEGIN
IMPORTS
experimental, OBJECT-TYPE, Counter
FROM RFC1155-SMI;
-- new type of NetworkAddress
ClnpAddress ::=
[APPLICATION 5]
IMPLICIT OCTET STRING (SIZE (1..21))
clns OBJECT IDENTIFIER ::= { experimental 1 }
clnp OBJECT IDENTIFIER ::= { clns 1 }
error OBJECT IDENTIFIER ::= { clns 2 }
echo OBJECT IDENTIFIER ::= { clns 3 }
es-is OBJECT IDENTIFIER ::= { clns 4 }
-- the General CLNP group
clnpForwarding OBJECT-TYPE
SYNTAX INTEGER {
is(1), -- entity is an
-- intermediate system
es(2) -- entity is an end system
-- and does not forward pdus
}
ACCESS read-write
STATUS mandatory
::= { clnp 1 }
clnpDefaultLifeTime OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnp 2 }
clnpInReceives OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 3 }
clnpInHdrErrors OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 4 }
clnpInAddrErrors OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 5 }
clnpForwPDUs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 6 }
clnpInUnknownNLPs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 7 }
clnpInUnknownULPs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 8 }
clnpInDiscards OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 9 }
clnpInDelivers OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 10 }
clnpOutRequests OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 11 }
clnpOutDiscards OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 12 }
clnpOutNoRoutes OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 13 }
clnpReasmTimeout OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
::= { clnp 14 }
clnpReasmReqds OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 15 }
clnpReasmOKs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 16 }
clnpReasmFails OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 17 }
clnpSegOKs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 18 }
clnpSegFails OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 19 }
clnpSegCreates OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 20 }
clnpInOpts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 25 }
clnpOutOpts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { clnp 26 }
-- the CLNP Interface table
clnpAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF ClnpAddrEntry
ACCESS not-accessible
STATUS mandatory
::= { clnp 21 }
clnpAddrEntry OBJECT-TYPE
SYNTAX ClnpAddrEntry
ACCESS not-accessible
STATUS mandatory
-- INDEX { clnpAdEntAddr }
::= { clnpAddrTable 1 }
ClnpAddrEntry ::= SEQUENCE {
clnpAdEntAddr
ClnpAddress,
clnpAdEntIfIndex
INTEGER,
clnpAdEntReasmMaxSize
INTEGER (0..65535)
}
clnpAdEntAddr OBJECT-TYPE
SYNTAX ClnpAddress
ACCESS read-only
STATUS mandatory
::= { clnpAddrEntry 1 }
clnpAdEntIfIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
::= { clnpAddrEntry 2 }
clnpAdEntReasmMaxSize OBJECT-TYPE
SYNTAX INTEGER (0..65535)
ACCESS read-only
STATUS mandatory
::= { clnpAddrEntry 3 }
-- the CLNP Routing table
clnpRoutingTable OBJECT-TYPE
SYNTAX SEQUENCE OF ClnpRouteEntry
ACCESS not-accessible
STATUS mandatory
::= { clnp 22 }
clnpRouteEntry OBJECT-TYPE
SYNTAX ClnpRouteEntry
ACCESS not-accessible
STATUS mandatory
-- INDEX { clnpRouteDest }
::= { clnpRoutingTable 1 }
ClnpRouteEntry ::= SEQUENCE {
clnpRouteDest
ClnpAddress,
clnpRouteIfIndex
INTEGER,
clnpRouteMetric1
INTEGER,
clnpRouteMetric2
INTEGER,
clnpRouteMetric3
INTEGER,
clnpRouteMetric4
INTEGER,
clnpRouteNextHop
ClnpAddress,
clnpRouteType
INTEGER,
clnpRouteProto
INTEGER,
clnpRouteAge
INTEGER
}
clnpRouteDest OBJECT-TYPE
SYNTAX ClnpAddress
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 1 }
and that's where we're at, bestie โจ the routing table is just getting started ๐
okay bestie, the routing table entries keep going ๐ฃ๏ธโจ
clnpRouteIfIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 2 }
clnpRouteMetric1 OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 3 }
clnpRouteMetric2 OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 4 }
clnpRouteMetric3 OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 5 }
clnpRouteMetric4 OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 6 }
clnpRouteNextHop OBJECT-TYPE
SYNTAX ClnpAddress
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 7 }
clnpRouteType OBJECT-TYPE
SYNTAX INTEGER {
other(1), -- none of the
-- following
invalid(2), -- an invalidated
-- route
-- route to directly
direct(3), -- connected
-- (sub-)network
-- route to a
-- non-local
remote(4) -- host/network
-- /sub-network
}
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 8 }
clnpRouteProto OBJECT-TYPE
SYNTAX INTEGER {
other(1), -- none of the
-- following
-- non-protocol
-- information
-- e.g., manually
local(2), -- configured entries
-- set via a network
netmgmt(3), -- management
-- protocol
-- similar to
-- ipRouteProto
-- but omits several
-- IP-specific
-- protocols
is-is(9),
ciscoIgrp(11),
bbnSpfIgp(12),
ospf(13),
bgp(14)
}
ACCESS read-only
STATUS mandatory
::= { clnpRouteEntry 9 }
clnpRouteAge OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpRouteEntry 10 }
-- the CLNP Address Translation tables
clnpNetToMediaTable OBJECT-TYPE
SYNTAX SEQUENCE OF ClnpNetToMediaEntry
ACCESS not-accessible
STATUS mandatory
::= { clnp 23 }
clnpNetToMediaEntry OBJECT-TYPE
SYNTAX ClnpNetToMediaEntry
ACCESS not-accessible
STATUS mandatory
-- INDEX { clnpNetToMediaIfIndex,
-- clnpNetToMediaNetAddress }
::= { clnpNetToMediaTable 1 }
ClnpNetToMediaEntry ::= SEQUENCE {
clnpNetToMediaIfIndex
INTEGER,
clnpNetToMediaPhysAddress
OCTET STRING,
clnpNetToMediaNetAddress
ClnpAddress,
clnpNetToMediaType
INTEGER,
clnpNetToMediaAge
INTEGER,
clnpNetToMediaHoldTime
INTEGER
}
clnpNetToMediaIfIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpNetToMediaEntry 1 }
clnpNetToMediaPhysAddress OBJECT-TYPE
SYNTAX OCTET STRING
ACCESS read-write
STATUS mandatory
::= { clnpNetToMediaEntry 2 }
clnpNetToMediaNetAddress OBJECT-TYPE
SYNTAX ClnpAddress
ACCESS read-write
STATUS mandatory
::= { clnpNetToMediaEntry 3 }
clnpNetToMediaType OBJECT-TYPE
SYNTAX INTEGER {
other(1), -- none of the
-- following
invalid(2), -- an invalidated
-- mapping
dynamic(3),
static(4)
}
ACCESS read-write
STATUS mandatory
::= { clnpNetToMediaEntry 4 }
clnpNetToMediaAge OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpNetToMediaEntry 5 }
clnpNetToMediaHoldTime OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpNetToMediaEntry 6 }
clnpMediaToNetTable OBJECT-TYPE
SYNTAX SEQUENCE OF ClnpMediaToNetEntry
ACCESS not-accessible
STATUS mandatory
::= { clnp 24 }
clnpMediaToNetEntry OBJECT-TYPE
SYNTAX ClnpMediaToNetEntry
ACCESS not-accessible
STATUS mandatory
-- INDEX { clnpMediaToNetIfIndex,
-- clnpMediaToNetPhysAddress }
::= { clnpMediaToNetTable 1 }
ClnpMediaToNetEntry ::= SEQUENCE {
clnpMediaToNetIfIndex
INTEGER,
clnpMediaToNetNetAddress
ClnpAddress,
clnpMediaToNetPhysAddress
OCTET STRING,
clnpMediaToNetType
INTEGER,
clnpMediaToNetAge
INTEGER,
clnpMediaToNetHoldTime
INTEGER
}
clnpMediaToNetIfIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpMediaToNetEntry 1 }
clnpMediaToNetNetAddress OBJECT-TYPE
SYNTAX ClnpAddress
ACCESS read-write
STATUS mandatory
::= { clnpMediaToNetEntry 2 }
clnpMediaToNetPhysAddress OBJECT-TYPE
SYNTAX OCTET STRING
ACCESS read-write
STATUS mandatory
::= { clnpMediaToNetEntry 3 }
clnpMediaToNetType OBJECT-TYPE
SYNTAX INTEGER {
other(1), -- none of the
-- following
invalid(2), -- an invalidated
-- mapping
dynamic(3),
static(4)
}
ACCESS read-write
STATUS mandatory
::= { clnpMediaToNetEntry 4 }
clnpMediaToNetAge OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpMediaToNetEntry 5 }
clnpMediaToNetHoldTime OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
::= { clnpMediaToNetEntry 6 }
-- the CLNP Error Group
clnpInErrors OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 1 }
clnpOutErrors OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 2 }
clnpInErrUnspecs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 3 }
clnpInErrProcs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 4 }
clnpInErrCksums OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 5 }
clnpInErrCongests OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 6 }
clnpInErrHdrs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 7 }
clnpInErrSegs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 8 }
clnpInErrIncomps OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 9 }
clnpInErrDups OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 10 }
clnpInErrUnreachDsts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 11 }
that's the whole routing table, the address translation tables and the error counters, all lined up like a runway ๐ ๐ฆ
Okay so this is where the error and ES-IS counters wrap up, bestie ๐ Every one of these is a read-only Counter that's marked mandatory, and each one lives under its own OID number. Then the module hits its END ๐
clnpInErrUnknownDsts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 12 }
clnpInErrSRUnspecs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 13 }
clnpInErrSRSyntaxes OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 14 }
clnpInErrSRUnkAddrs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 15 }
clnpInErrSRBadPaths OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 16 }
clnpInErrHops OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 17 }
clnpInErrHopReassms OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 18 }
clnpInErrUnsOptions OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 19 }
clnpInErrUnsVersions OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 20 }
clnpInErrUnsSecurities OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 21 }
clnpInErrUnsSRs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 22 }
clnpInErrUnsRRs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 23 }
clnpInErrInterferences OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 24 }
clnpOutErrUnspecs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 25 }
clnpOutErrProcs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 26 }
clnpOutErrCksums OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 27 }
clnpOutErrCongests OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 28 }
clnpOutErrHdrs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 29 }
clnpOutErrSegs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 30 }
clnpOutErrIncomps OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 31 }
clnpOutErrDups OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 32 }
clnpOutErrUnreachDsts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 33 }
clnpOutErrUnknownDsts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 34 }
clnpOutErrSRUnspecs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 35 }
clnpOutErrSRSyntaxes OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 36 }
clnpOutErrSRUnkAddrs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 37 }
clnpOutErrSRBadPaths OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 38 }
clnpOutErrHops OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 39 }
clnpOutErrHopReassms OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 40 }
clnpOutErrUnsOptions OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 41 }
clnpOutErrUnsVersions OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 42 }
clnpOutErrUnsSecurities OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 43 }
clnpOutErrUnsSRs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 44 }
clnpOutErrUnsRRs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 45 }
clnpOutErrInterferences OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { error 46 }
-- the CLNP Echo Group
-- the ES-IS Group
esisESHins OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { es-is 1 }
esisESHouts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { es-is 2 }
esisISHins OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { es-is 3 }
esisISHouts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { es-is 4 }
esisRDUins OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { es-is 5 }
esisRDUouts OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
::= { es-is 6 }
END
6. Identification of OBJECT instances for use with the SNMP โจ
Every object type in the MIB gets its name spelled out, either in the Internet-standard MIB itself or in other docs that follow SMI naming rules. ๐ The SMI also says that any conformant management protocol needs a way to point at individual instances of those types for one particular network element. Super important, obviously ๐
Each instance is identified in SNMP operations by a unique name called its "variable name." ๐ฆ Usually that name is an OBJECT IDENTIFIER shaped like x.y. The x is the name of a non-aggregate object type from the MIB, and the y is an OBJECT IDENTIFIER fragment that picks out the exact instance, in a way that depends on the object type.
Why does this matter? It's what makes the SNMP get-next operator so powerful ๐ฅ Related variables get names that sit right next to each other when you sort every variable name in the MIB, so walking through them is smooth and easy.
Object types that follow one of the type-specific naming conventions below get names built that way. Anything that doesn't fit one of those conventions gets an OBJECT IDENTIFIER of the form x.0, where x is that object type's name in the MIB definition ๐ธ
For example, say you want the sysDescr instance from the Internet-standard MIB. The object class for sysDescr is:
iso org dod internet mgmt mib system sysDescr
1 3 6 1 2 1 1 1
So the object type, x, is 1.3.6.1.2.1.1.1, and then you append the instance sub-identifier 0. That makes 1.3.6.1.2.1.1.1.0 the one and only instance of sysDescr ๐
6.1. clnpAddrTable Object Type Names
Now for the CLNP-addressable network element. The name of one, x, is the OBJECT IDENTIFIER z, where z is the value of that network element's clnpAdEntAddr instance. Each octet of the ClnpAddress type gets written as a sub-identifier of the OBJECT IDENTIFIER ๐ง
For any object type whose defined name, n, starts with clnpAddrEntry, an instance, i, of that type gets an OBJECT IDENTIFIER of the form n.y. Here, y is the name of the CLNP-addressable network element that i gives information about ๐ฆ
Here's an example. Say you want the maximum reassembly size for an entry in the CLNP interface table that goes with the CLNP address NS+0504030201. The original text says the instance to use is:
clnpAdEntNetMask.5.5.4.3.2.1
Heads up, babe: the example describes the maximum reassembly size, but the name it uses is clnpAdEntNetMask. That's exactly how the original document words it, so it's written that way here too. ๐
6.2. clnpRoutingTable Object Type Names โจ
okay so, the name of a CLNP route, x, is the OBJECT IDENTIFIER z that you get by taking the value of that instance's clnpRouteDest object. Each octet of the ClnpAddress type becomes its own sub-identifier, so the destination turns into a dotted OBJECT IDENTIFIER ๐
For each object type, t, whose defined name, n, starts with clnpRoutingEntry, an instance, i, of t gets named with an OBJECT IDENTIFIER of the form n.y. Here y is the name of the CLNP route that i is telling you about ๐ฆ
Here's an example, bestie ๐. Say you want the next hop of the routing table entry for the destination NS+0504030201. You'd look up clnpRouteNextHop.5.5.4.3.2.1 and boom, that's your instance ๐ฅ
Also, the agent gets to decide whether multiple routes to the same destination are visible ๐ To make that happen, the agent is required to return one entry for a CLNP route, x, in the form n.y. It may also return info about other routes to that same destination using the form n.y.v, where v is an implementation-dependent small, non-negative integer. So yeah, it's flexible but still structured ๐
6.3. clnpNetToMediaTable Object Type Names โจ
ok so, a cached CLNP address, x, gets an OBJECT IDENTIFIER of the form s.z. Here's how the pieces fit together ๐งฉ
sis the value of that entry'sclnpNetToMediaIfIndexobject instance.zis the value of the CLNP address in theclnpNetToMediaNetAddressobject associated with x. Each octet of theClnpAddresstype is written as a sub-identifier of the OBJECT IDENTIFIER.
For each object type, t, whose defined name, n, starts with clnpNetToMediaEntry, an instance, i, of t gets named n.y. Here y is the name of the cached CLNP address that i describes ๐ธ
For example, imagine you want the media address of an entry in the address translation table for the CLNP address NS+0504030201 on interface 3. You'd use clnpNetToMediaPhysAddress.3.5.5.4.3.2.1 and you're set ๐ซถ
6.4. clnpMediaToNetTable Object Type Names โจ
this one's the mirror image, iykyk ๐ A cached media address, x, gets an OBJECT IDENTIFIER of the form s.z.
sis the value of that entry'sclnpMediaToNetIfIndexobject instance.zis the media address from theclnpMediaToNetMediaAddressobject associated with x. Each octet of the media address is written as a sub-identifier of the OBJECT IDENTIFIER.
For each object type, t, whose defined name, n, starts with clnpMediaToNetEntry, an instance, i, of t is named n.y, where y is the name of the cached media address that i is about ๐
Quick example: say you want the CLNP address of an entry in the address translation table for media address 08:00:20:00:38:ba on interface 3. The instance you want is clnpMediaToNetNetAddress.3.8.0.32.0.56.186 ๐ง
7. References โจ
[1] Cerf, V., "IAB Recommendations for the Development of Internet Network Management Standards", RFC 1052, IAB, April 1988.
[2] Cerf, V., "Report of the Second Ad Hoc Network Management Review Group", RFC 1109, NRI, August 1989.
[3] Rose, M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based Internets", RFC 1155, Performance Systems International and Hughes LAN Systems, May 1990.
[4] McCloghrie, K., and M. Rose, "Management Information Base for Network Management of TCP/IP-based Internets", RFC 1156, Hughes LAN Systems and Performance Systems International, May 1990.
[5] Case, J., M. Fedor, M. Schoffstall, and J. Davin, The Simple Network Management Protocol", RFC 1157, University of Tennessee at Knoxville, Performance Systems International, Performance Systems International, and the MIT Laboratory for Computer Science, May 1990.
[6] Rose, M., "Management Information Base for Network Management of TCP/IP-based internets: MIB-II", RFC 1158, Performance Systems International, May 1990.
[7] Information processing systems - Open Systems Interconnection, "Specification of Abstract Syntax Notation One (ASN.1)", International Organization for Standardization, International Standard 8824, December 1987.
[8] Information processing systems - Open Systems Interconnection, "Specification of Basic Encoding Rules for Abstract Notation One (ASN.1)", International Organization for Standardization, International Standard 8825, December 1987.
[9] Information processing systems - Data Communications - "Protocol for providing the Connectionless-mode Network Service and Provision of Underlying Service", International Organization for Standardization", International Standard 8473, May 1987.
[10] "End System to Intermediate System Routing Exchange Protocol for Use in Conjunction with the Protocol for the Provision of the Connectionless-mode Network Service (ISO 8473)", International Draft Proposal 9542.
[11] Kille, S., "A String Encoding of Presentation Address", Research Note RN/89/14, Department of Computer Science, University College London, February 1989.
8. Security Considerations โจ
Security issues are not discussed in this memo. ๐ญ Hold up, that's the whole security section, so if you're building on this, go find extra protection elsewhere ๐ฅ
9. Author's Address ๐
Greg Satz
cisco Systems, Inc.
1350 Willow Road
Menlo Park, CA 94025
Phone: (415) 326-1941
Email: Satz@CISCO.COM
That's the whole RFC, bestie! ๐โจ
๐ฆ where this page comes from
- ietf: rfc1162 1990-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms