Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Network Simulation Using GlomoSim Presented By Akarapon Kunpisut.

Similar presentations


Presentation on theme: "1 Network Simulation Using GlomoSim Presented By Akarapon Kunpisut."— Presentation transcript:

1 1 Network Simulation Using GlomoSim Presented By Akarapon Kunpisut

2 2 Outline Introduction to Glomosim Glomosim Structure Editing the code Installation Conclusion

3 3 Introduction 3 methods to analysis network protocol  Mathematical Analysis  Network Simulator (NS, GloMoSim, …)  Test bed

4 4 Network Simulator (GloMoSim) Requires 2 components  GloMoSim (Global Mobile Information Systems Simulation Library) Network Simulation Environment  Parsec (Parallel Simulation Environment for Complex Systems) C-Base Simulation Language

5 5 GloMoSim (Scalable Mobile Network Simulator ) a scalable simulation environment supports Wire & Wireless network layered approach Standard APIs parallel discrete-event simulation

6 6 Parsec C-based simulation language sequential and parallel execution discrete-event simulation models can be used as a parallel programming language. developed by the Parallel Computing Laboratory at UCLA

7 7 GloMoSim Simulation Layers RTP, TCP, UTP RSVP IP, Mobile IP Wireless Network Layer Clustering (optional) Data Link MAC Radio Model Propagation Model/Mobility Model ApplicationTraffic Generator VC Connection Management Call Acceptance Control, Rate Control Packet Store / Forward Congestion Control, Rate Control Multicast Routing -------------- QoS Routing

8 8 Models Currently Available in GloMoSim Application: TCPLIB (telnet, ftp), CBR (Constant Bit Rate traffic), Replicated file system, HTTP Transport: TCP (Free BSD), UDP, NS TCP (Tahoe) and others Unicast Routing: AODV, Bellman-Ford, DSR, Fisheye, Flooding, LAR (Scheme 1), NS DSDV, OSPF, WRP MAC Layer: CSMA, FAMA, MACA, IEEE 802.11 Radio: Radio with and without capture capacity Propagation: Free Space, Rayleigh, Ricean, SIRCIM Mobility: Random Waypoint, Random Drunken, ECRV, Group Mobility

9 9 collection of network nodes each node has it’s own protocol stack parameters and statistics GloMoSim Layered Architecture struct glomo_node_str{ double position_x; GlomoMac macData[xxx]; GlomoNetwork NetworkData; … } GlomoNode; Include\api.h

10 10 Data Structure for a Layer each layer has its own data structure base on protocol in the layer struct glomo_mac_str { MAC_PROTOCOL macProtocol; int interfaceIndex; BOOL macStats; … void *macVar; } GlomoMac; mac\mac.h

11 11 Layer Interaction with Events Packets & Message going through layers are annotated with information that simulate inter-layer parameter passing

12 12 Scheduling Events Two types of Message  Non-Packet Messages Inter-layer event messages Self scheduled (timer) events  Packets/ Cell Messages Inter-node packets Inter-layer packets

13 13 MAC Radio RadioAccnoiseLayer() GLOMO_MacReceiveRadioS tatusChangeNotification() Inter-layer event messages Mac802_11StartTimer() GLOMO_MacLayer() Non-packet Message Self scheduled (timer) events MSG_MAC_TimerExpired typedef enum { RADIO_IDLE, RADIO_SENSING, RADIO_RECEIVING, RADIO_TRANSMITTING } RadioStatusType;

14 14 MAC Radio Layer Packet/cell Message Network NetworkIpSend PacketToMacLayer() GLOMO_MacNetwork LayerHasPacketToSend() Mac802_11TransmitDataFrame() Inter-layer packets GLOMO_RadioStartTransmittingPacket() Add Header Inter-layer packets Radio Layer Network MAC GLOMO_MacReceive PacketFromRadio () RadioAccnoiseLayer () Inter-layer packets NetworkIpReceive PacketFromMacLayer() Mac802_11ProcessFrame() Remove Header Inter-layer packets Inter-Node Packet

15 15 Network MAC GLOMO_MacReceive PacketFromRadio () RadioAccnoiseLayer () Inter-layer packets NetworkIpReceive PacketFromMacLayer() Mac802_11ProcessFrame() Remove Header Inter-layer packets Radio Layer MAC Radio Layer Packet/cell Message Network NetworkIpSend PacketToMacLayer() GLOMO_MacNetwork LayerHasPacketToSend() Mac802_11TransmitDataFrame() Inter-layer packets GLOMO_RadioStartTransmittingPacket() RadioAccnoiseLayer () Add Header Inter-layer packets (Network Layer Packet) (MAC Header Frame) + (Network Layer Packet) Inter-Node Packet /* Data frames. */ Header + Data typedef struct M802_mac_frame { M802_11FrameHdr hdr; char payload[ MAX_NW_PKT_SIZE]; } M802_11_MacFrame; typedef struct _Mac802_11FrameHdr {unsigned short frameType; char Padding1[2]; int duration; NODE_ADDR destAddr; NODE_ADDR sourceAddr; … } M802_11FrameHdr;

16 16 Data Structure for Layer Interaction Enumerate event type enum { /* for Channel layer */ MSG_CHANNEL_FromChannel, MSG_CHANNEL_FromRadio, /* Message Types for MAC layer */ MSG_MAC_FromNetwork, MSG_MAC_TimerExpired, … /* Default Message */ MSG_DEFAULT }; include\structmsg.h

17 17 Data Structure for Layer Interaction Message Structure (general information) struct message_str { short layerType; // Layer will received message short protocolType; short eventType; char* packet; char* payLoad; … } message; include\message.h

18 18 Data Structure for Layer Interaction Message header (for packet) typedef struct _Mac802_11LCtrlFrame { unsigned short frameType; char Padding[2]; int duration; NODE_ADDR destAddr; NODE_ADDR sourceAddr; char FCS[4]; } M802_11LongControlFrame; \mac\802_11.h

19 19 Message Parameters Message Destination:  Node ID  Layer in that node  Protocol in that layer (optional)  Instance (Interface) optional Message Event Type Event Specific Parameters called info  Both packets and non-packet messages Packet payload Current header position

20 20 Scheduling an Event Allocate the GloMoSim Message:  Message* msg = GLOMO_MsgAlloc(node, MyID, MyLayer, MyProtocol, MSG_LAYER_PROTO_MY_EVENT); Set the Event Specific Information:  MyEventInfoType* MyEventInfo;  GLOMO_MsgInfoAlloc(node, msg, sizeof(MyEventInfoType));  MyEventInfo-> MyFirstParameter =1;  … Schedule the Event:  GLOMO_MsgSend(node, message, MyChosenDelay);

21 21 void Mac802_11StartTimer( GlomoNode *node, GlomoMac802_11 *M802, clocktype timerDelay) { Message *newMsg; M802->timerSequenceNumber++; newMsg = GLOMO_MsgAlloc(node, GLOMO_MAC_LAYER, MAC_PROTOCOL_802_11, MSG_MAC_TimerExpired); GLOMO_MsgSetInstanceId(newMsg, M802->myGlomoMac- >interfaceIndex); GLOMO_MsgInfoAlloc(node, newMsg, sizeof(M802- >timerSequenceNumber)); *((int*)(newMsg->info)) = M802->timerSequenceNumber; GLOMO_MsgSend(node, newMsg, timerDelay); } Scheduling an Event (Example) Allocate the GloMoSim Message Set the Event Specific Information Schedule the Event Destination Layer

22 22 Message Scheduling GLOMO_MsgSend(node, *msg, delay) GLOMO_CallLayer( node, msg) GLOMO_RADIO_LAYER: GLOMO_RadioLayer(node, msg) GLOMO_MAC_LAYER: GLOMO_MacLayer(node, msg); … GLOMO_APP_LAYER: GLOMO_AppLayer(node, msg); if delay == 0 (msg)->layerType

23 23 Processing Message Events void Mac802_11Layer(GlomoNode *node, int interfaceIndex, Message *msg) { switch (msg->eventType) { case MSG_MAC_TimerExpired) Mac802_11HandleTimeout(node, M802); case MSG_MAC_TimerExpired_PCF) Mac802_11HandleTimeout_PCF(node, M802); … } GLOMO_MsgFree(node, msg); }

24 24 Transmitting Packet Allocate Message  Message* pktToRadio = GLOMO_MsgAlloc(node, 0, 0, 0); Set Header Information  hdr.frameType = M802_11_DATA;  hdr.sourceAddr = node->nodeAddr;  hdr.destAddr = destAddr;  … Allocate Packet & Set information  GLOMO_MsgPacketAlloc(node, pktToRadio, topPacket- >packetSize);  memcpy(pktToRadio->packet, topPacket->packet, topPacket->packetSize);

25 25 Transmitting Packet (cont’d) Add Header & Set information  GLOMO_MsgAddHeader(node, pktToRadio, sizeof(M802_11FrameHdr) );  memcpy(pktToRadio->packet, &hdr, sizeof(M802_11FrameHdr)); Transmit Packet  StartTransmittingPacket(node, M802, pktToRadio, M802_11_DIFS);

26 26 Processing Packet Mac802_11ReceivePacketFromRadio(){ if (hdr->destAddr == node->nodeAddr) { switch (hdr->frameType) { case M802_11_RTS: … case M802_11_DATA: } else if (hdr->destAddr == ANY_DEST){ switch (hdr->frameType) { case M802_11_DATA: Mac802_11ProcessFrame(node, M802, msg); … }

27 27 Message Function GLOMO_MsgAlloc(node, destId, layer, protocol, enent_type); Functions to retrieve and set parameters individually. GLOMO_MsgInfoAlloc(node, msg, info_size); GLOMO_MsgPacketAlloc(node, msg, packet_size); GLOMO_MsgAddHeader(node, msg, header_size); GLOMO_MsgRemoveHeader(node, msg, header_size); GLOMO_MsgSend(node, msg, delay); GLOMO_MsgFree(node, msg); GLOMO_MsgCopy(node, msg);

28 28 Editing your code

29 29 Basic Structure /doc contains the documentation /scenarios contains directories of various sample configuration topologies /main contains the basic framework design /bin for executable and input/output files /include contains common include files

30 30 Basic Structure (cont’d) /application contains code for the application layer /transport contains the code for the transport layer /network contains the code for the network layer /mac contains the code for the mac laye /radio contains the code for the physical layer

31 31 Configuration file (\bin\ Config.in) General Simulation Parameter Scenario Topology & Mobility Radio & Propagation Model MAC Protocol Routing Protocol Transport Protocol Application (Traffic Generators) Statistical & GUI options

32 32 Configuration file (Example) [config.in] NUMBER-OF-NODES3 NODE-PLACEMENTFILE NODE-PLACEMENT-FILE./nodes.input #NODE-PLACEMENTUNIFORM MAC-PROTOCOL802.11 NETWORK-PROTOCOLIP ROUTING-PROTOCOLBELLMANFORD APP-CONFIG-FILE./app.conf RADIO-TYPE RADIO-ACCNOISE [nodes.input] 0 0 (20.2, 0.9, 0.11) 1 0 (80.4, 90.8, 0.17) 2 0 (60.7, 30.4, 0.10) [app.conf] #CBR # CBR 0 1 10 512 1S 0S 0S

33 33 In the directory Application MAC Radio Transport … mac.pc 802_11.h 802_11.pc cama.h csma.pc (.h) Basic Definition of functions and data objects (.pc) Actual Functions (Layer.pc) Layer Interface

34 34 Adding a model or protocol to a layer Initialization Function Finalization Function Simulation Event Handling Function GLOMOPartition() Upper Layer Lower Layer Needs 3 functions

35 35 Data structure in specific layer typedef struct glomo_mac_802_11_str { GlomoMac* myGlomoMac; int state; /* Statistics collection variables. */ long pktsSentUnicast; … } GlomoMac802_11;

36 36 Initialization Function void Mac802_11Init (GlomoNode *node, int interfaceIndex, const GlomoNodeInput *nodeInput) { GlomoMac802_11 *M802 = (GlomoMac802_11*) checked_pc_malloc(sizeof(GlomoMac802_11)); M802->myGlomoMac = node->macData[interfaceIndex]; M802->myGlomoMac->macVar = (void *)M802; // Init Data here M802->pktsSentUnicast = 0; }

37 37 Event Handling Function void Mac802_11Layer (GlomoNode *node, int interfaceIndex, Message *msg) { int timerSequenceNumber = *(int*)(msg->info); // handle simulation “message” Mac802_11HandleTimeout(node, M802); GLOMO_MsgFree(node, msg); }

38 38 Finalization Function void Mac802_11Finalize (GlomoNode *node, int interfaceIndex) { GlomoMac802_11 *M802 = (GlomoMac802_11*)node->macData[interfaceIndex]->macVar; if (M802->myGlomoMac->macStats == TRUE) { Mac802_11PrintStats(node, M802); } sprintf(buf, "UCAST (non-frag) pkts sent " "to chanl: %ld", M802->pktsSentUnicast); GLOMO_PrintStat(node, "802.11", buf); }

39 39 Obtaining the information Select what layer you want the statistics for APPLICATION-STATISTICS YES TCP-STATISTICS NO NETWORK-LAYER-STATISTICS YES MAC-LAYER-STATISTICS YES RADIO-LAYER-STATISTICS NO CHANNEL-LAYER-STATISTICS NO MOBILITY-STATISTICS NO config.in

40 40 Sifting through the Data Sample Output from 1 node: Glomo.stat Node: 0, Layer: 802.11, pkts from network: 0 Node: 0, Layer: 802.11, BCAST pkts sent to chanl: 69 Node: 0, Layer: NetworkIp, Number of Packets Routed For Another Node: 0 Node: 0, Layer: NetworkIp, Number of Packets Delivered To this Node: 4549 Node: 1, Layer: 802.11, pkts from network: 0 Node: 1, Layer: 802.11, UCAST (non-frag) pkts sent to chanl: 2499 Node: 1, Layer: 802.11, BCAST pkts sent to chanl: 67 …

41 41 Sifting through the Data Stats Printed for Each Node You’ll Probably need to add Statistics

42 42 Adding Stats Go through Header and add for Statistic Variables typedef struct glomo_mac_802_11_str { GlomoMac* myGlomoMac; int state; /* Statistics collection variables. */ long pktsSentUnicast; … <---------- Add Stat here !!! } GlomoMac802_11; 802_11.h

43 43 Adding Stats Initialize your extra stat to zero in the initialize function void Mac802_11Init(){ M802->myGlomoMac = node->macData[interfaceIndex]; M802->state = M802_11_S_IDLE; /* initial Statistic Variable to zero */ M802->pktsSentUnicast = 0; M802->pktsSentBroadcast = 0; M802->pktsGotUnicast = 0; … }

44 44 Adding Stats Add code to increment your counter void Mac802_11ProcessFrame(){ hdr = (M802_11FrameHdr *)frame ->packet; if (hdr->destAddr == ANY_DEST) { M802->pktsGotBroadcast++; } else{ M802->pktsGotUnicast++; … GLOMO_MsgFree(node, frame); }

45 45 Adding Stats Add a print statement in “Finalize” function void Mac802_11Finalize(){ M802 = node->macData[interfaceIndex]->macVar; sprintf(buf, "UCAST (non-frag) pkts sent " "to chanl: %ld", M802->pktsSentUnicast); GLOMO_PrintStat(node, "802.11", buf); sprintf(buf, "BCAST pkts sent to chanl: “, "%ld", M802->pktsSentBroadcast); GLOMO_PrintStat(node, "802.11", buf); … }

46 46 Obtaining Glomosim/Parsec Web site:  http://pcl.cs.ucla.edu/projects/parsec http://pcl.cs.ucla.edu/projects/parsec  http://pcl.cs.ucla.edu/projects/glomosim http://pcl.cs.ucla.edu/projects/glomosim Questions:  PARSEC: parsec@cs.ucla.eduparsec@cs.ucla.edu  GloMoSim: glomosim@pcl.cs.ucla.eduglomosim@pcl.cs.ucla.edu Scalable Mobile Network Simulator

47 47 Inside the Source Program glomosim-2.0 \glomosim\parsec

48 48 Installing Parsec copy correct directory to be parsec in … Linux Windows /usr/local/parsec C:\Parsec \glomosim-2.0\parsec\

49 49 Installing Parsec Windows (Set Environment Variable)  path %path%;c:\devstudio\vc\bin; c:\devstudio\sharedide\bin  set INCLUDE=c:\devstudio\vc\include  set LIB=c:\devstudio\vc\lib

50 50 Installing GloMoSim UNIX (go to /glomosim/main)  Run "make depend" to create list of depndencies in the Makefile.  Make sure that the right path for the Parsec compiler is specified in the Makefile for the "PAR" variable.  Run "make" to create the executable Windows (go to c:\glomosim\main  Run “makent” to create the executable

51 51 Compiling GloMoSim (optional) compiles only specific layer by  “make _layerName” or “makent _layerName”  for example  prompt> makent MAC

52 52 Runnig Program Go to directory glomosim/bin -> type: “glomosim config.in“

53 53 For gcc v.2.96 and higher setenv (or set or export, depending on your shell) the environment variable PCC_PP_OPTIONS "-D__builtin_va_list= void* -D__STRICT_ANSI__ -E -U__GNUC__ -I."

54 54 End


Download ppt "1 Network Simulation Using GlomoSim Presented By Akarapon Kunpisut."

Similar presentations


Ads by Google