AVNMP

Active Virtual Network Management Prediction
Chapter 8: Atropos Logical Process

Stephen F. Bush and Amit Kulkarni
(bushsf@crd.ge.com, kulkarni@crd.ge.com)
 
Previous Chapter
Beginning of Tutorial
Next Chapter
This chapter assumes that previous chapters covering SNMP instrumentation and connection to Atropos of an active network application in Magician have been read and understood. In this chapter, and throughout the rest of this tutorial, we add incremental features to our sample application known as LoadGen. Recall from previous chapters that we have enhanced the number of packets transmitted with Atropos by making its SNMP Object Identifier known to Atropos.

Key Concept

The goal in this chapter is to take a more detailed look at the Logical Process and its role in the optimistic simulation based virtual overlay of Atropos. The Logical Process reacts to virtual messages which represent messages and/or states expected to occur in the future. These messages generated by the Driving Process are described in the previous chapter. 

 

Physical Process

The general idea is to start with a non-Atropos enhanced working process. This is the actual, or Physical Process (PP).  Generally, this is the heart of the system, the predictive model that we wish to test. During operation, input is received by the process, the process executes using the input, and then perhaps generates output: 
input->process->output

Virtual Time Process (normal operation)

The virtual overlay implemented by Atropos will mirror the above model, but with the addition of the methods shown below. getvm() and getnext()work together to handle messages out-of-order or out-of-tolerance. sendvm()saves copies of outgoing messages in the send queue for sending anti-messages during rollback. savestate()is executed periodically to save the current state in order to enable rollback to a known good state. 
 input -> getvm(); getnext() -> process -> sendvm() -> output
              |
              V
                 savestate()

Virtual Time Process (rollback)

getvm() indicates when a rollback is required by returning the virtual time to which the Logical Process should rollback. The state is restored to an earlier state by getstate() and rbq() transmits any required anti-messages.
 
                                                                                               if (getvm() != 0)
                                                  getstate() -> process() -> rbq() -> output
 
The following lines of code in avnmp.java.lp.ConfigInterface(ConfigInterface.java) control the performance of the Logical Process: 
 final static long runMinutes = 5;

final static double ootLimit = 0.9;

final static double initTolerance = 1000.0;

The Logical Process is designed to run until certain conditions are met for gathering data during experimental validation. It is currently designed to end execution when the proportion of out-of-tolerance messages exceeds a given threshold. The threshold is tightened over time. In this case, the tolerance is in packets per second and is initially set at initTolerance packets per second. The tolerance is reduced by half every runMinutes of execution. When the proportion of out-of-tolerance packets reaches ootLimit, execution ends. Thus, data can be collected over a range of tolerances.

Running the Active Application

After reading through this code and understanding what it does, you can compile the code "as-is" using the included Makefile. Run in the Magician execution environment by entering:
 
  • send InjectSnmp AH-1 
  • send LoadGenAppBasic AH-1 
  • send Flood AH-1 
  • send AvnmpSmartDriver AH-1 
 
The object identifiers created within the application and the predictions generated by Atropos should now be queriable via an SNMP client. 
Previous Chapter
Beginning of Tutorial
Next Chapter



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