RFC 4113

Management Information Base for the User Datagram Protocol (UDP)

πŸ“… published June 2005, from ietf

RFC 4113: Management Information Base for the User Datagram Protocol (UDP) πŸ¦‹

okay bestie, let's talk about RFC 4113 πŸŽ€ It's a Standards Track doc from June 2005, written by B. Fenner from AT&T Labs - Research and J. Flick from Hewlett-Packard Company. It's part of the Network Working Group's stream, and it obsoletes RFC 2454 and RFC 2013 πŸ’… The whole thing is a MIB for UDP, so it's basically the menu of stats and settings your network tools can read off UDP. The title is literally Management Information Base for the User Datagram Protocol (UDP), and it's giving main character energy 🌸


Status of This Memo ✨

ok so this section says the doc is an Internet standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements 🫢 For where the protocol actually stands, go check the current "Internet Official Protocol Standards" (STD 1) πŸ“‹ Also, distribution of this memo is unlimited, so share it with everyone πŸ’–


the Internet Society owns the copyright here, and it's dated 2005 πŸ”₯


Abstract 🌈

this memo defines a chunk of the Management Information Base (MIB) for network management protocols used across the Internet community ✨ specifically, it describes managed objects for implementing the User Datagram Protocol (UDP) in a way that doesn't care which IP version you're using 🧚 and tbh, this memo obsoletes RFCs 2013 and 2454, so it's the new canon now πŸ‘‘


Table of Contents πŸ“

1.  The Internet-Standard Management Framework . . . . . . . . . .  2
2.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
    2.1.  Relationship to Other MIBs . . . . . . . . . . . . . . .  3
          2.1.1.  Relationship to RFC1213-MIB  . . . . . . . . . .  3
          2.1.2.  Relationship to the IPV6-UDP-MIB . . . . . . . .  3
          2.1.3.  Relationship to HOST-RESOURCES-MIB and
                  SYSAPPL-MIB. . . . . . . . . . . . . . . . . . .  4
3.  Definitions  . . . . . . . . . . . . . . . . . . . . . . . . .  4
4.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 15
5.  Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 16
7.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 17
8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 17
    8.1.  Normative References . . . . . . . . . . . . . . . . . . 17
    8.2.  Informative References . . . . . . . . . . . . . . . . . 18

1. The Internet-Standard Management Framework ✨

if you want the full breakdown of the Internet-Standard Management Framework docs, section 7 of RFC 3410 [RFC3410] has you covered 🫢

managed objects are stored in a virtual info store called the Management Information Base, or MIB πŸ—‚οΈ you usually reach them through the Simple Network Management Protocol (SNMP) πŸ“‘ the objects in the MIB are defined using the Structure of Management Information (SMI) rules ✨ this memo specifies a MIB module that's compliant with SMIv2, which is covered in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] πŸ’…


2. Overview πŸŽ€

this memo defines a portion of the Management Information Base (MIB) for network management protocols in the Internet community πŸ¦‹ it describes managed objects for implementing the User Datagram Protocol (UDP), as defined in RFC 768 [RFC0768], in a way that works no matter which IP version you're on 🌍

the UDP-MIB in this memo has one table and a group of scalars πŸ’–

  • The udp group of scalars reports parameters and statistics for a UDP protocol engine. Two scalars, udpHCInDatagrams and udpHCOutDatagrams, were added to this group after RFC 2013 [RFC2013] came out, so fast networks get high-capacity counters 🏎️ Discontinuities in the counters in this group show up as discontinuities in the value of the sysUpTime object, which is defined in RFC 3418 [RFC3418] ⏱️
  • The udpEndpointTable gives you status info for all the UDP endpoints a UDP protocol engine handles πŸ”₯ It covers strictly listening endpoints, like the historical udpTable, and also "connected" UDP endpoints, which only accept packets from a given remote system 🫢 It also tells you which operating system level processes handle UDP connections πŸ‘‘ Addresses and ports in this table use the InetAddressType, InetAddress, and InetPortNumber textual conventions defined in RFC 4001 [RFC4001] ✨

2.1. Relationship to Other MIBs 🧚

this section is all about how this UDP-MIB module links up with other MIB modules πŸ’œ

2.1.1. Relationship to RFC1213-MIB πŸ“

the UDP objects started out as part of the RFC1213-MIB, defined in RFC 1213 [RFC1213] πŸ•°οΈ the UDP objects were later copied into their own MIB module and published in RFC 2013 [RFC2013] using SMIv2 format πŸ’…

the earlier UDP-MIB versions both defined the udpTable, which has been deprecated for basically two reasons πŸ™ˆ

  1. The udpTable only supports IPv4.

the IETF's current approach is to write IP version neutral MIBs instead of separate definitions for each IP version 🌈 that cuts down on overhead when new objects get added, since there's only one place to add them ✨ so the approach from RFC 2454 [RFC2454] with separate tables isn't continued πŸ’€

  1. The udpTable doesn't allow describing "connected" UDP endpoints.

connected endpoints tend to have different behaviour and management access patterns than listening endpoints 🫢 adding remote endpoint info to the udpEndpointTable lets you add specific status and statistic objects for connected endpoints and connections πŸ¦‹

2.1.2. Relationship to the IPV6-UDP-MIB πŸ’–

the IPV6-UDP-MIB, defined in RFC 2454 [RFC2454], has been moved to Historic because the approach of having separate IP version specific tables isn't followed anymore πŸͺ¦ so implementing RFC 2454 isn't suggested anymore πŸ™…β€β™€οΈ

because scoped addresses are now represented with the IPv4z and IPv6z address types, the udpEndpointTable doesn't need to explicitly include the ifIndex in its index clause anymore πŸŽ€ this is a change from the ipv6UdpIfIndex used in RFC 2454 πŸ”„

2.1.3. Relationship to HOST-RESOURCES-MIB and SYSAPPL-MIB 🌸

the udpEndpointTable reports which operating system level process handles a connection or a listening endpoint πŸ–₯️ the value is an Unsigned32, and it's expected to match the hrSWRunIndex of the HOST-RESOURCES-MIB [RFC2790] (if the value is smaller than 2147483647) or the sysApplElmtRunIndex of the SYSAPPL-MIB [RFC2287] 🧩 this lets management apps figure out which UDP connections belong to which OS level process, which has proven super valuable in operational environments πŸ‘‘


3. Definitions πŸ’…

here's the actual MIB module, copied exactly as written ✨

UDP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, Counter64,
    Unsigned32, IpAddress, mib-2       FROM SNMPv2-SMI
    MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
    InetAddress, InetAddressType,
    InetPortNumber                     FROM INET-ADDRESS-MIB;

udpMIB MODULE-IDENTITY
    LAST-UPDATED "200505200000Z"  -- May 20, 2005
    ORGANIZATION
           "IETF IPv6 Working Group
            http://www.ietf.org/html.charters/ipv6-charter.html"
    CONTACT-INFO
           "Bill Fenner (editor)

            AT&T Labs -- Research
            75 Willow Rd.
            Menlo Park, CA 94025

            Phone: +1 650 330-7893
            Email: <fenner@research.att.com>

            John Flick (editor)

            Hewlett-Packard Company
            8000 Foothills Blvd. M/S 5557
            Roseville, CA 95747

            Phone: +1 916 785 4018
            Email: <john.flick@hp.com>

            Send comments to <ipv6@ietf.org>"

    DESCRIPTION
           "The MIB module for managing UDP implementations.
            Copyright (C) The Internet Society (2005).  This
            version of this MIB module is part of RFC 4113;
            see the RFC itself for full legal notices."
    REVISION      "200505200000Z"  -- May 20, 2005
    DESCRIPTION
           "IP version neutral revision, incorporating the
            following revisions:

            - Added udpHCInDatagrams and udpHCOutDatagrams in order
              to provide high-capacity counters for fast networks.
            - Added text to the descriptions of all counter objects
              to indicate how discontinuities are detected.
            - Deprecated the IPv4-specific udpTable and replaced it
              with the version neutral udpEndpointTable.  This
              table includes support for connected UDP endpoints
              and support for identification of the operating
              system process associated with a UDP endpoint.
            - Deprecated the udpGroup and replaced it with object
              groups representing the current set of objects.
            - Deprecated udpMIBCompliance and replaced it with
              udpMIBCompliance2, which includes the compliance
              information for the new object groups.

            This version published as RFC 4113."
    REVISION      "199411010000Z"    -- November 1, 1994
    DESCRIPTION
           "Initial SMIv2 version, published as RFC 2013."
    REVISION      "199103310000Z"    -- March 31, 1991
    DESCRIPTION
           "The initial revision of this MIB module was part of
            MIB-II, published as RFC 1213."
    ::= { mib-2 50 }

-- the UDP group

udp      OBJECT IDENTIFIER ::= { mib-2 7 }

udpInDatagrams OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of UDP datagrams delivered to UDP
            users.

            Discontinuities in the value of this counter can occur
            at re-initialization of the management system, and at
            other times as indicated by discontinuities in the
            value of sysUpTime."
    ::= { udp 1 }

udpNoPorts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of received UDP datagrams for which
            there was no application at the destination port.

            Discontinuities in the value of this counter can occur
            at re-initialization of the management system, and at
            other times as indicated by discontinuities in the
            value of sysUpTime."
    ::= { udp 2 }

udpInErrors OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The number of received UDP datagrams that could not be
            delivered for reasons other than the lack of an
            application at the destination port.

            Discontinuities in the value of this counter can occur
            at re-initialization of the management system, and at
            other times as indicated by discontinuities in the
            value of sysUpTime."
    ::= { udp 3 }

udpOutDatagrams OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of UDP datagrams sent from this
            entity.

ok that's the first chunk of the MIB module, and the rest of the definitions are coming up next πŸ§šπŸ’œ

Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by discontinuities in the value of sysUpTime." ::= { udp 8 }

udpHCOutDatagrams OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of UDP datagrams sent from this entity, for devices that can transmit more than 1 million UDP datagrams per second.

Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by discontinuities in the value of sysUpTime." ::= { udp 9 }

-- -- { udp 6 } was defined as the ipv6UdpTable in RFC2454's -- IPV6-UDP-MIB. This RFC obsoletes RFC 2454, so { udp 6 } is -- obsoleted. --

-- The UDP "Endpoint" table.

udpEndpointTable OBJECT-TYPE SYNTAX SEQUENCE OF UdpEndpointEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing information about this entity's UDP endpoints on which a local application is currently accepting or sending datagrams.

The address type in this table represents the address type used for the communication, irrespective of the higher-layer abstraction. For example, an application using IPv6 'sockets' to communicate via IPv4 between ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would use InetAddressType ipv4(1).

Unlike the udpTable in RFC 2013, this table also allows the representation of an application that completely specifies both local and remote addresses and ports. A listening application is represented in three possible ways:

  1. An application that is willing to accept both IPv4 and IPv6 datagrams is represented by a udpEndpointLocalAddressType of unknown(0) and a udpEndpointLocalAddress of ''h (a zero-length octet-string).
  2. An application that is willing to accept only IPv4 or only IPv6 datagrams is represented by a udpEndpointLocalAddressType of the appropriate address type and a udpEndpointLocalAddress of '0.0.0.0' or '::' respectively.
  3. An application that is listening for datagrams only for a specific IP address but from any remote system is represented by a udpEndpointLocalAddressType of the appropriate address type, with udpEndpointLocalAddress specifying the local address.

In all cases where the remote is a wildcard, the udpEndpointRemoteAddressType is unknown(0), the udpEndpointRemoteAddress is ''h (a zero-length octet-string), and the udpEndpointRemotePort is 0.

If the operating system is demultiplexing UDP packets by remote address and port, or if the application has 'connected' the socket specifying a default remote address and port, the udpEndpointRemote* values should be used to reflect this." ::= { udp 7 }

udpEndpointEntry OBJECT-TYPE SYNTAX UdpEndpointEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about a particular current UDP endpoint.

Implementers need to be aware that if the total number of elements (octets or sub-identifiers) in udpEndpointLocalAddress and udpEndpointRemoteAddress exceeds 111, then OIDs of column instances in this table will have more than 128 sub-identifiers and cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." INDEX { udpEndpointLocalAddressType, udpEndpointLocalAddress, udpEndpointLocalPort, udpEndpointRemoteAddressType, udpEndpointRemoteAddress, udpEndpointRemotePort, udpEndpointInstance } ::= { udpEndpointTable 1 }

UdpEndpointEntry ::= SEQUENCE { udpEndpointLocalAddressType InetAddressType, udpEndpointLocalAddress InetAddress, udpEndpointLocalPort InetPortNumber, udpEndpointRemoteAddressType InetAddressType, udpEndpointRemoteAddress InetAddress, udpEndpointRemotePort InetPortNumber, udpEndpointInstance Unsigned32, udpEndpointProcess Unsigned32 }

udpEndpointLocalAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "The address type of udpEndpointLocalAddress. Only IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or unknown(0) if datagrams for all local IP addresses are accepted." ::= { udpEndpointEntry 1 }

udpEndpointLocalAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The local IP address for this UDP endpoint.

The value of this object can be represented in three possible ways, depending on the characteristics of the listening application:

  1. For an application that is willing to accept both IPv4 and IPv6 datagrams, the value of this object must be ''h (a zero-length octet-string), with the value of the corresponding instance of the udpEndpointLocalAddressType object being unknown(0).
  2. For an application that is willing to accept only IPv4 or only IPv6 datagrams, the value of this object must be '0.0.0.0' or '::', respectively, while the corresponding instance of the udpEndpointLocalAddressType object represents the appropriate address type.
  3. For an application that is listening for data destined only to a specific IP address, the value of this object is the specific IP address for which this node is receiving packets, with the corresponding instance of the udpEndpointLocalAddressType object representing the appropriate address type.

As this object is used in the index for the udpEndpointTable, implementors of this table should be careful not to create entries that would result in OIDs with more than 128 subidentifiers; else the information cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." ::= { udpEndpointEntry 2 }

udpEndpointLocalPort OBJECT-TYPE SYNTAX InetPortNumber MAX-ACCESS not-accessible STATUS current DESCRIPTION "The local port number for this UDP endpoint." ::= { udpEndpointEntry 3 }

udpEndpointRemoteAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "The address type of udpEndpointRemoteAddress. Only IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or unknown(0) if datagrams for all remote IP addresses are accepted. Also, note that some combinations of udpEndpointLocalAdressType and udpEndpointRemoteAddressType are not supported. In particular, if the value of this object is not unknown(0), it is expected to always refer to the same IP version as udpEndpointLocalAddressType." ::= { udpEndpointEntry 4 }

udpEndpointRemoteAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The remote IP address for this UDP endpoint. If datagrams from any remote system are to be accepted, this value is ''h (a zero-length octet-string). Otherwise, it has the type described by udpEndpointRemoteAddressType and is the address of the remote system from which datagrams are to be accepted (or to which all datagrams will be sent).

As this object is used in the index for the udpEndpointTable, implementors of this table should be careful not to create entries that would result in OIDs with more than 128 subidentifiers; else the information cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." ::= { udpEndpointEntry 5 }

udpEndpointRemotePort OBJECT-TYPE SYNTAX InetPortNumber MAX-ACCESS not-accessible STATUS current DESCRIPTION "The remote port number for this UDP endpoint. If datagrams from any remote system are to be accepted, this value is zero." ::= { udpEndpointEntry 6 }

udpEndpointInstance OBJECT-TYPE SYNTAX Unsigned32 (1..'ffffffff'h) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The instance of this tuple. This object is used to distinguish among multiple processes 'connected' to the same UDP endpoint. For example, on a system implementing the BSD sockets interface, this would be used to support the SO_REUSEADDR and SO_REUSEPORT socket options."

::= { udpEndpointEntry 7 }

udpEndpointProcess OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The system's process ID for the process associated with this endpoint, or zero if there is no such process. This value is expected to be the same as HOST-RESOURCES-MIB::hrSWRunIndex or SYSAPPL-MIB:: sysApplElmtRunIndex for some row in the appropriate tables." ::= { udpEndpointEntry 8 }

-- The deprecated UDP Listener table

-- The deprecated UDP listener table only contains information -- about this entity's IPv4 UDP end-points on which a local -- application is currently accepting datagrams. It does not -- provide more detailed connection information, or information -- about IPv6 endpoints.

Okay so the big MIB chunk is next, and bestie, the deprecated tables are giving "keep it for the old friends but don't invite anyone new" πŸ₯²πŸ’…

   udpTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF UdpEntry
       MAX-ACCESS not-accessible
       STATUS     deprecated
       DESCRIPTION
              "A table containing IPv4-specific UDP listener
               information.  It contains information about all local
               IPv4 UDP end-points on which an application is
               currently accepting datagrams.  This table has been
               deprecated in favor of the version neutral
               udpEndpointTable."
       ::= { udp 5 }

   udpEntry OBJECT-TYPE
       SYNTAX     UdpEntry
       MAX-ACCESS not-accessible
       STATUS     deprecated
       DESCRIPTION
              "Information about a particular current UDP listener."
       INDEX   { udpLocalAddress, udpLocalPort }
       ::= { udpTable 1 }

   UdpEntry ::= SEQUENCE {
       udpLocalAddress   IpAddress,
       udpLocalPort      Integer32

   }

   udpLocalAddress OBJECT-TYPE
       SYNTAX     IpAddress
       MAX-ACCESS read-only
       STATUS     deprecated
       DESCRIPTION
              "The local IP address for this UDP listener.  In the
               case of a UDP listener that is willing to accept
               datagrams for any IP interface associated with the
               node, the value 0.0.0.0 is used."
       ::= { udpEntry 1 }

   udpLocalPort OBJECT-TYPE
       SYNTAX     Integer32 (0..65535)
       MAX-ACCESS read-only
       STATUS     deprecated
       DESCRIPTION
              "The local port number for this UDP listener."
       ::= { udpEntry 2 }

   -- conformance information

   udpMIBConformance OBJECT IDENTIFIER ::= { udpMIB 2 }
   udpMIBCompliances OBJECT IDENTIFIER ::= { udpMIBConformance 1 }
   udpMIBGroups      OBJECT IDENTIFIER ::= { udpMIBConformance 2 }

   -- compliance statements

   udpMIBCompliance2 MODULE-COMPLIANCE
       STATUS     current
       DESCRIPTION
              "The compliance statement for systems that implement
               UDP.

               There are a number of INDEX objects that cannot be
               represented in the form of OBJECT clauses in SMIv2, but
               for which we have the following compliance
               requirements, expressed in OBJECT clause form in this
               description clause:

               -- OBJECT      udpEndpointLocalAddressType
               -- SYNTAX      InetAddressType { unknown(0), ipv4(1),
               --                               ipv6(2), ipv4z(3),
               --                               ipv6z(4) }
               -- DESCRIPTION
               --     Support for dns(5) is not required.
               -- OBJECT      udpEndpointLocalAddress
               -- SYNTAX      InetAddress (SIZE(0|4|8|16|20))
               -- DESCRIPTION
               --     Support is only required for zero-length
               --     octet-strings, and for scoped and unscoped
               --     IPv4 and IPv6 addresses.
               -- OBJECT      udpEndpointRemoteAddressType
               -- SYNTAX      InetAddressType { unknown(0), ipv4(1),
               --                               ipv6(2), ipv4z(3),
               --                               ipv6z(4) }
               -- DESCRIPTION
               --     Support for dns(5) is not required.
               -- OBJECT      udpEndpointRemoteAddress
               -- SYNTAX      InetAddress (SIZE(0|4|8|16|20))
               -- DESCRIPTION
               --     Support is only required for zero-length
               --     octet-strings, and for scoped and unscoped
               --     IPv4 and IPv6 addresses.
              "
       MODULE  -- this module
            MANDATORY-GROUPS { udpBaseGroup, udpEndpointGroup }
            GROUP       udpHCGroup
            DESCRIPTION
                   "This group is mandatory for systems that
                    are capable of receiving or transmitting more than
                    1 million UDP datagrams per second.  1 million
                    datagrams per second will cause a Counter32 to
                    wrap in just over an hour."
       ::= { udpMIBCompliances 2 }

   udpMIBCompliance MODULE-COMPLIANCE
       STATUS     deprecated
       DESCRIPTION
              "The compliance statement for IPv4-only systems that
               implement UDP.  For IP version independence, this
               compliance statement is deprecated in favor of
               udpMIBCompliance2.  However, agents are still
               encouraged to implement these objects in order to
               interoperate with the deployed base of managers."
       MODULE  -- this module
           MANDATORY-GROUPS { udpGroup }
       ::= { udpMIBCompliances 1 }

   -- units of conformance

   udpGroup OBJECT-GROUP
       OBJECTS   { udpInDatagrams, udpNoPorts,
                   udpInErrors, udpOutDatagrams,
                   udpLocalAddress, udpLocalPort }

       STATUS     deprecated
       DESCRIPTION
              "The deprecated group of objects providing for
               management of UDP over IPv4."
       ::= { udpMIBGroups 1 }

   udpBaseGroup OBJECT-GROUP
       OBJECTS   { udpInDatagrams, udpNoPorts, udpInErrors,
                   udpOutDatagrams }
       STATUS     current
       DESCRIPTION
              "The group of objects providing for counters of UDP
               statistics."
       ::= { udpMIBGroups 2 }

   udpHCGroup OBJECT-GROUP
       OBJECTS   { udpHCInDatagrams, udpHCOutDatagrams }
       STATUS     current
       DESCRIPTION
              "The group of objects providing for counters of high
               speed UDP implementations."
       ::= { udpMIBGroups 3 }

   udpEndpointGroup OBJECT-GROUP
       OBJECTS    { udpEndpointProcess }
       STATUS     current
       DESCRIPTION
              "The group of objects providing for the IP version
               independent management of UDP 'endpoints'."
       ::= { udpMIBGroups 4 }

   END

4. Acknowledgements πŸŽ€

This document is built on a modified subset of RFC 1213, and it replaces RFCs 2013 and 2454. Huge thanks to the authors and editors of those documents for their amazing work πŸ™Œ

5. Contributors πŸ¦‹

This document is an output of the IPv6 MIB revision team, and the earlier versions had some lovely contributors too:

   Bill Fenner, AT&T Labs -- Research
   Email: fenner@research.at.com
   Brian Haberman
   Email: brian@innovationslab.net

   Shawn A. Routhier, Wind River
   Email: sar@epilogue.com

   Juergen Schoenwalder, TU Braunschweig
   Email: schoenw@ibr.cs.tu-bs.de

   Dave Thaler, Microsoft
   Email: dthaler@windows.microsoft.com

Much of Keith McCloghrie's text from RFC1213/RFC2013 is still in this document, and the structure of the MIB is all thanks to him πŸ‘‘

Mike Daniele wrote the original IPv6 UDP MIB in RFC2454 🌸

Juergen Schoenwalder wrote much of the text for section 2 🫢

6. Security Considerations πŸ”₯

Okay, this section is serious, so listen up πŸ’€ There are no management objects defined in this MIB that have a MAX-ACCESS clause of read-write and/or read-create. So if this MIB is implemented correctly, there is no risk that an intruder can alter or create any management objects of this MIB module through direct SNMP SET operations.

Some of the readable objects in this MIB module (meaning objects with a MAX-ACCESS other than not-accessible) may be considered sensitive or vulnerable in some network environments. It is thus important to control even GET and/or NOTIFY access to these objects, and possibly even to encrypt the values of these objects when sending them over the network via SNMP. These are the tables and objects, along with their sensitivity and vulnerability:

The indices of the udpEndpointTable and udpTable contain information on the listeners on an entity. In particular, the udpEndpointLocalPort and udpLocalPort objects in the indices can be used to identify which ports are open on the machine and which attacks are likely to succeed, without the attacker having to run a port scanner 😱

SNMP versions prior to SNMPv3 did not include adequate security. Even if the network itself is secure (for example by using IPSec), there is still no control over who on the secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module πŸ™ˆ

It is recommended that the implementors consider the security features provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy) πŸ”

Furthermore, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It is then a customer/operator responsibility to make sure that the SNMP entity giving access to an instance of this MIB module is properly configured, so that access to the objects is given only to those principals (users) who have legitimate rights to GET or SET (change/create/delete) them. That part is non-negotiable, bestie πŸ’…

7. IANA Considerations 🌈

The MIB module in this document uses the following IANA-assigned OBJECT IDENTIFIER values, which are recorded in the SMI Numbers registry:

      +------------+-------------------------+
      | Descriptor | OBJECT IDENTIFIER value |
      +------------+-------------------------+
      | udp        | { mib-2 7}              |
      | udpMIB     | { mib-2 50 }            |
      +------------+-------------------------+

8. References ⭐

8.1. Normative References

   [RFC0768]  Postel, J., "User Datagram Protocol", STD 6, RFC 768,
              August 1980.

   [RFC2578]  McCloghrie, K., Perkins, D., and J. Schoenwaelder,
              "Structure of Management Information Version 2 (SMIv2)",
              STD 58, RFC 2578, April 1999.

   [RFC2579]  McCloghrie, K., Perkins, D., and J. Schoenwaelder,
              "Textual Conventions for SMIv2", STD 58, RFC 2579, April
              1999.

   [RFC2580]  McCloghrie, K., Perkins, D., and J. Schoenwaelder,
              "Conformance Statements for SMIv2", STD 58, RFC 2580,
              April 1999.

   [RFC3418]  Presuhn, R., "Management Information Base (MIB) for the
              Simple Network Management Protocol (SNMP)", STD 62, RFC
              3418, December 2002.

   [RFC4001]  Daniele, M., Haberman, B., Routhier, S., and J.
              Schoenwaelder, "Textual Conventions for Internet Network
              Addresses", RFC 4001, February 2005.

8.2. Informative References

   [RFC1213]  McCloghrie, K. and M. Rose, "Management Information Base
              for Network Management of TCP/IP-based internets:MIB-II",
              STD 17, RFC 1213, March 1991.

   [RFC2013]  McCloghrie, K., "SNMPv2 Management Information Base for
              the User Datagram Protocol using SMIv2", RFC 2013,
              November 1996.

   [RFC2287]  Krupczak, C. and J. Saperia, "Definitions of System-Level
              Managed Objects for Applications", RFC 2287, February
              1998.

   [RFC2454]  Daniele, M., "IP Version 6 Management Information Base for
              the User Datagram Protocol", RFC 2454, December 1998.

   [RFC2790]  Waldbusser, S. and P. Grillo, "Host Resources MIB", RFC
              2790, March 2000.

   [RFC3410]  Case, J., Mundy, R., Partain, D., and B. Stewart,
              "Introduction and Applicability Statements for Internet-
              Standard Management Framework", RFC 3410, December 2002.

Authors' Addresses πŸ¦‹

   Bill Fenner
   AT&T Labs -- Research
   75 Willow Rd
   Menlo Park, CA  94025
   USA

   EMail: fenner@research.att.com


   John Flick
   Hewlett-Packard Company
   8000 Foothills Blvd. M/S 5557
   Roseville, CA  95747-5557
   USA

   EMail: john.flick@hp.com

okay bestie, the legal bit πŸ’… The Internet Society holds the copyright on this one, (C) 2005 🌈 This document is subject to the rights, licenses and restrictions in BCP 78, and except as BCP 78 sets out, the authors keep all their rights 🫢

THE DISCLAIMER, NO CAP: this document and the info in it are provided "AS IS". THE CONTRIBUTOR, the organization they represent or are sponsored by (if any), THE INTERNET SOCIETY, and THE INTERNET ENGINEERING TASK FORCE all DISCLAIM ALL WARRANTIES, express or implied. That includes, but isn't limited to, any warranty that using the info won't infringe any rights, and any implied warranties of merchantability or fitness for a particular purpose. πŸ’€

Intellectual Property πŸ¦‹

the IETF is not picking a side on whether any Intellectual Property Rights (or other rights) that someone might claim over the tech in this doc are valid, how far they reach, or whether a license for them is even available πŸ™ˆ it also doesn't say it has looked into those rights itself. if you want the rules for rights in RFC docs, check BCP 78 and BCP 79 πŸ“š

copies of IPR disclosures sent to the IETF Secretariat, plus any promises of licenses, or the results of trying to get a general license or permission for implementers or users to use these proprietary rights, can be found in the IETF's online IPR repository at http://www.ietf.org/ipr πŸ”₯

the IETF also invites anyone to let it know about any copyrights, patents, patent applications, or other proprietary rights that might cover tech needed to implement this standard. send that info to the IETF at ietf-ipr@ietf.org ✨

Acknowledgement 🌸

the RFC Editor function is currently funded by the Internet Society. thank you for keeping the lights on, fr fr πŸ«ΆπŸŽ€


πŸ“¦ where this page comes from