QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event...

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

Transcript of QualNet 2014/05/13 602430017 尉遲仲涵. Outline Directory Structure QualNet Basic Message & Event...

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