RFC 4293
Management Information Base for the Internet Protocol (IP)
RFC 4293: Management Information Base for the Internet Protocol (IP) ๐
okay bestie, let's get into it โจ this is RFC 4293, and it's all about the IP MIB, which is the set of managed objects for IP (IPv4 and IPv6) that network management tools can read. Here's the title block:
- Network Working Group ๐ธ
- Editor: S. Routhier, Ed. ๐
- Date: April 2006 ๐
- Category: Standards Track ๐
- Obsoletes: 2011, 2465, 2466 ๐ซถ
- Number: RFC 4293 ๐ฆ
Status of This Memo โจ
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. ๐
Copyright Notice ๐
Copyright (C) The Internet Society (2006).
Abstract ๐
This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects used for implementations of the Internet Protocol (IP) in an IP version independent manner. This memo obsoletes RFCs 2011, 2465, and 2466. ๐ง
Table of Contents ๐
1. The Internet-Standard Management Framework ......................2
2. Revision History ................................................3
3. Overview ........................................................3
3.1. Multi-Stack Implementations ................................3
3.2. Discussion of Tables and Groups ............................3
3.2.1. General Objects .....................................4
3.2.2. Interface Tables ....................................4
3.2.3. IP Statistics Tables ................................4
3.2.4. Internet Address Prefix Table .......................8
3.2.5. Internet Address Table ..............................8
3.2.6. Internet Address Translation Table ..................9
3.2.7. IPv6 Scope Zone Index Table .........................9
3.2.8. Default Router Table ................................9
3.2.9. Router Advertisement Table ..........................9
3.2.10. ICMP Statistics Tables .............................9
3.2.11. Conformance and Compliance ........................10
3.2.12. Deprecated Objects ................................10
4. Updating Implementations .......................................10
4.1. Updating an Implementation of the IPv4-only IP-MIB ........11
4.2. Updating an Implementation of the IPv6-MIB ................12
5. Definitions ....................................................13
6. Previous Work .................................................116
7. References ....................................................116
7.1. Normative References .....................................116
7.2. Informative References ...................................117
8. Security Considerations .......................................118
9. Acknowledgements ..............................................120
10. Authors ......................................................120
1. The Internet-Standard Management Framework ๐
okay so, for a full tour of the documents that make up the current Internet-Standard Management Framework, go check section 7 of RFC 3410 [9]. it's giving background, and it's worth the read ๐
Managed objects are accessed through a virtual information store called the Management Information Base, or MIB ๐๏ธ MIB objects are generally accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined using the mechanisms in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant to the SMIv2, which is described in STD 58, RFC 2578 [1], STD 58, RFC 2579 [2] and STD 58, RFC 2580 [3]. the whole alphabet soup is the point, bestie ๐ซ
2. Revision History ๐ฆ
one of the main goals of this revision of the IP MIB is to make a single set of objects that describes and manages IP modules in an IP version independent way ๐ RFCs 2465 and 2466 had created a set of objects that was independent from RFC 2011, and this document merges those three documents into one unified set. the ipSystemStatsTable and ipIfStatsTable tables are examples of objects that got updated to be IP version independent. both contain counters for IP traffic statistics that started out in much earlier MIBs, and both include an IP address type so the information can be separated by IP version. iconic glow-up ๐ฅ
another goal here is to make IPv6 nodes easier to manage by adding new objects โจ some of these tables, like ipDefaultRouterTable, may be useful on both IPv4 and IPv6 nodes, while others, like ipv6RouterAdvertTable, are specific to a single protocol. the vibe is "shared where it makes sense, specific where it doesn't" ๐
3. Overview ๐ง
3.1. Multi-Stack Implementations ๐
this MIB doesn't natively support implementations that run multiple stacks sharing the same address type, not gonna lie ๐ one option for supporting those designs is to give each stack within an address type its own separate context. those contexts can then be selected based on the context name, and the Entity MIB and the View-based Access Control Model (VACM) Context Table provide ways to list the supported contexts ๐ซถ
3.2. Discussion of Tables and Groups ๐
this MIB is made up of a small number of discrete objects and a series of tables, and it's meant to be the base for managing IPv4 and IPv6 entities ๐
some objects are meant to be included in every entity, but some are only conditionally mandatory. the unconditionally mandatory objects are mostly counters for IP and ICMP statistics. the conditionally mandatory objects fall into a few groups: objects for higher bandwidth situations, objects for use with IPv4, objects for use with IPv6, and objects for use on IPv6 routers. in short, it is not expected that every entity will implement all of the objects in this MIB, so the reader should check the conformance and compliance section to see which objects are appropriate for a given entity ๐
3.2.1. General Objects ๐ธ
in both IPv4 and IPv6, there are only a small number of "knobs" for controlling the general IP stack ๐๏ธ most controls live in more specific settings, like the ones for controlling a router or the TCP engine.
this MIB defines three general knobs in total, and only two of them are used for both IPv4 and IPv6 โจ
objects are included for both protocols to enable or disable forwarding and to set limits on the lifetime of a packet (ttl or hop count) ๐ฆ
the third knob, the timeout period for reassembling fragments, is only defined for IPv4, since IPv6 specifies this value directly ๐
each group of objects is required when implementing its respective protocol ๐ซถ
3.2.2. Interface Tables ๐
this MIB includes a pair of tables that convey interface-specific information about the IPv4 and IPv6 protocols ๐ง
pls take special note of the administrative status objects ๐ these are defined so each protocol can selectively enable or disable interfaces. they can be used together with the ifAdminStatus object to manipulate interfaces as needed. with these three objects, an interface can be fully enabled or disabled, and connected to the IPv4 stack, the IPv6 stack, or both stacks. setting ifAdminStatus to "down" should not affect the protocol-specific status objects ๐
each interface table is required when implementing its respective protocol ๐
3.2.3. IP Statistics Tables โจ
okay so the IP statistics tables (ipSystemStatsTable and ipIfStatsTable) are where the counting happens ๐งฎ they track how many datagrams and octets an entity has processed. bestie, this version uses ONE table for multiple address types, which is a glow-up from the previous attempt ๐ usually you only care about IPv4 and IPv6, but the table can handle other types if it needs to ๐
The first table, ipSystemStatsTable, is the system-wide view ๐ธ the counters cover all interfaces, not just a specific set. Its index is a single sub-id, and that sub-id is the address type the statistics were counted for.
The second table, ipIfStatsTable, is the interface-specific one ๐ฆ its index is made of two sub-ids. The first is the address type (IPv4 and IPv6), and the second picks out the interface within that address type.
Both tables have pretty much the same set of objects and count the same things, just at different granularity ๐ the object ID "ipSystemStatsEntry.2" is reserved on purpose, so the counters in the first table line up with their matching counterparts in the second table. iykyk, it's all about keeping things consistent ๐ซถ
Some objects you should totally know about are ipSystemStatsDiscontinuityTime, ipIfStatsDiscontinuityTime, ipSystemsStatsRefreshRate, and ipIfStatsRefreshRate. these are less about the system itself and more about the row they live in โจ
The discontinuity objects let a management entity figure out whether a discontinuity event has happened, one that would make its understanding of the counters invalid ๐ญ the system getting re-initialized or an interface being cycled are possible examples of that kind of event.
The refresh objects help a management entity pick a proper polling interval for the rest of the objects ๐ฐ๏ธ very main character energy for the polling schedule.
The Case diagram below shows the general order of the packet counters ๐บ๏ธ to keep things from getting too cluttered, the "ipSystemStats" and "ipIfStats" prefixes have been dropped from each counter name.
from from
interface upper
layers
V V
| |
+ InReceives (1) + OutRequests
| |
| |
+--> InHdrErrors (5) +--> OutNoRoutes
| |
| |
+->-+ InMcastPkts (1) |
| V |
+-<-+ |
| |
+->-+ InBcastPkts (1) |
| V |
+-<-+ |
| |
| |
+--> InTruncatedPkts (5) |
| |
| |
+--> InAddrErrors |
| |
| |
+--> InDiscards (2) |
| |
| |
+--------+------->------+----->-----+----->-----+
| InForwDatagrams (6) | OutForwDatagrams (6)|
| V +->-+ OutFragReqds
| InNoRoutes | | (packets)
/ (local packet (3) | |
| IF is that of the address | +--> OutFragFails
| and may not be the receiving IF) | | (packets)
| | |
| | V OutFragOks
| | | (packets) (7)
| | |
+->-+ ReasmReqds (fragments) +-<-+ OutFragCreates
| | | (fragments)
| | |
| +--> ReasmFails (fragments (4)) +->-+ OutMcastPkts (1)
| | | V
| | +-<-+
+-<-+ ReasmOKs (reassembled packets) |
| +->-+ OutBcastPkts (1)
| | V
+--> InUnknownProtos +-<-+
| |
| |
+--> InDiscards (2) +--> OutDiscards (2)
| |
| |
+ InDelivers + OutTransmits (1)
| |
V V
to to
upper interface
layers
Here's the decoder ring for the footnotes ๐
(1) the HC counters and octet counters are also found at these points, but they got left out so the diagram doesn't get messy ๐
(2) the discard counters can increment at any point in the processing path ๐๏ธ anything dropped to the left of InNoRoutes bumps InDiscards, and anything dropped to the right gets counted in OutDiscards.
(3) local packets on the input side are counted on the interface tied to their destination address, which might not be the one they came in on ๐งญ this is because the original interface can get lost during processing, especially during re-assembly.
(4) some re-assembly algorithms can lose track of how many fragments they've handled, so some fragments might not get counted in this object ๐งฉ
(5) InTruncatedPkts should only go up if the frame had a valid header but was otherwise shorter than required ๐ frames too short to even hold a valid header should be counted as InHdrErrors instead.
(6) the forwarding objects may increment even for packets that started locally or are headed for the local host ๐ this happens when their addresses mean the local host would need to forward the packet to get it to the right interface.
(7) when fragmenting a packet, an entity should increment OutFragFails instead of OutDiscards ๐ฏ this keeps the equation FragOks + FragFails == FragRqds balanced, and it's giving math bestie energy ๐งฎโจ
The objects in both tables are split up across several conformance groups, based on how much bandwidth it takes to wrap the counters within an hour โณ the base system group is mandatory for all entities. the other system groups are optional depending on bandwidth, and the interface-specific groups are optional too.
3.2.4. Internet Address Prefix Table ๐ท
This table tells you about the prefixes this entity is using, including how long they last โฐ it gives other tables that use prefixes, like the ipAddressTable, a nice central spot to point at. So the MIB can supply prefix info for all addresses without a ton of duplicated storage and access ๐ it also makes it clear which addresses share the same prefix.
This table is required for IPv6 entities.
3.2.5. Internet Address Table ๐
This table lists the IP addresses (both IPv4 and IPv6) that this entity uses ๐ it also has some basic info about how and when each address was formed and last updated. basically, it lets a manager figure out who a given entity thinks it is ๐ช
This table is required for all IP entities.
3.2.6. Internet Address Translation Table ๐
This table maps IP layer addresses to physical addresses, the way Address Resolution Protocol (ARP) does for IPv4 or the neighbor discovery protocol does for IPv6 ๐ค
3.2.7. IPv6 Scope Zone Index Table ๐บ๏ธ
This table shows the zone index to interface mapping ๐ง by looking at it, a manager can see which groups of interfaces belong to a particular zone for a given scope.
The zone index information is only valid within a given entity ๐ the indexes used on one entity may not be comparable to the ones used on a different entity, so don't mix them up, bestie.
This table is required for IPv6 entities.
3.2.8. Default Router Table ๐
This table lists the default routers this entity knows about โจ it's meant to be a simple list you can display, showing info that end nodes may have been configured with or picked up through a simple system like IPv6 router advertisements. if a manager wants more complicated routing info, they should look at the routing-specific tables from other MIBs ๐
This table is required for all entities.
3.2.9. Router Advertisement Table ๐ข
This table holds the non-routing info an IPv6 router would use when building a router advertisement message ๐ it doesn't contain info about prefixes or other routing-specific stuff the router might advertise. the router should get that kind of info from its routing tables or from some routing-table-specific MIB, so no double-dipping ๐ โโ๏ธ
This table is only required for IPv6 router entities.
3.2.10. ICMP Statistics Tables ๐
okay there are two sets of ICMP statistics ๐ซง the first is a simple set of counters that track how many ICMP messages and errors this entity has processed.
the second gives way more detail about the ICMP messages this entity processes ๐ its index is made of two sub-ids. the first is the address type (IPv4 and IPv6), and the second is the particular message type being counted. a given row doesn't have to exist unless a message of that type has been processed. so the row for icmpMsgStatsType=X MAY be instantiated before the first message with Type=X is received or transmitted, but it MUST be instantated after that first message ๐ฅน after receiving or transmitting any later messages with Type=X, the relevant counter must be incremented ๐
Both of these tables are required for all entities.
3.2.11. Conformance and Compliance ๐
This MIB has several sets of objects ๐งฉ some are useful on all types of entities, while others only matter on a limited subset. the conformance section groups the objects into sets that can be discussed as units, and the compliance section then spells out which of those units are required in various circumstances.
The circumstances used in the compliance section are implementing IPv4, IPv6, or IPv6 router functions, and having a bandwidth of less than 20MB, between 20MB and 650MB, or greater than 650MB ๐ so there's a lot of combos, but it's all very organised, fr fr.
3.2.12. Deprecated Objects ๐ฐ๏ธ
This MIB also includes a set of deprecated objects from earlier iterations ๐ they're kept in as part of the historical record, so they're still here, just retired and iconic in their own way ๐
4. Updating Implementations โจ
okay so there are a few big classes of change that are required, and honestly it's a whole glow-up ๐
The first and most major change is that most of the previous objects have different object IDs and extra indexes, so they can handle different address types ๐ฆ The general counters for IP and ICMP are the main example. They got moved into the ipSystemStatsTable and icmpMsgStatsTable, respectively.
The second change is that every address object now covers both IPv4 and IPv6 addresses. There's also a new address type object that tells you which address type is in use ๐ธ
The third change is that a few new objects got added to the replacement for an existing table, like ipNetToPhysical ๐
The fourth change is the brand new tables, like ipIfStatsTable and ipDefaultRouterTable. The first one is based on the old statistics groups, but the second one is totally new to this MIB ๐
4.1. Updating an Implementation of the IPv4-only IP-MIB
Here are the more specific changes for IPv4. Note well: this list is not meant to be exhaustive, so you should look through the MIB for the full details ๐ง
Several of the general objects (ipForwarding, ipDefaultTTL, ipReasmTimeout) stay exactly the same ๐
Most of the rest of the general objects were counters, and they've moved into the ipSystemStatsTable. The basic instrumentation should stay the same, though you should check the object definitions for clarifications. If your counter variables aren't already in a structure, putting them in one would be super useful ๐ A few new objects were added to count extra stuff, so you'll need to add instrumentation code for those. And finally, your SNMP routines have to be updated to handle the new indexing ๐ญ
In addition to the ipSystemStatsTable, the MIB includes the ipIfStatsTable. This table counts the same things as the system table, but per interface. It's optional and you can totally ignore it ๐ซถ If you decide to implement it, you might want to collect the data per interface and then sum those counters to get the aggregate system-level statistics. But if you do give system-level stats by summing the interface-level counters, then no interface-level statistics can be lost. If an interface gets removed, its statistics must be retained โ ๏ธ
Heads up: if you sum the interface counters for the system stats, removing an interface must NOT wipe its numbers. The stats have to be kept around.
The ipAddrTable has loosely turned into the ipAddressTable. The general idea is still the same, but the ipAddressTable is different enough that writing new code might be easier than updating the old stuff ๐ฅ The main difference is a bunch of new objects. Also, ipAdEntReasmMaxSize has moved over to another table, the ipv4InterfaceTable. Same as before, your SNMP routines need updating for the new indexing ๐
The ipNetToMediaTable moved to the ipNetToPhysicalTable. These tables are pretty similar, so updating old code might be pretty straightforward โจ Again, your SNMP routines will need updating for the new indexing.
Two new tables are required: the ipv4InterfaceTable and the ipDefaultRouterTable. You also need several new ICMP counters ๐
Last but not least, there are several tables that are required for IPv6 but optional for IPv4. You can choose to implement them if you want ๐
4.2. Updating an Implementation of the IPv6-MIB
Now the more specific changes for IPv6. Same deal: note well that this isn't a full list, so check the MIB for the full details ๐ฆ
Two of the general objects, ipv6Forwarding and ipv6DefaultHopLimit, got renamed and given new object identifiers inside the ip branch. Otherwise they're unchanged. The new names are ipv6IpForwarding and ipv6IpDefaultHopLimit ๐
There's an ipv6InterfaceTable that holds some of the stuff from the ipv6IfTable, but the two are kind of different in concept ๐ง The ipv6IfTable was supposed to copy the ifTable, while the ipv6InterfaceTable is meant to be an addition to the ifTable. So items that were duplicated between the ifTable and the ipv6IfTable got removed, and some new objects were added ๐
The ipv6IfStatsTable looks most like the ipIfStatsTable, just with an extra index for the address type. Most of the instrumentation should be reusable ๐ซถ A few new objects were added to the ipIfStatsTable. Like before, the SNMP routines need updating for the new indexing. And yes, the ipIfStatsTable is optional and can be ignored ๐
The ipSystemStatsTable is effectively new, but it may be able to reuse most of the instrumentation from the old ipv6IfStatsTable. Same as the IPv4 discussion, one approach is to count the statistics for the ipIfStatsTable and then aggregate them when this table gets queried. Also same as IPv4, that only works if interfaces can't be removed, or if the statistics for removed interfaces are somehow kept ๐ธ
The ipv6AddrPrefixTable is now the ipAddressPrefixTable. The new table has an extra object and the extra index needed for IPv4 compatibility. As above, the SNMP routines need updating for the new indexing ๐ญ
The ipAddressTable is loosely based on the ipv6AddrTable, but it's changed a lot. It has several new objects and one of the indexes is gone ๐ฅ
The IPv6 routing information (ipv6RouteNumber, ipv6DiscardedRoutes, and ipv6RouteTable) has been removed from this MIB. The replacements or updates for it are in the update to the IP Forwarding Table MIB [16]. The ipv6NetToMediaTable has been converted to the ipNetToPhysicalTable. The new table has an extra object and the extra index needed for IPv4 compatibility. As above, the SNMP routines need updating for the new indexing โจ
The ICMP tables got a major makeover. The old tables needed counting per message and per interface. The new tables only need counting per message and per protocol, and they also include an aggregate of all messages per protocol ๐
On top of all that, several new tables were added. The ipv6ScopeZoneIndexTable and the ipDefaultRouterTable are both required on all IPv6 entities ๐ The ipv6RouterAdvertTable is only required on IPv6 routers ๐ฆ
5. Definitions ๐
Okay, the MIB module itself. It imports from the IF-MIB [6] and the INET-ADDRESS-MIB [7], and it references Neighbor Discovery [4], the IPv6 Stateless Address Autoconfiguration protocol [5], the Default Router Preferences document [8], ARP [10], and the IPv6 address architecture document [17] ๐ง
IP-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE,
Integer32, Counter32, IpAddress,
mib-2, Unsigned32, Counter64,
zeroDotZero FROM SNMPv2-SMI
PhysAddress, TruthValue,
TimeStamp, RowPointer,
TEXTUAL-CONVENTION, TestAndIncr,
RowStatus, StorageType FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
InetAddress, InetAddressType,
InetAddressPrefixLength,
InetVersion, InetZoneIndex FROM INET-ADDRESS-MIB
InterfaceIndex FROM IF-MIB;
ipMIB MODULE-IDENTITY
LAST-UPDATED "200602020000Z"
ORGANIZATION "IETF IPv6 MIB Revision Team"
CONTACT-INFO
"Editor:
Shawn A. Routhier
Interworking Labs
108 Whispering Pines Dr. Suite 235
Scotts Valley, CA 95066
USA
EMail: <sar@iwl.com>"
DESCRIPTION
"The MIB module for managing IP and ICMP implementations, but
excluding their management of IP routes.
Copyright (C) The Internet Society (2006). This version of
this MIB module is part of RFC 4293; see the RFC itself for
full legal notices."
REVISION "200602020000Z"
DESCRIPTION
"The IP version neutral revision with added IPv6 objects for
ND, default routers, and router advertisements. As well as
being the successor to RFC 2011, this MIB is also the
successor to RFCs 2465 and 2466. Published as RFC 4293."
REVISION "199411010000Z"
DESCRIPTION
"A separate MIB module (IP-MIB) for IP and ICMP management
objects. Published as RFC 2011."
REVISION "199103310000Z"
DESCRIPTION
"The initial revision of this MIB module was part of MIB-II,
which was published as RFC 1213."
::= { mib-2 48}
--
-- The textual conventions we define and use in this MIB.
--
IpAddressOriginTC ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The origin of the address.
manual(2) indicates that the address was manually configured
to a specified address, e.g., by user configuration.
dhcp(4) indicates an address that was assigned to this
system by a DHCP server.
linklayer(5) indicates an address created by IPv6 stateless
auto-configuration.
random(6) indicates an address chosen by the system at
random, e.g., an IPv4 address within 169.254/16, or an RFC
3041 privacy address."
SYNTAX INTEGER {
other(1),
manual(2),
dhcp(4),
linklayer(5),
random(6)
}
IpAddressStatusTC ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The status of an address. Most of the states correspond to
states from the IPv6 Stateless Address Autoconfiguration
protocol.
The preferred(1) state indicates that this is a valid
address that can appear as the destination or source address
of a packet.
The deprecated(2) state indicates that this is a valid but
deprecated address that should no longer be used as a source
address in new communications, but packets addressed to such
an address are processed as expected.
The invalid(3) state indicates that this isn't a valid
address and it shouldn't appear as the destination or source
address of a packet.
The inaccessible(4) state indicates that the address is not
accessible because the interface to which this address is
assigned is not operational.
The unknown(5) state indicates that the status cannot be
determined for some reason.
The tentative(6) state indicates that the uniqueness of the
address on the link is being verified. Addresses in this
state should not be used for general communication and
should only be used to determine the uniqueness of the
address.
The duplicate(7) state indicates the address has been
determined to be non-unique on the link and so must not be
used.
The optimistic(8) state indicates the address is available
for use, subject to restrictions, while its uniqueness on
a link is being verified.
In the absence of other information, an IPv4 address is
always preferred(1)."
REFERENCE "RFC 2462"
SYNTAX INTEGER {
preferred(1),
deprecated(2),
invalid(3),
inaccessible(4),
unknown(5),
tentative(6),
duplicate(7),
optimistic(8)
}
Okay bestie, the MIB keeps going and it's still giving main character energy ๐ฆโจ
IpAddressPrefixOriginTC ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The origin of this prefix.
manual(2) indicates a prefix that was manually configured.
wellknown(3) indicates a well-known prefix, e.g., 169.254/16
for IPv4 auto-configuration or fe80::/10 for IPv6 link-local
addresses. Well known prefixes may be assigned by IANA,
the address registries, or by specification in a standards
track RFC.
dhcp(4) indicates a prefix that was assigned by a DHCP
server.
routeradv(5) indicates a prefix learned from a router
advertisement.
Note: while IpAddressOriginTC and IpAddressPrefixOriginTC
are similar, they are not identical. The first defines how
an address was created, while the second defines how a
prefix was found."
SYNTAX INTEGER {
other(1),
manual(2),
wellknown(3),
dhcp(4),
routeradv(5)
}
Ipv6AddressIfIdentifierTC ::= TEXTUAL-CONVENTION
DISPLAY-HINT "2x:"
STATUS current
DESCRIPTION
"This data type is used to model IPv6 address
interface identifiers. This is a binary string
of up to 8 octets in network byte-order."
SYNTAX OCTET STRING (SIZE (0..8))
--
-- the IP general group
-- some objects that affect all of IPv4
--
ip OBJECT IDENTIFIER ::= { mib-2 4 }
ipForwarding OBJECT-TYPE
SYNTAX INTEGER {
forwarding(1), -- acting as a router
notForwarding(2) -- NOT acting as a router
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The indication of whether this entity is acting as an IPv4
router in respect to the forwarding of datagrams received
by, but not addressed to, this entity. IPv4 routers forward
datagrams. IPv4 hosts do not (except those source-routed
via the host).
When this object is written, the entity should save the
change to non-volatile storage and restore the object from
non-volatile storage upon re-initialization of the system.
Note: a stronger requirement is not used because this object
was previously defined."
::= { ip 1 }
ipDefaultTTL OBJECT-TYPE
SYNTAX Integer32 (1..255)
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The default value inserted into the Time-To-Live field of
the IPv4 header of datagrams originated at this entity,
whenever a TTL value is not supplied by the transport layer
protocol.
When this object is written, the entity should save the
change to non-volatile storage and restore the object from
non-volatile storage upon re-initialization of the system.
Note: a stronger requirement is not used because this object
was previously defined."
::= { ip 2 }
ipReasmTimeout OBJECT-TYPE
SYNTAX Integer32
UNITS "seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of seconds that received fragments are
held while they are awaiting reassembly at this entity."
::= { ip 13 }
--
-- the IPv6 general group
-- Some objects that affect all of IPv6
--
ipv6IpForwarding OBJECT-TYPE
SYNTAX INTEGER {
forwarding(1), -- acting as a router
notForwarding(2) -- NOT acting as a router
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The indication of whether this entity is acting as an IPv6
router on any interface in respect to the forwarding of
datagrams received by, but not addressed to, this entity.
IPv6 routers forward datagrams. IPv6 hosts do not (except
those source-routed via the host).
When this object is written, the entity SHOULD save the
change to non-volatile storage and restore the object from
non-volatile storage upon re-initialization of the system."
::= { ip 25 }
ipv6IpDefaultHopLimit OBJECT-TYPE
SYNTAX Integer32 (0..255)
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The default value inserted into the Hop Limit field of the
IPv6 header of datagrams originated at this entity whenever
a Hop Limit value is not supplied by the transport layer
protocol.
When this object is written, the entity SHOULD save the
change to non-volatile storage and restore the object from
non-volatile storage upon re-initialization of the system."
REFERENCE "RFC 2461 Section 6.3.2"
::= { ip 26 }
--
-- IPv4 Interface Table
--
ipv4InterfaceTableLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion at which
a row in the ipv4InterfaceTable was added or deleted, or
when an ipv4InterfaceReasmMaxSize or an
ipv4InterfaceEnableStatus object was modified.
If new objects are added to the ipv4InterfaceTable that
require the ipv4InterfaceTableLastChange to be updated when
they are modified, they must specify that requirement in
their description clause."
::= { ip 27 }
ipv4InterfaceTable OBJECT-TYPE
SYNTAX SEQUENCE OF Ipv4InterfaceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table containing per-interface IPv4-specific
information."
::= { ip 28 }
ipv4InterfaceEntry OBJECT-TYPE
SYNTAX Ipv4InterfaceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing IPv4-specific information for a specific
interface."
INDEX { ipv4InterfaceIfIndex }
::= { ipv4InterfaceTable 1 }
Ipv4InterfaceEntry ::= SEQUENCE {
ipv4InterfaceIfIndex InterfaceIndex,
ipv4InterfaceReasmMaxSize Integer32,
ipv4InterfaceEnableStatus INTEGER,
ipv4InterfaceRetransmitTime Unsigned32
}
ipv4InterfaceIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index value that uniquely identifies the interface to
which this entry is applicable. The interface identified by
a particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipv4InterfaceEntry 1 }
ipv4InterfaceReasmMaxSize OBJECT-TYPE
SYNTAX Integer32 (0..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The size of the largest IPv4 datagram that this entity can
re-assemble from incoming IPv4 fragmented datagrams received
on this interface."
::= { ipv4InterfaceEntry 2 }
ipv4InterfaceEnableStatus OBJECT-TYPE
SYNTAX INTEGER {
up(1),
down(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The indication of whether IPv4 is enabled (up) or disabled
(down) on this interface. This object does not affect the
state of the interface itself, only its connection to an
IPv4 stack. The IF-MIB should be used to control the state
of the interface."
::= { ipv4InterfaceEntry 3 }
ipv4InterfaceRetransmitTime OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The time between retransmissions of ARP requests to a
neighbor when resolving the address or when probing the
reachability of a neighbor."
REFERENCE "RFC 1122"
DEFVAL { 1000 }
::= { ipv4InterfaceEntry 4 }
--
-- v6 interface table
--
ipv6InterfaceTableLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion at which
a row in the ipv6InterfaceTable was added or deleted or when
an ipv6InterfaceReasmMaxSize, ipv6InterfaceIdentifier,
ipv6InterfaceEnableStatus, ipv6InterfaceReachableTime,
ipv6InterfaceRetransmitTime, or ipv6InterfaceForwarding
object was modified.
If new objects are added to the ipv6InterfaceTable that
require the ipv6InterfaceTableLastChange to be updated when
they are modified, they must specify that requirement in
their description clause."
::= { ip 29 }
ipv6InterfaceTable OBJECT-TYPE
SYNTAX SEQUENCE OF Ipv6InterfaceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table containing per-interface IPv6-specific
information."
::= { ip 30 }
ipv6InterfaceEntry OBJECT-TYPE
SYNTAX Ipv6InterfaceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing IPv6-specific information for a given
interface."
INDEX { ipv6InterfaceIfIndex }
::= { ipv6InterfaceTable 1 }
Ipv6InterfaceEntry ::= SEQUENCE {
ipv6InterfaceIfIndex InterfaceIndex,
ipv6InterfaceReasmMaxSize Unsigned32,
ipv6InterfaceIdentifier Ipv6AddressIfIdentifierTC,
ipv6InterfaceEnableStatus INTEGER,
ipv6InterfaceReachableTime Unsigned32,
ipv6InterfaceRetransmitTime Unsigned32,
ipv6InterfaceForwarding INTEGER
}
ipv6InterfaceIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index value that uniquely identifies the interface to
which this entry is applicable. The interface identified by
a particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipv6InterfaceEntry 1 }
ipv6InterfaceReasmMaxSize OBJECT-TYPE
SYNTAX Unsigned32 (1500..65535)
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The size of the largest IPv6 datagram that this entity can
re-assemble from incoming IPv6 fragmented datagrams received
on this interface."
::= { ipv6InterfaceEntry 2 }
ipv6InterfaceIdentifier OBJECT-TYPE
SYNTAX Ipv6AddressIfIdentifierTC
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Interface Identifier for this interface. The Interface
Identifier is combined with an address prefix to form an
interface address.
By default, the Interface Identifier is auto-configured
according to the rules of the link type to which this
interface is attached.
A zero length identifier may be used where appropriate. One
possible example is a loopback interface."
::= { ipv6InterfaceEntry 3 }
-- This object ID is reserved as it was used in earlier versions of
-- the MIB module. In theory, OIDs are not assigned until the
-- specification is released as an RFC; however, as some companies
-- may have shipped code based on earlier versions of the MIB, it
-- seems best to reserve this OID. This OID had been
-- ipv6InterfacePhysicalAddress.
-- ::= { ipv6InterfaceEntry 4}
okay bestie, the ipv6 interface table is still going and it's giving main character energy ๐
ipv6InterfaceEnableStatus OBJECT-TYPE
SYNTAX INTEGER {
up(1),
down(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The indication of whether IPv6 is enabled (up) or disabled
(down) on this interface. This object does not affect the
state of the interface itself, only its connection to an
IPv6 stack. The IF-MIB should be used to control the state
of the interface.
When this object is written, the entity SHOULD save the
change to non-volatile storage and restore the object from
non-volatile storage upon re-initialization of the system."
::= { ipv6InterfaceEntry 5 }
ipv6InterfaceReachableTime OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The time a neighbor is considered reachable after receiving
a reachability confirmation."
REFERENCE "RFC 2461, Section 6.3.2"
::= { ipv6InterfaceEntry 6 }
ipv6InterfaceRetransmitTime OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The time between retransmissions of Neighbor Solicitation
messages to a neighbor when resolving the address or when
probing the reachability of a neighbor."
REFERENCE "RFC 2461, Section 6.3.2"
::= { ipv6InterfaceEntry 7 }
ipv6InterfaceForwarding OBJECT-TYPE
SYNTAX INTEGER {
forwarding(1), -- acting as a router
notForwarding(2) -- NOT acting as a router
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The indication of whether this entity is acting as an IPv6
router on this interface with respect to the forwarding of
datagrams received by, but not addressed to, this entity.
IPv6 routers forward datagrams. IPv6 hosts do not (except
those source-routed via the host).
This object is constrained by ipv6IpForwarding and is
ignored if ipv6IpForwarding is set to notForwarding. Those
systems that do not provide per-interface control of the
forwarding function should set this object to forwarding for
all interfaces and allow the ipv6IpForwarding object to
control the forwarding capability.
When this object is written, the entity SHOULD save the
change to non-volatile storage and restore the object from
non-volatile storage upon re-initialization of the system."
::= { ipv6InterfaceEntry 8 }
--
-- Per-Interface or System-Wide IP statistics.
--
-- The following two tables, ipSystemStatsTable and ipIfStatsTable,
-- are intended to provide the same counters at different granularities.
-- The ipSystemStatsTable provides system wide counters aggregating
-- the traffic counters for all interfaces for a given address type.
-- The ipIfStatsTable provides the same counters but for specific
-- interfaces rather than as an aggregate.
--
-- Note well: If a system provides both system-wide and interface-
-- specific values, the system-wide value may not be equal to the sum
-- of the interface-specific values across all interfaces due to e.g.,
-- dynamic interface creation/deletion.
--
-- Note well: Both of these tables contain some items that are
-- represented by two objects, representing the value in either 32
-- or 64 bits. For those objects, the 32-bit value MUST be the low
-- order 32 bits of the 64-bit value. Also note that the 32-bit
-- counters must be included when the 64-bit counters are included.
ipTrafficStats OBJECT IDENTIFIER ::= { ip 31 }
ipSystemStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF IpSystemStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table containing system wide, IP version specific
traffic statistics. This table and the ipIfStatsTable
contain similar objects whose difference is in their
granularity. Where this table contains system wide traffic
statistics, the ipIfStatsTable contains the same statistics
but counted on a per-interface basis."
::= { ipTrafficStats 1 }
ipSystemStatsEntry OBJECT-TYPE
SYNTAX IpSystemStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A statistics entry containing system-wide objects for a
particular IP version."
INDEX { ipSystemStatsIPVersion }
::= { ipSystemStatsTable 1 }
IpSystemStatsEntry ::= SEQUENCE {
ipSystemStatsIPVersion InetVersion,
ipSystemStatsInReceives Counter32,
ipSystemStatsHCInReceives Counter64,
ipSystemStatsInOctets Counter32,
ipSystemStatsHCInOctets Counter64,
ipSystemStatsInHdrErrors Counter32,
ipSystemStatsInNoRoutes Counter32,
ipSystemStatsInAddrErrors Counter32,
ipSystemStatsInUnknownProtos Counter32,
ipSystemStatsInTruncatedPkts Counter32,
ipSystemStatsInForwDatagrams Counter32,
ipSystemStatsHCInForwDatagrams Counter64,
ipSystemStatsReasmReqds Counter32,
ipSystemStatsReasmOKs Counter32,
ipSystemStatsReasmFails Counter32,
ipSystemStatsInDiscards Counter32,
ipSystemStatsInDelivers Counter32,
ipSystemStatsHCInDelivers Counter64,
ipSystemStatsOutRequests Counter32,
ipSystemStatsHCOutRequests Counter64,
ipSystemStatsOutNoRoutes Counter32,
ipSystemStatsOutForwDatagrams Counter32,
ipSystemStatsHCOutForwDatagrams Counter64,
ipSystemStatsOutDiscards Counter32,
ipSystemStatsOutFragReqds Counter32,
ipSystemStatsOutFragOKs Counter32,
ipSystemStatsOutFragFails Counter32,
ipSystemStatsOutFragCreates Counter32,
ipSystemStatsOutTransmits Counter32,
ipSystemStatsHCOutTransmits Counter64,
ipSystemStatsOutOctets Counter32,
ipSystemStatsHCOutOctets Counter64,
ipSystemStatsInMcastPkts Counter32,
ipSystemStatsHCInMcastPkts Counter64,
ipSystemStatsInMcastOctets Counter32,
ipSystemStatsHCInMcastOctets Counter64,
ipSystemStatsOutMcastPkts Counter32,
ipSystemStatsHCOutMcastPkts Counter64,
ipSystemStatsOutMcastOctets Counter32,
ipSystemStatsHCOutMcastOctets Counter64,
ipSystemStatsInBcastPkts Counter32,
ipSystemStatsHCInBcastPkts Counter64,
ipSystemStatsOutBcastPkts Counter32,
ipSystemStatsHCOutBcastPkts Counter64,
ipSystemStatsDiscontinuityTime TimeStamp,
ipSystemStatsRefreshRate Unsigned32
}
ipSystemStatsIPVersion OBJECT-TYPE
SYNTAX InetVersion
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP version of this row."
::= { ipSystemStatsEntry 1 }
-- This object ID is reserved to allow the IDs for this table's objects
-- to align with the objects in the ipIfStatsTable.
-- ::= { ipSystemStatsEntry 2 }
ipSystemStatsInReceives OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of input IP datagrams received, including
those received in error.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 3 }
ipSystemStatsHCInReceives OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of input IP datagrams received, including
those received in error. This object counts the same
datagrams as ipSystemStatsInReceives, but allows for larger
values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 4 }
ipSystemStatsInOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets received in input IP datagrams,
including those received in error. Octets from datagrams
counted in ipSystemStatsInReceives MUST be counted here.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 5 }
ipSystemStatsHCInOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets received in input IP datagrams,
including those received in error. This object counts the
same octets as ipSystemStatsInOctets, but allows for larger
values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 6 }
ipSystemStatsInHdrErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams discarded due to errors in
their IP headers, including version number mismatch, other
format errors, hop count exceeded, errors discovered in
processing their IP options, etc.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 7 }
ipSystemStatsInNoRoutes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams discarded because no route
could be found to transmit them to their destination.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 8 }
ipSystemStatsInAddrErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams discarded because the IP
address in their IP header's destination field was not a
valid address to be received at this entity. This count
includes invalid addresses (e.g., ::0). For entities
that are not IP routers and therefore do not forward
datagrams, this counter includes datagrams discarded
because the destination address was not a local address.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 9 }
okay bestie, these are the counters that keep track of every datagram, from unknown protocols to forwarded packets ๐ฆโจ
ipSystemStatsInUnknownProtos OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of locally-addressed IP datagrams received
successfully but discarded because of an unknown or
unsupported protocol.
When tracking interface statistics, the counter of the
interface to which these datagrams were addressed is
incremented. This interface might not be the same as the
input interface for some of the datagrams.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 10 }
ipSystemStatsInTruncatedPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams discarded because the
datagram frame didn't carry enough data.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 11 }
ipSystemStatsInForwDatagrams OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input datagrams for which this entity was not
their final IP destination and for which this entity
attempted to find a route to forward them to that final
destination. In entities that do not act as IP routers,
this counter will include only those datagrams that were
Source-Routed via this entity, and the Source-Route
processing was successful.
When tracking interface statistics, the counter of the
incoming interface is incremented for each datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 12 }
ipSystemStatsHCInForwDatagrams OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input datagrams for which this entity was not
their final IP destination and for which this entity
attempted to find a route to forward them to that final
destination. This object counts the same packets as
ipSystemStatsInForwDatagrams, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 13 }
ipSystemStatsReasmReqds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP fragments received that needed to be
reassembled at this interface.
When tracking interface statistics, the counter of the
interface to which these fragments were addressed is
incremented. This interface might not be the same as the
input interface for some of the fragments.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 14 }
ipSystemStatsReasmOKs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP datagrams successfully reassembled.
When tracking interface statistics, the counter of the
interface to which these datagrams were addressed is
incremented. This interface might not be the same as the
input interface for some of the datagrams.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 15 }
ipSystemStatsReasmFails OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of failures detected by the IP re-assembly
algorithm (for whatever reason: timed out, errors, etc.).
Note that this is not necessarily a count of discarded IP
fragments since some algorithms (notably the algorithm in
RFC 815) can lose track of the number of fragments by
combining them as they are received.
When tracking interface statistics, the counter of the
interface to which these fragments were addressed is
incremented. This interface might not be the same as the
input interface for some of the fragments.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 16 }
ipSystemStatsInDiscards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams for which no problems were
encountered to prevent their continued processing, but
were discarded (e.g., for lack of buffer space). Note that
this counter does not include any datagrams discarded while
awaiting re-assembly.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 17 }
ipSystemStatsInDelivers OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of datagrams successfully delivered to IP
user-protocols (including ICMP).
When tracking interface statistics, the counter of the
interface to which these datagrams were addressed is
incremented. This interface might not be the same as the
input interface for some of the datagrams.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 18 }
ipSystemStatsHCInDelivers OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of datagrams successfully delivered to IP
user-protocols (including ICMP). This object counts the
same packets as ipSystemStatsInDelivers, but allows for
larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 19 }
ipSystemStatsOutRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of IP datagrams that local IP user-
protocols (including ICMP) supplied to IP in requests for
transmission. Note that this counter does not include any
datagrams counted in ipSystemStatsOutForwDatagrams.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 20 }
ipSystemStatsHCOutRequests OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of IP datagrams that local IP user-
protocols (including ICMP) supplied to IP in requests for
transmission. This object counts the same packets as
ipSystemStatsOutRequests, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 21 }
ipSystemStatsOutNoRoutes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of locally generated IP datagrams discarded
because no route could be found to transmit them to their
destination.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 22 }
ipSystemStatsOutForwDatagrams OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of datagrams for which this entity was not their
final IP destination and for which it was successful in
finding a path to their final destination. In entities
that do not act as IP routers, this counter will include
only those datagrams that were Source-Routed via this
entity, and the Source-Route processing was successful.
When tracking interface statistics, the counter of the
outgoing interface is incremented for a successfully
forwarded datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 23 }
ipSystemStatsHCOutForwDatagrams OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of datagrams for which this entity was not their
final IP destination and for which it was successful in
finding a path to their final destination. This object
counts the same packets as ipSystemStatsOutForwDatagrams,
but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 24 }
๐ okay bestie, we're picking up with the output discard counter, and the OutFrag family is next. These are all the "how did my packets get on the way out" stats ๐ฆ
ipSystemStatsOutDiscards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of output IP datagrams for which no problem was
encountered to prevent their transmission to their
destination, but were discarded (e.g., for lack of
buffer space). Note that this counter would include
datagrams counted in ipSystemStatsOutForwDatagrams if any
such datagrams met this (discretionary) discard criterion.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 25 }
ipSystemStatsOutFragReqds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP datagrams that would require fragmentation
in order to be transmitted.
When tracking interface statistics, the counter of the
outgoing interface is incremented for a successfully
fragmented datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 26 }
ipSystemStatsOutFragOKs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP datagrams that have been successfully
fragmented.
When tracking interface statistics, the counter of the
outgoing interface is incremented for a successfully
fragmented datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 27 }
ipSystemStatsOutFragFails OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP datagrams that have been discarded because
they needed to be fragmented but could not be. This
includes IPv4 packets that have the DF bit set and IPv6
packets that are being forwarded and exceed the outgoing
link MTU.
When tracking interface statistics, the counter of the
outgoing interface is incremented for an unsuccessfully
fragmented datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 28 }
ipSystemStatsOutFragCreates OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of output datagram fragments that have been
generated as a result of IP fragmentation.
When tracking interface statistics, the counter of the
outgoing interface is incremented for a successfully
fragmented datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 29 }
โจ so the vibe here is: Discards is the "we had it, we could have sent it, but we tossed it anyway" counter (think running out of buffer space ๐ญ). And the Frag counters are the fragmentation drama queen squad ๐: how many datagrams needed splitting, how many got split successfully, how many failed (including IPv4 packets with the DF bit set, and IPv6 packets being forwarded that are bigger than the outgoing link MTU ๐), and how many fragments got made in total.
The interface-tracking note is consistent across all of them: the outgoing interface's counter gets bumped for a successful split, or for a failed one in the OutFragFails case. ๐ซถ
ipSystemStatsOutTransmits OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of IP datagrams that this entity supplied
to the lower layers for transmission. This includes
datagrams generated locally and those forwarded by this
entity.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 30 }
ipSystemStatsHCOutTransmits OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of IP datagrams that this entity supplied
to the lower layers for transmission. This object counts
the same datagrams as ipSystemStatsOutTransmits, but allows
for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 31 }
ipSystemStatsOutOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets in IP datagrams delivered to the
lower layers for transmission. Octets from datagrams
counted in ipSystemStatsOutTransmits MUST be counted here.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 32 }
ipSystemStatsHCOutOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets in IP datagrams delivered to the
lower layers for transmission. This objects counts the same
octets as ipSystemStatsOutOctets, but allows for larger
values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 33 }
๐ OutTransmits counts every datagram handed down to the lower layers for sending, whether this box made it up or was just passing it along ๐ . The HC version counts the exact same datagrams but has room for bigger numbers (Counter64 energy ๐). Same deal for OutOctets, which counts bytes instead. Hot take: the OutOctets rule says that octets from anything counted in OutTransmits MUST be counted there too, so they can't ghost each other ๐.
ipSystemStatsInMcastPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP multicast datagrams received.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 34 }
ipSystemStatsHCInMcastPkts OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP multicast datagrams received. This object
counts the same datagrams as ipSystemStatsInMcastPkts but
allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 35 }
ipSystemStatsInMcastOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets received in IP multicast
datagrams. Octets from datagrams counted in
ipSystemStatsInMcastPkts MUST be counted here.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 36 }
ipSystemStatsHCInMcastOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets received in IP multicast
datagrams. This object counts the same octets as
ipSystemStatsInMcastOctets, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 37 }
๐ฆ Now we're in the multicast era ๐ง. InMcastPkts counts multicast datagrams received, InMcastOctets counts the bytes inside them, and the HC twins do the same job with the bigger Counter64 numbers. Same rule as before: the octets from anything counted in InMcastPkts MUST be counted in InMcastOctets too ๐.
ipSystemStatsOutMcastPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP multicast datagrams transmitted.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 38 }
ipSystemStatsHCOutMcastPkts OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP multicast datagrams transmitted. This
object counts the same datagrams as
ipSystemStatsOutMcastPkts, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 39 }
ipSystemStatsOutMcastOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets transmitted in IP multicast
datagrams. Octets from datagrams counted in
ipSystemStatsOutMcastPkts MUST be counted here.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 40 }
ipSystemStatsHCOutMcastOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets transmitted in IP multicast
datagrams. This object counts the same octets as
ipSystemStatsOutMcastOctets, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 41 }
๐ธ The outbound multicast set mirrors the inbound one: OutMcastPkts and OutMcastOctets for what got sent out, plus their HC versions for the big-number crowd ๐. Same octets rule applies here too, so the packet count and the byte count stay in sync ๐.
ipSystemStatsInBcastPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP broadcast datagrams received.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 42 }
ipSystemStatsHCInBcastPkts OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP broadcast datagrams received. This object
counts the same datagrams as ipSystemStatsInBcastPkts but
allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 43 }
๐ And we wrap this chunk with the broadcast pair: InBcastPkts counts the IP broadcast datagrams received, and HCInBcastPkts counts those same datagrams with room for bigger values. Literally the same energy as everything before it, just with a different delivery address ๐ฌโจ
Okay bestie, the broadcast counters are wrapping up ๐ and the per-interface table is about to make its entrance ๐
ipSystemStatsOutBcastPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP broadcast datagrams transmitted.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 44 }
ipSystemStatsHCOutBcastPkts OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP broadcast datagrams transmitted. This
object counts the same datagrams as
ipSystemStatsOutBcastPkts, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipSystemStatsDiscontinuityTime."
::= { ipSystemStatsEntry 45 }
ipSystemStatsDiscontinuityTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion at which
any one or more of this entry's counters suffered a
discontinuity.
If no such discontinuities have occurred since the last re-
initialization of the local management subsystem, then this
object contains a zero value."
::= { ipSystemStatsEntry 46 }
ipSystemStatsRefreshRate OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milli-seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum reasonable polling interval for this entry.
This object provides an indication of the minimum amount of
time required to update the counters in this entry."
::= { ipSystemStatsEntry 47 }
These four are the last of the system-wide stats. The outbound broadcast pair is the same datagrams counted two ways, a 32-bit one and a 64-bit one for the big numbers ๐ง. The discontinuity timestamp is like the "last time things got reset" receipt ๐, and the refresh rate tells you how often it's sensible to poll so you're not spamming the counters ๐ซถ.
ipIfStatsTableLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion at which
a row in the ipIfStatsTable was added or deleted.
If new objects are added to the ipIfStatsTable that require
the ipIfStatsTableLastChange to be updated when they are
modified, they must specify that requirement in their
description clause."
::= { ipTrafficStats 2 }
ipIfStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF IpIfStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table containing per-interface traffic statistics. This
table and the ipSystemStatsTable contain similar objects
whose difference is in their granularity. Where this table
contains per-interface statistics, the ipSystemStatsTable
contains the same statistics, but counted on a system wide
basis."
::= { ipTrafficStats 3 }
ipIfStatsEntry OBJECT-TYPE
SYNTAX IpIfStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An interface statistics entry containing objects for a
particular interface and version of IP."
INDEX { ipIfStatsIPVersion, ipIfStatsIfIndex }
::= { ipIfStatsTable 1 }
Now the per-interface table shows up, and honestly it's giving sister of the system table ๐. Same stats, just zoomed in on one interface at a time. The table-last-change timestamp only tracks when rows get added or deleted, not every counter tick ๐ฆ. The text also says that any new object that needs the timestamp updated has to say so in its own DESCRIPTION, and that part stays exactly as written.
IpIfStatsEntry ::= SEQUENCE {
ipIfStatsIPVersion InetVersion,
ipIfStatsIfIndex InterfaceIndex,
ipIfStatsInReceives Counter32,
ipIfStatsHCInReceives Counter64,
ipIfStatsInOctets Counter32,
ipIfStatsHCInOctets Counter64,
ipIfStatsInHdrErrors Counter32,
ipIfStatsInNoRoutes Counter32,
ipIfStatsInAddrErrors Counter32,
ipIfStatsInUnknownProtos Counter32,
ipIfStatsInTruncatedPkts Counter32,
ipIfStatsInForwDatagrams Counter32,
ipIfStatsHCInForwDatagrams Counter64,
ipIfStatsReasmReqds Counter32,
ipIfStatsReasmOKs Counter32,
ipIfStatsReasmFails Counter32,
ipIfStatsInDiscards Counter32,
ipIfStatsInDelivers Counter32,
ipIfStatsHCInDelivers Counter64,
ipIfStatsOutRequests Counter32,
ipIfStatsHCOutRequests Counter64,
ipIfStatsOutForwDatagrams Counter32,
ipIfStatsHCOutForwDatagrams Counter64,
ipIfStatsOutDiscards Counter32,
ipIfStatsOutFragReqds Counter32,
ipIfStatsOutFragOKs Counter32,
ipIfStatsOutFragFails Counter32,
ipIfStatsOutFragCreates Counter32,
ipIfStatsOutTransmits Counter32,
ipIfStatsHCOutTransmits Counter64,
ipIfStatsOutOctets Counter32,
ipIfStatsHCOutOctets Counter64,
ipIfStatsInMcastPkts Counter32,
ipIfStatsHCInMcastPkts Counter64,
ipIfStatsInMcastOctets Counter32,
ipIfStatsHCInMcastOctets Counter64,
ipIfStatsOutMcastPkts Counter32,
ipIfStatsHCOutMcastPkts Counter64,
ipIfStatsOutMcastOctets Counter32,
ipIfStatsHCOutMcastOctets Counter64,
ipIfStatsInBcastPkts Counter32,
ipIfStatsHCInBcastPkts Counter64,
ipIfStatsOutBcastPkts Counter32,
ipIfStatsHCOutBcastPkts Counter64,
ipIfStatsDiscontinuityTime TimeStamp,
ipIfStatsRefreshRate Unsigned32
}
This is the whole row layout in one glance, so bookmark it ๐. Every counter comes in a 32-bit flavour and most have a 64-bit HC twin, plus the discontinuity time and refresh rate on the end. It's a lot, but it's literally the blueprint for each entry, so it's worth the scroll ๐.
ipIfStatsIPVersion OBJECT-TYPE
SYNTAX InetVersion
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP version of this row."
::= { ipIfStatsEntry 1 }
ipIfStatsIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index value that uniquely identifies the interface to
which this entry is applicable. The interface identified by
a particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipIfStatsEntry 2 }
ipIfStatsInReceives OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of input IP datagrams received, including
those received in error.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 3 }
ipIfStatsHCInReceives OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of input IP datagrams received, including
those received in error. This object counts the same
datagrams as ipIfStatsInReceives, but allows for larger
values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 4 }
ipIfStatsInOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets received in input IP datagrams,
including those received in error. Octets from datagrams
counted in ipIfStatsInReceives MUST be counted here.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 5 }
ipIfStatsHCInOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets received in input IP datagrams,
including those received in error. This object counts the
same octets as ipIfStatsInOctets, but allows for larger
values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 6 }
The version and interface index are the keys that pick out which row you're looking at ๐๏ธ. The receive counters are the "how much came in" crew, and the octet ones count the bytes. The MUST in the ipIfStatsInOctets description is a real requirement, so it stays in capitals and says exactly what it says ๐ฅ. Octets from anything counted in ipIfStatsInReceives have to show up in the octet count too.
ipIfStatsInHdrErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams discarded due to errors in
their IP headers, including version number mismatch, other
format errors, hop count exceeded, errors discovered in
processing their IP options, etc.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 7 }
ipIfStatsInNoRoutes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams discarded because no route
could be found to transmit them to their destination.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 8 }
ipIfStatsInAddrErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams discarded because the IP
address in their IP header's destination field was not a
valid address to be received at this entity. This count
includes invalid addresses (e.g., ::0). For entities that
are not IP routers and therefore do not forward datagrams,
this counter includes datagrams discarded because the
destination address was not a local address.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 9 }
ipIfStatsInUnknownProtos OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of locally-addressed IP datagrams received
successfully but discarded because of an unknown or
unsupported protocol.
When tracking interface statistics, the counter of the
interface to which these datagrams were addressed is
incremented. This interface might not be the same as the
input interface for some of the datagrams.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 10 }
ipIfStatsInTruncatedPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams discarded because the
datagram frame didn't carry enough data.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 11 }
Here's the drop-reason squad ๐. Header errors, no route, bad destination address, unknown protocol, and truncated frames each get their own counter, so you can see why something got thrown out. The address one has a little twist for non-routers, and the unknown-protocol one notes that the interface being counted is the one the datagram was addressed to, which might not be the one it came in on ๐ฆ. Main character energy for accurate counting ๐
ipIfStatsInForwDatagrams OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input datagrams for which this entity was not
their final IP destination and for which this entity
attempted to find a route to forward them to that final
destination. In entities that do not act as IP routers,
this counter will include only those datagrams that were
Source-Routed via this entity, and the Source-Route
processing was successful.
When tracking interface statistics, the counter of the
incoming interface is incremented for each datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 12 }
Okay so this one is the input forwarding counter ๐ โจ It counts incoming datagrams that weren't meant for this box, so it tried to find a route to pass them along ๐ฆ If you're not a router, it only counts the source-routed ones where the source-route processing actually worked. Also, when you're tracking per-interface stats, the incoming interface gets the +1 for every datagram ๐ธ And yep, this counter can reset at management re-initialization or whenever ipIfStatsDiscontinuityTime says so ๐
ipIfStatsHCInForwDatagrams OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input datagrams for which this entity was not
their final IP destination and for which this entity
attempted to find a route to forward them to that final
destination. This object counts the same packets as
ipIfStatsInForwDatagrams, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 13 }
This is the high-capacity twin of the one above ๐ Same exact packets, just a Counter64 so it can hold way bigger numbers without wrapping ๐ Discontinuity rules are the same drama as before ๐
ipIfStatsReasmReqds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP fragments received that needed to be
reassembled at this interface.
When tracking interface statistics, the counter of the
interface to which these fragments were addressed is
incremented. This interface might not be the same as the
input interface for some of the fragments.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 14 }
Okay, reassembly requests ๐งฉ This counts the IP fragments that showed up needing to be put back together at this interface. Here's the twist: the per-interface credit goes to whichever interface the fragments were addressed to, which might not be the one they came in on ๐ฆ Ngl that's iconic. Discontinuities apply again ๐
ipIfStatsReasmOKs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP datagrams successfully reassembled.
When tracking interface statistics, the counter of the
interface to which these datagrams were addressed is
incremented. This interface might not be the same as the
input interface for some of the datagrams.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 15 }
This one is the success story ๐ฅนโจ It counts IP datagrams that got fully reassembled. Same interface rule as before: the addressed interface gets the credit, even if the input interface was different ๐ Yay for happy endings ๐
ipIfStatsReasmFails OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of failures detected by the IP re-assembly
algorithm (for whatever reason: timed out, errors, etc.).
Note that this is not necessarily a count of discarded IP
fragments since some algorithms (notably the algorithm in
RFC 815) can lose track of the number of fragments by
combining them as they are received.
When tracking interface statistics, the counter of the
interface to which these fragments were addressed is
incremented. This interface might not be the same as the
input interface for some of the fragments.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 16 }
Okay, the reassembly failures ๐ญ This counts every failure the reassembly algorithm notices, whatever the reason (timeouts, errors, the works). BUT it's not always the same as "how many fragments got tossed," because some algorithms, like the one in RFC 815, can lose track of fragment counts when they merge them together as they arrive ๐ So don't treat it as a fragment body count, bestie. Same interface credit rule and same discontinuity vibes ๐ธ
ipIfStatsInDiscards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input IP datagrams for which no problems were
encountered to prevent their continued processing, but
were discarded (e.g., for lack of buffer space). Note that
this counter does not include any datagrams discarded while
awaiting re-assembly.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 17 }
This is the input discards counter ๐๏ธ๐ It counts incoming datagrams that had zero problems stopping them from being processed, but still got dropped anyway (like when there's no buffer space). Also, anything tossed while waiting on reassembly does NOT count here, so don't double-dip ๐ โโ๏ธ Discontinuity rules apply as always ๐ฆ
ipIfStatsInDelivers OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of datagrams successfully delivered to IP
user-protocols (including ICMP).
When tracking interface statistics, the counter of the
interface to which these datagrams were addressed is
incremented. This interface might not be the same as the
input interface for some of the datagrams.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 18 }
Okay the delivered counter is giving success ๐ It totals up the datagrams that were successfully handed off to IP user-protocols, and yes, that includes ICMP ๐ง The interface credit goes to the one they were addressed to, not necessarily where they came in ๐ Discontinuities are still a thing, bestie ๐
ipIfStatsHCInDelivers OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of datagrams successfully delivered to IP
user-protocols (including ICMP). This object counts the
same packets as ipIfStatsInDelivers, but allows for larger
values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 19 }
Same packets as the last one, just the big-number version ๐ Counter64 means it can count way higher without wrapping ๐ Discontinuity note is unchanged, obvi ๐ซถ
ipIfStatsOutRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of IP datagrams that local IP user-
protocols (including ICMP) supplied to IP in requests for
transmission. Note that this counter does not include any
datagrams counted in ipIfStatsOutForwDatagrams.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 20 }
This is the outgoing requests counter ๐ It totals the IP datagrams that the local user-protocols (ICMP included) handed to IP asking for transmission. Heads up: it does NOT include anything already counted in ipIfStatsOutForwDatagrams, so keep those two separate ๐ Discontinuity rules stay the same ๐
ipIfStatsHCOutRequests OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of IP datagrams that local IP user-
protocols (including ICMP) supplied to IP in requests for
transmission. This object counts the same packets as
ipIfStatsOutRequests, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 21 }
High-capacity twin number three ๐ Same packets as ipIfStatsOutRequests, bigger numbers allowed thanks to Counter64 ๐ฆ Discontinuities behave exactly the same ๐
-- This object ID is reserved to allow the IDs for this table's objects
-- to align with the objects in the ipSystemStatsTable.
-- ::= {ipIfStatsEntry 22}
Okay bestie, heads up ๐ง Index 22 is reserved on purpose, so the IDs in this table line up with the ones in the ipSystemStatsTable. Don't go grabbing it for something random! ๐ โโ๏ธ
ipIfStatsOutForwDatagrams OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of datagrams for which this entity was not their
final IP destination and for which it was successful in
finding a path to their final destination. In entities
that do not act as IP routers, this counter will include
only those datagrams that were Source-Routed via this
entity, and the Source-Route processing was successful.
When tracking interface statistics, the counter of the
outgoing interface is incremented for a successfully
forwarded datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 23 }
Okay, the output forwarding counter ๐ฆ It counts datagrams that weren't meant for this entity, where it successfully found a path to the final destination. Non-routers only count the source-routed ones that got processed successfully ๐ For per-interface stats, the outgoing interface gets the +1 for each successfully forwarded datagram โจ Discontinuities still apply, obvi ๐ธ
ipIfStatsHCOutForwDatagrams OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of datagrams for which this entity was not their
final IP destination and for which it was successful in
finding a path to their final destination. This object
counts the same packets as ipIfStatsOutForwDatagrams, but
allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 24 }
Last of the forwarding twins ๐ Same packets as ipIfStatsOutForwDatagrams, just with Counter64 room for bigger values ๐ Discontinuity vibes are unchanged ๐ซถ
ipIfStatsOutDiscards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of output IP datagrams for which no problem was
encountered to prevent their transmission to their
destination, but were discarded (e.g., for lack of
buffer space). Note that this counter would include
datagrams counted in ipIfStatsOutForwDatagrams if any such
datagrams met this (discretionary) discard criterion.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 25 }
This is the output discards counter ๐๏ธ It counts outgoing datagrams that had no problem blocking transmission but still got dropped, like when buffer space runs out ๐ Fun twist: if a forwarded datagram hit that discretionary discard rule, it gets counted here too, even though it's also in ipIfStatsOutForwDatagrams ๐ Discontinuity rules still apply ๐
ipIfStatsOutFragReqds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP datagrams that would require fragmentation
in order to be transmitted.
When tracking interface statistics, the counter of the
outgoing interface is incremented for a successfully
fragmented datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 26 }
Okay the fragmentation requests counter ๐งฉ It counts the IP datagrams that would need fragmenting before they could be sent out. For per-interface stats, the outgoing interface gets the +1 for a datagram that was successfully fragmented ๐ฆ Discontinuity stuff is the same as always ๐ธ
ipIfStatsOutFragOKs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP datagrams that have been successfully
fragmented.
When tracking interface statistics, the counter of the
outgoing interface is incremented for a successfully
fragmented datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 27 }
And the fragmentation success counter closes things out ๐ It totals the IP datagrams that were successfully fragmented, and the outgoing interface gets the credit for each one ๐ Discontinuities apply, as always ๐ซถ
Okay so the next batch is all about fragments, transmits, octets, and multicast/broadcast counters ๐ฆ
Here's the first one, ipIfStatsOutFragFails, which counts datagrams that got tossed because they needed fragmenting and couldn't be fragmented ๐. It covers IPv4 packets with the DF bit set, plus IPv6 packets being forwarded that are bigger than the outgoing link MTU. The outgoing interface gets the increment ๐ธ
ipIfStatsOutFragFails OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP datagrams that have been discarded because
they needed to be fragmented but could not be. This
includes IPv4 packets that have the DF bit set and IPv6
packets that are being forwarded and exceed the outgoing
link MTU.
When tracking interface statistics, the counter of the
outgoing interface is incremented for an unsuccessfully
fragmented datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 28 }
ipIfStatsOutFragCreates is the happy twin ๐ It counts the output datagram fragments that got made because of IP fragmentation. When a datagram fragments successfully, the outgoing interface's counter goes up โจ
ipIfStatsOutFragCreates OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of output datagram fragments that have been
generated as a result of IP fragmentation.
When tracking interface statistics, the counter of the
outgoing interface is incremented for a successfully
fragmented datagram.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 29 }
ipIfStatsOutTransmits counts every IP datagram this entity handed down to the lower layers for transmission. That includes stuff generated locally and stuff it forwarded ๐ The HC version, ipIfStatsHCOutTransmits, counts the exact same datagrams but uses a Counter64 so the number can get way bigger ๐ง
ipIfStatsOutTransmits OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of IP datagrams that this entity supplied
to the lower layers for transmission. This includes
datagrams generated locally and those forwarded by this
entity.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 30 }
ipIfStatsHCOutTransmits OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of IP datagrams that this entity supplied
to the lower layers for transmission. This object counts
the same datagrams as ipIfStatsOutTransmits, but allows for
larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 31 }
Now ipIfStatsOutOctets is the octets version ๐ It totals up the octets in datagrams sent down to the lower layers. The octets from the datagrams counted in ipIfStatsOutTransmits have to be counted here too, no skipping allowed ๐
ipIfStatsOutOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets in IP datagrams delivered to the
lower layers for transmission. Octets from datagrams
counted in ipIfStatsOutTransmits MUST be counted here.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 32 }
ipIfStatsHCOutOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets in IP datagrams delivered to the
lower layers for transmission. This objects counts the same
octets as ipIfStatsOutOctets, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 33 }
Next up is the multicast group ๐ ipIfStatsInMcastPkts counts the multicast datagrams received, and ipIfStatsHCInMcastPkts is its 64-bit sibling that counts the same thing with bigger numbers ๐
ipIfStatsInMcastPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP multicast datagrams received.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 34 }
ipIfStatsHCInMcastPkts OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP multicast datagrams received. This object
counts the same datagrams as ipIfStatsInMcastPkts, but
allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 35 }
ipIfStatsInMcastOctets totals the octets received in multicast datagrams. The octets from the datagrams counted in ipIfStatsInMcastPkts have to be counted here too ๐ซถ The HC one, ipIfStatsHCInMcastOctets, counts those same octets with a 64-bit counter ๐
ipIfStatsInMcastOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets received in IP multicast
datagrams. Octets from datagrams counted in
ipIfStatsInMcastPkts MUST be counted here.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 36 }
ipIfStatsHCInMcastOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets received in IP multicast
datagrams. This object counts the same octets as
ipIfStatsInMcastOctets, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 37 }
Outbound multicast gets the same treatment ๐ฃ ipIfStatsOutMcastPkts counts the multicast datagrams transmitted, and ipIfStatsHCOutMcastPkts is the 64-bit version of that same count โจ
ipIfStatsOutMcastPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP multicast datagrams transmitted.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 38 }
ipIfStatsHCOutMcastPkts OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP multicast datagrams transmitted. This
object counts the same datagrams as ipIfStatsOutMcastPkts,
but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 39 }
ipIfStatsOutMcastOctets totals the octets transmitted in multicast datagrams, and the octets from the datagrams counted in ipIfStatsOutMcastPkts have to be counted here as well ๐ ipIfStatsHCOutMcastOctets is the 64-bit sister that counts those same octets ๐ธ
ipIfStatsOutMcastOctets OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets transmitted in IP multicast
datagrams. Octets from datagrams counted in
ipIfStatsOutMcastPkts MUST be counted here.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 40 }
ipIfStatsHCOutMcastOctets OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of octets transmitted in IP multicast
datagrams. This object counts the same octets as
ipIfStatsOutMcastOctets, but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 41 }
Broadcast is next ๐ก ipIfStatsInBcastPkts counts the IP broadcast datagrams received, and ipIfStatsHCInBcastPkts counts the very same datagrams with a 64-bit counter ๐งโโ๏ธ
ipIfStatsInBcastPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP broadcast datagrams received.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 42 }
ipIfStatsHCInBcastPkts OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP broadcast datagrams received. This object
counts the same datagrams as ipIfStatsInBcastPkts, but
allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 43 }
ipIfStatsOutBcastPkts counts the IP broadcast datagrams transmitted, and ipIfStatsHCOutBcastPkts is the 64-bit version of that count ๐
ipIfStatsOutBcastPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP broadcast datagrams transmitted.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 44 }
ipIfStatsHCOutBcastPkts OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of IP broadcast datagrams transmitted. This
object counts the same datagrams as ipIfStatsOutBcastPkts,
but allows for larger values.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ipIfStatsDiscontinuityTime."
::= { ipIfStatsEntry 45 }
ipIfStatsDiscontinuityTime is the timestamp for the most recent discontinuity ๐ฐ๏ธ It's the sysUpTime value from the last time any of this entry's counters had a discontinuity. If there hasn't been one since the local management subsystem was last re-initialized, the object just holds zero โญ
ipIfStatsDiscontinuityTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion at which
any one or more of this entry's counters suffered a
discontinuity.
If no such discontinuities have occurred since the last re-
initialization of the local management subsystem, then this
object contains a zero value."
::= { ipIfStatsEntry 46 }
Last one in this batch is ipIfStatsRefreshRate ๐ฅ It's the minimum reasonable polling interval for this entry, in milliseconds. It tells you the least amount of time needed for the counters in this entry to update ๐
ipIfStatsRefreshRate OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milli-seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum reasonable polling interval for this entry.
This object provides an indication of the minimum amount of
time required to update the counters in this entry."
::= { ipIfStatsEntry 47 }
--
-- Internet Address Prefix table
--
Okay so the IP Address Prefix table is giving main character energy ๐ It's basically where a node keeps track of where an IP address came from, and it lets other tables just point at a row instead of copying the same info around ๐
ipAddressPrefixTable OBJECT-TYPE
SYNTAX SEQUENCE OF IpAddressPrefixEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table allows the user to determine the source of an IP
address or set of IP addresses, and allows other tables to
share the information via pointer rather than by copying.
For example, when the node configures both a unicast and
anycast address for a prefix, the ipAddressPrefix objects
for those addresses will point to a single row in this
table.
This table primarily provides support for IPv6 prefixes, and
several of the objects are less meaningful for IPv4. The
table continues to allow IPv4 addresses to allow future
flexibility. In order to promote a common configuration,
this document includes suggestions for default values for
IPv4 prefixes. Each of these values may be overridden if an
object is meaningful to the node.
All prefixes used by this entity should be included in this
table independent of how the entity learned the prefix.
(This table isn't limited to prefixes learned from router
advertisements.)"
::= { ip 32 }
ipAddressPrefixEntry OBJECT-TYPE
SYNTAX IpAddressPrefixEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the ipAddressPrefixTable."
INDEX { ipAddressPrefixIfIndex, ipAddressPrefixType,
ipAddressPrefixPrefix, ipAddressPrefixLength }
::= { ipAddressPrefixTable 1 }
IpAddressPrefixEntry ::= SEQUENCE {
ipAddressPrefixIfIndex InterfaceIndex,
ipAddressPrefixType InetAddressType,
ipAddressPrefixPrefix InetAddress,
ipAddressPrefixLength InetAddressPrefixLength,
ipAddressPrefixOrigin IpAddressPrefixOriginTC,
ipAddressPrefixOnLinkFlag TruthValue,
ipAddressPrefixAutonomousFlag TruthValue,
ipAddressPrefixAdvPreferredLifetime Unsigned32,
ipAddressPrefixAdvValidLifetime Unsigned32
}
ipAddressPrefixIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index value that uniquely identifies the interface on
which this prefix is configured. The interface identified
by a particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipAddressPrefixEntry 1 }
ipAddressPrefixType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The address type of ipAddressPrefix."
::= { ipAddressPrefixEntry 2 }
ipAddressPrefixPrefix OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The address prefix. The address type of this object is
specified in ipAddressPrefixType. The length of this object
is the standard length for objects of that type (4 or 16
bytes). Any bits after ipAddressPrefixLength must be zero.
Implementors need to be aware that, if the size of
ipAddressPrefixPrefix exceeds 114 octets, then OIDS of
instances of columns in this row will have more than 128
sub-identifiers and cannot be accessed using SNMPv1,
SNMPv2c, or SNMPv3."
::= { ipAddressPrefixEntry 3 }
ipAddressPrefixLength OBJECT-TYPE
SYNTAX InetAddressPrefixLength
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The prefix length associated with this prefix.
The value 0 has no special meaning for this object. It
simply refers to address '::/0'."
::= { ipAddressPrefixEntry 4 }
ipAddressPrefixOrigin OBJECT-TYPE
SYNTAX IpAddressPrefixOriginTC
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The origin of this prefix."
::= { ipAddressPrefixEntry 5 }
ipAddressPrefixOnLinkFlag OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object has the value 'true(1)', if this prefix can be
used for on-link determination; otherwise, the value is
'false(2)'.
The default for IPv4 prefixes is 'true(1)'."
REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
RFC 2462"
::= { ipAddressPrefixEntry 6 }
ipAddressPrefixAutonomousFlag OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Autonomous address configuration flag. When true(1),
indicates that this prefix can be used for autonomous
address configuration (i.e., can be used to form a local
interface address). If false(2), it is not used to auto-
configure a local interface address.
The default for IPv4 prefixes is 'false(2)'."
REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
RFC 2462"
::= { ipAddressPrefixEntry 7 }
ipAddressPrefixAdvPreferredLifetime OBJECT-TYPE
SYNTAX Unsigned32
UNITS "seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The remaining length of time, in seconds, that this prefix
will continue to be preferred, i.e., time until deprecation.
A value of 4,294,967,295 represents infinity.
The address generated from a deprecated prefix should no
longer be used as a source address in new communications,
but packets received on such an interface are processed as
expected.
The default for IPv4 prefixes is 4,294,967,295 (infinity)."
REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
RFC 2462"
::= { ipAddressPrefixEntry 8 }
ipAddressPrefixAdvValidLifetime OBJECT-TYPE
SYNTAX Unsigned32
UNITS "seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The remaining length of time, in seconds, that this prefix
will continue to be valid, i.e., time until invalidation. A
value of 4,294,967,295 represents infinity.
The address generated from an invalidated prefix should not
appear as the destination or source address of a packet.
The default for IPv4 prefixes is 4,294,967,295 (infinity)."
REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
RFC 2462"
::= { ipAddressPrefixEntry 9 }
Next up is the Internet Address Table ๐ฆ This one's where the node's addresses live, and there's a little lock called the spin lock so managers don't step on each other's toes while they're editing ๐โจ
--
-- Internet Address Table
--
ipAddressSpinLock OBJECT-TYPE
SYNTAX TestAndIncr
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"An advisory lock used to allow cooperating SNMP managers to
coordinate their use of the set operation in creating or
modifying rows within this table.
In order to use this lock to coordinate the use of set
operations, managers should first retrieve
ipAddressTableSpinLock. They should then determine the
appropriate row to create or modify. Finally, they should
issue the appropriate set command, including the retrieved
value of ipAddressSpinLock. If another manager has altered
the table in the meantime, then the value of
ipAddressSpinLock will have changed, and the creation will
fail as it will be specifying an incorrect value for
ipAddressSpinLock. It is suggested, but not required, that
the ipAddressSpinLock be the first var bind for each set of
objects representing a 'row' in a PDU."
::= { ip 33 }
ipAddressTable OBJECT-TYPE
SYNTAX SEQUENCE OF IpAddressEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains addressing information relevant to the
entity's interfaces.
This table does not contain multicast address information.
Tables for such information should be contained in multicast
specific MIBs, such as RFC 3019.
While this table is writable, the user will note that
several objects, such as ipAddressOrigin, are not. The
intention in allowing a user to write to this table is to
allow them to add or remove any entry that isn't
permanent. The user should be allowed to modify objects
and entries when that would not cause inconsistencies
within the table. Allowing write access to objects, such
as ipAddressOrigin, could allow a user to insert an entry
and then label it incorrectly.
Note well: When including IPv6 link-local addresses in this
table, the entry must use an InetAddressType of 'ipv6z' in
order to differentiate between the possible interfaces."
::= { ip 34 }
ipAddressEntry OBJECT-TYPE
SYNTAX IpAddressEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An address mapping for a particular interface."
INDEX { ipAddressAddrType, ipAddressAddr }
::= { ipAddressTable 1 }
IpAddressEntry ::= SEQUENCE {
ipAddressAddrType InetAddressType,
ipAddressAddr InetAddress,
ipAddressIfIndex InterfaceIndex,
ipAddressType INTEGER,
ipAddressPrefix RowPointer,
ipAddressOrigin IpAddressOriginTC,
ipAddressStatus IpAddressStatusTC,
ipAddressCreated TimeStamp,
ipAddressLastChanged TimeStamp,
ipAddressRowStatus RowStatus,
ipAddressStorageType StorageType
}
ipAddressAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The address type of ipAddressAddr."
::= { ipAddressEntry 1 }
ipAddressAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP address to which this entry's addressing information
pertains. The address type of this object is specified in
ipAddressAddrType.
Implementors need to be aware that if the size of
ipAddressAddr exceeds 116 octets, then OIDS of instances of
columns in this row will have more than 128 sub-identifiers
and cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3."
::= { ipAddressEntry 2 }
ipAddressIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The index value that uniquely identifies the interface to
which this entry is applicable. The interface identified by
a particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipAddressEntry 3 }
ipAddressType OBJECT-TYPE
SYNTAX INTEGER {
unicast(1),
anycast(2),
broadcast(3)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of address. broadcast(3) is not a valid value for
IPv6 addresses (RFC 3513)."
DEFVAL { unicast }
::= { ipAddressEntry 4 }
ipAddressPrefix OBJECT-TYPE
SYNTAX RowPointer
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A pointer to the row in the prefix table to which this
address belongs. May be { 0 0 } if there is no such row."
DEFVAL { zeroDotZero }
::= { ipAddressEntry 5 }
ipAddressOrigin OBJECT-TYPE SYNTAX IpAddressOriginTC MAX-ACCESS read-only STATUS current DESCRIPTION "The origin of the address." ::= { ipAddressEntry 6 }
ipAddressStatus OBJECT-TYPE SYNTAX IpAddressStatusTC MAX-ACCESS read-create STATUS current DESCRIPTION "The status of the address, describing if the address can be used for communication.
In the absence of other information, an IPv4 address is always preferred(1)." DEFVAL { preferred } ::= { ipAddressEntry 7 }
ipAddressCreated OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time this entry was created. If this entry was created prior to the last re- initialization of the local network management subsystem, then this object contains a zero value." ::= { ipAddressEntry 8 }
ipAddressLastChanged OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time this entry was last updated. If this entry was updated prior to the last re- initialization of the local network management subsystem, then this object contains a zero value." ::= { ipAddressEntry 9 }
ipAddressRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status of this conceptual row.
The RowStatus TC requires that this DESCRIPTION clause states under which circumstances other objects in this row can be modified. The value of this object has no effect on whether other objects in this conceptual row can be modified.
A conceptual row can not be made active until the ipAddressIfIndex has been set to a valid index." ::= { ipAddressEntry 10 }
ipAddressStorageType OBJECT-TYPE SYNTAX StorageType MAX-ACCESS read-create STATUS current DESCRIPTION "The storage type for this conceptual row. If this object has a value of 'permanent', then no other objects are required to be able to be modified." DEFVAL { volatile } ::= { ipAddressEntry 11 }
-- -- the Internet Address Translation table --
ipNetToPhysicalTable OBJECT-TYPE SYNTAX SEQUENCE OF IpNetToPhysicalEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The IP Address Translation table used for mapping from IP addresses to physical addresses.
The Address Translation tables contain the IP address to 'physical' address equivalences. Some interfaces do not use translation tables for determining address equivalences (e.g., DDN-X.25 has an algorithmic method); if all interfaces are of this type, then the Address Translation table is empty, i.e., has zero entries.
While many protocols may be used to populate this table, ARP and Neighbor Discovery are the most likely options." REFERENCE "RFC 826 and RFC 2461" ::= { ip 35 }
ipNetToPhysicalEntry OBJECT-TYPE SYNTAX IpNetToPhysicalEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry contains one IP address to `physical' address equivalence." INDEX { ipNetToPhysicalIfIndex, ipNetToPhysicalNetAddressType, ipNetToPhysicalNetAddress } ::= { ipNetToPhysicalTable 1 }
IpNetToPhysicalEntry ::= SEQUENCE { ipNetToPhysicalIfIndex InterfaceIndex, ipNetToPhysicalNetAddressType InetAddressType, ipNetToPhysicalNetAddress InetAddress, ipNetToPhysicalPhysAddress PhysAddress, ipNetToPhysicalLastUpdated TimeStamp, ipNetToPhysicalType INTEGER, ipNetToPhysicalState INTEGER, ipNetToPhysicalRowStatus RowStatus }
ipNetToPhysicalIfIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "The index value that uniquely identifies the interface to which this entry is applicable. The interface identified by a particular value of this index is the same interface as identified by the same value of the IF-MIB's ifIndex." ::= { ipNetToPhysicalEntry 1 }
ipNetToPhysicalNetAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "The type of ipNetToPhysicalNetAddress." ::= { ipNetToPhysicalEntry 2 }
ipNetToPhysicalNetAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The IP Address corresponding to the media-dependent `physical' address. The address type of this object is specified in ipNetToPhysicalAddressType.
Implementors need to be aware that if the size of ipNetToPhysicalNetAddress exceeds 115 octets, then OIDS of instances of columns in this row will have more than 128 sub-identifiers and cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." ::= { ipNetToPhysicalEntry 3 }
ipNetToPhysicalPhysAddress OBJECT-TYPE SYNTAX PhysAddress (SIZE(0..65535)) MAX-ACCESS read-create STATUS current DESCRIPTION "The media-dependent `physical' address.
As the entries in this table are typically not persistent when this object is written the entity SHOULD NOT save the change to non-volatile storage." ::= { ipNetToPhysicalEntry 4 }
ipNetToPhysicalLastUpdated OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time this entry was last updated. If this entry was updated prior to the last re- initialization of the local network management subsystem, then this object contains a zero value." ::= { ipNetToPhysicalEntry 5 }
ipNetToPhysicalType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following invalid(2), -- an invalidated mapping dynamic(3), static(4), local(5) -- local interface } MAX-ACCESS read-create STATUS current DESCRIPTION "The type of mapping.
Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the ipNetToPhysicalTable. That is, it effectively dis- associates the interface identified with said entry from the mapping 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 ipNetToPhysicalType object.
The 'dynamic(3)' type indicates that the IP address to physical addresses mapping has been dynamically resolved using e.g., IPv4 ARP or the IPv6 Neighbor Discovery protocol.
The 'static(4)' type indicates that the mapping has been statically configured. Both of these refer to entries that provide mappings for other entities addresses.
The 'local(5)' type indicates that the mapping is provided for an entity's own interface address.
As the entries in this table are typically not persistent when this object is written the entity SHOULD NOT save the change to non-volatile storage." DEFVAL { static } ::= { ipNetToPhysicalEntry 6 }
ipNetToPhysicalState OBJECT-TYPE SYNTAX INTEGER { reachable(1), -- confirmed reachability
stale(2), -- unconfirmed reachability
delay(3), -- waiting for reachability -- confirmation before entering -- the probe state
probe(4), -- actively probing
invalid(5), -- an invalidated mapping
unknown(6), -- state can not be determined -- for some reason.
incomplete(7) -- address resolution is being -- performed. } MAX-ACCESS read-only STATUS current DESCRIPTION
"The Neighbor Unreachability Detection state for the interface when the address mapping in this entry is used. If Neighbor Unreachability Detection is not in use (e.g. for IPv4), this object is always unknown(6)." REFERENCE "RFC 2461" ::= { ipNetToPhysicalEntry 7 }
ipNetToPhysicalRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status of this conceptual row.
The RowStatus TC requires that this DESCRIPTION clause states under which circumstances other objects in this row can be modified. The value of this object has no effect on whether other objects in this conceptual row can be modified.
A conceptual row can not be made active until the ipNetToPhysicalPhysAddress object has been set.
Note that if the ipNetToPhysicalType is set to 'invalid', the managed node may delete the entry independent of the state of this object." ::= { ipNetToPhysicalEntry 8 }
-- -- The IPv6 Scope Zone Index Table. --
ipv6ScopeZoneIndexTable OBJECT-TYPE SYNTAX SEQUENCE OF Ipv6ScopeZoneIndexEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The table used to describe IPv6 unicast and multicast scope zones.
For those objects that have names rather than numbers, the names were chosen to coincide with the names used in the IPv6 address architecture document. " REFERENCE "Section 2.7 of RFC 4291" ::= { ip 36 }
ipv6ScopeZoneIndexEntry OBJECT-TYPE SYNTAX Ipv6ScopeZoneIndexEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry contains the list of scope identifiers on a given interface." INDEX { ipv6ScopeZoneIndexIfIndex } ::= { ipv6ScopeZoneIndexTable 1 }
Ipv6ScopeZoneIndexEntry ::= SEQUENCE { ipv6ScopeZoneIndexIfIndex InterfaceIndex, ipv6ScopeZoneIndexLinkLocal InetZoneIndex, ipv6ScopeZoneIndex3 InetZoneIndex, ipv6ScopeZoneIndexAdminLocal InetZoneIndex, ipv6ScopeZoneIndexSiteLocal InetZoneIndex, ipv6ScopeZoneIndex6 InetZoneIndex, ipv6ScopeZoneIndex7 InetZoneIndex, ipv6ScopeZoneIndexOrganizationLocal InetZoneIndex, ipv6ScopeZoneIndex9 InetZoneIndex, ipv6ScopeZoneIndexA InetZoneIndex, ipv6ScopeZoneIndexB InetZoneIndex, ipv6ScopeZoneIndexC InetZoneIndex, ipv6ScopeZoneIndexD InetZoneIndex }
ipv6ScopeZoneIndexIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index value that uniquely identifies the interface to
which these scopes belong. The interface identified by a
particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipv6ScopeZoneIndexEntry 1 }
ipv6ScopeZoneIndexLinkLocal OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for the link-local scope on this interface."
::= { ipv6ScopeZoneIndexEntry 2 }
ipv6ScopeZoneIndex3 OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for scope 3 on this interface."
::= { ipv6ScopeZoneIndexEntry 3 }
ipv6ScopeZoneIndexAdminLocal OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for the admin-local scope on this interface."
::= { ipv6ScopeZoneIndexEntry 4 }
ipv6ScopeZoneIndexSiteLocal OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for the site-local scope on this interface."
::= { ipv6ScopeZoneIndexEntry 5 }
ipv6ScopeZoneIndex6 OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for scope 6 on this interface."
::= { ipv6ScopeZoneIndexEntry 6 }
ipv6ScopeZoneIndex7 OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for scope 7 on this interface."
::= { ipv6ScopeZoneIndexEntry 7 }
ipv6ScopeZoneIndexOrganizationLocal OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for the organization-local scope on this
interface."
::= { ipv6ScopeZoneIndexEntry 8 }
ipv6ScopeZoneIndex9 OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for scope 9 on this interface."
::= { ipv6ScopeZoneIndexEntry 9 }
ipv6ScopeZoneIndexA OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for scope A on this interface."
::= { ipv6ScopeZoneIndexEntry 10 }
ipv6ScopeZoneIndexB OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for scope B on this interface."
::= { ipv6ScopeZoneIndexEntry 11 }
ipv6ScopeZoneIndexC OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for scope C on this interface."
::= { ipv6ScopeZoneIndexEntry 12 }
ipv6ScopeZoneIndexD OBJECT-TYPE
SYNTAX InetZoneIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The zone index for scope D on this interface."
::= { ipv6ScopeZoneIndexEntry 13 }
okay so this next bit is the default router table and it's giving organized ๐ each entry is basically a little note about a default router this entity knows about, and the index is a combo of address type, address, and interface. no cap, the vibes are immaculate โจ
--
-- The Default Router Table
-- This table simply lists the default routers; for more information
-- about routing tables, see the routing MIBs
--
ipDefaultRouterTable OBJECT-TYPE
SYNTAX SEQUENCE OF IpDefaultRouterEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table used to describe the default routers known to this
entity."
::= { ip 37 }
ipDefaultRouterEntry OBJECT-TYPE
SYNTAX IpDefaultRouterEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry contains information about a default router known
to this entity."
INDEX {ipDefaultRouterAddressType, ipDefaultRouterAddress,
ipDefaultRouterIfIndex}
::= { ipDefaultRouterTable 1 }
IpDefaultRouterEntry ::= SEQUENCE {
ipDefaultRouterAddressType InetAddressType,
ipDefaultRouterAddress InetAddress,
ipDefaultRouterIfIndex InterfaceIndex,
ipDefaultRouterLifetime Unsigned32,
ipDefaultRouterPreference INTEGER
}
ipDefaultRouterAddressType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The address type for this row."
::= { ipDefaultRouterEntry 1 }
ipDefaultRouterAddress OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP address of the default router represented by this
row. The address type of this object is specified in
ipDefaultRouterAddressType.
Implementers need to be aware that if the size of
ipDefaultRouterAddress exceeds 115 octets, then OIDS of
instances of columns in this row will have more than 128
sub-identifiers and cannot be accessed using SNMPv1,
SNMPv2c, or SNMPv3."
::= { ipDefaultRouterEntry 2 }
ipDefaultRouterIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index value that uniquely identifies the interface by
which the router can be reached. The interface identified
by a particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipDefaultRouterEntry 3 }
ipDefaultRouterLifetime OBJECT-TYPE
SYNTAX Unsigned32 (0..65535)
UNITS "seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The remaining length of time, in seconds, that this router
will continue to be useful as a default router. A value of
zero indicates that it is no longer useful as a default
router. It is left to the implementer of the MIB as to
whether a router with a lifetime of zero is removed from the
list.
For IPv6, this value should be extracted from the router
advertisement messages."
REFERENCE "For IPv6 RFC 2462 sections 4.2 and 6.3.4"
::= { ipDefaultRouterEntry 4 }
ipDefaultRouterPreference OBJECT-TYPE
SYNTAX INTEGER {
reserved (-2),
low (-1),
medium (0),
high (1)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of preference given to this router as a
default router as described in he Default Router
Preferences document. Treating the value as a
2 bit signed integer allows for simple arithmetic
comparisons.
For IPv4 routers or IPv6 routers that are not using the
updated router advertisement format, this object is set to
medium (0)."
REFERENCE "RFC 4291, section 2.1"
::= { ipDefaultRouterEntry 5 }
next up is the router advertisement config stuff, and ngl the spin lock is such a mood ๐๐ฆ managers basically take turns so nobody's overwriting each other's rows. iconic teamwork energy, periodt ๐ซถ
--
-- Configuration information for constructing router advertisements
--
ipv6RouterAdvertSpinLock OBJECT-TYPE
SYNTAX TestAndIncr
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"An advisory lock used to allow cooperating SNMP managers to
coordinate their use of the set operation in creating or
modifying rows within this table.
In order to use this lock to coordinate the use of set
operations, managers should first retrieve
ipv6RouterAdvertSpinLock. They should then determine the
appropriate row to create or modify. Finally, they should
issue the appropriate set command including the retrieved
value of ipv6RouterAdvertSpinLock. If another manager has
altered the table in the meantime, then the value of
ipv6RouterAdvertSpinLock will have changed and the creation
will fail as it will be specifying an incorrect value for
ipv6RouterAdvertSpinLock. It is suggested, but not
required, that the ipv6RouterAdvertSpinLock be the first var
bind for each set of objects representing a 'row' in a PDU."
::= { ip 38 }
ipv6RouterAdvertTable OBJECT-TYPE
SYNTAX SEQUENCE OF Ipv6RouterAdvertEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table containing information used to construct router
advertisements."
::= { ip 39 }
ipv6RouterAdvertEntry OBJECT-TYPE
SYNTAX Ipv6RouterAdvertEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing information used to construct router
advertisements.
Information in this table is persistent, and when this
object is written, the entity SHOULD save the change to
non-volatile storage."
INDEX { ipv6RouterAdvertIfIndex }
::= { ipv6RouterAdvertTable 1 }
Ipv6RouterAdvertEntry ::= SEQUENCE {
ipv6RouterAdvertIfIndex InterfaceIndex,
ipv6RouterAdvertSendAdverts TruthValue,
ipv6RouterAdvertMaxInterval Unsigned32,
ipv6RouterAdvertMinInterval Unsigned32,
ipv6RouterAdvertManagedFlag TruthValue,
ipv6RouterAdvertOtherConfigFlag TruthValue,
ipv6RouterAdvertLinkMTU Unsigned32,
ipv6RouterAdvertReachableTime Unsigned32,
ipv6RouterAdvertRetransmitTime Unsigned32,
ipv6RouterAdvertCurHopLimit Unsigned32,
ipv6RouterAdvertDefaultLifetime Unsigned32,
ipv6RouterAdvertRowStatus RowStatus
}
ipv6RouterAdvertIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index value that uniquely identifies the interface on
which router advertisements constructed with this
information will be transmitted. The interface identified
by a particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipv6RouterAdvertEntry 1 }
ipv6RouterAdvertSendAdverts OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"A flag indicating whether the router sends periodic
router advertisements and responds to router solicitations
on this interface."
REFERENCE "RFC 2461 Section 6.2.1"
DEFVAL { false }
::= { ipv6RouterAdvertEntry 2 }
ipv6RouterAdvertMaxInterval OBJECT-TYPE
SYNTAX Unsigned32 (4..1800)
UNITS "seconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum time allowed between sending unsolicited router
advertisements from this interface."
REFERENCE "RFC 2461 Section 6.2.1"
DEFVAL { 600 }
::= { ipv6RouterAdvertEntry 3 }
ipv6RouterAdvertMinInterval OBJECT-TYPE
SYNTAX Unsigned32 (3..1350)
UNITS "seconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The minimum time allowed between sending unsolicited router
advertisements from this interface.
The default is 0.33 * ipv6RouterAdvertMaxInterval, however,
in the case of a low value for ipv6RouterAdvertMaxInterval,
the minimum value for this object is restricted to 3."
REFERENCE "RFC 2461 Section 6.2.1"
::= { ipv6RouterAdvertEntry 4 }
Okay bestie, we're picking up right where the router advert table left off, with the managed and other config flags ๐
ipv6RouterAdvertManagedFlag OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The true/false value to be placed into the 'managed address
configuration' flag field in router advertisements sent from
this interface."
REFERENCE "RFC 2461 Section 6.2.1"
DEFVAL { false }
::= { ipv6RouterAdvertEntry 5 }
ipv6RouterAdvertOtherConfigFlag OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The true/false value to be placed into the 'other stateful
configuration' flag field in router advertisements sent from
this interface."
REFERENCE "RFC 2461 Section 6.2.1"
DEFVAL { false }
::= { ipv6RouterAdvertEntry 6 }
ipv6RouterAdvertLinkMTU OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value to be placed in MTU options sent by the router on
this interface.
A value of zero indicates that no MTU options are sent."
REFERENCE "RFC 2461 Section 6.2.1"
DEFVAL { 0 }
::= { ipv6RouterAdvertEntry 7 }
ipv6RouterAdvertReachableTime OBJECT-TYPE
SYNTAX Unsigned32 (0..3600000)
UNITS "milliseconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value to be placed in the reachable time field in router
advertisement messages sent from this interface.
A value of zero in the router advertisement indicates that
the advertisement isn't specifying a value for reachable
time."
REFERENCE "RFC 2461 Section 6.2.1"
DEFVAL { 0 }
::= { ipv6RouterAdvertEntry 8 }
ipv6RouterAdvertRetransmitTime OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value to be placed in the retransmit timer field in
router advertisements sent from this interface.
A value of zero in the router advertisement indicates that
the advertisement isn't specifying a value for retrans
time."
REFERENCE "RFC 2461 Section 6.2.1"
DEFVAL { 0 }
::= { ipv6RouterAdvertEntry 9 }
ipv6RouterAdvertCurHopLimit OBJECT-TYPE
SYNTAX Unsigned32 (0..255)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The default value to be placed in the current hop limit
field in router advertisements sent from this interface.
The value should be set to the current diameter of the
Internet.
A value of zero in the router advertisement indicates that
the advertisement isn't specifying a value for curHopLimit.
The default should be set to the value specified in the IANA
web pages (www.iana.org) at the time of implementation."
REFERENCE "RFC 2461 Section 6.2.1"
::= { ipv6RouterAdvertEntry 10 }
ipv6RouterAdvertDefaultLifetime OBJECT-TYPE
SYNTAX Unsigned32 (0|4..9000)
UNITS "seconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value to be placed in the router lifetime field of
router advertisements sent from this interface. This value
MUST be either 0 or between ipv6RouterAdvertMaxInterval and
9000 seconds.
A value of zero indicates that the router is not to be used
as a default router.
The default is 3 * ipv6RouterAdvertMaxInterval."
REFERENCE "RFC 2461 Section 6.2.1"
::= { ipv6RouterAdvertEntry 11 }
ipv6RouterAdvertRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row.
As all objects in this conceptual row have default values, a
row can be created and made active by setting this object
appropriately.
The RowStatus TC requires that this DESCRIPTION clause
states under which circumstances other objects in this row
can be modified. The value of this object has no effect on
whether other objects in this conceptual row can be
modified."
::= { ipv6RouterAdvertEntry 12 }
Now we're moving on to the ICMP bit ๐ฆ ICMP gets its own little section, and the counters are the main character here ๐
--
-- ICMP section
--
icmp OBJECT IDENTIFIER ::= { mib-2 5 }
--
-- ICMP non-message-specific counters
--
-- These object IDs are reserved, as they were used in earlier
-- versions of the MIB module. In theory, OIDs are not assigned
-- until the specification is released as an RFC; however, as some
-- companies may have shipped code based on earlier versions of
-- the MIB, it seems best to reserve these OIDs.
-- ::= { icmp 27 }
-- ::= { icmp 28 }
icmpStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF IcmpStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table of generic system-wide ICMP counters."
::= { icmp 29 }
icmpStatsEntry OBJECT-TYPE
SYNTAX IcmpStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the icmpStatsTable."
INDEX { icmpStatsIPVersion }
::= { icmpStatsTable 1 }
IcmpStatsEntry ::= SEQUENCE {
icmpStatsIPVersion InetVersion,
icmpStatsInMsgs Counter32,
icmpStatsInErrors Counter32,
icmpStatsOutMsgs Counter32,
icmpStatsOutErrors Counter32
}
icmpStatsIPVersion OBJECT-TYPE
SYNTAX InetVersion
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP version of the statistics."
::= { icmpStatsEntry 1 }
icmpStatsInMsgs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of ICMP messages that the entity received.
Note that this counter includes all those counted by
icmpStatsInErrors."
::= { icmpStatsEntry 2 }
icmpStatsInErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of ICMP messages that the entity received but
determined as having ICMP-specific errors (bad ICMP
checksums, bad length, etc.)."
::= { icmpStatsEntry 3 }
icmpStatsOutMsgs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of ICMP messages that the entity attempted
to send. Note that this counter includes all those counted
by icmpStatsOutErrors."
::= { icmpStatsEntry 4 }
icmpStatsOutErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of ICMP messages that this entity did not send
due to problems discovered within ICMP, such as a lack of
buffers. This value should not include errors discovered
outside the ICMP layer, such as the inability of IP to route
the resultant datagram. In some implementations, there may
be no types of error that contribute to this counter's
value."
::= { icmpStatsEntry 5 }
Next up: the per-version, per-message-type counters ๐ธ This is where it gets extra detailed, so pay attention bestie ๐
--
-- per-version, per-message type ICMP counters
--
icmpMsgStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF IcmpMsgStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table of system-wide per-version, per-message type ICMP
counters."
::= { icmp 30 }
icmpMsgStatsEntry OBJECT-TYPE
SYNTAX IcmpMsgStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the icmpMsgStatsTable.
The system should track each ICMP type value, even if that
ICMP type is not supported by the system. However, a
given row need not be instantiated unless a message of that
type has been processed, i.e., the row for
icmpMsgStatsType=X MAY be instantiated before but MUST be
instantiated after the first message with Type=X is
received or transmitted. After receiving or transmitting
any succeeding messages with Type=X, the relevant counter
must be incremented."
INDEX { icmpMsgStatsIPVersion, icmpMsgStatsType }
::= { icmpMsgStatsTable 1 }
IcmpMsgStatsEntry ::= SEQUENCE {
icmpMsgStatsIPVersion InetVersion,
icmpMsgStatsType Integer32,
icmpMsgStatsInPkts Counter32,
icmpMsgStatsOutPkts Counter32
}
icmpMsgStatsIPVersion OBJECT-TYPE
SYNTAX InetVersion
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP version of the statistics."
::= { icmpMsgStatsEntry 1 }
icmpMsgStatsType OBJECT-TYPE
SYNTAX Integer32 (0..255)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The ICMP type field of the message type being counted by
this row.
Note that ICMP message types are scoped by the address type
in use."
REFERENCE "http://www.iana.org/assignments/icmp-parameters and
http://www.iana.org/assignments/icmpv6-parameters"
::= { icmpMsgStatsEntry 2 }
icmpMsgStatsInPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of input packets for this AF and type."
::= { icmpMsgStatsEntry 3 }
icmpMsgStatsOutPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of output packets for this AF and type."
::= { icmpMsgStatsEntry 4 }
Last bit for this part: the conformance information ๐ง We're setting up the compliance groups, and this one's a little cliffhanger ๐
--
-- conformance information
--
ipMIBConformance OBJECT IDENTIFIER ::= { ipMIB 2 }
ipMIBCompliances OBJECT IDENTIFIER ::= { ipMIBConformance 1 }
ipMIBGroups OBJECT IDENTIFIER ::= { ipMIBConformance 2 }
-- compliance statements
ipMIBCompliance2 MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for systems that implement IP -
either IPv4 or IPv6.
There are a number of INDEX objects that cannot be
represented in the form of OBJECT clauses in SMIv2, but
for which we have the following compliance requirements,
expressed in OBJECT clause form in this description
clause:
okay bestie, the compliance statement is getting into the good stuff ๐ this part is all about the OBJECT clauses and which access levels an agent is allowed to skip ๐
-- OBJECT ipSystemStatsIPVersion
-- SYNTAX InetVersion {ipv4(1), ipv6(2)}
-- DESCRIPTION
-- This MIB requires support for only IPv4 and IPv6
-- versions.
--
-- OBJECT ipIfStatsIPVersion
-- SYNTAX InetVersion {ipv4(1), ipv6(2)}
-- DESCRIPTION
-- This MIB requires support for only IPv4 and IPv6
-- versions.
--
-- OBJECT icmpStatsIPVersion
-- SYNTAX InetVersion {ipv4(1), ipv6(2)}
-- DESCRIPTION
-- This MIB requires support for only IPv4 and IPv6
-- versions.
--
-- OBJECT icmpMsgStatsIPVersion
-- SYNTAX InetVersion {ipv4(1), ipv6(2)}
-- DESCRIPTION
-- This MIB requires support for only IPv4 and IPv6
-- versions.
--
-- OBJECT ipAddressPrefixType
-- SYNTAX InetAddressType {ipv4(1), ipv6(2)}
-- DESCRIPTION
-- This MIB requires support for only global IPv4 and
-- IPv6 address types.
--
-- OBJECT ipAddressPrefixPrefix
-- SYNTAX InetAddress (Size(4 | 16))
-- DESCRIPTION
-- This MIB requires support for only global IPv4 and
-- IPv6 addresses and so the size can be either 4 or
-- 16 bytes.
--
-- OBJECT ipAddressAddrType
-- SYNTAX InetAddressType {ipv4(1), ipv6(2),
-- ipv4z(3), ipv6z(4)}
-- DESCRIPTION
-- This MIB requires support for only global and
-- non-global IPv4 and IPv6 address types.
--
-- OBJECT ipAddressAddr
-- SYNTAX InetAddress (Size(4 | 8 | 16 | 20))
-- DESCRIPTION
-- This MIB requires support for only global and
-- non-global IPv4 and IPv6 addresses and so the size
-- can be 4, 8, 16, or 20 bytes.
--
-- OBJECT ipNetToPhysicalNetAddressType
-- SYNTAX InetAddressType {ipv4(1), ipv6(2),
-- ipv4z(3), ipv6z(4)}
-- DESCRIPTION
-- This MIB requires support for only global and
-- non-global IPv4 and IPv6 address types.
--
-- OBJECT ipNetToPhysicalNetAddress
-- SYNTAX InetAddress (Size(4 | 8 | 16 | 20))
-- DESCRIPTION
-- This MIB requires support for only global and
-- non-global IPv4 and IPv6 addresses and so the size
-- can be 4, 8, 16, or 20 bytes.
--
-- OBJECT ipDefaultRouterAddressType
-- SYNTAX InetAddressType {ipv4(1), ipv6(2),
-- ipv4z(3), ipv6z(4)}
-- DESCRIPTION
-- This MIB requires support for only global and
-- non-global IPv4 and IPv6 address types.
--
-- OBJECT ipDefaultRouterAddress
-- SYNTAX InetAddress (Size(4 | 8 | 16 | 20))
-- DESCRIPTION
-- This MIB requires support for only global and
-- non-global IPv4 and IPv6 addresses and so the size
-- can be 4, 8, 16, or 20 bytes."
MODULE -- this module
MANDATORY-GROUPS { ipSystemStatsGroup, ipAddressGroup,
ipNetToPhysicalGroup, ipDefaultRouterGroup,
icmpStatsGroup }
GROUP ipSystemStatsHCOctetGroup
DESCRIPTION
"This group is mandatory for systems that have an aggregate
bandwidth of greater than 20MB. Including this group does
not allow an entity to neglect the 32 bit versions of these
objects."
GROUP ipSystemStatsHCPacketGroup
DESCRIPTION
"This group is mandatory for systems that have an aggregate
bandwidth of greater than 650MB. Including this group
does not allow an entity to neglect the 32 bit versions of
these objects."
GROUP ipIfStatsGroup
DESCRIPTION
"This group is optional for all systems."
GROUP ipIfStatsHCOctetGroup
DESCRIPTION
"This group is mandatory for systems that include the
ipIfStatsGroup and include links with bandwidths of greater
than 20MB. Including this group does not allow an entity to
neglect the 32 bit versions of these objects."
GROUP ipIfStatsHCPacketGroup
DESCRIPTION
"This group is mandatory for systems that include the
ipIfStatsGroup and include links with bandwidths of greater
than 650MB. Including this group does not allow an entity
to neglect the 32 bit versions of these objects."
GROUP ipv4GeneralGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv4."
GROUP ipv4IfGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv4."
GROUP ipv4SystemStatsGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv4."
GROUP ipv4SystemStatsHCPacketGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv4 and
that have an aggregate bandwidth of greater than 650MB.
Including this group does not allow an entity to neglect the
32 bit versions of these objects."
GROUP ipv4IfStatsGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv4 and
including the ipIfStatsGroup."
GROUP ipv4IfStatsHCPacketGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv4 and
including the ipIfStatsHCPacketGroup. Including this group
does not allow an entity to neglect the 32 bit versions of
these objects."
GROUP ipv6GeneralGroup2
DESCRIPTION
"This group is mandatory for all systems supporting IPv6."
GROUP ipv6IfGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv6."
GROUP ipAddressPrefixGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv6."
GROUP ipv6ScopeGroup
DESCRIPTION
"This group is mandatory for all systems supporting IPv6."
GROUP ipv6RouterAdvertGroup
DESCRIPTION
"This group is mandatory for all IPv6 routers."
GROUP ipLastChangeGroup
DESCRIPTION
"This group is optional for all agents."
OBJECT ipv6IpForwarding
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6IpDefaultHopLimit
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv4InterfaceEnableStatus
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6InterfaceEnableStatus
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6InterfaceForwarding
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipAddressSpinLock
MIN-ACCESS not-accessible
DESCRIPTION
"An agent is not required to provide write access to this
object. However, if an agent provides write access to any
of the other objects in the ipAddressGroup, it SHOULD
provide write access to this object as well."
OBJECT ipAddressIfIndex
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write or create access
to this object."
OBJECT ipAddressType
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write or create access
to this object."
OBJECT ipAddressStatus
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write or create access
to this object."
OBJECT ipAddressRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write or create access
to this object."
OBJECT ipAddressStorageType
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write or create access
to this object.
If an agent allows this object to be written or created, it
is not required to allow this object to be set to readOnly,
permanent, or nonVolatile."
OBJECT ipNetToPhysicalPhysAddress
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write or create access
to this object."
OBJECT ipNetToPhysicalType
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write or create access
to this object."
OBJECT ipv6RouterAdvertSpinLock
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object. However, if an agent provides write access to
any of the other objects in the ipv6RouterAdvertGroup, it
SHOULD provide write access to this object as well."
OBJECT ipv6RouterAdvertSendAdverts
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertMaxInterval
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertMinInterval
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertManagedFlag
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertOtherConfigFlag
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertLinkMTU
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertReachableTime
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertRetransmitTime
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertCurHopLimit
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertDefaultLifetime
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write access to this
object."
OBJECT ipv6RouterAdvertRowStatus
MIN-ACCESS read-only
DESCRIPTION
"An agent is not required to provide write or create access
to this object."
::= { ipMIBCompliances 2 }
-- units of conformance
๐ฆ more coming next, stay tuned bestie ๐ซถ
okay the groups are next bestie ๐โจ here's the whole group block, copied exactly so nothing gets lost ๐
ipv4GeneralGroup OBJECT-GROUP
OBJECTS { ipForwarding, ipDefaultTTL, ipReasmTimeout }
STATUS current
DESCRIPTION
"The group of IPv4-specific objects for basic management of
IPv4 entities."
::= { ipMIBGroups 3 }
ipv4IfGroup OBJECT-GROUP
OBJECTS { ipv4InterfaceReasmMaxSize, ipv4InterfaceEnableStatus,
ipv4InterfaceRetransmitTime }
STATUS current
DESCRIPTION
"The group of IPv4-specific objects for basic management of
IPv4 interfaces."
::= { ipMIBGroups 4 }
ipv6GeneralGroup2 OBJECT-GROUP
OBJECTS { ipv6IpForwarding, ipv6IpDefaultHopLimit }
STATUS current
DESCRIPTION
"The IPv6 group of objects providing for basic management of
IPv6 entities."
::= { ipMIBGroups 5 }
ipv6IfGroup OBJECT-GROUP
OBJECTS { ipv6InterfaceReasmMaxSize, ipv6InterfaceIdentifier,
ipv6InterfaceEnableStatus, ipv6InterfaceReachableTime,
ipv6InterfaceRetransmitTime, ipv6InterfaceForwarding }
STATUS current
DESCRIPTION
"The group of IPv6-specific objects for basic management of
IPv6 interfaces."
::= { ipMIBGroups 6 }
ipLastChangeGroup OBJECT-GROUP
OBJECTS { ipv4InterfaceTableLastChange,
ipv6InterfaceTableLastChange,
ipIfStatsTableLastChange }
STATUS current
DESCRIPTION
"The last change objects associated with this MIB. These
objects are optional for all agents. They SHOULD be
implemented on agents where it is possible to determine the
proper values. Where it is not possible to determine the
proper values, for example when the tables are split amongst
several sub-agents using AgentX, the agent MUST NOT
implement these objects to return an incorrect or static
value."
::= { ipMIBGroups 7 }
ipSystemStatsGroup OBJECT-GROUP
OBJECTS { ipSystemStatsInReceives,
ipSystemStatsInOctets,
ipSystemStatsInHdrErrors,
ipSystemStatsInNoRoutes,
ipSystemStatsInAddrErrors,
ipSystemStatsInUnknownProtos,
ipSystemStatsInTruncatedPkts,
ipSystemStatsInForwDatagrams,
ipSystemStatsReasmReqds,
ipSystemStatsReasmOKs,
ipSystemStatsReasmFails,
ipSystemStatsInDiscards,
ipSystemStatsInDelivers,
ipSystemStatsOutRequests,
ipSystemStatsOutNoRoutes,
ipSystemStatsOutForwDatagrams,
ipSystemStatsOutDiscards,
ipSystemStatsOutFragReqds,
ipSystemStatsOutFragOKs,
ipSystemStatsOutFragFails,
ipSystemStatsOutFragCreates,
ipSystemStatsOutTransmits,
ipSystemStatsOutOctets,
ipSystemStatsInMcastPkts,
ipSystemStatsInMcastOctets,
ipSystemStatsOutMcastPkts,
ipSystemStatsOutMcastOctets,
ipSystemStatsDiscontinuityTime,
ipSystemStatsRefreshRate }
STATUS current
DESCRIPTION
"IP system wide statistics."
::= { ipMIBGroups 8 }
ipv4SystemStatsGroup OBJECT-GROUP
OBJECTS { ipSystemStatsInBcastPkts, ipSystemStatsOutBcastPkts }
STATUS current
DESCRIPTION
"IPv4 only system wide statistics."
::= { ipMIBGroups 9 }
ipSystemStatsHCOctetGroup OBJECT-GROUP
OBJECTS { ipSystemStatsHCInOctets,
ipSystemStatsHCOutOctets,
ipSystemStatsHCInMcastOctets,
ipSystemStatsHCOutMcastOctets
}
STATUS current
DESCRIPTION
"IP system wide statistics for systems that may overflow the
standard octet counters within 1 hour."
::= { ipMIBGroups 10 }
ipSystemStatsHCPacketGroup OBJECT-GROUP
OBJECTS { ipSystemStatsHCInReceives,
ipSystemStatsHCInForwDatagrams,
ipSystemStatsHCInDelivers,
ipSystemStatsHCOutRequests,
ipSystemStatsHCOutForwDatagrams,
ipSystemStatsHCOutTransmits,
ipSystemStatsHCInMcastPkts,
ipSystemStatsHCOutMcastPkts
}
STATUS current
DESCRIPTION
"IP system wide statistics for systems that may overflow the
standard packet counters within 1 hour."
::= { ipMIBGroups 11 }
ipv4SystemStatsHCPacketGroup OBJECT-GROUP
OBJECTS { ipSystemStatsHCInBcastPkts,
ipSystemStatsHCOutBcastPkts }
STATUS current
DESCRIPTION
"IPv4 only system wide statistics for systems that may
overflow the standard packet counters within 1 hour."
::= { ipMIBGroups 12 }
ipIfStatsGroup OBJECT-GROUP
OBJECTS { ipIfStatsInReceives, ipIfStatsInOctets,
ipIfStatsInHdrErrors, ipIfStatsInNoRoutes,
ipIfStatsInAddrErrors, ipIfStatsInUnknownProtos,
ipIfStatsInTruncatedPkts, ipIfStatsInForwDatagrams,
ipIfStatsReasmReqds, ipIfStatsReasmOKs,
ipIfStatsReasmFails, ipIfStatsInDiscards,
ipIfStatsInDelivers, ipIfStatsOutRequests,
ipIfStatsOutForwDatagrams, ipIfStatsOutDiscards,
ipIfStatsOutFragReqds, ipIfStatsOutFragOKs,
ipIfStatsOutFragFails, ipIfStatsOutFragCreates,
ipIfStatsOutTransmits, ipIfStatsOutOctets,
ipIfStatsInMcastPkts, ipIfStatsInMcastOctets,
ipIfStatsOutMcastPkts, ipIfStatsOutMcastOctets,
ipIfStatsDiscontinuityTime, ipIfStatsRefreshRate }
STATUS current
DESCRIPTION
"IP per-interface statistics."
::= { ipMIBGroups 13 }
ipv4IfStatsGroup OBJECT-GROUP
OBJECTS { ipIfStatsInBcastPkts, ipIfStatsOutBcastPkts }
STATUS current
DESCRIPTION
"IPv4 only per-interface statistics."
::= { ipMIBGroups 14 }
ipIfStatsHCOctetGroup OBJECT-GROUP
OBJECTS { ipIfStatsHCInOctets, ipIfStatsHCOutOctets,
ipIfStatsHCInMcastOctets, ipIfStatsHCOutMcastOctets }
STATUS current
DESCRIPTION
"IP per-interfaces statistics for systems that include
interfaces that may overflow the standard octet
counters within 1 hour."
::= { ipMIBGroups 15 }
ipIfStatsHCPacketGroup OBJECT-GROUP
OBJECTS { ipIfStatsHCInReceives, ipIfStatsHCInForwDatagrams,
ipIfStatsHCInDelivers, ipIfStatsHCOutRequests,
ipIfStatsHCOutForwDatagrams, ipIfStatsHCOutTransmits,
ipIfStatsHCInMcastPkts, ipIfStatsHCOutMcastPkts }
STATUS current
DESCRIPTION
"IP per-interfaces statistics for systems that include
interfaces that may overflow the standard packet counters
within 1 hour."
::= { ipMIBGroups 16 }
ipv4IfStatsHCPacketGroup OBJECT-GROUP
OBJECTS { ipIfStatsHCInBcastPkts, ipIfStatsHCOutBcastPkts }
STATUS current
DESCRIPTION
"IPv4 only per-interface statistics for systems that include
interfaces that may overflow the standard packet counters
within 1 hour."
::= { ipMIBGroups 17 }
ipAddressPrefixGroup OBJECT-GROUP
OBJECTS { ipAddressPrefixOrigin,
ipAddressPrefixOnLinkFlag,
ipAddressPrefixAutonomousFlag,
ipAddressPrefixAdvPreferredLifetime,
ipAddressPrefixAdvValidLifetime }
STATUS current
DESCRIPTION
"The group of objects for providing information about address
prefixes used by this node."
::= { ipMIBGroups 18 }
ipAddressGroup OBJECT-GROUP
OBJECTS { ipAddressSpinLock, ipAddressIfIndex,
ipAddressType, ipAddressPrefix,
ipAddressOrigin, ipAddressStatus,
ipAddressCreated, ipAddressLastChanged,
ipAddressRowStatus, ipAddressStorageType }
STATUS current
DESCRIPTION
"The group of objects for providing information about the
addresses relevant to this entity's interfaces."
::= { ipMIBGroups 19 }
ipNetToPhysicalGroup OBJECT-GROUP
OBJECTS { ipNetToPhysicalPhysAddress, ipNetToPhysicalLastUpdated,
ipNetToPhysicalType, ipNetToPhysicalState,
ipNetToPhysicalRowStatus }
STATUS current
DESCRIPTION
"The group of objects for providing information about the
mappings of network address to physical address known to
this node."
::= { ipMIBGroups 20 }
ipv6ScopeGroup OBJECT-GROUP
OBJECTS { ipv6ScopeZoneIndexLinkLocal,
ipv6ScopeZoneIndex3,
ipv6ScopeZoneIndexAdminLocal,
ipv6ScopeZoneIndexSiteLocal,
ipv6ScopeZoneIndex6,
ipv6ScopeZoneIndex7,
ipv6ScopeZoneIndexOrganizationLocal,
ipv6ScopeZoneIndex9,
ipv6ScopeZoneIndexA,
ipv6ScopeZoneIndexB,
ipv6ScopeZoneIndexC,
ipv6ScopeZoneIndexD }
STATUS current
DESCRIPTION
"The group of objects for managing IPv6 scope zones."
::= { ipMIBGroups 21 }
ipDefaultRouterGroup OBJECT-GROUP
OBJECTS { ipDefaultRouterLifetime, ipDefaultRouterPreference }
STATUS current
DESCRIPTION
"The group of objects for providing information about default
routers known to this node."
::= { ipMIBGroups 22 }
ipv6RouterAdvertGroup OBJECT-GROUP
OBJECTS { ipv6RouterAdvertSpinLock,
ipv6RouterAdvertSendAdverts,
ipv6RouterAdvertMaxInterval,
ipv6RouterAdvertMinInterval,
ipv6RouterAdvertManagedFlag,
ipv6RouterAdvertOtherConfigFlag,
ipv6RouterAdvertLinkMTU,
ipv6RouterAdvertReachableTime,
ipv6RouterAdvertRetransmitTime,
ipv6RouterAdvertCurHopLimit,
ipv6RouterAdvertDefaultLifetime,
ipv6RouterAdvertRowStatus
}
STATUS current
DESCRIPTION
"The group of objects for controlling information advertised
by IPv6 routers."
::= { ipMIBGroups 23 }
icmpStatsGroup OBJECT-GROUP
OBJECTS {icmpStatsInMsgs, icmpStatsInErrors,
icmpStatsOutMsgs, icmpStatsOutErrors,
icmpMsgStatsInPkts, icmpMsgStatsOutPkts }
STATUS current
DESCRIPTION
"The group of objects providing ICMP statistics."
::= { ipMIBGroups 24 }
--
-- Deprecated objects
--
ipInReceives OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The total number of input datagrams received from
interfaces, including those received in error.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsInRecieves."
::= { ip 3 }
ipInHdrErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of input datagrams discarded due to errors in
their IPv4 headers, including bad checksums, version number
mismatch, other format errors, time-to-live exceeded, errors
discovered in processing their IPv4 options, etc.
This object has been deprecated as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsInHdrErrors."
::= { ip 4 }
Okay bestie, we're picking up right where ipInHdrErrors left off, and this next batch is all about the IPv4 counters that got retired ๐ โจ The big reason they're deprecated: a new IP version-neutral table came along, so these are kinda like the old group chat that everyone moved off of ๐ฆ
Here's the first stretch, starting with the address errors counter ๐ธ
ipInAddrErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of input datagrams discarded because the IPv4
address in their IPv4 header's destination field was not a
valid address to be received at this entity. This count
includes invalid addresses (e.g., 0.0.0.0) and addresses of
unsupported Classes (e.g., Class E). For entities which are
not IPv4 routers, and therefore do not forward datagrams,
this counter includes datagrams discarded because the
destination address was not a local address.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsInAddrErrors."
::= { ip 5 }
ipForwDatagrams OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of input datagrams for which this entity was not
their final IPv4 destination, as a result of which an
attempt was made to find a route to forward them to that
final destination. In entities which do not act as IPv4
routers, this counter will include only those packets which
were Source-Routed via this entity, and the Source-Route
option processing was successful.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsInForwDatagrams."
::= { ip 6 }
ipInUnknownProtos OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of locally-addressed datagrams received
successfully but discarded because of an unknown or
unsupported protocol.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsInUnknownProtos."
::= { ip 7 }
ipInDiscards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of input IPv4 datagrams for which no problems
were encountered to prevent their continued processing, but
which were discarded (e.g., for lack of buffer space). Note
that this counter does not include any datagrams discarded
while awaiting re-assembly.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsInDiscards."
::= { ip 8 }
ipInDelivers OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The total number of input datagrams successfully delivered
to IPv4 user-protocols (including ICMP).
This object has been deprecated as a new IP version neutral
table has been added. It is loosely replaced by
ipSystemStatsIndelivers."
::= { ip 9 }
ipOutRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The total number of IPv4 datagrams which local IPv4 user
protocols (including ICMP) supplied to IPv4 in requests for
transmission. Note that this counter does not include any
datagrams counted in ipForwDatagrams.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsOutRequests."
::= { ip 10 }
ipOutDiscards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of output IPv4 datagrams for which no problem was
encountered to prevent their transmission to their
destination, but which were discarded (e.g., for lack of
buffer space). Note that this counter would include
datagrams counted in ipForwDatagrams if any such packets met
this (discretionary) discard criterion.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsOutDiscards."
::= { ip 11 }
Next up: the no-route counter, which has a super relatable example about default routers going down ๐ Then the whole reassembly and fragmentation crew, plus routing discards ๐ง
ipOutNoRoutes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of IPv4 datagrams discarded because no route
could be found to transmit them to their destination. Note
that this counter includes any packets counted in
ipForwDatagrams which meet this `no-route' criterion. Note
that this includes any datagrams which a host cannot route
because all of its default routers are down.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsOutNoRoutes."
::= { ip 12 }
ipReasmReqds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of IPv4 fragments received which needed to be
reassembled at this entity.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsReasmReqds."
::= { ip 14 }
ipReasmOKs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of IPv4 datagrams successfully re-assembled.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsReasmOKs."
::= { ip 15 }
ipReasmFails OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of failures detected by the IPv4 re-assembly
algorithm (for whatever reason: timed out, errors, etc).
Note that this is not necessarily a count of discarded IPv4
fragments since some algorithms (notably the algorithm in
RFC 815) can lose track of the number of fragments by
combining them as they are received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsReasmFails."
::= { ip 16 }
ipFragOKs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of IPv4 datagrams that have been successfully
fragmented at this entity.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsOutFragOKs."
::= { ip 17 }
ipFragFails OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of IPv4 datagrams that have been discarded
because they needed to be fragmented at this entity but
could not be, e.g., because their Don't Fragment flag was
set.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
ipSystemStatsOutFragFails."
::= { ip 18 }
ipFragCreates OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of IPv4 datagram fragments that have been
generated as a result of fragmentation at this entity.
This object has been deprecated as a new IP version neutral
table has been added. It is loosely replaced by
ipSystemStatsOutFragCreates."
::= { ip 19 }
ipRoutingDiscards OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of routing entries which were chosen to be
discarded even though they are valid. One possible reason
for discarding such an entry could be to free-up buffer
space for other routing entries.
This object was defined in pre-IPv6 versions of the IP MIB.
It was implicitly IPv4 only, but the original specifications
did not indicate this protocol restriction. In order to
clarify the specifications, this object has been deprecated
and a similar, but more thoroughly clarified, object has
been added to the IP-FORWARD-MIB."
::= { ip 23 }
Last bit for this part: the deprecated IPv4 address table ๐ It's got its own little family of entries (ipAddrEntry, ipAdEntAddr, and friends), and it's giving a whole neat little database vibe ๐
-- the deprecated IPv4 address table
ipAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF IpAddrEntry
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"The table of addressing information relevant to this
entity's IPv4 addresses.
This table has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by the
ipAddressTable although several objects that weren't deemed
useful weren't carried forward while another
(ipAdEntReasmMaxSize) was moved to the ipv4InterfaceTable."
::= { ip 20 }
ipAddrEntry OBJECT-TYPE
SYNTAX IpAddrEntry
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"The addressing information for one of this entity's IPv4
addresses."
INDEX { ipAdEntAddr }
::= { ipAddrTable 1 }
IpAddrEntry ::= SEQUENCE {
ipAdEntAddr IpAddress,
ipAdEntIfIndex INTEGER,
ipAdEntNetMask IpAddress,
ipAdEntBcastAddr INTEGER,
ipAdEntReasmMaxSize INTEGER
}
ipAdEntAddr OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The IPv4 address to which this entry's addressing
information pertains."
::= { ipAddrEntry 1 }
ipAdEntIfIndex OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The index value which uniquely identifies the interface to
which this entry is applicable. The interface identified by
a particular value of this index is the same interface as
identified by the same value of the IF-MIB's ifIndex."
::= { ipAddrEntry 2 }
ipAdEntNetMask OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The subnet mask associated with the IPv4 address of this
entry. The value of the mask is an IPv4 address with all
the network bits set to 1 and all the hosts bits set to 0."
::= { ipAddrEntry 3 }
ipAdEntBcastAddr OBJECT-TYPE
SYNTAX INTEGER (0..1)
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The value of the least-significant bit in the IPv4 broadcast
address used for sending datagrams on the (logical)
interface associated with the IPv4 address of this entry.
For example, when the Internet standard all-ones broadcast
address is used, the value will be 1. This value applies to
both the subnet and network broadcast addresses used by the
entity on this (logical) interface."
::= { ipAddrEntry 4 }
ipAdEntReasmMaxSize OBJECT-TYPE
SYNTAX INTEGER (0..65535)
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The size of the largest IPv4 datagram which this entity can
re-assemble from incoming IPv4 fragmented datagrams received
on this interface."
::= { ipAddrEntry 5 }
okay bestie, the deprecated IPv4 Address Translation table and the deprecated ICMP group are up next ๐ฆโจ
-- the deprecated IPv4 Address Translation table
-- The Address Translation tables contain the IpAddress to
-- "physical" address equivalences. Some interfaces do not
-- use translation tables for determining address
-- equivalences (e.g., DDN-X.25 has an algorithmic method);
-- if all interfaces are of this type, then the Address
-- Translation table is empty, i.e., has zero entries.
ipNetToMediaTable OBJECT-TYPE
SYNTAX SEQUENCE OF IpNetToMediaEntry
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"The IPv4 Address Translation table used for mapping from
IPv4 addresses to physical addresses.
This table has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by the
ipNetToPhysicalTable."
::= { ip 22 }
ipNetToMediaEntry OBJECT-TYPE
SYNTAX IpNetToMediaEntry
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"Each entry contains one IpAddress to `physical' address
equivalence."
INDEX { ipNetToMediaIfIndex,
ipNetToMediaNetAddress }
::= { ipNetToMediaTable 1 }
IpNetToMediaEntry ::= SEQUENCE {
ipNetToMediaIfIndex INTEGER,
ipNetToMediaPhysAddress PhysAddress,
ipNetToMediaNetAddress IpAddress,
ipNetToMediaType INTEGER
}
ipNetToMediaIfIndex OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
MAX-ACCESS read-create
STATUS deprecated
DESCRIPTION
"The interface 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 the IF-MIB's ifIndex.
This object predates the rule limiting index objects to a
max access value of 'not-accessible' and so continues to use
a value of 'read-create'."
::= { ipNetToMediaEntry 1 }
ipNetToMediaPhysAddress OBJECT-TYPE
SYNTAX PhysAddress (SIZE(0..65535))
MAX-ACCESS read-create
STATUS deprecated
DESCRIPTION
"The media-dependent `physical' address. This object should
return 0 when this entry is in the 'incomplete' state.
As the entries in this table are typically not persistent
when this object is written the entity should not save the
change to non-volatile storage. Note: a stronger
requirement is not used because this object was previously
defined."
::= { ipNetToMediaEntry 2 }
ipNetToMediaNetAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-create
STATUS deprecated
DESCRIPTION
"The IpAddress corresponding to the media-dependent
`physical' address.
This object predates the rule limiting index objects to a
max access value of 'not-accessible' and so continues to use
a value of 'read-create'."
::= { ipNetToMediaEntry 3 }
ipNetToMediaType OBJECT-TYPE
SYNTAX INTEGER {
other(1), -- none of the following
invalid(2), -- an invalidated mapping
dynamic(3),
static(4)
}
MAX-ACCESS read-create
STATUS deprecated
DESCRIPTION
"The type of mapping.
Setting this object to the value invalid(2) has the effect
of invalidating the corresponding entry in the
ipNetToMediaTable. That is, it effectively dis-associates
the interface identified with said entry from the mapping
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 ipNetToMediaType object.
As the entries in this table are typically not persistent
when this object is written the entity should not save the
change to non-volatile storage. Note: a stronger
requirement is not used because this object was previously
defined."
::= { ipNetToMediaEntry 4 }
-- the deprecated ICMP group
icmpInMsgs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The total number of ICMP messages which the entity received.
Note that this counter includes all those counted by
icmpInErrors.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
icmpStatsInMsgs."
::= { icmp 1 }
icmpInErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP messages which the entity received but
determined as having ICMP-specific errors (bad ICMP
checksums, bad length, etc.).
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
icmpStatsInErrors."
::= { icmp 2 }
icmpInDestUnreachs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Destination Unreachable messages
received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 3 }
icmpInTimeExcds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Time Exceeded messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 4 }
icmpInParmProbs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Parameter Problem messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 5 }
icmpInSrcQuenchs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Source Quench messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 6 }
icmpInRedirects OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Redirect messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 7 }
icmpInEchos OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Echo (request) messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 8 }
icmpInEchoReps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Echo Reply messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 9 }
icmpInTimestamps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Timestamp (request) messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 10 }
icmpInTimestampReps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Timestamp Reply messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 11 }
icmpInAddrMasks OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Address Mask Request messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 12 }
icmpInAddrMaskReps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Address Mask Reply messages received.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 13 }
icmpOutMsgs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The total number of ICMP messages which this entity
attempted to send. Note that this counter includes all
those counted by icmpOutErrors.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
icmpStatsOutMsgs."
::= { icmp 14 }
icmpOutErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP messages which this entity did not send
due to problems discovered within ICMP, such as a lack of
buffers. This value should not include errors discovered
outside the ICMP layer, such as the inability of IP to route
the resultant datagram. In some implementations, there may
be no types of error which contribute to this counter's
value.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by
icmpStatsOutErrors."
::= { icmp 15 }
icmpOutDestUnreachs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Destination Unreachable messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 16 }
icmpOutTimeExcds OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Time Exceeded messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 17 }
icmpOutParmProbs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Parameter Problem messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 18 }
icmpOutSrcQuenchs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Source Quench messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 19 }
icmpOutRedirects OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Redirect messages sent. For a host, this
object will always be zero, since hosts do not send
redirects.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 20 }
icmpOutEchos OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Echo (request) messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 21 }
icmpOutEchoReps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Echo Reply messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 22 }
icmpOutTimestamps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Timestamp (request) messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 23 }
icmpOutTimestampReps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Timestamp Reply messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 24 }
icmpOutAddrMasks OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Address Mask Request messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 25 }
icmpOutAddrMaskReps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of ICMP Address Mask Reply messages sent.
This object has been deprecated, as a new IP version-neutral
table has been added. It is loosely replaced by a column in
the icmpMsgStatsTable."
::= { icmp 26 }
-- deprecated conformance information
-- deprecated compliance statements
ipMIBCompliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"The compliance statement for systems that implement only
IPv4. For version-independence, this compliance statement
is deprecated in favor of ipMIBCompliance2."
MODULE -- this module
MANDATORY-GROUPS { ipGroup,
icmpGroup }
::= { ipMIBCompliances 1 }
-- deprecated units of conformance
ipGroup OBJECT-GROUP
OBJECTS { ipForwarding, ipDefaultTTL,
ipInReceives, ipInHdrErrors,
ipInAddrErrors, ipForwDatagrams,
ipInUnknownProtos, ipInDiscards,
ipInDelivers, ipOutRequests,
ipOutDiscards, ipOutNoRoutes,
ipReasmTimeout, ipReasmReqds,
ipReasmOKs, ipReasmFails,
ipFragOKs, ipFragFails,
ipFragCreates, ipAdEntAddr,
ipAdEntIfIndex, ipAdEntNetMask,
ipAdEntBcastAddr, ipAdEntReasmMaxSize,
ipNetToMediaIfIndex, ipNetToMediaPhysAddress,
ipNetToMediaNetAddress, ipNetToMediaType,
ipRoutingDiscards
}
STATUS deprecated
DESCRIPTION
"The ip group of objects providing for basic management of IP
entities, exclusive of the management of IP routes.
As part of the version independence, this group has been
deprecated. "
::= { ipMIBGroups 1 }
icmpGroup OBJECT-GROUP
OBJECTS { icmpInMsgs, icmpInErrors,
icmpInDestUnreachs, icmpInTimeExcds,
icmpInParmProbs, icmpInSrcQuenchs,
icmpInRedirects, icmpInEchos,
icmpInEchoReps, icmpInTimestamps,
icmpInTimestampReps, icmpInAddrMasks,
icmpInAddrMaskReps, icmpOutMsgs,
icmpOutErrors, icmpOutDestUnreachs,
icmpOutTimeExcds, icmpOutParmProbs,
icmpOutSrcQuenchs, icmpOutRedirects,
icmpOutEchos, icmpOutEchoReps,
icmpOutTimestamps, icmpOutTimestampReps,
icmpOutAddrMasks, icmpOutAddrMaskReps }
STATUS deprecated
DESCRIPTION
"The icmp group of objects providing ICMP statistics.
As part of the version independence, this group has been
deprecated. "
::= { ipMIBGroups 2 }
END
6. Previous Work โจ
okay so this doc is built on some older work ๐ง it contains objects that got modified from RFC 1213 [11], RFC 2011 [12], RFC 2465 [13], and RFC 2466 [14]. ngl that's such a vibe, nothing gets made from scratch when you can glow up what already exists ๐
7. References ๐
7.1. Normative References ๐
[1] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
[2] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
[3] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.
[4] Narten, T., Nordmark, E., and W. Simpson, "Neighbor Discovery for IP Version 6 (IPv6)", RFC 2461, December 1998.
[5] Thomson, S. and T. Narten, "IPv6 Stateless Address Autoconfiguration", RFC 2462, December 1998.
[6] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June 2000.
[7] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, "Textual Conventions for Internet Network Addresses", RFC 4001, February 2005.
[8] Draves, R. and D. Thaler, "Default Router Preferences and More-Specific Routes", RFC 4191, November 2005.
7.2. Informative References ๐ฆ
[9] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
[10] Plummer, D., "Ethernet Address Resolution Protocol: Or converting network protocol addresses to 48.bit Ethernet address for transmission on Ethernet hardware", STD 37, RFC 826, November 1982.
[11] McCloghrie, K. and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets:MIB-II", STD 17, RFC 1213, March 1991.
[12] McCloghrie, K., "SNMPv2 Management Information Base for the Internet Protocol using SMIv2", RFC 2011, November 1996.
[13] Haskin, D. and S. Onishi, "Management Information Base for IP Version 6: Textual Conventions and General Group", RFC 2465, December 1998.
[14] Haskin, D. and S. Onishi, "Management Information Base for IP Version 6: ICMPv6 Group", RFC 2466, December 1998.
[15] Narten, T. and R. Draves, "Privacy Extensions for Stateless Address Autoconfiguration in IPv6", RFC 3041, January 2001.
[16] Haberman, B., "IP Forwarding Table MIB", RFC 4292, April 2006.
[17] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, February 2006.
8. Security Considerations ๐โจ
Okay bestie, security time, and this part is SERIOUS ๐ญ. This MIB module has a bunch of objects with a MAX-ACCESS clause of read-write and/or read-create, and those can be sensitive or vulnerable depending on the network. SET operations in a non-secure environment without proper protection can seriously mess with network operations. Here's the tea on which tables and objects are at risk:
ipForwardingandipv6IpForwarding- these let a manager turn the routing functions on the entity on or off ๐. If routing gets disabled, an attacker could deny service to users ๐. If routing gets enabled, an attacker could open a conduit into an area. That area might then transit packets it shouldn't, or the attacker could get in while bypassing security safeguards ๐.ipDefaultTTLandipv6IpDefaultHopLimit- these decide how far a packet is allowed to travel, aka the diameter of the valid area โณ. If an attacker lowers these values, packets could get discarded before they ever reach their destinations ๐.ipv4InterfaceEnableStatusandipv6InterfaceEnableStatus- these let a manager enable or disable IPv4 and IPv6 on a specific interface ๐. Enabling a protocol on an interface could give an attacker an unsecured path into a node (or through it, if routing is also enabled). Disabling a protocol could force packets to take some other interface, or deny access to some or all of the network over that protocol ๐ง.ipAddressTable- the objects in this table specify the addresses in use on this node ๐. If an attacker messes with that info, they can make a node ignore messages meant for it, or accept (at least at the IP layer) messages it would otherwise ignore. Filtering or security associations may reduce the damage in the second case ๐ก๏ธ.ipv6RouterAdvertTable- the objects here specify what a router should propagate in its routing advertisement messages ๐ฃ. Changing this info can interfere with auto-configuration of all hosts on the link, and most changes will cause a denial of service to some or all hosts on the link ๐ต. Two objects,ipv6RouterAdvertManagedFlagandipv6RouterAdvertOtherConfigFlag, indicate whether a host should acquire configuration information from some other source. If an attacker turns these on, they could make a host pull its configuration from a compromised source ๐ฃ.ipNetToPhysicalPhysAddressandipNetToPhysicalType- these objects are used to translate a network (IP) address into a media-dependent address ๐บ๏ธ. If an attacker changes them, they could disable communication with a node or divert messages from one node to another. The attacker could also pull off a similar attack just by responding to the ARP or ND request made by the target node ๐ต๏ธ.
Now, some of the readable objects in this MIB module (the ones with a MAX-ACCESS other than not-accessible) can also be sensitive or vulnerable in some network environments ๐. So it's important to control even GET access to these objects, and possibly even encrypt their values when sending them over the network via SNMP ๐.
Here's the sensitivity breakdown for the readable stuff:
Basically, every object in this MIB could be considered sensitive, since they all report on the status of the IP modules within a system ๐คทโโ๏ธ. But ipSystemStatsTable, ipIfStatsTable, and ipAddressTable are the ones an attacker would most likely be eyeing ๐ฏ. The statistics tables tell someone about the quantity and type of traffic this node is processing, and especially for transit providers, that info may be considered sensitive ๐. The address table is basically a handy list of every address in use by this node. Each address on its own is unremarkable, but the full list would let an attacker correlate otherwise unrelated traffic ๐งฉ. For example, an attacker might be able to match an RFC 3041 [15] private address with known public addresses, which would totally undo what RFC 3041 is trying to do ๐.
SNMP versions before SNMPv3 did not include adequate security ๐ซ . Even if the network itself is secure (for example, by using IPsec), there's still no control over who on that secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module ๐ช.
It is RECOMMENDED that implementers consider the security features provided by the SNMPv3 framework (see [9], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy). ๐๐
Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security ๐. After that, it's a customer/operator responsibility to make sure the SNMP entity giving access to an instance of this MIB module is properly configured, so the objects are only accessible to principals (users) with legitimate rights to GET or SET (change/create/delete) them ๐.
9. Acknowledgements ๐ซถ
Reviews and other contributions were made by:
- Dario Acornero, Cisco Systems
- Mike MacFaden, VMWare
- Keith McCloghrie, Cisco Systems
- Juergen Schoenwalder, TU Braunschweig
- Margaret Wasserman, Devicescape
10. Authors ๐
This document was written by the IPv6 MIB revision design team ๐ :
Bill Fenner, AT&T Labs -- Research EMail: fenner@research.att.com
Brian Haberman EMail: brian@innovationslab.net
Shawn A. Routhier EMail: sar@iwl.com
Dave Thaler, Microsoft EMail: dthaler@microsoft.com
This document updates parts of the MIBs from several other documents ๐ง . RFC 2011 is the previous update to the IP MIB, and RFC 2465 and RFC 2466 are the first versions that specified IPv6 addresses and information ๐.
RFC 2011: Keith McCloghrie, Cisco Systems (Editor)
RFC 2465 and RFC 2466: Dimitry Haskin, Bay Networks
Steve Onishi, Bay Networks
Editor's Contact Information ๐ฎ
Shawn A. Routhier Interworking Labs 108 Whispering Pines Dr. Suite 235 Scotts Valley, CA 95066 USA
EMail: sar@iwl.com
Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights ๐.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ๐ โโ๏ธ.
Intellectual Property โ๏ธ
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. It also doesn't represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79 ๐.
Copies of IPR disclosures made to the IETF Secretariat, and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification, can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr ๐.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org ๐.
Acknowledgement ๐
Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA) ๐.
๐ฆ where this page comes from
- ietf: rfc4293 2006-04
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms