Professional Documents
Culture Documents
PHN I - TNG QUAN V OMNET++ .....................................................................5 1. GII THIU ..........................................................................................................5 1.1. OMNeT++ l g?.............................................................................................5 1.2. Cc thnh phn chnh ca OMNeT++ ............................................................5 1.3. ng dng ........................................................................................................5 1.4. M hnh trong OMNeT++ ..............................................................................6 2. TNG QUAN........................................................................................................7 2.1. Khi nim m hnh ho...................................................................................7 2.1.1. Cu trc phn cp ca cc module...........................................................7 2.1.2. Kiu module.............................................................................................7 2.1.3. Message, cng, lin kt............................................................................8 2.1.4. M hnh truyn gi tin .............................................................................9 2.1.5. Tham s..................................................................................................10 2.1.6. Phng php m t topology .................................................................10 2.2. Lp trnh thut ton.......................................................................................10 2.3. S dng OMNeT++ ......................................................................................11 2.3.1. Xy dng v chy th cc m hnh m phng ......................................11 2.3.2. H thng file ..........................................................................................12 3. NGN NG NED...............................................................................................14 3.1 Tng quan v NED ........................................................................................14 3.1.1. Cc thnh phn ca ngn ng m t NED.............................................14 3.1.2. Cc t kho ............................................................................................14 3.1.3. t tn....................................................................................................14 3.1.4. Ch thch................................................................................................15 3.2. Cc ch dn import ........................................................................................15 3.3. Khai bo cc knh.........................................................................................15 3.4. Khai bo cc module n gin......................................................................16 3.4.1. Cc tham s ca module n gin .........................................................16 3.4.2. Cc cng ca module n gin ..............................................................17 3.5. Khai bo module kt hp ..............................................................................18 3.5.1. Cc tham s v cng ca module kt hp..............................................19 3.5.2. Cc module con......................................................................................19 3.5.3. Tham s tn kiu module con ................................................................20 3.5.4. Gn gi tr cho cc tham s ca cc module con ...................................22 3.5.5. Khai bo kch thc ca cc vector cng ca module con ....................23 3.5.6. Khai bo gatesizes v tham s c iu kin...........................................23 3.5.7. Kt ni....................................................................................................24 3.6. Khai bo mng ..............................................................................................27 3.7. Cc biu thc ................................................................................................27 3.7.1. Hng s ..................................................................................................28 3.7.2. Tham chiu.............................................................................................28 3.7.3. Cc ton t .............................................................................................29 3.7.4. Ton t sizeof() v index .......................................................................30 3.7.5. Ton t xmldoc() ...................................................................................30 3.7.6. XML v XPath.......................................................................................31 3.7.7. Hm........................................................................................................31 3.7.8. Gi tr ngu nhin...................................................................................32 3.7.9. Khai bo mt hm mi...........................................................................33 4. GII THIU GNED ............................................................................................35 4.1. Giao din.......................................................................................................35
Trang 1
OMNet++
4.2. Mt s thao tc c bn ..................................................................................38 4.3. Lm vic vi nhiu file NED - Cc chc nng chnh sa nng cao .............43 5. MODULE N GIN........................................................................................50 5.1 Module n gin trong OMNeT++................................................................50 5.2 Cc s kin trong OMNeT++ ........................................................................50 5.3 M hnh ho hot ng truyn gi tin............................................................50 5.4 Khai bo kiu module n gin .....................................................................51 5.4.1 Tng quan ...............................................................................................51 5.4.2 ng k kiu module ..............................................................................52 5.5 Xy dng hm cho Module............................................................................52 5.5.1 Hm handleMessage() ............................................................................52 5.5.2 Hm activity() .........................................................................................53 5.5.3 Hm initialize() v finish()......................................................................54 5.6 Gi v nhn cc message ...............................................................................54 5.6.1 Gi cc message .....................................................................................54 5.6.2 Broadcasts ...............................................................................................54 5.6.3 Gi c tr (Delayed sending) .............................................................55 5.6.4 Gi trc tip message .............................................................................55 5.6.5 Gi nh k .............................................................................................55 5.7 Truy nhp cc cng v kt ni .......................................................................55 5.7.1 i tng cng (gate object) ..................................................................55 5.7.2 Cc tham s kt ni.................................................................................56 5.8 T ng to module .......................................................................................56 6. MESSAGE...........................................................................................................58 6.1. Message v Packet ........................................................................................58 6.1.1. Lp cMessage ........................................................................................58 6.1.2. Self-Message..........................................................................................59 6.1.3. M hnh ho gi tin................................................................................60 6.1.4. ng gi (Encapsulation) ......................................................................62 6.1.5. Thm i tng v tham s ...................................................................63 6.2. nh ngha message ......................................................................................64 6.2.1. Gii thiu ...............................................................................................64 6.2.2. S dng enum ........................................................................................66 6.2.3. Khi to cho mt message .....................................................................66 6.2.4. Quan h k tha v hp thnh ...............................................................69 6.2.5. S dng cc kiu c sn ca C++ ..........................................................71 6.2.6. Thay i cc file C++ ............................................................................72 6.2.7. S dng STL trong cc lp message .....................................................75 7. CHY CC NG DNG OMNeT++ ...............................................................78 7.1 S dng gcc....................................................................................................79 7.2 S dng Microsoft Visual C++......................................................................79 8. M HNH N GIN - TICTOC......................................................................80 Phn II TNG QUAN V WLAN...........................................................................86 1. GII THIU ........................................................................................................86 1.1 u im ca mng LAN khng dy ..............................................................86 1.2 Mt s ng dng thc t ca WLAN ti Vit Nam.......................................88 1.2.1 ng dng trong Wireless LAN Telemedicine ........................................88 1.2.2 H thng WiFi VNN...............................................................................90 2. CC M HNH MNG C BN......................................................................91 2.1 M hnh c s (Infrastructure network).........................................................91
Trang 2
OMNet++
2.1.1 Tp hp dch v c bn (BSS - Basic Service Set).................................92 2.1.2 Tp hp cc dch v m rng (ESS Extended Service Set)....................92 2.2 M hnh Adhoc c lp (Independent network) ............................................96 3. HOT NG CA CC CHUN LIN QUAN .............................................97 3.1 Cc bng tn ISM...........................................................................................97 3.1.1 Bng tn ISM (ISM bands) .....................................................................97 3.1.2 Bng tn UNII (UNII bands) ..................................................................98 3.2 Cc chun 802.11 (IEEE 802.11 family) .......................................................99 3.2.1 IEEE 802.11............................................................................................99 3.2.2 IEEE 802.11b..........................................................................................99 3.2.3 IEEE 802.11a ..........................................................................................99 3.2.4 IEEE 802.11g..........................................................................................99 3.2.5 Mt s chun khc trong h IEEE 802.11 ............................................100 4. M HNH CU TRC CA MNG WLAN .................................................103 4.1 Tng vt l (PHY layer)...............................................................................103 4.1.1 Cc k thut tri ph .............................................................................104 4.1.2 Cu trc khung PLCP (General PLCP Frame Format).........................108 4.1.3 PLCP trong di ph dch tn FHSS ......................................................109 4.1.4 PLCP cho DSSS v HR/DSSS..............................................................109 4.1.5 PLCP trong OFDM ...............................................................................110 4.1.6 Th tc truyn PLCP ............................................................................110 4.1.7 Th tc nhn PLCP...............................................................................111 4.1.8 Tng PMD ( PMD sublayer)................................................................112 4.2 Tng kim sot truy nhp ng truyn MAC .........................................113 4.2.1 DCF - Distributed Coordination Function ............................................113 4.2.2 PCF Point Coordination Function......................................................116 4.2.3 Phn tch cc hot ng c bn.............................................................116 4.3 Tng mng v cc giao thc dn ng trong WLAN................................121 4.3.1 Cc giao thc tm ng trong mng Ad-hoc ......................................122 4.3.2 Cc giao thc m rng cho MANET....................................................123 4.3.3 M t chi tit giao thc AODV.............................................................125 PHN III PHN TCH THIT K NG DNG M PHNG MNG ADHOC ....................................................................................................................................130 1. M HNH CHUNG...........................................................................................130 2. CU TRC H THNG ..................................................................................131 2.1 Tng vt l (Physical model) .......................................................................131 2.2 Tng iu khin truy nhp (Mac Layer) ......................................................131 2.3 Tng mng (Routing model)........................................................................133 2.4 Mobility models ...........................................................................................136 2.5 Tng ng dng .............................................................................................137 2.6 Lin kt gia cc tng ..................................................................................138 2.7 Thit lp cc thng s cho h m phng......................................................138 2.7.1 Thng s ca Map v Hosts..................................................................138 2.7.2 Physical Layer.......................................................................................139 2.7.3 Mac Layer .............................................................................................139 2.7.4 Routing..................................................................................................139 2.7.5 Application............................................................................................140 3. KT QU THC HIN ...................................................................................141 3.1 Topo .............................................................................................................141 3.2 Gi cc gi tin Hello....................................................................................142
Trang 3
OMNet++
3.3 Gi gi tin RREQ ........................................................................................142 Phn IV - PH LC ..................................................................................................143 1. SO SNH OMNET++ V NS/2.......................................................................143 2.TI LIU THAM KHO ..................................................................................145
Trang 4
OMNet++
1.3. ng dng
OMNeT++ l mt cng c m phng cc hot ng mng bng cc module c thit k hng i tng. OMNeT++ thng c s dng trong cc ng dng ch yu nh: M hnh hot ng ca cc mng thng tin
Trang 5
OMNet++
M hnh giao thc M hnh ho cc mng kiu hng i M hnh ho cc h thng a b vi x l (multiprocesser) hoc cc h thng phn cng theo m hnh phn tn khc (distributed hardware systems) nh gi kin trc phn cng nh gi hiu qu hot ng ca cc h thng phc tp...
Trang 6
OMNet++
2. TNG QUAN
2.1. Khi nim m hnh ho
OMNeT++ cung cp cho ngi s dng nhng cng c hiu qu m t cu trc ca cc h thng thc t. Cc module lng nhau c cu trc phn cp Cc module l cc i tng c th ca cc kiu module Cc module trao i thng tin bng cc message qua cc knh Cc tham s ca module linh hot Ngn ng m t topology
Hnh I-2.1 - Cc module n gin v kt hp Cc module c th cha nhiu module con v c gi l module kt hp. Cc module n gin l cc module c cp thp nht trong cu trc phn cp. Cc module n gin cha cc thut ton ca m hnh. Ngi s dng trin khai cc module n gin bng ngn ng C++, s dng cc th vin m phng ca OMNeT++.
Trang 7
OMNet++
module; cc i tng c th ca cc kiu module ny c s dng nh cc thnh phn ca cc kiu module phc tp hn. Cui cng, ngi s dng to module h thng nh mt i tng c th ca kiu module c nh ngha trc , tt c cc module ca mng u l module con (hoc l con ca module con) ca module h thng. Khi mt kiu module c s dng nh mt khi dng sn (building block), s khng th phn bit l mt module n gin hay phc tp. iu ny cho php ngi s dng c th tch cc module n gin ra thnh nhiu module n gin c nhng trong mt module kt hp, v ngc li c th tp hp cc chc nng ca mt module kt hp trong mt module n gin m khng nh hng g n cc kiu module c ngi s dng nh ngha. Kiu module c th c lu tr trong mt file ring r. iu ny cho php ngi s dng c th nhm cc kiu module li v to ra mt th vin thnh phn
module cha S1 S2 S1
module cha S2
Hnh I-2.2 - Cc kt ni Tng ng vi cu trc phn cp ca mt m hnh, cc message thng di chuyn qua mt lot cc kt ni vi im bt u v kt thc l cc module n gin. Tp cc kt ni i t mt module n gin v n mt module n gin c gi l route. Cc module kt hp hot ng ging nh cc cardboard box trong m hnh, trong sut trong vic chuyn tip cc message gia cc thnh phn bn trong v th gii bn ngoi.
Trang 8
OMNet++
Cc tham s ny l tu chn. Gi tr ca cc tham s ny l khc nhau trn tng kt ni, ph thuc vo kiu ca lin kt (hay cn gi l kiu ca knh truyn - channel type). tr ng truyn l tng thi gian n ca message b tr i khi truyn qua knh. T s li bit nh hng n qu trnh truyn message qua knh. T s ny l xc sut cc bit b truyn sai. Do xc sut mt message di n bit truyn i chnh xc l: P(message gi i c nhn chnh xc) = (1 - ber)n trong ber l t s li bit v n l s bit ca message. Cc message truyn i u c mt c li, c ny s c thit lp khi vic truyn message c li. T s d liu c tnh theo n v bit/s, v n c s dng tnh thi gian truyn mt gi tin. Khi t s ny c s dng, qu trnh gi message i trong m hnh s tng ng vi vic truyn bit u tin v message c tnh l n ni sau khi bn nhn nhn c bit cui cng.
tA Message gi i truyn b tr
tB
Trang 9
OMNet++
2.1.5. Tham s
Cc module c th cc tham s.Cc tham s ny c th c t gi tr trong cc file NED hoc cc file cu hnh ompnetpp.ini. Cc tham s ny c th c dng thay i cc thuc tnh ca cc module n gin hoc dng biu din cho topology ca m hnh. Cc tham s c th c kiu l chui, s hc, gi tr logic hoc cng c th cha cy d liu XML (XML data tree). Cc bin kiu s trong cc biu thc c th nhn gi tr t cc tham s khc, gi hm, s dng cc bin ngu nhin t cc ngun phn tn hoc nhn gi tr trc tip c nhp vo bi ngi s dng. Cc tham s c kiu s c th c dng cu hnh topology rt d dng. Nm trong cc module kt hp, cc tham s ny c th c dng ch ra s module con, s cng giao tip v cch cc kt ni ni b c to ra.
Cc lp ny c th c s dng nh nhng cng c cho php ngi s dng c th duyt qua tt c cc i tng khi chy th m hnh ng thi hin th thng tin v chng nh tn ca i tng, tn lp, cc bin trng thi v ni dung bn trong. c im ny cng cho php to ra cc m hnh m phng c giao din ho (GUI) vi phn cu trc bn trong c che i.
Trang 10
OMNet++
Thc hin m phng v phn tch kt qu Cc chng trnh thc hin m phng (the simulation executable) l cc chng trnh c lp, tc l n c th chy trn cc my khc khng ci t OMNeT++ hay cc file m hnh tng ng. Khi chng trnh khi ng, n bt u c file cu hnh (thng thng l file omnetpp.ini). File ny cha cc thit lp iu khin qu trnh m phng thc hin, cc bin cho cc tham s ca m hnh... File cu hnh cng c th c s dng iu khin nhiu qu trnh m phng, trong trng hp n gin nht l cc qu trnh m phng ny s c thc hin ln lt bi mt chng trnh m phng (simulation program). u ra ca qu trnh m phng l cc file d liu. Cc file ny c th l cc file vector, cc file v hng hoc cc file ca ngi s dng. OMNeT++ cung cp mt cng c ho Plove xem v v ra ni dung ca cc file vector. Tuy nhin chng ta cng nn hiu rng kh m c th x l y cc file kt qu m ch dng ring OMNeT++; cc file ny u l cc file c nh dng c th c c bi cc gi x l ton hc ca cc chng trnh nh Matlab hay Octave, hoc c th c a vo bng tnh ca cc chng trnh nh OpenOffice Calc, Gnumeric hay Microsoft Excel. Tt c cc chng trnh ny u c chc nng chuyn dng trong vic phn tch s ho, v biu din (visualization) vt qua kh nng ca OMNeT++. Cc file v hng cng c th c biu din bng cng c Scalar. N c th v c cc biu , cc th da vo tp hp cc to (x, y) v c th xut d liu vo clipboard c th s dng trong cc chng trnh khc nhm a nhng phn tch chi tit hn.
Trang 11
OMNet++
Giao din ngi s dng Mc ch chnh ca giao din ngi s dng l che nhng phn phc tp bn trong cu trc ca cc m hnh i vi ngi s dng, d dng iu khin qu trnh m phng, v cho php ngi s dng c kh nng thay i cc bin hay cc i tng bn trong ca m hnh. iu ny l rt quan trng i vi pha pht trin v sa li trong d n. Giao din ho cng c th c s dng trnh din hot ng ca m hnh. Cng mt m hnh ngi s dng c th trn nhiu giao din khc nhau m khng cn phi thay i g trong cc file m hnh. Ngi s dng c th kim th v sa li rt d dng qua giao din ho, cui cng c th chy n da trn mt giao din n gin v nhanh chng c h tr thc hin theo khi (batch execution). Cc th vin thnh phn Cc kiu module c th c lu ti nhng v tr c lp vi ch m chng thc s c s dng. c im ny cung cp cho ngi s dng kh nhm cc kiu module li vi nhau v to ra cc th vin thnh phn. Cc chng trnh m phng c lp Cc chng trnh thc hin qu trnh m phng c th c lu nhiu ln, khng ph thuc vo cc m hnh, s dng cng mt thit lp cho cc module n gin. Ngi s dng c th ch ra trong file cu hnh m hnh no s c chy. iu ny to kh nng cho ngi s dng c th xy dng nhng chng trnh thc hin ln bao gm nhiu qu trnh m phng, v phn phi n nh mt cng c m phng c lp. Kh nng linh hot ca ngn ng m t topology cng h tr cho hng tip cn ny.
Trang 12
OMNet++
core/ distrib/ ... Cc qu trnh m phng mu c cha trong th mc samples samples/ th mc cha cc m hnh m phng mu aloha/ m hnh ca giao thc Aloha cqn/ Closed Queue Network ... Th mc contrib cha cc chng trnh c th kt hp vi OMNeT++ contrib/ octave/ script ca Octave dng x l kt qu emacs/ b nh du c php NED cho Emacs Ngoi ra bn cng c th tm thy cc th mc khc nh msvc/, cha cc thnh phn tch hp cho Microsoft Visual C++...
giao din ngi s dng da trn Tcl/tk cng c son tho file NED cng c v v phn tch u ra dng vector cng c v v phn tch u ra dng v hng th vin NEDXML cc tin ch khc... b kim th li b kim th li cho th vin m phng b kim th li
Trang 13
OMNet++
3. NGN NG NED
3.1 Tng quan v NED
NED c s dng m t topology ca mt m hnh trong OMNeT++. NED s dng phng php m t module ho. iu ny c ngha l mt mng c th c m t nh mt tp hp cc m t thnh phn (cc knh, cc kiu module n gin hay kt hp). Cc knh, cc kiu module n gin v kt hp c s dng m t mt mng no c th c s dng li khi m t mt mng khc. Cc file cha m t mng thng c phn m rng l .ned. Cc file NED c th c load ng vo cc chng trnh m phng, hay c th c dch sang C++ bng b bin dch ca NED v c lin kt bn trong cc chng trnh thc hin.
3.1.2. Cc t kho
Ngi s dng cn phi ch khng s dng nhng t kho c sn ca NED t tn cho cc i tng khc. Cc t kho c bn ca NED bao gm: import channel endchannel simple endsimple module endmodule error delay datarate const parameters gates submodules connections atesizes if for do endfor network endnetwork nocheck ref ancestor true false like input numeric string bool char xml xmldoc
3.1.3. t tn
Trong NED ngi s dng c th t tn cho cc module, cc knh, cc module con, cc tham s, cc cng, cc thuc tnh v hm chc nng ca knh... Cc tn ny c th bao gm cc ch ci ting Anh, cc ch s v du gch di _. Tn lun c t bt u bng ch ci hoc du gch di. Trong trng hp mun t tn bt u bng ch s, bn c th s dng thm mt du gch di t u, v d nh _3Com... Nu tn bao gm nhiu t nn vit hoa u mi t hoc c th s dng du gch di. Tn ca cc module, knh v mng nn bt u bng ch ci in hoa cn tn ca tham s, cng v cc module con nn bt u bng ch ci thng. NED l mt ngn ng c phn bit hoa thng.
Trang 14
OMNet++
3.1.4. Ch thch
Cc dng ch thch c th t bt k v tr no trong file NED. Tng t nh c php ca C++, cc dng ch thch trong NED bt u bng du //. Ch thch trong NED c th c s dng trong nhng cng c to ti liu (document generator) nh JavaDoc, Doxygen
3.2. Cc ch dn import
T kho import c s dng thm cc khai bo trong cc file m t khc. Sau khi import, ngi s dng c th s dng tt c cc thnh phn c nh ngha trong file m t . Ch khi thm mt file m t, ch c cc thng tin khai bo c s dng. Cng tng t nh vy khi mt file c thm vo khng c ngha l n s c dch khi file cha n c dch. Ngi s dng s phi dch tt c cc file ch khng phi ch l file mc cao nht. Bn c th xc nh mt file thm vo m c hoc khng vit phn m rng. V d: import ethenet; //import ethernet.ned Bn cng c th s dng ng dn trong khi s dng t kho import hoc tt hn l bn s dng trnh bin dch ca NED vi tham s -I t tn cho th mc cha cc file m bn mun import.
Trang 15
OMNet++
Trang 16
OMNet++
Cc tham s c kiu s c th c t tr v mt gi tr ngu nhin theo dng phn phi u (uniformly distributions) hoc cc dng phn phi khc Trong a s trng hp, cc tham s thng ch nhn gi tr ngu nhin khi bt u khi gn, sau gi tr ny c gi nguyn. Khi cc tham s ny phi c khai bo l hng s - const. Khai bo mt tham s l const th gi tr ca tham s s c xc nh mt ln duy nht khi bt u thc hin m phng v sau gi tr s c coi l hng s. (Ch OMNeT++ khuyn khch vic khai bo mi tham s l const tr nhng trng hp bn mun s dng chc nng to s ngu nhin). Tham s XML i khi cc module cn u vo l nhng thng tin phc tp hn kh nng m t ca cc tham s, khi bn c th s dng mt file cu hnh m rng. OMNeT++ c th c v x l cc file ny thng qua mt tham s cha tn ca file. T cc phin bn 3.0 tr ln, XML c coi l mt dng chun cho cc file cu hnh v OMNeT++ cng tch hp sn cc cng c cho php ngi s dng c th lm vic c vi cc file XML. OMNeT++ cha b phn tch c php XML (XML parser), c kh nng c cc file DTD, s dng b nh m nh cc file (trong trng hp mt file XML c tham chiu ti nhiu module th n s cng ch phi load mt ln), cung cp cho ngi s dng kh nng chn lc cc phn trong ti liu thng qua XPath, th hin ni dung ca file XML thng qua DOM.
Trang 17
OMNet++
out: input[]; endsimple Kch thc ca mt vector cng c th c xc nh sau do mi i tng c th ca mt m hnh c th c cc vector cng c kch thc khc nhau.
Trang 18
OMNet++
Trang 19
OMNet++
tn_module_con_1: Kiu_Module_1 parameters: //... gatesizes: //... tn_module_con_2: Kiu_Module_2 parameters: //... gatesizes: //... endmodule Vector module Vector module l mt tp hp (mt mng) cc module con. Kch thc ca vector c th c biu din bng mt biu thc t trong cp du ngoc vung []. Biu thc ny c th tham chiu n cc tham s ca module. Gi tr 0 cho s cc module cng c chp nhn. V d: module CompoundModule parameters: size: const; submodules: submod1: Node[3] //... submod2: Node[size] //... submod3: Node[2*size+1] //... endmodule
Trang 20
OMNet++
th chuyn i qua li mt cch d dng gia cc thut ton tin li cho vic nh gi. thc hin iu ny ta c th s dng thm mt bin l routingNodeType cho module RoutingTestNetwork. ng thi bn cng khai bo cho NED cc module con ca RoutingTestNetwork khng c kiu c nh, m kiu ca cc module ny c l gi tr ca bin routingNodeType. Khi mng m phng ca bn c th d dng thay i cc thut ton trn thng qua gi tr ca tham s nh DistVectRoutingNode, AntNetRouting1Node hoc AntNetRouting2Node. Trong trng hp gi tr ca tham s l sai (cha tn ca mt kiu khng tn ti) qu trnh m phng s b li khi bt u chy - module type definition not found (khai bo kiu module khng c tm thy). Bn trong module RoutingTestNetwork, ta c th gn gi tr cho cc tham s v tin hnh kt ni vi cc module cha cc thut ton tm ng tng ng. Tuy nhin tng tnh chnh xc, m bo tn ca tham s v cng m bn s dng l chnh xc, NED cn c s gip t bn. Bn c th khai bo thm mt module (gi s tn l RoutingNode) v phi m bo chc chn rng tt c cc module m nh s dng thng qua tham s routingNodeType u c cc tham s v cc cng ging nh ca module RoutingNode. C php: module RoutingTestNetwork parameters: routingNodeType: string; // should hold the name // of an existing module type gates: //... submodules: node1: routingNodeType like RoutingNode; node2: routingNodeType like RoutingNode; //... connections nocheck: node1.out0 --> node2.in0; //... endmodule on m ny nu nhn theo gc ca ngn ng C++ th RoutingNode ng vai tr ca mt lp c s, DistVecRoutingNode, AntNetRouting1Node l cc lp k tha t lp RoutingNode. Tham s routingNodeType tng ng vi con tr tr ti lp c s. Module RoutingNode khng cn c thc hin trong C++ bi khng c i tng c th no ca n c to ra, n ch n thun c dng kim tra tnh chnh xc ca file NED. Mt khc, cc module thc s s c thay th (v d nh DistVecRoutingNode, AntNetRouting1Node,...) s khng cn phi khai bo trong file NED.
Trang 21
OMNet++
T kho like cho php bn to ra mt h cc module phc v cho cng mt mc ch, c cng giao tip ging nhau (c cng cc tham s v cc cng) v s dng chng thay th nhau trong file NED.
Trang 22
OMNet++
numCPUs = input(10, "Number of processors?"), //gi tr mc //nh, du nhc processingTime = input(10ms), //thng bo nhp gi tr cacheSize = input;
OMNet++
submodules: node : Node [count] parameters: position = "middle"; parameters if index==0: position = "beginning"; parameters if index==count-1: position = "end"; gatesizes: in[2], out[2]; gatesizes if index==0 || index==count-1: in[1], out[1]; connections: //... endmodule Ch cc gi tr mc nh nn c khai bo u tin bi v NED s duyt t trn xung di, nu gp iu kin ng th cc gi tr tng ng s c chn vo cc gi tr mc nh trc . Trong trng hp khai bo gi tr mc nh cui cng, gi tr mc nh s c th chn vo gi tr ca mt trng hp iu kin ng trc .
3.5.7. Kt ni
Cc kt ni ch ra c th cch cc cng ca module kt hp giao tip vi cc cng tng ng ca module con. Kt ni c th c to ra gia hai module con hoc gia module con vi module cha (module kt hp) trc tip cha n (trong mt s t trng hp, mt kt ni cng c th c to ra gia hai cng ca cng mt module kt hp). iu ny c ngha l NED khng cho php mt kt ni a cp (kt ni gia hai module xa nhau trong cu trc phn cp). Hn ch ny lm tng tnh c lp v kh nng dng li ca mi module. Ngoi ra, hng ca module cng rt trong quan trng khi to kt ni. Khng th to mt kt ni gia hai cng ra hoc gia hai cng vo vi nhau. NED ch h tr kiu kt ni mt-mt do mt cng ring bit c s dng ch xut hin mt ln trong mt kt ni. Kiu kt ni mt-nhiu v nhiu-mt cng c th c to ra bng cch s dng cc module n gin trong cc lung message c nhn i hoc c ghp thm (duplicate message or merge message flows). Cc kt ni c lit k sau t kho connections v c phn tch vi nhau bng du chm phy. V d: module CompoundModule parameters: //... gates: //...
Trang 24
OMNet++
submodules: //... connections: node1.output --> node2.input; node1.input <-- node2.output; //... endmodule Cng ngun c th l cng ra ca cc module con hoc l cng vo ca module kt hp v cng ch c th l cng vo ca module con hay cng ra ca module kt hp. Mi tn c th ch theo chiu t tri qua phi hoc theo chiu ngc li. Ch thch gate++ cho php ngi s dng c th mt vector cng vi mt cng mi, m khng cn phi khai bo trong gatesizes. V d: simple Node gates: in: in[]; out: out[]; endsimple module SmallNet submodules: node: Node[6]; connections: node[0].out++ --> node[1].in++; node[0].in++ <-- node[1].out++; node[1].out++ --> node[2].in++; node[1].in++ <-- node[2].out++; node[1].out++ --> node[4].in++; node[1].in++ <-- node[4].out++; node[3].out++ --> node[4].in++; node[3].in++ <-- node[4].out++; node[4].out++ --> node[5].in++; node[4].in++ <-- node[5].out++; endmodule Mt kt ni: C th c cc thuc tnh ( tr, t s bit li, tc truyn d liu) hoc s dng mt knh truyn c t tn.
Trang 25
OMNet++
Kt ni n v knh truyn Nu bn khng xc nh mt knh truyn, th kt ni s khng c tr v khng c bit li khi truyn. Bn c th xc nh mt knh truyn thng qua tn. V d: node1.outGate --> Fiber --> node2.inGate; Trong trng hp ny file NED phi c khai bo loi knh truyn trn. Hoc ngi s dng cng c th xc nh trc tip mt knh truyn qua cc tham s c trng. V d: node1.outGate --> error 1e-9 delay 0.001 --> node2.inGate; Khng nht nh phi khai bo y cc tham s v cc tham s c th c khai bo theo bt k th t no. Kt ni vng lp Nu module con hoc cc vector cng c s dng, NED cho php ngi s dng c th to ra nhiu hn mt kt ni vi mt khai bo. c gi l mt a kt ni hay mt kt ni vng lp. for i=0..4 do node1.outGate[i] --> node2[i].inGate endfor; Mt a kt ni thc cht l mt tp hp cc kt ni n c khai bo gn hn nh cu lnh vng lp for...do...endfor.
Hnh I-3.1 - a kt ni Cc kt ni c iu kin Ngi s dng c th s dng t kho if rng buc iu kin khi to cc kt ni. V d: for i=0..n do node1.outGate[i] --> node2[i].inGate if i%2==0; endfor; Nocheck
Trang 26
OMNet++
Mc nh, NED quy nh tt c cc cng u phi c kt ni do vy trong nhiu trng hp vic kim tra ny c th gy nhiu phin phc. tt b chc nng ny bn c th s dng t kho nocheck.
Trang 27
OMNet++
3.7.1. Hng s
Hng s hc Hng s hc thng l cc s dng thp phn hoc cc s thp phn vi du phy ng. Hng chui k t Hng chui k t c khai bo gia cp du ngoc kp. Hng thi gian s dng hng thi gian bn phi s dng thm cc t kho ch n v thi gian. V d: ... parameters: propagationDelay = 560ms, // 0.560 giy connectionTimeout = 6m 30s 500ms, // 390.5 giy recoveryIntvl = 0.5h; // 30 pht Cc n v thi gian c th c s dng:
n v ns us ms s m h d
ngha nano giy micro giy mili giy giy pht (60 giy) gi (3600 giy) ngy (86400 giy)
Trang 28
OMNet++
gi thng tin (encapsulation) v c th ch c kim tra trong thi gian chy. N ch nn c s dng trong mt s t nhng trng hp thc s cn thit. ref ly gi tr ca tham s bng phng php tham chiu, c ngha l vic thay i gi tr ca tham s trong thi gian chy s gy nh hng ti tt c cc module tham chiu ti tham s ny. Cng ging nh ancestor, ref nn c s dng hn ch. Mt trng hp c th s dng ref l khi phi iu chnh m hnh trong thi gian chy tm iu kin ti u. Ngi s dng c th khai bo mt tham s mc cao nht ca m hnh v t cc module khc tham chiu ti tham s ny. Khi bn thay i tham s ny trong thi gian chy, n s nh hng ti ton b m hnh. Trong mt s trng hp khc, cc tham s c tham chiu c th c dng nh cc bin trng thi i vi cc module bn cnh.
3.7.3. Cc ton t
Cc ton t c h tr trong NED cng tng t nh cc ton t trong C/C++, tuy nhin cng c mt s khc bit: Du ^ c dng cho php tnh lu tha (khng phi l php XOR cc bit nh trong C). Du # c s dng cho php ton logic XOR (tng t nh du !=) v ## c dng cho php ton bit XOR. Th t u tin ca cc php ton bit (&, |, #) l cao nht so vi cc ton t quan h khc. Tt c cc bin trong NED u c kiu doubles. i vi cc ton t bit, kiu doubles c chuyn thnh kiu unsigned long bng hm chuyn i c sn ca C/C++ (type cast), sau khi php ton c thc hin kt qu s c chuyn i li thnh kiu doubles. Tng t i vi cc ton t logic &&, || v ##, cc ton hng s c chuyn sang kiu bool (type cast) v sau kt qu s li c i v kiu doubles. i vi php chia ly phn d (%), ton hng s c chuyn sang kiu long. Danh sch cc ton t v th t u tin:
ngha du m, ph nh, ly phn b ca bit php ton lu tha php nhn, chia, chia ly phn d php cng, tr php dch bit php ton bit and, or, xor so snh bng so snh khc
Trang 29
OMNet++
so snh ln hn, ln hn hoc bng so snh nh hn, nh hn hoc bng ton t logic and, or, xor ton t inline if
Trang 30
OMNet++
tn
file.
xmldoc() nhn vo tn file cng thm XPath, biu thc ch ra mt element c th c chn trong file XML. V d: xmlparam = xmldoc("someconfig.xml", "/config/profile[@id=2]");
3.7.7. Hm
Trong NED, bn c th s dng cc hm ton hc sau:
Trang 31
OMNet++
Rt nhiu hm c trong th vin ton ca C (math.h) nh exp(), log(), sin(), cos(), floor(), ceil()... Cc hm to gi tr ngu nhin: uniform, exponential, normal...
Hm Lut phn phi lin tc uniform(a, b, rng=0) exponential(mean, rng=0) normal(mean, stddev, rng=0) truncnormal(mean, rng=0)
M t
lut phn phi u trong khong [a, b) lut phn phi theo lut s m vi gi tr trung bnh mean lut phn phi bnh thng vi gi tr trung bnh mean v lch chun stddev
stddev, lut phn phi bnh thng loi b cc s khng m lut phn phi gamma vi alpha > 0 v beta > 0 lut phn phi beta vi alpha1>0 v alpha2>0 lut phn phi Erlang vi k>0 pha v gi tr trung bnh mean lut phn phi chi_square vi k>0 t do lut phn phi student_t vi i>0 t do lut phn phi Cauchy vi cc tham s a, b trong b>0 lut phn phi tam gic vi cc tham s a<=b<=c, a!=c lut phn phi lognormal vi gi tr trung bnh m v sai khc s > 0 lut phn phi Weibull vi cc tham s a>0, b>0 lut phn phi Pareto tng qut vi cc tham s a,
gamma_d(alpha, beta, rng=0) beta(alpha1, alpha2, rng=0) erlang_k(k, mean, rng=0) chi_square(k, rng=0) student_t(i, rng=0) cauchy(a, b, rng=0)
triang(a, b, c, rng=0)
lognormal(m, s, rng=0)
Trang 32
OMNet++
b v dch c. Lut phn phi ri rc intuniform(a, b, rng=0) bernoulli(p, rng=0) lut phn phi u vi cc s nguyn nm trong khong a..b kt qu ca php th Bernoulli vi xc sut p, 0<=p<=1 (bng 1 vi xc sut p v bng 0 vi xc sut (1-p)) lut phn phi binomial vi tham s n>=0 v 0<=p<=1 lut phn phi geometric vi tham s 0<=p<=1 lut phn phi binomial vi tham s n>0 v 0<=p<=1 lut phn phi Poisson vi tham s lambda
3.7.9. Khai bo mt hm mi
Cc hm do ngi dng nh ngha c lp trnh di dng cc hm trong C++. Cc hm ny c th c t 0 n 5 tham s, tuy nhin c tham s v kt qu tr v u phi c kiu double. Cc hm ny phi c ng k trong mt trong cc file ca C++ vi macro Define_Function(). V d (ch on code di y phi nm trong mt file C++ xc nh): #include <omnetpp.h> double average(double a, double b) { return (a+b)/2; } Define_Function(average, 2); S 2 ch ra rng hm average nhn hai tham s. Sau khi ng k, hm average c th c s dng trong cc file NED. module Compound parameter: a,b; submodules: proc: Processor parameters: av = average(a,b); endmodule Nu hm nhn vo tham s c kiu int, long hoc mt s kiu khc khng phi l kiu double th bn phi to hm chuyn i. Trong trng hp ny bn phi ng k hm chuyn i vi macro Define_Function2() cho php mt hm c th c ng k
Trang 33
OMNet++
mt tn khc vi tn m hm c gi khi s dng. Trong trng hp hm khng tr v kiu double bn cng c th lm tng t. #include <omnetpp.h> long factorial(int k) { ... } static double _wrap_factorial(double k) { return factorial((int)k); } Define_Function2(factorial, _wrap_factorial, 1);
Trang 34
OMNet++
Giao din ca GNED h tr hai ch : ho (Graphics): l giao din mc nh. M ngun (NED Source): cho php ngi s dng c th sa li m ngun mt cch trc tip.
Hai kiu giao din ny c thanh Command Bar l khc nhau. i vi ch ho, thanh Command Bar c dng:
New NED file: to mt file NED mi. GNED cho php to nhiu file NED cng mt lc. Open NED file: m mt file NED. Save Document: Ghi file NED hin thi.
Trang 35
OMNet++
Add new component to current NED file: mt danh sch th xung (dropdown list) cho php ngi s dng mt trong 5 thnh phn c th thm vo file NED: Import, Channel, Simple Module, Compound Module v Network. Back to previous view: quay li ch giao din trc trong History. Forward to next view: chuyn ti ch giao din tip theo trong History. Select, move or resize items button: khi nt ny c kch hot, n cho php ngi s dng c th chn, di chuyn v thay i kch thc cc i tng trong ch ho. Draw submodules and connection tool: Cng c to cc module con v cc kt ni. Kch chut v ko r to cc module con. Kch chut bn trong mt module con ko r sang module khc to kt ni mt chiu gia hai module. to mt kt ni hai chiu ta thc hin vic to kt ni mt chiu hai ln theo chiu ngc nhau. Appearance of selected items: Chc nng hot ng khi mt (v ch mt) i tng c chn. N s lm xut hin cc trnh n nh Submodule Appearance, Module Appearance hay Connection Appearance. Cc trnh n ng cnh ny cho php bn m t chi tit cho i tng c chn. Properties of selected items: thuc tnh ca i tng c chn. Snap to grid on/off switch: bt/tt ch bt dnh vo li im. Fit compound module to area content: n nt ny s lm cho bin ca module cha c m rng ra cha trn vn bin ca tt c cc module con. Trong ch NED Source, thanh Command Bar c dng:
Bn nt u c chc nng tng t nh trong ch Graphic. Back to previous module: kch hot module chn trc . Forward to next module: kch hot module tip theo. Cut: di chuyn vo clipboard. Copy: sao chp vo clipboard. Paste: dn t clipboard. Undo: hu b thao tc va thc hin. Redo: lp li thao tc va hu b. Find Text: tm kim trong vn bn. Chc nng ny s lm xut hin hp thoi:
Trang 36
OMNet++
Hp thoi cho php tm kim vi cc chc nng (b lc): regular expression, case sensitive... Phn bn tri ca giao din l Tree View. Tree View cho php quan st tt c cc file v cc module ang c m.
Hai mc nedfile Untitled c nh du mu nhc nh l hai file ny cha Save. Nu bn kch phi chut vo mt mc no trong Tree View, mt trnh n ng cnh s hin ra. Trnh n ny cha cc thao tc c bn m bn c th thao tc vi i tng tng ng. Khi bn mi s dng GNED, s thng c mt ca s nh hin ln mi ln bn thc hin mt thao tc. Ca s ny gii thch cho bn cch thc hot ng ca mt s chc nng phc tp trong giao din ca GNED. Bn c tt chc nng ny bng cch nh du vo hp chn pha di ca ca s. y l mt chc nng rt hu ch v vy khi bn tt chc nng ny i, mun n xut hin tr li bn phi xo file .gnedrc.
Trang 37
OMNet++
4.2. Mt s thao tc c bn
To mt module con trong module kt hp
Kch thc ca module kt hp s t ng iu chnh cho ph hp vi module con c to ra. Nh ni trn nu bn l mt ngi s dng mi, s c mt ca s hng dn nh xut hin:
Trang 38
OMNet++
chn mt trong cc module con va c to ra. Tip theo ta s dng cng c Bin ca module c chn chuyn thnh mu . n nt , bn s thy trnh n ng cnh Submodule Appearance:
Trnh n ny cho php ngi s dng c th thay i hnh dng ca module con tng ng. Kch chn chc nng Icon chn mt Icon biu din cho module qua trnh duyt ho.
Trang 39
OMNet++
Bn c th s dng nhng Icon c sn ca OMNeT++ hoc c th thm cc Icon ca ring mnh bng cch copy cc file bitmap vo th mc bitmap ca OMNeT++. Chn Icon ball vi kch thc trung bnh (normal). Ta cng c th thay i mu sc cho cc Icon.
Chuyn Icon ball t mu xm sang mu xanh: kch vo hnh ch nht bn cnh Colorize icon, mt bng chn mu s hin ra
Trang 40
OMNet++
Sau khi chn mu xanh, by gi bn c th xem li hnh dng ca module con m bn va mi thay i so vi hnh ch nht ca cc module c.
Ch l i vi module con th nht nhng thay i v mt hnh thc ca n c din t trong chui i=ball, #0080ff. Bng cch s dng cc chc nng copy, paste ta
Trang 41
OMNet++
c th thay i hnh thc cho cc module con cn li m khng cn phi m trnh n Submodule Appearance cho tng module tng ng.
sinh ng hn, ta thay i tham s mu sc cho cc module cn li, submod1 thnh #ff80ff v submod2 thnh #ff8000. Kt qu c th hin hnh di:
Nh vy trong GNED, hai ch giao din c nh hng qua li ln nhau. Nhng thay i trong ch ny cng nh hng n ch cn li. By gi chng ta s s dng cc module ny th nghim chc nng ca b to s ngu nhin (Random Number Generator - RNG). Trc tin, kch phi chut vo tng module v chn chc nng Rename i tn cho cc module theo th t ln lt l rng, checker v counter. rng s sinh ra cc s ri chuyn qua cho checker. checker s tnh li trn mi s v ch chuyn cho counter cc s chn, cc s l s b b i. counter s ghi li s lng s chn m nhn c trong tng pht, v s ny s c truyn i cho cc thnh phn bn ngoi khi c yu cu. Ta s dng cng c to kt ni theo m hnh m t trn. rng phi ni vi checker v checker ni vi counter.
Trang 42
OMNet++
counter cn c nhim v nhn v gi message vi cc thnh phn bn ngoi, do ta phi to thm cc kt ni cn thit. kt ni mt module vi bn ngoi, ko r chut t tm module ti bin ca vng mu xm. kt ni ny l hai chiu, ta tin hnh to kt ni theo chiu ngc li t bin vo tm ca module.
By gi ta i tn cho module kt hp thnh rnd_eval bng cch kch phi chut vo dng ch Module nm gc trn tri ca vng mu xm, chn chc nng Rename trong trnh n ng cnh tng ng. Save file vi tn Random_Number_Evaluator.ned, chng ta c mt file NED hon chnh.
4.3. Lm vic vi nhiu file NED - Cc chc nng chnh sa nng cao
Nhn nt conductor. to mt ti liu NED mi. To mt module con mi c tn l
Trang 43
OMNet++
Cc module rnd_eval s ln lt c t tn l rnd_eval, rnd_eval1, rnd_eval2. Sau ta to kt ni hai chiu gia module conductor vi cc module rnd_eval va thm vo. Module conductor s thnh thong yu cu cc s liu ca cc module rnd_eval v cc module ny s gi message tr li.
Trang 44
OMNet++
Trang 45
OMNet++
Save file mi ny vi tn conductor.ned. th nghim ca chng ta thc s hot ng, chng ta cn phi khai bo Rnd, Checker, Counter nh cc module n gin. Bc u tin, chng ta to 3 module n gin. n nt , hoc s dng trnh n ng cnh trn Tree View thm vo mt module n gin. Ca s Module Properties xut hin, chn tab Reneral v g vo Name tn ca module Rnd.
Chn tab Parameters nh ngha cc tham s (cc tham s ny c th s c cc RNG s dng), bng cch ny bn c th cu hnh li sau ny.
Trang 46
OMNet++
Chn tab Gates v khai bo mt cng, qua cc s ngu nhin sinh ra s c truyn i. Bn c th s dng trng End-line comment vit ch thch cho chc nng ca cng. By gi module Rnd sn sng v bn c th iu khin hot ng ca module ny thng qua cc file tng ng Rnd.cc v Rnd.h. Tng t nh trn, ta tip tc khai bo cc module n gin c kiu Checker v Counter.
Tip theo ta thay i kiu ca mi module con bn trong module rnd_eval cho ph hp vi cc kiu module n gin mi m ta va to ra. Kch chut phi vo tn module rng, chn Properties..., sau chn trong Type kiu Rnd.
Trang 47
OMNet++
Bn thy rng cc module con rng, checker v counter c cc kiu module tng ng. Ngoi ra, nu bn kch chut phi vo simple Rnd v chn Show NED code..., bn s thy nhng khai bo bn thc hin trong ca s Module Properties trn c th hin di dng m:
Quay li vi fiel Conductor.ned, file ny s dng module rnd_eval, mt module kt hp c nh ngha trong file Random_Number_Evaluator.ned. Do bn
Trang 48
OMNet++
G tn Random_Number_Evaluator vo trng Name (ch khng g thm phn m rng .ned). Ngoi ra bn c th thm vo cc li ch thch hai ct tip theo. Save file conductor.ned. Bn hon thnh mt m hnh mng n gin. chy c m hnh ny, bn phi trin khai cc module n gin trong C++ v xy dng cc file .exe.
Trang 49
OMNet++
5. MODULE N GIN
5.1 Module n gin trong OMNeT++
Ta s dng C++ xy dng cc simple module thc hin cc s kin, hay ni khc i l thc hin cc hot ng (behaviour) ca m hnh. Cc module do ngi lp trnh xy dng thng l cc lp k tha t lp cSimpleModule trong th vin ca OMNeT++. Mi module thng cha cc hm sau: void initialize() void handleMessage(cMessage *msg) void activity() void finish()
Hm khi to initialize() Trong qu trnh khi to, OMNeT++ s xy dng mng: n to ra cc module n v cc module kt hp (compound module). Sau kt ni chng theo cc khai bo v nh ngha trong file NED. Hm handleMessage() and activity() Cc hm ny c gi khi trong qu trnh x l s kin. Nh vy hu ht hot ng ca h thng c m phng s c lp trnh trong cc hm ny. Hm handleMessage() s c nhn m phng (simulation kernel) gi khi module nhn c mt gi tin. V thng thng, ta ch yu xy dng hm handleMessage() thay v hm activity(). Hm finish() Hm finish() c gi khi qu trnh m phng kt thc thnh cng. Ngoi ra, mt ng dng ch yu ca hm ny cn l thu thp cc thng k v qu trnh m phng.
Trang 50
OMNet++
Cc tham s ny l tu chn. Gi tr ca cc tham s ny l khc nhau trn tng kt ni, ph thuc vo kiu ca lin kt (hay cn gi l kiu ca knh truyn - channel type).
Xt VD sau:
// file: swp.cc #include <omnetpp.h> // module class declaration: class SlidingWindowProtocol : public cSimpleModule { Module_Class_Members(SlidingWindowProtocol,cSimpleModule,0) virtual void handleMessage(cMessage *msg); }; // module type registration: Define_Module( SlidingWindowProtocol ); // implementation of the module class: void SlidingWindowProtocol::handleMessage(cMessage *msg) { ... }
Trang 51
OMNet++
simple SlidingWindowProtocol parameters: windowSize: numeric const; gates: in: fromNetw, fromHigherLayer; out: toNetw, toHigherLayer; endsimple
Dng lnh ny s khin cho OMNeT++ bit rng ta mun dng lp SlidingWindowProtocol di dng 1 module n. ng thi OMNeT++ framework s tm file NED c cng tn cha khai bo v module ny (simple SlidingWindowProtocol ... endsimple) xc nh cc cng v cc tham s m module ny cn c.
Ch rng cc hm receive() v wait() khng c s dng trong vic xy dng hm handleMessage(), m ch dng khi ta mun xy dng hm activity(). VD 1:
Trang 52
OMNet++
class FooProtocol : public cSimpleModule { protected: // state variables // ... virtual void processMsgFromHigherLayer(cMessage *packet); virtual void processMsgFromLowerLayer(FooPacket *packet); virtual void processTimer(cMessage *timer); public: Module_Class_Members(FooProtocol, cSimpleModule, 0); virtual void initialize(); virtual void handleMessage(cMessage *msg); }; // ... void FooProtocol::handleMessage(cMessage *msg) { if (msg->isSelfMessage()) processTimer(msg); else if (msg->arrivedOn("fromNetw")) processMsgFromLowerLayer(check_and_cast<FooPacket *>(msg)); else processMsgFromHigherLayer(msg); }
5.5.2 Hm activity()
Cc hm quan trng m ta c th gi trong hm ny bao gm: receive() wait() send() scheduleAt() cancelEvent() end()
Trang 53
OMNet++
V d:
send(msg, "outGate"); send(msg, "outGates", i); // send via outGates[i]
5.6.2 Broadcasts
Khi ta mun cng mt gi tin ti nhiu nt ch ng thi, th dng phng php to ra nhiu bn sao ca gi tin v gi chng i. V d:
for (int i=0; i<n; i++) { cMessage *copy = (cMessage *) msg->dup(); send(copy, "out", i); } delete msg;
Trang 54
OMNet++
V d:
sendDelayed(msg, 0.005, "outGate");
V d
cModule *destinationModule = parentModule()->submodule("node2"); double delay = truncnormal(0.005, 0.0001); sendDirect(new cMessage("packet"), delay, destinationModule, "inputGate");
5.6.5 Gi nh k
scheduleAt(absoluteTime, msg); scheduleAt(simtime()+delta, msg);
Trang 55
OMNet++
Gate ID Cc module cng c lu tr trong mt mng. Vi tr ca cng trong mng i l gate ID. xc nh gate ID, ta dng hm id() hoc hm findGate()
int id = outgate->id(); or: int id1 = findGate("out"); int id2 = findGate("outvect",5);
Nh , c th gi v nhn gi tin thng qua tham s l gate ID. Thng thng th vic s dng gate ID s nhanh hn l dng tn cng.
5.7.2 Cc tham s kt ni
Cc thng s thng s c bn ca ng truyn: tr, t l bit li, tc truyn c biu din thng qua i tng channel.
cChannel *chan = outgate->channel();
cBasicChannel *chan = check_and_cast<cBasicChannel *>(outgate->channel()); double d = chan->delay(); double e = chan->error(); double r = chan->datarate();
5.8 T ng to module
Trong mt s tnh hung, ta cn phi t ng to v hy cc module. Chng hn khi m phng mt mng di ng, ta cn to mt module mi khi ngi dng tin vo vng kt ni v hy module ny khi ngi ra khi vng kt ni. Qu trnh trn gm 5 bc: 1. Tm loi module. 2. To module 3. Thit lp cc tham s v kch thc cng (nu cn) 4. Gi hm xy dng (build out) cc module con v hon thnh module chnh. 5. Gi hm to cc gi tin ch ng (activation message) cho mi module n. V d:
// find factory object cModuleType *moduleType = findModuleType("WirelessNode"); // create (possibly compound) module and build its submodules (if any)
Trang 56
OMNet++
cModule *module = moduleType->create("node", this); module->buildInside(); // create activation message module->scheduleStart( simTime() );
Hy module
module->deleteModule();
To cc kt ni
srcGate->connectTo(destGate);
Hy kt ni
srcGate->disconnect();
Trang 57
OMNet++
6. MESSAGE
6.1. Message v Packet 6.1.1. Lp cMessage
cMessage l mt lp trung tm ca OMNeT++. i tng ca lp cMessage v cc lp con ca n c th m hnh ho c rt nhiu i tng nh cc message, cc gi tin (packet), frame, cell, bit, cc tn hiu truyn trong mng, cc thc th truyn trong mt h thng... Thuc tnh Mt i tng ca lp cMessage c mt s thuc tnh, mt s c s dng bi phn nhn m phng, mt s khc c cung cp cho ngi lp trnh. Tn - name: thuc tnh l mt chui (const char *) m ngi lp trnh c th s dng tu . Tn ca message xut hin rt nhiu ni trong Tkenv v nn c chn c ngha. Thuc tnh ny k tha t lp cObject. Kiu message - message kind: thuc tnh ny cha thng tin v kiu ca message. di - length (c tnh theo bit): c s dng tnh tr khi message c truyn thng qua mt kt ni c tc truyn d liu c gn gi tr xc nh. C bit li - bit error flag: thuc tnh ny c thit lp bng true bi phn nhn m phng vi xc sut bng 1-(1-ber)length khi message c gi thng qua mt kt ni c tc truyn d liu xc nh (ber). Quyn u tin - priority: c s dng bi phn nhn m phng sp xp cc message trong danh sch hng i (message queue - FES) c cng thi gian ti. Mc thi gian - time stamp: thuc tnh ny cho php ngi s dng nh du thi gian v d nh nh du thi im message c xp vo hng i hoc c gi li. Cc thuc tnh khc v cc thnh phn d liu gip cho ngi lp trnh lm vic d dng hn nh: danh sch tham s (parameter list), message ng gi (encapsulated message), thng tin iu khin (control info) v con tr ng cnh (context pointer. Mt s cc thuc tnh ch c (read-only attribute) lu gi cc thng tin v vic gi message, cc thng tin v cc module, cng ngun v ch, thi gian gi v thi gian ti ca cc message. Hu ht cc thuc tnh ny u c s dng bi phn nhn m phng khi cc message nm trong FES, tuy nhin khi cc module nhn c message, cc thng tin ny vn cn tn ti.
Cch s dng
Trang 58
OMNet++
Hm khi to ca lp cMessage c th nhn mt vi i s. Thng thng, mt i tng ca lp cMessage s nhn vo hai i s l tn (kiu string) v kiu message (kiu int): cMessage *msg = new cMessage("MessageName", msgKind); Tt c cc i s u l tu chn, do khai bo mt i tng nh sau cng hp l cMessage *msg = new cMessage(); hay cMessage *msg = new cMessage("MessageName"); Khi khng c i s, mc nh i tng mi to ra c tn l v kiu l 0. Hm to ca lp cMessage c th nhn vo nhiu i s hn (length, priority, bit error flag), tuy nhin t gi tr cho cc thuc tnh ta cng khng nht thit phi s dng hm to. Ta c th s dng hm set...() gn gi tr cho tng thuc tnh. msg->setKind( kind ); msg->setLength( length ); msg->setPriority( priority ); msg->setBitError( err ); msg->setTimestamp(); msg->setTimestamp( simtime ); Ngoi ra ta c th s dng cc hm sau ly gi tr ca cc tham s: int k = msg->kind(); int p = msg->priority(); int l = msg->length(); bool b = msg->hasBitError(); simtime_t t = msg->timestamp(); Nhn i message Ta c th thc hin sao chp mt message bng cch: cMessage *copy = (cMessage *) msg->dup(); hoc cMessage *copy = new cMessage( *msg ); Cch ny c th p dng vi bt k mt i tng no trong OMNeT++. Message mi c to l mt bn copy chnh xc ca message c, bao gm c cc tham s...
6.1.2. Self-Message
S dng self-message Cc message thng c s dng m t cc s kin xy ra bn trong ca mt module. Trong mt s trng hp, message c th coi nh mt b nh thi dng xc nh thi im din ra mt s kin no . Nhng message s dng trong nhng
Trang 59
OMNet++
trng hp nh vy c gi l self-message. Tuy nhin self-message vn l message bnh thng, l mt i tng ca lp cMessage hoc mt lp con k tha t n. Khi mt message c phn n mt module bi phn nhn m phng, bn c th gi hm isSelfMessage() kim tra xem n c phi l mt self-message hay khng; ni mt cch khc l kim tra xem message nhn c c phi l mt scheduled message (cc message dng nh thi im din ra mt s kin trong module) hay l cc message c gi bi mt hm send...() no . Ngoi ra ngi s dng c th s dng hm isScheduled() kim tra, hm ny s tr v true nu message nhn c l mt scheduled message (nhng message c xc nh bi hm scheduleAt()). Mt scheduled message cng c th b hu b bi hm cancelEvent(). bool isSelfMessage(); bool isScheduled(); Cc hm sau tr v thi gian to, thit lp v thi gian ti ca mt message. simtime_t creationTime() simtime_t sendingTime(); simtime_t arrivalTime(); Khi mt self-message c thit lp, thi gian ti ca message s l thi gian n s c chuyn ti module cn thit. Con tr ng cnh (Context Pointer) Xt hai hm setContextPointer() v contextPointer(): Hm setContextPointer() nhn mt con tr ng cnh (kiu void) lm i s thit lp ng cnh cho message. Hm contextPointer() tr v mt con tr kiu void, cha ng cnh ca message tng ng. void *context =...; msg->setContextPointer( context ); void *context2 = msg->contextPointer(); Ngi lp trnh c th s dng con tr ng cnh cho nhiu mc ch v phn nhn m phng khng can thip n con tr ny. Tuy nhin trn thc t, con tr ng cnh thng c s dng khi mt module thit lp mt vi self-message (b nh thi), module s cn phi xc nh c khi no mt self-message quay li module, hay ni mt cch khc n cn phi xc nh c khi no b nh thi hot ng v phi lm g sau . Khi con tr ng cnh s c to ra tr ti mt cu trc d liu ca module, mang y thng tin ng cnh v s kin sp din ra.
Trang 60
OMNet++
int arrivalModuleId(); int arrivalGateId(); Hai hm c s dng kt hp module id vi gate id thnh mt con tr i tng cng (gate object pointer): cGate *senderGate(); cGate *arrivalGate(); Cc hm dng kim tra xem message gi n c nhn vo t cng no thng qua id hoc tn + ch s ca cng: bool arrivedOn(int id); bool arrivedOn(const char *gname, int gindex=0); Cc hm tr li thi gian to message, thi gian gi ln cui cng v thi gian ti ca message: simtime_t creationTime() simtime_t sendingTime(); simtime_t arrivalTime(); Thng tin iu khin Mt trong nhng lnh vc ng dng ch yu ca OMNeT++ l mng thng tin. Trong lnh vc ny, cc lp giao thc thng c trin khai nh nhng module lm nhim trao i cc gi tin. Lp cMessage cng cung cp mt lp con ca n khai bo cc gi tin. Tuy nhin, vic thng tin gia cc lp giao thc cn phi c nhng thng tin ph c gn km cng vi gi tin. Ly v d, khi lp TCP gi mt gi tin xung lp IP, gi tin cn phi c a ch IP nhn v mt s tham s khc na. Khi lp IP chp nhn gi tin t lp TCP (c thng tin a ch IP nhn trong phn header ca gi tin), n s chuyn ngc cc thng tin cn thit ln cho lp TCP, t nht l a ch IP ngun gi gi tin. Cc thng tin thm vo c coi l cc i tng thng tin iu khin (control info object) trong OMNeT++. Cc i tng thng tin iu khin ny l i tng ca lp con k tha t lp cPolymorphic (mt lp khng c thnh phn d liu), v c gn km vo cc gi tin. Cc hm c th s dng cho mc ch ny: void setControlInfo(cPolymorphic *controlInfo); cPolymorphic *controlInfo(); cPolymorphic *removeControlInfo(); Xc nh giao thc Trong cc m hnh giao thc ca OMNeT++, kiu giao thc thng c i din bi cu trc ca cc gi tin s dng trong giao thc v c th hin nh mt lp message. V d nh lp IPv6Datagram tng ng vi cc datagram ca IPv6, hay lp EthernetFrame tng ng vi cc frame ca Ethernet. Cc kiu n v d liu ca giao thc (PDU - Protocol Data Unit) thng c th hin nh mt trng trong lp message.
Trang 61
OMNet++
Trong C++, ton t dynamic_cast c th c s dng kim tra xem mt i tng message c thuc mt kiu giao thc xc nh no hay khng. cMessage *msg = receive(); if (dynamic_cast<IPv6Datagram *>(msg) != NULL) { IPv6Datagram *datagram = (IPv6Datagram *)msg; ... }
6.1.4. ng gi (Encapsulation)
ng gi gi tin Thc s cn thit phi ng gi mt message khi bn tin hnh m phng cc lp giao thc ca mt mng my tnh. Cc tt nht ng gi mt message l thm vo message mt danh sch cc tham s c bit. OMNeT++ cung cp cho ngi s dng hm encapsulate() ng gi cc message. Kch thc (chiu di) ca cc message s tng ln mt phn bng kch thc ca phn thng tin thm vo. cMessage *userdata = new cMessage("userdata"); userdata->setLength(8*2000); cMessage *tcpseg = new cMessage("tcp"); tcpseg->setLength(8*24); tcpseg->encapsulate(userdata); ev << tcpseg->length() << endl; // --> 8*2024 = 16192 Mt message ch c th mang mt phn thng tin thm. iu ny c ngha l nu hm encapsulate() c gi ln th hai, n s sinh ra li. Ngoi ra li cng pht sinh nu message c ng gi khng thuc mt module no. Bn c th ly li phn thng tin thm vo bng hm decapsulate() cMessage *userdata = tcpseg->decapsulate(); Hm decapsualate() s lm chiu di ca message (tr trng hp phn thm vo c chiu di bng 0). Nu chiu di ca message sau khi thc hin lnh tr thnh s m, s xut hin li. Hm encapsulatedMsg() tr v mt con tr tr ti message c ng gi, nu gi tr tr v bng NULL c ngha l khng c message no c ng gi. ng gi nhiu message Lp cMessage khng trc tip h tr vic thm nhiu hn mt message vo mt i tng message (message object), nhng bn c th to mt lp con ca lp cMessage v thm vo cc chc nng cn thit. Bn cng c th t nhiu message trong mt mng c kch thc c nh hoc mt mng cp pht ng, hoc bn c th s dng mt s lp STL nh std::vector hay std::list. Tuy nhin c mt im m bn cn lu khi s dng cc lp ny l: lp message ca bn phi chim quyn s hu ca cc message c thm vo, v phi
Trang 62
OMNet++
gii phng chng khi chng b xa khi danh sch. Nhng vic ny c thc hin qua hai hm take() v drop(). V d thm vo lp mt std::list c gi l messages cha danh sch cc con tr message, bn nn thm on m sau: void MessageBundleMessage::insertMessage(cMessage *msg) { take(msg); // take ownership messages.push_back(msg); // store pointer } void MessageBundleMessage::removeMessage(cMessage *msg) { messages.remove(msg); // remove pointer drop(msg); // release ownership } Bn cng cn phi thm vo mt hm operator=() m bo cc i tng message ca bn c th c sao chp hoc nhn i (y l nhng iu rt cn thit trong qu trnh m phng).
Trang 63
OMNet++
msg->addPar("conn") = (void *) conn; msg->par("conn").configPointer(NULL,NULL,sizeof(struct conn_t)); Thm tham s Phng php tt nht m rng cc message vi nhng trng d liu mi l nh ngha cc message (xem phn 5.2). Tuy nhin ta c th s dng mt phng php khc (khng c khuyn khch) thm cc trng d liu mi cho message thng qua cc i tng cPar. Nhc im ca phng php ny l tn b nh v thi gian thc hin chm. Cc i tng ca cPar thng c kch thc ln v kh phc tp. Mt khc khi s dng cc i tng cPar cng rt d sinh ra li bi cc i tng ny phi c thm vo ng v c lp i vi mi i tng message. Tuy nhin nu bn vn cn s dng cPar, n s cung cp cho bn mt s hm c bn. Hm addPar() c dng thm mt tham s mi cho message. Hm hasPar() kim tra xem mt message c cc tham s hay khng. Cc tham s ca message c th c truy nhp thng qua ch s ca mng tham s. Hm findPar() tr v ch s ca mt tham s v tr v -1 nu tham s khng tn ti. Cc tham s cng c th c truy nhp bng cch vit chng hm par(). V d: msg->addPar("destAddr"); msg->par("destAddr") = 168; ... long destAddr = msg->par("destAddr");
Trang 64
OMNet++
Ta xt mt v d n gin. Gi s rng bn cn cc i tng message phi c thm a ch ca ngun, ch v b m bc truyn, bn c th vit mt file mypacket.msg nh sau: message MyPacket { fields: int srcAddress; int destAddress; int hops = 32; }; Nu bn bin dch file mypacket.msg, trnh bin dch s t ng sinh ra hai file C++ tng ng c tn l mypacket_m.h v file mypacket_m.cc. File mypacket_m.h cha cc khai bo ca lp MyPacket (lp C++ tng ng vi nh ngha message trong file mypacket.msg) v bn c th t file ny vo trong m C++ iu khin hot ng ca i tng MyPacket. File mypacket_m.h s cha cc khai bo lp nh sau: class MyPacket : public cMessage { ... virtual int getSrcAddress() const; virtual void setSrcAddress(int srcAddress); ... }; Do trong file C++ bn c th s dng lp MyPacket nh sau: #include "mypacket_m.h" ... MyPacket *pkt = new MyPacket("pkt"); pkt->setSrcAddress( localAddr ); ... File mypacket_m.cc cha cc trin khai ca lp MyPacket cho php bn kim tra nhng cu trc d liu trong giao din ca Tkenv (Tkenv GUI). File mypacket_m.cc nn c bin dch v thit lp lin kt vi m hnh m phng ca bn (nu bn s dng cng c opp_makemake to cc makefiles, th cc cng vic lin quan n file .cc s t ng c thc hin). Khi nim - nh ngha message C nhiu kin khng r rng v mc ch cng nh khi nim v nh ngha message. Tuy nhin chng ta phi xc nh r rng rng, nh ngha message khng phi l:
Trang 65
OMNet++
... s c gng m phng cc chc nng ca C++ nhng vi mt c php khc. Ch n gin vic nh ngha message ch l xc nh cc d liu (hay xc nh mt giao tip truy nhp ti d liu) ch khng phi l bt k mt kiu thuc tnh no. ... mt cng c sinh m. iu ny ch ng vi vic nh ngha ni dung ca message v cc cu trc d liu m bn s dng trong message. Vic nh ngha cc hm kim sot hot ng ca message khng c h tr. Hn na c vic s dng c php ny sinh ra cc lp v cc cu trc bn trong ca cc module n gin cng khng c khuyn khch.
OMNet++
virtual bool getHasPayload() const; virtual void setHasPayload(bool hasPayload); Ch l tt c cc hm trn u c kiu l vitual, tc l bn c kh nng thc hin chng hm cc lp con. Hai hm to cng c sinh ra: mt nhp tn i tng v kiu message v mt l hm to sao chp (to mt i tng mi l bn sao ca i tng c). FooPacket(const char *name=NULL, int kind=0); FooPacket(const FooPacket& other); Ngoi ra trnh bin dch cng t ng sinh ra trong lp cc hm nh operator=() v dup() (cc hm dng sao chp v nhn bn i tng). Bn c th s dng cc kiu d liu di y khai bo cho cc trng trong nh ngha message: bool char, unsigned char short, unsigned short int, unsigned int long, unsigned long double Gi tr khi to ca cc trng mc nh bng 0. Gi tr khi to Bn c th khi to gi tr cho cc trng trong mt message theo c php sau: message FooPacket { fields: int sourceAddress = 0; int destAddress = 0; bool hasPayload = false; }; Phn m khi to trong on khai bo trn s c thay th bi cc hm to trong cc lp C++. Khai bo kiu enum Bn c th khai bo cc trng kiu int (hay cc kiu s nguyn khc) nhn gi tr trong mt enum. Trong trng hp s dng enum, trnh bin dch c th sinh m cho php Tkenv hin th gi tr ca trng di dng cc biu tng. V d: message FooPacket {
Trang 67
OMNet++
fields: int payloadType enum(PayloadTypes); }; Kiu enum phi c khai bo ring r trong file .msg. Mng kch thc c nh C th s dng cc mng c kch thc c nh: message FooPacket { fields: long route[4]; }; Trong trng hp ny cc hm getter v setter s c thm mt tham s ph l ch s ca mng. virtual long getRoute(unsigned k) const; virtual void setRoute(unsigned k, long route); Mng ng message FooPacket { fields: long route[]; }; Trong trng hp ny, lp C++ c sinh ra s c thm hai hm, ngoi cc hm setter v getter bnh thng. Mt hm t kch thc ca mng v hm cn li tr v kch thc hin ti ca mng. virtual long getRoute(unsigned k) const; virtual void setRoute(unsigned k, long route); virtual unsigned getRouteArraySize() const; virtual void setRouteArraySize(unsigned n); Hm set...ArraySize() cp pht b nh cho mt mng mi. Cc gi tr tn ti trong mng s c duy tr (c sao chp sang mt mng mi). Kch thc mc nh ca mng l 0. iu ny c ngha l bn cn phi gi hm set...ArraySize() trc khi bn c th bt u nhp cc phn t ca mng. Chui message FooPacket { fields:
Trang 68
OMNet++
string hostName; }; Cc hm getter v setter s c dng nh sau: virtual const char *getHostName() const; virtual void setHostName(const char *hostName); Ch : mt chui khc vi mt mng k t. Mng k t c coi nh l mt mng thng thng. V d: message FooPacket { fields: char chars[10]; }; Cc hm getter v setter tng ng s l: virtual char getChars(unsigned k); virtual void setChars(unsigned k, char a);
Trang 69
OMNet++
C php khai bo mt lp cng tng t nh c php khai bo mt message ch khc nhau t kha, class thay cho message. class MyClass extends cObject { fields: ... }; Ch rng nu khai bo mt lp m khng c t kho extends th lp c to ra s khng c k tha t lp cObject. Do trong lp s khng c mt s hm nh name(), nameClass(), ... to mt lp c y nhng hm ny nht thit hm phi c khai bo extends cObject. Khai bo cu trc Bn c th to cc cu trc kiu C s dng nh cc trng d liu trong cc lp message. Cu trc kiu C c ngha l ch cha d liu v khng c hm (trong thc t th cu trc trong C++ c th cha cc hm). C php khai bo struct: struct MyStruct { fields: char array[10]; short version; }; C php khai bo ny cng tng t nh c php khai bo message. Tuy nhin phn m C++ sinh ra li khc nhau. Cc cu trc c t ng sinh ra s khng c cc hm setter v getter, thay vo cc thnh phn d liu ca struct c kiu truy xut l public (cc d liu thnh phn trong message c kiu truy xut l private - khng cho php truy xut t bn ngoi). i vi on khai bo trn, phn m sinh ra s c dng nh sau: // generated C++ struct MyStruct { char array[10]; short version; }; Cc trng ca mt struct c th c kiu d liu c bn hoc l mt struct khc nhng n khng th c kiu chui hoc cha mt lp. Quan h k tha cng c h tr i vi cc struct: struct Base
Trang 70
OMNet++
{ ... }; struct MyStruct extends Base { ... }; Bi v mt cu trc khng cha cc hm thnh phn, do n c mt s gii hn: Khng h tr cc mng ng (khng th khai bo cc hm cp pht b nh cho mng). Cc trng tru tng (generation gap) khng c s dng, bi v chng c xy dng da trn cc hm o. Khi nim trng tru tng (abstract field) s c m t phn sau. S dng lp v cu trc trong message Nu bn c mt cu trc khai bo c tn l IPAddress, bn c th s dng n trong message nh sau: message FooPacket { fields: IPAddress src; }; Cu trc IPAddress phi c khai bo trc trong file .msg hoc n phi l mt kiu C++ (xem phn Announcing C++ types). Cc hm getter v setter tng ng: virtual const IPAddress& getSrc() const; virtual void setSrc(const IPAddress& src);
Trang 71
OMNet++
cplusplus {{ #include "ipaddress.h" }}; struct IPAddress; Tc dng ca ba dng u tin ch n gin l sao chp cu lnh #include ipaddress.h vo trong file foopacket_m.h trnh bin dch bit v lp IPAddress. Trnh bin dch s khng c gng kim tra ngha ca cc on text nm trong thn ca khai bo cplusplus{{ ... }}. Dng tip theo s ch r cho trnh bin dch IPAddress l mt cu trc. Nhng thng tin ny s nh hng n phn m c sinh ra. Tng t nh vy trong trng hp bn mun s dng mt lp trong message, gi s tn lp l sSubQueue th dng cui cng trong on khai bo bn i li l: class cSubQueue; C php trn c s dng trong trng hp cc lp u l lp con trc tip hoc gin tip ca lp cObject. Nu mt lp khng c quan h tha k vi lp cObject th bn phi s dng thm t kho noncobject (nu khng trnh bin dch message s nhm v file c to ra s gy ra li khi bin dch bng trnh bin dch ca C++): class noncobject IPAddress;
Trang 72
OMNet++
v ch bi v chng s c vit chng li v nhng thay i s bin mt khi cc file ny c t ng to li. Tuy nhin, vic lp trnh hng i tng c th gii quyt c vn ny. Mt lp c t ng sinh ra c th d dng thay i thng qua cc lp con ca n. Ta c th nh ngha li bt k hm no trong lp con cho ph hp vi mc ch ca mnh. Qu trnh ny c gi l thit k mu Generation Gap. C php: message FooPacket { properties: customize = true; fields: int payloadLength; }; Thuc tnh customize cho php s dng mu Generation Gap. Vi on khai bo trn, trnh bin dch message s to ra lp FooPacket_Base ch khng phi l lp FooPacket nh bnh thng. Khi thay i cc hm bn s phi to mt lp con t lp FooPacket_Base, ta gi l lp FooPacket. class FooPacket_Base : public cMessage { protected: int src; // make constructors protected to avoid instantiation FooPacket_Base(const char *name=NULL); FooPacket_Base(const FooPacket_Base& other); public: ... virtual int getSrc() const; virtual void setSrc(int src); }; Tuy vy cng khng c nhiu hm c th c vit li trong lp FooPacket (c nhiu hm khng cho php vit li nh cc hm khi to do tnh cht ca quan h k tha): class FooPacket : public FooPacket_Base { public: FooPacket(const char *name=NULL): FooPacket_Base(name){} FooPacket(const FooPacket& other): FooPacket_Base(other){}
Trang 73
OMNet++
FooPacket& operator=(const FooPacket& other) { FooPacket_Base::operator=(other); return *this; } virtual cObject *dup() { return new FooPacket(*this); } }; Register_Class(FooPacket); Quay tr v vi v d v thay i chiu di gi tin, ta c th vit on m nh sau: class FooPacket : public FooPacket_Base { // here come the mandatory methods: constructor, // copy contructor, operator=(), dup() // ... virtual void setPayloadLength(int newlength); } void FooPacket::setPayloadLength(int newlength) { // adjust message length setLength(length()-getPayloadLength()+newlength); // set the new length FooPacket_Base::setPayloadLength(newlength); } Trng tru tng Mc ch ca trng tru tng l cho php ngi s dng c th vit chng li cch thc gi tr ca trng c lu tr bn trong lp. Bn c th khai bo bt k trng no l trng tru tng vi c php sau: message FooPacket { properties: customize = true; fields:
Trang 74
OMNet++
abstract bool urgentBit; }; Vi mt trng tru tng, trnh bin dch s to ra mt thuc tnh ca lp khng c d liu thnh phn v cc hm getter/setter s tr thnh cc hm thun o (cc hm thun o l cc hm khng c thn hm): virtual bool getUrgentBit() const = 0; virtual void setUrgentBit(bool urgentBit) = 0;
Trang 75
OMNet++
protected: std::vector<Item> foo; std::stack<Item> bar; public: STLMessage(const char *name=NULL, int kind=0) : STLMessage_Base(name,kind) {} STLMessage(const {operator=(other);} STLMessage& other) : STLMessage_Base(other.name())
STLMessage& operator=(const STLMessage& other) { if (&other==this) return *this; STLMessage_Base::operator=(other); foo = other.foo; bar = other.bar; return *this; } virtual cObject *dup() {return new STLMessage(*this);} // foo methods virtual void setFooArraySize(unsigned int size) {} virtual unsigned int getFooArraySize() const {return foo.size();} virtual Item& getFoo(unsigned int k) {return foo[k];} virtual void setFoo(unsigned int k, const Item& afoo) {foo[k]=afoo;} virtual void addToFoo(const Item& afoo) {foo.push_back(afoo);} // bar methods virtual void setBarArraySize(unsigned int size) {} virtual unsigned int getBarArraySize() const {return bar.size();} virtual Item& getBar(unsigned int k) {throw new cRuntimeException("sorry");} virtual void setBar(unsigned int k, const Item& bar) {throw new cRuntimeException("sorry");} virtual void barPush(const Item& abar) {bar.push(abar);} virtual void barPop() {bar.pop();} virtual Item& barTop() {return bar.top();} }; Register_Class(STLMessage); Mt s ch : Cc hm setFooArraySize(), setBarArraySize() l tha.
Trang 76
OMNet++
Hm getBar(int k) khng th c trin khai v kiu stack khng cho php truy nhp cc phn t theo ch s. Hm setBar(int k, const Item&) cng khng c trin khai cng vi l do nh trn.
Trang 77
OMNet++
o Sau , tt c cc file trn s c lin kt (link) vi cc th vin cn thit to thnh file .exe . C th, ta cn phi lin kt vi cc th vin sau: Phn nhn m phng c gi l sim_std (nh cc file libsim_std.a, sim_std.lib, etc). Giao din ngi dng: cung cp th vin mi trng (file libenvir.a, etc) v cc tin ch tkenv v cmdenv (libtkenv.a, libcmdenv.a, etc). Cc file .o (hoc .obj) phi c lin kt ti th vin mi trng cng vi hoc tkenv hoc cmdenv.
Hnh di y cho chng ta hnh nh qu trnh x l khi m hnh c xy dng v hot ng.
Trang 78
OMNet++
Lnh ny s to ra file c tn l Makefile. Sau g tip make to file chy. Tn ca file chy ny s trng vi tn th mc cha cc file ngun.
to file chy, ta g
nmake -f Makefile.vc
Trang 79
OMNet++
Trang 80
OMNet++
Tictoc1 l 1 module tng hp, gm 2 submodules, tic v toc. 2 module thnh phn ny u l cc i tng ca module c kiu Txc1. Sau , ta kt ni cng ra ca tic ti cng vo ca toc v ngc li. tr khi truyn l 100ms. Txc1 l 1 module n (tc l n c cp thp nht trong NED file v c vit bng C++). Txc1 c 1 cng vo tn l in v 1 cng ra t tn l out (simple .. endsimple).
Trang 81
OMNet++
} void Txc1::handleMessage(cMessage *msg) { // The handleMessage() method is called whenever a message arrives // at the module. Here, we just send it to the other module, through // gate `out'. Because both `tic' and `toc' does the same, the message // will bounce between the two. send(msg, "out"); }
Lp Txc1 k tha t cSimpleModule v 2 phng thc initialize(), handleMessage(). Cc ch dn c th c trnh by phn [5.5] v [5.6] 4. To Makefile: - Trong UNIX: $ opp_makemake - Trong Windows (VC++)
5. Bin dch v lin kt to file chy - UNIX $ make - Windows+MSVC: >nmake f Makefile.vc
Trang 82
OMNet++
6. Mun chy c, ta cn phi to file omnetpp.ini bo cho trnh m phng bit ta mun chy m phng i vi mng no. iu ny cng c ngha nhiu mng c th chung 1 trnh m phng. File omnetpp.ini trong v d ny cng rt n gin [General] network = tictoc1
Trang 83
OMNet++
Click OK 8. Nhn nt Run bt u qu trnh m phng thy 2 nt mng trao i cc gi tin cho nhau.
Ca s chnh hin th thi gian m phng. N hin thi im ng vi mi ln truyn tin. 9. Ta c th hiu chnh ch chy: dng - F8 (STOP button), chy tng bc F4) V d: Step mode
Trang 84
OMNet++
Trang 85
OMNet++
S hp dn ca WLAN l tnh linh hot ca chng. Chng c th m rng m rng truy cp ti cc mng cc b, nh Intranet, cng nh h tr s truy nhp bng rng ti Internet ti cc Hotspot. WLAN c th cung cp kt ni khng dy nhanh chng v d dng ti cc my tnh, cc my mc hay cc h thng trong mt khu vc, ni m cc h thng c s h tng truyn thng c nh khng tn ti hoc s truy nhp nh vy l khng c php. Ngi dng c th c nh hoc di ng hoc thm ch c th ang ngi trn mt phng tin chuyn ng.
Trang 86
OMNet++
Mt vi hnh v sau s a ra cho ta ci nhn tng quan v kh nng ng dng ca WLAN: Kh nng s dng WLAN m rng mng hu tuyn thng thng, vi tc cao v tin li trong truy nhp mng
Hnh II.1.1 - WLAN kt ni mng hu tuyn Kh nng n gin ha vic kt ni mng gia hai ta nh m gia chng l a hnh phc tp kh thi cng i vi mng thng thng
hay cc khu vc c a hnh lng cho vn c th truy cp mng bnh thng nh cc ni khc
Trang 87
OMNet++
T cc vn phng, nh ring
n cc khu ln hn nhiu nh cc trng i hc, cc khu chung c u c th truy cp mng vi tc cao, m vic trin khai li n gin
1.2 Mt s ng dng thc t ca WLAN ti Vit Nam 1.2.1 ng dng trong Wireless LAN Telemedicine
H thng t vn phu thut trc tuyn (Telemedicine), mt h thng y t mi, hin i c trin khai Vit Nam. Mi y, h thng Telemedicine chnh thc c khai trng vo ngy 5/5/2005; ng thi din ra cuc phu thut qua cu truyn hnh ti hai bnh vin Vit c (H Ni) v bnh vin Vit Tip (Hi Phng). c bit, gii php k thut s dng cho h thng iu tr t xa v cc bnh vin v tinh da trn nn tng c s h tng mng v truyn dn ca VNPT. H thng mng v tch
Trang 88
OMNet++
hp cc h thng thit b k thut ny gm c: h thng thit b truyn dn quang trc tip (telecast); h thng thit b cung cp kt ni ADSL, WAN trn mng NGN; h thng mng LAN kt ni ton b cc thit b ti mi im; h thng thit b IP Camera cung cp gii php hi ngh truyn hnh v h thng thit b s ha hnh nh v lu tr ton b ca m. Tuy nhin cc vng c a hnh phc tp v h tng truyn thng cha pht trin, th phng n trn khng c tnh kh thi. khc phc kh khn ny, ngi ta trin khai d n Telemedicine da vo mng WLAN. Trn thc t c mt h thng Telemedicine da trn WLAN c trin khai ti tnh H Tnh. H thng ny gm 3 khu vc c bn:
Da trn cng ngh ca WLAN, h thng ny c th thc hin hai cng vic: Truyn nh X-quang ng dng ny s truyn nh X-quang gia bnh vin tnh H Tnh v bnh vin Cm Xuyn vi khong cch 13 km.
Trang 89
OMNet++
Truyn Video
ng dng ny c thc hin gia bnh vin tnh H Tnh v trng i hc Y H Tnh vi khong cch 500m. Tn hiu video s c truyn trc tip t phng phu thut ti lp hc ti H Y H Tnh. Cc sinh vin ti y c th theo di t xa qu trnh phu thut ca cc bc s.
Trang 90
OMNet++
2. CC M HNH MNG C BN
WLAN thng c hai kiu M hnh mng: M hnh c s (Infrastructure network ) M hnh c lp (Independent network - Ad hoc network)
Hnh II-2.1 - M hnh c s Lun phi c 1 AP v mt s client. Mi client ny phi c card giao tip v tuyn (adapter) kt ni vi AP. Trong ch c s (Infrastructure mode or Infrastructure network) li c th chia lm 2 loi (theo s lng AP): M hnh c s - Basic Service Set (BSS) M hnh m rng - Extended Service Set (ESS)
Trang 91
OMNet++
Hnh II-2.2 - Tp cc dch v c s V BSS hot ng ch c s nn bt buc phi s dng AP v tt c qu trnh trao i d liu v tuyn (wireless traffic) u thng qua AP. V khng c trao i trc tip gia cc client. Tc l mi thit b v tuyn (wireless client) phi s dng AP giao tip vi nhau v vi cc my tnh trong mng c dy (wired host).
Trang 92
OMNet++
Hnh II-2.3 - Tp cc dch v m rng Mi m hnh m rng thng bao gm nhiu cell (BSS), nn c hin tng bao ph (coverage overlap) gia cc cell. Nh trong s di y, 2 vng ph sng c phn an xen vo nhau.
Trang 93
OMNet++
Hnh II-2.4 - S an xen ca hai vng ph sng V y chnh l m hnh hay gp trong thc t. Bi l, WLAN thng l gii php trin khai b sung thm vo h thng mng hin c
Trang 94
OMNet++
Trang 95
OMNet++
Hnh II-2.6 - M hnh mng Ad-hoc M hnh Adhoc hay cn c gi l MANET (Mobile Ad-hoc Network) c th tm dch l M hnh c lp (Independent network) c im ni bt ca m hnh ny l khng c AP. Do cc client tng tc trc tip vi nhau. y l mt m hnh mng ngang hng (peer- to peer network), tc l mi nt mng t dn ng truyn tin. Trong m hnh ny, mi nt mng s hot ng ging nh mt my ch (host) v ng thi nh mt b trn ng (router). iu ny c ngha l mi nt trong mng MANET s ng vai tr nh mt trm chuyn tip, c dng chuyn cc gi tin ti cc nt ln cn cho n khi gi tin n c nt ch. Ni mt cch khc s tn ti ca MANET ph thuc vo s kt hp gia cc nt thnh vin. Hot ng ca AdHoc c th tm tt nh sau: cc nt s tun t chuyn tip cc gi tin n nt tip theo trong mng cho n khi gi tin n c nt ch. Nh vy trong m hnh ny mt gi tin c th s phi truyn qua nhiu nt trc khi ti c nt ch.
Hnh II-2.7 Hot ng truyn tin trong mng Ad-hoc Hnh trn m phng mt mng khng dy n gin theo m hnh ad-hoc bao gm c 3 nt mng. Xt trng hp nt ngun S mun kt ni ti nt ch D, tuy nhin gia S v D khng c mt kt ni trc tip khi nt R s c s dng nh mt nt trung gian. Nt R s c vai tr chuyn tip cc gi tin trong knh kt ni gia S v D. Do mc d R c th l mt my ch nhng trong trng hp ny n hot ng tng t nh mt b chn ng (router).
Trang 96
OMNet++
FCC quy nh 2 loi bng tn: ISM v UNII dnh cho WLAN. Sau y ta s tm hiu c th 2 loi bng tn ny i vi cc mng v tuyn
OMNet++
2.4 GHz 5.8 GHz Min tn s theo quy nh ca FCC: 900 MHZ 928 MHz (915 MHz 13 MHz) Tc l ISM 900 MHz c thng lng 13 MHz. WLAN tng hot ng bng tn ny. Nhng by gi khng s dng na, v thit b t m tc li khng cao (ch 1Mbps) Tuy nhin bng tn ISM 900 MHz vn c s dng 1 s thit b khng dy: wireless home phone, wireless camera system.. c s dng rng ri hin nay vi cc thit b theo chun 802.11, 802.11b, 802.11g Min tn s theo FCC quy nh: 2.4 GHz 2.5 GHz (2.45 GHz 50 MHz) Tuy nhin cc thit b thc t ch s dng min tn s: 2.4 GHz 2.4835 GHz Min tn s quy nh: 5.725 GHz 5.875 GHz Hin nay khng c s dng vi WLAN
Trang 98
OMNet++
Trang 99
OMNet++
y l chun c IEEE chnh thc ban hnh vo 6/2003 v vn ang c hon thin. c gii thiu vo nm 2003, 802.11g kt hp mt s cc c im tt nht ca hai chun trc y. Ni mt cch chnh xc hn th y l s m rng v ci tin ca 802.11b, minh chng l : Khong cch lm vic l 100 150 feet. Tng thch vi cc thit b s dng chun 802.11b. S dng bng tn 2,4GHz. B xuyn nhiu khi s dng cng khng gian vi cc thit b trong cng di tn.
Cng nh chun A, chun 802.11g c th truyn d liu vi tc t 15Mbps 20Mbps. V nu bn tng s dng cng ngh 802.11b th hy ch n sn phm bn s dng c c h tr vic nng cp firmware ln 802.11g hay khng? Nu c h tr th hin nhin l bn c kh nng tn hng nhng ci tin ca 802.11g bng vic nng cp firmware cho cc sn phm ca mnh.
Trang 100
OMNet++
ang s dng, chun mi ca WWiSE cung cp kh nng tng thch vi nn tng ci t trc, ng thi nng cao hiu sut ca cc mng WLAN trong di tn s RF c phn b. WWiSE cho bit cng ngh mi c th t t l truyn d liu ti a ln ti 135Mbps trong cu hnh bt buc ti thiu two-by-two, v t l ny c th ln ti 540Mbps qua mt cu trc MIMO four-by-four v rng knh truyn 40MHz. IEEE 802.11i Trong khi chun 801.11n ang trin khai mnh m, th phin bn hin hnh ca chun 802.11i c xt xem c tin cy tr thnh mt chun chung cho c ngnh hay khng? Theo ch tch hi ng xt duyt chun IEEE 802.11 th Phin bn ny c u ban xt duyt nghin cu. c trng ca 802.11i l d liu truyn qua cc mng khng dy s c m ha m bo khng th b t nhp hoc can thip bi cc yu t bn ngoi. Cc phng php bo mt trc y, in hnh l Wired Equivalent Privacy (WEP), rt d b tin tc tn cng v cha nhiu im yu. Chnh v vy t u nm 2003, mt phng php bo mt mi c tn WI-FI Protected Access (WPA) c pht trin v a vo s dng. Tip sau phng php bo mt ny, IEEE a ra chun 802.11i vi mc ch ch yu l tng cng an ninh cho mng khng dy. Trn thc t, kh nhiu tnh nng mi ca chun 802.11i v ang c s dng trong cc thit b WI-FI hin nay. in hnh trong s l chun m ho cao cp AES, mt chun m ho cc mnh h tr kha 128-bit, 129-bit v 256-bit. IEEE 802.11c IEEE 802.11c h tr cc khung (frame) thng tin ca 802.11. IEEE 802.11d H tr cc khung thng tin ca 802.11 nhng tun theo nhng tiu chun mi. IEEE 802.11e Nng cao QoS lp MAC. y l mt chun IEEE c xut nhm xc nh c ch QoS (Quality of Service) ca mng khng dy h tr cc ng dng ca bng rng nh ging ni v hnh nh video. IEEE 802.11f Inter Access Point Protocol IEEE 802.11h C thm tnh nng la chn knh t ng, Dynamic Channel Selection (DCS) v iu khin cng sut truyn dn (Transmit Power Control). IEEE 802.1x Mt chun mi c cp nht v thc hin, n cung cp s iu khin truy cp mng trn cng c s. Mc d lc u IEEE thit k 802.1x cho thng tin hu tuyn, nhng c p dng cho WLANs cung cp mt vi s bo mt cn thit. Li ch chnh
Trang 101
OMNet++
ca 802.1x i vi WLANs l n cung cp s chng thc ln nhau gia Authentication Server v client. IEEE 802.11j L chun thng nht ton cu cho cc tiu chun: IEEE, ETSI, HiperLAN2, ARIB, HiSWANa.
Trang 102
OMNet++
Hnh II-4.2 - So snh vi m hnh OSI Lp vt l c chia thnh hai phn lp: PLCP (Physical Layer Convergence Procedure Sublayer - phn lp th tc hi t vt l) v PMD (Physical Media Dependent Sublayer - phn lp vt l trung gian ph thuc). PLCP a cc chc nng ca h thng vt l trung gian ph thuc - vo cc dch v ca lp vt l. PLCP xc nh mt cch thc sp xp cc n v d liu dch v ca phn lp PHY 802.11 (PSDU PHY sublayer Service Data Units) thnh mt khun mu ph hp cho vic truyn v nhn d liu v qun l thng tin gia hai hay nhiu
Trang 103
OMNet++
trm, s dng h thng vt l trung gian ph thuc tng ng. iu ny cho php lp MAC hot ng t ph thuc nht vo phn lp PMD. PMD xc nh cc tnh cht v cch thc truyn v nhn d liu thng qua mt thit b wireless trung gian gia hai hay nhiu trm, cc trm s dng cng mt h thng iu bin. Cho ti nay, IEEE 802.11 nh r nm dng ca tng vt l: Tri ph dch tn (FHSS - Frequency Hopping Spread Spectrum) Tri ph trc tip (DSSS - Direct Sequence Spread Spectrum) Hng ngoi (IR - Infrared) Tri ph trc tip tc cao (HR/DSSS - High Rate Direct Sequence Spread Spectrum) Kt hp tn s phn chia trc giao (OFDM - Orthogonal Frequency Division Multiplexing)
Hai phng php cui cng c dng trong mng WLAN tc cao: IEEE 802.11a s dng OFDM, IEEE 802.11b s dng HR/DSSS.
Trang 104
OMNet++
Hnh II-4.4 - Nhy tn s Cc knh trong FHSS Tn hiu d liu c truyn trn mt di tn rng bng k thut truyn tn hiu trn nhng tn s sng mang khc nhau ti nhng thi im khc nhau. Khong cch gia cc tn s sng mang FHSS c qui nh trc, bng thng cho mi knh khong 1Mhz, trt t nhy tn c xc nh bng mt hm gi ngu nhin. FCC yu cu bng thng phi c chia t nht thnh 75 knh (subchannel). FHSS radio c gii hn ch gi mt lng nh d liu trn mi knh trong mt chu k thi gian xc nh, trc khi nhy sang knh tn s k tip trong chui nhy tn. Chu k thi gian ny gi l dwell time, thng c gi tr khong 400 microseconds. Sau mi bc nhy (hop) thit b thu pht cn phi thc hin ng b li (resynchronize) vi nhng tn s v tuyn khc trc khi c th truyn d liu. Mc ch ch yu ca vic nhy tn gi ngu nhin nh trn l trnh hin tng giao thoa tn hiu do knh d liu khng lm vic qu lu trn mt knh tn s c th no . Gi s nu nh xy ra nhiu giao thoa nghim trng trn mt tn s no trong chui nhy tn th n cng s nh hng khng nhiu n h thng. Bi qu trnh truyn ch c thc hin ti y trong mt khong thi gian nh. DSSS (Direct Sequence Spread Strectrum) DSSS cng thc hin vic tri ph tn hiu nh trn nhng theo mt k thut hon ton khc. Bng thng ca tn hiu thay v c truyn trn mt bng hp (narrow band) nh truyn thng vi ba, s c truyn trn mt khong tn s ln hn bng k thut m ha gi ngu nhin (Pseudo-Noise sequence).
Trang 105
OMNet++
Qu trnh tri v nn ph trong DSSS Tn hiu bng hp v tn hiu tri ph cng c pht vi mt cng sut v mt dng thng tin nhng mt ph cng sut (power density) ca tn hiu tri ph ln hn nhiu so vi tn hiu bng hp. Tn hiu d liu kt hp vi chui m gi ngu nhin trong qu trnh m ha s cho ra mt tn hiu vi bng thng m rng hn nhiu so vi tn hiu ban u nhng vi mc cng sut li thp hn. Mt u im ni bt ca k thut DSSS l kh nng d phng d liu. Bn trong tn hiu DSSS s gp d phng t nht 10 d liu ngun trong cng mt thi gian. Pha thu ch cn m bo thu tt c 1 trong 10 tn hiu d phng trn l thnh cng. Nu c tn hiu nhiu trong bng tn hot ng ca tn hiu DSSS, tn hiu nhiu ny c cng sut ln hn v s c hiu nh l mt tn hiu bng hp. Do , trong qu trnh gii m ti u thu, tn hiu nhiu ny s c tri ph v d dng loi b bi vic s l li (gain processing). X l li l qu trnh lm gim mt ph cng xut khi tn hiu c x l truyn v tng mt ph cng sut khi despread, vi mc ch chnh l lm tng t s S/N (Signal to Noise ratio). So snh FHSS v DSSS FH khng c qu trnh x l li do tn hiu khng c tri ph. V th n s phi dng nhiu cng xut hn c th truyn tn hiu vi cng mc S/N so vi tn hiu DS. Tuy nhin ti ISM band theo quy nh c mc gii hn cng xut pht, do FH khng th c t S/N ging nh DS. Bn cnh vic dng FH rt kh khn trong vic ng b gia my pht v thu v c thi gian v tn s u yu cu cn phi c ng b. Trong khi DS ch cn ng b v thi gian ca cc chip. Chnh v vy FH s phi mt nhiu thi gian tm tn hiu hn, lm tng tr trong vic truyn d liu hn so vi DS.
Trang 106
OMNet++
Nh vy chng ta c th thy DSSS l k thut tri ph c nhiu c im u vit hn hn FHSS. Theo chun 802.11b, th s dng 14 knh DS (Direct Sequence) trong di tn s 2,402GHz 2,483GHz, mi knh truyn rng 22MHz, nhng cc knh ch cch nhau 5MHz, v vy cc knh cnh nhau s gy giao thoa ln nhau, do trong mt khu vc ngi ta b ch cc knh truyn sao cho min tn s ca chng khng trng ln nhau, trong h thng 14 knh DS th ch c 3 knh m bo khng chng ln, v d nh trong hnh sau th cc knh 1, 6, 11 c s dng pht trong mt khu vc m khng gy nhiu giao thoa cho nhau:
Trang 107
OMNet++
Hnh II-4.7 - Kh nng s dng li tn s ca phng php DSSS Nh vy trong mt vng n tc bit vn chuyn n c th ln ti: 11Mbps x 3 = 33Mbps, thay v 11Mbps nh khi ch c mt knh truyn c s dng trong mt khu vc.
Hnh II-4.8 - Dng chung ca PLCP Frame Preamble (tiu ) l thnh phn ph thuc ca PHY. N bao gm hai phn: SYNC (Synchronization - ng b) v SFD (Start Frame Delimiter ranh gii bt u khung). SYNC l mt dy lin tip cc s 0 v 1, c lp vt l dng la chn anten tng ng, v t c trng thi gii m chc chn v ng b ca bit clock. SFD c s dng xc nh s iu ho thi gian khung. PLCP truyn ti tc 1 Mbps v bao gm thng tin logic c lp PHY s dng gii m khung. Trng tn hiu PLCP (PLCP signalling field) cha thng tin v tc . Trng Service (dch v) s c s dng cho cc mc ch sau ny. Trng Length ( di) ch ra di d liu MAC hoc s micro giy cn truyn d liu MAC (MAC data).
Trang 108
OMNet++
Hnh II-4.9 - PLCP trong FHSS Trng tiu SYNC l mt trng 80 bit bao gm mt dy 0-1 lin tip, c truyn bt u t 0 v kt thc 1. SFD bao gm dy 16 bit nh phn 0000 1100 1011 1101. Bit u tin ca SFD cho theo sau bt cui cng ca dy SYNC. PLW ( di t PSDU) ch ra s octet trong PSDU. PSF 4 bit (trng tn hiu PLCP) xc nh tc ng truyn, nm trong khong 1 ti 4.5 Mbps, lch 0.5 Mbps. Bit u tin ca PSF dng cho cc nhu cu sau ny.
Hnh II-4.10 - PLCP cho DSSS and HR/DSSS Trng SYNC: Trng Sync bao gm 128 bit c xo trn cc bit bng 1 . Trng ny c cung cp bi vy bn nhn c th thc hin hot ng ng b cn thit. Trng thi khi to ca b xo trn l [1101100], bit tri nht xc nh gi tr a vo phn t tr u tin, bit phi nht xc nh gi tr a vo phn t tr cui cng trong b xo trn SFD c cung cp ch ra v tr bt u ca tham s ph thuc PHY trong PLCP preamble. SFD chim 16 bit [1111 0011 1010 0000], bit phi nht s c truyn u tin ng b. Trng SIGNAL Trng SIGNAL 8 bit ch ra tng vt l, s iu bin s c s dng cho vic truyn v nhn PSDU. Tc d liu truyn c cn bng vi gi tr trong trng SIGNAL nhn vi 100 Kbit/s. Tng High Rate PHY cng h tr 4 tc bt buc bi cc t 8 bit thit lp li tc vi n v l 100 Kbit/s v bt t ngha nht c truyn u tin ng nhp 0X0A i vi 1 Mbps. 0X14 cho 2Mbps 0X37 cho 5.5 Mbps 0X6E cho 11 Mbps. Trng ny c bo v bi chui kim tra frame CCITT CRC-16.
Trang 109
OMNet++
Trng SERVICE Ba bit c xc nh trong trng SERVICE h tr phn m rng High Rate. Bit phi nht (bit 7) c s dng b sung trng di. Bit th 3 c s dng ch ra phng thc iu bin l CCK nu bng 0, l PBCC nu bng 1. Bit th 2 c s dng ch ra tn s truyn v cc ng h biu tng c nhn t cng my to dao ng. Cc ng h kho ny c thit lp bi tng vt l trn c s cu hnh b sung ca n. Trng SERVICE c truyn bit b0 u tin, ng nhp, c bo v bi chui kim tra frame CCITT CRC-16.
Trng LENGTH Trng PLCP LENGTH c nh du bi 16 bit s nguyn, ch ra s micro giy yu cu truyn PSDU. Gi tr c truyn s c xc nh t tham s LENGTH v DataRate trong TXVECTOR pht ra cng PHYTXSTART.request.
Trng CRC (CCITT CRC-16) Cc trng SIGNAL, SERVICE v LENGTH c bo v bi chui kim tra frame CCITT CRC-16 (FCS). CCITT CRC-16 FCS l s b sung s d ca 1 c to ra bi php chia modul 2 ca trng PLCP bo v trong a thc
Hnh II-4.11 - PLCP trong OFDM Tiu PLCP bao gm 10 k hiu (symbol) ngn v hai k hiu di. Trng tn hiu (SIGNAL) bao gm di, tc v cc trng khc. Trng Rate truyn thng tin v dng iu bin v tc m ho dng trong phn cn li ca gi tin. Bng gi tr v ngha ca trng RATE 1011 6 Mbps 1111 9 Mbps 1010 12 Mbps 1110 18 Mbps 1001 24 Mbps 1101 36 Mbps 1000 48 Mbps 1100 54 Mbps
Trang 110
OMNet++
Tn hiu PHY-TXSTART.request nguyn thu (TXVECTOR) pht ra bi MAC bt u qu trnh truyn PPDU. Thm vo DATARATE v LENGTH, cc tham s truyn khc nh PREAMBLE_TYPE v MODULATION cng c thit lp thng qua PHY-SAP cng vi PHY-TXSTART.request ( TXVECTOR ) nh c miu t.. PLCP s pht ra PMD_ANTSEL, PMD_RATE v PMD_TXPWRLVL nguyn thy cu hnh tng vt l. Sau PLCP s pht ra tn hiu PMD_TXSTART.request v thc th vt l s ngay lp tc khi to vic trn d liu v truyn PLCP preamble trn c s cc tham s c chuyn qua trong tn hiu PHY-TXSTART.request nguyn thu. Thi gian cn thit cho TX hot ng trong ramp bao gm c trng ng b PLCP. Nu vic truyn mt PLCP preamble hon thnh, d liu s c trao i gia MAC v PHY bi mt seri tn hiu PHY-DATA.request (DATA) c pht ra bi MAC v PHY-DATA.confirm pht ra t PHY.
Trang 111
OMNet++
Nu vic nhn PLCP header l thnh cng (v trng SIGNAL c nhn dng hon ton v c h tr), PHY-RXSTART.indicate (RXVECTOR) s c pht ra. RXVECTOR kt hp vi cc tham s sau Trng SIGNAL Trng SERVICE di PSDU theo byte (tnh t trng LENGTH theo n v micro giy v DATARATE theo Mbps) RXPREAMBLE_TYPE (l mt loi phn t lit k, ly gi tr SHORTPREAMBLE hay LONGPREAMBLE) Thnh phn nhn tn hiu nhn RSSI v SQ (RX_ANTENNA)
Bit nhn PSDU c kt hp trong cc byte v c a ti MAC s dng seri trao i PHY-DATA.indicate (DATA). Tc v s thay i iu bin c ch ra trong trng SIGNAL s c khi to cng vi biu tng u tin ca PSDU. PHY x l vic nhn PSDU. Sau khi nhn bit final ca byte PSDU cui cng, c ch ra trong trng PLCP preamble LENGTH, bn nhn s tr li trng thi RX IDLE. PHY-RXEND.indicate ( NoError ) s c pht ra. PHY-CCA.indicate ( IDLE ) c pht ra theo s thay i trong PHYCS (PHY carrier sense ) v / hoc PHYED ( PHY energy detection ) theo s la chn phng thc CCA. Trong s kin m s thay i trong PHYCS hoc PHYED c th lm trng thi ca CCA tr v trng thi IDLE trc khi hon thnh vic nhn PSDU, nh c ch ra trong trng PLCP LENGTH, iu kin li error PHY-RXEND.indicate ( CarrierLost ) s c thng bo cho MAC. High Rate PHY s m bo CCA ang ch ra ng truyn bn trong qu trnh truyn PPDU. Nu PLCP header thnh cng, nhng tc ch ra hay s iu bin trong cc trng SIGNAL, SERVICE khng tng thch vi bn nhn, PHY-RXSTART.indicate s khng c pht ra. PHY s pht ra iu kin li PHY-RXEND.indicate (UnsupportedRate). Nu PLCP header l khng c gi tr, PHY-RXSTART.indicate s khng c pht ra, v PHY s pht ra iu kin li PHY-RXEND.indicate (FormatViolation). Trong c hai trng hp, High Rate PHY s m bo CCA ch ra ng truyn bn cho vic truyn PSDU. Khong thi gian d nh c ch ra bng trng LENGTH (LENGTH x 1)
Trang 112
OMNet++
Trang 113
OMNet++
o Nu khng c sng mang, nt mng s bt u truyn d liu. Khi n s to ra 1 sng mang trn ng truyn. V theo quy nh ca Ethernet, ti 1 thi im ch c 1 sng mang trn ng truyn. Hin tng xung t xy ra khi cc nt nghe ng truyn xong, thy khng c sng mang, th cng truyn ti 1 thi im. V th, CSMA c ci tin bng cch thm tnh nng pht hin xung t (CD Collision Detection): o Nt mng khi thy ng truyn ri, th c th pht hoc khng pht tn hiu (vi xc sut p no ). o Sau khi bt u truyn, nt truyn vn tip tc nghe thm 1 khong thi gian na Listen while Talk. o Trong qu trnh nghe ny, nu nt mng pht hin ra cc sng mang khc thng (khng ging vi sng mang m mnh pht i, chng hn khng ging v cng dng in), th coi nh c ng xy ra. Khi nt ang truyn s chm dt ngay vic pht i d liu cn truyn, nhng vn tip tc pht sng mang trong 1 khong thi gian na, m bo tt c cc nt khc u nghe c s ng ny. o Sau nt s tm ngh (Backoff) trong 1 khong thi gian ngu nhin(gii thut random backoff) . Nh ,thi im cc nt truyn li s khc nhau. Trong khi c ch pht hin xung t (Collision Detection) hot ng rt tt trong cc mng LAN hu tuyn, th i vi mng LAN v tuyn, ta khng th s dng c ch ny c. Trong mi trng v tuyn, ta khng th m bo c tt c cc nt mng u nghe ln nhau c. l v c hin tng nt n (Hidden Node).V li cc nt mng trong WLAN khng th thc hin Listen while talk (va nghe, va truyn d liu). Vn nt n nh sau:
A trao i d liu vi B C ra nghe knh truyn C khng nghe thy A do C nm ngoi vng ph sng ca A
Trang 114
OMNet++
gii quyt vn ny, ngi ta s dng c ch trnh xung t (CA Collision Avoidance). u tin, cng ging nh c ch CSMA/CD, nt mng mun truyn tin s nghe ng truyn. Nu n thy ng truyn ang bn, th s ch. ng thi nt mng s tnh ton mt khong thi gian ch ngu nhin (DIFS). Ngay sau khi thi gian tri qua, n li nghe xem liu c nt mng no ang truyn tin hay khng. Bng cch to ra thi gian ch ngu nhin, s hn ch c hin tng cc nt mng mun truyn tin s truyn ti cng mt thi im (trnh xung t). Ngc li, khi ng truyn ri, nt mng s c php truyn tin. Tuy nhin nt mng khng truyn d liu ngay, m n s pht s pht i mt gi tin bo gi l RTS - Request To Send (chi tit v cu trc ca gi tin ny s c trnh by sau). Nt nhn nu cng thy ng truyn ang ri, th s phn hi li bng gi tin cho php gi - CTS (Clear To Send). Khi cp RTS/CTS c coi l mt sng mang o (Virtual Carrier Sense). S d gi nh vy v, sng mang o ny cng c vai tr nh sng mang trong c ch CSMA/CD. Tc l, khi cc nt khc ra nghe ng truyn m pht hin ra c sng mang o, th chng s coi ng truyn ang bn. Sng mang o cn c gi l vector thit lp lin kt NAV Network Allocation Vector. Sau khi thit lp RTS/CTS, nt mng bt u truyn d liu. V trong qu trnh truyn ny c s dng c ch bo nhn (ACK). Tc l, nt nhn sau khi nhn c d liu s gi li thng bo nhn ACK (Acknowledgement ). Ton b tin trnh trn gi l 4-way handshake.
Trang 115
OMNet++
NAV setting
DIFS
Source
RT S
Data
Next transmition
SIFS
SIFS
SIFS
Destination
CT S
ACK
DIFS
Other
4.2.3.1 Scanning
Khi ta ci t (install), cu hnh hay khi ng mt thit b khch (WLAN client device), th cc client ny s t ng kim tra xem n c trong vng ph sng ca mt AP no khng. ng thi xc nh xem n c th tham gia (associate) vo mng WLAN ny hay khng. Qu trnh ny gi l scanning. Nh vy scanning l tin trnh xy ra trc mi tin trnh khc. l cch m cc client tm ra mng WLAN. h tr cc client xc nh cc AP, c 1 s cng c nh l: SSID Service Set Identifier v frame hoa tiu hay cn gi l frame dn ng (beacons). ng thi, c 2 hnh thc Scanning: b ng v ch ng. SSID
Trang 116
OMNet++
SSID vi mi mng thng l duy nht, phn bit ch hoa thng (case sentitive). Thng gm t 2 ti 32 k t. V c s dng lm tn mng (network name). Gi tr ca SSID c gi i trong cc frame dn ng (beacons), probe request, probe response Frame dn ng Tn y l Beacon Management Frame: l cc frame c pht t AP ti cc trm lm vic - station (nu ch c s), hoc gia cc trm vi nhau (nu ch c lp ad hoc mode). Frame nh hng cha cc thng tin v ng b thi gian, cc tham s tri ph, SSID, tc cho php. C th: Thng tin ng b thi gian o Khi client nhn c cc frame nh hng, n s thay i ng h (clock) ca mnh sao cho tng ng (reflect) vi ng h ca AP. Khi 2 ng h c gi l ng b o Tc dng: m bo tt c cc cng vic phn bit bi thi gian (time sensitive funtions) nh l nhy tn (hopping) trong FHSS c thc hin m khng b li. Cc thng s tri ph o Cc frame dn ng cha thng tin v k thut tri ph m h thng ang s dng. Cc thng tin ny c th hin di dng tp cc tham s FH hoc DS. o VD: Vi 1 h thng FH l cc tham s v hop, dwell time v hop sequence cc thng s v thi gian nhy v ngng ( ngha cc tham s ny xin xem phn ph lc). Vi h thng DS: frame dn ng s cha thng tin v cc knh. SSID o Station sau khi nhn c cc frame dn ng, s cn c vo cc frame ny xc nh SSID ca mng m n mun kt ni. Sau khi tm thy thng tin SSID (network name), station s tm a ch MAC ca ni pht ra cc frame dn ng. v gi 1 yu cu cn xc thc (authentication request), ch c kt ni(associate) vo mng. o Nu mt trm c t ch chp nhn bt k SSID no, th sau n s c gng tham gia vo mng thng qua AP u tin gi frame dn ng, hoc AP no c tn hiu mnh nht (trong trng hp c nhiu AP). Supported rate (tc cho php): Trong cc beacons cn cha thng tin v tc cho php ca AP . VD: cc thit b chun 802.11b h tr tc 1 Mbps, 2 Mbps, 5.5 Mbps v 11 Mbps. Tip theo ta s tm hiu 2 dng Scanning Passive Scanning (Qut b ng)
Trang 117
OMNet++
L qu trnh AP gi cc frame dn ng ti cc station (nu m hnh c s), hoc cc station gi frame dn ng cho nhau (nu m hnh c lp ad hoc mode). Cc station s scanning xc nh cc c tnh ca pha pht da vo cc frame dn ng ny.
Hnh II-4.15 - Passive Scanning Station no mun tm mng s lng nghe cc frame dn ng cho n khi pht hin ra mt frame dn ng c cha nh danh - SSID ca mng m n mun kt ni. Tip theo, station s kt ni vo mng thng qua AP no gi frame dn ng cho n. (Qu trnh kt ni vo mng tip theo nh th no s c trnh by sau). Trong trng hp c nhiu AP, th s c nhiu frame dn ng ca cc mng khc nhau. Khi , station s kt ni vo mng thng qua AP c tn hiu mnh nht (thng tin v mnh yu ca tn hiu cng c trong cc frame dn ng m AP pht i) hay AP c t l bit li t nht (lowest bit error rate). Sau khi kt ni vo mng ri, my trm vn duy tr danh sch cc AP c th dng kt ni v c tnh km theo (s lng knh, mnh yu ca tn hiu, SSID), khi cn n c th kt ni li vi AP. Ngoi ra station c th dch chuyn (roaming) t AP ny sang AP khc (VD trong trng hp tn hiu ca AP m n ang kt ni t nhin b yu i). Khi , nh danh sch cc AP sn c, my trm s nhanh chng xc nh c AP cn kt ni. Active Scanning (qutch ng) My trm s gi cc frame thm d (Probe request frame). Trong cc frame ny c cha nh danh ca mt mng c th m trm mun kt ni ti, hoc mt nh danh mng qung b (broadcast SSID). Trong trng hp frame thm d cha SSID ca 1 mng c th, th ch AP no phc v cho mng ny mi phn hi li. Cn nu l broadcast SSID, th bt k AP no nhn c frame thm d t my trm, cng c th phn hi li.
Trang 118
OMNet++
Hnh II-4.16 - Active Scanning Mt khi my trm xc nh c AP thch hp, n s thc hin tip qu trnh xc thc v lin kt.
Trang 119
OMNet++
Hnh II-4.17 - Cc phng php chng thc c bn Cc phng php chng thc c bn Chng thc h thng m Qu trnh ny c thc hin mt cch n gin theo hai bc sau: My client gi mt yu cu chng thc ti AP AP chng thc my khch v gi mt tr li xc thc client c lin kt
Hnh II-4.18 - Chng thc h thng m Phng php ny c ci t mc nh trong cc thit b WLAN 802.11. Nh , mt trm c th lin kt vi bt c mt AP no s dng phng php chng thc h thng m, khi n c SSID ng. SSID phi ph hp trn c AP v client, trc khi client hon thnh qu trnh chng thc. Trong phng php ny th WEP ch c s dng m ha d liu, nu c.
Trang 120
OMNet++
Chng thc kha chia s Phng php ny bt buc phi dng WEP. Mt qu trnh chng thc kha chia s xy ra theo cc bc sau: Clien gi yu cu lin kt ti AP (bc ny ging nh chng thc h thng m). AP s gi mt on vn bn ngu nhin ti Client, vn bn ny cha c m ha, v yu cu Client dng cha kha WEP ca n m ha. Clien m ha vn bn vi cha kha WEP ca n v gi vn bn c m ha n AP. AP s th gii m vn bn , xc nh xem cha kha WEP ca Client c hp l khng. Nu c th n gi mt phn hi cho php, cn nu khng, th n tr li bng mt thng bo khng cho php client lin kt.
Hnh II-4.19 - Chng thc kho chia x Nhn qua th phng php ny c v an ton hn phng php chng thc h thng m (v c nhiu bc hn). Tuy nhin, nu xem xt k th trong phng php ny, cha kha WEP c dng cho hai mc ch: chng thc v m ha d liu. y chnh l k h hacker c c hi thm nhp mng. Hacker s thu c hai bn tin: vn bn cha m ha do AP gi v vn bn m ha, do Client gi. V t hai thng tin hacker c th gii m ra c cha kha WEP.
Trang 121
OMNet++
topo thay i (cu trc ng) m n cn phi c kh nng duy tr cht lng qu trnh truyn tin trong iu kin ti nguyn gii hn (bng thng, pin, ...). Cc giao thc kinh in nh link-state hay distance-vector c th p ng c cc yu cu ny tuy nhin n rt tn ti nguyn v thi gian, c bit l trong trng hp mng c tnh di ng cao.
Trang 122
OMNet++
dn ngn nht (shortest path) ti c nt ch. ng dn ngn nht c tnh ton da trn mt c lng c th, thng l khong cch gia s cc bc truyn. Giao thc link-state Trong giao thc link-state, mi nt mng s tp hp trng thi (c lng tnh ng dn ngn nht) ca tt c cc lin kt i ra (cc lin kt hng ti cc nt ln cn ca n) v lan truyn tp hp ny ti tt c cc nt khc trong mng nh vo vic truyn gi tin trng thi lin kt (LSP - Link State Packet). iu ny c thc hin theo chu k hoc bt c khi no c s thay i nh hng n mt trong cc lin kt trn. Ngoi ra mi gi tin LSP s c gn thm mt s th t nhm xc nh cp nht ca n (cc gi tin c s th t ln hn th mi hn). Khi mt nt mng nhn c cc gi tin LSP, n s cp nht li tt c cc trng thi lin kt (ph hp vi topo mng mi). Da vo nhng thng tin ny, nt mng s thc hin thut ton tm ng ngn nht (thng l thut ton Dijkstra) v quyt nh bc truyn ti u tip theo cho mi nt ch trong mng. Ch c bc truyn tip theo v chi ph tm ng tng ng vi mi nt mng mi c lu trong bng nh tuyn (routing table). Phi ch rng cc nt mng khng cp nht li bng nh tuyn cng mt lc (do tr khi truyn gi tin LSP) do iu ny c th dn n trng hp ng dn ngn nht b quay vng. Tuy nhin s kin ny s mt i khi tt c cc nt trong mng u nhn c gi tin LSP. Giao thc distance-vector Thut ton vector khong cch (distance vector algorithm) hay cn c gi l thut ton Bellman-Ford da trn mt phng php tip cn khc. Mi nt mng s ch thng bo phn cn li ca bng nh tuyn ca n cho cc nt mng lin kt trc tip vi n. Khi mt nt nhn c thng tin t cc nt ln cn trc tip, n s cp nht li bng nh tuyn da trn bng nh tuyn ca cc nt ln cn. Trn c s , i vi mi nt ch, mt nt mng s nhn vo khong cch ca cc nt ln cn ca n (khong cch ca mt nt ln cn l khong cch t nt ln cn n mt nt ch) xc nh khong cch nh nht. Nh vy trong giao thc ny, mi nt mng s ch lu tr khong cch ca tt c cc nt ln cn trc tip v c kh nng thay i n khi c bin ng. Nhn xt C hai thut ton trn u c chng minh c tnh hiu qu trn nhng mng khng c tnh di ng cao. Tuy nhin c hai u gp vn khi p dng cho nhng mng c cu trc thay i thng xuyn. Qu trnh tm ng khng ch tn nhiu thi gian m cn s dng rt lng ph cc ti nguyn (tm ng n tt c cc nt mng nhng hu ht trong s ny s khng c s dng).
Trang 123
OMNet++
Trang 124
OMNet++
OMNet++
Hnh II-4.21 - Qu trnh lan truyn ca gi tin RREQ To Route Request Nu mt nt ngun A mun tm mt nt ch B trong mng MANET, A s thng bo cho tt c cc nt khc trong mng bit n ang tm kim nt B bng cch gi i gi tin RREQ ti tt c cc nt ln cn. RREQ cha a ch IP v s th t ca c ngun v ch. S th t ch tham chiu n s th t ca ng i cui cng ti nt B m nt ngun A bit. Nu nt ngun A khng d c mt s th t no ca ng i ti nt B th s th t ch c t mc nh bng 0. Mi nt trong mng khi nhn c gi tin RREQ s lp tc lan truyn tip ti tt c cc nt ln cn ca n cho n khi gi tin RREQ ti c nt B hoc mt mt nt no bit mt ng i y v cp nht ti nt B (da vo s th t ch trong gi tin RREQ). Gi tin RREQ cn cha hai trng khc l time to live (TTL) v broadcast ID. Trng TTL cho php tin trnh Discovery iu khin mc lan truyn ca gi tin RREQ trong mng. Ly v d nh mt gi tin RREQ c trng TTL c t bng 2 s thc hin nhiu nht 2 bc truyn tnh t nt gc. Khi gi tin RREQ truyn i, nt ngun s t gi tr cho trng TTL v chuyn vo trng thi ch. Khong thi gian ch ca nt gc tng ng t l vi gi tr ca trng TTL trong gi tin RREQ. Nu khng c g thay i, mt ng i c tm thy trc khi thi gian ch kt thc th tin trnh Discovery kt thc thnh cng. Ngc li, nu trong khong thi gian ch ca nt ngun n khng nhn c mt gi tin tr li no, nt ngun s gi li mt gi tin RREQ mi v tip tc ch i. Tt nhin gi tin mi s c gi tr ca trng TTL ln hn v thi gian ch i cng ko di hn v th gi tin RREQ s lan truyn n c nhiu nt mng hn. Nu vn khng nhn c tr li, nt ngun s gi tip mt gi tin RREQ vi gi tr ti a ca trng TTL. Sau ln ny, tin trnh Discovery s b hu b. K thut ny cn c gi l k thut m rng dn vng tm kim. Ngoi ra mi gi tin RREQ cn c gn mt s th t c gi l Broadcast ID. Trng ny c dng cho cc nt mng phn bit cc gi tin xut pht t cng mt nt v n c tng ln sau mi ln truyn i. Mt cp <a ch IP ngun, Broadcast ID> l duy nht cho mi gi tin RREQ v cc gi tin c gi tr ca trng Broadcast ID ln hn th mi hn. Khi mt nt nhn c mt gi tin RREQ n s ghi nh gi tr ca trng Broadcast ID. Sau nu nt tip tc nhn c cc gi tin RREQ t cng mt nt ngun th ch nhng gi tin c gi tr Broadcast ID ln hn gi tr m n ghi nh mi c tin hnh x l. Cc gi tin c gi tr nh hn s b hu b. Trong mi gi tin RREQ cn c trng hop count c dng ghi s bc truyn m gi tin c truyn qua.
Trang 126
OMNet++
Chuyn tip Route Request Gi s trng hp mt nt I nhn c mt gi tin RREQ xut pht t nt ngun S, yu cu tm ng ti nt ch D. u tin nt I s kim tra gi tr ca trng Broadcast ID v a ch ca nt ngun. Nu gi tr ca trng Broadcast ID nh hn hoc bng gi tr m nt ghi nh trc , gi tin RREQ s b hu b. Trong trng hp ngc li, nt I s x l gi tin RREQ. Trc ht n s to hoc cp nht li ng i ngc ti nt S (hnh di m t tt c cc ng i ngc c to ra khi gi tin RREQ lan truyn trong mng). ng i ny c s dng chuyn thng bo tr li - route reply tr li nt S trong trng hp ng i ti nt D c tm thy. Sau khi mt ng i ngc c to ra, nt I s kim tra xem n c bit mt ng i y v cp nht ti nt D hay khng. Nu c nt I s to ra mt gi tin tr li (route reply packet) v gi ngc li theo ng i ngc va c to ra. Khi gi tin RREQ khng cn phi tip tc lan truyn i na. Trong trng hp ngc li, nu khng bit mt ng i ti D, nt I s tip tc lan truyn gi tin RREQ. Trng TTL trong gi tin RREQ s b gim i mt, v nu n bng 0, vic lan truyn s chm dt. Nu vn tip tc c lan truyn, trng hop count trong gi tin s c tng ln 1.
Hnh II-4.22 - ng i ngc c to ra khi RREQ lan truyn trong mng To Route Reply Khi mt nt mng bit mt ng i y v cp nht (hoc n chnh l nt ch hoc bng nh tuyn ca n c mt thnh phn tng ng vi nt ch), n s to mt gi tin tr li RREP gi ngc li ti nt ngun. Gi tin RREP s cha a ch IP ca c nt ngun v nt ch v s th t ca ng i va tm c. Gi tin ny cng c trng hop count v trng lifetime (thi gian sng) cha gi tr tng ng vi thi gian c hiu lc ca ng i (nu sau khong thi gian ng i khng c s dng, n s b xo b). Chuyn tip Route Reply Nh trong hnh 5, ng i t nt ngun ti nt ch (forward path) c to ra khi gi tin tr li c truyn theo ng i ngc t nt ch v nt ngun. Mi nt nhn c gi tin RREP s to ra trong bng nh tuyn ca mnh mt thnh phn tng ng vi nt ch D. Hai trng s th t v khong cch trong thnh phn mi to ra ny s nhn gi tr ca s th t ch v trng hop count trong gi tin RREP. Bc truyn tip theo l nt cui cng va chuyn tip gi tin RREP.
Trang 127
OMNet++
Hnh II-4.23 - ng i t nt ngun n nt ch c hnh thnh Nu gi tin RREP cha ti c nt ch S, n s tip tc c chuyn tip dc theo ng i ngc ng thi trng hop count trong gi tin cng t ng tng ln. Khi gi tin RREP ti c nt ngun, nt S s to mt thnh phn trong bng nh tuyn tng ng vi nt ch D v t ng hu b gi tin RREP. Tin trnh Discovery cng kt thc v mt ng i mi c thit lp.
4.3.3.2 Qun l kt ni cc b
Khi mt ng i ti nt ch c hnh thnh, mi nt mng c th s dng mt s cc k thut gim st trng thi ca ng i . Ni mt cch khc, mi nt nm trn ng i s c gng m bo bc truyn tip theo trn ng i lun trong trng thi sn sng. Nu bc truyn tip theo trng thi tch cc th ng i tng ng vn c gi tr. Trong trng hp ngc li, nt hin thi phi lp tc thng bo cho cc nt nm trc n trn ng i. Qu trnh gim st c th c thc hin theo hai phng php khc nhau: proactive hoc reactive. i vi phng php proactive, n s dng mt s kiu hot ng phng. Mi nt mng s lin tc gim st trng thi thc t ca cc nt ln cn bng cch cp nht bn kt ni cc b (local connectivity map). Bt c khi no nhn c mt gi tin thng bo (broadcast packet) gi n, nt hin thi s tin hnh cp nht hoc to mi mt thnh phn trong bng nh tuyn tng ng vi nt gi thng bo. Thnh phn ny c thi gian sng - lifetime ngn, tng ng vi khong thi gian ln nht m mt nt ln cn c cho php gi im lng trc khi nt hin thi cho rng nt ny mt gi tr. Do , khi mt nt ln cn vn trng thi tch cc, thnh phn tng ng vi n trong bng nh tuyn ca nt hin thi vn c gi tr. Trong trng hp lifetime ht hn m khng c thng bo mi, nt hin thi s cho rng lin kt b ph v v chng trnh thng bo li lin kt (link failure notification procedure) lp tc c gi. Tuy nhin tnh trng im lng ca mt nt c th khng phn nh ng trng thi hin ti ca n, do m bo tnh chnh xc, AODV cn s dng thm mt message hello. Khi khng nhn c cc gi tin thng bo trng thi ca cc lin kt, nt hin thi s gi message hello n cc nt ln cn kim tra tnh trng tht s ca cc nt . Phng php gim st th hai c gi l phng php proactive. iu ny c ngha l cc lin kt b ph v ch b pht hin khi c s c khi truyn d liu. Trong trng hp ny, li kt ni c pht hin mun, iu ny khng ph hp vi mc ch ca mng MANET bi n rt d gy ra tnh trng qu ti cho mng.
4.3.3.3 Duy tr ng i
Trang 128
OMNet++
Khi mt li kt ni c pht hin, cc nt mng s lan truyn ngc gi tin bo li route error (RERR). Gi tin RERR cha danh sch cc nt ch b mt v s th t tng ng ca chng c tng ln 1. Khi nhn c mt gi tin RERR, cc nt chu nh hng s cp nht li bng nh tuyn ca n. i vi mi nt ch trong gi tin RERR, nt hin thi s t li gi tr cho trng khong cch thnh v cng v cp nht trng s th t bng cch sao chp s th t ca cc nt tng ng trong gi tin RERR. Ngoi ra, nu trng precursor ca nt hin thi cha rng, gi tin RERR s tip tc c truyn ngc li. Ch rng cc nt s ch cp nht li bng nh tuyn nu gi tin RERR m n nhn c xut pht t bc truyn tip theo ca n trn ng i ti nt ch. V d nh trong hnh 6, nt 1 nhn c gi tin RERR thng bo ng i ti nt D b li. Nhng nt 1 s khng cp nht li bng nh tuyn ca n (thc t ng i t 1 n D khng c s c) v gi tin RERR c gi t nt 2, m nt 2 khng phi l bc truyn tip theo ca nt 1 trn ng i ti nt D. Do nt 1, gi tin RERR s b hu b.
Trang 129
OMNet++
M hnh cc tng
Trang 130
OMNet++
2. CU TRC H THNG
2.1 Tng vt l (Physical model)
thc hin chc nng ca tng vt l mi nt mng, ta ch yu quan tm n vic to cc cng cho php trao i gi tin gia cc nt mng. Mi khi nt mng di chuyn v tin li gn (ty thuc vo nng lng truyn dn transmission power) ti mt nt mng ln cn, th s xy ra cc hot ng sau: 1. To mt cng mi cho cc module kt hp - compound module (bao gm 2 nt mng). S dng hm: int Physic::addNewGate(cModule *mod, char* gname, char type) 2. To cng trn mi physic module cha trong mobile host module. 3. To lin kt gia cng mi ca module n gin (simple module) va c to ra v cng mi ca module kt hp. void Physic::setUpConn(char kind,int& a,int& b) 4. To lin kt gia cc module ca 2 nt mng. y l loi lin kt s dng knh etere. Knh ny c nh ngha m phng mi trng truyn v tuyn, vi tr, t l li . Chi tit cc tham s v cng ca mt module kiu Physic nh sau:
M phng hot ng ca PHY bng cc hm sau: void Physic::initialize() void Physic::handleMessage(cMessage* msg) void Physic::detectNeighbours() void Physic::updateConnections()
OMNet++
Giao thc chnh c m phng y l CSMA/CA. Tng iu khin truy nhp cho php cc message gi i nhng i vi cc message nhn vo n s kim tra trng thi ca cc tng trn. Nu cc tng trn bn th cc message s c t trong b m. Trong trng hp b m y th message s b hy b. if(!buffer->empty()) { cMessage* m = buffer->pop(); send(m, "toRoute"); scheduleAt(elabTime() ,endService); } else { d("no messages...waiting"); routerBusy = false; } else { if(buffer->canStore(msg->length())) { d("host busy, will put the msg in the buffer!"); buffer->insert(msg); } else { d("input buffer full!!! discarding pkts"); bufferFullDiscard++; delete msg; } } Tng MAC s kim tra a ch MAC ca cc gi tin n. V ch cho qua cc gi tin cc a ch MAC ph hp hoc cc gi tin dng broadcast. if( ( (int)msg->par("mac") != parentModule()->id() ) && ( (int)msg->par("mac") != BROADCAST ) && ( ! promisqueMode) ) { d("message not for this node, discarding");
Trang 132
OMNet++
delete msg; } else { //this node can handle the message d("got message from "<<msg->par("source")); //if the host was idle if( (!routerBusy) && (buffer->empty()) ) { routerBusy = true; //this->takeOwnership(false) send(msg,"toRoute"); //this->takeOwnership(true); scheduleAt( elabTime(), endService); }
Tt c cc gi tin iu khin (Control message) ca AODV trong ng dng ny u c di 512 byte. Trong khi cc gi tin d liu (Data message) c kch thc ty theo cc tham s thit lp tng ng dng. Di y l danh sch tn cc loi message c s dng trong m hnh minh ha ny. HELLO RREQ RREP RERR Hello message Route Request message (gi tin yu cu tm ng) Route Reply message (gi tin phn hi tm ng) Route Error, cha danh sch cc nt ch khng ti c.
Trang 133
OMNet++
Data message RREP acknowledgment message (gi tin bo nhn RREP) Gi tin ca bn thn nt mng (self message) kch hot trigger s kin mt ng i ht hn s dng. Gi tin thc hin RREP time out Gi tin ca bn thn nt mng (self message) kch hot nt mng gi gi tin Hello. Gi tin ca bn thn nt mng (self message) kch hot s kin rt mt nt mng ln cn khi black list.
BLK LIST
Mi loi message u c cc tham s trao i thng tin iu khin gia cc nt mng. Chng trnh m phng AdhocSim cng cha hu ht cc tham s trong cc gi tin ca mt mng Adhoc chun. Nh l: dest, seqNumS, seqNumD, Source, mac, ttl, hopNum .. M t topo tng mng
Qu trnh x l cc loi gi tin trong bng trn switch(msg->kind()) { case SEND_HELLO: d("sendHello"); reply = generateHELLOmsg(); broadcast(reply); break; case DELETE: d("delete"); reply = handleDelete(msg); broadcast(reply);
Trang 134
OMNet++
break; case HELLO: d("hello"); handleHELLO(msg); delete msg; break; case FLUSH: d("flush"); reply = handleFlush(msg); broadcast(reply); break; case RREQ: d("rreq "<<msg->name()); reply = handleRREQ(msg); //if the message received need a reply //then send it to the mac module that will //care about sending it around broadcast(reply); delete msg; break; case RREP: d("rrep"); reply = handleRREP(msg); broadcast(reply); delete msg; break; case RERR: d("rerr"); reply = handleRERR(msg); broadcast(reply); delete msg; break; case DATA: d("data"); reply = handleData(msg); broadcast(reply); delete msg; break; case RREP_ACK: d("ack"); handleACK(msg); delete msg; break;
Trang 135
OMNet++
case ESP_ACK: d("esp_ack"); reply = handleESP_ACK(msg); broadcast(reply); break; case BLK_LIST: d("black list"); handleBLK_LIST(msg); //delete msg; break; } } Cc hm tng ng c gi: cMessage* AODV::generateHELLOmsg() void AODV::handleHELLO(cMessage* msg) cMessage* AODV::checkRouteTable(RouteTableElement*b,cMessage* reply,int& errors) cMessage* AODV::handleFlush(cMessage* msg) cMessage* AODV::handleDelete(cMessage* msg) cMessage* AODV::handleData(cMessage* msg) RouteTableElement* AODV::findNode(int n) cMessage* AODV::handleRERR(cMessage *msg) cMessage* AODV::handleRREP(cMessage *msg) void AODV::handleACK(cMessage* msg) cMessage* AODV::handleRREQ(cMessage *msg)
Trang 136
OMNet++
Trong ng dng AdhocSim ny, ta s dng Random Walk mobility model. Kiu m hnh c ch ra trong file omnetpp.ini. #mobility model ;include Ini/avrSpeed.ini ;world.mobileHost[*].mobilityModel = "RandomWalk" ;include Ini/randWalk.ini ;world.mobileHost[*].mobilityModel = "RestrictedRandWalk" ;include Ini/resRWalk.ini world.mobileHost[*].mobilityModel = "RandomWP" include Ini/randWP.ini ;world.mobileHost[*].mobilityModel = "RandomDirection" ;include Ini/rDir.ini ;world.mobileHost[*].mobilityModel = "Pursuit" ;include Ini/pursuit.ini ;world.mobileHost[*].mobilityModel = "Normal" ;include Ini/normal.ini Hot ng ca RandomWalk c trin khai trong hm double RandomWalk::randomWalk(int& x, int& y)
Trang 137
OMNet++
Trang 138
OMNet++
Vng ph sng S lng nt mng Host enabled to transmit on code tng ng trong file omnetpp.ini world.height = 700 world.width = 700 world.dim = 25
700m x 700m 25 5
2.7.4 Routing
Trang 139
OMNet++
Control Message Size HELLO interval Allowed HELLO loss Delete pertiod RREQ max trials
2.7.5 Application
Enabled Node Message packet size Burst length Send Packet Rate Burst Interval 5 (nt s 1,3,4,7,10) 512byte (4096 bits) 64 packets 3/sec phn phi u trong on [0.1,3]sec
on code tng ng trong file omnetpp.ini: ;pakets per second world.mobileHost[*].app.rate = 3 ;pakets of 512 byte = 4096 bit world.mobileHost[*].app.pktSize = 4096 ;time elapsed between two data burst world.mobileHost[*].app.burstInterval = truncnormal(2,1.0) ;Enabled Node = 5 world.mobileHost[1].app.active = 1 world.mobileHost[3].app.active = 1 world.mobileHost[7].app.active = 1 world.mobileHost[10].app.active = 1 world.mobileHost[4].app.active = 1
Trang 140
OMNet++
3. KT QU THC HIN
3.1 Topo
Trang 141
OMNet++
Trang 142
OMNet++
Phn IV - PH LC
1. SO SNH OMNET++ V NS-2
OMNet++ OMNeT++ l mt cng c m phng rt linh hot, c th m phng bt k mt h thng no hot ng da trn nguyn tc trao i cc gi tin gia cc thnh phn tch cc. V d nh cc kiu mng hng i, h thng vi x l, kin trc phn cng... NS-2 ns-2 l mt cng c c thit k dnh ring m phng mng (TCP/IP). Rt kh c th s dng ns-2 cho nhng h thng khc (nhng h thng khng s dng nguyn tc mng chuyn mch gi).
M hnh lp trnh
OMNeT++ s dng ngn ng Cng s dng ngn ng C++ lp trnh hng i tng C++. OMNeT++ ng thi h tr c hai kiu, to file bng cch s dng cc trnh son tho thng thng hoc s dng chng trnh GNED c giao din ho trc quan c sn. Phn nhn m phng ca OMNeT++ l mt lp th vin. Cc m hnh c to ra hon ton c lp vi phn nhn m phng. Ngi lp trnh c th vit cc thnh phn da vo cc lp th vin khc, sau bin dch v lin kt n vi th vin m phng ca OMNeT++. iu ny c ngha l phn code ca OMNeT++ khng cn phi thay i li khi thit k mt m hnh (cc lp trong OMNeT++ c kh nng s dng li cao). Trong OMNeT++ cc module c quan h k tha. iu ny khng nhng to s d dng cho ngi lp trnh khi m phng nhng h thng phc tp m n cng lm tng kh nng s dng Tnh s dng li trong ns-2 khng cao, thm vo mt lp mi, bn cn phi download ton b m ngun v, sa i li cho ph hp vi m hnh ca mnh, copy thm cc file ca bn vo, gn thm cc gi tr khc...
Qun l m hnh
Trong ns-2, cc m hnh c quan h ngang bng. Vic to mt mng con t mt mng ln hay thc hin mt giao thc phc tp t nhng n v c lp nh l khng th thc hin c.
Trang 143
OMNet++
li cho cc lp ca OMNeT++. Nhng ti liu tr gip ca OMNeT++ c cp nht thng xuyn v rt y . c bit c phn Tutorial v API rt hu ch i vi ngi s dng. Ti liu tr gip ca ns-2 khng c tnh lin mch (khng c phn tutorial). Khng c s phn bit r rng gia mt m hnh vi cc th vin m phng trong ns-2.
Ti liu tr gip
OMNeT++ c th m phng cc ns-2 lm vic khng tt trong mng c cu trc cc ln. Gii trng hp m phng cc mng hn ca n ph thuc vo kch c cu trc ln. thc b nh o ca my s dng. Tham s ca cc thit k th nghim c khai bo trong file cu hnh omnetpp.ini v n c th c thay i d dng phc v cho mc ch th nghim. Trong ns-2, cc tham s c gn trc tip trong Tcl script do kh c th thay i chng. iu ny khng c li cho nhng m hnh c thit k vi mc ch th nghim.
Thit k th nghim
Trang 144
OMNet++
Trang 145