INTERNET-DRAFT EXPIRES: SEPTEMBER 1997 INTERNET-DRAFT Network Working Group A.Romanov Internet Draft Quality Quorum, Inc Category: Informational March 1997 Expire in six months Practical Approach to Improving Scalability and Interoperability of SNMP Applications Status of this Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress". To learn the current status of any Internet-Draft, please check the "1id-abstract.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast). Abstract The goal of this memo is to provide a simple solution for apparent practical problem of scalability and interoperability of network management applications. Table of Contents 1. Introduction 2. Proposed Solution 3. MIB Definitions 4. Acknowledgments 5. References 1. Introduction Both the SNMPv1 protocol (RFC1157 [1]) and the SNMPv2 protocol (RFC1905 [2]) were developed with the goal of providing scalable network management environment. However, both these protocols did not specify limits on the complexity of the SET requests. At the same time both these protocols required 100% atomicity (also known "as if simultaneous" principle) of SET requests. These two requirements combined can be satisfied only by impractically complex SNMP agents. So, these requirements were ignored to one or another degree by practically all existing SNMP agent implementations accepting SET requests. In this environment network management applications (NMA) have no other way than to accept worse case and use less common denominator approach by utilizing only simplest forms SET requests in all cases. So, NMA with additional information is not able to utilize capabilities of high end SNMP agent implementations, so SNMP is not so good scaling up, it also has negative impact on interoprability between NMAs and network devices provided by diffrenet vendors. 2. Proposed Solution It seems imperative to find practical solution allowing (1)really simple SNMP agent implementations, (2) NMAs able to adapt itself to both exploiting full capabilities of high end SNMP agents and utilizing modest capabilites of low end implementations. Proposed solution consists of two parts: (a) an implementation agreement to use error-status 'inconsistenValue' by SNMPv2 agents and 'badValue' by SNMPv1 agents to reject SET requests whose complexity exceeds agent abilities to process it, (b) MIB variables allowing NMAs to get information about acceptable level of SET request complexity for given SNMP agent before sending any requests. This solution is (1)simple, (2)compliant with both SNMPv1 and SNMPv2, (3)backward compatible with existing implementations. 3. MIB Definitions QQI-MIB DEFINITIONS ::= BEGIN IMPORTS enterprises FROM SNMPv2-SMI; qqiMIB MODULE-IDENTITY LAST-UPDATED "9703010000Z" ORGANIZATION "Quality Quorum, Inc." CONTACT-INFO " Aleksey Romanov Email: qqi@world.std.com" DESCRIPTION "QQI private MIB tree." REVISION "9703010000Z" DESCRIPTION "The initial revision of this MIB module." ::= { enterprises 3023 } END QQI-PUBLIC-MIB DEFINITIONS ::= BEGIN IMPORTS qqiMIB FROM QQI-MIB; qqiPublicMIB MODULE-IDENTITY LAST-UPDATED "9703010000Z" ORGANIZATION "Quality Quorum, Inc." CONTACT-INFO " Aleksey Romanov Email: qqi@world.std.com" DESCRIPTION "Part of QQI private MIB tree intended for public use." REVISION "9703010000Z" DESCRIPTION "The initial revision of this MIB module." ::= { qqiMIB 25 } -- Group providing information about acceptable complexity of -- of SET requests for given SNMP agent qqiPublicGroups OBJECT IDENTIFIER ::= { qqiPublicMIB 1} qqiSetRequest OBJECT IDENTIFIER ::= { qqiPublicGroups 1 } qqiSetLevel OBJECT-TYPE SYNTAX INTEGER(0..7) MAX-ACCESS read-only STATUS current DESCRIPTION "The relative measure of SET request complexity acceptable for given SNMP agent. Its values has to be interpreted as follows: 0 - the most primitive form of SNMP agent, it can reliably process SET request which limited to single instance or single row in the conceptual table. Also it is not able to identify and reject too complex request, 1 - Same as '0' plus it is able to process 'snmpSetSerialNo', 2 - Same as '1' plus it is able to reliably identify and reject too complex SET request (this is lowest level of really compliant SNMP implementation), 3 - Same as '2' plus it is able to process simplest case of multiple rows/scalars in one PDU, e.g. it is able to add several new PVCs to ATM switch configuration, however, it will be unable to properly process resource reallocation within a request, e.g. to reuse VCI freed by PVC being deleted in PVC being created by the same request, 4 - Same as '2' plus it is able to process complex updates of multiple rows within a single table, 5 - Same as '3' plus it is able to process simple updates in several tables simultaneously, 6 - Same as '4' plus it is able to process complex updates in several rows simultaneously, 7 - No limits. For all practical purposes all agents which do not implement this variable should be considered of level 0." ::= { qqiSetRequest 1 } qqiSetLimit OBJECT-TYPE SYNTAX INTEGER(1..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "Limit on the number of rows/scalars to be processed by SNMP agent having value of qqiSetLevel in the range of (3..6). This value is not applicable to SNMP agent with qqiSetLevels 0, 1, 2, and 7." ::= { qqiSetRequest 2 } -- Conformance statements qqiPublicMIBConformance OBJECT IDENTIFIER ::= { qqiPublicMIB 2 } qqiPublicMIBCompliance OBJECT IDENTIFIER ::= { qqiPublicMIBConformance 1 } qqiPublicMIBGroups OBJECT IDENTIFIER ::= { qqiPublicMIBConformance 2 } -- compliance statements qqiPublicMIBCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for SNMP entities which implement objects of qqiPublic MIB" MODULE MANDATORY-GROUPS { qqiSetGroup } ::= { qqiPublicMIBCompliance 1 } -- units of conformance qqiSetRequestGroup OBJECT-GROUP OBJECTS { qqiSetLevel, qqiSetLimit} STATUS current DESCRIPTION "The qqiSetRequest group of objects providing information about acceptable complexity of set request." ::= { qqiPublicMIBGroups 1 } END 4. Acknowledgments This memo was inspired by author's discussion with Bob Natale (ACE*COMM). 5. References [1] Jeffrey D. Case, Mark Fedor, Martin Lee Schoffstall and James R. Davin, Simple Network Management Protocol (SNMP), SNMP Research, Performance Systems International, MIT Laboratory for Computer Science, RFC 1157, May 1990. [2] Jeffrey D. Case, Keith McCloghrie, Marshall T. Rose and Steven Waldbusser, Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2), SNMP Research Inc, Cisco Systems Inc, Dover Beach Consulting Inc, International Network Services, RFC1905, January 1996. INTERNET-DRAFT EXPIRES: SEPTEMBER 1997 INTERNET-DRAFT Author's Address: Mr. Aleksey Y. Romanov Quality Quorum, Inc. 60 Lincoln Road Sutton, MA 01590 USA E-mail: qqi@world.std.com