AVNMP

Active Virtual Network Management Prediction
Chapter 10: Setting Up an SNMP Environment

Stephen F. Bush and Amit B. Kulkarni
(bushsf@crd.ge.com, kulkarni@crd.ge.com)
 
Previous Chapter
Beginning of Tutorial
 
 
This chapter assumes that previous chapters covering the running of the system have been read and understood.  In this appendix, we discuss how to set up your environment so that you may easily query the MIB's on each of the nodes.

Installation

  1. First you must make sure that you have a snmp client installed on your system. You can check for this by looking for the snmp, and snmpwalk executable on your system. If not, you can get the one at http://net-snmp.sourceforge.net/
  2. Next, we must set up the working environment. 
    • First, create a directory: ${HOME}/.snmp
    • Next, create a directory: ${HOME}/.snmp/mibs
    • Place AVNMP-MIB.txt, AVNMP-LOADVARS-MIB.txt, and AVNMP-PREDVARS-MIB.txt (that can be found in ATROPOS_BASE_DIR/mibs) into ${HOME}/.snmp/mibs
  3. To finish up the installation, you must set the environment variable MIBS to point to the ~/.snmp/mibs directory (note the leading '+' in the list of file names) 
    • If you are using csh derivatives:
      • setenv MIBS +AVNMP-LOADPRED-MIB:AVNMP-MIB:AVNMP-PREDVARS-MIB
    • For bash derivatives:
      • export MIBS=+AVNMP-LOADPRED-MIB:AVNMP-MIB:AVNMP-PREDVARS-MIB

Checking Installation

Once you've properly set up your system, you can check to make sure the installation was successful. Startup magician and atropos, and then inject the following applications into the active network:
  • atropos.start.InjectSnmp
  • atropos.load.LoadGen
  • atropos.start.Flood
  • atropos.start.AvnmpSmartDriver 
Then from the shell you can execute: 
snmpwalk -p 5000 <HOST_TO_CHECK> public .1.3.6.1.3.75
The returned values should be period-separated strings.  If they contain period-separated digit values, then the installation was not successful. Please make sure you snmp installation is correct and that your $MIBS value is properly set. Example output should look similar to the following:

Using Port: 5000
Name: .iso.org.dod.internet.experimental.active.loadApp.loadAppPackets.0 -> INTEGER: 664
Name: .iso.org.dod.internet.experimental.active.loadApp.loadAppUptime.0 -> INTEGER: 34271
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPIndex.1 -> INTEGER: 1
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPID.1 -> OCTET STRING- (ascii):    AN-1
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPLVT.1 -> INTEGER: 140000
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPQRSize.1 -> INTEGER: 1
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPQSSize.1 -> INTEGER: 6
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPCausalityRollbacks.1 -> INTEGER: 0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPToleranceRollbacks.1 -> INTEGER: 0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPSQSize.1 -> INTEGER: 8
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPActTolerance.1 -> INTEGER: 500
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPGVT.1 -> INTEGER: 0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPLookAhead.1 -> INTEGER: 200000
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPGvtUpdate.1 -> INTEGER: 4294967295
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPStepSize.1 -> INTEGER: 20000
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPReal.1 -> INTEGER: 0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPVirtual.1 -> INTEGER: 7
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPNumPkts.1 -> INTEGER: 7
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPNumAnti.1 -> INTEGER: 0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPPredAcc.1 -> OCTET STRING- (ascii):       0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPPropX.1 -> OCTET STRING- (ascii): 0.0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPPropY.1 -> OCTET STRING- (ascii): 0.0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPETask.1 -> OCTET STRING- (ascii): 26.285714285714285
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPETrb.1 -> OCTET STRING- (ascii):  0.0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPVmRate.1 -> OCTET STRING- (ascii):        0.27469293254326416
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPReRate.1 -> OCTET STRING- (ascii):        NaN
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPSpeedup.1 -> OCTET STRING- (ascii):       0.003826758129642607
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPELkAhead.1 -> OCTET STRING- (ascii):      60457.0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPNumNoState.1 -> Wrong Type (should be INTEGER): OCTET STRING- (ascii):    0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPStatePred.1 -> OCTET STRING- (ascii):     420.0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPPktPred.1 -> OCTET STRING- (ascii):       660.0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPTdiff.1 -> OCTET STRING- (ascii): 5578.0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPStateError.1 -> OCTET STRING- (ascii):    240.0
Name: .iso.org.dod.internet.experimental.active.avnmpMIB.lP.lPTable.lPEntry.lPUptime.1 -> INTEGER: 25533
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionID.1 -> OCTET STRING- (ascii): AN-1
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPort.1 -> INTEGER: 3325
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedLoad.4847 -> INTEGER:
240
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedLoad.20000 -> INTEGER: 420
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedLoad.40000 -> INTEGER: 460
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedLoad.60000 -> INTEGER: 497
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedLoad.80000 -> INTEGER: 540
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedLoad.100000 -> INTEGER: 580
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedLoad.120000 -> INTEGER: 619
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedLoad.140000 -> INTEGER: 660
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedTime.4847 -> INTEGER:
4847
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedTime.20000 -> INTEGER: 20000
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedTime.40000 -> INTEGER: 40000
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedTime.60000 -> INTEGER: 60000
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedTime.80000 -> INTEGER: 80000
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedTime.100000 -> INTEGER: 100000
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedTime.120000 -> INTEGER: 120000
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionPredictedTime.140000 -> INTEGER: 140000
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionCurrentLoad.1 -> INTEGER: 15949
Name: .iso.org.dod.internet.experimental.active.loadPredMIB.loadPrediction.loadPredictionTable.loadPredictionEntry.loadPredictionCurrentTime.1 -> INTEGER: 25639
End of MIB.

Gathering Information From Atropos

The final step is to collect information from a running Atropos system. This can be accomplished by executing the perl scripts found in ATROPOS_BASE_DIR/bin. There is one main script that will accomplish what most people would need. The poll.pl script will properly form the command line arguements necessary . You must edit the poll script so it knows what machine names it should query.

By simply executing the poll.pl script, it will automatically generate output into files that are named by the queried object.

 
Previous Chapter Beginning of Tutorial

 

 


 
 The complete Atropos documentation is found in the Atropos API

This research is funded by DARPA/ITO Contract Number: F30602-98-C-0230 supported by the Air Force Research Laboratory/IF.
The project web site is http://www.crd.ge.com/~bushsf/an


SourceForge
Logo