Practical Guide to Snmpv3 and Network Management
PrefaceWhile I was working on this book, I would tell people the title, A Practical Guide to SNMPv3 and Network Management, and the most common response I would get would be, "Isn't that an oxymoron?" It's a good line but it's not really true. SNMPv3 is conceptually simple. While its use within a network will add complexity, it addresses a major weakness of SNMP which is the lack of strong security. You can't add sophisticated features like authentication, encryption, and access control without adding some complexity to how these features are configured. Still, I have talked with several engineers I know who develop network management software, and they have dismissed SNMPv3 without even attempting to understand it. I feel this is a mistake. I have this image in my mind of SNMPv3 as a series of dark clouds that are rolling in over the horizon. Like it or not the storm is coming and you'd better be prepared for it.One of the goals for this book is to prepare you for SNMPv3. This means making it understandable at both a conceptual and practical level. For me, understanding it at a practical level means understanding how to work with it. This book will show how to configure SNMPv3 for generating notifications, proxy forwarding, authentication, security, and access control. It is not a goal for this book is to describe the logical subsystems that make up an SNMPv3 architecture, or any of the abstract service interfaces that are used between these subsystems. While this information might be useful to people implementing SNMPv3 engines, this book is intended for network managers who need to use SNMPv3 and for software developers who need to build network management applications using SNMPv3. Besides, the INTERNET-DRAFT documents do a fine job of defining these various subsystems and their abstract service interfaces, probably a better job than I could do.Another goal for this book is to make RMON2 understandable. RMON2 is one of the more important advancements that have been made to the network management space. One of the keys to managing a network is understanding it. RMON2 lets you understand both the network-layer and application-layer traffic going across your network. You can further understand the network-layer and application-layer conversations occurring on your network. By understanding the protocol usage and conversations occurring on a network (and by tracking this over time) a network manager can better plan for network growth and optimize client-server communications.Over the past year I have talked with several customers who have expressed confusion over how to configure and use RMON2. While the RMON2 MIB is rather imposing, it is fairly consistent in its configuration and in how its data tables are accessed. The RMON2 chapter in this book shows how to configure RMON2 and how to access its data tables. It also suggests several RMON2 applications that can be built.The major goal for this book, however, is to provide practical insights into building SNMP-based applications. I have spent the past sixteen years building both network devices and network management products. As such my focus is more on the practical nature of getting things built then on the theoretical or academic nature. This book is really for network managers and developers who need to focus on getting things built.NOTATIONPseudocode is used throughout the book to describe the logic in configuring and accessing SNMPv3 and RMON2 MIB tables. The format of the psuedocode is a loose combination of C and Tcl, with a little Java thrown in where it makes sense. All pseudocode is shown in a courier font.The pseudo code is meant to be descriptive and obvious. The command line, x <- 100, assigns x the value 100. A foreach command loops through a collection. For example, the psuedocodeforeach x in Col{ProcessObject(x)}will call the procedure ProcessObject for each object in the collection Col.The following pseudocode will perform an SNMP Get operation, collecting sysDescr.0 and sysUpTime.0, and will assign the response pdu to the variable responsePDU.pdu <- {sysDescr.0, sysUpTime.0}responsePDU <- SnmpGet(pdu)The following pseudocode will perform an SNMP Set operation, setting the operational status of interfaces 2 and 3 to down.pdu <- {ifAdminStatus.2 <- 'down',ifAdminStatus.3 <- 'down' }responsePDU <- SnmpSet(pdu)There are several places in the book where I show how an SNMP entity determines something, such as what target addresses to send notifications to. In these examples I use a foreach statement to cycle through all the rows in a MIB table. I also access the MIB objects directly. The following pseudocode will cycle through each row in the ifTable, printing the ifSpeed value:foreach inst in ifTable{print ifSpeed.inst}BOOK ORGANIZATIONThe chapters of this book are divided into three parts. In the first part we describe SNMPv1 and SNMPv2. Chapter 2, SNMP Basics, shows the basic data types that are used to represent management information and then shows textual conventions that are used to represent abstract data types. The chapter then proceeds to show the rules for naming and defining managed objects. It then describes the operations that were defined for SNMPv1, and extensions that were defined for SNMPv2. Chapter 3 focuses on the management information represented by MIB-II, specifically how this management information can be utilized by a network manager.Part II focuses on SNMPv3. Chapter 4 describes the framework defined for SNMPv3. It also shows new textual conventions that have been defined for SNMPv3, along with a new SNMPv3 message format. Chapter 5 spends a little time discussing the SNMPv3 applications that can run within an SNMP entity. The focus in the chapter, however, is on configuring notifications and proxy forwarding using MIBs that have been defined for SNMPv3. Chapter 6 discusses the security features that are provided by SNMPv3. Again, the focus on this chapter is both understanding how the security features work and how they are configured using new SNMPv3 MIBs. Chapter 7 shows how the view-based access control model works, and how it can be configured using new SNMPv3 MIBs. Chapter 8 examines coexistence issues between the different SNMP versions.Part III takes a look at several practical network management issues. Chapter 9 describes RMON2, and shows how RMON2 can be utilized to understand the network-layer and application-layer traffic running on a network. Chapter 10 examines several Cisco Private MIBs, and shows how they can be used to do useful stuff.