1 / 24

Net-SNMP

Net-SNMP. J. Won-Ki Hong Dept. of Computer Science and Engineering POSTECH Tel: 054-279-2244 Email: jwkhong@postech.ac.kr. Contents. Net-SNMP Package History of Net-SNMP Applications of Net-SNMP Trap Daemon Architecture of Net-SNMP Agent How to extend SNMP agents with Net-SNMP

zach
Download Presentation

Net-SNMP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Net-SNMP J. Won-Ki Hong Dept. of Computer Science and Engineering POSTECH Tel: 054-279-2244 Email: jwkhong@postech.ac.kr

  2. Contents • Net-SNMP Package • History of Net-SNMP • Applications of Net-SNMP • Trap Daemon • Architecture of Net-SNMP Agent • How to extend SNMP agents with Net-SNMP • Net-SNMP URL: www.net-snmp.org

  3. Net-SNMP Package (1/2) • Net-SNMP is a suite of applications used to implement SNMPv1, SNMPv2c and SNMPv3 using both IPv4 and IPv6 and includes • Command-line applications to: • retrieve information from an SNMP-capable device, either using single requests (snmpget, snmpgetnext), or multiple requests (snmpwalk, snmptable, snmpdelta). • manipulate configuration information on an SNMP-capable device (snmpset). • retrieve a fixed collection of information from an SNMP-capable device (snmpdf, snmpnetstat, snmpstatus). • convert between numerical and textual forms of MIB OIDs, and display MIB content and structure (snmptranslate).

  4. Net-SNMP Package (2/2) • A graphical MIB browser (tkmib), using Tk/perl. • A daemon application for receiving SNMP notifications (snmptrapd). • An extensible agent for responding to SNMP queries for management information (snmpd). • A library for developing new SNMP applications, with both C and perl APIs.

  5. History of Net-SNMP • Originally based on the Carnegie Mellon University implementation (1992) • University of California at Davis SNMP extends CMU-SNMP, calls UCD-SNMP (1995) • UCD-SNMP moves to Net-SNMP in April, 2002 (Web sites also moves from www.ucd-snmp.net to www.net-snmp.net) • Now, Net-SNMP 5.7 released • More detailed history can be found at http://www.net-snmp.org/about/history.html

  6. Applications (1) • CommonOptions • -c community • -v 1 | 2c | 3 • -r retries • -t timeout • -p port • snmpget [COMMON OPTIONS] [-Cf] OID [OID]... • SNMP application that uses the SNMP GET request to query for information on a network entity • e.g., snmpget -c public localhost system.sysDescr.0 • Result) system.sysDescr.0 = Linux enterflex2.postech.ac.kr …

  7. Applications (2) • snmpset [COMMON OPTIONS] OID TYPE VALUE • SNMP application that uses the SNMP SET request to set information on a network entity • Type: i (INTEGER), u (UNSIGNED), s (STRING)… • e.g., snmpset -c private -v 1 localhost system.sysContact.0 s mjchoi@postech.ac.kr • snmpwalk [APPLICATION OPTIONS] [COMMON OPTIONS] [OID] • SNMP application that uses SNMP GETNEXT requests to query a network entity • Retrieves lots of data, a part of MIB tree (subtree) at once • e.g., snmpwalk -c public localhost system • Result) system.sysDescr.0 = … system.sysObjectID.0 = … system.sysUpTime.0 = …

  8. Applications (3) • snmpstatus [COMMON OPTIONS] • SNMP application that retrieves several important statistics from a network entity. • The IP address of the entity.  sysDescr.0 / sysUpTime.0 /… • e.g., snmpstatus -c public -v 1 localhost • Result) [127.0.0.1] [Linux enterflex2 .postech . ac .kr 2.4.7-10 #1 Thu Sep 6 17 :27:27 EDT 2001 i386 ]… • snmptranslate [OPTIONS] OID [OID]... • Application that translates SNMP object identifier values from their symbolic (textual) forms into their numerical forms • e.g., snmptranslate system.sysUpTime.0 • Result) .1.3.6.1.2.1.1.3.0

  9. Applications (4) • snmptrap [COMMON OPTIONS] [-Ci] enterprise-oid agent generic-trap specific-trap uptime [OID TYPE VALUE] • SNMP application that uses the SNMP TRAP operation to send information to a network manager • Definition) TRAP-TEST-MIB DEFINITIONS ::= BEGIN IMPORTS ucdExperimental FROM UCD-SNMP-MIB; demotraps OBJECT IDENTIFIER ::= { ucdExperimental 990 } demo-trap TRAP-TYPE STATUS current ENTERPRISE demotraps VARIABLES { sysLocation } DESCRIPTION "This is just a demo" ::= 17 END • e.g., snmptrap –v 1 -c public host TRAP-TEST-MIB::demotraps localhost 6 17 '' SNMPv2-MIB::sysLocation.0 s "Just here"

  10. Applications (5) • Other SNMP applications: • snmpgetnext: retrieving unknown indexed data. • snmpbulkwalk: uses SNMP GETBULK requests to query a network entity • snmptable: displaying table. • snmpnetstat: symbolically displays the values of various network-related information retrieved from a remote system using the SNMP protocol

  11. Trap Daemon • snmptrapd [OPTIONS][LISTENING ADDRESSES] • SNMP application that receives and logs SNMP TRAP • the default is to listen on UDP port 162 • snmptrapd is displayed as follows • Result) 1999-11-12 23:26:07 localhost [127.0.0.1] TRAP-TEST-MIB::demotraps: Enterprise Specific Trap (demo-trap) Uptime: 1 day, 5:34:06 SNMPv2-MIB::sysLocation.0 = "Just here"

  12. Architecture of SNMP Agent S N M P M A N A G E R Managed System SNMP Agent Embedded System Application Mgmt. Backend Interface Trap Monitor Operation Processor Message Generator Message Parser BER Decoder & Encoder Connection Listener Response/ Trap Request

  13. How to Extend (1) • Define a private MIB: Example of Cluster MIB

  14. How to Extend (2) • Download net-snmp-5.7.1.tar.gz • Decompress the file in your home directory command: gtar xvfz net-snmp-5.7.1.tar.gz • Compile default SNMP agent • cd net-snmp-5.7.1 • ./configure --prefix=“/usr/local/net-snmp” • make • umask 022 • make install

  15. How to Extend (3) • Install SNMP perl module for using mib2c • cd net-snmp-5.7.1 • cd perl • perl Makefile.PL -NET-SNMP-CONFIG=“sh ../net-snmp-config” -NET-SNMP-IN-SOURCE=true • make • make test • make install

  16. How to Extend (4) • Compile the private MIB file using mib2c • cd net-snmp-5.7.1 • cd local • mkdir cluster • copy the private mib in the current directory ex) cp ~mjchoi/cluster.my ./cluster.my • export MIBS=ALL • MIBS=./cluster.my • mib2c -c mib2c.scalar.conf generalInfo • mib2c -c mib2c.scalar.conf currentStatus • mib2c -c mib2c.array-user.conf loadBalancer • mv generalInfo.* cluster • mv currentStatus.* cluster • mv loadBalancer.* cluster • cp –r cluster ../agent/mibgroup/.

  17. How to Extend (5) • Code the extension agent • Header file: add necessary definitions • C file (1) Module definition: the code defining the contents of the MIB e.g., static oid clusterName_oid[] = { 1, 3, 6, 1, 3, 1, 1, 1, 0 }; (2) Module initialization: initialization before they can start providing the necessary information e.g.,netsnmp_register_instance(netsnmp_create_handler_registration ("clusterName", do_clusterName, clusterName_oid, OID_LENGTH(clusterName_oid), HANDLER_CAN_RWRITE));

  18. How to Extend (6) • Code the extension agent (3) Variable handling: actually handles a request for a particular variable instance e.g., char clusterName[NAME_LEN]; int *var_len; (4) Non-table-based modules: the request handling routine is to retrieve any necessary scalar data e.g., switch (reqinfo->mode) { case MODE_GET: snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR, (u_char *) clusterName, var_len); break; … }

  19. How to Extend (7) • Code the extension agent (5) Simple tables: process a simple table with limited table index e.g., int serviceTable_handler(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { … switch (reqinfo->mode) { case MODE_GET: switch (table_info->colnum) { case COLUMN_SRINDEX: snmp_set_var_typed_value(var, ASN_INTEGER, …); break; … } … } … }

  20. How to Extend (8) • Code the extension agent (6) General tables: process a general table, which the maximum index is not determinable e.g., Init_{Name}_Entry(); // Perform any necessary initialization while (( index = Get_Next_{Name}_Entry() ) != EndMarker ) { construct OID from vp->name and index compare new OID and request if valid { save current data if finished // exact match, or ordered table break; // so don't look at any more entries } … } …

  21. How to Extend (9) • Code the extension agent (7) Set-able object: the handling of SNMPSET e.g., switch (reqinfo->mode) { … case MODE_SET_ACTION: // XXX: perform the value change here if ( /* XXX: error? */ ) { netsnmp_set_request_error(reqinfo, requests, “error_msg.”); } break; case MODE_SET_COMMIT: // XXX: delete temporary storage if ( /* XXX: error? */ ) { netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_COMMITFAILED); } break; } …

  22. How to Extend (10) • Compile the MIB extension and generate SNMP daemon • ./configure --with-mib-modules=“cluster/generalInfo, cluster/currentStatus, cluster/loadBalancer” • cd agent • make • ./snmpd –c config_file (ex) ./snmpd –c /etc/snmp/snmpd.conf • snmpd [OPTIONS] [LISTENING ADDRESSES] • SNMP agent which binds to a port and awaits requests from SNMP management software. • collects the requested information and/or performs the requested operations and returns the information to the sender. • By default, snmpd listens for SNMP requests on UDP port 161.

  23. How to Extend (11) • Modify snmpd.conf for SNMP community # First, map the community name # sec.name source community com2sec clusterUser default postech # Second, map the security name into a group name: # groupName securityModel securityName group clusterGroup v1 clusterUser # Third, create a view for us to let the group have rights to: # name incl/excl subtree mask(optional) view mibview included .iso.org.dod.internet # Finally, grant the group read-only access to the systemview view. # group context sec.model sec.level prefix read write notif access clusterGroup "" any noauth exact mibview mibview none

  24. Good-Luck & Have Fun!

More Related