What s New in OMNeT++



Similar documents
Authoring for System Center 2012 Operations Manager

Introduction to NaviGenie SDK Client API for Android

OMNeT++ User Manual. Version 4.6

Secrets of Event Viewer for Active Directory Security Auditing Lepide Software

IBM WebSphere Message Broker Message Monitoring, Auditing, Record and Replay. Tim Kimber WebSphere Message Broker Development IBM Hursley Park, UK

CS 378: Computer Game Technology

Embedded Software Development with MPS

A QUICK OVERVIEW OF THE OMNeT++ IDE

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

Xcode Project Management Guide. (Legacy)

Logging in Java Applications

Android Application Development: Hands- On. Dr. Jogesh K. Muppala

Microsoft Windows PowerShell v2 For Administrators

Web Services API Developer Guide

Software Development Kit

JOSSO 2.4. Internet Information Server (IIS) Tutorial

Java Language Tools COPYRIGHTED MATERIAL. Part 1. In this part...

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

Ball Aerospace s COSMOS Open Source Test System

De-Duplication Filter for Symantec Enterprise Vault guide

ShoreTel Active Directory Import Application

Instrumentation Software Profiling

ACR Triad Site Server Click Once Software System

IBM Business Monitor. BPEL process monitoring

HoneyBOT User Guide A Windows based honeypot solution

SCA-based Enterprise Service Bus WebSphere ESB

OPNET Network Simulator

How to use PDFlib products with PHP

How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip

Helpdesk Support Tool Administrator s Guide

Image Acquisition Toolbox Adaptor Kit User's Guide

Creating a Semantic Web Service in 5 Easy Steps. Using SPARQLMotion in TopBraid Composer Maestro Edition

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5

Mocean Android SDK Developer Guide

Java Application Developer Certificate Program Competencies

Getting Started with Telerik Data Access. Contents

How to Prepare for the Upgrade to Microsoft Dynamics CRM 2013 (On-premises)

LCMON Network Traffic Analysis

Practical Data Visualization and Virtual Reality. Virtual Reality VR Software and Programming. Karljohan Lundin Palmerius

ShoreTel Active Directory Import Application

TZWorks Windows Event Log Viewer (evtx_view) Users Guide

Android Tutorial. Larry Walters OOSE Fall 2011

SW5706 Application deployment problems

Advanced Techniques for Mobile Robotics Robot Software Architectures. Wolfram Burgard, Cyrill Stachniss, Kai Arras, Maren Bennewitz

Configuring the Redundancy Feature in a KIRK Wireless Server Application Note

WCFStormHost User Guide

Creating a 2D Game Engine for Android OS. Introduction

Web services with WebSphere Studio: Deploy and publish

TSM Studio Server User Guide

Installation and Administration Guide

Microsoft Dynamics GP. Engineering Data Management Integration Administrator s Guide

Parallel Visualization of Petascale Simulation Results from GROMACS, NAMD and CP2K on IBM Blue Gene/P using VisIt Visualization Toolkit

ShoreTel Advanced Applications Web Utilities

Simulation of wireless ad-hoc sensor networks with QualNet

Typeset in L A TEX from SGML source using the DocBuilder Document System.

Listeners. Formats. Free Form. Formatted

FreeForm Designer. Phone: Fax: POB 8792, Natanya, Israel Document2

Application. 1.1 About This Tutorial Tutorial Requirements Provided Files

RF Monitor and its Uses

Tools for ITIL Capacity Management: How not to spend 100,000

Generating Automated Test Scripts for AltioLive using QF Test

Release Notes LS Retail Data Director August 2011

Release Bulletin EDI Products 5.2.1

Lab Exercise Objective. Requirements. Step 1: Fetch a Trace

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner

Fax Transmission Analyzer Option

ProxiBlue Dynamic Category Products

> Define the different phases of K2 development, including: understand, model, build, maintain and extend

Python for Series 60 Platform

OMU350 Operations Manager 9.x on UNIX/Linux Advanced Administration

Centralizing Windows Events with Event Forwarding

Affdex SDK for Android. Developer Guide For SDK version 1.0

EMC Documentum Webtop

Author: Ryan J Adams. Overview. Policy Based Management. Terminology

Web Application Testing. Web Performance Testing

Windows Scheduled Task and PowerShell Scheduled Job Management Pack Guide for Operations Manager 2012

Computing Concepts with Java Essentials

keyon true-xtender Luna SA Monitor Service Manual Release Version Autor Date Keyon January 2016 Release with Luna SA 6 support

Application Servers - BEA WebLogic. Installing the Application Server

Lazy OpenCV installation and use with Visual Studio

Database Application Developer Tools Using Static Analysis and Dynamic Profiling

CREW - FP7 - GA No Cognitive Radio Experimentation World. Project Deliverable D7.5.4 Showcase of experiment ready (Demonstrator)

IBM InfoSphere MDM Server v9.0. Version: Demo. Page <<1/11>>

Release Notes Skelta BPM.NET 2007 (Service Pack 2)

Dell Active Administrator 8.0

Exam Name: IBM InfoSphere MDM Server v9.0

WebSphere Business Monitor V6.2 Business space dashboards

Windchill Service Information Manager Curriculum Guide

Analysis of Open Source Drivers for IEEE WLANs

OPNET - Network Simulator

LAB THREE STATIC ROUTING

Tomáš Müller IT Architekt 21/04/2010 ČVUT FEL: SOA & Enterprise Service Bus IBM Corporation

... Introduction... 17

Eliminate Memory Errors and Improve Program Stability

Taboret Management Application Builder

WebSphere Training Outline

F9 Integration Manager

Introduction to WebSphere Process Server and WebSphere Enterprise Service Bus

Windows PowerShell Cookbook

Transcription:

What s New in OMNeT++ András Varga Opensim Ltd andras@omnetpp.org 2 nd OMNeT++ Community Summit September 4-5, 2015 IBM Research Labs, Zurich 1

PART 1 API CHANGES 2

New Logging Mechanism More featureful API: log levels: fatal, error, warning, info, detail, debug, trace fatal, error, warning: should refer to events in the simulated system (not to technical errors in the simulation program) info, detail: should refer to the domain (i.e. understood by anyone who knows the protocol the model implements) debug, trace: specific to the implementation (i.e. understanding requires familiarity with the source code) category support category identifies a topic; example categories: retx, frag, mgmt EV_INFO << Received BA acks all outstanding frames\n ; // same as EV <<... EV_TRACE << Returning from processblockack()\n ; EV_WARNING << Timeout, retransmitting frame\n ; EV_ERROR << Protocol violation: received ACK when CTS was expected\n ; EV_DETAIL_C( frag ) << Fragment completes frame, sending up\n ; 3

New Logging Mechanism Configurability: runtime loglevel threshold, compile-time loglevel threshold filtering by module and category Implementation: tons of information is passed to the logging code with each line: file/line, loglevel/category, event number, simulation time, msg name and type, module name and type, object name and type, etc. configurable log prefix (40+ %x format directives!) 4

Random Variate Generation Introduced crandom random variable stream as object encapsulates an RNG (crng*) and parameters of the distribution numbers can be extracted with the draw() method subclasses: cuniform, cexponential, cnormal, etc.; also cstatistic! Related change on random variate generation functions (normal(), etc.): double normal(double mean, double stddev, int rngindex=0); double normal(crng *rng, double mean, double stddev); Motivation: break the functions dependence on the context module Functions with the old signatures added to ccomponent as methods, so most models won t notice the change 5

Event Class Introduced cevent as a base class of cmessage: cevent allows scheduling of arbitrary code for a simulation time that runs independent of modules. class cevent { public: virtual void execute() = 0;... }; Motivation: allow implementing simulation time limit with an "end-simulation" event encapsulate foreign events (e.g. SystemC events) for seemless integration with the simulation event loop NOT intended for use in simulation models 6

Scheduler Changes cscheduler API has changed: Partly in relation to the cevent change Removed: virtual cmessage *getnextevent() = 0; // leaves event in FES Added: virtual cevent *takenextevent() = 0; // removes event from FES virtual cevent *guessnextevent() = 0; // only for UI purposes 7

Replaceable FES FES (Future Event Set): Stores the events that are scheduled to occur but have not been processed yet. send() variants and scheduleat() add events to the FES. Abstract base class: cfutureeventset Default implementation: ceventheap (ex-cmessageheap) implements binary heap Configuration option: futureeventset-class=<classname> Motivation: Alternative data structures may be more efficient than heap for specific workloads Examples: skiplist, various balanced trees, calendar queue 8

Simulation Lifecycle Listeners Added simulation lifecycle listeners: Called back before and after network setup, on network initialization, before and after network finalization, etc. Motivation: allow more flexibility when writing initialization and shutdown code for schedulers, result file managers and other extensions class cisimulationlifecyclelistener { virtual void lifecycleevent(simulationlifecycleeventtype event, cobject *details) = 0; }; Events: (LF_)ON_STARTUP, PRE_NETWORK_SETUP, POST_NETWORK_SETUP, PRE_NETWORK_INITIALIZE, POST_NETWORK_INITIALIZE, ON_SIMULATION_START, ON_SIMULATION_PAUSE, ON_SIMULATION_RESUME, ON_SIMULATION_SUCCESS, ON_SIMULATION_ERROR, PRE_NETWORK_FINISH, POST_NETWORK_FINISH, ON_RUN_END, PRE_NETWORK_DELETE, POST_NETWORK_DELETE, ON_SHUTDOWN 9

Fingerprint Changes Simulation fingerprint: A hash computed from events of a simulation run. For regression testing, one compares the fingerprint computed from a simulation run to a prerecorded fingerprint. Introduced in OMNeT++ 4.0, fingerprints have since proven to be extremely useful. We use them daily during INET development! Changes to make fingerprints even more useful: use module path strings instead of module IDs (increases robustness) make it configurable what is taken as input for hash (message class names, packet lengths, control info class names, etc.) backward compatibility (4.x) mode also exists 10

Canvas API Allows adding extra graphical elements to the usual display string based module graphics. See last year s presentation 11

API Cleanup API cleanup omnetpp namespace (recommended: using namespace omnetpp;) iterator API change: use operator* instead of operator() for dereference removed deprecated functions, classes and other API elements removed 3.x compatibility features (WITH_DOUBLE_SIMTIME, WITHOUT_CPACKET) images under images/old/ are no longer accessible without the old/ prefix ev and simulation macros have been removed 12

Codebase Cleanup Cleanup and modernization of the codebase Modernizing: use nullptr and override; use <cstdio> instead of <stdio.h>, etc. Per-library namespaces (i.e. omnetpp::nedxml); fully qualified header guards; qualified includes (i.e. #include "common/stringutil.h instead of #include "stringutil.h ) Include folder: contains <omnetpp.h>, all other files are in the omnetpp/ subfolder Code style: renamed many identifiers (local variables, arguments, private data members, etc.) to have consistent, camelcase names C++11: OMNeT++ 5.0 will compile with, but at least the base parts will not require C++11, C++14 or newer C++ specs. 13

PART 2 AND MORE... 14

Demo An example simulation 15

Tkenv is about to retire... Qtenv: A shiny new OMNeT++ graphical runtime based on the Qt toolkit Release plan: OMNeT++ 5.0: Qtenv will be included for testing and feedback, Tkenv still being the default UI It will be roughly equivalent to Tkenv, in terms of UI and features OMNeT++ 5.1 and later: Qtenv will become the default, but Tkenv will continue to be included as long as feasible or necessary Features will be added gradually, e.g. improved packet flow animation 16

Demo Glider demo... 17

3D Visualization Has Arrived 3D visualization is based on OpenSceneGraph (OSG), openscenegraph.org OpenSceneGraph is an open source high performance 3D graphics toolkit, used by application developers in fields such as visual simulation, games, virtual reality, scientific visualization and modeling. Written entirely in Standard C++ and OpenGL, it runs on all Windows platforms, OS X, GNU/Linux, IRIX, Solaris, HP-UX, AIX and FreeBSD operating systems. OpenSceneGraph is now well established as the world leading scene graph technology, used widely in the vis-sim, space, scientific, oilgas, games and virtual reality industries. 18

Demo Office demo... 19

Earth, Terrain, City Visualization Provided by osgearth, a geospatial SDK and terrain engine built on top of OpenSceneGraph Just create a simple XML file, point it at your map data, and go! Able to use various street map providers, satellite imaging providers, altitude data sources, both online and offline Data from online sources may be exported into a file suitable for offline use Scene may be annotated with various types of graphical objects Includes conversion between various geographical coordinate systems 20

Scenarios Terrains Urban environments Indoor environments Satellites 21

Visualization connectivity graph tx: 201, rx:540 mobile nodes statistics transmission range wireless transmissions 22

Demo More 3D demos... 23

Why Cows? The Boston Cow Parade and the OSG Cow: 24

The OMNeT++ API OK! How do I...? Basically, use the OpenSceneGraph API. You assemble an OSG scene graph in the model, and give it to OMNeT++ for display. The scene graph can be updated at runtime, and changes will be reflected in the display. OMNeT++ class: cosgcanvas wraps a scene graph, plus hints such as default camera position every module has a built-in cosgcanvas, created on demand additional cosgcanvas instances may be created The OSG viewer is part of the OMNeT++ user interface, Qtenv it is not directly accessible from models Model code should surround OSG-specific code with #ifdef HAVE_OSG 25

Example Code Glider demo: #include <osgdb/readfile> #include <omnetpp.h>... void DemoModule::initialize() { osg::node *scene = osgdb::readnodefile("glider.osgb"); cosgcanvas *osgcanvas = getparentmodule()->getosgcanvas(); osgcanvas->setscene(scene); // the scene graph osgcanvas->setclearcolor(cosgcanvas::color(0,0,64)); // hint } Boston demo: substitute "boston.earth" for "glider.osgb" add the following line: osgcanvas->setviewerstyle(cosgcanvas::style_earth); Everything else is achieved by manipulating the scene graph via the OSG API! 26

Thank you for your attention! Questions? 27