Home/libraries/developer/src/network_ip.cpp

Download Report

Transcript Home/libraries/developer/src/network_ip.cpp

QualNet
2014/05/13
602430017 尉遲仲涵
Outline
• Directory Structure
• QualNet Basic
• Message & Event
• QualNet simulation architecture
• Protocol Model Programming
–
–
–
–
Application Layer
Transport Layer
Network Layer
Queue & Scheduler
2
DIRECTORY STRUCTURE
3
Directory Structure
global headers
model sources &
headers
Qualnet kernel
binaries & libraries
4
Directory Structure
Directory
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.
5
QUALNET BASIC
6
Discrete Event Simulation
Handle Event
Take Action
Changing
Event Queue
event1
event2
…
eventN
System State
event
• Event
register
event
– arrival of packet
– periodic alarm
• Action
– sending packet
– updating system state
– starting/restarting timer
7
QualNet Protocol Stack
• Layer Based Architecture & Organization
• Events & Messages
– Events:
Essential Concepts
– Lifecycle
– Event Handling
– Packets
– Timers
– API:
Raw Message API
and
Layer Specific
8
Protocol Stack
• Layered architecture
• Data moves from
layer to layer
• APIs were used
• can skip layer when
data is transmitted
9
Layer Function
Application
Network
Link/MAC
traffic
generation
End-to-End
data
transmission
data
forwarding
link
transmission
App-level
routing
receive from
App, forward
to Network
queuing &
scheduling
between
Transport and
MAC layer
signal
propagation
model,
environments
model
include IP
layer function
path loss,
fading,
shadowing,
rely on
Transport
layer
Physical
Communication
Medium
Transport
bit level data
transmission
to/from
medium
signaling
between
nodes
10
How to send packet
Node 1 needs to send a packet to Node 2
message
Node 1
Packet Sent
Node 2
Event:
Packet Received
11
MESSAGE & EVENT
12
Message
• Events are implemented
using Message
– HOME/include/message.h
– HOME/include/main.h
affect
transmission
time
not affect
transmission
time
13
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
14
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
15
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()
16
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”.
17
Node
HOME/main/node.cpp
/partition.cpp
application.cpp
HOME/libraries/developer
/src/
app_cbr.cpp
transport.cpp
transport_udp.cpp
network.cpp
network_ip.cpp
routing_aodv.cpp
mac.cpp
mac_dot11.cpp
phy_connectivity.cpp
phy.cpp
phy_802_11.cpp
Protocols
Layers
A node with
• CBR application
• AODV routing
• 802.11 wireless
HOME/libraries/wireless/src/
18
QualNet EventQueue
MESSAGE
Node / Layer / Protocol / Event
QualNet Kernel
Which Node’s
Event?
node = 4
Node
Which Layer’s Event?
3
layerType
= Transport
Application
1
Transport
4
2
Which Protocol?
UDP
Which
Event?
call event
handler
function
protocolType
= UDP
Network
LINK/MAC
Physical
19
QUALNET SIMULATION
ARCHITECTURE
20
QualNet Simulator Architecture
• Initialization
• Event Handling
• Finalization
★ Each of these functions is performed hierarchically.
Layer
Node
Protocol
21
Protocol Life Cycle
Three 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
22
Protocol Life Cycle
QualNet
Initialization
Function
Event Handling:
Packets, timers
etc
Message (Packet or Timer) Processing
Function
• Modify State Variables
• Increment Local Statistics
QualNet
• Generate / Forward Packets
Finalization
Function
23
Initialization
• node creation & initialization
• initialization of each layer, protocol
HOME/main/partition.cpp
/application.cpp
/mac.cpp
/network.cpp
/node.cpp
/transport.cpp
24
Event Handling
• call a dispatcher function of appropriate
node, layer, protocol when a event
occurs
• handle & scheduling event, change
system states
25
Finalization
• call finalization function for each
protocol running at that layer
• print the statistics to output
• free all instances and terminate
simulation
26
2011.05.16.
Adding a Network Layer
Unicast Routing Protocol
27
How To …
28
29
Register Protocol Name
• HONE/include/network.h
30
Register Protocol
Administrative Distance value
• HOME/include/network.h
31
Defining Data Structure for
Protocol
• In user’s Protocol.h
–
–
–
–
Protocol parameters
Protocol state
Statistics variables
Routing table
AODV data structure in routing_aodv.h
32
Initialization Function Call
33
Network Layer Initialization
34
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
35
Event Dispatcher
36
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)
37
Registering Protocol Event Type
• All event types must be registered in
– HOME/include/api.h
38
Event Dispatcher of AODV
39
40
Modifying IP Function
• NetworkRoutingGetAdminDistance()
– definition of the priority of routing protocol
• HOME/libraries/developer/src/network_ip.cpp
41
Processing Routing Packets
• Define IP Protocol Number for user’s protocol
– HOME/libraries/developer/src/network_ip.h
42
• DeliverPacket()
– IP Protocol Number from IP header based
switching
– checking packet’s
• routing protocol type
• interface
– call routing protocol’s packet handler
function
43
AODV Protocol Packet Handler
44
2011.05.23.
Queuing Protocols
45
Data Structures
• HOME/include/if_queue.h
• QueueOperation
– lists of the different types of dequeue
operations
46
• PacketArrayEntry
– an entry in the array of stored messages
47
• 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
48
Interface Functions
• HOME/libraries/developers/src/if_queue.cpp
49
• 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
50
QUEUE_Setup Example
• Messenger Application Queue
– HOME/libraries/developers/src/app_messenger.h
/app_messenger.cpp
51
Queue Operations Example
52
Adding a New Queue Model
• a new queuing model derived from the base Queue Class
• additionally
– queue-specific parameters
– implementing interface functions
53
• 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
54
Example of RED Queue Model
• Data Structure
• Queue Configuration Parameters
55
• Reading Parameters from configuration file
– NetworkIpInitOutputQueueConfiguration
ReadRedConfigurationParameters
56
• ReadRedConfigurationParameters
57
• Deriving new Queue Class from base Queue Class
– inherited variables & interface functions from Queue Class
– additionally, model specific
• variables
• override interface functions
58
• Modifying
QUEUE_Setup
Function
59
Scheduler
60
Data Structure
• HOME/include/if_scheduler.h
• QueueData
– information for one Queue
61
• 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
62
Interface Functions
• HOME/libraries/developers/src/if_scheduler.cpp
63
• 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
64
SCHEDULER_Setup Example
• IP function
– HOME/libraries/developers/src/network_ip.h
/network_ip.cpp
65
Scheduler Operations Example
66
Adding a New Scheduler Model
• a new scheduler model derived from the base Scheduler Class
67
Example of StrictPriorityStat Model
• Data Structure
68
• Deriving new Scheduler Class from
base Scheduler Class
– inherited variables & interface functions from Scheduler Class
– additionally, model specific
• variables
• override interface functions
69
• Modifying SCHEDULER_Setup Function
70