* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download QualNet tutorial 1
Survey
Document related concepts
Point-to-Point Protocol over Ethernet wikipedia , lookup
Extensible Authentication Protocol wikipedia , lookup
Server Message Block wikipedia , lookup
SIP extensions for the IP Multimedia Subsystem wikipedia , lookup
Multiprotocol Label Switching wikipedia , lookup
IEEE 802.1aq wikipedia , lookup
Airborne Networking wikipedia , lookup
Wake-on-LAN wikipedia , lookup
Cracking of wireless networks wikipedia , lookup
Computer network wikipedia , lookup
Deep packet inspection wikipedia , lookup
Zero-configuration networking wikipedia , lookup
Internet protocol suite wikipedia , lookup
Recursive InterNetwork Architecture (RINA) wikipedia , lookup
Transcript
QualNet Tutorial Yi Zheng Contents 1 Introduction 2 Using QualNet 3 4 2 Writing protocols in QualNet Example QualNet Part I Introduction 3 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 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 Introduction Directory Structure 6 addons bin data documentation gui include interfaces kernel lib libraries license_dir main scenarios Components developed as custom add-on modules Executable and other runtime files Data files for the Wireless Model Library User’s Guide, Release Notes, etc. Graphical components QualNet kernel header files Code to interface QualNet with third party tools QualNet kernel objects used in the build process Third party libraries used in the build process Source code for models in QualNet model libraries License files required for the build process Kernel source files and Makefiles Sample scenarios 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 QualNet Part II Using QualNet 8 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 Configuration File (2) EXPERIMENT-NAME default Name of experiment. Results are written to default.stat. SIMULATION-TIME SEED 1 15M 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 Configuration File (3) NODE-PLACEMENT GRID UNIFORM/GRID/RANDOM/FILE 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 Configuration File (4) ROUTING-PROTOCOL AODV Unicast routing protocol MULTICAST-PROTOCOL Multicast routing protocol Layer Statistics 12 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) SPTM 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 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 14 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. 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 Tip More Information Read manuals in $QUALNET_HOME/documents Read source codes Visit community forums • http://www.scalable-networks.com/support/forums 16 QualNet Part III Writing protocols in QualNet 17 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 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 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 Writing Protocols Example : Simplified routing information protocol (SRIP) Table-driven, distance vector protocol Periodic route update Will be Explained in Part IV 21 Writing Protocols Add your routing protocol to QualNet Let QualNet know it is a network layer protocol • Modify $QUALNET_HOME/include/network.h – – – – – – – – – – – – – – 22 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; Writing Protocols Add your routing protocol to QualNet Let IP module know it is an IP protocol • Modify libraries/developer/src/network_ip.h – – – – – – – – – 23 // // 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 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 – – – – – – – – 24 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> : : #include “routing_srip.h" //InsertPatch HEADER_FILES 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 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() – – – – – – – – – 26 switch (msg->protocolType) { : case ROUTING_PROTOCOL_SRIP: { SripHandleProtocolEvent(node, msg); break; } //InsertPatch NETWORK_IP_LAYER : } 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() – – – – – – – – – 27 switch (ipProtocolNumber) { : case IPPROTO_SRIP: { SripHandleProtocolPacket(node,msg, sourceAddress); break; } //InsertPatch NETWORK_HANDLE_PACKET : } 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() – – – – – – – – – 28 switch (NetworkIpGetUnicastRoutingProtocolType(node, i)) { : case ROUTING_PROTOCOL_SRIP: { SripFinalize(node); break; } //InsertPatch FINALIZE_FUNCTION : } 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 QualNet Part IV Example: SRIP 30