You are on page 1of 145

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

PHN I - TNG QUAN V OMNET++


1. GII THIU
1.1. OMNeT++ l g?
OMNeT++ l vit tt ca cm t Objective Modular Network Testbed in C++. OMNeT++ l mt ng dng cung cp cho ngi s dng mi trng tin hnh m phng hot ng ca mng. Mc ch chnh ca ng dng l m phng hot ng mng thng tin, tuy nhin do tnh ph cp v linh hot ca n, OMNeT++ cn c s dng trong nhiu lnh vc khc nh m phng cc h thng thng tin phc tp, cc mng kiu hng i (queueing networks) hay cc kin trc phn cng... OMNeT++ cung cp sn cc thnh phn tng ng vi cc m hnh thc t. Cc thnh phn ny (cn c gi l cc module) c lp trnh theo ngn ng C++, sau c tp hp li thnh nhng thnh phn hay nhng m hnh ln hn bng mt ngn ng bc cao (NED). OMNeT++ h tr giao din ho, tng ng vi cc m hnh cu trc ca n ng thi phn nhn m phng (simulation kernel) v cc module ca OMNeT++ cng rt d dng nhng vo trong cc ng dng khc.

1.2. Cc thnh phn chnh ca OMNeT++


Th vin phn nhn m phng (simulation kernel) Trnh bin dch cho ngn ng m t hnh trng (topology description language) - NED (nedc) Trnh bin tp ho (graphical network editor) cho cc file NED (GNED) Giao din ho thc hin m phng, cc lin kt bn trong cc file thc hin m phng (Tkenv) Giao din dng lnh thc hin m phng (Cmdenv) Cng c (giao din ho) v th kt qu vector u ra (Plove) Cng c (giao din ho) m t kt qu v hng u ra (Scalars) Cng c ti liu ho cc m hnh Cc tin ch khc Cc ti liu hng dn, cc v d m phng...

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++

Bo co thc tp chuyn ngnh

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

1.4. M hnh trong OMNeT++


Mt m hnh trong OMNeT++ bao gm cc module lng nhau c cu trc phn cp. su ca ca cc module lng nhau l khng gii hn, iu ny cho php ngi s dng c th biu din cc cu trc logic ca cc h thng trong thc t bng cc cu trc m hnh. Cc module trao i thng tin vi nhau thng qua vic gi cc message (message). Cc message ny c th c cu trc phc tp tu . Cc module c th gi cc message ny theo hai cch, mt l gi trc tip ti a ch nhn, hai l gi i theo mt ng dn c nh sn, thng qua cc cng v cc kt ni. Cc module c th c cc tham s ca ring n. Cc tham s ny c th c s dng chnh sa cc thuc tnh ca module v biu din cho topology ca m hnh. Cc module mc thp nht trong cu trc phn cp ng gi cc thuc tnh. Cc module ny c coi l cc module n gin, v chng c lp trnh trong ngn ng C++ bng cch s dng cc th vin m phng.

Trang 6

OMNet++

Bo co thc tp chuyn ngnh

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

2.1.1. Cu trc phn cp ca cc module


Mt m hnh trong OMNeT++ cha cc module lng nhau c cu trc phn cp, trao i thng tin vi nhau bng cch gi cc message. Mi m hnh ny thng biu din cho mt h thng mng. Module mc cao nht trong cu trc phn cp c gi l module h thng. Module ny c th cha cc module con, cc module con cng c th cha cc module con ca ring n. su phn cp i vi cc module l khng gii hn, iu ny cho php ngi s dng c th d dng biu din mt cu trc logic ca mt h thng trong thc t bng cu trc phn cp ca OMNeT++. Cu trc ca m hnh c th c m t bng ngn ng NED ca OMNeT++ module h thng module kt hp module n gin

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

2.1.2. Kiu module


Tt c cc module d l n gin hay phc tp u l cc i tng c th ca cc kiu module. Trong khi m t cc m hnh, ngi s dng nh ngha ra cc kiu

Trang 7

OMNet++

Bo co thc tp chuyn ngnh

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

2.1.3. Message, cng, lin kt


Cc module trao i thng tin bng vic gi cc message. Trong thc t, message c dng khung (frame) hoc l cc gi tin (packet) c truyn i trong mng. Cc message c th c cu trc phc tp tu . Cc module n gin c th gi cc message i mt cch trc tip n v tr nhn hoc gi i theo mt ng dn nh sn thng qua cc cng v cc lin kt. Thi gian m phng a phng (local simulation time) ca mt module tng ln khi module nhn c mt message. Message c th n t mt module khc hoc n t cng mt module (message ca chnh bn thn module - self-message c dng thc hin b nh thi). Cng (gate) l cc giao tip vo ra ca module. Message c gi i qua cc cng ra v c nhn vo thng qua cc cng vo. Mi kt ni (connection) hay cn gi l lin kt (link) c to bn trong mt mc n trong cu trc phn cp ca cc module: bn trong mt module kt hp, mt kt ni c th c to ra gia cc cng tng ng ca hai module con, hoc gia cng ca module con vi cng ca module kt hp.

module cha S1 S2 S1

module cha S2

module con kt ni vi nhau

module con kt ni vi module cha

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++

Bo co thc tp chuyn ngnh

2.1.4. M hnh truyn gi tin


Mt kt ni c th c ba tham s c trng. Nhng tham s ny rt thun tin cho cc m hnh m phng mng thng tin nhng khng hu dng lm cho cc kiu m hnh khc. Ba tham s ny bao gm: tr ng truyn (propagation delay) tnh bng s - giy. T s li bit, c tnh bng s li/bit. T s d liu, c tnh bng s bit/s.

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

tr ng truyn Message nhn c

Hnh I-2.3 - Truyn message

Trang 9

OMNet++

Bo co thc tp chuyn ngnh

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.

2.1.6. Phng php m t topology


Ngi s dng dng ngn ng NED (Network Description) m t cu trc ca cc m hnh

2.2. Lp trnh thut ton


Cc module n gin c th cha cc thut ton nh cc hm ca C++. S linh hot v sc mnh ca C++, kt hp vi cc th vin m phng ca OMNeT++ to iu kin d dng cho ngi s dng. Cc lp trnh vin m phng c th chn la vic m t theo s kin hay theo tin trnh, c th d dng s dng nhng khi nim ca lp trnh hng i tng (nh a hnh, k tha) v thit k cc mu th (pattern) m rng chc nng ca qu trnh m phng. Cc i tng m phng (message, module, queue...) c th hin qua cc lp ca C++. Mt s lp c bn trong th vin m phng ca OMNeT++: Module, cng, lin kt... Cc tham s Message Cc lp Container (mng, hng i...) Cc lp Data Collection

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++

Bo co thc tp chuyn ngnh

2.3. S dng OMNeT++ 2.3.1. Xy dng v chy th cc m hnh m phng


Mt m hnh OMNeT++ bao gm nhng phn sau: Ngn ng m t topology - NED (file c phn m rng .ned): m t cu trc ca module vi cc tham s, cc cng... Cc file .ned c th c vit bng bt k b son tho hoc s dng chng trnh GNED c trong OMNeT++. nh ngha cu trc ca cc message (cc file c phn m rng .msg): Ngi s dng c th nh ngha rt nhiu kiu messsage v thm cc trng d liu cho chng. OMNeT++ s dch nhng nh ngha ny sang cc lp C++ y . M ngun ca cc module n gin. y l cc file C++ vi phn m rng l .h hoc .cc. Phn nhn m phng. Phn ny cha code qun l qu trnh m phng v cc th vin lp m phng. N c vit bng C++, c bin dch v c t cng dng vi cc file th vin (cc file c phn m rng l .a hoc .lib). Giao din ngi s dng. Giao din ny c s dng khi thc hin qu trnh m phng, to s d dng cho qu trnh sa li, biu din (demonstration) hoc khi thc hin m phng theo tng khi (batch execution of simulations). C mt vi kiu giao din trong OMNeT++, tt c u c vit bng C++, c bin dch v t cng nhau trong cc th vin (cc file c phn m rng l .a hoc .lib).

H thng m phng cung cp cho ta cc thnh phn sau:

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++

Bo co thc tp chuyn ngnh

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.

2.3.2. H thng file


Sau khi ci t OMNet++, th mc omnetpp trn h thng my ca bn nn cha cc th mc con di y. H thng m phng: omnetpp/ bin/ include/ lib/ bitmaps/ doc/ manual/ tictoc-tutorial/ api/ nedxml-api/ src/ src/ nedc/ sim/ parsim/ netbuilder/ envir/ cmdenv/ th mc gc ca OMNeT++ cc cng c trong OMNeT++ (GNED, nedtool...) cc file header cho m hnh m phng cc file th vin cc biu tng ho cc file hng dn, readme... file hng dn dng HTML gii thiu s dng OMNeT++ API tham chiu dng HTML API tham chiu cho th vin NEDXML m ngun ca ti liu m ngun ca OMNeT++ nedtool, trnh bin dch message phn nhn m phng cc file dnh cho vic thc hin phn tn cc file dnh cho vic c ng cc file NED m ngun cho giao din ngi s dng giao din ngi dng dng lnh

Trang 12

OMNet++

Bo co thc tp chuyn ngnh

tkenv/ gned/ plove/ scalars/ nedxml/ utils/ test/

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++

Bo co thc tp chuyn ngnh

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.1. Cc thnh phn ca ngn ng m t NED


Mt filel NED bao gm cc phn nh sau: Cc ch dn import Khai bo cc knh Khai bo cc module n gin v kt hp Khai bo mng

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++

Bo co thc tp chuyn ngnh

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.

3.3. Khai bo cc knh


Mt nh ngha knh c dng xc nh kiu kt ni. Tn ca knh c th c s dng sau trong file to cc lin kt vi cc tham s khc. C php: channel Tn knh //... endchannel Ba tham s c th c gn gi tr trong phn thn ca on m khai bo knh, tt c cc tham s ny u l cc tu chn: tr, li v tc d liu (datarate). tr l thi gian tr trn ng truyn c tnh bng giy. Li l tham s c trng cho xc sut truyn sai mt bit trn ng truyn. Tc d liu l tham s c tnh bng rng bng thng ca knh truyn, c tnh bng bit/s v c dng tnh thi gian truyn ca mt gi tin. Cc thuc tnh c th xut hin theo bt k th t no trong khai bo. Gi tr ca cc tham s (thuc tnh) nn l cc hng s. V d: channel LeasedLine delay 0.0018 // sec

Trang 15

OMNet++

Bo co thc tp chuyn ngnh

error 1e-8 datarate 128000 // bit/sec endchannel

3.4. Khai bo cc module n gin


Cc module n gin l cc khi chng trnh c xy dng sn cho cc module khc (c th l cc module kt hp). Cc module c khai bo bng tn v theo quy c tn ca cc module ny c t tn bt u bng ch ci in hoa. Cc module n gin c khai bo thng qua cc cng v cc tham s. C php: simple SimpleModuleName parameters: //... gates: //... endsimple

3.4.1. Cc tham s ca module n gin


Cc tham s l cc bin ph thuc vo tng m hnh. Tham s ca cc module n gin c s dng bi cc hm (hay cn c gi l cc thut ton ca module) khai bo trong chnh module. Theo quy c cc tham s s c t tn bt u bng ch ci thng. Cc tham s c khai bo bng cch lit k tn sau t kho parameters. Kiu ca cc tham s c th l kiu s (numeric), hng s (numeric const hay vit gn l const), gi tr logic (bool), kiu chui (string) hoc xml. Khi tham s khng khai bo r kiu th mc nh kiu ca tham s l numeric. V d: simple TrafficGen parameters: interarrivalTime, numOfMessages : const, address : string; gates: //... endsimple Cc tham s c th c gn gi tr t NED (khi cc module c s dng nh cc khi dng sn ca mt khi kt hp ln hn) hoc t file cu hnh omnetpp.ini. Tham s ngu nhin v hng s

Trang 16

OMNet++

Bo co thc tp chuyn ngnh

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.

3.4.2. Cc cng ca module n gin


Cng l cc im kt ni ca module. im bt u v kt thc mt kt ni gia hai module chnh l cc cng. OMNeT++ h tr kiu kt ni mt chiu (n cng) do c hai loi cng l cng vo v cng ra. Cc message c gi i t cng ra v c nhn vo t cng vo. Theo quy c, cc cng c t tn bt u bng ch ci thng. y chng ta c khi nim v cc vector cng trong mt vector cng l mt tp hp bao gm nhiu cng n. Cng c khai bo bng cch khai bo tn sau t kho gates. Cp du [] th hin mt vector cng. Cc thnh phn ca mt vector cng c nh s bt u t 0. V d: simple NetworkInterface parameters: //... gates: in: fromPort, fromHigherLayer; out: toPort, toHigherLayer; endsimple simple RoutingUnit parameters: //... gates: in: output[];

Trang 17

OMNet++

Bo co thc tp chuyn ngnh

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.

3.5. Khai bo module kt hp


Module kt hp l cc module c th cha mt hoc nhiu cc module con. Bt k kiu module no (n gin hay kt hp) u c th c dng nh l mt module con. Cng ging nh cc module n gin, cc module kt hp cng c cc cng, cc tham s v chng c th c s dng bt k ch no m cc module n gin c th c s dng. Hnh tng ho chng ta c th tng tng cc module kt hp ging nh cc hp ba cng m chng ta c th giu phn m hnh m phng v cc cu trc phc tp bn trong n. Khng c cc hnh vi tch cc (active behaviour) no lin quan n cc module kt hp - chng ch n gin l mt nhm cc module kt hp trong mt thnh phn ln hn c th c s dng nh mt m hnh hoc nh mt khi dng sn cho cc module kt hp khc. Theo quy c, tn ca cc module (bao gm c kiu module kt hp) u c bt u bng ch hoa. Cc module con c th s dng cc tham s ca module cha. Cc module con ny c th kt ni vi nhau hoc/v kt ni vi module kt hp cha chng. Vic khai bo cc module kt hp cng tng t nh khai bo cc module n gin. Phn khai bo cng bao gm cc t kho parameters v gates, ngoi ra n cn s dng thm hai t kho l submodules v connections. C php: module Tn_module parameters: //... gates: //... submodules: //... connections: //... endmodule Ch l tt c cc khai bo trn (parameters, gates, submodules, connections) ch l tu chn.

Trang 18

OMNet++

Bo co thc tp chuyn ngnh

3.5.1. Cc tham s v cng ca module kt hp


Cc tham s v cng ca module kt hp cng c khai bo v hot ng tng t nh cc tham s v cng ca cc module n gin. Cc tham s ca module kt hp c th c s dng bi cc module con v thng c dng khi to gi tr cho cc tham s ca cc module con. Cc tham s cng c th c s dng xc nh cu trc bn trong ca cc module kt hp: s cc module con, kch thc ca cc vector cng mt khc cc tham s ny cng c th c s dng xc nh cc kt ni bn trong module kt hp. Cc tham s nh hng n cu trc bn trong ca module nn c khai bo l const gi tr ca tham s khng thay i theo cc ln truy nhp. Tri li nu cc tham s c khai bo l cc gi tr ngu nhin, ngi s dng c th s c cc gi tr khc nhau mi ln tham s c truy nhp trong qu trnh x l ca module kt hp. V d: module Router parameters: packetsPerSecond : numeric, bufferSize : numeric, numOfPorts : const; gates: in: inputPort[]; out: outputPort[]; submodules: //... connections: //... endmodule

3.5.2. Cc module con


Cc module con c khai bo sau t kho submodules. Theo quy c cc module con c t tn bt u vi ch ci thng. Cc module con c th l mt module n gin hoc mt module kt hp. Trnh bin dch NED phi bit c kiu ca module do cc module con phi c khai bo sm hn hoc c import t cc file NED khc. Ngi s dng cng c kh nng to ra cc vector module con v kch thc ca vector ny c th nhn vo t gi tr ca mt tham s. Khi khai bo cc module con, bn cn phi gn gi tr cho cc tham s ca module v nu kiu module tng ng c s dng cc vector cng th bn phi xc nh cho n mt kch thc c th. V d: module Tn_Module_kt_hp //... submodules:

Trang 19

OMNet++

Bo co thc tp chuyn ngnh

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

3.5.3. Tham s tn kiu module con


Vic s dng tn ca cc kiu module nh cc tham s to iu kin d dng cho s dng cc module con. Ly v d, cho rng mc ch ca qu trnh m phng l so snh s khc nhau gia cc thut ton tm ng. Gi s bn lp trnh cc thut ton tm ng cn thit nh cc module n gin DistVecRoutingNode, AntNetRouting1Node, AntNetRouting2Node, ... Bn cng to ra mt topology mng nh mt module kt hp gi l RountingTestNetwork phc v cho vic nh gi hot ng ca cc thut ton. Hin ti RountingTestNetwork ang s dng thut ton DistVecRoutingNode (tt c cc module con u c kiu ny) v bn mun c

Trang 20

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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.

3.5.4. Gn gi tr cho cc tham s ca cc module con


C th gn gi tr cho cc tham s ca cc module con trong phn khai bo parameters ca cc module con. Cc tham s ca module con c th c gn gi tr nh cc hng s hoc c th s dng ngay cc tham s ca module kt hp cha n, hoc cng c khi gn bng mt biu thc. Khng bt buc tt c cc tham s u phi khi gn gi tr. Gi tr ca tham s c th nhn trong lc thc hin hoc nhn t file cu hnh hoc trong trng hp gi tr ca tham s khng c trong file cu hnh, qu trnh m phng s nhc bn. Tuy nhin nu cc tham s trong file cu hnh, s d dng hn cho vic sa cha gi tr ca cc tham s. V d: module CompoundModule parameters: param1: numeric, param2: numeric, useParam1: bool; submodules: submodule1: Node parameters: p1 = 10, p2 = param1+param2, p3 = useParam1==true ? param1 : param2; //... endmodule Trong khi m hnh hot ng, cc biu thc gn gi tr vn c tnh ton nu cc tham s tng ng c gi n. Ngoi ra gi mt tham s ca module con ta c th s dng c php nh sau: submodule.parametername (hoc submodule[index].parametername). T kho input Khi mt tham s khng nhn gi tr trc tip trong file NED hoc trong file cu hnh, ngi s dng s c nhc nhp gi tr cho tham s khi qu trnh m phng bt u thc hin. Tuy nhin nu bn mun ch ng nhp gi tr tham s khi bt u qu trnh m phng, bn c th s dng t kho input. T kho input cng cho php ngi s dng c th thit lp thng bo nhp gi tr hay t gi tr mc nh cho tham s. C php: parameters:

Trang 22

OMNet++

Bo co thc tp chuyn ngnh

numCPUs = input(10, "Number of processors?"), //gi tr mc //nh, du nhc processingTime = input(10ms), //thng bo nhp gi tr cacheSize = input;

3.5.5. Khai bo kch thc ca cc vector cng ca module con


Kch thc ca cc vector cng c khai bo bng t kho gatesizes. Kch thc ny c th c khai bo nh mt hng s, mt tham s hay mt biu thc. V d: simple Node gates: in: inputs[]; out: outputs[]; endsimple module CompoundModule parameters: numPorts: const; submodules: node1: Node gatesizes: inputs[2], outputs[2]; node2: Node gatesizes: inputs[numPorts], outputs[numPorts]; //... endmodule gatesizes l khng bt buc, nu bn mun b qua vic khai bo gatesizes cho vector cng n s c t bng 0. Mt l do b qua vic gn gi tr cho gatesizes l bn s s dng gate++ (extend gate vector with a new gate - vector cng m rng vi mt cng mi). gate++ s c trnh by k hn trong phn Connection.

3.5.6. Khai bo gatesizes v tham s c iu kin


Kch thc ca vector cng v cc tham s trong module con thng c khai bo km thm iu kin. V d: module Chain parameters: count: const;
Trang 23

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

C th xut hin trong mt vng lp ( to ra nhiu kt ni). C th l iu kin.

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++

Bo co thc tp chuyn ngnh

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.

3.6. Khai bo mng


thc s to mt m hnh m phng chy c th ngi s dng phi khai bo mng. Vic khai bo mng s to ra mt m hnh m phng nh l mt i tng c th ca mt kiu module nh ngha trc . Kiu module y thng l mt module kt hp, tuy nhin cng c th to ra mt mng ch l mt module n gin c lp. C th khai bo nhiu mng trong mt hoc nhiu file NED. Chng trnh m phng s dng cc file NED s c th chy bt c mt mng no. Nu bn mun c th mt mng no c thc hin bn c th ch r trong file cu hnh (omnetpp.ini). C php khai bo mng cng tng t nh khai bo cc module con: network wirelessLAN: WirelessLAN parameters: numUsers=10, httpTraffic=true, ftpTraffic=true, distanceFromHub=truncnormal(100,60); endnetwork y WirelessLAN l tn ca mt kiu module kt hp nh ngha t trc, trong c th cha cc kiu module kt hp khc nh WirelessHost, WirelessHub... Mt cch t nhin, ch cc kiu module khng c cng mi c th c dng trong cc khai bo mng.

3.7. Cc biu thc


Cc biu thc c s dng trong NED c vit theo c php ca C++. Cc biu thc dng cc ton t ca C++, c th s dng cc tham s theo c hai hnh thc truyn theo tham tr hoc tham bin, c th gi cc hm ca C++, nhn cc gi tr ngu nhin hoc yu cu nhp t ngi s dng... Khi mt tham s c gn tr bng mt biu thc th gi tr biu thc ch c tnh mi ln tham s c gi ti (tr khi tham s c khai bo const). iu ny c ngha l mt module n gin s dng mt tham s khng c khai bo const s nhn c cc gi tr khc nhau mi ln gi tham s trong qu trnh m phng. Cc biu thc khc (cha cc tham s c khai bo const) s ch c tnh mt ln. Cc tham s c kiu XML c th c dng truy nhp vo cc file XML hay mt phn no ca cc file ny. Tham s kiu XML c th c gn gi tr bng ton t xmldoc().

Trang 27

OMNet++

Bo co thc tp chuyn ngnh

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)

3.7.2. Tham chiu


Cc biu thc c th s dng cc tham s ca module kt hp trc tip cha n v ca cc module n gin c khai bo trc trong file NED. C php: submod.param hoc submod[index].param. C hai t kho c th c s dng vi tn ca tham s: ancestor v ref. ancestor c ngha l nu mt module kt hp khng cha mt tham s no, th tham s s c tm kim trong cc module cp cao hn trong cu trc phn cp. ancestor khng c khuyn khch s dng bi v n xm phm ti khi nim ng

Trang 28

OMNet++

Bo co thc tp chuyn ngnh

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:

Ton t -, !, ~ ^ *, /, % +, <<, >> &, |, # == !=

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++

Bo co thc tp chuyn ngnh

>, >= <, <= &&, ||, ## ?:

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

3.7.4. Ton t sizeof() v index


Ton t sizeof() tr v kch thc ca mt vector cng. Ton t index tr v ch s ca module con hin thi trong mt vector module. V d di y m t mt router vi mt s cng v mt n v routing (gi s cc vector cng in[] v out[] c cng kch thc). module Router gates: in: in[]; out: out[]; submodules: port: PPPInterface[sizeof(in)]; // one PPP for each input // gate parameters: interfaceId = 1+index; // 1,2,3... routing: RoutingUnit; gatesizes: in[sizeof(in)]; // one gate pair for each port out[sizeof(in)]; connections: for i = 0..sizeof(in)-1 do in[i] --> port[i].in; out[i] <-- port[i].out; port[i].out --> routing.in[i]; port[i].in <-- routing.out[i]; endfor; endmodule

3.7.5. Ton t xmldoc()


Ton t xmldoc() c th c dng gn gi tr cho cc tham s kiu XML, ngha l c th dng ton t ny tr vo cc file XML hay cc element c th trong file XML. C th s dng ton t xmldoc() theo hai cch:

Trang 30

OMNet++

Bo co thc tp chuyn ngnh

xmldoc() nhn vo V d: xmlparam = xmldoc(someconfig.xml);

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.6. XML v XPath


Tham s XPath ca ton t xmldoc() ch ra mt element c th trong file XML, iu ny cho php d dng ni nhiu file cu hnh dng XML nh thnh mt file ln hn. Nu biu thc XPath ph hp vi nhiu element trong file th element u tin (th t duyt theo chiu su) s c chn. C php ca biu thc: Biu thc cha ng dn trong cc thnh phn c phn tch bng du / hoc //. Cc thnh phn ca ng dn c th l tn th (tag name) ca cc element, du *, . hoc ... Tn th ca cc element v du * c th c thm biu thc m t thuc tnh ca element theo dng [v tr] hoc [@thuc_tnh=gi tr]. V tr ca cc element trong file XML c tnh bt u t 0. Du / c ngha l xt cc element con; du // s xt n cc element bt k cp no nm di element hin thi. Du ., .. v * ln lt i din cho element hin thi, element cha v mt element vi tn bt k. V d: /foo element gc (root element) c tn l <foo> /foo/bar element con <bar> u tin ca element gc <foo> //bar element <bar> u tin bt k cp no (duyt theo chiu su) /*/bar element con <bar> u tin ca element gc c tn bt k /*/*/bar element con <bar> u tin di hai cp ca element gc /*/foo[0] element con <foo> u tin ca element gc /*/foo[1] element con <foo> th hai ca element gc /*/foo[@color=green] element con <foo> u tin c thuc tnh color c gi tr bng green //bar[1] mt element <bar> v tr bt k nhng phi l element <bar> th hai //*[@color=yellow] bt k element no bt k v tr no c thuc tnh "color" c gi tr bng "yellow" //*[@color=yellow]/foo/bar element con <bar> u tin ca element con <foo> u tin ca mt element c thuc tnh color bng yellow v tr bt k.

3.7.7. Hm
Trong NED, bn c th s dng cc hm ton hc sau:

Trang 31

OMNet++

Bo co thc tp chuyn ngnh

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

3.7.8. Gi tr ngu nhin


Cc tham s tr khi c khai bo l const, nu khng gi tr ca cc tham s thng l cc gi tr ngu nhin. Cc gi tr ny l khc nhau mi ln tham s c gi n. Cc gi tr ngu nhin c sinh ra nh b to s ngu nhin (Random Number Generator - RNG) ca OMNeT++.

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)

weibull(a, b, rng=0) pareto_shifted(a, b, c, rng=0)

Trang 32

OMNet++

Bo co thc tp chuyn ngnh

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

binomial(n, p, rng=0) geometric(p, rng=0) negbinomial(n, p, rng=0) poisson(lambda, rng=0)

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

4. GII THIU GNED


4.1. Giao din

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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:

Nhn OK, tng t bn to thm mt vi module nh trong hnh v:

Trang 38

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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.

Chuyn sang ch nhn NED Source Bn c th thy m ngun ca m hnh m bn va to:

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

Sau ko r module rnd_eval ca file ta va to trn vo module Module ca file mi ba ln.

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++

Bo co thc tp chuyn ngnh

Quan st trn Tree View, ta s thy cc kt ni va c t ng to ra

V file NED cng c nhng thay i tng ng

Trang 45

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

Thay i tng t i vi cc module cn li, sau save file li.

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++

Bo co thc tp chuyn ngnh

phi import file Random_Number_Evaluator.ned c th s dng module rnd_eval. n nt v chn mc Imports

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++

Bo co thc tp chuyn ngnh

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.

5.2 Cc s kin trong OMNeT++


OMNeT++ s dng cc message biu din cc s kin. Mi s kin c biu din bi mt i tng ca lp cMessage hoc lp con ca lp ny.

5.3 M hnh ho hot ng truyn gi tin


Tng t nh trnh by trong phn 2.1.4, Mt kt ni c th c ba tham s c trng. Nhng tham s ny rt thun tin cho cc m hnh m phng mng thng tin nhng khng hu dng lm cho cc kiu m hnh khc. Ba tham s ny bao gm: tr ng truyn (propagation delay) tnh bng s - giy.

Trang 50

OMNet++

Bo co thc tp chuyn ngnh

T s li bit, c tnh bng s li/bit. T s d liu, c tnh bng s bit/s.

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

5.4 Khai bo kiu module n gin 5.4.1 Tng quan


Mt module vit bng C++ bao gm: Khai bo lp module: lp do ngi lp trnh xy dng l lp con ca lp cSimpleModule. ng k kiu ca module (module type registration): Define_Module() hoc Define_Module_Like() macro. Trin khai c th lp module.

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) { ... }

Module trn c khai bo trong file NED nh sau:


// file: swp.ned

Trang 51

OMNet++

Bo co thc tp chuyn ngnh

simple SlidingWindowProtocol parameters: windowSize: numeric const; gates: in: fromNetw, fromHigherLayer; out: toNetw, toHigherLayer; endsimple

5.4.2 ng k kiu module


Trong VD trn cha cu lnh:
Define_Module(SlidingWindowProtocol);

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.

5.5 Xy dng hm cho Module 5.5.1 Hm handleMessage()


Hm handleMessage() c gi khi mi message n module. Khi hm ny s x l gi tin v tr li kt qu ngay lp tc. Ch rng cc module hm handleMessage() KHNG c t ng gi, m phi nhn c gi tin t module khc. Mun ta phi thm cc self-message t hm khi to initialize() th hm handleMessage() s bt u lm vic m khng cn phi nhn gi tin t module khc. s dng hm handleMessage() trong mt module, ta phi xc nh kch thc ca zero stack size cho module . Bi l kch thc ca zero stack s khin OMNeT++ bit ta mun s dng hm handleMessage() hay activity(). Mt s hm thng dng m ta c th s dng trong hm handleMessage(): Cc hm send(): gi gi tin ti cc module khc. Hm scheduleAt(): nh k mt s kin (thng l module t gi gi tin cho chnh n) Hm cancelEvent(): hy b nh k mt s kin nh hm scheduleAt()

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

5.5.3 Hm initialize() v finish()


Hm initialize(): khi to cc gi tr cn thit cho qu trnh m phng Hm finish(): hm ny c s dng ghi li cc thng s trng thi cn thit khi qu trnh m phng kt thc.

5.6 Gi v nhn cc message 5.6.1 Gi cc message


Sau khi to ra cc gi tin, ta c th gi n thng qua mt cng vo/ra nh hm send() vi c php nh sau:
send(cMessage *msg, const char *gateName, int index=0); send(cMessage *msg, int gateId); send(cMessage *msg, cGate *gate);

V d:
send(msg, "outGate"); send(msg, "outGates", i); // send via outGates[i]

on m sau s to ra v gi cc gi tin sau mi 5 giy.


int outGateId = findGate("outGate"); while(true) { send(new cMessage("packet"), outGateId); wait(5); }

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++

Bo co thc tp chuyn ngnh

5.6.3 Gi c tr (Delayed sending)


wait( someDelay ); send( msg, "outgate" );

C php cng tng t nh trn, ch thm tham s thi gian tr


sendDelayed(cMessage *msg, double delay, const char *gateName, int index); sendDelayed(cMessage *msg, double delay, int gateId); sendDelayed(cMessage *msg, double delay, cGate *gate);

V d:
sendDelayed(msg, 0.005, "outGate");

5.6.4 Gi trc tip message


S dng hm sendDirect() gi trc tip gi tin t module ny ti module kia m khng cn quan tm n thng qua cng no.
sendDirect(cMessage *msg, double delay, cModule *mod, int gateId) sendDirect(cMessage *msg, double delay, cModule *mod, const char *gateName, int index=-1) sendDirect(cMessage *msg, double delay, cGate *gate)

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

5.7 Truy nhp cc cng v kt ni 5.7.1 i tng cng (gate object)


Module cng l mt i tng ca lp cGate. Hm gate() s tr v 1 con tr ti i tng cGate. V mun truy cp vo tng thnh phn ca cng , ta thc hin chng hm
cGate *outgate = gate("out"); cGate *outvec5gate = gate("outvec",5);

Trang 55

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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

To 2 module v kt ni chng vi nhau:


cModuleType *moduleType = findModuleType("TicToc"); cModule *a = modtype->createScheduleInit("a",this); cModule *b = modtype->createScheduleInit("b",this); a->gate("out")->connectTo(b->gate("in")); b->gate("out")->connectTo(a->gate("in"));

Hy kt ni
srcGate->disconnect();

Trang 57

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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.

6.1.3. M hnh ho gi tin


Cng nhn v thi gian ti ca mt message Cc hm ch ra v tr nhn v gi ca mt message: int senderModuleId(); int senderGateId();

Trang 60

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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

6.1.5. Thm i tng v tham s


Thm i tng Lp cMessage c i tng cArray c th cha cc i tng khc. Tuy nhin ch cc i tng k tha t lp cObject (hu ht cc lp trong OMNeT++ u k tha t lp ny) mi c th c thm vo cc message. Cc hm addObject(), hasObject(), removeObject() nhn tn ca cc i tng nh cc kho truy nhp mng. V d: cLongHistogram *pklenDistr = new cLongHistogram("pklenDistr"); msg->addObject( pklenDistr ); ... if (msg->hasObject("pklenDistr")) { cLongHistogram *pklenDistr = (cLongHistogram *) msg->getObject("pklenDistr"); ... } Bn phi cn thn khi thm mt i tng vo message, trnh xy ra tnh trng xung t gia cc i tng b trng tn. Nu bn khng gn km mt i tng no vo message anh khng gi hm parList(), i tng cArray s khng c to. Bn cng c th thm vo message cc i tng khng k tha t cObject (noncObject object) bng cch s dng con tr ca lp cPar. V d: struct conn_t *conn = new conn_t; // conn_t is a C struct

Trang 63

OMNet++

Bo co thc tp chuyn ngnh

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");

6.2. nh ngha message 6.2.1. Gii thiu


Trong thc t, bn s phi thm rt nhiu trng vo lp cMessage lm cho n d dng hn. Ly v d, nu bn m hnh ho cc gi tin trong mt mng thng tin, bn cn c cch lu phn header ca giao thc trong cc i tng message. Mt cch t nhin, chng ta thy rng th vin m phng ca OMNeT++ c vit trn ngn ng C++, do thm cc trng mi vo lp cMessage ta c th to cc lp con k tha t lp cMessage v thm cc trng vo nh nhng thnh phn ring ca lp con. Tuy nhin, do mi trng m bn thm vo u cn t nht 3 thnh phn (d liu thnh phn ring, hm set() thit lp gi tr v hm get() tr v gi tr) v lp mi cn phi c tch hp vi nn tng m phng nn vic s dng C++ thc s l mt cng vic bun t v mt thi gian. OMNeT++ cung cp cho ngi s dng mt phng php lm vic hiu qu hn, l nh ngha cc message. Nhng nh ngha ny s dng mt c php rt ngn gn m t ni dung ca cc message. M C++ s t ng sinh ra da vo nhng nh ngha ny v bn hon ton c kh nng sa li nhng on code cho thch hp v tng ca bn. Lp message u tin

Trang 64

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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

6.2.2. S dng enum


enum {...} s dng trong khai nh ngha message s c chuyn thnh kiu enum thc s trong C++. y l mt i tng dng cha cc gi tr text i din cho cc hng s. Vic s dng enum cho php hin th tn di dng biu tng trong Tkenv. V d: enum ProtocolTypes { IP = 1; TCP = 2; }; Cc gi tr trong enum phi l duy nht.

6.2.3. Khi to cho mt message


Cch khi to c bn Bn c th m t mt message theo c php sau: message FooPacket { fields: int sourceAddress; int destAddress; bool hasPayload; }; Trnh bin dch s dch on m t trn thnh mt file C++ vi mt lp c tn l FooPacket. FooPacket ny s l mt lp con ca lp cMessage. i vi mi trng trong on khai bo trn, trong lp C++ tng ng cng s c mt thnh phn d liu ring, mt hm setter v mt hm getter. Do FooPacket s c nhng hm sau: virtual int getSourceAddress() const; virtual void setSourceAddress(int sourceAddress); virtual int getDestAddress() const; virtual void setDestAddress(int destAddress);
Trang 66

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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

6.2.4. Quan h k tha v hp thnh


Nhng phn trn ni v vic thm cc trng d liu c bn (int, double, char, ...) vo mt message. i vi nhng module n gin nh vy l kh tuy nhin i vi nhng module phc tp, bn cn cn: Thit lp cu trc phn cp cho cc lp message, ngha l cc lp message khng ch k tha t lp cMessage m cn c th k tha t nhng lp do bn to ra. Cc trng d liu trong message khng ch l nhng kiu d liu c bn m n cn c th l cc cu trc (struct), cc lp hoc cc kiu d liu do ngi dng t nh ngha. Quan h k tha gia cc lp message Mc nh, cc lp message u l cc lp con k tha t lp cMessage, tuy nhin bn c th s dng mt lp c s khc thng qua t kho extends message FooPacket extends FooBase { fields: ... }; Theo v d ny, lp C++ tng ng s c dng nh sau: class FooPacket : public FooBase { ... }; Khai bo lp

Trang 69

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

{ ... }; 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);

6.2.5. S dng cc kiu c sn ca C++


Nu bn mun s dng cc kiu d liu t mnh nh ngha trong cc message, bn cn phi thng bo kiu d liu vi trnh bin dch message. Gi s bn c khai bo mt cu trc c tn IPAddress trong file ipaddress.h: // ipaddress.h struct IPAddress { int byte0, byte1, byte2, byte3; }; c th s dng IPAddress trong message, file message (c tn l foopacket.msg) nn cha on m sau:

Trang 71

OMNet++

Bo co thc tp chuyn ngnh

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;

6.2.6. Thay i cc file C++


Mu Generation Gap i khi bn cn cc on m t sinh ra c th thc hin c nhiu hn hoc khc i so vi nhng g m trnh bin dch to thnh. Ly v d, khi t mt trng s nguyn c tn l payloadLength, c th bn s cn chnh sa chiu di ca gi tin. Tuy nhin on m t sinh ch cha hm setPayloadLength(), iu ny khng thch hp p ng yu cu t ra. void FooPacket::setPayloadLength(int payloadLength) { this->payloadLength = payloadLength; } tho mn yu cu, hm setPayloadLength() nn c dng nh sau: void FooPacket::setPayloadLength(int payloadLength) { int diff = payloadLength - this->payloadLength; this->payloadLength = payloadLength; setLength(length() + diff); } Bnh thng, nhc im ln nht ca vic sinh m t ng l s kh khn khi tho m cc yu cu ca ngi s dng. Vic chnh sa bng tay li cc file t ng ny l

Trang 72

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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;

6.2.7. S dng STL trong cc lp message


Vic s dng cc trng tru tng cn cho php ngi s dng c th dng cc lp vector hoc stack trong lp message. Xt nh ngha message di y: struct Item { fields: int a; double b; } message STLMessage { properties: customize=true; fields: abstract Item foo[]; // will use vector<Item> abstract Item bar[]; // will use stack<Item> } Nu bn bin dch on khai bo trn, phn m sinh ra s ch bao gm mt cp hm tng ng vi hai trng foo v bar, khng c thnh phn d liu v khng c hm no c khai bo c th. Bn c th thay i li mi th, c th trin khai li cc thuc tnh foo v bar vi kiu std::vector v std::stack: #include <vector> #include <stack> #include "stlmessage_m.h" class STLMessage : public STLMessage_Base {

Trang 75

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

7. CHY CC NG DNG OMNeT++


Nh trnh by phn m u, mt h thng mng m phng trong OMNeT++ gm cc thnh phn sau: Cc file .ned m t topo mng. Cc file c phn m rng .msg cha khai bo cc message Cc file C++ (c phn m rng l .cc trong UNIX hoc .cpp trong Windows) u tin, dch cc file NED v cc file message thnh C++, s dng NED compiler (nedc) v message compiler (opp_msgc). Qu trnh tip theo ging nh bin dch m ngun C/C++: o Trong Linux: cc file .cc file .o. file .obj. o Trong Windows: cc file .cpp

Qu trnh xy dng mt chng trnh m phng:

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++

Bo co thc tp chuyn ngnh

Hnh I-7.1 - Qu trnh xy dng v thc hin m hnh

7.1 S dng gcc


To Makefile: Sau khi xy dng xong cc file ngun *.ned, *.msg, *.cc, *.h trong cng 1 th mc hy g
% opp_makemake

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.

7.2 S dng Microsoft Visual C++


Tng t nh trong UNIX. Nu g opp_nmakemake trong th mc cha cc file ngun *.ned, *.msg, *.cpp, *.h th s to ra file Makefile.vc.
opp_nmakemake

to file chy, ta g
nmake -f Makefile.vc

Trang 79

OMNet++

Bo co thc tp chuyn ngnh

8. M HNH N GIN - TICTOC


minh ha cch m phng mng bng OMNeT++, ta s bt u vi 1 mng rt n gin, ch gm 2 nt trao i d liu: 1 nt to ra gi tin v nt th 2 nhn v gi tr li gi tin ny. Chng ta gi 2 nt ny l "tic" v "toc". Cc bc xy dng ng dng trn: 1. To 1 th mc tn l tictoc v cd ti th mc ny. 2. To file topo mng. t tn l tictoc1.ned:
simple Txc1 gates: in: in; out: out; endsimple // // Two instances (tic and toc) of Txc1 connected both ways. // Tic and toc will pass messages to one another. // module Tictoc1 submodules: tic: Txc1; toc: Txc1; connections: tic.out --> delay 100ms --> toc.in; tic.in <-- delay 100ms <-- toc.out; endmodule network tictoc1 : Tictoc1 endnetwork

M t: Ta nh ngha 1 mng gi l tictoc1l mt i tng ca module kiu Tictoc1 (network . endnetwork).

Trang 80

OMNet++

Bo co thc tp chuyn ngnh

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

3. C++ file txc1.cc (UNIX) hoc txc1.cpp trong Windows


#include <string.h> #include <omnetpp.h> class Txc1 : public cSimpleModule { // This is a macro; it expands to constructor definition. Module_Class_Members(Txc1, cSimpleModule, 0); // The following redefined virtual function holds the algorithm. virtual void initialize(); virtual void handleMessage(cMessage *msg); }; // The module class needs to be registered with OMNeT++ Define_Module(Txc1); void Txc1::initialize() { // Initialize is called at the beginning of the simulation. // To bootstrap the tic-toc-tic-toc process, one of the modules needs // to send the first message. Let this be `tic'. // Am I Tic or Toc? if (strcmp("tic", name()) == 0) { // create and send first message on gate "out". "tictocMsg" is an // arbitrary string which will be the name of the message object. cMessage *msg = new cMessage("tictocMsg"); send(msg, "out"); }

Trang 81

OMNet++

Bo co thc tp chuyn ngnh

} 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

Ta s thy c thm cc file trong th mc tictoc

Trang 82

OMNet++

Bo co thc tp chuyn ngnh

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

7. Sau , ta s bt u chy ng dng bng lnh: -UNIX $ ./tictoc - Windows >tictoc

Ta s thy ca s m phng hin ra

Trang 83

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

10. Mun thot ch cn n Close hoc chn File|Exit.

Trang 85

OMNet++

Bo co thc tp chuyn ngnh

Phn II TNG QUAN V WLAN


1. GII THIU
Cng ngh khng dy ni chung v cng ngh mng LAN khng dy (WLAN) ni ring hin nay ang l im nng trong lnh vc Cng ngh thng tin v Truyn thng (ICT) ton th gii. Mng LAN khng dy hay cn gi l mng LAN v tuyn (Wireless LAN) l mt mng d liu mm do, s dng sng v tuyn hay hng ngoi truyn v nhn d liu. WLAN cung cp tt c cc chc nng v u im ca mt mng LAN truyn thng nh Ethernet hay Ring v khng b gii hn bi cp.

1.1 u im ca mng LAN khng dy


Kh nng ng dng rng ri trn phm vi rng, s pht trin nhanh chng ca Internet v dch v trc tuyn l li ch ca vic chia s d liu v ti nguyn. Vi WLAN, ngi dng truy nhp vo thng tin chia s khng cn h thng dy kt ni, khng cn lp t hoc di chuyn dy khi ngi qun tr mng thit lp m rng mng. So vi mng LAN truyn thng, WLAN c cc u im ni tri v hiu sut, s tin li v chi ph xy dng. Kh nng di ng: h thng WLAN c th cung cp ngi dng LAN truy nhp thng tin thi gian thc mi ni trong cc t chc ca h. S linh hot ny h tr hiu sut v c hi dch v khng th c mng c dy. D dng trin khai: thit lp h thng WLAN nhanh v d dng, khng mt nhiu cng sc thit k dy. Ci t linh hot: cng ngh khng dy cho php mng kt ni n mi ni, bao gm c nhng i vi mng LAN c dy l khng th. H thp chi ph trin khai: mc d u t ban u v phn cng c th cao hn mng c dy, tuy nhin xt chi ph tng th v chi ph theo tui th c th thp hn ng k. V lu di, WLAN s em li li ch rt ln trong cc mi trng ng yu cu s di chuyn v thay i nhiu. Kh nng m rng: h thng WLAN c th cu hnh trong nhiu m hnh p ng cc ng dng v cu hnh c th d dng thay i v phm vi t mng im - im xy dng cho s nh ngi dng n cc mng phi hp vi hng ngn ngi dng cho php chuyn vng trn phm vi rng.

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++

Bo co thc tp chuyn ngnh

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

v s tin li trong vic truy cp mng m vn c th di chuyn

Trang 87

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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.

1.2.2 H thng WiFi VNN


nh ngha: Wi-Fi l dch v truy nhp Internet tc cao bng cng ngh khng dy theo chun 802.11 IEEE. Cng ngh s dng: IEEE 802.11b Kch thc ph sng ca mi HOTSPOT: < 300m. Tn s: 2,4 GHz (gii IMS), cng sut pht: 100mW, rng bng thng: 22MHz. Tc : 1Mbps, 2Mbps, 5.5 Mbps, 11 Mbps. Bo mt: WEP. H qun l: Radius (AAA). K thut tri ph: DSSS, FHSS. Tnh cc: theo thi gian, volume, hoc flate rate. ng k: theo account.

Trang 90

OMNet++

Bo co thc tp chuyn ngnh

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)

2.1 M hnh c s (Infrastructure 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++

Bo co thc tp chuyn ngnh

2.1.1 Tp hp dch v c bn (BSS - Basic Service Set)


BSS bao gm: Mt AP kt ni vi 1 mng c dy (wired network) Mt s thit b khch (a set of stations)

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

2.1.2 Tp hp cc dch v m rng (ESS Extended Service Set)


M hnh m rng (ESS) l s lin kt ca 2 hay nhiu m hnh c s bi mt h thng phn tn (distribution system). H thng phn tn ny c th l hu tuyn (wired) nh LAN hay WAN, hoc l v tuyn (wireless). T ta cng c th thy mt m hnh m rng cn c t nht 2 AP cng hot ng ch c s.

Trang 92

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

Hnh II-2.5 - M hnh mng thc t

Trang 95

OMNet++

Bo co thc tp chuyn ngnh

2.2 M hnh Adhoc c lp (Independent network)

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++

Bo co thc tp chuyn ngnh

3. HOT NG CA CC CHUN LIN QUAN


3.1 Cc bng tn ISM
Trong phn trn, ta c ni s lc v cc thng s lin quan ti bng thng ca cc chun. Cc bng thng trn l do FCC quy nh. FCC (Federal Communication Commission) hi ng truyn thng thnh lp t nm 1934 ti M. Nhim v ca c quan ny l ban hnh cc quy nh v truyn thng trong nc M v quc t vi cc lnh vc: radio, TV, v tinh, cp (cable), mng my tnh i vi mng cc b v tuyn, FCC quy nh v: Tn s sng v tuyn cho php i vi WLAN ( trnh xung t vi sng ca cc h thng truyn thng khc) Nng lng (cng sut) cho php Cc thit b WLAN no c hot ng v 1 s quy nh khc km theo

iu m ta quan tm ch yu y l cc tn s sng v tuyn cho php, hay ni khc i l cc bng tn.

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

3.1.1 Bng tn ISM (ISM bands)


ISM bands l vit tt ca Industrial - Scientific - Medical bands. C 3 loi bng tn ISM dnh cho mng v tuyn: 900 MHz
Trang 97

OMNet++

Bo co thc tp chuyn ngnh

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

Bng tn ISM 900 MHz

Bng tn ISM 2.4 GHz

Bng tn ISM 5.8 GHz

3.1.2 Bng tn UNII (UNII bands)


UNII l vit tt ca Unlicensed National Information Infrastructure bands Bng tn UNII l cc bng tn t 5 GHz tr ln v cch nhau 100 MHz ( rng bng tn - wide band = 100 MHz). C 3 loi bng tn UNII Bng tn thp (Lower bands) Min tn s: 5.15 GHz 5.25 GHz Cng sut cc i: 50 mW. Nhng trong thc t cc thit b WLAN (chun 802.11a) thng cng sut ch cn 40 mW. Bng tn trung bnh (Midle bands) Min tn s: 5.25 GHz 5.35 GHz Cng sut cc i: 250 mW (theo quy nh ca FCC). Nhng thc t cc chun ca IEEE ch c 200 mW Bng tn cao (Upper bands) Min tn s: 5.725 GHz 5.825 GHz Cng sut cc i: 1 W (FCC) , 800 mW (IEEE)

Trang 98

OMNet++

Bo co thc tp chuyn ngnh

3.2 Cc chun 802.11 (IEEE 802.11 family)


Cc chun ny do Vin k s in v in t - IEEE (Institute of Electrical and Electronics Engineers) to ra. IEEE l mt t chc v cng quen thuc trong lnh vc mng v vin thng. Trc h ban hnh mt lot cc chun ni ting nh: chun 802.1 v kin trc LAN, 802.3 - Ethernet, 802.5 Token Ring, 802.8 Cp quang (Fiber Optics), 802.14 Cable TV V by gi l h tiu chun 802.11 dnh cho WLAN. Chng ta s ln lt xem xt cc chun m IEEE ban b theo th t thi gian 802.11 802.11b 802.11a 802.11g

3.2.1 IEEE 802.11


y l chun WLAN u tin c cng b Chun ny bao gm cc h thng tri ph trc tip (DSSS) v tri ph dch tn (FHSS), c tc truyn d liu 1 Mbps v 2 Mbps. Hot ng bng tn ISM 2.4 GHz (2.4 GHz 2.4835 GHz)

3.2.2 IEEE 802.11b


IEEE 802.11b c bit n vi tn thng mi l Wi-Fi. IEEE 802.11b ch s dng cc h thng tri ph trc tip (DSSS), khng s dng tri ph dch tn (FHSS). Tc truyn d liu (data rate): 1 Mbps, 2 Mbps, 5.5 Mbps v ti a l 11 Mbps. Hot ng bng tn ISM 2.4 GHz (2.4 GHz 2.4835 GHz) Cc thit b ca chun 802.11b th cng l 802.11. Tc l chng tng thch vi cc thit b 802.11 trc . iu ny gip gim bt gi thnh khi nng cp.

3.2.3 IEEE 802.11a


Hot ng bng tn UNII 5 GHz. Trong khi 2 chun trc u hot ng bng tn ISM 2.4 GHz. Do cc thit b chun 802.11a s khng tng thch vi cc thit b theo chun 802.11 v 802.11b Tc truyn d liu (data rate): 6 Mbps, 9 Mbps, 12 Mbps, 18 Mbps, 36 Mbps, 48 Mbps v ti a l 54 Mbps.

3.2.4 IEEE 802.11g


Mc ch ca IEEE khi cho ra i chun 802.11g l mun: c c tc nh 802.11a. ng thi li phi tng thch vi 802.11 v 802.11b (tc l cng s dng bng tn ISM 2.4 GHz). t c 2 mc ch ny, 802.11g s dng k thut iu ch ODFM Orthogonal Frequency Division Multiplexing (Chia tn a trc giao).

Trang 99

OMNet++

Bo co thc tp chuyn ngnh

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.

3.2.5 Mt s chun khc trong h IEEE 802.11


IEEE 802.11n Lin minh WWiSE (worldwide spectrum efficiency) - bao gm cc cng ty Airgo Networks, Bermai, Broadcom, Conexant Systems, STMicroelectronics v Texas Instruments - cho bit cng ngh WI-FI mi ang c nhm tho lun 802.11n ca Vin K thut in v in t (IEEE) xem xt. y l b phn gim st mt chun Wi-Fi th h k tip c kh nng duy tr tc trao i d liu khng dy vt mc 100Mbps. Chun WI-FI xut trn da vo cng ngh MIMO-OFDM (multiple input, multiple output-orthogonal frequency division multiplexing), cung cp tc cao hn bng cch s dng hai ng-ten mi u ca tn hiu thay v mt ng-ten mi u nh hin nay. xut ca WWiSE, vn l mt trong hai la chn cnh tranh cho chun 802.11n, c thit k c th trin khai trn ton cu v tng thch ngc vi cc chun WI-FI hin ti nh 802.11b, .11a v .11g. Trong tuyn b v bn quyn sng ch ca mnh, cc cng ty thnh vin WWiSE s khng tnh ph bn quyn i vi nh pht trin cng ngh 802.11n, mt n lc nhm gim chi ph cho cc nh pht trin, nh sn xut v ngi tiu dng. Cng ngh MIMO s l thnh phn ct yu ca chun 802.11n, cung cp phm vi ph sng WLAN n nh hn vi t l truyn d liu siu nhanh: 'N s cho php ngi dng thc hin nhiu cng vic hn vi WI-FI, c bit trong cc ng dng a phng tin. Vi cc khch hng doanh nghip, chun khng dy mi ny cui cng s vt qua tc ca mng ni b truyn thng .Cc sn phm 'trc n' (Pre-n) trong chun WI-FI ang c a ra p ng nhu cu ca cc nh sn xut thit b mng WLAN th h k tip. Hai ng-ten mi u thit b gip chun 802.11n tng tc khng dy ln gp bn ln Bng cch s dng cng nh dng knh 20MHz m hng triu thit b WI-FI hin

Trang 100

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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.

Hnh II-3.1 - Cc chun trong h 802.11

Trang 102

OMNet++

Bo co thc tp chuyn ngnh

4. M HNH CU TRC CA MNG WLAN


4.1 Tng vt l (PHY layer)
H IEEE 802.11 s dng 3 lp vt l khc nhau trong cc bn tiu chun ca mnh. Nhng tt c u nm di 1 lp MAC duy nht.

Hnh II-4.1 - Cu trc tng vt l Cn li cc tng trn l chung

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++

Bo co thc tp chuyn ngnh

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.

4.1.1 Cc k thut tri ph


Khi ti nguyn v tuyn ngy cng tr nn cn kit, ngi ta bt u phi p dng k thut tri ph nhm nng cao hiu nng s dng tn s. C hai k thut tri ph thng dng nht hin nay l FHSS v DSSS. Bng thng cho mi CPE s khng cn l mt di hp m s l ton b bng tn s, vic xc nh CPE thng qua mt m code ca mi CPE - m gi ngu nhin (PN sequence).

Hnh II-4.3 - FHSS (Frequency Hopping Spread Spectrum)

Trang 104

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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:

Hnh II-4.6 - B tr s knh pht trong mt khu vc

Trang 107

OMNet++

Bo co thc tp chuyn ngnh

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.

4.1.2 Cu trc khung PLCP (General PLCP Frame Format)


802.11 PLCP frame bao gm cc thnh phn sau:

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++

Bo co thc tp chuyn ngnh

4.1.3 PLCP trong di ph dch tn FHSS

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.

4.1.4 PLCP cho DSSS v HR/DSSS

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++

Bo co thc tp chuyn ngnh

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

4.1.5 PLCP trong OFDM

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

RATE Data rate

4.1.6 Th tc truyn PLCP


Cc th tc truyn i vi High Rate PHY s dng long PLCP preamble v header tng t vi s m t trong chun IEEE Std 802.1999 Edition, v khng thay i thnh phn t kh nng truyn 8.5 Mbit/s v 11 Mbit/s

Trang 110

OMNet++

Bo co thc tp chuyn ngnh

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.

4.1.7 Th tc nhn PLCP


Th tc nhn cho bn nhn c cu hnh nhn PLCPs tu chn v bt buc, tc d liu, v s iu bin c m t. Bn nhn h tr phn m rng High Rate ca chun tng ng 5.5 Mbit/s v 11 Mbit/s hay 1Mbit/s v 2 Mbit/s. Nu tng vt l b sung la chn Short Preamble, n s tm ra nh dng ca c short v Long Preamble v ch ra loi ca preamble nhn c trong RXVECTOR. Nu tng vt l b sung la chn iu bin PBCC, n s tm s iu bin PBCC hay CCK, nh c ch ra trong trng SIGNAL, v s thng bo loi iu bin c s dng trong RXVECTOR. Bn nhn s b sung th tc CCA s c xc nh sau. Khi nhn c mt PPDU, bn nhn s phn bit s khc nhau gia inh dng long v short header bng gi tr SFD. Bn nhn s gii iu bin long PLCP header s dng BPSK tc 1 Mbit/s, short PLCP s dng QPSK tc 2 Mbit/s. Bn nhn s dng trng SIGNAL, SERVICE ca PLCP header xc nh tc v s iu bin d liu ca PSDU. nhn c d liu, tn hiu PHY-TXSTART.request s khng c hiu lc, v vy thc th PHY trng thi nhn. Thng qua vic qun l cc trm bng PLME, PHY s thit lp knh thch hp v chn phng thc CCA. Cc tham s nhn khc nh RSSI (receive signal strength indication), SQ (signal quality), v DATARATE nh hng, c th c truy nhp thng qua PHY-SAP. Khi nhn ngun nng lng truyn, theo s la chn phng thc CCA, PMD_ED s c kh nng nh RSSI theo ED_THRESHOLD, v/ hoc PMD_CS s c hiu lc sau khi kho m c thit lp. iu kin ch ra hot ng ca MAC thng qua PHYCCA.indicate s c pht ra cho nng lng tm kim v u tin kho m iu chnh vic n nhn PLCP header. Tham s PMD, PMD_SQ v PMD_RSSI c pht ra update cc tham s RSSI v SQ thng bo vi MAC. Sau khi PHY-CCA.indicate c pht ra, thc th PHY s bt u tm kim trng SFD. Khi trng SFD c pht hin, qu trnh x l CCITT CRC-16 s c khi to v cc trng PLCP SIGNAL, SERVICE, v LENGTH s c nhn. CCITT CRC-16 s c x l. Nu CCITT CRC-16 kim tra sai, PHY receiver s tr v trng thi RX IDLE. Khi trng thi ca CCA tr v trng thi IDLE trong sut thi gian nhn u tin hon thnh qu trnh x l y PLCP, PHY receiver quay li trng thi RX IDLE.

Trang 111

OMNet++

Bo co thc tp chuyn ngnh

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)

4.1.8 Tng PMD ( PMD sublayer)


PMD (Physical Medium Dependent sublayer: Tng vt l trung gian ph thuc) thc hin vic iu ch (modulation) v m ha (encoding). PMD sublayer cung cp phng thc v cch thc truyn nhn d liu thng qua WM gia hai hay nhiu trm STA, mi ci u s dng h thng High Rate.Quan h gia hai tng:

Trang 112

OMNet++

Bo co thc tp chuyn ngnh

Hnh II-4.12 - Tng PMD

4.2 Tng kim sot truy nhp ng truyn MAC


Tng MAC nh ngha 2 phng php truy nhp c bn: Distributed Coordination Function v Point Coordination Function

4.2.1 DCF - Distributed Coordination Function


DCF da trn c ch CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) a truy cp dng sng mang c trnh xung t. C ch a truy cp dng sng mang CSMA rt quen thuc trong Ethernet, vi phng thc a truy cp dng sng mang c pht hin xung t Carrier Sense Multiple Access with Collision Detection (CSMA/CD). Phng thc CSMA hot ng nh sau: Hot ng c bn ca CSMA/CD l Listen before Talk. y l phng php m i khi ngi ta vn gi nm na l nghe trc ni sau. C th l: o Khi 1 nt c nhu cu truyn d liu, n phi nghe xem trn ng truyn c tn hiu sng mang hay khng. Tc l kim tra xem c nt no khc ang s dng ng truyn hay khng (Khi nim sng mang y c th hiu l cc dng in cha cc tn hiu s c tng vt l chuyn i thnh cc bit d liu). o Trong trng hp ng truyn c sng mang, th nt ny khng c php truyn, phi ch - tip tc nghe.

Trang 113

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

C quyt nh truyn d liu ti B Ti B xy ra xung t.

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++

Bo co thc tp chuyn ngnh

NAV setting
DIFS

SIFS Short Interframe Space DIFS - Distributed Interframe Space

Source

RT S

Data

Next transmition

SIFS

SIFS

SIFS

Destination

CT S

ACK

DIFS

Other

NAV (R TS) NAV (C TS) Defer Access Backoff

Hnh II-4.13 - C ch 4-way handshake

4.2.2 PCF Point Coordination Function 4.2.3 Phn tch cc hot ng c bn

Hnh II-4.14 - Cc hot ng c bn

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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.

4.2.3.2 Xc thc v Lin kt(Authentication & Association)


Qu trnh ny c ba trng thi phn bit: Khng chng thc v khng lin kt (Unauthenticated and unassociated) Chng thc v khng lin kt (Authenticated and unassociated) Chng thc v lin kt (Authenticated and associated)

Ba trng thi ny din ra theo s sau:

Trang 119

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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.

4.3 Tng mng v cc giao thc dn ng trong WLAN


Nh trn ni, WLAN gm 2 cu hnh mng c bn: BSS v Adhoc. i vi BSS, ta ch yu nghin cu giao thc Mobile IP. Cn ring vi Adhoc th c nhiu giao thc dn ng. R rng, nhng c im ch yu ca cc mng kiu ad-hoc (kh nng di ng cao, khng c quyn qun l trung tm, ti nguyn hu hn...) bt buc trong m hnh mng phi c chc nng tm ng. Mt giao thc tm ng thch hp vi MANET s khng ch c kh nng phn ng nhanh vi cc mng c cu trc

Trang 121

OMNet++

Bo co thc tp chuyn ngnh

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.

Hnh II-4.20 - Cc giao thc tm ng trong mng Ad-hoc

4.3.1 Cc giao thc tm ng trong mng Ad-hoc


4.3.1.1 Nhng yu cu thc t
Khi xy dng giao thc chn ng cho mng ad-hoc chng ta cn phi ch n nhng c im quan trng sau y: Cc nt mng trong MANET c kt ni vi nhau qua cc lin kt khng dy vi rng bng thng hn ch. Do giao thc chn ng thch hp vi MANET phi c kh nng hot ng vi iu kin bng thng c hn. Cc nt mng trong MANET thc t chnh l cc thit b di ng nh cc my PDA, laptop. Nhng thit b ny c ngun ti nguyn hu hn. Nhng ngun ti nguyn m c th l dung lng b nh, nng lng pin cn phi c s dng mt cch thng minh. Cc nt mng trong MANET thng c kh nng di ng cao. iu ny ng ngha vi vic topo ca mng ad-hoc thng xuyn thay i. Cc giao thc tm ng thch hp vi ad-hoc cn phi c kh nng tm nhanh cc nt mng thay th khi cu trc mng c bin ng. Kh nng phn ng nhanh (tc hi t nhanh - rapid convergence) l mt mc tiu quan trng i vi mt giao thc tm ng cho mng ad-hoc.

4.3.1.2 Cc giao thc kinh in


Hai giao thc ch yu l link-state v distance-vector thng c s dng trong cc mng chuyn mch gi (packet-switched network). C hai giao thc ny u cho php mt nt mng c kh nng quyt nh bc truyn (hop) tip theo da vo ng

Trang 122

OMNet++

Bo co thc tp chuyn ngnh

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

4.3.2 Cc giao thc m rng cho MANET


Cng vi s pht trin nhanh ca mng ad-hoc, mt tp ln cc giao thc tm ng da trn a ch IP c xut. Cha c mt chun no c cng nhn mt cch chnh thc, nhng cng c mt s giao thc ha hn ang c tp trung nghin cu. C th k ra hai giao thc chnh l AODV (Ad-hoc On Demand Distance Vector) v DSDV (Destination Sequenced Distance Vector).

Trang 123

OMNet++

Bo co thc tp chuyn ngnh

4.3.2.1 Giao thc DSDV


Ta c th d dng nhn ra giao thc DSDV l mt giao thc da trn thut ton vector khong cch. DSDV c hai s thay i c bn nhm lm cho giao thc ph hp hn vi m hnh mng ad-hoc di ng. S thay i u tin l khc phc vn m ti v cng (counting to infinity) v hnh thnh vng lp. tng ny thc t rt n gin, ch cn gn cho mi ng i tm c mt s th t nh du cp nht ca n. Trn c s mt ng i c s th t ln hn s l mt ng i mi hn tc l n c kh nng chnh xc hn i vi cu trc mng hin ti. Ngoi ra cc nt ch cng sinh ra cc s th t cho ring n. Cc s ny c duy tr ti mi nt v tng ln mi khi c s thay i trn ng i. S th t v chi ph ng i c gn trong cc message cp nht. Do khi mt nt nhn c mt message cp nht, n s so snh s th t nhn c vi s th t ca n lu trong bng nh tuyn. Ch c nhng message cp nht c s th t ln hn mi c tc dng. Cng c trng hp hai s th t ny bng nhau, khi ng i no c chi ph nh hn s c cp nht li. Thay i th hai c thm vo thut ton ban u nhm mc ch lm gim s qu ti sinh ra bi hot ng ca giao thc. N bao gm hai kiu message cp nht: full dump v incremental. Gi tin full dump c s dng thng bo thng tin v tt c cc ng i c gi tr s dng trong khi mt gi tin incremental c kch thc nh hn ch c s dng thng bo cc thay i gia hai gi tin full dump. DSDV hot ng n nh hn thut ton Bellman-Ford gc. Tuy nhin do n vn cn da vo cc vic truyn nhn cc message theo chu k duy tr thng tin tm ng nn giao thc ny vn cn c s iu chnh gim thiu khi lng thng tin lan truyn.

4.3.2.2 Giao thc AODV


L s pht trin ca DSDV, AODV lm gim c tng s cc thng tin iu khin c truyn nhn trong mng bng cch cc tiu ho s ng i cn thit. Thay v xy dng ng i cho ton b cc nt ch c th c trong mng, mi nt mng s ch to v duy tr nhng ng i m n thc s cn. Khi cn mt ng i, mt nt mng s khi to mt yu cu nh v cc nt tip theo. Ni mt cch khc, khi mt ng i khng c s dng thng xuyn n s b xa khi bng nh tuyn. Phng php ny cn c gi l phng php tm ng source-initiated on-demand (to ngun khi c yu cu) tri ngc vi cc phng php tm ng c da hon ton vo bng nh tuyn (table-driven). Cch tip cn ca AODV cn c gi l reactive (phn ng li) thay cho cch tip cn proactive (thc hin trc). Ngoi ra cn mt thay i khc lin quan n vic duy tr cc ng i. Thc t, trong trng hp kt ni khng thc hin c, cc nt mng s lp tc thng tin ngc li cho tt c cc nt thc s chu nh hng. Cc cp nht theo nh k nh cc gi tin full dump ca giao thc DSDV hon ton b loi b. Tt nhin, AODV vn s dng mt tp cc s th t tng t nh trong DSDV m bo trnh hin tng vng lp trn cc ng i.

Trang 124

OMNet++

Bo co thc tp chuyn ngnh

4.3.3 M t chi tit giao thc AODV


Nh trnh by trong phn 4.3.2.2, giao thc AODV s dng mt cch tip cn hon ton mi so vi cc phng php truyn thng xy dng cc ng i trong mng. Khi mt nt mng mun gi mt gi tin ti mt nt ch no , n s khi to tin trnh x l discovery) nh v nt ch. Nu khng c mt ng i no c tm thy trong mt khong thi gian xc nh, nt khi to s cho rng khng tn ti ng i ti nt ch. Tin trnh x l discovery s kt thc ng thi cc gi tin tng ng s b hu b. Ngc li nu nt khi to tm c mt ng i ph hp, n s cp nht ng i ny vo bng nh tuyn ca n nh mt u vo (entry) tng ng vi nt ch. Khi mt u vi mi c to ra, tin trnh x l maintenance cng ng thi c kch hot gim st tnh trng ca ng i va c to ra - nu sau mt khong thi gian ln m ng i khng c s dng, nt mng s xo ng i ny ra khi bng nh tuyn. Nu c li xut hin trn mt ng i c trng thi tch cc, nt mng s lp tc thng bo ngc cho cc bc truyn trc bng mt kiu gi tin iu khin c th. Trong trng hp nhn c cc gi tin thng bo trn, cc nt mng chu nh hng s khi ng li tin trnh discovery tm mt ng i thay th nu cn thit. AODV qun l cc thng tin v ng i theo kiu phn tn. iu ny c ngha l mi nt trn ng i s c mt thnh phn trong bng nh tuyn tng ng vi nt ch ca ng i . Cch qun l ny hon ton tri ngc vi phng php source routing (tm ng t nt ngun) trong ch c nt ngun mi bit ng i y ti nt gc. AODV cng cho php mi nt ch duy tr mt v ch mt ng i ng vi mi nt ch. Tuy nhin c mt s giao thc tm ng khc cho php tm nhiu ng ng vi nt ch. Trong trng hp, ng i ban u b li, ng i thay th s c s dng. Cc thnh phn ca bng nh tuyn trong giao thc AODV c nh dng bao gm cc trng <a ch nt ch, a ch bc truyn tip theo, s th t, khong cch, danh sch cc nt trc (precursor), ngy ht hn>. Trng s th t c s dng ngn chn s hnh thnh cc vng lp v th hin mc cp nht ca cc ng i. Khong cch l s bc truyn. Khi mt ng i mt hiu lc, s th t ca n s c tng ln mt v khong cch s c t l v cng. Danh sch precursor cha tp hp cc nt ln cn, s dng thnh phn ny chuyn tip cc gi d liu. Ngy ht hn c s dng xc nh thi gian tn ti ti a ca thnh phn, sau n s b xo b khi bng nh tuyn. Tt nhin gi tr ca trng ny s c m rng mi ln thnh phn ny c s dng.

4.3.3.1 Tin trnh Discovery


Tin trnh Discovery l mt phng php k thut cho php tng nt ngun trong mt mng MANET c th nh v (ly c a ch IP) mt nt ch. Tt nhin, mt nt khi ng tin trnh Discovery ch khi nt ch cha tng c nh v trc hoc khng c thnh phn no trong bng nh tuyn tng ng vi nt ch. Nu c mt thnh phn tn ti trong bng nh tuyn, gi tin s lp tc c chuyn i v bc thc thin tin trnh Discovery c b qua. Khi mt nt khi ng cho tin trnh Discovery, n phi gi i mt gi tin yu cu tm ng (route request) (RREQ) ti tt c cc nt ln cn. Gi tin ny c lan truyn ti tt c cc nt khc trong mng cho n khi mt ng i c xc nh.
Trang 125

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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.

Hnh II-4.24 - Lan truyn gi tin RERR

4.3.3.4 Thi gian ht hn v vic hu b mt ng i


Trong m hnh AODV nu mt ng i khng c s dng sau mt thi gian nht nh n s b hu b. Do nu mt ng i c trng thi tch cc khng c s dng trong khong thi gian cho php - ACTIVE_ROUTE_TIMEOUT th nt hin ti s hu b n bng cch tng s th t ca ng i v thit lp gi tr ca trng hop count ln thnh v cng. Tuy nhin thnh phn tng ng vi ng i trong bng nh tuyn khng b xo hn khi bng, n ch c nh du ht hn s dng. Trn thc t, thnh phn ny vn tn ti trong bng thm mt khong thi gian DELETE_PERIOD trc khi b xa hon ton. L do ng sau ca vic c thm mt khong thi gian DELETE_PERIOD l cho nt mng c th gi c s th t ca ng i mc lu nht c th. iu ny gii thch cho vic ti sao khi mt nt mng gi yu cu tm ng, n li c th xc nh c s th t ch ln hn s th t ca cc ng i tn ti trc . Hn na gi s nh mt ng i b xo ngay khi ht hn th gi tr ca s th t ch khi to yu cu tm ng s c t mc nh bng 0, thc t trng hp ny rt d gy ra hin tng vng lp.

Trang 129

OMNet++

Bo co thc tp chuyn ngnh

PHN III PHN TCH THIT K NG DNG M PHNG MNG ADHOC


1. M HNH CHUNG
H thng AdhocSim km theo bo co ny bao gm cc tng sau: Tng vt l (physical layer) Tng iu khin truy nhp (MAC layer) Tng mng (Route layer) Tng ng dng (Application layer) Tng di ng (Mobility layer)

M hnh cc tng

Hnh III-1.1 - M hnh mng Adhoc M hnh cc Class

Trang 130

OMNet++

Bo co thc tp chuyn ngnh

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

2.2 Tng iu khin truy nhp (Mac Layer)


AdhocSim trin khai tng MAC nh sau:
Trang 131

OMNet++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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); }

2.3 Tng mng (Routing model)


M hnh dn ng c th coi l phn trng tm nht trong m hnh Adhoc km theo bo co ny. H m phng i km bo co ny thc hin c cc chc nng chnh sau tng mng Trao i cc gi tin HELLO gia cc nt mng ln cn. Tm kim theo vng m rng (expanding ring search) Truyn ti cc gi tin bo nhn (ACK message). To mt black list trnh cc nt mng khng ng tin cy. Tc l gi s mt nt X a nt ln cn Y trong black list, th c ngha l X gi gi tin RREQ my ln ti Y, nhng X khng nhn c bt k tn hiu ACK no t Y. Khi , X s khng tip nhn bt k gi tin RREQ no t Y na. Tuy nhin n vn x l cc gi tin Hello t Y.

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++

Bo co thc tp chuyn ngnh

DATA RREP ACK DELETE

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.

FLUSH SEND HELLO

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++

Bo co thc tp chuyn ngnh

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++

Bo co thc tp chuyn ngnh

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)

2.4 Mobility models

Trang 136

OMNet++

Bo co thc tp chuyn ngnh

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)

2.5 Tng ng dng

Trang 137

OMNet++

Bo co thc tp chuyn ngnh

2.6 Lin kt gia cc tng


File mobilehost.ned cha khai bo lin kt gia cc tng ca m hnh AdhocSim.

Lin kt gia tng vt l v tng MAC

Lin kt gia tng MAC v tng dn ng

Lin kt gia tng dn ng v tng ng dng

Lin kt gia tng mobility v tng PHY

2.7 Thit lp cc thng s cho h m phng


Cc thng s c thit lp trong file omnetpp.ini

2.7.1 Thng s ca Map v Hosts

Trang 138

OMNet++

Bo co thc tp chuyn ngnh

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.2 Physical Layer


Transmission power Receive Threshold Channel Bandwidth Channel Delay Channel Error probability on code tng ng trong file omnetpp.ini #physic module world.mobileHost[*].physic.txPower = uniform(9000,9900) world.mobileHost[*].physic.rxThreshold = 1 world.mobileHost[*].physic.channelDelay = 0.0001 world.mobileHost[*].physic.channelDatarate = 11.04858e+6 world.mobileHost[*].physic.channelError = 0.000001 25000Watt 1Watt 11Mb/s (IEEE 802.11a) 10 sec 1 bit on 106

2.7.3 Mac Layer


Busy time Input Buffer size cc tham s v 15 sec 7.5 sec 1MB

on code tng ng trong file omnetpp.ini: world.mobileHost[*].mac.promisqueMode = true; world.mobileHost[*].mac.inBufferSize = 8.38864e6

2.7.4 Routing

Trang 139

OMNet++

Bo co thc tp chuyn ngnh

Control Message Size HELLO interval Allowed HELLO loss Delete pertiod RREQ max trials

64 byte 1sec 2 4sec 3

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++

Bo co thc tp chuyn ngnh

3. KT QU THC HIN
3.1 Topo

Trang 141

OMNet++

Bo co thc tp chuyn ngnh

3.2 Gi cc gi tin Hello

3.3 Gi gi tin RREQ

Trang 142

OMNet++

Bo co thc tp chuyn ngnh

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

Tnh linh hot

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

H tr m hnh quan h k tha

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++

Bo co thc tp chuyn ngnh

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

M phng ccc mng ln

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++

Bo co thc tp chuyn ngnh

2.TI LIU THAM KHO


http://omnetpp.org Y. Ahmet Sekercioglu Simulation of IPv6 Networks with OMNeT++ Jeroen Idserda TCP/IP modelling in OMNeT++ Simulating Wireless Sensor Networks with OMNeT++ C. Mallanda, A. Suri, V. Kunchakarra, S.S. Iyengar*, R. Kannan* and A. Durresi Sensor Network Research Group, Department of Computer Science, Louisiana State University, Baton Rouge, LA.

Trang 145

You might also like