qualnet tutorial

31
Yi Zheng QualNet Tutorial

Upload: kermit-mcfadden

Post on 02-Jan-2016

93 views

Category:

Documents


0 download

DESCRIPTION

QualNet Tutorial. Yi Zheng. 1. 2. 3. 4. Introduction. Writing protocols in QualNet. Example. Using QualNet. Contents. QualNet. Part I Introduction. Introduction. What’s QualNet? Commercial derivative of GlomoSim Rapid prototyping of protocols - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: QualNet Tutorial

Yi Zheng

QualNet Tutorial

Page 2: QualNet Tutorial

Contents

Introduction1

Using QualNet2

Writing protocols in QualNet3

Example4

2

Page 3: QualNet Tutorial

QualNet

3

Part IIntroduction

Page 4: QualNet Tutorial

Introduction

What’s QualNet? Commercial derivative of GlomoSim Rapid prototyping of protocols Comparative performance evaluation of alternative

protocols at each layer Built-in measurements on each layer Modular, layered stack design Standard API for composition of protocols across

different layers Scalability via support for parallel execution GUI Tools for system/protocol modeling

4

Page 5: QualNet Tutorial

Introduction

Installation Make a local copy of QualNet in your home directory

• % mkdir ~/qualnet

• % cp –r /cs/local/packages/qualnet/4.0 ~/qualnet

Set environment variables in ~/.cshrc• setenv QUALNET_HOME ~/qualnet/4.0

• setenv PATH ${PATH} :${QUALNET_HOME}/bin

Test installation• % cd ~/qualnet/4.0/bin

• % qualnet default.config

5

Page 6: QualNet Tutorial

Introduction

Directory Structure addons Components developed as custom add-on modules bin Executable and other runtime files data Data files for the Wireless Model Library documentation User’s Guide, Release Notes, etc. gui Graphical components include QualNet kernel header files interfaces Code to interface QualNet with third party

tools kernel QualNet kernel objects used in the build process lib Third party libraries used in the build process libraries Source code for models in QualNet model libraries license_dir License files required for the build process main Kernel source files and Makefiles scenarios Sample scenarios

6

Page 7: QualNet Tutorial

Introduction

Simulation experiment life cycle Startup

• Read configuration files

• Initialize wireless environment

• Create/initialize nodes Execution

• Execute events Shutdown

• Finalize nodes

• Produce statistics files

7

Page 8: QualNet Tutorial

QualNet

8

Part IIUsing QualNet

Page 9: QualNet Tutorial

Configuration File (1)

Configuration files Plain-text explanation for configuration file

• $QUALNET_HOME/scenarios/default/default.config Global Parameters

• Experiment name

• Simulation time

• Coordinate system and terrain

• Random seed Topology and subnets Layer/Protocol related parameters

9

Page 10: QualNet Tutorial

Configuration File (2)

EXPERIMENT-NAME default Name of experiment. Results are written to default.stat.

SIMULATION-TIME 15M SEED 1

Value used to seed the random number generator.

COORDINATE-SYSTEM CARTESIAN TERRAIN-DIMENSIONS (1500, 1500)

Cartesian xy terrain dimensions in meters

SUBNET N16-1.0 { 1 thru 30 } 30 nodes whose IP addresses range from 0.0.1.1 to 0.0.1.30 Format: N<# host bits>-<address with front end 0’s omitted> N16-1.0 allows hosts with IP address numbered from 0.0.1.1 through 0.0.1.65534, it is equivalent to N16-0.0.1.0

10

Page 11: QualNet Tutorial

Configuration File (3)

NODE-PLACEMENT UNIFORM/GRID/RANDOM/FILE

GRID RANDOM UNIFORM

MULTICASTGROUPFILE ./default.member multicast membership file See $QUALNET_HOME/scenarios/default/default.member for more details.

APPCONFIGFILE ./default.app Specifies a file with a list of apps/traffic generators to run CBR <src> <dest> <items to send> <size> <interval> <start time> <end time> See $QUALNET_HOME/scenarios/default/default.app for more details.

11

Page 12: QualNet Tutorial

Configuration File (4)

ROUTING-PROTOCOL AODV Unicast routing protocol

MULTICAST-PROTOCOL SPTM Multicast routing protocol

Layer Statistics APPLICATION-STATISTICS (YES|NO) TCP-STATISTICS (YES|NO) UDP-STATISTICS (YES|NO) ROUTING-STATISTICS (YES|NO) NETWORK-LAYER-STATISTICS (YES|NO) QUEUE-STATISTICS (YES|NO) MAC-LAYER-STATISTICS (YES|NO) PHY-LAYER-STATISTICS (YES|NO) MOBILITY-STATISTICS (YES|NO)

12

Page 13: QualNet Tutorial

Using QualNet

Step 1: Prepare config files for your protocol

Step 2: Run QualNet on the config files

Step 3: Examine the output statistics file Use script language (perl/awk) to process it.

Step 4: Use plotting tools (gnuplot) to create graphs from above results.

13

Page 14: QualNet Tutorial

Using QualNet

Find fast computers in our department Checkout /proc/cpuinfo, /proc/meminfo, etc. Use “top” to check no other people is using that computer

Some new(fast) computers cse2017-pc01 ~ cse2017-pc12: E8400 3G 6M cache cse2027-pc01 ~ cse2027-pc08: E8400 cse2023-pc01 ~ cse2023-pc08: E8400 jun01 ~ jun24: E6750 2.66G 4M cache navy Don’t run QualNet on Indigo/Red Only one process in one computer. Our QualNet license only supports 30 processes simultaneously.

14

Page 15: QualNet Tutorial

Using QualNet

Use the powerful tool: screen

a terminal multiplexer that allows a user to access multiple separate terminal sessions inside a single terminal window.

allows the user to start applications from one computer, and then reconnect from a different computer and continue using the same application without having to restart it.

15

Page 16: QualNet Tutorial

Tip

More Information

Read manuals in $QUALNET_HOME/documents

Read source codes

Visit community forums• http://www.scalable-networks.com/support/forums

16

Page 17: QualNet Tutorial

QualNet

Part IIIWriting protocols in QualNet

17

Page 18: QualNet Tutorial

Writing Protocols

Message

A message is a unit defining an interaction between protocols and between nodes.

Two types of messages• Packets used for communication between nodes

• Timers allow protocols to schedule events in a future time

18

Page 19: QualNet Tutorial

Writing Protocols

MESSAGE_Alloc() Allocate a message and provide it with standard event, layer,

protocol info

MESSAGE_PacketAlloc() Allocate space for the packet within the message

MESSAGE_InfoAlloc() Allocate additional user-specified space for optional information

about the event (info field)

MESSAGE_Send() Send the message as an event to the specified layer

MESSAGE_Free() Free the message, once it has reached its final destination

19

Page 20: QualNet Tutorial

Writing Protocols

Implement five main functions in routing protocol Initialization function

• Create an instance of the protocol• Read configuration parameters• Initialize the state variables• register the router function • Schedule a timer event

Packet/Event handling function• Modify state variables• Generate/forward packets• Process packet/event based on packet/event type

Router function • Determine the next hop and outgoing interface for the packet

Finalization function• Print statistics

20

Page 21: QualNet Tutorial

Writing Protocols

Example : Simplified routing information protocol (SRIP)

Table-driven, distance vector protocol

Periodic route update

Will be Explained in Part IV

21

Page 22: QualNet Tutorial

Writing Protocols

Add your routing protocol to QualNet Let QualNet know it is a network layer protocol

• Modify $QUALNET_HOME/include/network.h– typedef enum

– {

– NETWORK_PROTOCOL_IP = 0,

– NETWORK_PROTOCOL_MOBILE_IP,

– :

– :

– ROUTING_PROTOCOL_IGRP,

– ROUTING_PROTOCOL_SRIP,

– //InsertPatch ROUTING_PROTOCOL_TYPE

– :

– ROUTING_PROTOCOL_ALL,

– ROUTING_PROTOCOL_NONE

– }

– NetworkRoutingProtocolType;

22

Page 23: QualNet Tutorial

Writing Protocols

Add your routing protocol to QualNet Let IP module know it is an IP protocol

• Modify libraries/developer/src/network_ip.h– //

– // IP protocol numbers for network- and transport-layer protocols.

– //

– #define IPPROTO_ICMP 1

– #define IPPROTO_IGMP 2

– :

– #define IPPROTO_DVMRP 200

– #define IPPROTO_SRIP 234

– //InsertPatch ROUTING_IPPROTO

23

Page 24: QualNet Tutorial

Writing Protocols

Add your routing protocol to QualNet Let IP module recognize the five entry functions

• Modify libraries/developer/src/network_ip.cpp

• Include routing_srip.h– #include <stdio.h>

– #include <stdlib.h>

– #include <string.h>

– #include <math.h>

– :

– :

– #include “routing_srip.h"

– //InsertPatch HEADER_FILES

24

Page 25: QualNet Tutorial

Writing Protocols

Add your routing protocol to QualNet Have IP initialize SRIP if specified in the configuration

file• Modify libraries/developer/src/network_ip.cpp, function

NetworkIpInit()– else if (strcmp(protocolString, "SRIP") == 0) {

NetworkIpAddUnicastRoutingProtocolType(node, ROUTING_PROTOCOL_SRIP, i);

if (!NetworkIpGetRoutingProtocol(node, ROUTING_PROTOCOL_SRIP)) {

SripInit(node,(SripData **) &ip->interfaceInfo[i]->routingProtocol,nodeInput, i);

}

else {

NetworkIpUpdateUnicastRoutingProtocolAndRouterFunction(node, ROUTING_PROTOCOL_SRIP, i);

}

– }

25

Page 26: QualNet Tutorial

Writing Protocols

Add your routing protocol to QualNet When the network layer receives an event for SRIP,

dispatch it to SRIP's event handling function• Modify libraries/developer/src/network_ip.cpp, function

NetworkIpLayer()– switch (msg->protocolType)

– {

– :

– case ROUTING_PROTOCOL_SRIP:

– {

SripHandleProtocolEvent(node, msg);

break;

– }

– //InsertPatch NETWORK_IP_LAYER

– :

– }

26

Page 27: QualNet Tutorial

Writing Protocols

Add your routing protocol to QualNet When IP receives an SRIP route advertisement

packet, dispatch it to SRIP's packet handling function• Modify libraries/developer/src/network_ip.cpp, function

DeliverPacket() – switch (ipProtocolNumber)

– {

– :

– case IPPROTO_SRIP:

– {

SripHandleProtocolPacket(node,msg, sourceAddress);

break;

– }

– //InsertPatch NETWORK_HANDLE_PACKET

– :

– }

27

Page 28: QualNet Tutorial

Writing Protocols

Add your routing protocol to QualNet Call SRIP's finalizing function when IP is terminating

• Modify libraries/developer/src/network_ip.cpp, function NetworkIpFinalize()

– switch (NetworkIpGetUnicastRoutingProtocolType(node, i))

– {

– :

– case ROUTING_PROTOCOL_SRIP:

– {

SripFinalize(node);

break;

– }

– //InsertPatch FINALIZE_FUNCTION

– :

– }

28

Page 29: QualNet Tutorial

Writing Protocols

Compile QualNet with the new code Modify libraries/developer/src/Makefile-common

– DEVELOPER_SRCS = \

– :

– $(DEVELOPER_SRCDIR)/routing_srip.cpp \

– :

Rebuild QualNet• cd $QUALNET_HOME/main• make

29

Page 30: QualNet Tutorial

QualNet

Part IVExample: SRIP

30

Page 31: QualNet Tutorial