This appendix shows you how to decode the ATM Accounting files you log on your LS1010 or 8500MSR ATM switches. As discussed in the ATM chapter, an LS1010 or 8500MSR ATM switch can be configured to collect data of many different traffic parameters on the virtual circuits the switch is processing. This data can be used to measure the use of each virtual circuit, so it is a useful billing mechanism. The data is collecting in files that reside on the switch. After you retrieve the file from the switch, you must decode it. This appendix discusses the details of decoding these files.
You configure your ATM switches to log values on one or more of the following variables:
atmAcctngConnectionType atmAcctngCastType atmAcctngIfName atmAcctngIfAlias atmAcctngVpi atmAcctngVci atmAcctngCallingParty atmAcctngCalledParty atmAcctngCallReference atmAcctngStartTime atmAcctngCollectionTime atmAcctngCollectMode atmAcctngReleaseCause atmAcctngServiceCategory atmAcctngTransmittedCells atmAcctngTransmittedClp0Cells atmAcctngReceivedCells atmAcctngReceivedClp0Cells atmAcctngTransmitTrafficDescriptorType atmAcctngTransmitTrafficDescriptorParam1 atmAcctngTransmitTrafficDescriptorParam2 atmAcctngTransmitTrafficDescriptorParam3 atmAcctngTransmitTrafficDescriptorParam4 atmAcctngTransmitTrafficDescriptorParam5 atmAcctngReceiveTrafficDescriptorType atmAcctngReceiveTrafficDescriptorParam1 atmAcctngReceiveTrafficDescriptorParam2 atmAcctngReceiveTrafficDescriptorParam3 atmAcctngReceiveTrafficDescriptorParam4 atmAcctngReceiveTrafficDescriptorParam5 atmAcctngCallingPartySubAddress atmAcctngCalledPartySubAddress atmAcctngRecordCrc16 atmAcctngTransmittedPeakCells atmAcctngReceivedPeakCells
Please refer to the ATM-ACCOUNTING-INFORMATION-MIB for details on each of these MIB objects.
The ATM accounting file is a binary file that must be decoded into human readable data. The binary data is in ASN.1 format. At the beginning of the file is a header consisting of the following:
The system name (sysName)
A description of the collection (as set in the switch's configuration)
The start time of the collection
A list of the objects for which data was collected
The rest of the file is a series of data records that contain the values of the objects in the list.
RFC 2513 formally defines the format of the ATM account file as follows:
File ::= [1] IMPLICIT SEQUENCE { -- header information sysName -- name of the switch DisplayString, description -- textual description of the collection DisplayString, startTime -- start time of the collection DateAndTime, SEQUENCE OF { -- sequence of (subtree, list) tuples SEQUENCE { subtree OBJECT IDENTIFIER, list OCTET STRING } } -- sequence of connection records SEQUENCE OF { -- each record containing a sequence SEQUENCE OF { -- per identified tuple SEQUENCE OF { -- each per-tuple sequence containing value -- a sequence of object values ObjectSyntax } } } }
There is a sample C program to decode the binary file into hex located on Cisco's ftp-eng server:
The C program acct_decode4 was used to decode a sample binary ATM accounting file, and Example B-1 shows the hex output from that program. Then, you use the definitions in the ATM-ACCOUNTING-INFORMATION-MIB, ATM-MIB and the ISO signaling specification Q.2931 to decode the output shown in Example B-1 into legible data, as shown in Example B-2.
% acct_decode acctng_file1 Read 4 bytes from file acctng_file1 Offset Tag-Len Data 00000000 a1 80 SEQUENCE IMPLICIT { --- Start of Accounting Data File ---- 00000002 04 0b 73 77 69 74 63 68 2d 31 32 00000015 04 13 41 63 63 6f 75 6e 74 69 6e 67 00000036 04 08 07 cc 07 14 10 05 00 00 00000046 30 82 SEQUENCE OF { SelectionEntry 00000048 30 82 SEQUENCE {Read Selection Entry of 18 bytes 00000052 06 16 subtree 2b 06 01 04 01 09 0a 12 01 01 00000063 04 16 list {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,} 00000069 30 80 SEQUENCE OF { Start of Records 00000073 30 82 SEQUENCE OF { ------Record #0 ------------ 00000079 30 82 SEQUENCE { Read Record tuple of 146 bytes 00000084 02 01 INTEGER 3 00000087 02 01 INTEGER 1 00000089 04 01 STRING 41 54 30 2f 30 2f 31 00000091 04 01 STRING 00000094 02 01 INTEGER 0 00000097 02 01 INTEGER 78 00000099 04 01 STRING 00000101 04 01 STRING 47 00 91 81 00 00 00 00 60 83 c4 2c 01 00 60 70 fa 38 23 00 00000107 02 01 INTEGER 8389197 00000109 04 01 STRING 07 cc 07 14 10 2e 04 01 00000111 04 01 STRING 07 cc 07 14 10 2e 04 01 00000114 02 01 INTEGER 1 00000117 02 01 INTEGER 16 00000120 02 01 INTEGER 6 00000123 06 01 COUNTER64 0 0 00000126 06 01 COUNTER64 0 0 00000128 06 01 OBJ ID 2b 06 01 02 01 25 01 01 02 00000134 02 01 INTEGER 16777215 00000137 02 01 INTEGER -1 00000140 02 01 INTEGER -1 00000143 02 01 INTEGER 0 00000146 02 01 INTEGER 0 00000148 06 01 OBJ ID 2b 06 01 02 01 25 01 01 02 00000154 02 01 INTEGER 16777215 00000157 02 01 INTEGER -1 00000160 02 01 INTEGER -1 00000163 02 01 INTEGER 0 00000166 02 01 INTEGER 0 00000168 30 82 SEQUENCE OF { ------Record #1 ------------ . . . |
The records then repeat, each record being a subsequent sample of the list of objects from the ATM-ACCOUNTING-MIB. A plain-English decode of the hex decode from Example B-1 is shown in Example B-2:
SysName = switch-12 Description = Accounting Start time = 1996 July 20 16:05:00 Sub tree = 1.3.6.1.4.1.9.10.18.1.1 (atmAcctngDataObjects) List: 1 atmAcctngConnectionType 2 atmAcctngCastType 3 atmAcctngIfName 4 atmAcctngIfAlias 5 atmAcctngVpi 6 atmAcctngVci 7 atmAcctngCallingParty 8 atmAcctngCalledParty 9 atmAcctngCallReference 10 atmAcctngStartTime 11 atmAcctngCollectionTime 12 atmAcctngCollectMode 13 atmAcctngReleaseCause 14 atmAcctngServiceCategory 15 atmAcctngTransmittedCells 17 atmAcctngReceivedCells 19 atmAcctngTransmitTrafficDescriptorType 20 atmAcctngTransmitTrafficDescriptorParam1 21 atmAcctngTransmitTrafficDescriptorParam2 22 atmAcctngTransmitTrafficDescriptorParam3 23 atmAcctngTransmitTrafficDescriptorParam4 24 atmAcctngTransmitTrafficDescriptorParam5 25 atmAcctngReceiveTrafficDescriptorType 26 atmAcctngReceiveTrafficDescriptorParam1 27 atmAcctngReceiveTrafficDescriptorParam2 28 atmAcctngReceiveTrafficDescriptorParam3 29 atmAcctngReceiveTrafficDescriptorParam4 atmAcctngReceiveTrafficDescriptorParam5 Record #0 svcIncoming(3) point-to-point(1) ifName = AT0/0/1 ifAlias = VPI = 0 VCI = 78 Calling Party = Called Party = 47.0091.8100.0000.0060.83c4.2c01.0060.70fa.3823 Call Reference = 8389197 Start Time = 1996 May 15 10:26:04.1 Collection Time = 1996 May 15 10:26:04.1 Collect Mode = onRelease Release Cause = 16 Service Category = ubr Transmitted Cells = 00 Received Cells = 00 Transmitted Traffic Descriptor Type = No CLP, No Sustained Cell Rate (atmNoClpNoScr) Parameter 1 = 16777215 (CLP=0+1 peak cell rate in cells per second) Parameter 2 = not used Parameter 3 = not used Parameter 4 = not used Parameter 5 = not used Received Traffic Descriptor Type = No CLP, No Sustained Cell Rate (atmNoClpNoScr) Parameter 1 = 16777215 (CLP=0+1 peak cell rate in cells per second) Parameter 2 = not used Parameter 3 = not used Parameter 4 = not used Parameter 5 = not used |
The rest of the records can be decoded, as shown in Examples B-2, using the same method as the first record.
As you see, it is not a simple task to turn the ATM accounting files into useful data. But the amount of data generated requires mechanisms different than simple SNMP polling. If you need billing information, however, ATM Accounting is a good mechanism to gather that data.