RFC 2512

Accounting Information for ATM Networks

πŸ“… published February 1999, from ietf

Accounting Information for ATM Networks ✨

bestie, okay this one is a whole vibe 🧚 It's RFC 2512, and the title says it all: Accounting Information for ATM Networks πŸ’–

Who wrote it: Keith McCloghrie (Cisco Systems, Inc.), J. Heinanen (Telia Finland, Inc.), W. Greene (MCI Telecommunications Corp.), and A. Prasad (Cisco Systems, Inc.) πŸ‘‘

Category: Standards Track πŸŽ€

Date: February 1999 🌸

Obsoletes / Updates: The header doesn't list anything it obsoletes or updates πŸ¦‹


Status of This Memo πŸ’…

This document is a proper Internet standards track protocol for the Internet community, and it's asking everyone for discussion and suggestions for improvements. If you want the latest standardization state and status of this protocol, check the current edition of "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited 🫢

Copyright (C) The Internet Society (1999). All Rights Reserved. ⭐

Table of Contents πŸ“–

   1 Introduction ................................................... 1
   2 The SNMP Network Management Framework .......................... 2
   3 Overview ....................................................... 3
   4 Definitions .................................................... 3
   5 Acknowledgements ...............................................12
   6 References .....................................................12
   7 Security Considerations ........................................13
   8 IANA Considerations ............................................13
   9 Authors' Addresses .............................................14
   10 Full Copyright Statement ......................................15

1. Introduction ✨

okay so this memo defines a chunk of the Management Information Base (MIB) for network management protocols in the Internet community πŸ¦‹ A separate memo [16] handles managed objects in a way that doesn't depend on the type of network. Those objects control how accounting info gets selected, collected, and stored into files so it can be fetched later over a file transfer protocol πŸ“ This memo is the ATM-specific part: a set of accounting info that can be collected for connections on ATM networks πŸ’œ

2. The SNMP Network Management Framework 🧚

so the SNMP Management Framework currently has five major components πŸ‘‘

  • An overall architecture, described in RFC 2271 [1].
  • Mechanisms for describing and naming objects and events for the purpose of management. The first version of this Structure of Management Information (SMI) is SMIv1, described in STD 16, RFC 1155 [2], STD 16, RFC 1212 [3] and RFC 1215 [4]. The second version, SMIv2, is described in RFC 1902 [5], RFC 1903 [6] and RFC 1904 [7].
  • Message protocols for transferring management information. The first version of the SNMP message protocol is SNMPv1, described in STD 15, RFC 1157 [8]. A second version, SNMPv2c, which is not an Internet standards track protocol, is described in RFC 1901 [9] and RFC 1906 [10]. The third version of the message protocol is SNMPv3, described in RFC 1906 [10], RFC 2272 [11] and RFC 2274 [12].
  • Protocol operations for accessing management information. The first set of protocol operations and associated PDU formats is described in STD 15, RFC 1157 [8]. A second set is described in RFC 1905 [13].
  • A set of fundamental applications described in RFC 2273 [14], plus the view-based access control mechanism described in RFC 2275 [15].

Managed objects are accessed through a virtual information store called the Management Information Base, or MIB πŸ“ Objects in the MIB are defined using the mechanisms in the SMI πŸ’…

This memo specifies a MIB module that is compliant to SMIv2 πŸ’– A SMIv1-conforming MIB can be produced through the right translations. The translated MIB must be semantically equivalent, except where objects or events get left out because no translation is possible (for example, using Counter64). Some machine-readable info in SMIv2 gets turned into textual descriptions in SMIv1 during translation. That loss of machine-readable info is not considered to change the semantics of the MIB, so no stress 🫢

3. Overview 🌸

so in [16], the accounting data items to collect are specified as a set of objects πŸŽ€ Which objects end up in that set is up to an administrator, who picks one or more (subtree, list) tuples. The set of objects to collect is the union of the subsets each tuple specifies:

    'subtree' specifies a OBJECT IDENTIFIER value such that every
        object in the subset is named by the subtree's value appended
        with a single additional sub-identifier.

    'list' specifies an OCTET STRING value, such that if the N-th bit
        of the string's value is set then the the subset contains the
        object named by appending N as a single additional sub-
        identifier to the subtree.

This memo specifies one such subtree, containing a set of objects that define the accounting info applicable to ATM connections πŸ¦‹

Heads up: every object defined here has a MAX-ACCESS clause of not-accessible. That's on purpose! These objects aren't meant to be read or written by SNMP. Instead, they're the syntax and semantics for the set of info that can be represented inside a single (subtree, list) tuple πŸ™ˆ

4. Definitions πŸ’œ

okay the actual MIB module starts here, so this part is the real deal 🧚 Each object is interpreted with respect to creating or storing an accounting record for a particular connection on a particular interface πŸ’…

ATM-ACCOUNTING-INFORMATION-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY,
    mib-2, Integer32, Counter64                   FROM SNMPv2-SMI
    DisplayString, DateAndTime                    FROM SNMPv2-TC
    AtmAddr                                       FROM ATM-TC-MIB;


atmAccountingInformationMIB MODULE-IDENTITY
    LAST-UPDATED "9611052000Z"
    ORGANIZATION "IETF AToM MIB Working Group"
    CONTACT-INFO "
                  Keith McCloghrie
                  Cisco Systems, Inc.
                  170 West Tasman Drive,
                  San Jose CA 95134-1706.
                  Phone: +1 408 526 5260
                  Email: kzm@cisco.com"

    DESCRIPTION
            "The MIB module for identifying items of accounting
            information which are applicable to ATM connections."
    ::= { mib-2 59 }


atmAcctngMIBObjects OBJECT IDENTIFIER ::=
                                        { atmAccountingInformationMIB 1 }


-- Definitions of objects for use in specifying ATM accounting
-- data to be collected

atmAcctngDataObjects OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
            "This identifier defines a subtree under which various
            objects are defined such that a set of objects to be
            collected as ATM accounting data can be specified as a
            (subtree, list) tuple using this identifier as the subtree."
    ::= { atmAcctngMIBObjects 1 }

-- Objects defined under the atmAcctngDataObjects subtree
--
-- In each case the semantics of the object are interpreted with
-- respect to the creation/storage of an accounting record for a
-- particular connection on a particular interface.

atmAcctngConnectionType OBJECT-TYPE
    SYNTAX      INTEGER { pvc(1),
                          pvp(2),
                          svcIncoming(3),
                          svcOutgoing(4),
                          svpIncoming(5),
                          svpOutgoing(6),
                          spvcInitiator(7),
                          spvcTarget(8),
                          spvpInitiator(9),
                          spvpTarget(10) }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The type of connection."
    ::= { atmAcctngDataObjects 1 }

atmAcctngCastType OBJECT-TYPE
    SYNTAX      INTEGER { p2p(1), p2mp(2) }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An indication of whether the connection is point-to-point
            or point-to-multipoint."
    ::= { atmAcctngDataObjects 2 }

atmAcctngIfName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A textual name for the interface on which the data for the
            connection was collected.  If the local SNMP agent supports
            the object ifName, the value of this object must be
            identical to that of ifName in the conceptual row of the
            ifTable corresponding to this interface."
    ::= { atmAcctngDataObjects 3 }

okay that's the first chunk of the RFC covered πŸ’– We've got the title block, status, copyright, the intro and SNMP framework, the overview of the (subtree, list) tuples, and the start of the MIB definitions up through atmAcctngIfName 🫢 Part 2 picks up the next objects, so stay tuned 🧚✨

atmAcctngReleaseCause is up next, and it's a fun one πŸ¦‹ It only gets a real value when the connection was collected because an SVC was released. Otherwise it's just zero πŸ’…

atmAcctngReleaseCause OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "If the connection data was collected because of the release
            of an SVC, then this is the cause code in the Release
            message for the connection; otherwise, this object has the
            value zero."
    ::= { atmAcctngDataObjects 13 }

Next up is the service category, which tells you what kind of connection it was 🌸 There are seven options, including unknown(7) for when nobody can tell 🫢

atmAcctngServiceCategory OBJECT-TYPE
    SYNTAX      INTEGER { other(1), cbr(2), vbrRt(3), vbrNrt(4),
                          abr(5), ubr(6), unknown(7) }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's service category."
    ::= { atmAcctngDataObjects 14 }

Now the cell counters, which are giving accounting energy 🧚 The transmitted and received counts both include OAM cells, and there's a separate CLP=0 counter for each direction πŸ’œ

atmAcctngTransmittedCells OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The number of cells, including OAM cells, transmitted by
            this switch on this connection."
    ::= { atmAcctngDataObjects 15 }

atmAcctngTransmittedClp0Cells OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The number of cells with CLP=0, including OAM cells,
            transmitted by this switch on this connection."
    ::= { atmAcctngDataObjects 16 }

atmAcctngReceivedCells OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The number of cells, including OAM cells, received by this
            switch on this connection."
    ::= { atmAcctngDataObjects 17 }

atmAcctngReceivedClp0Cells OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The number of cells with CLP=0, including OAM cells,
            received by this switch on this connection."
    ::= { atmAcctngDataObjects 18 }

Now we get to the traffic descriptors πŸŽ€ There's a type for each direction, plus five parameters per direction, and what each parameter means depends on the type. The type is an OBJECT IDENTIFIER that points back to the ATM-MIB, so you'll want to check that for the details πŸ‘‘

atmAcctngTransmitTrafficDescriptorType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The traffic descriptor type (as defined in RFC 1695 and its
            successors) in the direction in which the switch transmits
            cells on the connection."
    REFERENCE
            "See atmTrafficDescriptorTypes in ATM-MIB.my in RFC 1695 and
            its successors."
    ::= { atmAcctngDataObjects 19 }

atmAcctngTransmitTrafficDescriptorParam1 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The first traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    ::= { atmAcctngDataObjects 20 }

atmAcctngTransmitTrafficDescriptorParam2 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The second traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."

    ::= { atmAcctngDataObjects 21 }

atmAcctngTransmitTrafficDescriptorParam3 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The third traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    ::= { atmAcctngDataObjects 22 }

atmAcctngTransmitTrafficDescriptorParam4 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The fourth traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    ::= { atmAcctngDataObjects 23 }

atmAcctngTransmitTrafficDescriptorParam5 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The fifth traffic descriptor parameter in the direction in
            which this switch transmits cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngTransmitTrafficDescriptorType."
    ::= { atmAcctngDataObjects 24 }

Okay, the receive side is basically the transmit side flipped around πŸ”„ Same type, same five params, just for cells coming in to the switch instead of going out 🌈

atmAcctngReceiveTrafficDescriptorType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The traffic descriptor type (as defined in RFC 1695 and its
            successors) in the direction in which this switch receives
            cells on this connection."
    REFERENCE
            "See atmTrafficDescriptorTypes in ATM-MIB.my in RFC 1695 and
            its successors."
    ::= { atmAcctngDataObjects 25 }

atmAcctngReceiveTrafficDescriptorParam1 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The first traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 26 }

atmAcctngReceiveTrafficDescriptorParam2 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The second traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 27 }

atmAcctngReceiveTrafficDescriptorParam3 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The third traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 28 }

atmAcctngReceiveTrafficDescriptorParam4 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The fourth traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 29 }

atmAcctngReceiveTrafficDescriptorParam5 OBJECT-TYPE
    SYNTAX      INTEGER (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The fifth traffic descriptor parameter in the direction in
            which this switch receives cells on this connection.
            Interpretation of this parameter is dependent on the value
            of atmAcctngReceiveTrafficDescriptorType."
    ::= { atmAcctngDataObjects 30 }

Sub-addresses are next πŸ’– If a connection doesn't have one, or its value is unknown, the object is just the zero-length string, which is a very chill way of saying "nothing here" πŸ™ˆ

atmAcctngCallingPartySubAddress OBJECT-TYPE
    SYNTAX      AtmAddr
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's calling party sub-address.  If the
            connection has no calling party sub-address, or it's value
            is unknown, then the value of this object is the zero-length
            string."
    ::= { atmAcctngDataObjects 31 }

atmAcctngCalledPartySubAddress OBJECT-TYPE
    SYNTAX      AtmAddr
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The connection's called party sub-address.  If the
            connection has no called party sub-address, or it's value is
            unknown, then the value of this object is the zero-length
            string."
    ::= { atmAcctngDataObjects 32 }

Last object, and honestly this one is iconic πŸ”₯ It's a CRC-16 checksum over the whole accounting record. The trick is that you start with the checksum set to all zeros, remember where those zeros live, calculate the checksum over the full record, then overwrite those zeros with the real value. The CRC-16 is defined by ISO 3309 (HDLC) and/or ITU X.25 🧠

atmAcctngRecordCrc16 OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(2))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The value of the CRC-16 checksum (as defined by ISO 3309
            (HDLC) and/or ITU X.25) calculated over the accounting
            record containing this object.

            While the mechanism for calculating/encoding the checksum
            value is specific to the method of encoding the accounting
            record, an accounting record containing this object is
            typically generated by initializing the value of this object
            to the all-zeros string ('0000'H), with the location of
            these zeros being saved.  After generating the record, the
            checksum is calculated over the whole connection record and
            then the all-zeros value is overwritten (at the saved
            location) by the calculated value of the checksum."
    ::= { atmAcctngDataObjects 33 }

END

5. Acknowledgements ✨

Big thank-you to the IETF's AToM MIB Working Group for their comments 🫢 Those folks helped make this whole thing better, and we love a team that shows up for each other 🌸

6. References πŸ“š

  • [1] Harrington, D., Presuhn, R. and B. Wijnen, "An Architecture for Describing SNMP Management Frameworks", RFC 2271, January 1998.
  • [2] Rose, M. and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based Internets", STD 16, RFC 1155, May 1990.
  • [3] Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16, RFC 1212, March 1991.
  • [4] Rose, M., "A Convention for Defining Traps for use with the SNMP", RFC 1215, March 1991.
  • [5] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Structure of Management Information for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1902, January 1996.
  • [6] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Textual Conventions for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1903, January 1996.
  • [7] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Conformance Statements for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1904, January 1996.
  • [8] Case, J., Fedor, M., Schoffstall, M. and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, May 1990.
  • [9] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901, January 1996.
  • [10] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1906, January 1996.
  • [11] Case, J., Harrington D., Presuhn R. and B. Wijnen, "Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)", RFC 2272, January 1998.
  • [12] Blumenthal, U. and B. Wijnen, "User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 2274, January 1998.
  • [13] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1905, January 1996.
  • [14] Levi, D., Meyer, P. and B. Stewart, "SNMPv3 Applications", RFC 2273, January 1998.
  • [15] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)", RFC 2275, January 1998.
  • [16] McCloghrie, K., Heinanen, J., Greene, W. and A. Prasad, "Managed Objects for Controlling the Collection and Storage of Accounting Information for Connection-Oriented Networks", RFC 2513, February 1999.
  • [17] Noto, M., Spiegel, E. and K. Tesink, "Definitions of Textual Conventions and OBJECT-IDENTITIES for ATM Management", RFC 2514, February 1999.

7. Security Considerations πŸ”

okay this one is serious bestie 😭 this MIB module only defines data items that could be used as accounting information. each one can only be reached through a collected accounting file, so no sneaking in from the side πŸ™ˆ once that data has been collected, it should be protected against modification or unauthorized deletion. like, guard it like your diary πŸ“”πŸ”₯

8. IANA Considerations πŸ¦‹

before this memo gets published as an RFC, IANA is requested to make a suitable OBJECT IDENTIFIER assignment. so that's the to-do list for the registry folks πŸ’…

9. Authors' Addresses πŸ’Œ

The people who wrote this doc, with their contact details:

Keith McCloghrie
Cisco Systems, Inc.
170 West Tasman Drive,
San Jose CA 95134

Phone: +1 408 526 5260
EMail: kzm@cisco.com
Juha Heinanen
Telia Finland, Inc.
Myyrmaentie 2
01600 VANTAA
Finland

Phone +358 303 944 808
EMail: jh@telia.fi
Wedge Greene
MCI Telecommunications Corporation
901 International Parkway
Richardson, Texas 75081

Phone: 214-498-1232 or 972-729-1232
EMail: wedge.greene@mci.com
Anil Prasad
Cisco Systems, Inc.
170 West Tasman Drive,
San Jose CA 95134

Phone: +1 408 525-7209
EMail: aprasad@cisco.com
Copyright (C) The Internet Society (1999).  All Rights Reserved.

bestie, the legal bit, but make it cute πŸŽ€ you can copy, share, and translate this document, and you can make derivative works that comment on it, explain it, or help people implement it, as long as the copyright notice and this paragraph stay on every copy and derivative work. this document itself may not be modified in any way, like removing the copyright notice or the references to the Internet Society or other Internet organizations. the one exception is when you're developing Internet standards, where the Internet Standards process copyright procedures must be followed. translating into languages other than English is also allowed. these permissions are perpetual and the Internet Society (or its successors or assigns) won't revoke them πŸ’œ

the document and the information in it are provided on an "AS IS" basis, and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. πŸ’€
πŸ“¦ where this page comes from