RFC 1243

AppleTalk Management Information Base

πŸ“… published July 1991, from ietf

RFC 1243: AppleTalk Management Information Base πŸ¦‹

okay bestie, this is RFC 1243, called AppleTalk Management Information Base πŸ’– It was written by S. Waldbusser, Editor, from Carnegie Mellon University, and it's dated July 1991. It's a Network Working Group doc from the AppleTalk-IP Working Group of the IETF, and its category is an IAB standards track protocol. The header doesn't list any RFCs it obsoletes or updates, so there's nothing to chase there ✨

Status of This Memo πŸ“œ

okay so this memo defines objects for managing AppleTalk objects with the SNMP protocol 🌸 It's a product of the AppleTalk-IP Working Group of the Internet Engineering Task Force (IETF). It's an IAB standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements πŸ’¬ For the standardization state and status of this protocol, check the current edition of the "IAB Official Protocol Standards". Distribution of this memo is unlimited πŸŽ€

Table of Contents πŸ“–

1. Abstract ..............................................    1
2. The Network Management Framework.......................    2
3. Objects ...............................................    2
3.1 Format of Definitions ................................    3
4. Overview ..............................................    3
4.1 Structure of MIB .....................................    3
4.2 The LocalTalk Link Access Protocol Group .............    3
4.3 The AppleTalk Address Resolution Protocol Group ......    4
4.4 The AppleTalk Port Group .............................    4
4.5 The Datagram Delivery Protocol Group .................    4
4.6 The Routing Table Maintenance Protocol Group .........    4
4.7 The Kinetics Internet Protocol Group .................    4
4.8 The Zone Information Protocol Group ..................    4
4.9 The Name Binding Protocol Group ......................    4
4.10 The AppleTalk Echo Protocol Group ...................    5
4.11 Textual Conventions .................................    5
5. Definitions ...........................................    5
6. Acknowledgements ......................................   27
7. References ............................................   28
8. Security Considerations................................   29
9. Author's Address.......................................   29

1. Abstract ✨

this memo defines a portion of the Management Information Base (MIB) for use with network management protocols in TCP/IP-based internets 🌈 Basically, it's the piece that lets you manage AppleTalk networks πŸ’…

2. The Network Management Framework 🧩

the Internet-standard Network Management Framework has three components, bestie πŸ‘‘

  • RFC 1155 defines the SMI, which is the mechanisms used for describing and naming objects for the purpose of management. RFC 1212 defines a more concise description mechanism, and it's wholly consistent with the SMI.
  • RFC 1156 defines MIB-I, the core set of managed objects for the Internet suite of protocols. RFC 1213 defines MIB-II, which is an evolution of MIB-I based on implementation experience and new operational requirements.
  • RFC 1157 defines the SNMP, the protocol used for network access to managed objects.

the Framework permits new objects to be defined for experimentation and evaluation πŸ§ͺ very flexible, very iconic πŸ¦‹

3. Objects 🎯

managed objects are accessed through a virtual information store called the Management Information Base, or MIB πŸ’œ Objects in the MIB are defined using the subset of Abstract Syntax Notation One (ASN.1) [7] that's defined in the SMI. Each object has a name, a syntax, and an encoding πŸ“

the name is an object identifier, an administratively assigned name that specifies an object type. The object type together with an object instance uniquely identifies one specific instantiation of the object. For human convenience, we often use a textual string, called the OBJECT DESCRIPTOR, to also refer to the object type 🧚

the syntax of an object type defines the abstract data structure for that object type, and the ASN.1 language is used for this. However, the SMI [3] purposely restricts which ASN.1 constructs may be used. These restrictions are made for simplicity 🫢

the encoding of an object type is simply how that object type is represented using its syntax. Tied right in with syntax and encoding is how the object type is represented when it's transmitted on the network πŸ“‘

the SMI specifies the use of the basic encoding rules of ASN.1 [8], subject to the additional requirements imposed by the SNMP πŸ’…

3.1. Format of Definitions πŸ“

Section 5 contains the specification of all object types in this MIB module. The object types are defined using the conventions in the SMI, as amended by the extensions specified in [9,10] ✨

4. Overview 🌸

AppleTalk is a protocol suite with an open peer-to-peer architecture that runs over a variety of transmission media 🍎 AppleTalk is defined in [10]. This suite interoperates with the IP protocol suite through various encapsulation methods. As large AppleTalk networks get built alongside large IP networks, managing AppleTalk networks with SNMP becomes necessary, and this MIB defines the managed objects for doing exactly that πŸ”₯

4.1. Structure of MIB πŸ—‚οΈ

the objects are arranged into the following groups:

                  - LLAP
                  - AARP
                  - ATPort
                  - DDP
                  - RTMP
                  - KIP
                  - ZIP
                  - NBP
                  - ATEcho

these groups are the basic unit of conformance. If the semantics of a group is applicable to an implementation, then it must implement all objects in that group. For example, a managed agent must implement the KIP group if and only if it implements the KIP protocol πŸ™ˆ The groups also give a way to assign object identifiers, and a method for managed agents to know which objects they must implement πŸŽ€

the LocalTalk Link Access Protocol (LLAP) is a medium-speed data-link protocol designed for low cost and plug-and-play operation. The LLAP group manages all interfaces on a managed device that use this protocol πŸ¦‹

4.3. The AppleTalk Address Resolution Protocol Group πŸ—ΊοΈ

the AppleTalk Address Resolution Protocol (AARP) maps between AppleTalk node addresses, which the Datagram Delivery Protocol uses, and the addresses of the underlying data link layer. The AARP table lets you manage the Address Mapping Table on the managed device πŸ’œ

4.4. The AppleTalk Port Group πŸšͺ

an AppleTalk Port is a logical connection to a network over which AppleTalk packets can be transmitted. This group lets you manage the configuration of these AppleTalk ports ⭐

4.5. The Datagram Delivery Protocol Group πŸ“¦

the Datagram Delivery Protocol (DDP) is the network-layer protocol responsible for socket-to-socket delivery of datagrams over the AppleTalk Internet. This group manages the DDP layer on the managed device 🌈

4.6. The Routing Table Maintenance Protocol Group πŸ›£οΈ

the Routing Table Maintenance Protocol (RTMP) is used by AppleTalk routers to create and maintain the routing tables that dictate how datagrams get forwarded across the AppleTalk internet. The RTMP group manages the RTMP protocol as well as the routing tables it generates πŸ‘‘

4.7. The Kinetics Internet Protocol Group 🌐

the Kinetics Internet Protocol (KIP) is a protocol for encapsulating and routing AppleTalk datagrams over an IP internet. The name is historical, so don't overthink it πŸ™ƒ The KIP group manages the KIP routing protocol as well as the routing tables it generates πŸ’–

4.8. The Zone Information Protocol Group πŸ—ΊοΈ

the Zone Information Protocol (ZIP) maintains a mapping between networks and zone names, which makes the name lookup process used by the Name Binding Protocol easier. The ZIP group manages this protocol and the mapping it produces 🧁

4.9. The Name Binding Protocol Group 🏷️

the Name Binding Protocol (NBP) is a transport-level protocol that converts human readable service names into the numeric AppleTalk network addresses needed for communicating across the AppleTalk network. The NBP group manages this protocol and the NBP services that exist on the managed device πŸ’…

4.10. The AppleTalk Echo Protocol Group πŸ“

the AppleTalk Echo Protocol is a transport-level protocol used to test and verify the status of the AppleTalk internet. The AtEcho group manages this protocol 🫧

4.11. Textual Conventions ✍️

a new data type is introduced as a textual convention in this MIB document. It makes the specification easier to read and can make comparison with other specifications easier where appropriate. The introduction of this textual convention has no effect on the syntax or the semantics of any managed objects. It's just an artifact of the explanatory method. Objects defined in terms of this method are always encoded by the rules that define the primitive type, so no changes to the SMI or the SNMP are needed to accommodate it. It's adopted merely for the convenience of readers and writers in pursuit of the elusive goal of clear, concise, and unambiguous MIB documents πŸ₯Ή

the new data type is:

                  DdpAddress ::=          -- 2 octets of net number,
                                          -- 1 octet of node number
                          OCTET STRING (SIZE (3))

5. Definitions 🧾

          RFC1243-MIB DEFINITIONS ::= BEGIN

          IMPORTS
                  Counter, IpAddress
                          FROM RFC1155-SMI
                  DisplayString, mib-2
                      FROM RFC1213-MIB
                  OBJECT-TYPE
                          FROM RFC-1212;

          --  This MIB module uses the extended OBJECT-TYPE macro as
          --  defined in [9]


          --  AppleTalk MIB

                  appletalk    OBJECT IDENTIFIER ::= { mib-2 13 }


                  DdpAddress ::=  -- 2 octets of net number
                                  -- 1 octet of node number
                          OCTET STRING (SIZE (3))
                  -- This data type is used for encoding a DDP protocol
                  -- address.  The format of this address is a serial
                  -- encoding of the two octets of network number in
                  -- network byte order, followed by the 1 octet node
                  -- number.

                  llap     OBJECT IDENTIFIER ::= { appletalk 1 }
                  aarp     OBJECT IDENTIFIER ::= { appletalk 2 }
                  atport   OBJECT IDENTIFIER ::= { appletalk 3 }
                  ddp      OBJECT IDENTIFIER ::= { appletalk 4 }
                  rtmp     OBJECT IDENTIFIER ::= { appletalk 5 }
                  kip      OBJECT IDENTIFIER ::= { appletalk 6 }
                  zip      OBJECT IDENTIFIER ::= { appletalk 7 }
                  nbp      OBJECT IDENTIFIER ::= { appletalk 8 }
                  atecho   OBJECT IDENTIFIER ::= { appletalk 9 }


          -- The LLAP Group

Okay so the LLAP group is wrapping up and the AARP and ATPort tables are next, bestie πŸ¦‹βœ¨

          llapTable OBJECT-TYPE
                  SYNTAX SEQUENCE OF LlapEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "The list of LLAP entries."
                  ::= { llap 1 }
          llapEntry OBJECT-TYPE
                  SYNTAX LlapEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "An LLAP entry containing objects for the
                      LocalTalk Link Access Protocol for a particular
                      LocalTalk interface."
                  INDEX { llapIfIndex }
                  ::= { llapTable 1 }

          LlapEntry ::= SEQUENCE {
                  llapIfIndex             INTEGER,
                  llapInPkts              Counter,
                  llapOutPkts             Counter,
                  llapInNoHandlers        Counter,
                  llapInLengthErrors      Counter,
                  llapInBads              Counter,
                  llapCollisions          Counter,
                  llapDefers              Counter,
                  llapNoDataErrors        Counter,
                  llapRandomCTSErrors     Counter,
                  llapFCSErrors           Counter
          }
          llapIfIndex OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The LLAP interface to which this entry pertains.
                      The interface identified by a particular value of
                      this index is the same interface as identified
                      by the same value of ifIndex."
                  ::= { llapEntry 1 }

          llapInPkts OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of good packets received on this
                      LocalTalk interface."
                  ::= { llapEntry 2 }

          llapOutPkts OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of packets transmitted on this
                      LocalTalk interface."
                  ::= { llapEntry 3 }

          llapInNoHandlers OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of good packets received on this
                      LocalTalk interface for which there was no
                      protocol handler."
                  ::= { llapEntry 4 }

          llapInLengthErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of packets received on this
                      LocalTalk interface whose actual length did not
                      match the length in the header."
                  ::= { llapEntry 5 }

          llapInErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of packets containing errors
                      received on this LocalTalk interface."
                  ::= { llapEntry 6 }

          llapCollisions OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of collisions assumed on this
                      LocalTalk interface due to the lack of a lapCTS
                      reply."
                  ::= { llapEntry 7 }

          llapDefers OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of times this LocalTalk
                      interface deferred to other packets."
                  ::= { llapEntry 8 }

          llapNoDataErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of times this LocalTalk
                      interface received a lapRTS packet and expected
                      a data packet, but did not receive any data
                      packet."
                  ::= { llapEntry 9 }

          llapRandomCTSErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of times this LocalTalk
                      interface received a lapCTS packet that was
                      not solicited by a lapRTS packet."
                  ::= { llapEntry 10 }

          llapFCSErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of times this LocalTalk
                      interface received a packet with an FCS
                      (Frame Check Sequence) error."
                  ::= { llapEntry 11 }


          -- The AARP Group
          aarpTable OBJECT-TYPE
                  SYNTAX SEQUENCE OF AarpEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "The AppleTalk Address Translation Table
                      contains an equivalence of AppleTalk Network
                      Addresses to the link layer physical address."
                  ::= { aarp 1 }

          aarpEntry OBJECT-TYPE
                  SYNTAX AarpEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "Each entry contains one AppleTalk Network
                      Address to physical address equivalence."
                  INDEX { aarpIfIndex, aarpNetAddress }
                  ::= { aarpTable 1 }

          AarpEntry ::= SEQUENCE {
                  aarpIfIndex     INTEGER,
                  aarpPhysAddress OCTET STRING,
                  aarpNetAddress  DdpAddress
          }
          aarpIfIndex OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-only
                  STATUS mandatory
                  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
                      ifIndex."
                  ::= { aarpEntry 1 }

          aarpPhysAddress OBJECT-TYPE
                  SYNTAX OCTET STRING
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The media-dependent physical address"
                  ::= { aarpEntry 2 }

          aarpNetAddress OBJECT-TYPE
                  SYNTAX DdpAddress
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The AppleTalk Network Address corresponding to
                      the media-dependent physical address."
                  ::= { aarpEntry 3 }


          -- The ATPort Group

          atportTable OBJECT-TYPE
                  SYNTAX SEQUENCE OF AtportEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "A list of AppleTalk ports for this entity."
                  ::= { atport 1 }

          atportEntry OBJECT-TYPE
                  SYNTAX AtportEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "The description of one of the AppleTalk
                      ports on this entity."
                  INDEX { atportIndex }
                  ::= { atportTable 1 }

          AtportEntry ::= SEQUENCE {
                  atportIndex               INTEGER,
                  atportDescr               DisplayString,
                  atportType                INTEGER,
                  atportNetStart            OCTET STRING (SIZE(2)),
                  atportNetEnd              OCTET STRING (SIZE(2)),
                  atportNetAddress          DdpAddress,
                  atportStatus              INTEGER,
                  atportNetConfig           INTEGER,
                  atportZoneConfig          INTEGER,
                  atportZone                OCTET STRING,
                  atportIfIndex             INTEGER
          }

          atportIndex OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "A unique value for each AppleTalk port.
                      Its value is between 1 and the total number of
                      AppleTalk ports.  The value for each port must
                      remain constant at least from the
                      re-initialization of the entity's network
                      management system to the next
                      re-initialization."
                  ::= { atportEntry 1 }

          atportDescr OBJECT-TYPE
                  SYNTAX DisplayString
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "A text string containing information about the
                      port.  This string is intended for presentation
                      to a human; it must not contain anything but
                      printable ASCII characters."
                  ::= { atportEntry 2 }

          atportType OBJECT-TYPE
                  SYNTAX INTEGER {
                       other(1),       -- none of the following
                       localtalk(2),
                       ethertalk1(3),
                       ethertalk2(4),
                       tokentalk(5),
                       iptalk(6),
                       serial-ppp(7),
                       serial-nonstandard(8),
                       virtual(9)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The type of port, distinguished by the protocol
                      immediately below DDP in the protocol stack."
                  ::= { atportEntry 3 }

          atportNetStart OBJECT-TYPE
                  SYNTAX OCTET STRING (SIZE(2))
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The first AppleTalk network address in the range
                      configured for this port.  This is a two octet
                      DDP network address in network byte order."
                  ::= { atportEntry 4 }

          atportNetEnd OBJECT-TYPE
                  SYNTAX OCTET STRING (SIZE(2))
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The last AppleTalk network address in the range
                      configured for this port.  This is a two octet
                      DDP network address in network byte order.  If the
                      network to which this AppleTalk port is
                      connected is a Phase 1 network or a non-extended
                      network, the value for atportNetEnd shall be two
                      octets of zero."
                  ::= { atportEntry 5 }

Okay bestie, the port table is giving πŸŽ€ atportNetAddress, status, config, zone, and interface index all live here, and every one has a little numbered slot inside atportEntry πŸ’…

          atportNetAddress OBJECT-TYPE
                  SYNTAX DdpAddress
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The AppleTalk network address configured for this
                      port."
                  ::= { atportEntry 6 }

          atportStatus OBJECT-TYPE
                  SYNTAX INTEGER {
                       operational(1),
                       unconfigured(2),
                       off(3),
                       invalid(4)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The configuration status of this port.

                      Setting this object to the value invalid(4)
                      has the effect of invalidating the corresponding
                      entry in the atportTable.  That is, it
                      effectively disassociates 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 from agents tabular
                      information corresponding to entries not
                      currently in use.  Proper interpretation of such
                      entries requires examination of the relevant
                      atportStatus object."
                          ::= { atportEntry 7 }

          atportNetConfig OBJECT-TYPE
                  SYNTAX INTEGER {
                      configured(1),  -- explicit configuration.
                      garnered(2),    -- assumed from inspection of net.
                      guessed(3),     -- a "random" configuration.
                      unconfigured(4)
                  }
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The configuration status of this port."
                  ::= { atportEntry 8 }

          atportZoneConfig OBJECT-TYPE
                  SYNTAX INTEGER {
                      configured(1),  -- explicit configuration
                      garnered(2),    -- assumed from inspection of net.
                      guessed(3),     -- a "random" configuration.
                      unconfigured(4)
                  }
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The configuration status of the zone information
                      for this port."
                  ::= { atportEntry 9 }

          atportZone OBJECT-TYPE
                  SYNTAX OCTET STRING
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The zone name configured for this AppleTalk
                      port."
                  ::= { atportEntry 10 }

          atportIfIndex OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The physical interface associated with this
                      AppleTalk port.  The interface identified by a
                      particular value of this index is the same
                      interface as identified by the same value of
                      ifIndex."
                  ::= { atportEntry 11 }


          -- The DDP Group

Next up is the DDP group πŸ¦‹ It's basically the scoreboard for datagrams: how many went out, how many came in, and every flavour of drop or error that happened along the way πŸ“Šβœ¨


          ddpOutRequests OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of DDP datagrams which were
                      supplied to DDP by local DDP clients in requests
                      for transmission.  Note that this counter does
                      not include any datagrams counted in
                      ddpForwRequests."
                  ::= { ddp 1 }

          ddpOutShorts OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of short DDP datagrams which
                      were transmitted from this entity."
                  ::= { ddp 2 }

          ddpOutLongs OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of long DDP datagrams which were
                      transmitted from this entity."
                  ::= { ddp 3 }

          ddpInReceives OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of input datagrams received by
                      DDP, including those received in error."
                  ::= { ddp 4 }

          ddpForwRequests OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The number of input datagrams for which this
                      entity was not their final DDP destination, as
                      a result of which an attempt was made to find a
                      route to forward them to that final destination."
                  ::= { ddp 5 }

          ddpInLocalDatagrams OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of input DDP datagrams for
                      which this entity was their final DDP
                      destination."
                  ::= { ddp 6 }

          ddpNoProtocolHandlers OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of DDP datagrams addressed to
                      this entity that were addressed to an upper
                      layer protocol for which no protocol handler
                      existed."

                  ::= { ddp 7 }

          ddpOutNoRoutes OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of DDP datagrams dropped
                      because a route could not be found to their
                      final destination."
                  ::= { ddp 8 }

          ddpTooShortErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of input DDP datagrams dropped
                      because the received data length was less than
                      the data length specified in the DDP header or
                      the received data length was less than the
                      length of the expected DDP header."
                  ::= { ddp 9 }

          ddpTooLongErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of input DDP datagrams dropped
                      because the received data length was greater
                      than the data length specified in the DDP header
                      or because they exceeded the maximum DDP
                      datagram size."
                  ::= { ddp 10 }

          ddpBroadcastErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of input DDP datagrams dropped
                      because this entity was not their final
                      destination and they were addressed to the link
                      level broadcast."
                  ::= { ddp 11 }

          ddpShortDDPErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of input DDP datagrams dropped
                      because this entity was not their final
                      destination and their type was short DDP."
                  ::= { ddp 12 }

          ddpHopCountErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of input DDP datagrams dropped
                      because this entity was not their final
                      destination and their hop count would exceed 15."
                  ::= { ddp 13 }

          ddpChecksumErrors OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The total number of input DDP datagrams dropped
                      because of a checksum error."
                  ::= { ddp 14 }


          -- The RTMP Group

Last stop: the RTMP group πŸ—ΊοΈ This is the routing table, and each entry is basically "here's a range of networks, here's how to reach it" πŸ’– The range ends are a total mood, so pay attention to the Phase 1 and non-extended bit πŸ‘€


          rtmpTable OBJECT-TYPE
                  SYNTAX SEQUENCE OF RtmpEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "A list of Routing Table Maintenance Protocol
                      entries for this entity."
                  ::= { rtmp 1 }

          rtmpEntry OBJECT-TYPE
                  SYNTAX RtmpEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "The route entry to a particular network range."
                  INDEX { rtmpRangeStart }
                  ::= { rtmpTable 1 }

          RtmpEntry ::= SEQUENCE {
                  rtmpRangeStart  OCTET STRING (SIZE(2)),
                  rtmpRangeEnd    OCTET STRING (SIZE(2)),
                  rtmpNextHop     OCTET STRING,
                  rtmpType        INTEGER,
                  rtmpPort        INTEGER,
                  rtmpHops        INTEGER,
                  rtmpState       INTEGER
          }

          rtmpRangeStart OBJECT-TYPE
                  SYNTAX OCTET STRING (SIZE(2))
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The first DDP network address in the network
                      range to which this routing entry pertains.
                      This is a two octet DDP network address in
                      network byte order."
                  ::= { rtmpEntry 1 }

          rtmpRangeEnd OBJECT-TYPE
                  SYNTAX OCTET STRING (SIZE(2))
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The last DDP network address in the network range
                      to which this routing entry pertains.  This is a
                      two octet DDP network address in network byte
                      order.  If the network to which this routing
                      entry pertains is a Phase 1 network or a
                      non-extended network, the value for rtmpRangeEnd
                      shall be two octets of zero."
                  ::= { rtmpEntry 2 }

That's the stretch for this part! ✨🌈

okay so we're still deep in the MIB definitions, and the routing entry objects are next πŸ’…

          rtmpNextHop OBJECT-TYPE
                  SYNTAX OCTET STRING
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The next hop in the route to this entry's
                      destination network.  If the type of this route
                      is Appletalk, this address takes the same form
                      as DdpAddress."
                  ::= { rtmpEntry 3 }

          rtmpType OBJECT-TYPE
                  SYNTAX INTEGER {
                          other(1),
                          appletalk(2),
                          serial-ppp(3),
                          serial-nonstandard(4)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The type of network over which this route
                      points."
                  ::= { rtmpEntry 4 }

          rtmpPort OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The index of the AppleTalk port over which
                      this route points."
                  ::= { rtmpEntry 5 }

          rtmpHops OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The number of hops required to reach the
                      destination network to which this routing
                      entry pertains."
                  ::= { rtmpEntry 6 }

          rtmpState OBJECT-TYPE
                  SYNTAX INTEGER {
                      good(1),
                      suspect(2),
                      goingBad(3),
                      bad(4) -- may be removed from table
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The status of the information contained in this
                      route entry.

                      Setting this object to the value bad(4) has the
                      effect of invalidating the corresponding entry
                      in the rtmpTable.  That is, it  effectively
                      disassociates 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 from agents
                      tabular information corresponding to entries not
                      currently in use.  Proper interpretation of such
                      entries requires examination of the relevant
                      rtmpState object."
                  ::= { rtmpEntry 7 }

ngl the rtmpState one is the "this route is dead, bestie" flag πŸ’€ Setting it to bad(4) invalidates the entry, and whether the agent actually deletes it is up to the implementation. So management stations have to be ready to see old entries that aren't in use anymore πŸ™ˆ and check the rtmpState object to know what they're looking at ✨

          -- The KIP Group

          kipTable OBJECT-TYPE
                  SYNTAX SEQUENCE OF KipEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "The table of routing information for KIP
                      networks."
                  ::= { kip 1 }

          kipEntry OBJECT-TYPE
                  SYNTAX KipEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "An entry in the routing table for KIP networks."
                  INDEX { kipNetStart }
                  ::= { kipTable 1 }

          KipEntry ::= SEQUENCE {
                  kipNetStart     OCTET STRING (SIZE(2)),
                  kipNetEnd       OCTET STRING (SIZE(2)),
                  kipNextHop      IpAddress,
                  kipHopCount     INTEGER,
                  kipBCastAddr    IpAddress,
                  kipCore         INTEGER,
                  kipType         INTEGER,
                  kipState        INTEGER,
                  kipShare        INTEGER
          }

          kipNetStart OBJECT-TYPE
                  SYNTAX OCTET STRING (SIZE(2))
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The first AppleTalk network address in the
                      range for this routing entry.  This address is a
                      two octet DDP network address in network byte
                      order."
                  ::= { kipEntry 1 }

          kipNetEnd OBJECT-TYPE
                  SYNTAX OCTET STRING (SIZE(2))
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The last AppleTalk network address in the range
                      for this routing entry.  This address is a two
                      octet DDP network address in network byte order.
                      If the network to which this AppleTalk port is
                      connected is a Phase 1 network or a non-extended
                      network, the value for kipNetEnd shall be two
                      octets of zero."
                  ::= { kipEntry 2 }

          kipNextHop OBJECT-TYPE
                  SYNTAX IpAddress
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The IP address of the next hop in the route to
                      this entry's destination network."
                  ::= { kipEntry 3 }

          kipHopCount OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The number of hops required to reach the
                      destination network to which this entry pertains."
                  ::= { kipEntry 4 }

          kipBCastAddr OBJECT-TYPE
                  SYNTAX IpAddress
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The form of the IP address used to broadcast on
                      this network."
                  ::= { kipEntry 5 }

          kipCore OBJECT-TYPE
                  SYNTAX INTEGER {
                       core(1),
                       notcore(2)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The status of this network as a Kip Core
                      network."
                  ::= { kipEntry 6 }

          kipType OBJECT-TYPE
                  SYNTAX INTEGER {
                       kipRouter(1),
                       net(2),
                       host(3),
                       other(4)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The type of the entity that this route points
                      to."
                  ::= { kipEntry 7 }

          kipState OBJECT-TYPE
                  SYNTAX INTEGER {
                       configured(1),
                       learned(2),
                       invalid(3)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The state of this network entry.

                      Setting this object to the value invalid(3) has
                      the effect of invalidating the corresponding
                      entry in the kipTable.  That is, it effectively
                      disassociates 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 from agents tabular
                      information corresponding to entries not
                      currently in use.  Proper interpretation of such
                      entries requires examination of the relevant
                      kipState object."
                  ::= { kipEntry 8 }

          kipShare OBJECT-TYPE
                  SYNTAX INTEGER {
                       shared(1),
                       private(2)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "If the information in this entry is propagated
                      to other routers as part of a routing protocol,
                      the value of this variable is equal to
                      shared(1).  Otherwise its value is private(2)."
                  ::= { kipEntry 9 }

The KIP group is basically the routing table for KIP networks πŸ¦‹ Each entry is keyed by kipNetStart, and kipNetEnd tells you where the range stops. The kipState flip to invalid(3) works the same way as the rtmpState thing above, so the same "agent might delete it, might not" vibe applies πŸ’œ And kipShare is the "do I tell my router friends about this?" flag: shared(1) if it's propagated in a routing protocol, private(2) if not 🀫

          -- The ZIP Group

          zipTable OBJECT-TYPE
                  SYNTAX SEQUENCE OF ZipEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "The table of zone information for reachable
                      AppleTalk networks."
                  ::= { zip 1 }

          zipEntry OBJECT-TYPE
                  SYNTAX ZipEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "An entry of zone information for a particular
                      zone and network combination."
                  INDEX { zipZoneNetStart, zipZoneIndex }
                  ::= { zipTable 1 }

          ZipEntry ::= SEQUENCE {
                  zipZoneName     OCTET STRING,
                  zipZoneIndex    INTEGER,
                  zipZoneNetStart OCTET STRING (SIZE(2)),
                  zipZoneNetEnd   OCTET STRING (SIZE(2)),
                  zipZoneState    INTEGER
          }
          zipZoneName OBJECT-TYPE
                  SYNTAX OCTET STRING
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The ASCII zone name of this entry."
                  ::= { zipEntry 1 }

          zipZoneIndex OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "An integer that is unique to the zipZoneName
                      that is present in this entry.  For any given
                      zone name, every zipEntry that has an equal zone
                      name will have the same zipZoneIndex."
                  ::= { zipEntry 2 }

          zipZoneNetStart OBJECT-TYPE
                  SYNTAX OCTET STRING (SIZE(2))
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The network that starts the range for this
                      entry.  This address is a two octet DDP network
                      address in network byte order."
                  ::= { zipEntry 3 }

          zipZoneNetEnd OBJECT-TYPE
                  SYNTAX OCTET STRING (SIZE(2))
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The network that ends the range for this
                      entry.  This address is a two octet DDP network
                      address in network byte order.  If the network
                      to which this zip entry pertains is a Phase 1
                      network or a non-extended network, the value for
                      zipZoneNetEnd shall be two bytes of zero."
                  ::= { zipEntry 4 }

          zipZoneState OBJECT-TYPE
                  SYNTAX INTEGER {
                          valid(1),
                          invalid(2)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The state of this zip entry.
                      Setting this object to the value invalid(2) has
                      the effect of invalidating the corresponding
                      entry in the zipTable.  That is, it effectively
                      disassociates 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 from agents tabular
                      information corresponding to entries not
                      currently in use.  Proper interpretation of
                      such entries requires examination of the
                      relevant zipZoneState object."
                  ::= { zipEntry 5 }


          -- The NBP Group

          nbpTable OBJECT-TYPE
                  SYNTAX SEQUENCE OF NbpEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "The table of NBP services registered on this
                      entity."
                  ::= { nbp 1 }

          nbpEntry OBJECT-TYPE
                  SYNTAX NbpEntry
                  ACCESS not-accessible
                  STATUS mandatory
                  DESCRIPTION
                      "The description of an NBP service registered on
                      this entity."
                  INDEX { nbpIndex }
                  ::= { nbpTable  1 }

           NbpEntry ::= SEQUENCE {
                  nbpIndex        INTEGER,
                  nbpObject       OCTET STRING,
                  nbpType         OCTET STRING,
                  nbpZone         OCTET STRING,
                  nbpState        INTEGER
           }

          nbpIndex OBJECT-TYPE
                  SYNTAX INTEGER
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The index of this NBP entry.  This value ranges
                      from 1 to the number of NBP entries currently
                      registered on this entity."
                  ::= { nbpEntry 1 }

          nbpObject OBJECT-TYPE
                  SYNTAX OCTET STRING
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The name of the service described by this
                      entity."
                  ::= { nbpEntry 2 }

          nbpType OBJECT-TYPE
                  SYNTAX OCTET STRING
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The type of the service described by this
                      entity."
                  ::= { nbpEntry 3 }

          nbpZone OBJECT-TYPE
                  SYNTAX OCTET STRING
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The zone the service described by this entity is
                      registered in."
                  ::= { nbpEntry 4 }

          nbpState OBJECT-TYPE
                  SYNTAX INTEGER {
                          valid(1),
                          invalid(2)
                  }
                  ACCESS read-write
                  STATUS mandatory
                  DESCRIPTION
                      "The state of this NBP entry.

                      Setting this object to the value invalid(2) has
                      the effect of invalidating the corresponding
                      entry in the nbpTable.  That is, it effectively
                      disassociates 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 from agents tabular
                      information corresponding to entries not
                      currently in use.  Proper interpretation of
                      such entries requires examination of the
                      relevant nbpState object."
                  ::= { nbpEntry 5 }


          -- The ATEcho Group

          atechoRequests OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The number of AppleTalk echo requests received."
                  ::= { atecho 1 }

          atechoReplies OBJECT-TYPE
                  SYNTAX Counter
                  ACCESS read-only
                  STATUS mandatory
                  DESCRIPTION
                      "The number of AppleTalk echo replies sent."
                  ::= { atecho 2 }
          END

6. Acknowledgements ✨

Okay bestie, the people who made this doc happen 🫢 It was produced by the IETF AppleTalk-IP Working Group:

               Terry Braun, Novell
               Gregory Bruell, Shiva
               Philip Budne, Shiva
               Rob Chandhok, CMU
               Cyrus Chow, NASA
               Bruce Crabill, UMD
               Peter DiCamillo, Brown
               Robert Elz, U. of Melbourne
               Tom Evans, Webster
               Karen Frisa, CMU
               Russ Hobby, UC Davis
               Tom Holodnik, CMU
               Peter Honeyman, U. of Michigan
               Michael Horowitz, Shiva
               Van Jacobson, Lawrence Berkeley Labs
               Doug Kerr, Novell
               Holly Knight, Apple
               Philip Koch, Dartmouth
               Louise Laier, Apple
               Nik Langrind, Shiva
               Joshua Littlefield, Cayman
               Kanchei Loa, Motorola
               John Mason, Apple
               Leo McLaughlin, TWG
               Milo Medin, NASA
               Greg Minshall, Novell
               Bob Morgan, Stanford
               Ed Moy, Berkeley
               Matthew Nocifore, Drexel
               Zbigniew Opalka, BBN
               Alan Oppenheimer, Apple
               Brad Parker, Cayman
               Greg Satz, Cisco
               John Seligson, Apple
               Frank Slaughter, Shiva
               Zaw-Sing Su, SRZ
               John Veizades, Apple
               Peter Vinsel, Apple
               Jonathan Wenocur, Shiva
               Steven Willis, Wellfleet

In addition, the contribution of the following individuals is also acknowledged: πŸ’œ

               Karen Frisa, Carnegie Mellon University
               Greg Minshall, Novell, Inc.
               Marshall T. Rose, PSI

7. References πŸ“š

Here's the reading list, all the citations you need to go deeper 🧚

  • [1] Cerf, V., "IAB Recommendations for the Development of Internet Network Management Standards", RFC 1052, NRI, April 1988.
  • [2] Cerf, V., "Report of the Second Ad Hoc Network Management Review Group", RFC 1109, NRI, August 1989.
  • [3] Rose M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", RFC 1155, Performance Systems International, Hughes LAN Systems, May 1990.
  • [4] McCloghrie K., and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1156, Hughes LAN Systems, Performance Systems International, May 1990.
  • [5] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network Management Protocol", RFC 1157, SNMP Research, Performance Systems International, Performance Systems International, MIT Laboratory for Computer Science, May 1990.
  • [6] McCloghrie K., and M. Rose, Editors, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1213, Performance Systems International, March 1991.
  • [7] Information processing systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1), International Organization for Standardization, International Standard 8824, December 1987.
  • [8] Information processing systems - Open Systems Interconnection - Specification of Basic Encoding Rules for Abstract Notation One (ASN.1), International Organization for Standardization, International Standard 8825, December 1987.
  • [9] Rose, M., and K. McCloghrie, Editors, "Concise MIB Definitions", RFC 1212, Performance Systems International, Hughes LAN Systems, March 1991.
  • [10] Sidhu, G., Andrews, R., and A. Oppenheimer, "Inside AppleTalk", Second Edition, Addison Wesley, 1990.

8. Security Considerations πŸ”’

Okay so, this is the moment of truth 😭 Security issues are not discussed in this memo. Nothing in here covers them, so don't go looking for a security section and assume it's safe, bestie πŸ’€


9. Author's Address πŸ¦‹

Here's where to reach the author, iykyk πŸ’Œ

   Steven Waldbusser
   Carnegie Mellon University
   4910 Forbes Ave.
   Pittsburgh, PA 15213

   EMail:  waldbusser@andrew.cmu.edu

And that's a wrap on RFC 1243, periodt! πŸŒˆπŸ’…πŸ‘‘

πŸ“¦ where this page comes from