OPNET TM Modeler CS 541 Advanced Networking Spring 2009

Preview:

Citation preview

OPNETTM ModelerCS 541

Advanced Networking

Spring 2009

Outline

Getting Started Implement Custom Protocols Wireless Network Issues Debugging

Introduction

OPNET (www.opnet.com) Discrete time simulation Shipped with lots of models written in C Platform: Windows/Linux Programming Languages: C/C++ GUI/command line simulation

Getting Started

Modeler Tutorials: [Help - Tutorials] Go through all of them

Module Tutorials Creating a Wireless Network

General Simulation Steps

Create network scenario(s) Configure nodes Create traffic Configure/run simulation Choose statistics Configure/run simulation View results (Export data)

OPNET Object Hierarchy

Communication Entities

Packets Inter/intra node communication Recursively organized Structure vs. Physical Layout

ICI (Interface Control Information) Within a node, between different

layers/process models

Implement Custom Protocols

Create new process models Modify existing process models Create new packet formats Create/modify node models

MANET routing protocols

Node Model: manet_station_adv

Process Model: manet_mgr

Create a New Process Model

Easier to copy and modify on exist model Modifications:

The FSM (finite state machine) State variables Header/Function/… blocks, excecutives External files (.h, .ex.c, .ex.cpp)

Add/modify attributes: model/global Add/modify statistics: local/global

Add Support for New Model

Modify corresponding .h files, adding constants and enums

Declare pf_rte as child process of manet_mgr

Modify manet_mgr model: Add attributes for pf_rte Add code to create and invoke pf_rte process Add code to dispatch packets to pf_rte

Use text search tools to help

OPNET Wireless Suite

Pipeline Stages Node Mobility Antenna Pattern Terrain Effects

Understand Pipeline Stages

Pipeline – sequence of calculations

Point-to-Point Pipeline Models Bus Pipeline Models Radio Pipeline Models

Radio Pipeline Stages (Tx side)

1. Receiver Group

2. Transmission Delay

3. Link Closure

4. Channel Match

5. Tx Antenna Gain

6. Propagation Delay

Radio Pipeline Stages (Rx side)

7. Rx Antenna Gain8. Received Power9. Interference Noise10. Background Noise11. Signal-to-Noise Ratio12. Bit Error Rate13. Error Allocation14. Error Correction

Default Pipeline Stages

Default stages <opnet_dir>/<rel_dir>/models/std/links <opnet_dir>/<rel_dir>/models/std/wireless

Default stage prefixes dpt_* - default point-to-point dbu_* - default bus dra_* - default radio

Customize Pipeline Stages

Write own <name>.ps.c / <name>.ps.cpp Interface: void pipeline_stage (Packet *); Compilation

GUI – compile button CMD – op_mko -type ps -m <name> Generate <name>.ps.o / <name>.ps.obj

Assign Pipeline Stage to Module

•In node model, set the attributes of radio transmitter or receiver objects•An attribute for each pipeline stage

Skip Pipeline Stages

To speed up simulations Set the pipeline stage attribute to NONE A fixed pre-determined value will be used.

Modeling Node Mobility

4 methods: Use trajectory files Specify a “motion vector” via attributes Random Waypoint Model Update node position programmatically

Trajectory Files

Path of a mobile node during a simulation in a text file (.trj)

Absolute / relative positions

Motion Vector

Move along a great circle around the earth Bearing / ground speed / ascent rate

(advanced attributes)

Random Waypoint

Node moves randomly from one waypoint to another

Trajectoryrecording

Mobility KPs

op_ima_obj_pos_get () op_ima_obj_pos_get_time () op_ima_obj_pos_notification_register () op_ima_obj_pos_query_proc_set () op_ima_obj_pos_set_geocentric () op_ima_obj_pos_set_geodetic ()

Antenna Modeling

Antenna Pattern Editor Visualize pattern in 3D Specify gains (φ, θ) Normalization

Consult Naraj

Terrain Effects

Calculated in pipeline stage: Closure Without TMM module:

LOS (Line Of Sight) with earth curve considered With TMM module:

Free space Longley-Rice TIREM

Find and Install Terrain Data

DTED files .dt0, .dt1, .dt2

USGS DEM files .dem

Display Elevation Maps

•.el files, can be generated by OPNET using terrain data

Select a Propagation Model

Debugging

Strategy Select Kernel ODB C/C++ Debugger

Debugging Strategy Looking for clues:

Compiler warnings DES Log Error Log OPNET Debugger (ODB) Memory tracking Animation and live statistics

Narrow down the problem Time (simulation time, event#, packet#) Location (node, module, process, code)

Simulation Kernels

Development Kernels Allows ODB OPNET Profiler Detailed error messages Slower simulation execution Slightly higher memory usage

Optimized Kernels Use for production

ODB Features

Graphical interface Step through events Breakpoints for specific

Event, time, module, process, packet Trace Kernel Procedures (KPs) Print out current status of simulation entities Print out memory usage statistics Pass control to and from a C/C++ debugger

Make codes easy to debug

Prefer op_prg_odb_print<major/minor> () over printf ().

Use op_sim_error () for errors. Use FIN/FOUT/FRET in every function.

Helps OPNET to display the function call stack Write traces and label them. Write diagnostic blocks

Only invoked in ODB

Use a C/C++ Debugger

Compiling a process model generates a C/C++ file: <model_name>.pr.c or .cpp

Primary functions unchanged Executives / transitions macros Temporary variable block local variables State variables fields of a struct

var_name op_sv_ptr->var_name

Use a C/C++ Debugger with ODB

Run the simulation with ODB enabled The simulation stops before the first event

Attach the C/C++ debugger to the simulation process

Set breakpoints in ODB or the C/C++ debugger

Continue from the C/C++ debugger Continue in ODB

Questions?

Recommended