70
QualNet 2014/05/13 602430017 尉尉尉尉

QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

Embed Size (px)

Citation preview

Page 1: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

QualNet

2014/05/13602430017 尉遲仲涵

Page 2: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

2

Outline

• Directory Structure

• QualNet Basic

• Message & Event

• QualNet simulation architecture

• Protocol Model Programming– Application Layer– Transport Layer– Network Layer– Queue & Scheduler

Page 3: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

3

DIRECTORY STRUCTURE

Page 4: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

4

Directory Structure

Qualnet kernel binaries & libraries

model sources & headers

global headers

Page 5: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

5

Directory StructureDirectory Contains

addons Components developed as custom addons for specific customers

bin Executable and other runtime files such as DLLs

contributed Models contributed by QualNet or EXata customers.

data Data files for the Wireless library: antenna configurations, modulation schemes and sample terrain

documentation User Guide, release notes, etc.

gui Graphical components including icons, Java class files, and GUI configuration.

include QualNet or EXata kernel header files.

interfaces Code to interface QualNet or EXata to 3rd party tools or external networks, such as HLA, STK, or IP networks.

kernel QualNet or EXata kernel objects used during the build process.

lib 3rd party software libraries used during the build process.

libraries Source code for model libraries such as Developer, Multimedia & Enterprise, & Wireless.

license_dir License files and license libraries required for the build process.

main Kernel source files and Makefiles.

scenarios Sample scenarios.

Page 6: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

6

QUALNET BASIC

Page 7: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

7

Discrete Event Simulation

• Event– arrival of packet– periodic alarm

• Action– sending packet– updating system state– starting/restarting timer

event1event2

…eventN

event

Event Queue

regis-ter

event

Handle Event Take Action

Changing System State

Page 8: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

8

QualNet Protocol Stack

• Layer Based Architecture & Organization• Events & Messages

– Events: Essential Concepts

– Lifecycle– Event Handling– Packets– Timers– API:

Raw Message API and Layer Specific

Page 9: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

9

Protocol Stack

• Layered architecture• Data moves from

layer to layer• APIs were used• can skip layer when

data is transmitted

Page 10: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

10

Layer FunctionApplication Transport Network Link/MAC Physical Communica-

tion Medium

traffic gen-eration

End-to-End data trans-mission

data for-warding

link trans-mission

bit level data transmis-sion to/from medium

signaling be-tween nodes

App-level routing

receive from App, for-ward to Network

queuing & scheduling between Transport and MAC layer

signal prop-agation model,environ-ments model

rely on Transport layer

include IP layer func-tion

path loss,fading,shadowing,

Page 11: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

11

How to send packet

Node 1

Node 2

Node 1 needs to send a packet to Node 2

Packet SentEvent:

Packet Received

message

Page 12: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

12

MESSAGE & EVENT

Page 13: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

13

Message

• Events are implemented using Message– HOME/include/message.h– HOME/include/main.h

affect trans-mission time

not affect transmission

time

Page 14: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

14

Message APIs

• HOME/include/message.h• HOME/main/message.cpp

– MESSAGE_Alloc– MESSAGE_Free– MESSAGE_PacketAlloc– MESSAGE_AddInfo– MESSAGE_AddHeader– MESSAGE_RemoveHeader– MESSAGE_GetLayer– MESSAGE_GetProtocol– MESSAGE_GetEvent– MESSAGE_Send

Page 15: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

15

Event Type

• Packet– exchange of data packet between layers or nodes– communication between entities at the same layer

• Timer– act as a trigger

• An event is identified by the following:– Node– Layer– Protocol– Event ID

Page 16: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

16

Packet Event

• to simulate transmission of packets across the network– using packet field of

Message structure– at each layer,

packet header is attached/removed

– to send packet to another layer, MESSAGE_Send()

Page 17: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

17

Timer Event

• periodic alarms for event scheduling• trigger• the event types are defined in

– HOME/include/api.h

★ The delay time 0 means “immediate event”.

Page 18: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

18

A node with• CBR application• AODV routing• 802.11 wireless

HOME/libraries/wireless/src/

HOME/libraries/devel-oper/src/

application.cpp

transport.cpp

network.cppnetwork_ip.cpp

mac.cpp

phy_connectivity.cpp

app_cbr.cpp

transport_udp.cpp

routing_aodv.cpp

mac_dot11.cpp

phy.cppphy_802_11.cpp

NodeHOME/main/node.cpp /partition.cpp

Layers P

roto

cols

Page 19: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

19

NodeWhich Layer’s Event?

QualNet Ker-nel

Which Node’s Event?

1

2

3

4

node = 4

QualNet EventQueue

Application

TransportWhich Protocol?

Network

LINK/MAC

Physical

layerType= Transport

UDPWhich Event?

protocolType= UDP

call event handler function

MESSAGENode / Layer / Protocol / Event

Page 20: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

20

QUALNET SIMULATION ARCHITECTURE

Page 21: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

21

QualNet Simulator Architec-ture

• Initialization• Event Handling• Finalization

★ Each of these functions is performed hierarchically.

Node

Layer

Proto-col

Page 22: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

22

Protocol Life CycleThree main functions that are called by Simulator:• Initialization

– Called at Time 0– Initialization of variables

• Event Processing– Called as needed– Creation – Scheduling– Handling

• Finalization– Called at end of simulation– Printing Statistics

Page 23: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

23

Protocol Life Cycle

Initialization Function

Message (Packet or Timer) Process-ing Function

FinalizationFunction

Event Han-dling:

Packets, timers etc

• Modify State Variables

• Increment Local Statistics

• Generate / Forward Pack-ets

QualNet

QualNet

Page 24: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

24

Initialization

• node creation & initialization• initialization of each layer, protocol

HOME/main/partition.cpp /application.cpp /mac.cpp /network.cpp /node.cpp /transport.cpp

Page 25: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

25

Event Handling

• call a dispatcher function of appro-priate node, layer, protocol when a event occurs

• handle & scheduling event, change system states

Page 26: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

26

Finalization

• call finalization function for each pro-tocol running at that layer

• print the statistics to output• free all instances and terminate sim-

ulation

Page 27: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

27

Adding a Network Layer Unicast Routing Protocol

2011.05.16.

Page 28: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

28

How To …

Page 29: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

29

Page 30: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

30

Register Protocol Name

• HONE/include/network.h

Page 31: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

31

Register Protocol Administrative Distance value

• HOME/include/network.h

Page 32: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

32

Defining Data Structure for Proto-col

• In user’s Protocol.h– Protocol parameters– Protocol state– Statistics variables– Routing table

AODV data structure in routing_aodv.h

Page 33: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

33

Initialization Function Call

Page 34: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

34

Network Layer Initialization

Page 35: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

35

IP callback functions

• Network Layer routing protocol interacts with IP to route packets and to handle protocol events.

• Routing protocol registers the functions with IP as part of initialization.

Home/libraries/developer/src/network_ip.cpp

Page 36: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

36

Event Dispatcher

Page 37: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

37

APIs for MAC Layer Communication

• APIs to communicate with MAC Layer for Network Layer Routing Protocols to handle an event(transmitting packets to a node’s peers using MAC Layer

services)

Page 38: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

38

Registering Protocol Event Type

• All event types must be registered in – HOME/include/api.h

Page 39: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

39

Event Dispatcher of AODV

Page 40: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

40

Page 41: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

41

Modifying IP Function

• NetworkRoutingGetAdminDistance()– definition of the priority of routing protocol

• HOME/libraries/developer/src/network_ip.cpp

Page 42: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

42

Processing Routing Packets

• Define IP Protocol Number for user’s pro-tocol– HOME/libraries/developer/src/network_ip.h

Page 43: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

43

• DeliverPacket()– IP Protocol Number from IP header

based switching– checking packet’s

• routing protocol type• interface

– call routing protocol’s packet handler function

Page 44: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

44

AODV Protocol Packet Handler

Page 45: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

45

Queuing Protocols2011.05.23.

Page 46: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

46

Data Structures

• HOME/include/if_queue.h

• QueueOperation– lists of the different types of dequeue

operations

Page 47: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

47

• PacketArrayEntry– an entry in the array of stored messages

Page 48: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

48

• Queue– the base class that is used to derive

specific queue classes– queue variables– interface functions for queue operations

– refer to Programmer’s Guide 4.4.7.1(p.207)Figure 4-99, Figure 4-100, Figure 4-101

Page 49: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

49

Interface Functions• HOME/libraries/developers/src/if_queue.cpp

Page 50: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

50

• QUEUE_Setup() create & initialize an object of– the base Queue class– a class derived from the base Queue class

– HOME/include/if_queue.h /libraries/developers/src/if_queue.cpp

Page 51: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

51

QUEUE_Setup Example• Messenger Application Queue

– HOME/libraries/developers/src/app_messenger.h

/app_messenger.cpp

Page 52: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

52

Queue Operations Example

Page 53: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

53

Adding a New Queue Model• a new queuing model derived from the base Queue Class• additionally

– queue-specific parameters– implementing interface functions

Page 54: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

54

• queue_myqueue.h– constant definitions– data structure definitions– class definition for new model derived from Queue Class– prototypes for additional interface functions

• queue_myqueue.cpp– include “if_queue.h”, “api.h”– functions to read parameters from configuration file– interface functions for myqueue model

Page 55: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

55

Example of RED Queue Model

• Data Structure

• Queue Configuration Parameters

Page 56: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

56

• Reading Parameters from configuration file– NetworkIpInitOutputQueueConfiguration

ReadRedConfigurationParameters

Page 57: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

57

• ReadRedConfigurationParameters

Page 58: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

58

• Deriving new Queue Class from base Queue Class– inherited variables & interface functions from Queue

Class– additionally, model specific

• variables• override interface functions

Page 59: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

59

• Modifying QUEUE_Setup Function

Page 60: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

60

Scheduler

Page 61: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

61

Data Structure

• HOME/include/if_scheduler.h• QueueData

– information for one Queue

Page 62: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

62

• Scheduler– the base class that is used to derive specific scheduler

classes– scheduler variables– interface functions for scheduler operations

– refer to Programmer’s Guide 4.4.8.1(p.225)Figure 4-110, Figure 4-111, Figure 4-112

Page 63: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

63

Interface Functions• HOME/libraries/developers/src/if_scheduler.cpp

Page 64: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

64

• SCHEDULER_Setup() create & initialize an object of– the base Scheduler class– a class derived from the base Scheduler class

– HOME/include/if_scheduler.h /libraries/developers/src/if_scheduler.cpp

Page 65: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

65

SCHEDULER_Setup Example• IP function

– HOME/libraries/developers/src/network_ip.h

/network_ip.cpp

Page 66: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

66

Scheduler Operations Example

Page 67: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

67

Adding a New Scheduler Model• a new scheduler model derived from the base Scheduler

Class

Page 68: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

68

Example of StrictPriorityStat Model

• Data Structure

Page 69: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

69

• Deriving new Scheduler Class from base Scheduler Class– inherited variables & interface functions from Scheduler

Class– additionally, model specific

• variables• override interface functions

Page 70: QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event QualNet simulation architecture Protocol Model Programming

70

• Modifying SCHEDULER_Setup Function