QualNet - PowerPoint PPT Presentation

qualnet n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
QualNet PowerPoint Presentation
play fullscreen
1 / 70
QualNet
228 Views
Download Presentation
essien
Download Presentation

QualNet

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. QualNet 2014/05/13 602430017 尉遲仲涵

  2. Outline • Directory Structure • QualNet Basic • Message & Event • QualNet simulation architecture • Protocol Model Programming • Application Layer • Transport Layer • Network Layer • Queue & Scheduler

  3. Directory structure

  4. Directory Structure global headers model sources & headers Qualnet kernel binaries & libraries

  5. Directory Structure

  6. qualnet basic

  7. Discrete Event Simulation Event Queue event1 • Event • arrival of packet • periodic alarm • Action • sending packet • updating system state • starting/restarting timer event2 … eventN register event event

  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

  9. Protocol Stack • Layered architecture • Data moves from layer to layer • APIs were used • can skip layer whendata is transmitted

  10. Layer Function

  11. How to send packet Node 1 needs to send a packet to Node 2 message Node 1 Node 2 Event: Packet Received Packet Sent

  12. Message & event

  13. Message • Events are implemented using Message • HOME/include/message.h • HOME/include/main.h affect transmission time not affect transmission time

  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

  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

  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()

  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”.

  18. A node with • CBR application • AODV routing • 802.11 wireless HOME/main/node.cpp /partition.cpp Node HOME/libraries/developer/src/ application.cpp app_cbr.cpp transport.cpp transport_udp.cpp Protocols Layers network.cpp network_ip.cpp routing_aodv.cpp mac.cpp mac_dot11.cpp phy.cpp phy_802_11.cpp phy_connectivity.cpp HOME/libraries/wireless/src/

  19. QualNetEventQueue QualNet Kernel Which Node’s Event? MESSAGE Node / Layer / Protocol / Event node = 4 Node Which Layer’s Event? layerType = Transport 3 Application 1 Transport Which Protocol? 4 2 UDP Which Event? protocolType = UDP call event handler function Network LINK/MAC Physical

  20. qualnet simulation architecture

  21. QualNet Simulator Architecture • Initialization • Event Handling • Finalization ★ Each of these functions is performed hierarchically. Node Layer Protocol

  22. 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

  23. Protocol Life Cycle QualNet Event Handling: Packets, timers etc Initialization Function Message (Packet or Timer) Processing Function • Modify State Variables • Increment Local Statistics • Generate / Forward Packets QualNet FinalizationFunction

  24. Initialization • node creation & initialization • initialization of each layer, protocol • HOME/main/partition.cpp • /application.cpp • /mac.cpp • /network.cpp • /node.cpp • /transport.cpp

  25. Event Handling • call a dispatcher function of appropriate node, layer, protocol when a event occurs • handle & scheduling event, change system states

  26. Finalization • call finalization function for each protocol running at that layer • print the statistics to output • free all instances and terminate simulation

  27. 2011.05.16. Adding a Network Layer Unicast Routing Protocol

  28. How To …

  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. Modifying IP Function • NetworkRoutingGetAdminDistance() • definition of the priority of routing protocol • HOME/libraries/developer/src/network_ip.cpp

  40. Processing Routing Packets • Define IP Protocol Number for user’s protocol • HOME/libraries/developer/src/network_ip.h

  41. DeliverPacket() • IP Protocol Number from IP header based switching • checking packet’s • routing protocol type • interface • call routing protocol’s packet handler function

  42. AODV Protocol Packet Handler

  43. 2011.05.23. Queuing Protocols

  44. Data Structures • HOME/include/if_queue.h • QueueOperation • lists of the different types of dequeue operations

  45. PacketArrayEntry • an entry in the array of stored messages

  46. 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

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

  48. 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