SMIv2 Implementation and Usage Report Juergen Schoenwaelder January 25, 1999 Table of Contents 1 Introduction ................................................. 1 2 IETF MIB Modules based on SMIv2 .............................. 2 2.1 Draft Standards ............................................ 2 2.2 Proposed Standards ......................................... 2 3 AGENT-CAPABILITIES ........................................... 4 3.1 AGENT-CAPABILITIES at Cisco ................................ 4 3.2 AGENT-CAPABILITIES at Xyplex ............................... 4 3.3 AGENT-CAPABILITIES at IBM .................................. 4 4 SMIv2 MIB Compiler ........................................... 5 4.1 MG-SOFT MIB Compiler 2.0 ................................... 5 4.2 ACE*COMM NetPlus MIB Compiler Version 3.32.19980731 ........ 5 4.3 mosy 8.1 ................................................... 6 4.4 scotty 3.0.0 ............................................... 6 4.5 smi2idl .................................................... 7 4.6 FutureV2 to V1 MIB converter and FutureV2 compiler ......... 7 4.7 MIBwalker v3.5.1 ........................................... 8 4.8 SMICng v2.2.07 ............................................. 9 4.9 MIB Server for Open NSUE 6.0 ............................... 10 4.10 SimpleSoft MIB Compiler Version 1.1 ....................... 11 4.11 PATROL SNMP Toolkit MIB Compiler version 3.0 .............. 11 1. Introduction The Internet Standards Process described in RFC 2026 (BCP 9) defines the Internet Standard maturity level as follows: A specification for which significant implementation and successful operational experience has been obtained may be elevated to the Internet Standard level. An Internet Standard (which may simply be referred to as a Standard) is characterized by a high degree of technical maturity and by a generally held belief that the specified protocol or service provides significant benefit to the Internet community. This memo documents implementation and usage experience for the SMIv2 in order to promote the SMIv2 from Draft to Internet Standard. [Page 1] 2. IETF MIB Modules based on SMIv2 Below is a list of IETF MIB modules that are written in the SMIv2 data definition language. The MIB modules listed in this section exercise all the SMIv2 constructs except the AGENT-CAPABILITIES macro. 2.1. Draft Standards RFC 1657 - BGP version 4 MIB RFC 1658 - Character Device MIB RFC 1659 - RS-232 Interface Type MIB RFC 1660 - Parallel Printer Interface Type MIB RFC 1694 - SMDS Interface Type MIB RFC 1724 - RIP version 2 MIB RFC 1748 - IEEE 802.5 Interface Type MIB RFC 1850 - OSPF version 2 MIB RFC 1907 - SNMPv2 MIB RFC 2115 - Frame Relay DTE Interface Type MIB 2.2. Proposed Standards RFC 1567 - X.500 Directory Monitoring MIB RFC 1595 - SONET/SDH Interface Type MIB RFC 1604 - Frame Relay Service MIB RFC 1611 - DNS Server MIB RFC 1612 - DNS Resolver MIB RFC 1628 - Uninterruptible Power Supply MIB RFC 1666 - SNA NAU MIB RFC 1695 - ATM MIB RFC 1696 - Modem MIB RFC 1697 - RDBMS MIB RFC 1747 - SNA Data Link Control MIB RFC 1749 - 802.5 Station Source Routing MIB RFC 1759 - Printer MIB RFC 2006 - Internet Protocol Mobility MIB RFC 2011 - Internet Protocol MIB RFC 2012 - Transmission Control Protocol MIB RFC 2013 - User Datagram Protocol MIB RFC 2020 - IEEE 802.12 Interfaces MIB RFC 2021 - RMON Version 2 MIB RFC 2024 - Data Link Switching MIB RFC 2037 - Entity MIB RFC 2051 - APPC MIB RFC 2096 - IP Forwarding Table MIB [Page 2] RFC 2108 - IEEE 802.3 Repeater MIB RFC 2127 - ISDN MIB RFC 2128 - Dial Control MIB RFC 2206 - Resource Reservation Protocol MIB RFC 2213 - Integrated Services MIB RFC 2214 - Guaranteed Service MIB RFC 2232 - Dependent LU Requester MIB RFC 2233 - Interfaces Group MIB RFC 2238 - High Performance Routing MIB RFC 2239 - IEEE 802.3 MAU MIB RFC 2248 - Network Services Monitoring MIB RFC 2249 - Mail Monitoring MIB RFC 2266 - IEEE 802.12 Repeater MIB RFC 2271 - SNMP Framework MIB RFC 2272 - SNMPv3 MPD MIB RFC 2273 - SNMP Applications MIB RFC 2274 - SNMPv3 USM MIB RFC 2275 - SNMP VACM MIB RFC 2287 - System-Level MIB for Applications RFC 2320 - Classical IP and ARP over ATM MIB RFC 2358 - Ethernet-Like Interface Types MIB RFC 2366 - Multicast over UNI 3.0/3.1 / ATM MIB RFC 2455 - APPN MIB RFC 2456 - APPN Trap MIB RFC 2457 - APPN Extended Border Node MIB RFC 2465 - IPv6 Textual Conventions and MIB RFC 2466 - ICMPv6 MIB [Page 3] 3. AGENT-CAPABILITIES 3.1. AGENT-CAPABILITIES at Cisco Cisco is presently using AGENT-CAPABILITIES as internal documentation for some MIBs to tell engineers in a standard way what was implemented. Cisco recognizes that such a standard, machine-readable form is of significant value both to internal engineers and to customers and intends to make it an official part of the public MIB documentation as soon as Cisco has internal resources available to work on it. Reported by Bob Stewart . 3.2. AGENT-CAPABILITIES at Xyplex Xyplex made extensive use of AGENT-CAPABILITIES in the past and considered them an important part of their internal and external MIB documentation. Xyplex provided both raw MIB files and AGENT- CAPABILITIES for their customers and also processed MIB and schema files. Xyplex developed their own software to parse MIBs and AGENT- CAPABILITIES to automatically generate schemas and edited MIBs for people with deficient ideas of what a MIB really implied. Based on Xyplex's direct experience and usage they considered AGENT- CAPABILITIES an important, very useful and usable standard. Reported by Bob Stewart . 3.3. AGENT-CAPABILITIES at IBM IBM is using agent capability statements in one of their TCP/IP products to document what MIBs are supported. IBM has been doing this for about three years now and found that agent capability statements are useful. Reported by Kenneth D. White . [Page 4] 4. SMIv2 MIB Compiler 4.1. MG-SOFT MIB Compiler 2.0 Contact: MG-SOFT Corporation Strossmayerjeva 32a SI-2000 Maribor, Slovenia http://www.mg-soft.si/ mailto:info@mg-soft.si Capabilities: Strict SMI checking is not yet fully implemented (we are adding it step by step - for now MIB Compiler runs in the conformance with SMIv2 drafts that were posted a few days ago. The output is SMIDB file - it is a file in proprietary file format. An application can access it through the WinMIB API, also implemented by MG-SOFT. MG-SOFT MIB Compiler *do* handle AGENT CAPABILITIES (although we have tested it only on MIBs that we created only for testing purposes - we do not know of any non-MG-SOFT MIB that would utilize AGENT- CAPABILITIES construct. 4.2. ACE*COMM NetPlus MIB Compiler Version 3.32.19980731 Contact: ACE*COMM Corporation 704 Quince Orchard Rd, Gaithersburg, MD 20878 USA http://www.acecomm.com/ mailto:info@acecomm.com (for licensing info) mailto:support@acecomm.com (for support) Capabilities: ACE*COMM's NetPlus MIB Compiler parses SMIv1 and SMIv2 definitions and converts them into proprietary file format (retaining all object attribute information), accessible via the NP_MIB++ class [Page 5] library or API function calls available via ACE*COMM's WinSNMP Developer Kit. The NetPlus MIB Compiler supports AGENT-CAPABILITIES, but has been tested--to the best of our knowledge, at least--only on MIBs created especially for testing purposes. 4.3. mosy 8.1 Contact: Juergen Schoenwaelder TU Braunschweig Bueltenweg 74/75 38106 Braunschweig, Germany ftp://ftp.ibr.cs.tu-bs.de/pub/networking/snmp/compiler/ mailto:schoenw@ibr.cs.tu-bs.de Capabilities: Parses all of the SMIv2 constructs and outputs files in the mosy intermediate format or converts SMIv2 to SMIv1. The compiler was written by Marshall Rose. 4.4. scotty 3.0.0 Contact: Juergen Schoenwaelder TU Braunschweig Bueltenweg 74/75 38106 Braunschweig, Germany http://wwwsnmp.cs.utwente.nl/~schoenw/scotty/ mailto:schoenw@ibr.cs.tu-bs.de Capabilities: The scotty package contains a MIB parser which understands SMIv2 except the AGENT-CAPABILITIES construct. The parser does not perform strict SMIv2 checks. However, the scotty package interprets SMIv2 constructs such as DISPLAY-HINTS at runtime. [Page 6] 4.5. smi2idl Contact: Subrata Mazumdar Bell Laboratories, Lucent Technologies 101 Crawfords Corner Road Holmdel, NJ 07733-303 http://nsm.research.bell-labs.com/~mazum/CorbaSnmp/SMI2IDL/ mailto:mazum@research.bell-labs.com Capabilities: SMI to IDL translator parses SMIv1 and SMIv2 definitions and converts them into OMG IDL. The translator is compliant with SNMP part of Opengroup-TMF sponsored "Inter-Domain Management: Specification Translation" document. The SMI to IDL translator ignores the macros related to MODULE- COMPLIANCE. The parser does not perform strict SMIv2 checks. 4.6. FutureV2 to V1 MIB converter and FutureV2 compiler Contact: Future Software Pvt. Ltd. 480 - 481, Mount Road Nandanam, CHENNAI INDIA - 600035 http://www.futsoft.com/ mailto:info@future.futsoft.com Capabilities: The FutureV2 to V1 MIB converter converts SMIv2 MIBs into SMIv1 MIBs. The FutureV2 compiler parses a SMIv2 MIB and generates a C header file that can be used with FutureSNMP agent. MIB to be compiled must include an IMPORTS statement. Tagging is not supported (parsed) right now. AUGMENTS clause though is parsed, it is mapped to INDEX clause (to be edited by user of generated v1 MIB). If any one of the macros MODULE-IDENTITY, OBJECT-IDENTITY, TEXTUAL-CONVENTION, OBJECT-GROUP, NOTIFICATION-GROUP, MODULE- COMPLIANCE, AGENT-CAPABILITIES contains a comment that is not [Page 7] self-contained in a line itself, generated SNMPv1 MIB poses problems when MIB is compiled. This can be avoided by having comments in separate lines in the above mentioned macros. (This can be overcome with very little effort). This MIB Compiler does handle AGENT CAPABILITIES macro although we have tested it only on test MIBs created only for testing purposes. We do not know of any MIB that would utilize AGENT-CAPABILITIES construct. 4.7. MIBwalker v3.5.1 Contact: David T. Perkins Desktalk Systems, Inc. 19401 South Vermont Avenue, Suite F-100 Torrance, California 90502 USA http://www.desktalk.com/ mailto:dperkins@desktalk.com Capabilities: MIBwalker is a "MIB browser" that contains an embedded MIB compiler based on code from CMU. This code has be heavily modified. It supports MIB modules in SMIv1 and SMIv2 formats. The MIB compiler parses a MIB module to determine the "descriptors" and the OID values associated with them. For items that are objects-types, it determines whether the item is a table, row, leaf. For leaf object-types, it extracts the value of the ACCESS (MAX-ACCESS), DESCRIPTION, STATUS, DEFVAL, and SYNTAX clauses to display and also uses the resolved value of the SYNTAX clause in data presentation. There is no check of semantics other than all referenced textual conventions are defined in the MIB module, and that all referenced OID values are defined in the MIB module. It does not use IMPORTS and requires that a MIB module be modified so that all imported items are defined in the MIB module being compiled. This embedded MIB compiler is similar to many other MIB compilers found in "MIB browsers" in the following ways: 1) it assumes that an input MIB module is valid [Page 8] 2) it performs only those validation checks on a MIB that it parses that would cause it to "crash and burn" 3) it is only concerned with leaf object-types, and uses only the information from textual conventions and other items (such as their OID value) that is needed to resolve the SYNTAX value and OID value of leaf object-types 4) it ignores the IMPORTS and requires that referenced items that are imported be defined in the MIB module 4.8. SMICng v2.2.07 Contact: David T. Perkins SNMPinfo 3763 Benton Street Santa Clara, CA 95051 USA http://www.snmpinfo.com/ mailto:dperkins@snmpinfo.com Capabilities: SMICng is a commercial product designed to validate that a collection of MIB modules are valid and to output information from MIB files in an easy to read and process format. This allows one to write backend programs that reads one of the outputs from SMICng and create another output in the format that is needed for a particular task. Examples such outputs include: * header files and skeleton code needed to develop an SNMP agent * header files needed to develop an SNMP application * data needed to present a MIB tree dialog box in a MIB browser * reports describing implemented capabilities in agents * reports describing requirements of management applications * presentations of MIB information in easy to understand formats (See http://www.snmpinfo.com/smicngoutput/ for outputs in serveral formats from SMICng for RFC 1213 and RFC 1215.) In addition, SMICng can convert a MIB module written in the SMIv2 format to a MIB module in the SMIv1 format. [Page 9] SMICng supports MIBs written in the SMIv1 and SMIv2 formats as defined by RFCs 1155, 1213, 1215, 1902, 1903, and 1904. It validates both that the syntax of a MIB module is correct and as far as possible that the constraints specified in the SMI's are not exceeded by a MIB module. For example, SMIv2 specifies that if the value for MAX-ACCESS is "read-create" of any column in a table, then no column in the table may have a value of "read-write". There are many such constraints specified in the SMIs and implemented by SMICng. (These are also called "semantics checks.") SMICng has usage options to disable many of the constraint checks as well as usage options to apply additional constraint checks. Note that unlike many other MIB compilers, SMICng also validates corrects usage of the IMPORTS clause. SMICng has been tested using all of the MIB modules contained in IETF RFCs (upto May 6, 1998), with many vendor MIB modules, and with an extensive set (several hundred) of test MIB modules. The results of many of the test MIBs were used to assist in clarifying the SMI definition. 4.9. MIB Server for Open NSUE 6.0 Contact: Bosch Telecom Software-Systeme GmbH & Co. KG Blumenstrasse 22-24 D-71522 Backnang Germany mailto:tssinfo@bk.bosch.de Capabilities: The MIB Server parses a list of files each containing one or more MIB modules and stores nearly all retrieved information in a SQL database, except AGENT-CAPABILITIES and conformance statements, that are parsed and checked for syntax, but not stored in the SQL database. Clients can connect to the MIB Server via CORBA and JDBC. The MIB Server is implemented in Java. The parser has been generated using JavaCC. The syntax checking is strict. Currently already implemented semantic checks are: * IMPORTS (any imported MIB module must be already part of the SQL [Page 10] database / MIB repository). * OID definitions * textual convention definitions * ambiguous identifiers The MIB Server parses SMIv1 and SMIv2 MIBs but does not check if SMIv1 and SMIv2 are mixed within a single module. 4.10. SimpleSoft MIB Compiler Version 1.1 Contact: SimpleSoft Inc. 257 Castro Street, Suite 220 Mountain View, CA 94041 USA http://www.smplsft.com mailto:sales@smplsft.com Capabilities: Understands both SNMPv1 and SNMPv2C SMI, and generates output in text based proprietary format. The compiler is originally based on mosy. It works in conjunction with a mib sorter program that collates multiple mibs and resolves interdependencies. It does understand Agent Capabilities Macro (even the earlier version of it). One of our products, the Automated SNMP Agent Tester uses the information in the agent capabilities macro to refine the tests performed. Very few of our customers seem to use the Agent Capabilities feature. 4.11. PATROL SNMP Toolkit MIB Compiler version 3.0 Contact: BMC Software 2101 CityWest Blvd. Houston, TX 77042 USA http://www.bmc.com mailto:Muriel_Appelbaum@bmc.com [Page 11] Capabilities: The PATROL SNMP Toolkit MIB Compiler parses/checks SMIv1 and SMIv2 Concise MIB Definitions, and generates data structure declarations test functions and access functions that can be compiled under C or C++. The MIB compiler parses/checks agent capabilities statements, but ignores them. [Page 12]