RFC 3919

Remote Network Monitoring (RMON) Protocol Identifiers for IPv6 and Multi Protocol Label Switching (MPLS)

πŸ“… published October 2004, from ietf

Remote Network Monitoring (RMON) Protocol Identifiers for IPv6 and Multi Protocol Label Switching (MPLS) πŸ’–

Okay bestie, here's the header tea πŸ«–:

  • Network Working Group 🫢
  • Written by E. Stephan (France Telecom R&D) and J. Palet (Consulintel) ✨
  • Category: Informational πŸŽ€
  • Date: October 2004 🌸
  • Obsoletes or updates: the header doesn't list any RFCs it obsoletes or updates, but it builds on RFC 2895 and RFC 2896 πŸ¦‹

Status of This Memo ✨

Quick vibe check: this memo gives info to the Internet community. It is not an Internet standard of any kind πŸ™ˆ Distribution of this memo is unlimited.

Copyright (C) The Internet Society (2004).

Abstract 🌈

Okay so this memo adds more protocol identifier examples on top of the ones in RFC 2896, and they're for IP version 6 and MPLS πŸ’… These can be used to make valid protocolDirTable INDEX encodings, as defined by the Remote Network Monitoring MIB (Management Information Base) Version 2 [RFC2021] and the RMON Protocol Identifier Reference [RFC2895].

It also adds more protocol identifier macros for well-known protocols, again on top of RFC 2896 🧚 A conformant implementation of the RMON-2 MIB [RFC2021] can work without these identifiers, so this document isn't a formal IETF standard. It's published to encourage better interoperability between RMON-2 agent implementations by sharing RMON-related IPv6 and MPLS protocol info 🫢

Table of Contents πŸ—‚οΈ

1.  The Internet-Standard Management Framework . . . . . . . . . .  2
2.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
3.  Relationship to the Remote Network Monitoring MIB. . . . . . .  2
4.  MPLS layer protocol identifiers  . . . . . . . . . . . . . . .  2
5.  IPv6 Protocols . . . . . . . . . . . . . . . . . . . . . . . .  3
6.  Security Considerations  . . . . . . . . . . . . . . . . . . .  5
7.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . .  5
8.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  6

    8.1.  Normative References . . . . . . . . . . . . . . . . . .  6
    8.2.  Informative References . . . . . . . . . . . . . . . . .  6
    Authors' Addresses  . . . . . . . . . . . . . . . . . . . . .   7
    Full Copyright Statement. . . . . . . . . . . .. . . . . . . .  8

1. The Internet-Standard Management Framework 🌸

Okay so if you want the full lore on the Internet-Standard Management Framework, go check section 7 of RFC 3410 [RFC3410] πŸ“š Managed objects live in a virtual information store called the Management Information Base, or MIB. MIB objects are usually accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined with the mechanisms in the Structure of Management Information (SMI). This memo specifies a MIB module that's compliant with SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] ✨

2. Overview πŸ¦‹

This memo defines basic protocol identifiers for IP version 6 and MPLS protocols πŸ’œ

The "Remote Network Monitoring MIB Protocol Identifier Macros" [RFC2896] defines various protocol identifiers. The syntax of the protocol identifier descriptor is defined in the RMON Protocol Identifier Reference [RFC2895]. Make sure you're familiar with both of these docs, it's giving homework energy πŸ“–

The intent isn't to port every protocol identifier from RFC 2895 and RFC 2896 over to IP version 6. Instead, it defines protocol identifiers for IP version 6 protocols and for the MPLS protocol πŸŽ€

3. Relationship to the Remote Network Monitoring MIB 🧚

RMON MIB implementations use protocol identifiers to describe unambiguous capabilities in protocolDirTable entries πŸ’…

4. MPLS layer protocol identifiers 🌈

Okay this section defines MPLS protocol identifiers with unambiguous names, so MPLS Unicast and MPLS Multicast are never confused πŸ™ˆ

MPLS unicast

Here's the unicast one, mplsu πŸ’–

-- MPLS unicast

mplsu PROTOCOL-IDENTIFIER
   PARAMETERS { }
   ATTRIBUTES { }
   DESCRIPTION
                "MPLS Label Stack Encoding."

   CHILDREN
                "Children of MPLS are not systematically identifiable. "
   REFERENCE
                "RFC 3032, MPLS Label Stack Encoding [RFC3032]."
   ::= {
                ether2  0x8847, -- RFC 3032 section 5
                snap    0x8847,
                802-1Q  0x8847,
                ppp     0x0281, -- RFC 3032 section 4.3
   }

MPLS multicast

And the multicast twin, mplsm πŸ¦‹ Same vibes, different numbers ✨

-- MPLS multicast

mplsm PROTOCOL-IDENTIFIER
   PARAMETERS { }
   ATTRIBUTES { }
   DESCRIPTION
                "MPLS Label Stack Encoding."
   CHILDREN
                "Children of MPLS are not systematically identifiable."
   REFERENCE
                "RFC 3032, MPLS Label Stack Encoding [RFC3032]."
   ::= {
                ether2  0x8848, -- RFC 3032 section 5
                snap    0x8848,
                802-1Q  0x8848,
                ppp     0x0283, -- RFC 3032 section 4.3
   }

5. IPv6 Protocols πŸ‘‘

Now the main event, the IPv6 identifiers 😭πŸ”₯

ip6

ip6 is the identifier for IPv6 itself, which is defined in RFC 2460 [RFC2460]. Its children are picked by the Protocol field (one octet) from the PROTOCOL NUMBERS table in the Assigned Numbers Document. The Protocol value gets encoded as [ 0.0.0.a ], where a is the protocol field, and the children are named ip6 a. Here's an example: a protocolDirID-fragment value of 0.0.0.1.0.0.0.41.0.0.0.58 means IPv6-ICMP, so ether2.ip6.icmp6 πŸ’€

The address format is 16 octets of the IPv6 address in network byte order. Every IP packet carries two addresses, a source and a destination 🫢

Heads up: ether2.ip.ipip6.udp and ether2.ip6.udp are two different protocolDirIDs in the protocolDirTable, so the agent assigns two different local protocol index values to them. Here are the full INDEX values as examples.
ip6 PROTOCOL-IDENTIFIER
PARAMETERS {}
ATTRIBUTES {}
DESCRIPTION
        "The protocol identifiers for the Internet Protocol, Version 6
        [RFC2460]."

CHILDREN
        "Children of 'ip6' are selected by the value in the Protocol
        field (one octet), as defined in the PROTOCOL NUMBERS table
        within the Assigned Numbers Document.

        The value of the Protocol field is encoded in an octet string as
        [ 0.0.0.a ], where 'a' is the protocol field.
        Children of 'ip6' are encoded as [ 0.0.0.a ], and named as 'ip6
        a' where 'a' is the protocol field value.  For example, a
        protocolDirID-fragment value of:
          0.0.0.1.0.0.0.41.0.0.0.58

        defines an encapsulation of IPv6-ICMP (ether2.ip6.icmp6)"
ADDRESS-FORMAT
        "16 octets of the IPv6 address, in network byte order.  Each ip
        packet contains two addresses, the source address and the
        destination address."
DECODING
        "Note: ether2.ip.ipip6.udp is a different protocolDirID than
        ether2.ip6.udp, as identified in the protocolDirTable.  As such,
        two different local protocol index values will be assigned by
        the agent. E.g., (full INDEX values shown):
        ether2.ip.ipip6.udp =
                        16.0.0.0.1.0.0.8.0.0.0.0.41.0.0.0.17.4.0.0.0.0
        ether2.ip6.udp =
                        12.0.0.0.1.0.0.0.41.0.0.0.17.3.0.0.0 "
REFERENCE

        "RFC 2460 [RFC2460] defines the Internet Protocol version 6; The
        following URL defines the authoritative repository for the
        PROTOCOL NUMBERS Table:

          http://www.iana.org/assignments/protocol-numbers"
::= {
        ether2     0x86DD,
        802-1Q     0x86DD,
        mplsu       41,
        mplsm       41
}

ipip6

ipip6 is IPv6 in IPv4 tunneling πŸŽ€ Its children are picked and encoded the same way as ip6 children, and its address format is the same as the IPv6 address format 🧚 The same DECODING note from above applies here, since ether2.ip.ipip6.udp and ether2.ip6.udp are still different protocolDirIDs. The reference is RFC 2473 [RFC2473], which defines Generic Packet Tunneling in IPv6 Specification πŸ’œ

ipip6 PROTOCOL-IDENTIFIER
PARAMETERS { }
ATTRIBUTES {

   }
DESCRIPTION
        "IPv6 in IPv4 Tunneling"

CHILDREN
        "Children of 'ipip6' are selected and encoded in the same manner
        as children of ip6."
ADDRESS-FORMAT
        "The 'ipip6' address format is the same as the IPv6 address
        format."
DECODING
        "Note: ether2.ip.ipip6.udp is a different protocolDirID than
        ether2.ip6.udp, as identified in the protocolDirTable.  As such,
        two different local protocol index values will be assigned by
        the agent. E.g., (full INDEX values shown):
                ether2.ip.ipip6.udp =
                        16.0.0.0.1.0.0.8.0.0.0.0.41.0.0.0.17.4.0.0.0.0
                ether2.ip6.udp =
                        12.0.0.0.1.0.0.0.41.0.0.0.17.3.0.0.0 "
REFERENCE
        "RFC 2473 [RFC2473] defines Generic Packet Tunneling in IPv6
        Specification."
::= {
        ip 41
}

icmp6

Last but not least, icmp6, which is the Internet Message Control Protocol for IP Version 6 πŸ™ˆ Its reference is RFC 2463 [RFC2463], the Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification 🌸 It sits under ip6 with value 58, and under ipip6 with value 58 too ✨

icmp6 PROTOCOL-IDENTIFIER
PARAMETERS { }
ATTRIBUTES { }
DESCRIPTION
        "Internet Message Control Protocol for IP Version 6"
REFERENCE
        "RFC 2463 [RFC2463] Internet Control Message Protocol (ICMPv6)
        for the Internet Protocol Version 6 (IPv6) Specification "
::= {
        ip6 58,
        ipip6 58
}

Intellectual Property ✨

okay bestie, this part is all about who owns what πŸ’… The IETF is basically saying "we are NOT picking a side on patents or other rights that might cover the tech in this doc" πŸ™ˆ It also doesn't claim it went hunting for any of those rights, so no promises there ✨

If you want the details on how the IETF handles rights in its documents, check out BCP 78 and BCP 79 πŸ’œ

Got a disclosure or a license assurance? Those live on the IETF's online IPR repository at http://www.ietf.org/ipr πŸŽ€ Same vibe if someone tried to get a general license or permission so implementers could use the proprietary stuff. That info can be requested from the IETF too 🫢

And if you spot any copyright, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard, the IETF wants you to tell them! Send it to ietf-ipr@ietf.org πŸ¦‹ That's the move, periodt πŸ”₯

Acknowledgement ✨

Last one! The RFC Editor function is funded right now by the Internet Society 🌈 Shoutout to them, they keep the lights on for the whole RFC system πŸ‘‘

πŸ“¦ where this page comes from