You are on page 1of 71

C s mng thng tin K4X

MC LC
Phn I................................................................................................................................................4 Chng trnh m phng mng..........................................................................................................4 Network Simulator (NS-2)...............................................................................................................4 1/ :Ti sao phi cn chng trnh m phng mng :...............................................................4 2.Phn mm m phng mng Network Simulator : (NS).......................................................5 2.1. Tng quan v NS :.............................................................................................................5 2.2. Lm vic vi NS :..............................................................................................................8 Ngn ng Otcl :.......................................................................................................................8 Khi nim tng quan :..............................................................................................................9 Lp Tcl......................................................................................................................................9 Yu cu cc th tc OTcl..........................................................................................................9 Truyn kt qu ti/t trnh thng dch....................................................................................10 Lp TclObject.........................................................................................................................10 To v xo i tng TclObject.............................................................................................10 Lin kt bin...........................................................................................................................11 Cc phng thc command: nh ngha v gi......................................................................11 2.3 Cc m phng c s.........................................................................................................12 2.3.1 Lp m phng (class Simulator)...................................................................................12 2.3.2 Node v truyn ti gi tin (packet forwarding).............................................................13 2.3.3 Cc lin kt : .................................................................................................................19 2.3.4 Qun l queue v lp lch gi........................................................................................21 Phn II.Cng c hnh nh ho m phng : NAM...........................................................................31 1.Gii thiu chung v NAM :................................................................................................31 1.1. Tng quan........................................................................................................................31 1.2.Cc la chn dng lnh ca NAM:..................................................................................33 1.3. Giao din ngi s dng:................................................................................................33 1.3. Cc cu lnh bn phm:...................................................................................................35 1.4. To ra cc hot ng bn ngoi t Nam :........................................................................35 1.5. Network Layout:..............................................................................................................36 1.6. Cc i tng hot ng:.................................................................................................36 2. NAM TRACE ...................................................................................................................37 2.1.nh dng Nam Trace:......................................................................................................37 2.2. Cc s kin khi to:.......................................................................................................38 2.3. Nodes:..............................................................................................................................39 2.4. Links :.............................................................................................................................39 2.5. Queues:............................................................................................................................40 2.6. Cc gi tin: (Packets).......................................................................................................40 2.7. nh du Node :..............................................................................................................41 2.8. Tm vt Agent: (Agent Tracing ).....................................................................................41 2.9. Tm vt bin (Variable Tracing):......................................................................................41 Phn III : Cc bi ton m phng...................................................................................................42 1. M phng cc gi tin UDP/TCP ......................................................................................42 1.1 UDP Agent........................................................................................................................42

Cyber Pro !!! :))

C s mng thng tin K4X 1.2. TCP Agents......................................................................................................................43 2.Unicast Routing..................................................................................................................50 2.1 The Interface to the Simulation Operator (The API)........................................................50 2.2 Cc c ch cu hnh khc cho Specialised Routing..........................................................52 2.3 Cc tham s cu hnh c t giao thc.............................................................................52 2.4 c tnh v kin trc ca Routing....................................................................................53 2.5 Protocol Internals..............................................................................................................57 2.6 Cc i tng Unicast routing .........................................................................................58 2.7 Tng quan cc lnh...........................................................................................................58 3.Multicast Routing...............................................................................................................59 3.1 Multicast API....................................................................................................................59 3.2 Internals of Multicast Routing..........................................................................................62 Bng tra cu nh dng File Nam trace:.........................................................................................68

Li m u
Cyber Pro !!! :))

C s mng thng tin K4X

Trong nhng nm gn y mng my tnh pht trin ngy cng mnh m to nn mt bc ngot quan trng trong cng ngh thng tin. Mng my tnh ngy nay c mt trong rt nhiu cc hot ng trong i sng. Cc cng ngh, cc k thut phc v cho mi trng mng c xy dng nhiu, v ang cn c tip tc pht trin, ci tin. Mun c mt mng tht th nghim cc cng ngh mi th tht tn km, khng phi c nhn, t chc no cng c th p ng c.Hn na cc mng cc b ny khng nhng phi m bo cc tnh nng ca mt mng thng thng m cn phi thc hin c nhng bi ton th nghim cng nh gip cho sinh vin thy c tnh kh thi ca chng i vi cc bi ton mi.Cch tt nht gii quyt nhng yu cu t ra l dng mt mi trng mng o xy dng v th nghim cc cng ngh mi. Gi lp mng (network simulator) ra i vi mc ch ,trong tiu biu l chng trnh NS, c th dng thc hin cc kch bn mng nh p dng cc m hnh UDP/TCP, cc bi ton routing vo cc tp thch hp. Do ti thc tp tt nghip ca chng em l : Nghin cu chng trnh m phng mng NS v cc cng c h tr, v c s p dng cc bi ton ng dng trn NS nh gi tnh kh thi v ti u ca chng trn mng. Chng em xin chn thnh cm n thy gio TS.ng Vn Chuyt, TS Nguyn Linh Giang v thy T Hi Tng tn tnh hng dn chng em nh hng, thc hin ti ny .

Cyber Pro !!! :))

C s mng thng tin K4X

Phn I Chng trnh m phng mng Network Simulator (NS-2)


1/ :Ti sao phi cn chng trnh m phng mng :
Tc pht trin ca Internet ang pht trin rt nhanh , s ra i ca cc giao thc mi v cc thut ton phc v cc i hi v bo mt ,truyn thng a phng tin, mng di ng ,cc chnh sch qun l v s h tr ca cht lng dch v (QoS) . L thuyt v c lng ca cc cng c ny i hi phi tr li rt nhiu cc cu hi . B qua nhng gi tr ca chng , cc m phng thng dng, cc th im qui m ln v cc cc nh gi th nghim qui m nh u c mt hn ch ca n .Bi v s dng cc m thc(real code) nn cc cuc th nghim thc hin trong cc khu th im hay cc phng th nghim t ng nm bt cc ni dung ,chi tit quan trng c khi b b qua trong khi m phng . Tuy nhin xy dng cc khu th im hay cc phng th nghim qu tht rt tn km , ti c cu v phn b chng rt kh . Chng cng khng c linh ng lm .Hn na , vic m phng mt vi hin tng ca hot ng mng nh nhiu sng v tuyn c th rt kh khn , phc tp trong vic so snh hay c lng cc m hnh giao thc . Thit k giao thc bng m phng thng bt u vi cc m phng cc chi tit ring l ca giao thc ca mt nh nghin cu c lp thng qua cc Topology c nh v cc gi nh n gin thng l dng tnh . Cc chi ph ban u cao ngn cn mt nhm c lp c c cc iu kin cn thit to ra mt mi trng m phng mng hon thin .Chnh kh khn ny l nguyn nhn dn n cc m phng c xy dng bi cc nhm khc nhau khng c c cht lng nh mong mun . Cng trnh nghin cu v th im mng o ( Virtual Internerwork Testbed _ VINT) cung cp cc cng c m phng tin tin cho cc nh nghin cu mng s dng thit k v trin khai cc giao thc Internet trn din rng . Cng c tiu biu ca VINT l : NS ( Network Simulator ). VINT cung cp cc iu kin thc hnh tin tin gip m rng iu kin cho cc nh nghin cu trong vic c lng cc giao thc : 1. Tnh tru tng : S thay i trong vic m phng dng ht cho php cc mt m phng n c th iu chnh khp cc chi tit v cc m phng mc cao . Cc nh nghin cu nghin cu giao thc mng ti nhiu mc . Tri rng t cc phn ring bit ca mt giao thc c lp n s tp hp ca cc lung a d liu v s tng tc gia cc giao thc vi nhau . Cc c ch tru tng ho trong NS cho php cc nh nghin cu kim tra c cc giao thc m khng cn c s thay i trong m phng v cng nhn kt s tru tng ho thng qua vic so snh nhiu chi tit v tru tng ho cc kt qu . 2. Tnh m phng : Hu ht nhng th nghim m phng u b gii hn trong mt th gii m phng nn ch c s xut hin ca cc giao thc v cc thut ton trong chng trnh m phng . Tri ngc vi iu ny , s m phng y cho php chy chng trnh m phng c s tng tc gia cc nt mng vi nhau . 3. Thc hin cc kch bn : Vic kim tra cc giao thc di cc iu kin mng thch hp l vn then cht ginh c kt qu tt . Chng trnh s t ng to ra cc mu lu thng phc tp , cc Topology v cc s kin ng c th gip to ra cc kch bn .

Cyber Pro !!! :))

C s mng thng tin K4X 4. Tnh trc quan : Cc nh nghin cu cn cc cng c c th gip h hiu c cc hot ng phc tp trong mng . Tnh trc quan s dng cng c c hot nh : Nam cung cp mt s th hin ng cho php cc nh nghin cu pht trin tt hn kh nng trc gic i vi cc giao thc v gip cho vic d sa li trong cc giao thc 5. Kh nng m rng : Chng trnh m phng phi d m rng nu n cn thit phi thm vo cc tc v cn thit .

2.Phn mm m phng mng Network Simulator : (NS)


2.1. Tng quan v NS :
NS l h thng m phng mng, c bit l cc giao thc iu khin hot ng ca mng, pht trin ti i hc Berkeley v vin cng ngh thng tin ISI (Information Science Institute), c kh nng m phng nhiu kiu mng IP khc nhau. N m phng vic thc hin cc giao thc mng nh TCP, UDP, cc ngun d liu FTP, Telnet, Web, CBR v VBR, c c ch qun l hng i router nh DropTail, RED v CBR, vi cc gii thut chn ng nh Dijkstra ns cng b xung phn multicasting vi mt s giao thc tng MAC h tr vic m phng mng LAN. Phin bn hin nay ca ns (ver 2) c vit bng C++ v Otcl (Otcl: l m rng ca ngn ng Tcl c thm phn hng i tng, tng t nh C v C++). Di gc ngi dng, mt h thng m phng c s nh sau:

S 1: M hnh ns n gin T m hnh c th thy, ns s dng ngn ng Otcl vi th vin bao gm cc i tng Event Scheduler, cc i tng Network Component, v cc module Plumbing gip cho vic ci t mng. Ni cch khc, s dng ns, ta phi lp trnh trn ngn ng Otcl. ci t v chy chng trnh m phng mng bng ns, ta phi vit script trn ngn ng Otcl, lp lch cho cc s kin, thit lp cu hnh mng (topo mng) bng cch s dng cc i tng Network Component, triu gi cc hm th vin, bo cho cc ngun d liu bit khi no th bt u v kt thc vic truyn gi tin trn mng. Khi mun to mt i tng mng mi, c th vit mi mt i tng hoc bng cch lin kt cc i tng mng c sn trong th vin. Vic gn kt i tng to nn i tng mi chnh l im mnh ca ns. Mt b phn quan trng khc ca ns bn cnh network object l event scheduler. Mt s kin trong ns l mt ID ca gi tin c ln lch v mt con tr tr ti i tng x l s kin . Mt event scheduler theo di lch ca tt c cc s kin v triu gi i tng thc hin s kin vo thi im thch hp. Cc i tng trong mng trao i thng tin vi nhau bng cch gi
Cyber Pro !!! :))

C s mng thng tin K4X v nhn cc gi tin. Vi mi gi tin, cc i tng u phi mt mt khong thi gian x l gi tin ( tr), cc i tng to tr bng cch s dng event scheduler. Mt dng th hin khc ca event scheduler l timer. V d TCP cn timer theo di vic truyn gi tin nhm phc v cho vic truyn li trong trng hp mt gi tin (gi tin gi li vn c cng s hiu vi gi tin trc nhng s khc ns packet ID). Timer o thi gian gn vi gi tin v thc hin hnh ng lin quan ti gi tin khi n thi im thch hp, v khng m phng tr. ns s dng c ngn ng C++ v ngn ng Otcl. Ns h tr cu trc lp kiu phn cp trong C++ (c gi l cu trc lp bin dch), v mt cu trc lp tng t trong ngn ng Otcl (gi l cu trc lp thng dch). Hai cu trc lp phn cp ny c quan h cht ch vi nhau, di gc ngi s dng (khng phi ngi lp trnh pht trin ns), c tng ng 1-1 gia lp trong cu trc lp bin dch v lp trong cu trc lp thng dch S sau l v d v s phn cp trong C++ v Otcl.

S 2: Tng ng C++ v Otcl L do ns s dng hai ngn ng lp trnh l do h m phng phi thc hin hai dng yu cu x l khc nhau. Mt mt, vic m phng chi tit cc giao thc i hi mt ngn ng lp trnh h thng c kh nng thao tc hiu qu vi cc byte, packet header, v thc hin nhng gii thut vi tp d liu ln. Vi nhng cng vic dng ny, tc ca thc hin khi chy rt quan trng, v thi gian x l quay vng (chy m phng, tm li, g li, dch li, chy li) km quan trng hn. Mt khc, khi nghin cu mng, rt cn nhanh chng thay i tham s hay cu hnh, hoc a ra nhiu kch bn hot ng khc nhau. Trong nhng trng hp nh vy, thi gian quay vng (thay i m hnh v chy li) quan trng hn thi gian cu hnh ban u v thi gian chy. ns tho mn c hai yu cu ny vi C++ v Otcl. C++ chy nhanh nhng li chm khi cn c thay i, rt ph hp cho vic trin khai chi tit cc giao thc. Otcl chy chm hn nhiu, song li c kh nng thay i rt nhanh (v c tnh tng tc tt), c th tho mn tt nhu cu cu hnh h thng m phng. ns s dng tclcl (tcl c linkage) nh mt lp keo gn kt cc i tng v bin trong hai ngn ng. Mi ngn ng c s dng vi mc ch ring. Otcl c th c s dng: - Trong vic cu hnh, ci t v cc cng vic thc hin mt ln - Chnh sa cc i tng C++ c sn V s dng C++ cho: - Khi lm cc cng vic i hi x l tng gi tin ca lung d liu - Khi phi thay i cc hnh vi ca cc lp C++ tn ti C th hnh dung t chc ca ns qua s sau:

Cyber Pro !!! :))

C s mng thng tin K4X

S 3: Kin trc ca ns S Kin trc ca ns th hin kin trc ns, ni chung c th coi ngi dng nh ang ng gc di bn tri, thit k v chy h m phng bng ngn ng Tcl v s dng cc i tng Otcl trong th vin. Event Scheduler v hu ht cc i tng Network Component u c vit bng C++, v c th triu gi t Otcl thng qua giao tip tclcl, c h thng kt hp li thnh ns. S M hnh ns n gin cng ch ra , khi kt thc qu trnh m phng, ns c th sinh ra mt hay nhiu text file cha s liu chi tit phc v cho vic phn tch qu trnh m phng, hoc cng c th l u vo cho h m phng bng ho (Network Animator : NAM). Hnh di y s m t s hot ng ca NS thng cua 3 mc , nh chng ta thy c mc khung cnh, mc Script v cui cng l ngn ng C++ Tt c nhng cng vic ca NS u thng cua cc Script ca NS gi cc hm ca C++ mc di cng.

S 4 : S hot ng ca NS

Cyber Pro !!! :))

C s mng thng tin K4X

2.2. Lm vic vi NS :
2.2.1. Download v ci t :
Ta c th ci NS bng cc gi ring bit (Tcl/Tk , Otcl ) hoc cng c th dng mt gi bao gm tt c cc gi ring bit All-in-One . y chng em s dng gi All-in-one ci t bn 2.27 (Ns-allinone2.27) _ bn mi nht hin nay . Bn ny c chng em ci t v chy trn Linux RedHat 8.0 chy n nh . Cc File c trong NS 2.27 : - Tkrelease 8.3.2 - Otclrelease 1.0a8 - TclCL release 1.0b13 - Tcl release 8.3.2 - Ns release 2.26 - Nam release 1.9 - Xgraph version 12 - CWebversion 3.4g - SGB version 1.0 - Gt-itm gt-itm and sgb2ns 1.1 - Zlib version 1.1.4 ci t trn LINUX , ta phi COPY bn nn ca NS (ns-allinone-2.27.tar.gz ) trn LINUX v gii nn bng cng c ca LINUX . Sau ta m Terminal ca LINUX , chuyn n th mc c cha File ns-allinone2.27 bung nn . Nu dng giao din KDE ta c th m ca s Terminal ngay trn thanh cng c ca ca s Window (Window -> Terminal ) . Sau g lnh sh install chy Script Install ca NS . Sau khi Install xong ta Copy cc Flie trong th mc Bin ca NS vo th mc Bin ca Root hoc User tu cp s dng . Nh vy l ta c th s dng chng trnh m phng mng NS . Ta cn c th chy c NS trn Window nh vo mt chng trnh gi lp mi trng LINUX trn h iu hnh Windows gi l : Cygwin . chy NAM ta cn phi ci t thm Xfree86Server . Tuy nhin v iu kin cha Down c Xfree86 cho nn chng em cha th nghim c NAM trn mi trng Windows , nhng c th ci t v chy c NS trn Window .

2.2.2 Lp trnh bng Otcl trong NS :


Ngn ng Otcl : ns l mt chng trnh m phng hng i tng, vit bi C++, s dng mt trnh thng dch OTcl nh mt b giao tip trc tip vi ngi dng. Chng trnh thng dch h tr mt lp phn cp trong C++ (gi l phn cp bin dch) v mt lp phn cp tng ng trong trnh thng dch Otcl (gi l phn cp thng dch). C s tng ng mt mt gia mt lp trong phn cp thng dch v mt lp trong phn cp bin dch. Lp gc ca phn cp ny l lp TclObject. Ngi dng to ra cc i tng gi lp mi thng qua trnh bin dch, nhng i tng ny c th hin trong trnh thng dch, v c phn x t m, bi mt i tng tng ng trong phn cp bin dch. Phn cp lp thng dch c t ng a vo thng qua cc phng thc nh ngha trong lp TclObject.

Cyber Pro !!! :))

C s mng thng tin K4X Khi nim tng quan : Ti sao dng 2 ngn ng ? ns dng hai ngn ng bi v b m phng c hai vic khc nhau cn thc hin - Mt mt, cc m phng chi tit ca giao thc yu cu mt ngn ng lp trnh h thng m hot ng c hiu qu ti cc byte, packet header, cc thut ton chy trn cc b d liu ln. Vi nhng tc v ny, tc chy thc (runtime speed) l quan trng, cn thi gian thay i (chy gi lp, sa li, bin dch li, chy li) l khng quan trng. - Mt khc, phn ln mng nghin cu, bao gm cc thng s, cu hnh khc nhau, hoc thm d nhanh mt s hot cnh. Trong nhng trng hp ny, thi gian tng tc (chy li, thay i ch ) l quan trng hn cn cu hnh chy mt ln, thi gian chy thc khng quan trng bng. ns kt hp tt c cc yu cu ny vi hai ngn ng C++ v OTcl. C++ nhanh khi chy, nhng chm khi thay i, ph hp vi vic x l chi tit giao thc. OTcl chy chm nhng thay i nhanh, l l tng cho cu hnh gi lp. ns thng qua (tclcl) cung cp keo to cc i tng v cc bin xut hin trn c hai ngn ng. OTcl dng : o Cu hnh, setup v one-time stuff o Lm cc cng vic m c th s dng cc i tng C++ c sn. C++ dng cho: o Lm nhng cng vic yu cu phi x l cc gi tin trong lung. o Nu ang cn phi thay i cch ng x ca mt lp c++, sn c trong nhng cch m khng bit trc. Lp Tcl Lp Tcl ng gi th hin thc (actual instance) ca trnh thng dch OTcl v cung cp cc phng thc truy cp v giao tip vi cc trnh thng dch ny. Mt instance ca lp c m t trong ~/tclcl/tcl.cc nh mt bin thnh phn tnh. Lp trnh vin phi t mt tham chiu n instance ny truy cp ti cc phng thc khc. Khai bo: Tcl & tcl = Tcl::instance(); Yu cu cc th tc OTcl C 4 cng c khc nhau yu cu mt lnh OTcl thng qua instance Tcl. Chng khc nhau c bn v cc thng s. Mi hm truyn mt xu ti trnh thng dch sau nh gi xu trong ng cnh ton cc. Cc phng thc s tr v ni gi nu trnh thng dch tr v TCL_OK. Ngc li, nu trnh thng dch tr v TCL_ERROR, cc phng thc s gi tkerror{}. Ngi dng c th chn thm cc phng thc ny c thng bo li mt cch chnh xc hn. - Tcl.eval(char *s) yu cu Tcl_GlobalEval() chy s thng qua trnh thng dch - Tcl.evalc(const char* s) bo v tham s s. N copy s vo b m trong, n sau yu cu hm eval(char *s) trn b m trong. - Tcl.eval() gi nh rng lnh c lu trong m trong bp_ ca lp, n trc tip yu cu Tcl.eval( char* bp_ ). Mt handle ti chnh b m thng qua phng thc tcl.buffer(void). - Tcl.evalf(const char* s, ...) gn tng ng Printf(3). N s dng vsprintf(3) ni ti to xu vo.
Cyber Pro !!! :))

C s mng thng tin K4X Truyn kt qu ti/t trnh thng dch Khi trnh thng dch yu cu mt phng thc C++, n tip nhn kt qu tr li trong bin thnh phn private, tcl_->result. Hai phng thc c kh nng t bin ny: - Tcl.result(const char* s) truyn xu kt qu s li trnh thng dch. - Tcl.resultf(const char* fmt, ...) - varargs(3) bin i trn nh dng kt qu s dng vsprintf(3), truyn xu kt qu ti trnh thng dch. if (strcmp(argv[1], "now") = = 0) { tcl.resultf("%.17g", clock()); return TCL_OK; } tcl.result("Invalid operation specified"); return TCL_ERROR; Khi mt phng thc C++ yu cu mt lnh OTcl, trnh thng dch tr v kt qu trong tcl_->result. tcl.result(void) phi c dng nhn kt qu. Ch rng, kt qu l mt xu, n phi c chuyn ti mt nh dng bn trong tng ng vi kiu ca kt qu. tcl.evalc("Simulator set NumberInterfaces_"); char* ni = tcl.result(); if (atoi(ni) != 1) tcl.evalc("Simulator set NumberInterfaces_ 1"); Lp TclObject Lp TclObject l lp c s cho hu ht cc lp khc trong phn cp thng dch v bin dch. Mi i tng trong lp TclObject c to ra bi ngi dng t trong trnh thng dch. Mt i tng bng tng ng c to ra trong phn cp bin dch. Hai i tng ny lin kt mt thit vi nhau. V d cu hnh ca mt TclObject , mt tc t SRM (lp Agent/SRM/Adaptive) set srm [new Agent/SRM/Adaptive] $srm set packetSize_ 1024 $srm traffic-source $s0 Vi quy c trong ns, lp Agent/SRM/Adaptor l lp con ca Agent/SRM, l lp con ca lp Agent, l lp con ca lp TclObject. Phn cp lp bin dch tng ng l ASRMAgent, tha k t Agent, tha k t TclObject tng ng. To v xo i tng TclObject a,To i tng TclObject: Bng cch dng new{}, trnh thng dch s chy hm khi to cho i tng , init{}, truyn cho n cc tham s cung cp bi ngi dng. i tng bng ca n c to ra bi hm thit lp lp c s TclObject. Do hm khi to cho i tng TclObject mi u tin phi gi hm khi to ca lp cha. new{} tr v mt handle ti i tng ny. Trnh t cc hnh ng sau c thc hin bi trnh thng dch l mt phn ca vic khi to i tng TclObject mi. - Ly mt handle ca i tng mi t khng gian tn ca TclObject. - Gi hm khi to cho i tng mi v cc hm khi to ca cc i tng lp trn. Hm khi to ca i tng gc TclObject s to i tng bng v thc hin cc khi to cho n.

Cyber Pro !!! :))

10

C s mng thng tin K4X - Sau khi i tng bng c to xong, hm create_shadow(void) s: o Thm i tng mi vo bng bm ca TclObjects o Gn cmd{} thnh mt th tc instance ca i tng thng dch mi. Th tc instance ny gi phng thc command() ca i tng bin dch. Cc k thut to bng trn ch c thc hin khi ngi dng to i tng TclObject thng qua trnh thng dch. b,Xo i tng TclObject: Hnh ng xo delete s hu i tng thng dch v i tng bng ca n. Ging nh hm thit lp, hm hu i tng phi gi hm hu cho lp cha mt cch tng minh nh cc lnh cui ca hm hu. Hm hu TclObject s yu cu th tc th hin delete-shadow, tip yu cu phng thc tng ng trong trnh bin dch hu i tng bng. Trnh thng dch t n s hu i tng thng dch. Lin kt bin Thng thng, vic truy xut bin bin dch hay bin thng dch ch gii hn trong m bin dch hay m thng dch. Tuy nhin ns c c ch cho php lin kt gia bin bin dch v bin thng dch, s thay i ca bin ny s c phn nh vo bin lin kt vi n. Vic lin kt c thc hin thng qua hm khi to ca i tng bin dch. ns h tr 5 kiu d liu khc nhau, bin gi tr bng thng, bin thi gian, nguyn, thc v bin logic. Cc phng thc command: nh ngha v gi Mi TclObject c to, ns thit lp mt th tc instance, cmd{}, cho php thc thi cc hm thng qua cc i tng bin dch, cmd{} t ng gi th tc command{} ca i tng bin dch v truyn cc tham s cn thit. Ngi dng yu cu phng thc cmd{} theo mt trong hai cch: gi tng minh hoc khng tng minh. Vi cch tng minh, ngi dng gi th tc cmd{} v truyn tham s u tin l hnh ng cn thc hin. Vi cch khng tng minh, nu c mt th tc instance c tn ging nh hnh ng cn thc hin th ngi dng ch vic gi th tc instance . Lp TclClass Lp bin dch ny (TclClass) l mt lp tru tng. Cc lp k tha t lp ny cung cp hai chc nng: khi to cy lp thng dch nh x ca cy lp bin dch v cung cp cc phng thc to cc TclObject mi. Mi lp k tha c lin kt vi mt lp bin dch trong cy lp bin dch. Lp TclCommand Lp ny ch cung cp cc k thut cho ns xut cc lnh n gin ti trnh thng dch, m sau c chy trong phm vi ton cc bi trnh thng dch. Lp InstVar Lp ny nh ngha cc phng thc v cc k thut lin kt mt bin thnh vin C++ trong i tng bng vi mt bin instance trong i tng thng dch tng ng. Gi tr ca bin c th truy xut bi m bin dch hay m thng dch ti bt k thi im no. C 5 lp tng ng vi 5 loi bin ca Ns: lp InstVarReal, lp InstVarTime, InstVarBandwidth, lp InstVarInt, lp InstVarBool, tng ng lin kt vi bin thc, thi gian, bng thng, s nguyn, v bin logic.

Cyber Pro !!! :))

11

C s mng thng tin K4X

2.3 Cc m phng c s
2.3.1 Lp m phng (class Simulator)
H thng m phng c thc hin bi lp Tcl Simulator. Lp ny cung cp cc giao tip cho php cu hnh qu trnh m phng v la chn loi lch s kin (event scheduler). Cc script m phng thng bt u bng vic to mt instance ca lp Simulator. Tip theo n gi cc hm to cc nt mng, cu hnh topo v cc thuc tnh khc ca mng. Trong ns version 2 c mt lp tha k t lp Simulator gi l OldSim nhm cung cp kh nng tung thch ngc vi ns version 1 2.3.1.1 Khi to m phng Khi mt i tng gi lp mi c to trong tcl, th tc khi to thc hin cc hnh ng sau: Khi to nh dng gi To mt b lp lch To mt null agent Khi to nh dng gi thit lp cc trng offset trong cc gi s dng bi ton b trnh m phng. B lp lch (scheduler) chy theo kiu iu khin s kin.Null agent c to ra vi li gi sau: set nullAgent_ [new Agent/Null] NullAgent thng c dng lm sink cho cc gi mun loi hay lm ch cc gi khng nhn dng c chuyn ti. 2.3.1.2 Cc b lp lch v cc s kin. Trnh m phng hot ng theo kiu hng s kin. C bn b lp lch, mi b s dng cc cu trc d liu khc nhau: danh sch lin kt n linked-list, heap, calendar queue (ngm nh) v kiu mt c bit c gi l real time. B lp lch thc hin chn s kin tip theo gn nht, hon thnh n v sau x l s kin tip theo. n v s dng cho lp lch l giy. Hin ti, trnh m phng chy n tuyn , ch mt s kin c chy mt thi im. Nu c nhiu hn mt s kin c lp lch chy ng thi th vic chy chng c thc hin trn c s s kin no c lp lch trc s c chy trc. Cc s kin m phng khng bao gi c sp xp li bi b lp lch. Mt s kin thng bao gm mt firing time v mt hm qun l (handler function). Hai kiu i tng c tha k t lp c s Event l packets v at-events. Mt atevent l mt th tc c lp lch chy mt thi im xc nh. l mt chui c s dng trong cc script m phng. B lp lch kiu danh sch (List Scheduler): s dng mt cu trc danh sch lin kt n. Danh sch ny t chc theo trt t thi gian, theo vic chn v xo s kin yu cu phi qut danh sch tm im vo thch hp. Khi chn s kin tip theo chy cn ct im u ca danh sch khi danh sch. Cch thc hin ny m bo thc hin cc s kin trong dy FIFO ca dng cc s kin.

Cyber Pro !!! :))

12

C s mng thng tin K4X B lp lch kiu vun ng (heap scheduler): thc hin lp lch theo cu trc vun ng. Cu trc ny cao cp hn so vi cu trc danh sch cho mt s lng ln cc s kin, thi gian chn v xo n s kin l O(log n). B lp lch kiu (calendar queue): s dng cu trc d liu ging lch nm bn, cc s kin cng thng/ngy ca nhiu nm c th c ghi cng mt ngy. B lp lch thi gian thc: ng b vic thc hin cc s kin vi thi gian thc. N hin ti vn c ang pht trin.

2.3.2 Node v truyn ti gi tin (packet forwarding)


2.3.2.1 Cc c s node (Node basics) C s nguyn thu to node l: set ns [new Simulator] $ns node Th tc instance node xy dng mt node bn ngoi cc i tng phn lp n gin. Node t bn thn n l mt lp n chun trong OTcl. Mc d vy hu ht cc b phn ca node u l cc TclObject. Cu trc tiu biu ca mt node (unicast) nh sau:

Hnh 1: Cu trc unicast node trong ns Cu trc n gin ny bao gm 2 TclObject: mt phn lp a ch (classifier_) v mt phn lp cng (dmux_). Chc nng ca cc phn lp ny l phn loi cc gi tin n chnh xc cc agent hoc lin kt ra.Hu ht cc node cha t nht cc b phn sau: Mt a ch hoc id_, t ng tng u thm 1 (bt u t 0) trong khng gian tn m phng mi khi mt node c to ra. Danh sch cc node ln cn (neighbor_). Mt danh sch cc agent(agent_). B nh kiu node (nodetype_) Mt module rounting Ngm nh, cc node trong ns c xy dng m phng unicast. c kh nng m phng multicast, trnh m phng phi c to vi tu chn multicast on. V d :
Cyber Pro !!! :))

13

C s mng thng tin K4X set ns [new Simulator multicast on] Khi mt trnh m phng s dng rounting multicast, bit cao nht trong a ch cho bit a ch l a ch multicast hay a ch unicast. Nu bit ny l 0 th a ch l unicast, ngc li a ch l multicast. Cu trc trong ca mt node multicast.

Hnh 2: Cu trc multicast node trong ns 2.3.2.2 Cc phng thc node: cu hnh node Th tc cu hnh mi node c phn lp trong Cc hm iu khin Qun l s hiu cng v a ch, chc nng unicast routing Qun l agent Thm cc hng xm Cc hm iu khin $node entry tr v im vo cho mi node. y l phn t u tin s qun l cc gi tin n node. Bin instance node, entry_, lu tham chiu phn t ny. Vi node unicast, y l phn lp (classfier_) a ch m nhn cc bit cao trong a ch ch. Bin instance classfier_ cha tham chiu ti phn lp ny. Tuy nhin, vi cc node multicast, im vo l switch_ n nhn bt u tin ch ra n s truyn gi ti phn lp unicast, hay phn lp multicast tng ng. $node reset s reset tt c cc tc t ti node. Qun l s hiu cng v a ch Th tc $node id tr v s hiu node. S ny t ng tng v gn ti mi node lc khi to bi phng thc lp Simulator, $ns node. Lp Simulator cng lu mt mng bin instance, node_, c nh s bi node id, v cha mt tham chiu ti node vi id . Th tc $node agent (port) tr v handle ca agent ti port xc nh. Nu khng c agent no ti s hiu cng ch nh sn sng, th tc tr v mt xu rng. Th tc alloc-port tr v s hiu cng tip theo c th c s dng. N dng mt bin instance, np_, nh du s hiu cng cha c xc nh.
Cyber Pro !!! :))

14

C s mng thng tin K4X Th tc add-route v add-routes, dng bi unicast routing thm cc ng i vo classifier_. C php c dng l: $node add-route <destination id> <TclObject> . $node add-routes <destination id> <TclObjects> c dng thm nhiu router ti cng mt ch. Ngc li vi th tc add-routes{} l delete-routes{}. Qun l agent Vi mt <agent>, th tc attach{} s thm agent vo danh sch ca agents_ ca n, gn s hiu cng vi agent v t a ngun cho n, t ch ca agent entry{} ca n, thm mt con tr ti b gii tch hp cng ti node (dmux_) vo agent ti slot tng ng trong phn lp dmux_ Ngc li, detach{} s xo tc t t danh sch agents_, v b im ch ca agent, im vo trong dumx_ ca node vo nullagent. Xc nh cc node ln cn Mi node gi mt danh sch cc node gn n trong bin instance, neighbor_. Th tc addneighbor{} thm mt node hng xm vo danh sch. Th tc neighbors{} tr v danh sch ny. 2.3.2.3 Giao din cu hnh node Simulator::node-config{} iu tit tnh linh hot v cu trc module ca cc node khc nhau nh ngha trong cng lp Node c s. Giao din cu hnh node bao gm hai phn. Phn u lm vic vi cu hnh node, phn hai to node vi kiu c nh sn. Cu hnh node v bn cht l nh ngha cc c tnh khc nhau ca node trc khi to chng. Chng c th gm kiu ca cu trc a ch s dng trong m phng, nh ngha cc b phn ca mng cho mobilenode, bt hoc tt tu chn du cc mc Agent/Router/MAC, chn kiu ca giao thc router cho cc node khng dy hoc hn ch ch hot ng. 2.3.2.4 Phn lp ( Classifier ) Chc nng ca mt node khi n nhn mt gi l kim tra cc trng ca gi, thng l a ch ch, v c th l a ch ngun. N c th nh x gi tr ti mt i tng giao din ra l ni nhn tip theo ca gi ny. Trong ns cng vic ny c thc hin bi i tng classifier n.Mi i tng classifier s c t ti mt v tr xc nh kim tra vic truyn ti gi tin khi vn chuyn qua node. Mt node trong ns dng nhiu kiu i tng classifier khc nhau ca phn lp cho cc mc ch khc nhau. Phn lp a ch Phn lp a ch tr gip chuyn gi unicast. N p t mt php dch bit v thc hin gn mt n ti a ch ch ca gi to mt s hiu slot. S hiu slot ny c tr v t phng thc classify(). Phn lp Multicast.

Cyber Pro !!! :))

15

C s mng thng tin K4X Phn lp multicast phn lp cc gi theo c (nhm) a ch ch v ngun. N duy tr mt bng nh x cp ngun/nhm ti cc s hiu slot. Khi mt gi n cha mt cp ngun/nhm cha xc nh ti phn lp, n yu cu mt th tc OTcl l Node::new-group{} thm mt im vo trong bng ca n. Phn lp a ng (MultiPath) i tng ny c to ra tr gip truyn trn nhiu ng c chi ph (cost) bng nhau, y node s c nhiu ng chi ph bng nhau ti cng mt ch, v dng tt c chng ng thi. i tng ny khng kim sot bt k mt trng no trong gi. Vi mi gi thnh cng, n n gin tr v trng slot tip trong ch lm trn robin. Phn lp bm i tng ny c dng phn lp mt gi nh cc thnh phn ca mt lung. ng nh tn ca n ch ra, phn lp bm s dng bng bm gn cc gi vi cc lung. Cc gi c th c gn ti cc lung da vo nh danh lung (flow ID), a ch ch, a ch ngun/ch, hoc s kt hp a ch ngun /ch cng vi nh danh lung. Phn lp bm c to ra vi mt tham s nguyn ch nh kch thc khi to ca bng bm. Kch thc hin ti ca bng bm c th thay i vi phng thc resize. Khi to, mt bin instance shift_ v mask_ c khi to vi gi tr NodeShift v NodeMask hin ti tng ng ca trnh m phng. Nhng gi tr ny nhn c t i tng AddrParams khi mt phn lp bm c khi to. Phn lp bm s tht bi nu cu trc AddrParams khng c khi to. Phn lp bm nhn cc gi, phn lp theo cc iu kin lung ca chng, v nhn cc phn lp slot ch nh node tip theo c th nhn gi . Replicator Replicator khc vi cc phn lp khc, n khng dng chc nng phn lp. N n gin ch dng cc phn lp nh mt bng c n slot, n s dng phng thc resv() to n bn copy ca gi ri pht ti n i tng c tham chiu trong bng. h tr truyn gi multicast, mt phn lp nhn mt gi multicast t ngun S cho nhm G tnh mt hm bm h(S,G) cho mt s hiu slot trong bng i tng phn lp. 2.3.2.5 Module routing v t chc phn lp Node trong ns thc s l mt tp cc phn lp. Node n gin nht cha ch mt phn lp a ch v mt phn lp cng. Khi mun m rng chc nng mt node, nhiu phn lp c thm vo node c s. Phng thc qun l trng hp ny l thng qua lp tha k. V d, nu mt node mun tr gip phn lp routing, mt cch n gin l tha k mt node Node/Hier t node c s v chn cc phng thc t phn lp chn cc phn cp. Phng thc ny hot ng tt khi cc khi chc nng mi l c lp v khng b xo trn(arbitrarily) tu . V d c kin trc routing v adhoc routing dng tp phn cp ca ca chng. Tha k yu cu c Node/Hier h tr trc, v Node/Mobile sau. S c vn khi mun node adhoc routing h tr hierarchical routing. Trong trng hp ny, phi s dng a tha k gii quyt, nhng n tr nn khng kh thi khi s khi chc nng tng ln. Phng thc duy nht gii quyt vn ny l php hp i tng. Node c s cn nh ngha mt tp cc giao din cho cc phn lp truy nhp v t chc. Nhng giao din ny c th l:
Cyber Pro !!! :))

16

C s mng thng tin K4X Cho php cc module routing n thc thi cc phn lp ca chng chn cc phn lp ca chng vo node. Cho php cc khi tnh ton ng a cc thng tin nh tuyn ti cc phn lp trong tt c cc module routing cn thng tin ny. Cung cp mt im n qun l cc module routing tn ti. Ngoi ra, nn nh ngha mt giao din ng nht cho cc module routing ni ti cc giao din node, cng nh cung cp mt hng tip cn m rng chc nng node. Module routing Mi module routing trong ns bao gm 3 khi chc nng: Routing agent chuyn i gi routing vi cc hng xm. Route logic s dng thng tin thu lm bi routing agent thc hin tnh ton ng thc. Cc phn lp nm trong node. Chng dng bng routing c tnh thc hin chuyn gi. Khi tnh ton mt giao thc routing mi, khng cn thc hin tt c cc khi . Khi mt giao thc routing mi gp nhiu hn mt khi chc nng, c bit khi n cha phn cp ca chnh n, n mun c mt i tng khc, m gi l routing module, qun l tt c cc khi chc nng v giao tip vi node t chc cc phn lp ca n. Hnh sau m t mi lin quan chc nng gia cc i tng ny:

Hnh 3: Mudule routing Cc module routing c th c quan h trc tip vi cc khi tnh ton ng, route logic v/hoc routing agent. Mc d vy, khi tnh ton ng c th khng c ci trc tip cc ng ca chng thng qua module routing, bi v c th tn ti cc module khc ch tm tm cc ng mi. Mt module routing bao gm 3 chc nng ln: Khi to cc lin kt ca n ti mt node thng qua register{}, v loi b lin kt qua unregister{}. Thng trong register{}, mt module routing (1) ni cho node bit liu n c mun bit cc cp nht ng v gn kt cc agent vn chuyn.

Cyber Pro !!! :))

17

C s mng thng tin K4X (2) to cc phn lp ca n v ci chng trong node. Trong unregister{} mt module routing thc hin cng vic ngc li: xo cc phn lp v b cc kt ni ca n ti b cp nht ng ca node. Nu module routing mun bit cc cp nht ng, node s thng tin cho module thng qua RtModule::add-route{dst,target} v RtModule::delete-route{dst, nullagent} Nu module routing mun thc hin gn kt v hu b gn kt cc agent vn chuyn trong node, node s thng tin cho module thng qua: RtModule::attach{agent, port} v RtModule::detach{agent, nullagent}

Giao din node lin kt vi cc giao din ca module routing, node cung cp cc giao din tng ng: * bit module no ng k khi khi to, lp Node gi mt danh sch cc module nh mt bin lp. Gi tr ngm nh ca danh sch ny cha ch module routing c s. Lp Node cung cp hai proc sau x l danh sch module ny: Node::enable-module{[name]} Nu module RtModule/[name] tn ti, proc ny t [name] vo danh sch module. Node::disable-module{[name]} Nu [name] l trong danh sch module, xo n khi danh sch . Khi mt node c to, c th dng cc th tc sau lit k cc module ng k, hoc nhn mt th ca module c tn ch nh: Node::list-modules{} Node::get-module{[name]} * cho cc module routing mun cp nht routing, mt i tng node cung cp cc hm: Node::rouite-notify{module} Thm module vo danh sch cp nht module. Node::unreg-route-notify{module} xo module khi danh sch cp nht routing. Cc th tc sau cung cp cc mc ni trn lin kt ca cc agent vn chuyn: Node::port-notify{module} Thm module vo danh sch thng bo kt ni agent. Node::unreg-port-notify{module} Xo module t danh sch lin kt agent. * Node cung cp cc th tc sau x l phn cp a ch v cng ca n: Node::insert-entry{module, clsfr, hook} chn phn lp clsfr vo im vo ca node. N cng lin kt phn lp mi vi module do nu phn lp ny b loi sau , module s b hu b ng k. Nu hook c ch ra l mt s, phn cp tn ti s c chn vo slot hook ca phn lp mi. Node::install-entry{module, clsfr, hook} khc vi Node::insert-entry ch n xo phn lp tn ti im vo ca node, b ng k mi module routing tng ng, ci t phn lp mi ti im vo. Nu hook c cung cp, phn lp c c ni vo chui phn lp, n s ni chui ny vo slot hook ca phn lp mi. Nh trn, nu hook bng target, clsfr s c nh du nh mt i tng c tha k t Connector thay cho mt phn lp. Node::install-demux{demux, port} t phn cp demux c cung cp nh mt gii a hp ngm nh. Nu port c cung cp n t b gii a hp sn c vo slot port ca node mi. Ch , trong trng hp ny, khng xo b gii a hp tn ti.

Cyber Pro !!! :))

18

C s mng thng tin K4X

2.3.3 Cc lin kt :
Cc lin kt n Phn ny s m t cch to cc lin kt kt ni cc node v hon thin topology ca mng trong gii hn m t cc lin kt im-im n gin. Cng nh node c cu to t cc phn lp, mt lin kt n c xy dng t mt chui cc b kt ni (connector). Lp Link l mt lp trong OTcl, cung cp mt vi primitive (hm nguyn thu) n gin. Lp SimpleLink cung cp kh nng kt ni hai node bng lin kt im-im. ns cung cp th tc simplex-link{} xy dng cc lin kt n hng t mt node ti mt node khc. C php m t nh sau: set ns [new Simulator] $ns simplex-link (node0)( node1)(bandwidth)(delay)(queue_type) Lnh ny to mt lin kt t node0 ti node1 vi bng thng bandwidth v tr delay. Lin kt ny dng mt queue cc kiu queue_type. Cu trc ca mt lin kt n gin:

Hnh 4: Cu trc Link trong ns head_ l im vo ca lin kt, n ch ti i tng u tin ca lin kt. queue_tham chiu ti hng i chnh cc phn t ca lin kt. link_ tham chiu ti phn t thc s lm m hnh cho lin kt ny, v c tnh tr v bng thng ca lin kt. ttl_tham chiu ti phn t x l thi gian sng ca mi gi drophead_ tham chiu ti mt i tng l u ca hng i cc thnh phn b b qua bi x l lin kt. enqT_ tham chiu ti phn t nh du cc gi ang vo queue_ deqT_ tham chiu ti phn t nh du cc gi ang ri khi queue_ drpT_ tham chiu ti phn t nh du cc gi b b t queue_ rcvT_ tham chiu ti phn t nh du cc gi nhn c bi node tip theo. Th tc duplex-link{} xy dng mt lin kt hai hng t hai lin kt n gin. 2.3.3.1 Cc th tc xy dng cc lin kt v cc lin kt n Link procedures: lp Link c thc thi hon ton trong Otcl. Lp OTcl SimpleLink dng lp C++ LinkDelay m phng tr trong phn pht cc gi tin. Cc th tc trong lp Link l: head{} tr v handle ca head_.

Cyber Pro !!! :))

19

C s mng thng tin K4X queue{} link{} up{} down{} up?{} tr v handle ca queue_. tr v handle cho phn t tr, link_. t lin kt trng thi l up trong dynamics_ element. ngc ca up{}. tr v trng thi lin kt. Trng thi l g up hay down; l up nu lin kt ng c cho php all-connectors{} p t mi hnh ng ch nh ln mi connector trn lin kt. cost{} t gi cho lin kt cost?{}tr v gi ca lin kt.

SimpleLink Procedures: Lp (Otcl) SimpleLink thc hin mt lin kt im-im n gin vi mt tr v mt queue_ tng ng. N c yu cu t lp (Otcl c s) Link nh sau: Class SimpleLink -superclass Link SimpleLink instproc init { src dst bw delay q { lltype "DelayLink" } } { $self next $src $dst $self instvar link_ queue_ head_ toNode_ ttl_ ... set queue_ $q set link_ [new Delay/Link] $link_ set bandwidth_ $bw $link_ set delay_ $delay $queue_ target $link_ $link_ target [$toNode_ entry] ... set ttl_ [new TTLChecker] $ttl_ target [$link_ target] $link_ target $ttl_ } 2.3.3.2 Cc b kt ni (connector) Cc connector khng ging cc phn lp (classifier), n ch to d liu cho mt bn nhn; hoc l gi d liu c chuyn cho hng xm target_, hoc l hu (gi n drop-target_) Mt connector s nhn mt gi, thc hin vi chc nng, v pht gi ti hng xm ca n, hoc loi b gi. C nhiu loi connector trong ns, mi loi thc hin mt chc nng khc nhau: Networkinterface : dn nhn cc gi vi nh danh giao din n - n c dng bi cc giao thc nh tuyn multicast DynaLink : i tng m gate traffic ph thuc vo link l up hay down DelayLink : i tng m m hnh ho tnh cht tr v bng thng ca lin kt Queues : kiu output buffer gn vo link trong mt real router trong mt mng TTLChecker : gim ttl ca mi gi tin khi n c nhn. 2.3.3.3 Phn cp i tng Lp c s dng m t lin kt gi l Link.

Cyber Pro !!! :))

20

C s mng thng tin K4X SimpleLink Object : dng th hin mt lin kt n hng . Khng c bin trng thi hay tham s cu hnh gn vi i tng ny. DelayLink Object : xc nh tng thi gian yu cu cho mt packet bng qua mt link. N c xc nh bi size/bw + delay vi size l kch thc gi tin, bw l bandwidth ca link v delay l tr khi truyn ca link.

2.3.4 Qun l queue v lp lch gi


Queue biu din cc v tr l ni m c th lu cc gi hay drop. Packet scheduling cp ti cc quyt nh phc v hay l drop gi tin. Hin ti c cc kiu drop-detail queueing (FIFO), qun l b m RED, CBQ v mt vi loi Fair Queueing nh Fair Queueing (FQ), Stochastic Fair Queueing (SFQ) hay Deficit Round-Robin (DRR). 2.3.4.1 Lp Queue C++ Lp queue c tha k t lp c s Connector. N cung cp mt lp c s c dng bi cc cc lp queue, nh hm gi ngc thc hin khi ho. Enque v deque l cc hm o thun tu, cho thy lp Queue c s dng nh lp c s, c bit cc queue c tha k t Queue v thc hin hai chc ny nu cn thit. Cc queue thng khng chng hm recv bi v n yu cu cc enque, deque c bit. Lp Queue khng cha trng thi trong. Thng chng l cc i tng theo di c bit. Thnh phn qlim_ c xy dng iu khin gii hn trn ca queue, nhng n khng c t t bi lp Queue; n phi c dng bi cc lp queue con, nu chng cn gi tr ny. Thnh phn bocked_ l mt bin logic, xc nh liu queue c kh nng gi mt gi ngay lp tc ti hng xm ca n hay khng. Khi mt queue b block, n c th enqueue cc gi nhng n khng th gi chng. 2.3.4.2 Queue Blocking Mt queue c th b block hoc unblock bt k lc no. Thng mt queue b block khi mt packet i qua gia n v hng xm ca n. Mt blocked queue s cn b block nu nh downstream link vn bn v queue ang c t nht mt packet c gi. Mt queue ch c unblock khi hm resume ca n c gi, thng thng l khi khng c packet no vo queue. Khi mt i tng Queue c to, n s bao gm mt i tng QueueHandler (qh_) c khi to cha mt tham chiu ti i tng Queue mi. Khi mt Queue nhn mt packet, n gi phin bn lp con ca hm enque vi packet . Nu queue khng b block n s gi packet v gi hm deque ch nh kt thc packet c truyn, block queue v gi packet ti hng xm. 2.3.4.3 Lp PacketQueue Lp Queue c th thc hin qun l b m v lp lch nhng khng thc hin cc cng vic mc thp trn mt queue xc nh. Lp PacketQueue duy tr mt linked-list ca cc packet, v thng c dng bi cc chin lc iu ring bit v qun l b m mt cch k lut gi trt t cc packet. Chin lc iu ring bit hoc qun l b m c th s dng mt vi i tng PacketQueue. Lp PacketQueue duy tr s lng hin ti cc packet c lu trong queue, n c phng thc length() tr v. Hm enque t packet ch nh cui queue v cp nht bin thnh phn len_. Hm deque tr v packet nh queue v xo n khi queue, hoc tr v NULL nu queue rng. Hm lookup tr v packet th r t nh queue, hoc NULL nu khng c. Hm remove xo gi

Cyber Pro !!! :))

21

C s mng thng tin K4X a ch cho trong queue. N s khin chng trnh kt thc bt thng nu gi khng tn ti. 2.3.4.4 Cc loi i tng queue. Mt i tng queue l mt lp thng thng ca i tng c kh nng gi v nh du hoc b qua cc packet khi chng i qua topology c m phng. Cc tham s cu hnh c dng cho i tng queue l: Limit_ kch thc queue trong cc packet. Blocked_ ngm nh l false, n l true nu queue b block. unblock_on_resume_ t ngm nh l true, ch ra mt queue nn t unblock thi im gi cui cng gi xong.

2.3.5 Cc tr v cc lin kt
Cc tr th hin thi gian mi gi qua mt lin kt. Mt dng c th ca i tng ny (dynamic link) cng hin th kh nng hng ca mt lin kt. Tng thi gian yu cu cho mt gi vt qua mt lin kt c nh ngha theo: s/b+d trong s l kch thc gi, b l tc ca lin kt (bits/s), d l tr lin kt (s). S thc hin cc tr lin kt c gn cht ch vi th tc khi ho queue. i tng ny tr gip mt insproc-like, $object dynamic, t cc bin ca n, dynamic_. Bin ny xc nh liu lin kt c l lin kt ng hay khng. Vi cc lin kt khng ng, phng thc ny thc hin bi vic nhn mt gi p v lp lch hai s kin. Gi s hai s kin ny gi l E1 v E2, v s kin E1 c lp lch xy ra sau E2. E1 c lp lch xy ra khi c packet gi ti node vi tr hon tt vic gi packet hin ti. E1 thng gn vi i tng Queue, do n s c unblock. E2 th hin s kin packet c chuyn n nt ln cn tip theo. S kin E2 xy ra mt s giy sau E1 l tr lin kt. Khi lin kt l ng, v nhn mt packet p, th n s lp lch cho E1 c th unblock queue ti thi im thch hp. Tuy nhin, E2 c lp lch ch khi p l gi duy nht hin ang c truyn. Nu khng, phi c t nht mt gi ang c truyn trn lin kt m phi c nhn trc p ti E2. Do gi p c gi trong Transit queue , itq_. Khi gi ngay trc p c node ln cn nhn, i tng DelayLink s lp lch mt s kin cho chnh n tc ng ti E2. Ti thi im thch hp, phng thc handle() ca n s trc tip gi p n ch ca n. Phng thc ni ti schedule_next() s iu cc s kin cho cc gi khi truyn ti thi im thch hp.

II.3.6 Agent:
Agent l cc im cui (endpoint) ni cc gi ca tng mng c to ra hoc s dng, agent cn c dng ci t cc giao thc ca cc tng khc nhau. Lp Agent c mt phn c ci t bng OTcl v mt phn c ci t bng C++. 2.3.6.1 Trng thi agent Lp Agent C++ cha y cc trng thi ni ti gn vi cc trng khc nhau ca cc gi tin m phng c gi i. Bao gm: addr_ a ch ca node (a ch ngun trong cc gi d liu) dst_ a ch ch m gi s c gi ti

Cyber Pro !!! :))

22

C s mng thng tin K4X size_ packet kch thc (bytes), thng t trong header ca gi. type_ type kiu gi (trong header gi) fid_ nh danh lung prio_ the trng mc u tin IP flags_ packet cc c defttl_ default gi tr thi gian sng ngm nh IP ttl Cc gi tr ny c th c thay i trong cc lp dn xut ca Agent, tuy nhin khng phi tt c chng u cn thit trong mt agent c th no . 2.3.6.2 Cc phng thc ca agent. Lp agent h tr vic sinh v nhn gi. Cc hm thnh phn sau c thc hin bi lp Agent trong C++, v cc lp dn xut thng khng override cc phng thc ny. Packet* allocpkt() cp pht mt gi mi v gn cc trng ca n. Packet* allocpkt(int) cp pht gi mi vi mt ti d liu n byte v gn cc trng ca n Cc hm thnh vin sau ca lp Agent thng c override bi lp dn xut: void timeout(timeout number) lp con ch nh phng thc timeout void recv(Packet*, Handler*) agent nhn receiving nhn ng dn. 2.3.6.3 Cc Agent giao thc: Trong ns c cung cp cc agent sau: (tn trong OTcl) TCP a Tahoe TCP sender (cwnd = 1 on any loss) TCP/Reno a Reno TCP sender (with fast recovery) TCP/Newreno a modified Reno TCP sender (changes fast recovery) TCP/Sack1 a SACK TCP sender TCP/Fack a forward SACK sender TCP TCP/FullTcp a more full-functioned TCP with 2-way traffic TCP/Vegas a Vegas TCP sender TCP/Vegas/RBP a Vegas TCP with rate based pacing TCP/Vegas/RBP a Reno TCP with rate based pacing TCP/Asym an experimental Tahoe TCP for asymmetric links TCP/Reno/Asym an experimental Reno TCP for asymmetric links TCP/Newreno/Asym an experimental Newreno TCP for asymmetric links TCPSink a Reno or Tahoe TCP receiver (not used for FullTcp) TCPSink/DelAck a TCP delayed-ACK receiver TCPSink/Asym an experimental TCP sink for asymmetric links TCPSink/Sack1 a SACK TCP receiver TCPSink/Sack1/DelAck a delayed-ACK SACK TCP receiver UDP a basic UDP agent RTP an RTP sender and receiver RTCP an RTCP sender and receiver LossMonitor a packet sink which checks for losses IVS/Source an IVS source IVS/Receiver an IVS receiver CtrMcast/Encap a centralised multicast encapsulator CtrMcast/Decap a centralised multicast de-encapsulator Message a protocol to carry textual messages

Cyber Pro !!! :))

23

C s mng thng tin K4X Message/Prune SRM SRM/Adaptive Tap Null rtProto/DV processes multicast routing prune messages an SRM agent with non-adaptive timers an SRM agent with adaptive timers interfaces the simulator to a live network a degenerate agent which discards packets distance-vector routing protocol agent

2.3.6.4 Cc v d: cc Agent TCP, TCPSINK Lp TCP biu din mt TCP sender n gin. N gi d liu ti mt agent TCPSink v x l cc tn hiu bo nhn (acknowledgments) ca n. N c mt i tng ring bit c kt hp vi n m biu din yu cu ca mt ng dng. To mt agent on m OTcl sau y to ra mt agent TCP v cu hnh n: set tcp [new Agent/TCP] ; # to agent gi $tcp set fid_ 2 ; # thit lp ID lung tng IP set sink [new Agent/TCPSink] ; # to agent nhn $ns attach-agent $n0 $tcp ; # t sender ln nt $n0 $ns attach-agent $n3 $sink ; # t receiver ln nt $n3 $ns connect $tcp $sink ; # thit lp kt ni TCP set ftp [new Application/FTP] ; # to mt ng dng ngun FTP $ftp attach-agent $tcp ; # kt hp FTP vi TCP sender $ns at 1.2 "$ftp start" ; # sp xp FTP bt u vo thi im 1.2 giy Bt u mt agent Agent TcpAgent trong v d c bt u khi ngun sinh FTP ca n nhn lnh start thi im 1.2 giy. Thao tc start l mt th tc instance c nh ngha trong lp Application/FTP. N c nh ngha trong ~ns/tcl/lib/ns-source.tcl nh sau: Application/FTP instproc start {} { [$self agent] send -1 } Trong trng hp ny, agent tham chiu n agent TCP n gin ca chng ta v send 1 tng t nh gi mt file ln ty . Li gi n send cui cng dn n vic TCP sender to ra cc gi. X l u vo ti ni nhn Nhiu TCP agent c th c s dng cng vi lp TCPSink. Lp ny nh ngha cc phng thc recv() v ack(). Phng thc recv() chn ln phng thc Agent::recv() (ch n thun l hy b gi nhn c). N cp nht trng thi bn trong vi s th t ca gi nhn c (v do yu cu bin off_tcp_ c khi to ng). Sau , n to ra mt tn hiu bo nhn (acknowledgment) cho gi nhn c. Phng thc ack() cho php truy nhp y ti cc trng header ca gi bao gm s truy nhp ring bit ti TCP header, IP header, Flags header v cc header chung. Li gi ti send() dn ra phng thc Connector::send().

Cyber Pro !!! :))

24

C s mng thng tin K4X

X l cc phn hi ti ni gi Mt khi pha bn kia ca TCP n gin nhn c d liu v to ra mt ACK, ni gi thng phi x l ACK. Trong agent TcpAgent, iu ny c lm nh sau: /* * main reception path - should only see acks, otherwise the * network connections are misconfigured */ void TcpAgent::recv(Packet *pkt, Handler*) { hdr_tcp *tcph = (hdr_tcp*)pkt->access(off_tcp_); hdr_ip* iph = (hdr_ip*)pkt->access(off_ip_); ... if (((hdr_flags*)pkt->access(off_flags_))->ecn_) quench(1); if (tcph->seqno() > last_ack_) { newack(pkt); opencwnd(); } else if (tcph->seqno() == last_ack_) { if (++dupacks_ == NUMDUPACKS) { ... } } Packet::free(pkt); send(0, 0, maxburst_); } on m ny c thc thi khi mt gi ACK ti ni gi. Trong trng hp ny, mt khi thng tin trong ACK c x l (bi newack), gi ny khng cn c cn na v c tr v cho b cp pht b nh gi (packet memory allocator). Hn na, vic nhn ACK ch ra kh nng gi d liu thm, v vy phng thc TcpSimpleAgent::send()c gi c gng gi thm d liu nu ca s TCP cho php. Ci t cc Timer Nh s c trnh by trong chng tip theo, cc lp timer c th phi c k tha t lp c s tru tng TimerHandler c nh ngha trong ~ns/timer-handler. Cc instance ca nhng lp con ny sau c th c s dng nh nhng timer ca cc agent khc nhau. Cc agent c th mun override phng thc Agent::timeout() (phng thc ny khng lm g c). Trong trng hp Tahoe TCP agent, hai timer c s dng: mt timer gi tr delsnd_timer_ v mt timer pht li rtx_timer_. 2.3.6.5 To mt Agent mi to mt agent mi, phi lm nhng vic sau y: 1. Quyt nh cu trc k tha ca n, v to ra cc nh ngha lp ph hp. 2. nh ngha cc phng thc recv() v timeout(). 3. nh ngha nhng lp timer cn thit no .

Cyber Pro !!! :))

25

C s mng thng tin K4X 4. nh ngha cc hm lin kt OTcl. 5. Vit m OTcl cn thit truy nhp agent (Phn 10.6.4).

2.3.7 Timer:
Cc b nh thi c ci t c trong C++ v trong OTcl. N thng c dng trong cc agent. Trong C++, dng lp c s TimerHandler x l thi gian. Trong OTcl cng c mt lp nh thi n gin Timer thao tc vi cc b nh thi. y ta quan tm mt s thao tc x l thi gian sau: $timer sched <delay> Dng mt s kin no m c th c lp lch v lp lch li s kin sau thi gian <delay>. $timer resched <delay> Tng t lnh trn. C thm cc API ca C++ $timer cancel Dng cc s kin c lp lch. $timer distroy ging cancel $timer exprire gi cho mt time-out. Tuy nhin th tc time-out phi c nh ngha trong cc lp con.

2.3.8 nh dng v header ca gi tin (packet)


Cc i tng trong lp Packet l cc n v c s cho vic trao i d liu gia cc i tng trong h thng m phng. Cc giao thc mi c th nh ngha cc header ca ring mnh hoc c th m rng header c sn vi bng vic thm vo cc trng mi. Cc loi header mi c khai bo vo trong h m phng bng cch nh ngha mt cu trc d liu C++ vi cc trng cn thit, nh ngha mt lp tnh cung cp kh nng lin kt vi OTcl, sau thay i mt s on m khi to ca h m phng ch ra a ch lch ca header mi so vi cc header khc trong packet. Khi h m phng c khi to thng qua OTcl, ngi dng c th la chn s dng mt tp con ca cc loi packet c sn, iu ny gip tit kim b nh trong qu trnh m phng. Mc nh hu ht cc loi packet u c kch hot. Vic qun l xem loi packet no ang c kch hot trong qu trnh m phng c qun l bi mt i tng qun l cc header ca packet. i tng ny cung cp mt phng thc OTcl cho php ch ra header no c s dng trong qu trnh m phng. Vic s dng mt trng trong header khng c kch hot s dn n li nghim trng (fatal) thot chng trnh. 2.3.8.1 Thm mt kiu header mi Gi s mun thm mt kiu header gi mi gi l newhdr, thc hin cc bc sau: To mt cu trc mi nh ngha cc trng d liu th (raw field - d liu to nn d liu mi), nh ngha offset_ v cc phng thc truy cp. nh ngha cc hm thnh phn cho cc trng cn thit. To ra mt lp tnh cung cp kh nng lin kt vi OTcl, thc hin bind_offset() trong hm khi to ca ca n. Son tho ~ns/tcl/lib/ns-packet.tcl cho php khun dng gi mi. 2.3.8.2 La chn cc header gi gp vo trong chng trnh gi lp Ngm nh, ns gp tt c cc header ca tt c cc giao thc c trong ns vo mi packet trong chng trnh gi lp. Vic ny dn n dung lng mi packet tng thm khong 1.9 KB!

Cyber Pro !!! :))

26

C s mng thng tin K4X Nu ch gp cc header ca cc giao thc thng thng nh IP, TCP th dung lng tng thm ch khong 100 byte. Do ch nn gp cc kiu header cn dng. gp ch cc header mong mun khi thc hin gi lp, trc ht loi b cc kiu header c gp trc khi khi to trnh gi lp. Sau gp tp cc header ch nh nh sau (v d IP v TCP): remove-all-packet-headers add-packet-header IP TCP ...... set ns [new Simulator] 2.3.8.3 Cc lp lin quan n packet C 4 lp C++ x l cc packet v cc header l: Packet, p_info, PacketHeader v PacketHeaderManager. Lp Packet m t cc kiu gi trong gi lp. Lp packet_info gi tt c cc dng text cho cc tn gi. Lp PacketHeader l lp c s cho mi header. Lp PacketHeaderManager l mt lp c dng tp hp v qun l cc header.

2.3.9 Mng LAN


c tnh ca mng LAN khc vi cc lin kt im-im. Mt mng bao gm nhiu lin kt im - im khng th hin c cc thuc tnh chia s v tng tranh ca LAN. m phng nhng thuc tnh ny, cn to ra mt kiu node mi, LanNode. Cc cu hnh v giao din cho LanNode c thc hin nh sau: 2.3.9.1 Cu hnh Tcl Giao din to v cu hnh mt LAN hi khc so vi cc lin kt im-im. mc nh, lp OTcl Simulator cung cp mt phng thc mi gi l make-lan. Cc tham s cho phng thc ny ging phng thc duplex-link, ngoi tr rng make-lan ch chp nhn mt danh sch cc node nh mt tham s n thay v 2 tham s nh trong duplex-link. Simulator instproc make-lan {nodes bw delay lltype ifqtype mactype chantype} Cc tu chn to Lan ch ra kiu ca tng lin kt (LL), hng i, tng MAC (Mac), v tng vt l (Channel). V d to ra mt mng LAN (ethernet) CSMA/CD nh sau: $ns make-lan "$n1 $n2" $bw $delay LL Queue/DropTail Mac/Csma/Cd Cu lnh trn to ra mt LAN vi kiu c bn cho tng lin kt, hng i DropTail, v CSMA/CD cho tng MAC. 2.3.9.2 Cc thnh phn ca LAN LanLink cha cc chc nng ca 3 tng thp nht trong stack mng: Link Layer (LL), Medium Access Control Layer (MAC), Physical Layer (PHY). Hnh sau, m phng stack mng m rng to gi lp ca mng LAN trong ns.

Cyber Pro !!! :))

27

C s mng thng tin K4X

Hnh 5: Gi lp mng LAN trong ns Mt packet i xung ln lt qua tng lin kt (Queue v LL), tng MAC (Mac) v tng vt l (Channel n Classifier/Mac). Tip theo packet s i ngc tr ln qua tng Mac v LL. Ti y ca stack, tng vt l bao gm hai i tng Channel v Classifier/Mac. i tng Channel m phng chia s ng truyn v cc k thut truy cp ng truyn ca bn gi. Ti pha nhn, Classifier/Mac chu trch nhim chuyn v (c th) lp cc packet ti cc i tng MAC nhn. Tu thuc vo kiu ca tng vt l, tng MAC phi cha mt tp nht nh cc chc nng nh, cm nhn sng mang (carrier sense), pht hin xung t, trnh xung t,... V cc chc nng ny nh hng ti c bn gi v bn nhn nn chng c thc hin trong mt i tng Mac. Vi bn gi, i tng Mac phi s mt giao thc truy cp ng truyn nht nh trc khi truyn packet ln channel. Vi bn nhn, tng MAC chu trch nhim chuyn packet ti tng link. Lp Channel Lp Channel m phng giao truyn cc packet ca tng vt l. Lp Channel c bn cung cp kh nng m phng xung t trn ng truyn. N cho php tng MAC thc hin cm nhn sng mang, xung t, tc nghn. Nu c nhiu cuc truyn xy ra ng thi, channel s bt c xung t. Bng vic kim tra c ny, i tng MAC c th thc hin pht hin xung t v x l n. i tng Channel ch t tn hiu busy ca n trong khong thi gian c yu cu bi i tng MAC. N cng lp lch cc gi phn pht ti cc i tng MAC ch sau thi gian truyn cng vi tr truyn lan. Lp MacClassifier Lp MacClassifier kt tha lp Classifier ci t k thut broadcast n gin. N thay i phng thc recv() nh sau: v vic lp li cc gi thng tn km, nn thng mt gi unicst s c phn loi bi a ch ch MAC macDA_ v chuyn trc tip ti i tng MAC vi a ch ny. Nu a ch ca i tng ch khng tm thy hoc nu a ch ch MAC l broadcast BCAST_ADDR, gi s c nhn bn v gi ti mi MAC trn LAN tr MAC ngun. Lp MAC

Cyber Pro !!! :))

28

C s mng thng tin K4X i tng Mac m phng cc giao thc truy cp ng truyn cn thit trong cc mi trng chia s ng truyn nh l mng khng dy, LANs, do vic truyn v gi lun i km vi nhau trong hu ht cc loi tng MAC nn i tng MAC c ci t c 2 kh nng ny. Ti bn gi, i tng Mac lm nhim v thm header MAC v truyn packet ln channel. Ti pha nhn i tng Mac nhn khng ng b cc gi t classifier ca tng vt l. Sau khi x l giao thc MAC, n chuyn gi d liu ti tng link. Lp LL (tng link) i tng LL m phng cc giao thc lin kt d liu. Nhiu giao thc c th thc hin trong lp ny nh l phn on (fragmentation) packet, ti hp (reassembly) packet, giao thc lin kt tin cy. Mt chc nng khc ca tng link l t cc a ch ch MAC trong header MAC ca packet. Cng vic ny hin ti yu cu 2 vn tch bit: tm kim a ch IP ca nt theo (nexthop-node) v tm a ch MAC ng vi a ch ny. n gin, nh x ngm nh gia cc a ch MAC v IP l tng ng 1-1. Lp LanRouter Ngm nh ch c mt i tng LanRouter cho mi LAN. N c tao ra khi mt LanNode mi c khi to. Vi mi node trn LAN, i tng LL c mt con tr ti LanRouter, do n c kh nng tm trm tip cho packet c truyn trn LAN. Packet* LL::sendto(Packet* p, Handler* h) { int nh = (lanrouter_) ? lanrouter_->next_hop(p) : -1; ... } 2.3.9.3 Routing trong LAN. Khi to mt LAN trong ns, mt nt o LAN (virtual LAN node) LanNode c to ra. LanNode cha cc i tng chia s trong LAN: Channel, Classifier/Mac v LanRouter. Vi mi nt trong LAN, mt i tng LanIface c to ra. LanIface cha mi i tng dnh ring cho mi nt: Queue, LL, Mac, v.v... LanNode ch c ngha cho gii thut chn ng, n c rt t im chung vi nt bnh thng. Mt trong nhng im chung l 2 loi nt ny chia s cng mt khng gian id nt (Node ID-space). Nu chn ng phn cp (hierarchical routing) c s dng, LanNode cng c gn mt a ch phn cp nh mi nt khc. i vi vn chn ng (tnh) ca NS, LanNode c coi nh mt nt ni vo tt c cc nt khc trong LAN. Lin kt ni gia LanNode v cc nt ca LAN cng l o (VLink), gi mc nh cho mt lin kt nh vy l , do , gi cho vic truyn t mt nt ny n mt nt khc trong LAN c tnh l 1.

2.3.10 Cu trc a ch ho trong ns


Khng gian a ch c th xem nh mt trng lin tc cc n bit, n c th l khc nhau tu mi yu cu ca vic m phng. Gi tr ngm nh ca n l 16. Gi tr cc i ca n c th t ti 32. Khng gian a ch gm 2 phn node-id v port-id. Cc bt cao c gn lm a ch nt, id_, cc bt thp hn cn li c c gn cho port-id hoc nh danh cho agent gn vi node. Trong cc bt cao, c mt bt c dng cho multicast. Khng gian a ch bao gm 32 bt, v
Cyber Pro !!! :))

29

C s mng thng tin K4X khng gian port-id (nh danh cng) bao gm 32 bt. 32 bt a ch cao dnh cho node-id, MSB cho multicast v 32 bt a ch thp cho port-id. Ngoi ra khng gian a ch cng c th t trong nh dng phn cp, bao gm nhiu mc ca phn cp a ch. 2.3.10.1 nh dng a ch ngm nh nh dng ngm nh cung cp 32 bit thp cho port-id, 1 bt cao cho multicast v 32 bt cn li cho cho node-id. Th tc t nh dng a ch trong ch ngm nh c gi trong khi khi to chng trnh gi lp nh sau: set ns [new Simulator] N cng c th c gi tng minh nh sau: $ns set-address-format def 2.3.10.2 nh dng a ch phn cp C hai la chn cho vic t mt a ch ti nh dng phn cp, ngm nh v ch nh. t phn cp ngm nh node-id trong phn cp ngm nh bao gm 3 mc vi cc bt (10 11 11) trong 3 mc .Cu hnh phn cp c th yu cu nh sau: $ns set-address-format hierarchical N t:* 32 bt cho port-id, * 32 bt cho node-id gn trong 3 mc ca phn cp cc bt (10 11 11) cho 3 mc hoc (9 11 11) nu kch hot multicast t phn cp xc nh La chn th hai cho php mt a ch phn cp, c t vi cc s xc nh ca cc mc vi s cc bt gn cho mi mc. API cho n c th nh sau: $ns set-address-format hierarchical <#n hierarchy levels><bits for level1><bits for level2> ...<bits for nthlevel> V d mt cu hnh nh sau: $ns set-address-format hierarchical 2 8 15 Trong c 2 mc phn cp c ch nh v gn 8 bt cho mc mt v 15 bt cho mc 2. 2.3.10.3 nh dng a ch node m rng Trong trng hp yu cu nhiu bt hn cho khng gian a ch, API m rng a ch c th nh sau: $ns set-address-format expanded S m rng khng gian a ch ny ti 30 bt, cung cp 22 bt cao cho node-id v 8 bt thp cho port-id. Lnh ny li thi v khng gian a ch hin nay l 32 bt a ch cho node-id v 32 bt a ch cho port-id. 2.3.10.4 M rng trng port-id N c dng khi mun m rng port-id trong s kin c yu cu gn vi mt s lng ln cc tc nhn ( agent ) ti cc node ny. N c th dng trong s lin kt vi lnh set-addresformat (vi cc tu chn khc nhau), gii thch trn. Dng rt gn ca lnh ny c dng nh sau: expend-port-field-bits<#bits for portid#>

Cyber Pro !!! :))

30

C s mng thng tin K4X expend-port-field-bits kim tra v a ra li nh sau nu yu cu kch thc cng khng th iu tit (s lng cc bt ri l khng p ng) hoc nu kch thc cng l nh hn hoc bng kch thc cng tn ti. 2.3.10.5 Li khi t nh dng a ch Cc li tr v cho c set-address-format v expend-port-field-bits nguyn thu trong cc trng hp sau: Nu s cc bt ch nh l nh hn 0. Nu v tr bt xung t (s k nhau ca cc bt trng c yu cu l khng tm thy) Nu tng s cc bt yu cu l vt qu MAXADDRSIZE_ Nu expend-port-field-bits i s bt nh hn hoc bng s bt ca kch thc cng tn ti. Nu s mc phn cp khng tng ng vi s cc bt s cc bt ch nh (cho mi level).

Phn II.Cng c hnh nh ho m phng : NAM


1.Gii thiu chung v NAM :
1.1. Tng quan
Nam l mt cng c m phng hot ng da trn Tcl/Tk dnh cho vic quan st mt cch trc quan cc vt m phng v vt d liu(Tracedata packet) gi tin trong thc t. Nguyn l thit k nam to ra mt b m phng chuyn ng c kh nng c cc tp d liu chuyn ng ln v c th m rng va v vy n c th c s dng trong cc tnh hung mng trc quan khc nhau. Nam c thit k c cc cu lnh s kin n gin t mt File Trace ln. thc hin i vi d liu hot ng ln cn phi thit lp mt lng nh thng tin c lu gi trong b nh. Cc cu lnh s kin c gi trong file v c li t File bt c khi no thy cn thit. Bc u tin s dng Nam l to ra File vt. File vt cha thng tin v Topology : Nodes, links, cng nh cc vt gi. Thng th cc File vt c to ra bi ns. i vi Ns, ngi s dng c th to cc cu hnh Topology, a ra cc thng tin, v cc vt gi s dng cc s kin vt trong ns. Tuy nhin, bt k ng dng no cng c th to ra mt File vt ca nam. Trong khi cc File vt c to ra, n c th c hot ng bi nam. Khi khi ng Nam s c File vt, to Topology, hin ca s, a ra nu cn v dng li ti thi im 0. Thng qua giao din ngi s dng, Nam cung cp iu khin thng qua nhiu yu t ca s hot ng. N thc hin li cc s kin t mt File vt ca nam (nam Trace File ) . File ny c th s rt ln khi thi gian m phng di hoc cc s kin xy ra mnh . chy nam ta lm nh sau : $nam nam_trace_file.nam In ns-2 script: Proc finish{} { exec nam nam_trace_file.nam &
Cyber Pro !!! :))

31

C s mng thng tin K4X exit

.V hnh s dng Xgraph : Da trn cc File u ra .N v da trn cc im d liu thng k ng b Chy Xgraph : $xgraph out0.tr, out1.tr geometry 800x400 In ns-2 script: Proc finish{} { exec xgraph out0.tr, out1.tr out2.tr geometry 800x400 & exit }

Cyber Pro !!! :))

32

C s mng thng tin K4X

1.2.Cc la chn dng lnh ca NAM:

Cc la chn dng lnh: -g : nh dnh hnh hc ca ca s khi ng -t : Ch nh Nam s dng tkgraph, v nh dng u vo file nam cho tkgraph -i : [ Thng tin cho la chn ny c khi khng ng] Ch ra t l (thc t) triu giy i vi t l cp nht mn hnh. -N : Ch ra tn ng dng ca v d nam. Tn ng dng ny c l sau c s dng trong ng b cng cp -c : Kch thc ln nht ca b nh cache c s dng lu tr cc i tng active khi thc hin hot ng ngc li -f : Tn ca cc File khi ng c load khi khi ng. Trong file ny, ngi dng c th nh ngha cc chc nng s c gi trong ? -a : To cc v d ring bit ca Nam -p : In ra nh dng File vt ca Nam -S : Cho php ng b hot ng X v vy d dng hn cho vic tm li ho. i vi h thng UNIX ch chy X <tracefile> l tn ca File cha d liu vt c hot ng. Nu <tracefile> khng th c, nam s c gng m <tracefile>

1.3. Giao din ngi s dng:


Khi bt u khi ng ln, vic u tin Nam lm l khi ng ca s n. Bn c nhiu hot ng chy trong cng mt v d Nam. Trn cungd ca tt c cc ca s ca Nam l mt Menu Bar. i vi ca s n ca Nam c cc Menu File v Help. Di File c mt cu lnh New to mt ns topology s dng nam editor(ang lm chc nng ny), mt cy lnh Open cho php bn m cc File vt ang tn ti, mt cu lnh WinList m ra mt ca s lit k tn ca tt c cc File vt ang c, v mt cu lnh Quit thot khi Nam. Th mc Help cha cc mn hnh gip v mt cu lnh hin ln Version v thng tin bn quyn . View menu c 4 nt : New view : To mt view mi ca cng mt hot ng. Ngi dng c th cun hay Zoom trn new view. Tt c cc view s c hot ng mt cch ng b. Show monitor checkbox : Nu c chn, s hin ln mt bng ti na di ca ca s, cc mn hnh s c hin th Show autolayout checkbox : Nu c chn, s hin ln mt bng na di ca ca s, cha cc hp input v mt nt cho vic t ng a ra cc iu chnh. Hp ny s khng c kch hot khi s dng cc lin kt layout.

Cyber Pro !!! :))

33

C s mng thng tin K4X Show annotation checkbox : Nu c chn, s hin ln mt hp danh sch ti na di ca ca s, s c s dng lit k cc ch thch trong qa trnh tng thi gian.

Di Menu Bar, c mt bar iu khin cha 6 nt, mt nhn, v mt thanh cun nh. Chng c th c nhn vo theo bt c th t no. ( << ) Rewind : Khi c nhn, hot ng s quay li t l 25 ln t l cp nht mn hnh hin thi. ( < ) Backward play : Khi c nhn, hot ng s quay li vi thi gian gim. ( Hnh vung ) Stop : Khi c nhn, hot ng s dng li. ( > ) Forward play : Khi c nhn, hot ng s chuyn n trc vi thi gian tng. ( >> ) Fast Forward : Khi c nhn, thi gian hot ng s chuyn n tc 25 ln tc cp nht mn hnh hin thi. (Biu tng ch V ) : ng ca s hot ng hin thi. Nhn thi gian: Th hin thi gian hot ng hin thi ( v d : Thi gian m phng nh trong File vt) Rate Slider : iu khin t l cp nht mn hnh. T l hin thi c hin th trong nhn trn con trt (Slider). Di thanh iu khin u tin, c Mn hin th chnh, n cha mt thanh cng c v quan st chnh vi hai thanh cun . Tt c new view c to ra bi menu Views/New view s c 3 cng c ny. Thanh cng c cha 2 nt Zoom. Nt vi mi tn ch ln l phng to, nt c mi tn xung l thu nh. Hai thanh cun c s dng m rng mn hin th hot ng. Nhn chut tri ln bt k i tng no trong khung nhn chnh s hin ra ca s thng tin. i vi cc i tng l gi tin v tc t (agent), c mt nt monitor trn ca s hin th. Nhn vo ta s thy hin ra khung mn hnh (nu n khng c ), v thm vo mt mn hnh ti i tng. i vi cc i tng l Link, s c mt nt Graph . Nhn vo nt s c mt ca s hin th, ngi s dng c th la chn gia v mt hnh vi s s dng bng thng hay v mt link mt hnh ca mt simplex edge ca Duplex Link. Views/ Show monitors : Tt c mn hnh s c thit lp. Mt mn hnh nhn nhu mt nt ln trong khung. Ch cc gi tin v Agent hin thi mi c cc mn hnh Mt mn hnh gi tin th hin : Kch thc, id, v thi gian gi. Khi gi tin n c ch, mn hnh vn , nhng s thng bo rng gi tin n_invisible. Mt mn hnh Agent th hin tn ca Agent v khi c bt k bin vt no lin quan n agent ny, chng cng c th hin lun lc . Thanh trt thi gian : Nhn ging nh mt ci thc k, vi mt con trt TIME (tag TIME) th dc theo thc. Khi ta nhn thy con trt TIME, hot ng hin thi s c th hin trong nhn thi gian trong thanh iu khin(control bar) trn. Cnh bn tri ca thanh trt th hin thi gian s kin sm nht trong file vt v cnh phi th hin thi gian tr nht. Nhn chut tri ln thc( khng phi con trt) c cng nh hng nh Rewind v Fast Forward, ph thuc v tr n chut. Khung Automatic Layout c khi l hin hoc n. Nu l hin, n s di thanh trt thi gian. N c 3 hp Input v mt nt relayout. Khi ngi dng n Enter trong hp Input, hay n vo nt Relayout , s cc tng tc s c thc hin.
Cyber Pro !!! :))

34

C s mng thng tin K4X Di cng l Hp danh sch thng bo, cc thng bo c hin th. Thng bo l mt cp (time,string), m t mt s kin xy ra ti mt thi im. Nhy p vo mt thng bo trong hp danh sch s a Nam n thi gian khi m thng bo c ghi li. Khi con tr trong hp danh sch, nhy chut phi ta s c ba la chn: Add, Delete, Info thm, xo v hin th thng bo.

1.3. Cc cu lnh bn phm:


1. <return> - Typing a <return> will pause nam if its not already paused. If nam is paused, <return> will step the animation one simulated clock tick. (If your keyboard autorepeats, holding down <return> is a goodway to slow-step through the animation.) 2. p or P - Pause but not step if paused. 3. c or C - Continue after a pause. 4. b or B - Decrease animation time for one screen update interval. 5. r or R - Rewind. 6. f or F - Fast Forward. 7. n or N - Jump to time of next event in the tracefile. 8. x or X - Undo the last rate change. 9. u or U - Undo the last time slider drag. 10. > or . Increase the granularity (speed up) by 5%. 11. < or , Decrease the granularity (slow down) by 5%. 12. <space bar> - Toggle the pause state of nam. 13. q, Q or <control-c> - Quit.

1.4. To ra cc hot ng bn ngoi t Nam :


Cc hot ng ca Nam c th c ghi v chuyn sang file Gifs hay chuyn ng MPEG. ghi li cc khung v hot ng, khi ng Nam vi File vt v thit lp ch bn mun n bt u v thm cc thng s khc (bc t l, kch c, ). Chn Record Animation t File Menu bt u ghi cc khung. Mi bc hot ng c ghi trong mt ca s th X (XWindow) gi l nam%d.xwd %d l s khung. Cc File ny c th sau c ghp li trong file chuyn ng GIFs hay MPEGs vi cc cc cng c x l thch hp. Di y l mt on Script chuyn cc File ny thnh mt File chuyn ng nh dng Gif:

Ch xwdtoppm, ppmtogif, v gifmerge khng phi ca Ns.

Cyber Pro !!! :))

35

C s mng thng tin K4X

1.5. Network Layout:


Trong Nam, Mt topology c nhn dng bi s chuyn i ca cc i tng Node. Nhng th hin topology trong mt cch c th hiu c, chng ta cn phi c k thut layout. Hin nay Nam cung cp 3 phng php Layout : Ngi s dng nhn dng layout bi cc hng ca Link. Mt hng kt ni l mt gc gia cnh v ng nm ngang, trong khong [0;2]. Trong qu trnh Layout, nam s tn trng hng ca Link . Thng thng, n s la chn mt Node tham chiu, sau thay th cc Node khc s dng cc hng v di Link. di Link c quyt nh bi tr ca Link v ln cc Node kt ni. Cch ny tt i vi cc Topology va v nh. S dng i vi cc Topology ngu nhin, chng ta c l mun Layout mt cch t ng. Mt thut ton layout ho t ng c p dng v thc hin. tng ch o ca thut ton l m hnh ho nh cc qu bng (Nodes) kt ni bi l xo (Links). Cc qu bng s y cc qu khc, trong khi l xo ni chng li vi nhau. H thng ny s hi t sau khi cc qu bng tng tc vi nhau. Trong thc t, sau mt s lng nh cc tng tc (hng chc, hng trm), hu ht cc hnh va v nh s hi t ti mt cu trc ton din. Cc hnh ln hn c th to mt kt ni t ng Layout v thc hin sp xp sao cho thu c mt Layout c th chp nhn c. o C 3 thng s ca qu trnh Layout t ng : Ca hng s lc hp dn, n iu khin lc l xo gia cc qu bng. Cr hng s lc n hi, iu khin s n hi gia cc qu bng. S lng cc tng tc l khong thi gian chy th tc AutomaticLayout o i vi Topology nh khong 10 Nod, thng s mc nh (20 30 tng tc) s cho mt th tc layout tt. Nhng vi topology ln hn, cn thn vi cc tham s. C mt cp to x,y dnh cho Layout. Chng s c s dng hin th mt topology wireles trong cc link khng phi vnh cu. S dng cch ny, cc s kin Nodes c a cc to x v y ch ra ni cc Nodes nn c t trong mt h to -Cc.

1.6. Cc i tng hot ng:


Nam hot ng s dng vic xy dng cc khi c nh ngha di y: 1. Node : Cc Node c to nn t s kin vt n trong mt File vt. N th hin mt ngun, host, router. Nam s b qua bt k mt Node no trng lp, Mt Node c ba hnh dng (trn ,vung v lc gic), nhng mi ln c to n khng th thay i hnh dn. Cc Nodes c th thay i mu trong sut qu trnh hot ng. 2. Link : Cc Links c to gia cc Node t Topology mng. Cc links trong Nam c hay links n. Vt s kin l to 2 link n v thit lp cc thng s cn thit trn chng. V vy i vi quan st ca ngui dng th tt c cc Link u l Duplex. Links c th i mu trong sut qu trnh hot ng. 3. Queue : Cc Queue cn c xy dng trong nam gia cc Node. Mt queue nam c lin kt vi ch mt ng ca duplex link. Cc Queue c trc quan nh khi sp xp cc gi tin. Cc gi tin c sp xp trn sut ng truyn, mt gc gia ng truyn v ng nm ngang c th c nhn dng trong s kin vt Queue

Cyber Pro !!! :))

36

C s mng thng tin K4X 4. Packet : Cc gi tin c trc quan ho nh mt khi vi mt mi tn. Hng ca mi tn ch chiu ca gi tin di chuyn.Cc gi tin c sp xp trong hng i c th hin nh cc hnh vung nh.Mt gi tin c th b Drop t mt hn i hay mt Link. Cc gi tin b Drop th hin nh dng cc hnh vung ri xung v bin mt cui mnh hnh. Khng may l cc thit k ca Nam i vi cc gi tin b Drop khng th hin trong khi hot ng quay lui. 5. Agent : Cc Agents c s dng phn bit cc giao thc t Node. Chng lun lin kt vi cc nodes. Mt Agent c mt tn lm nh dng duy nht cho n. N th hin nh mt hnh vung vi tn trong v c v cnh node m n lin kt ti.

2. NAM TRACE
V File vt (File trace) chng ta gii thiu qua trn, by gi chng ta s i su vo tm hiu file vt ca NAM (Nam Trace)

2.1.nh dng Nam Trace:


Lp Trace trong C++ s dng trong vic tm vt ca NS nay c s dng cho vic tm vt ca Nam. Phng thc Trace::format() nh ngha nh dng nam s ng trong cc File vt ca nam c s dng cho s hin th ca cc m phng Ns. Nu macro NAM_TRACE c nh ngha (mc nh c nh ngha trong trace.h), th cc m sau s c thc hin trong phn hm Trace::format if (namChan_ != 0) sprintf(nwrk_, "%c -t "TIME_FORMAT" -s %d -d %d -p %s -e %d -c %d -i %d -a %d -x %s.%s %s.%s %d %s %s", tt, Scheduler::instance().clock(), s, d, name, th->size(), iph->flowid(), th->uid(), iph->flowid(), src_nodeaddr, src_portaddr, dst_nodeaddr, dst_portaddr, seqno,flags,sname); Mi File Nam trace c mt nh dng c bn. Mi dng l mt s kin Nam. K t u tin trn dng nh ngha kiu s kin v c theo sau bi vi c c thit lp la chn trn s kin . Mi s kin c kt thc bng mt dng k t mi. <event-type> -t <time> <more flags>...

Cyber Pro !!! :))

37

C s mng thng tin K4X Da trn cc kiu s kin c cc kiu c khc nhau theo c thi gian. C 2 on trn File , Cc s kin cu hnh khi to tnh v cc s kin ng. Tt c s kin vi t* trong chng l cc s kin cu hnh v nn l bt u ca File. Mt iu ch rng Nam c th c dn file trace t mt dng cho php s dng cc ng dng thi gian thc. (Xem Using Stream with Realtime Applications)

2.2. Cc s kin khi to:


Phn u ca File vt cha cc thng tin khi to. Tt c cc s kin khi to u bt u bng c -t* . iu ny ni cho Nam bit rng s kin ny cn phn tch trc khi bt c mt hnh ng no xy ra. Version : nh ngha Nam version khi hin th File Trace: V -t <time> -v <version> -a <attr> Thng ch c mt chui Version trong Tracefile c a ra, v n thng l dng u tin ca File. V d : V -t * -v 1.0a5 -a 0 C -v 1.0a5 ni Nam bit rng l Script yu cu Version ca Nam > 1.0a5. Wireless : Nu bn mun s dng Node Wireless trong Nam bn cn khi to s kin wireless. W -t * -x 600 -y 600 Cho chng ta bit c kch thc ca layout i vi Wireless thc s. x : chiu rng ; -y : chiu cao. Phn lp : Thng tin a ch phn lp c nh ngha bi : A -t <time> -n <levels> -o <address-space size> -c <mcastshift> -a <mcastmask> -h <nth level> -m <mask in nth level> -s <shift in nth level> Vt ny cho chng ta ni dung ca cc lp, nu a ch phn lp c s dng trong m phng . - C -n <levels> ch ra tng s cc tng phn lp, 1 i vi a ch flat, 2 i vi a ch phn lp lp 2. - C -o <address-space size> cho bit tng s bits c s dng i vi a ch flat. - C -h <nth level> ch ra mc ca phn lp a ch. - C -m <mask> v -s <shift> ch ra mt n a ch v bit dch chuyn ca lp trong phn lp a ch. V d : A -t * -n 3 -p 0 -o 0xffffffff -c 31 -a 1 A -t * -h 1 -m 1023 -s 22 A -t * -h 2 -m 2047 -s 11 A -t * -h 3 -m 2047 -s 0 Hp nhp bng mu (Color Table Entry) : Ta c th xy dng cc hp nhp bng mu s dng: c -t <time> -i <color id> -n <color name> Nam cho php lin quan mt mt gia mu v s nguyn. y l iu ht sc hu ch trong cc gi tin mu. Dng id ca mt gi tin c s dng vi mu ca gi tin tng ng

Cyber Pro !!! :))

38

C s mng thng tin K4X vi bng mu. Ch rng tn mu nn l mt trong cc tn trong c s d liu mu X11(user/X11/lib/rgb.txt)

2.3. Nodes:
Vt ca Nam nh ngha trng thi Node : n -t <time> -a <src-addr> -s <src-id> -S <state> -v <shape> -c <color> -i <l-color> -o <color> - n nh ngha trng thi Node - C -t ch thi gian v -a , -s ch a ch v id ca Node - -S cho bit trng thi truyn ca Node. Cc gi tr truyn trng thi tt l: + UP, DOWN ch ra li v phc hi Node + COLOR ch ra s thay i mu ca Node. Nu COLOR c a ra, -c <color> cho ta bit gi tr mu mi. Cng nh vy -o <color> cho ta tm li vt c th phc hi mu c ca Node + DLABEL thm nhn vo Node. Nu DLABEL c a ra, -l <old-label> -L <new-label> ch nhn c v nhn mi. Shape cho ta hnh dng ca Node. Mu ca Node c th nhn dng thng qua c -i - v l hnh dng ca Node. Cc gi tr c th l: + Trn + Hp + Lc gic V d: n -t * -a 4 -s 4 -S UP -v circle -c tan -i tan nh ngha mt Node vi a ch v Id l 4 hnh dng trn , mu l nu vng(tan) v nhn ca i l mu nu vng

2.4. Links :
Nam trace i vi cc trng thi link c cho bi : l -t <time> -s <src> -d <dst> -S <state> -c <color> -o orientation -r <bw> -D <delay> ,<state> v <color> ch cng mt trng thi(v cng mt nh dng) nh m t trn trong phn cc vt trng thi Node. C -o cho ta cc hng ca Link. Cc gi tr c th l : _ + up + down + right + left + up-right + down-right + up-left + down-left + angle between 0 and 2pi C -r v D cho ta bng thng (Mb) v tr (ms) . V d: l -t * -s 0 -d 1 -S UP -r 1500000 -D 0.01 -c black -o right

Cyber Pro !!! :))

39

C s mng thng tin K4X

2.5. Queues:
Cc trng thi Queue ca vt nam : q -t <time> -s <src> -d <dst> -a <attr> Queue c hin th trong Nam nh mt ng thng vi cc gi (cc hnh vung nh) c ng gi. Trong cc s kin vt Queue, c -a ch ra hng ca ng Queue (gc gia ng Queue v ng nm ngang, theo chiu kim ng h.) V d : Dng ch mt queue pht trin theo chiu dc tng ln vi mn hnh (0.5 c ngha l mt gc so vi ng nm ngang l pi/2) q -t * -s 0 -d 1 -a 0.5

2.6. Cc gi tin: (Packets)


Khi mt dng mt t mt gi tin, s kin c th l +(tng) ; -(gim); r(nhn); d(b) ; h(bc). <type> -t <time> -e <extent> -s <source id> -d <destination id> -c <conv> -i <id> Trong , Type l mt trong cc kiu sau: + h Hop : Gi tin bt u c truyn trn Link t ngun ti ch v qua next hop + r receive : Gi tin kt thc truyn v bt u c nhn ti ch + d Drop : Gi tin b b t hng i hay Link t ngun ti ch. Drop y c ngha l khng phn bit gia Drop trn Queue hay Drop trn Link. iu ny c quyt nh bi Drop time + Enter queue : Gi tin vo hng i t ngun ti ch + Leave queue : Gi tin ra khi hng i t ngun ti ch. Cc c khc v cc ngha : + -t <time> l thi gian s kin hot ng + -s<source id> Node khi to. + -d<destination id> Node ch + -p<pkt-type> l tn m t ca kiu gi tin quan st c + -e<extent> l kichs thc ca gi tin (bytes) + -c<conv> l conversation id v flow-id ca phin + -i<id> l id ca gi tin trong conversation + -a<attr> l thuc tnh gi tin, c s dng nh mu ca id + -x<src-na.pa><dst-sa.na><seq><flags><sname> c chuyn t File vt ca Ns v n cho Node ngun, ch v cc a ch cng, sequence number, cc c v cc kiu thng ip. V d: -x {0.1 -2147483648.0 -1 ----- SRM_SESS} Cho bit mt thng ip SRM c gi t node 0 (port 1)

Cyber Pro !!! :))

40

C s mng thng tin K4X Cc c thm vo cho vi giao thc: + -P <packet type> cho ta mt chui ASCII ch r mt du phy phn bit danh sch cc kiu gi tin. Di y l mt vi gi tr : o TCP Mt gi tin TCP. o ACK To ACK. o NACK To mt b ACK. o SRM Gi tin d liu SRM. + -n <sequence number> Cho ta th t ca gi tin

2.7. nh du Node :
nh du Node c t mu tm cc Node hnh trn, hnh hp hay cc hnh lc gic. Chng c to bi : m -t <time> -n <mark name> -s <node> -c <color> -h <shape> -o <color> v c xo bi : m -t <time> -n <mark name> -s <node> -X Ch l mi ln to, mt Node nh du khng th thay i hnh dng ca n. Mt vt Nam th hin nh du Node l : m -t 4 -s 0 -n m1 -c blue -h circle ch ra node 0 uc nh du vi hnh trn xanh ti thi im 1.4ms. Tn ca du l m1.

2.8. Tm vt Agent: (Agent Tracing )


Cc s kin vt Agent c dng hin th trng thi giao thc. Chng lun c lin kt vi cc Nodes. Mt s kin Agent c mt tn, vi mt nh danh duy nht cho agent. Mt Agent c th hin nh mt hnh vung vi tn trong , v mt ng Link gia n v Node. Cc s kin Agent c xy dng s dng cc nh dng sau y: a -t <time> -n <agent name> -s <src> Bi v trong ns , cc Agent c l c nh vo trong Node, mt Agent c l c xo trong Nam vi cu lnh: a -t <time> -n <agent name> -s <src> -X V d, Dng di to mt agent tn l srm(50 ni vi Node 5 ti thi im 0 a -t 0.00000000000000000 -s 5 -n srm(5)

2.9. Tm vt bin (Variable Tracing):


hin th cc bin trng thi lien quan ti cc agent protocol, chng ta s dng cc s kin vt. Hin ti chng ta cho php mt c tnh hin th mt bin n gin, , mt bin vi mt bin n. Ch rng bin n gin c coi nh chui (khng k khong trng). Mi c tnh c yu cu lin quan ti Agent. Sau , n c th thm hay thay i bt c khi no sau khi agent ca n c to ra. Dng vt to mt c tnh : f -t <time> -s <src> -a <agentname> -T <type> -n <varname> -v <value> -o <prev value> C <Type> l : + v vi bin n gin + l i vi danh sch + s i vi b dng thi gian + u thi gian khi to b m thi gian
Cyber Pro !!! :))

41

C s mng thng tin K4X + d b b m thi gian. V d: f -t 0.00000000000000000 -s 1 -n C1_ -a srm(1) -v 2.25000 -T v Cc c tnh xo c s dng: f -t <time> -a <agent name> -n <var name> -o <prev value> -X

Phn III : Cc bi ton m phng


1. M phng cc gi tin UDP/TCP
1.1 UDP Agent
UDP agent c thc hin trong file udp.{cc, h}. Mt UDP agent cho php d liu trong mt kch c bin thin ly t mt ng dng v phn on d liu nu cn.Cc gi tin UDP cng cha mt s tun t tng v mt nhn thi gian RTP mc d cc gi tin UDP thc t khng cha chng, s tun t ny khng t lm cc overhead gi lp v d dng i vi s phn tch file trace hay gi lp cc ng dng da trn UDP.Kch c phn on ti a mc nh (MSS) cho cc UDP agent l 1000 byte: Agent/UDP set packetSize_ 1000 ; # max segment size

Cc ng dng c th truy cp cc UDP agent thng qua hm sendmsg() trong C++ hay phng thc sendmsg trong OTcl, Sau y l v d cch thc mt UDP agent c th wocj s dng trong mt chng trnh, y b khi to lu lng CBR khi to ti thi gian 1.0,khi bt u gi nh k hm UDP agent sendmsg(). set ns [new Simulator] set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 5Mb 2ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 $udp0 set packetSize_ 536 ;# set MSS to 536 bytes set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 1.0 "$cbr0 start"

1.1.2 Gii thch cc lnh:


Cc lnh sau dng ci t cc UDP agent trong kch bn gi lp: set udp0 [new Agent/UDP] : $ns_ attach-agent <node> <agent> : #To mt UDP agent. #Gn <agent> vo <node>.

Cyber Pro !!! :))

42

C s mng thng tin K4X $traffic-gen attach-agent <agent> : #y l mt phng thc lp Application/Traffic/<traffictype> c kt ni b khi to lu lng ti <agent>. V d :nu ta mun thit lp mt lung lu lng CBR cho udp agent, udp1, ta s dng lnh set cbr1 [new Application/Traffic/CBR] $cbr1 attach-agent $udp1 $ns_ connect <src-agent> <dst-agent> : Lnh ny s thit lp mt kt ni u cui gia hai agent ( lp transport ). $udp set packetSize_ <pktsize> $udp set dst_addr_ <address> $udp set dst_port_ <portnum> $udp set class_ <class-type> $udp set ttl_ <time-to-live> .....

1.2. TCP Agents


C hai loi TCP agent chnh l agent mt chiu v hai chiu.Tc t mt chiu c chia nh hn thnh cc tp hp bn gi TCP (tun theo cc cng ngh iu khin li v chng tc nghn khc nhau) v bn nhn (sinks).Cc tc t hai chiu i xng trong cm nhn, m t c bn gi v bn nhn. Cc agent gi TCP mt chiu hin c h tr l : Agent/TCP - a tahoe TCP sender Agent/TCP/Reno - a Reno TCP sender Agent/TCP/Newreno - Reno with a modification Agent/TCP/Sack1 - TCP with selective repeat (follows RFC2018) Agent/TCP/Vegas - TCP Vegas Agent/TCP/Fack - Reno TCP with forward acknowledgment The one-way TCP receiving agents currently supported are: Agent/TCPSink - TCP sink with one ACK per packet Agent/TCPSink/DelAck - TCP sink with configurable delay per ACK Agent/TCPSink/Sack1 - selective ACK sink (follows RFC2018) Agent/TCPSink/Sack1/DelAck - Sack1 with DelAck Bn gi th nghim hai chiu hin h tr ch mt dng Reno ca TCP: Agent/TCP/FullTcp Sau y gm ba phn: Phn I l nhn tng quan v cc v d cu hnh TCP c bn send/sink agents (sink khng cn cu hnh). Phn hai m t bn trong ca tc t gi , v phn cui l m t m rng cc loi agent khc.

1.2.1. TCP Sender mt chiu


B gi lp h tr nhiu phin bn ca mt b gi TCP.Cc i tng ny c gng bm st cch iu khin li v tc nghn TCP,nhng khng c nh s thc thi TCP trong thc

Cyber Pro !!! :))

43

C s mng thng tin K4X t.Chng khng bao gm qung b ca s ng, chng thc hin s phn on v tnh ton s ACK trong n v gi tn, khng c kt ni SYN/FIN v khng c s chuyn d liu .

1.2.1.1 TCP Sender c bn (Tahoe TCP)


Tc t TCP Tahoe Agent/TCP thc hin iu khin tc nghn v c lng thi gian quay vng - round-trip-time tng t nh phin bn TCP vi 4.3BSD Tahoe UNX ca UC Berkeley.Ca s tc nghn c tng bi mt gi tin cho mi ACK mi nhn c trong khi khi ng chm(khi cwnd_<ssthresh_) hay khi chng tc nghn(khi cwnd_>=ssthresh_) Responses to Congestion : Tahoe TCP cho rng mt gi tin b mt (do tc nghn) khi thc hin NUMDUPACKS (nh ngha trong file tcp.h,) sao li cc gi tin ACK, hay khi b m truyn li ht hiu lc.Ni cch khc, Tahoe TCP tc ng tr li bi thit lp ssthresh_ ti mt na kch c ca s hin ti(nh nht ca cwnd_ v window_) hay 2, ci no ln hn.N s khi to gi tr cwnd_tr v gi tr ca windowInit_. y l nguyn nhn in hnh lm cho TCP bt slow-start. Round-Trip Time Estimation hay RTO Timeout Selection: Bn bin c dng c lng thi gian quay vng v thit lp b m truyn li: rtt_, srtt_, rttvar_, tcpTick_, v backoff_. TCP khi to rttvar_ l 3/tcpTick_ v backoff_ l 1.Khi b m truyn li c thit lp, thi gian timeout ca n oc thit lp ti thi gian hin ti cng thm max(bt(a+4v+1),64) giy, vi b l gi tr ca backoff_ hin ti, t l gi tr ca tcpTick_, a l gi r ca srtt_v v l gi tr ca rttvar_. Ccmu th thi gian quay vng RTT Round-trip time vi cc ACK mi c tnh ton vi s khc nhau ca thi gian hin hnh v trng time echo trong gi tin ACK.Khi mu th u tin c to ra, gi tr ca n c dng l gi tr khi to ca srtt_. Mt na ca mu th u tin c dng nh gi tr khi to ca rttvar_. Vi cc mu th tun t tip theo, gi tr c cp nht nh sau: 7 1 Srtt= srtt + sample 8 8 3 1 Rttvar= rtt var + sample srtt 4 4

1.2.1.2 Cu hnh
Chy mt b gi lp TCP cn phi to ra v cu hnh agent, gn vi mt ngun d liu cp ng dng (mt b khi to lu lng ), v khi ng chng.

1.2.1.3 Cu hnh n gin


To Agent set ns [new Simulator] ; # preamble initialization set node1 [$ns node] ; #agent to reside on this node set node2 [$ns node] ; #agent to reside on this node set tcp1 [$ns create-connection TCP $node1 TCPSink $node2 42] $tcp set window_ 50 ; # configure the TCP agent set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns at 0.0 "$ftp start" V d ny gii thch dng b gi lp xy dng chc nng to kt ni, node ngun, agent tc v c to ra v ID lung c dng trn kt ni.Chc nng ny c thc hin bng cch
Cyber Pro !!! :))

44

C s mng thng tin K4X to hai agent, thit lp trng ID lung flow ID trong cc agent, gn ngun v cc agent ch ti cc node tng ng, sau hon thnh kt ni (thit lp ngun v cc cng, a ch ch thch hp).Gi tr tr v ca hm ny l tn ca agent ngun c to ra. TCP Data Source : l TCP agent khng to ra bt c d liu ng dng no trn bn thn n, thay vo ngi s dng c th kt ni cc module sinh lu lng ti TCP agent to ra d liu.Hai ng dng thng c dng cho TCP: FTP v Telnet. FTP minh ha truyn mt lng ln d liu v telnet chn ngu nhin kch c truyn ca n t tcplib (file tcplib-telnet.cc).

1.2.1.4 Cc tham s cu hnh khc


Ngoi cc tham s window_ c lit k trn, TCP agent h tr cc bin cu hnh,, mi bin c m t trong mc nh l mt bin lp v bin instance.Vic thay i bin lp lm thay i gi tr mc nh i vi tt c cc agent c to ra tun t.Vic hay i bin instance ca agent c bit ch nh hng gi tr wocj dng bi agent .V d: Agent/TCP set window_ 100 ; $tcp set window_ 2.0 ; Tham s mc nh ca mi TCP agent l: Agent/TCP set window_ 20 ; Agent/TCP set windowInit_ 1 ; Agent/TCP set windowOption_ 1 ; Agent/TCP set windowConstant_ 4 ; Agent/TCP set windowThresh_ 0.002 ; Agent/TCP set overhead_ 0 ; Agent/TCP set ecn_ 0 ; Agent/TCP set packetSize_ 1000 ; Agent/TCP set bugFix_ true ; Agent/TCP set slow_start_restart_ true ; Agent/TCP set tcpTick_ 0.1 ; NONSTANDARD) Agent/TCP set maxrto_ 64 ; Agent/TCP set dupacks_ 0 ; Agent/TCP set ack_ 0 ; Agent/TCP set cwnd_ 0 ; Agent/TCP set awnd_ 0 ; Agent/TCP set ssthresh_ 0 ; Agent/TCP set rtt_ 0 ; Agent/TCP set srtt_ 0 ; Agent/TCP set rttvar_ 0 ; Agent/TCP set backoff_ 0 ; Agent/TCP set maxseq_ 0 ; # Changes the class variable # Changes window_ for the $tcp object only # max bound on window size # initial/reset value of cwnd # cong avoid algorithm (1: standard) # used only when windowOption != 1 # used in computing averaged window # !=0 adds random time between sends # TCP should react to ecn bit # packet size used by sender (bytes) # see explanation # see explanation # timer granulatiry in sec (.1 # bound on RTO (seconds) # duplicate ACK counter # highest ACK received # congestion window (packets) # averaged cwnd (experimental) # slow-stat threshold (packets) # rtt sample # smoothed (averaged) rtt # mean deviation of rtt samples # current RTO backoff factor # max (packet) seq number sent

is

Vi nhiu b gi lp, mt s ccc tham s cu hnh c yu cu thay i, thng l : window_ v packetSize_. Window_ rng buc window TCP ,v wocj coi nh ng vai tr ca ca s c qung b bn nhn trong th gii TCP thc(mc d n vn c nh).Kch c gi tin mang chc nng ging nh kch c MMS trong th gii TCP thc.Thay i cc tham s ny c

Cyber Pro !!! :))

45

C s mng thng tin K4X th c mt nh hng su sc ti cch thc hin ca TCP.Tng qut, cc TCP vi kch c gi tin, ca s ln hn v thi gian quay vng nh hn (mt kt qu ca t p v tc nghn) s lm linh hat hn trong vic ginh c bng thng mng.

1.2.1.5 One-Way TCP Sender khc


Reno TCP Reno TCP agent ng t nh Tahoe TCP agent, ngoi tr n bao gm fast recovery,vi ca s tc nghn hin ti c tng ln bi s cc bn sao ACK m TCP sender nhn c trwocs khi nhn mt ACK mi.Mt ACK mi tc l ACK vi gi tr cao hn so vi gi tr cao nht trc .Thm vo , Reno TCP agent khng quay v slow-start trong qu trnh truyn li nhanh.Hn na, n gim tp hp ca s tc nghn xung mt na v khi to li ssthresh_ khp vi gi tr ny. Newreno TCP c da trn Reno TCP agent, nhng thay i hot ng khi nhn cc ACK mi, thot trng thi phc hi nhanh - fast recovery,bn gi phib nhn mt ACK vi s sequence cao nht gi i.Nh vy, cc partial ACK mi (chng c xem nh cc ACK mi nhng khng phi l mt ACK vi d liu tn ti) khng lm gim ca s (v c th a n mt s tr hon, c tnh ca Reno). Sack TCP thc hin lp li c chn lc, da trn cc ACK c cung cp bi bn nhn. Fack TCP Thc hin cc forward ACK TCP, l s bin i ca Sack TCP .

1.2.2 TCP Receivers (sinks)


Bn gi TCP wocj m t trn miu t bn gi d liu mt chiu, chng phi tng ng vi mt i tng TCP sink

1.2.2.1 TCP Sink c bn


i tng TCP sink (Agent/TCPSink) c trch nhim gi tr v cc ACK ti i tng ngun TCP tng ng.N to ra mt ACK vi mi gi tin nhn c.Kch c cc ACK c th c cu hnh Vic to v cu hnh i tng TCP sink thng c thc hin t ng bi mt th vin gi. Cc tham s cu hnh Agent/TCPSink set packetSize_ 40

1.2.2.2 Delayed-ACK TCP Sink


Mt i tng delayed-ACK sink (Agent/Agent/TCPSink/DelAck) c th dng m phng mt TCP receiver m cc ACK nhn t hn mt ln trn mt gi tin.i tng ny cha mt bin rng buc interval_ l s giy i gia cc ACK.Delayed ACK sink thc hin mt ch ACK linh hot nh ch cc ACK hp l l b tr.Cc gi tin khng hp l ngay lp tc s sinh ra ACK Tham s cu hnh Agent/TCPSink/DelAck set interval_ 100ms

1.2.2.3 Sack TCP Sink


Selective-acknowledgment TCP sink (Agent/TCPSink/Sack1) thc hin m hnh sinh SACK sau nh ngha SACK trong chun RFC 2018.i tng ny bao gm bin rng buc maxSackBlocks_ l s lng cc i cc khi thng tin trong mt ACK c th dng rong vic nm gi thng tin SACK.Gi tr mc nh ca bin ny l 3, ph hp vi mong mun dng SACK vi RTTM (RFC 2018, section 3). Delayed v selective ACKs cng c thc hin bi mt i tng loi Agent/TCPSink/Sack1/DelAck.
Cyber Pro !!! :))

46

C s mng thng tin K4X Tham s cu hnh: Agent/TCPSink set maxSackBlocks_ 3

1.2.3 Cc TCP Agent hai chiu (FullTcp)


i tng Agent/TCP/FullTcp c thm vo b TCP agent wocj hx tr cho vic m phng v vn ang pht trin.C s khc nhau gia cc agent ny nhng dng cung mt c ch.Chng khc nhau cc im sau: - Cc kt ni c th c thit lp v ngt - town down (Cc gi tin SYN/FIN c trao i) - H tr truyn d liu hai chiu - Cc s tun t - sequence number trong cc byte ng hn l cc gi tin S sinh ra cc gi tin SYN (v cc ACK ca chng) c th c th c quan trng ti hn trong vic c gng t ti m hnh thc t khi dng nhiu s truyn d liu rt ngnPhin bn ny ca TCP hin c mc nh gi d liu trn cc phn on th ba ca mt bt tay 3 ln u tin, c th hi khc so vi m hnh TCP thc t.Mt kt ni TCP in hnh c thc in vi vic kch hot mt opener gi mt SYN, opener th ng tng ng vi mt SYN+ACK, opener ch ng tng ng vi mt ACK, v sau mt thi gian sau vic gi phn on u tin vi d liu (tng ng vi vit ng dng u tin ).Do phin bn ny ca TCP gi d liu sm hn so vi loi in hnh thc hin.TCP ny c th c cu hnh gi d liu trn phn on SYN khi to.Tng lai FullTCP c th bao gm vic diu chnh gi phn on d liu u tin sau , v c th thc hin chc nng T/TCP Hin ti FullTCP ch thc hin vi iu khin tc nghn Reno, v cui cng n c th c mt di y ca cc thut ton iu khin tcnghn(nh Tahoe, SACK, Vegas, etc.).

1.2.3.1 Cu hnh c bn
Chy mt m phng Full TCP i hi to v cu hnh agent, gn vo mt ngun d liu cp ng dng(mt traffic generator), v khi to agent cng nh traffic generator. To Agent # set up connection (do not use "create-connection" method because # we need a handle on the sink object) set src [new Agent/TCP/FullTcp] ; # create agent set sink [new Agent/TCP/FullTcp] ; # create agent $ns_ attach-agent $node_(s1) $src ; # bind src to node $ns_ attach-agent $node_(k1) $sink ; # bind sink to node $src set fid_ 0 ; # set flow ID field $sink set fid_ 0 ; # set flow ID field $ns_ connect $src $sink ; # active connection src to sink # set up TCP-level connections $sink listen ; is $src set window_ 100; # will figure out who its peer

Vic to ra FullTcp agent tng t nh cc agent khc, nhng sink c to ra ti trng thi listening bi phng thc listen.Do bn nhn c yu cu ph hp vi cuc gi, vic to kt ni cuc gi trn c th s khng c dng.
Cyber Pro !!! :))

47

C s mng thng tin K4X

Agent/TCP/FullTcp set segsperack_ 1 ; Agent/TCP/FullTcp set segsize_ 536 ; Agent/TCP/FullTcp set tcprexmtthresh_ 3 ; Agent/TCP/FullTcp set iss_ 0 ; Agent/TCP/FullTcp set nodelay_ false ; Agent/TCP/FullTcp set data_on_syn_ false ; Agent/TCP/FullTcp set dupseg_fix_ true ; Agent/TCP/FullTcp set dupack_reset_ false ; Agent/TCP/FullTcp set interval_ 0.1 ;

# segs received before generating ACK # segment size (MSS size for bulk xfers) # dupACKs thresh to trigger fast rexmt # initial send sequence number # disable sender-side Nagle algorithm # send data on initial SYN? # avoid fast rxt due to dup segs+acks # reset dupACK ctr on !0 len data segs containing dup ACKs # as in TCP above, (100ms is non-std)

1.2.3.2 BayFullTcp
Mt s thc hin khc ca TCP hai chiu c gi l BayFullTcp. S khc nhau c bn gia BayFullTcp v FullTcp nh sau: - BayTcp h tr m hnh ng dng client-server trong khi FullTcp khng gi nh v lp ng dng ca n.. - Giao din ng dng tcp khc nhau - FullTcp h tr ack cc b (BayTcp th khng). - FullTcp h tr cc dng khc ca tcp (tahoe, reno etc) cn baytcp th khng - S thc hin ca c hai khc nhau tp cc API .
_

1.2.4 Kin trc bn trong


TCP agent c bn (class Agent/TCP) c xy dng nh mt tp cc chu trnh gi gi tin, x l ACK, qun l vic gi ca s v nm bt thi gian timeout..Tng qut, mi chu trnh c th uc xc nh bi mt chc nng cng tn trong lp xut pht..

The TCP header: TCP header wocj nh ngha trong cu trc hdr_tcp trong file ~ns/tcp.h.
Agent c bn ch dng cc tp con ca cc trng sau ts_ /* current time packet was sent from source */ ts_echo_ /* for ACKs: timestamp field from packet associated with this ACK */ seqno_ /* sequence number for this data segment or ACK (Note: overloading!) */ reason_ /* set by sender when (re)transmitting to trace reason for send */

Cc hm gi d liu: tng quan,TCP khng bao gi thc s g d liu, n ch thit lp kch


c cc gi tin. + send_much(force, reason, maxburst) Hm ny c gng gi nhiu gi tin n mc ca s truyn hin hnh cho php.N cng gi vic theo di bao nhiu gi tin c gi i, v gii hn l maxburst. + output(seqno, reason) gi mt gi tin vi s tun t v cp nht bin s tun t gi i cc i (maxseq_) nm bt s tun t nu n qu ln.Hm ny cng ch nh cc trng khc nhau trong TCP header (sequence number, timestamp, reason for transmission). Hm ny cng thit lp mt b m truyn li nu bn no ang ch i

Cc chc nng qun l ca s:

Cyber Pro !!! :))

48

C s mng thng tin K4X - window().N tr v ti thiu ca ca s tc nghn v bin wnd_, m t ca s qung b ca bn nhn. - opencwnd() - Chc nng ny m ca s tc nghn c gi khi mt ACK mi n.Trong ch slow-start,hm ny him khi gia tng cwnd_ bi mi ACK c nhnKhi trnh tc nghn, cu hnh chun gia tng cwnd_ bi s nghch o ca n.Ca s khc tng la chn c h tr trong khi trnh tc nghn. - closecwnd(int how) Hm ny gim ca s tc nghn, c th c gi bng nhiu cch: Khi thc hin truyn li nhanh fast retransmit, da vo b m ht hiu lc hay khia bo tc nghn.(bit ECN c thit lp ).i s ca n cho bit cch ca s tc nghn cgim.Gi tr 0 c dng truyn li timeout v truyn nhanh trong Tahoe TCP. l nguyn nhn in hnh TCP thit lp slow-start v gim ssthresh_ xung mt na ca s hin ti.Gi tr 1 c dng bi Reno TCP cho qu trnh phc hi nhanh -fast recovery (ngn nga vic tr v slow-start).Gi tr 2 c dng gim ca s da vo ECN indication. N s thit lp li ca s tc nghn v gi tr khi to(Thng gy ra slow-start),nhng khng lm thay i ssthresh_.

Cc hm x l ACK
+ recv() Hm ny l ng tip nhn chnh cc ACK.Ch rng ch mt chiu ca lung d liu c dng, chc nng ny ch c gi vi cc gi tin ACK thun(khng c d liu).Hm ny cha cc nhn thi gian t ACK trong ts_peer_, v kim tra s c mt ca bit ECN (gim ca s gi nu cn).Nu ACK l mt ACK mi,n gi newack(), v im tra nu l bn sao ca ACK trc.Nu ng, n s truyn li nhanh bng cch ng ca s, thit lp li b m truyn li v gi li gi tin bng cch gi hm send_. + newack() Hm ny x l mt ACK mi(cha mt s ACK cao hn so vi trc), hm ny thit lp b m truyn li mi bng vic gi li newtimer(), cp nht c lng RTT bng cch gi rtt_update, v cp nht bin ACK cui cng v cao nht. Cc hm qun l b m truyn li:Cc hm ny c hai mc ch:c lng thi gian quay vng v thit lp b m truyn li.. rtt_init hm ny khi to srtt_ v rtt_ v 0, thit lp rttvar_ v 3/tcptick_ + rtt_timeout Hm ny a ra gi tr timeout , c th c dng lp k hoch cho b m truyn li tip theo.N s tnh ton da vo c lng hin ti v cch thc v sai s ca thi gian quay vng + rtt_update Hm ny to mt i s o lng RTT v tnh trung bnh khi chy v wocs lng sai s . + reset_rtx_timer Hm ny c gi trong qu trnh truyn li nhanh hay trong qu trnh timeout.N thit lp mt b m truyn li bng vic gi set_rtx_timer v nu c gi khi timeout cng gi rtt_backoff. + rtt_backoff Hm ny backs off b m truyn li + newtimer Hm ny ch c gi khi mt ACK mi n.

1.2.5 Tracing TCP Dynamics


Cch thc hin ca TCP thung c tin hnh bng cch xy dng mt khe sequence number-vs-time .in hnh mt trace c thc hin bi vic kch hot tracing trn mt link trn cc gi tin TCP s qua.Hai phng thc trace c h tr : Mt mc nh dng cho tracing cc TCP agent v mt m rng cho cc FullTCP.

31.6 One-Way Trace TCP Trace Dynamics


Cyber Pro !!! :))

49

C s mng thng tin K4X Cc gi tin TCP oc to ra bi mt trong cc TCP agent mt chiu v c ch l mt TCP sink agent c mt traced link s to ra mt file trace c dng: + 0.94176 2 3 tcp 1000 ------ 0 0.0 3.0 25 40 + 0.94276 2 3 tcp 1000 ------ 0 0.0 3.0 26 41 d 0.94276 2 3 tcp 1000 ------ 0 0.0 3.0 26 41 + 0.95072 2 0 ack 40 ------ 0 3.0 0.0 14 29 - 0.95072 2 0 ack 40 ------ 0 3.0 0.0 14 29 - 0.95176 2 3 tcp 1000 ------ 0 0.0 3.0 21 36 + 0.95176 2 3 tcp 1000 ------ 0 0.0 3.0 27 42

1.2.6. Tng quan v cc lnh


Sau y l danh sch cc lnh c dng thit lp, vn hnh lung TCP cho m phng set tcp0 [new Agent/TCP]: To mt instance ca TCP agent. C nhiu loi TCP-sender v TCPreceiver ( sink) agent wocj thc hin trn NS. Cc TCP-sender c th l: Agent/TCP, Agent/TCP/Reno,Agent/TCP/Newreno, Agent/TCP/Sack1, Agent/TCP/Vegas, Agent/TCP/Fack. Cc TCP-receiver hin nay c th l : Agent/TCPSink, Agent/TCPSink/DelAck, Agent/TCPSink/Sack1,Agent/TCPSink/Sack1/DelAck. C TCP hai chiu c gi l Agent/TCP/FullTcp. Cc tham s cu hnh cho lung TCP c thit lp nh sau: $tcp set window_ <wnd-size> : Sau y l tht lp kt ni TCP n gin: set tcp [new Agent/TCP] ; $ns_ attach-agent $node_(s1) $tcp ; $tcp set fid_ 0 ; set ftp [new Application/FTP] ; $ftp attach-agent $tcp ; set sink [new Agent/TCPSink] ; $ns_ attach-agent $node_(k1) $sink ; $sink set fid_ 0 ; $ns_ connect $ftp $sink ; $ns_ at $start-time "$ftp start" ; # create tcp agent # bind src to node # set flow ID field # create ftp traffic # bind ftp traffic to tcp agent # create tcpsink agent # bind sink to node # set flow ID field # active connection src to sink # start ftp flow

2.Unicast Routing
2.1 The Interface to the Simulation Operator (The API)
Kch bn gi lp cp ngi s dng i hi mt lnh c t inh tuyn unicast hay cc giao thc cho m phng.Mt k hoch nh tuyn chnh l mt c ch tng quan trong NS s tnh ton cc ng i trong b m phng.C 4 c ch routing trong NS :Static, Session, Dynamic v Manual. Ngc li, mt giao thc nh tuyn l mt s thc hin ca mt thut ton c bit.Thng thng Static v Session routing dng thut ton Dijkstra tm ng i ngn nht;Cn c ch dynamic routing dng thut ton Bellman-Ford phn tn.trong NS, thng khng c s khc bit r rng gia c ch v thut ton cho static v session routing, thng quy v giao thc. - rtproto{}: l phng thc trong lp: class Simulator c t giao thc unicast routing dc dng trong m phng.N c nhiu tham s: u tin l ID ca giao thc routing, tip theo l

Cyber Pro !!! :))

50

C s mng thng tin K4X tham s c t cc node s chy trong instance ca giao thc ny.Mc nh l chy cng mt giao thc routing trong tt c cc node trong t p mng.V d v lnh rtproto{} nh sau: $ns rtproto Static ;# Enable static route strategy for the simulation $ns rtproto Session ;# Enable session routing for this simulation $ns rtproto DV $n1 $n2 $n3 ;# Run DV agents on nodes $n1, $n2, and $n3 $ns rtproto LS $n1 $n2 ;# Run link state routing on specified nodes Nu NS khng thc hin rtproto{}, n s thc hin chy Static routing trn tt c cc node. Nhiu dng rtproto{} cho cng hay cc giao thc routing khc nhau c th xy ra trong mt kch bn m phng.Tuy nhin mt m phng khng th dng c hai c ch routing tp trung nh static hay session routing v cc giao thc nh tuyn ng c m t ha nh DV. Trong dynamic routing, mi node c th c chy nhiu hn mt giao thc routing, khi nhiu hn mt giao thc s c mt ng nh tuyn ti cng mt ch.Do , mi giao thc s thm vo mt ga tr tham chiu ti mi ng nh tuyn.y l cc gi tr khng m trong di 0. . . 255.Cc gi tri thp hn s c u tin hn.Khi cc agent giao thc nh tuyn c nhiu hn mt wngf i ti cng ch, ng c chn s c ci t vo bng forwarding table ca node.Ta gi ng nh tuyn c cost thp nht l candidate route.Nu c nhiu candidate route t cng mt hay nhiu giao thc khc nhau, mt trong cc ng ca agent s c chn ngu nhin. Preference Assignment and Control: Mi agent giao thc cha mt mng cc u tin nh tuyn rtpref_. l mt thnh phn trn mi ch, c nh ch mc bi node.Gi tr u tin mc nh c dng bi mi giao thc xut pht t mt bin lp preference_ cho mi giao thc, mc nh l : Agent/rtProto set preference_ 200 ; # global default preference Agent/rtProto/Direct3 set preference_ 100 Agent/rtProto/DV set preference_ 120 Mt kch bn m phng c th iu khin nh tuyn bng cch bin i s u tin ca ng nh tuyn qua mt trong 3 cch : + Bin i u tin cho mi ng i qua mt protocol agent ring bit. + Bin i u tin mi ng i c hc bi agent, + Bin i cc bin lp cho agent trc khi agent c to ra. Link Cost Assignment and Control: Trong cc giao thc nh tuyn c thc hin hin ti,, metric ca mt ng i ti ch ca mt node l cost tm thy ch t node.C th thay i cost ca cc link. Th tc instance cost{} c gi ging nh $ns cost < node1> <node2> <cost> : Thit lp gi ca ng link t node 1 ti node 2 $ns cost $n1 $n2 10 ;# set cost of link from $n1 to $n2 to 10 $ns cost $n2 $n1 5 ; # set cost of link in reverse direction to 5 [$ns link $n1 $n2] cost? ; # query cost of link from $n1 to $n2 [$ns link $n2 $n1] cost? ; # query cost of link in reverse direction Ch rng th tc thit lp cost ch theo mt hng, tng t , th tc cost?{} tr v gi tr cost ca mt lin kt v hng, c gi tr mc nh l 1.

Cyber Pro !!! :))

51

C s mng thng tin K4X

2.2 Cc c ch cu hnh khc cho Specialised Routing


C th chn u tin v cc c ch cost c hai loi cu hnh nh tuyn: nh tuyn khng i xng v nh tuyn a hng - multipath routing. Asymmetric Routing: nh tuyn khng i xng xy ra khi mt ng dn t node n 1 ti node n2 khc ng i t node n2 n node n1. Sau y l v d n gin cng vi cu hnh:

MultiPath Routing: Mi node c th c cu hnh cc b dng nhiu ng i ring bit . Bin instance multiPath_ xc nh node s dng nhiu ng i ti ch no hay khng.Mi node khi to bin instance ca n t mt vin lp cng tn.Nu c nhiu ng tr n mt ch c kch hot, m tt c chng c hc t cng mt giao thc th node c th dng tt c cc ng khc nhau ng thi.Cu hnh in hnh nh sau: Node set multiPath_ 1 ; # All new nodes in the simulation use multiPaths where applicable Cch khc: set n1 [$ns Node] ; # only enable $n1 to use multiPaths where applicable $n1 set multiPath_ 1 Hin nay, ch c DV routing c th h tr nh tuyn a hng.

2.3 Cc tham s cu hnh c t giao thc


Static Routing: C ch tnh ton nh tuyn tnh l c ch mc dnh trong NS.C ch ny dng thut ton tm ng ngn nht Dijkstras all-pairs SPF algorithm.Thut ton tnh ton ng i chy chnh xc mt ln trc khi khi to m phng.Cc ng i c tnh ton dng ma trn gn k v cc cost ca link trong t p mng., (ch rng nh tuyn tnh l tnh trong vic phn on v c tnh mt ln khi b m phng bt u, tri vi phin lm vic v DV routing cho php cc ng i thay i gia qu trnh m phng.Ni cch khc static routing l Manual routing khi cc ng i khng c tnh ton nhng thay vo c thit lp (manually) bi ngi s dng) Session Routing C ch static routing m t sm hn ch tnh ton ng i cho t p mng mt ln trong sut qu trnh m phng, nu nh tuyn tnh c dng v t p mng thay i trong qu trnh m phng th mt s ngun v ch c th khng c xc nh trong mt thi gian ngn.C ch Session routing hu nh ging ht static routing, trong vic chy thut ton Dijkstra all-pairs SPF trc khi chy m phng, dng ma trn k bn v cost ca link trong t p mng.Tuy nhin, n cng chy cng giao thc tnh ton li ng i mi khi t p mng thay i trong lc m phng.Ni cch khc, vic tnh ton li ng i v khi phc li c thc hin tc thi v khng b lch cu hnh nh static routing. Session routing cung cp s thay i nh tuyn ngay lp tc v hon chnh vi t p ng.Nu t p lun lun c kt ni, l cc kt ni im- im ti bt c lc no trong qu trnh m
Cyber Pro !!! :))

52

C s mng thng tin K4X phng.Tuy nhin ngi s dng nn bit rng s tnh ton li ng i ngay lp tc s khng ngn chn cc tc ng tm thi c nguyn nhn nh sp xp li cc gi tin, c bit l thi gian ngn xung quanh s thay i t p. DV Routing: DV routing l s thc hin ca thut ton Distributed Bellman-Ford (Distance Vector) routing trong NS.N gi cc cp nht nh tuyn nh k sau khong thi gian advertInterval.Bin ny l bin class trong lp Agent/rtProto/DV. N c gi tr mc nh l 2 giy.Thm vo cp nht nh k, mi agent cng phi gi cc cp nht nhanh triggered update;Chng thc hin iu ny khi cc bng forwarding table trong node thay i, xy ra da vo s thay i tp hay v mt agent ti mt node nhn mt cp nht nh tuyn, v tnh ton li, thit lp li node mi.Mi agent s dng c ch split horizon vi poisoned reverse qung b cc ng nh tuyn ca n ti cc node ng ng gn k.Split horizon l c ch trong agent khng qung b ng nh tuyn ra ngoi giao din m n n.Trong c ch Split horizon with poisoned reverse, agent s qung b ng nh tuyn ra ngoi giao din vi metric ti hn. Mi DV agent dng mt gi tr u tin mc nh l preference_ = 120.Gi tr ny c xc nh bng mt bin lp cng tn.Mi agent dng bin lp INFINITY (thit lp l 32) xc nh s hp l ca ng nh tuyn.. Manual Routing: Manual routing khng phi l mt giao thc tnh ton ng i, ch n gin l mt cch cho ngi s dng cu hnh bng routing table bng tay, ch cn nh lnh route trn workstation. dng manual routing, kch hot n vi rtproto, sau thit lp mi node mt bng routing table vi lnh add-route-to-adj-node . V d: $ns rtproto Manual set n1 [$ns node] set n2 [$ns node] $ns duplex-link $n1 $n2 10Mb 100ms DropTail $n1 add-route-to-adj-node -default $n2 $n2 add-route-to-adj-node -default $n1

2.4 c tnh v kin trc ca Routing


Sau y l m t v cc giao din gia unicast routing v network dynamics, cng nh gia unicast v multicast routing.

2.4.1 Cc lp:
C 4 lp chnh:RouteLogic,rtObject,rtPeer, v lp c s Agent/rtProto cho tt c cc giao thc.Thm vo , cu trc routing m rng thm cc lp Simulator, Link, Node v Classifier. Lp RouteLogic: Lp ny inh ngha hai phng thc cu hnh unicast routing,v mt phng thc truy vn n cho thng tin nh tuyn.N cng nh ngha mt th tc instance c th dng c khi tp l ng. Th tc instance register{} c gi bi Simulator::rtproto{}.N t giao thc v mt danh sch cc node nh cc i s, v xy dng mt bin instance,
_

Cyber Pro !!! :))

53

C s mng thng tin K4X rtprotos_, l mt mng, ch mc mng ny l tn ca giao thc, v gi tr l danh sch cc node s chy giao thc ny. Configure{} c bin instance rtprotos_ , v vi mi thnh phn trong mng, gi cc phng php giao thc nh tuyn thc hin khi to thch hp.N c gi bi b m phng chy th tc. Vi mi giao thc (rt-proto) c nh ch mc trong mng rtprotos_ , chu trnh ny gi Agent/rtProto/<rt-proto>init-all rtprotos_(<rt-proto>). Nu khng c thnh phn no trong rtprotos_, chu trnh gi Static routing, nh Agent/rtProto/Static init-all. Th tc instance lookup{} to hai s node.nodeId1 v nodeId2 lm cc i s.N tr v ID ca cc node hng xm m nodeId1 dng tm nodeId2 . Th tc c dng bi th tc tnh ton nh tuyn tnh truy vn cc ng nh tuyn c tnh v xc nh cc ng nh tuyn ti mi node N cng c dng bi cc giao thc routing multicast thc hin kim tra RPF thch hp. Ch rng th tc ny overload mt instproc-like cng tn.Th tc truy vn cc thc th rtObject thch hp nu chng tn ti., ni cch khc, th tc gi instproc-like t c cc thng tin lin quan. Lp rtObject c dng trong s m phng dng nh tuyn ng.Mi node c mt rtObject tng ng vi chng, hot ng nh mt iu phi vin cho cc giao thc c thc hin ti mt node.Vi node no , rtObject node theo di mi giao thc chy trn node .N tnh ton v thit lp ng i i vi mi ch n qua mi mt giao thc.Khi s kin thay i bng routing, hay thay i tp xy ra, rtObject s cnh bo cc giao thc c hnh ng thch hp.. Lp nh ngha th tc init-all{};Th tc ny to mt danh sch cc node nh cc i s, v to mt rtObject ti mi mt node trong danh sch i s ca n.Tip theo n s gi cc ng nh tuyn compute-route ca n . Vic chp nhn rng constructor i vi mi mt i tng mi s thuyt minh giao thc nh tuyn Direct ti mi mt trong cc node ny.Giao thc nh tuyn ny chu trch nhim tnh ton ng i ti cc hng xm gn k.Khi compute-routes{} c chy bi th tc init-all{} Cc ng nh tuyn trc tip ny s c thit lp trong node bi cc i tng nh tuyn thch hp.. Cc th tc instance khc trong lp ny l : + init{} L constructor thit lp cc con tr pointer t bant thn ti node, trong bin instance node_ ca n,v t node ti bn thn, thng qua th tc instance Node init-routing{} v bin instance Node rtObject_.Sau n s khi to mt mng nextHop_, rtpref_, metric_, rtVia_. Ch mc ca mi bng ny l handle ca node ch. nextHop_ cha link s c s dng tm ch n tng ng, rtpref_ v metric_ l mc u tin v metric cho ng nh tuyn c cit trn node;rtVia_ l tn ca agent m ng nh tuyn ca n c ci t trn node. Constructor cng to ra mt instance ca giao thc nh tuyn trc tip, v gi compute-routes{} cho giao thc . + add-proto{} to mt instance ca giao thc, cha mt tham chiu ti n trong mng cc giao thc, rtProtos_. Ch mc ca mng l tn ca giao thc .N cng gn i tng giao thc vo node, v tr v handle ca i tng giao thc.

Cyber Pro !!! :))

54

C s mng thng tin K4X + lookup{} to mt handle node ch, v tr v ID ca node hng xm c dng tm kim ch. Nu nhiu ng c th c dng, n s tr v danh sch cc node hng xm s c dng.Nu node khng c ng no n ch th th tc tr v gi tr -1. + compute-routes{} l th tc c bn ca lp ny, n kim tra ln u thy nu giao thc no node tnh ton ng i.Nu c, n s xc nh ng i tt nht cho mi ch n gia cc giao thc.Nu mt vi ng i thay i, th tc s bo tin giao thc ca s thay i trong trng hp cc giao thc ny mun gi mt cp nht mi.Cui cng n cng thng bo cho mt s cc giao thc multicast rng cc bng nh tuyn unicast mi c tnh ton. Chu trnh kim tra bin instance ca agent, rtsChanged_ nhn ra nu mt vi ng nh tuyn trong giao thc c s thay i so vi ln kim tra cui cng.N dng cc mng bin instance ca giao thc,nextHop_,rtpref_,v metric_ tnh ton cc mng ca n. rtObject s c thit lp hay thay i mt vi ng nh tuyn khi s thay i c tm thy.Nu t s wngf nh tuyn ti node thay i,rtObject s gi cc th tc instance ca agent giao thc,send-updates{} vi s lng thay i l cc i s, n s gi cc i tng nh tuyn multicast nu chng tn ti. Bc tip theo ca chu trnh c dng truy vn rtObject cho cc thng tin trng thi a dng. + dump-routes{} coi file m t output nh mt i s v vit bng routing table ti node . + rtProto?{} coi mt giao thc route nh i s, v tr v mt handle ti instance ca giao thc ang chy trn node. + nextHop?{} nm bt handle node ch, v tr v link d c s dng tm n ch. Tng t, rtpref?{} v metric?{} nm bt handle node ch nh i s v tr v u tin v metric ca ng i ti ch c ci trn node. Lp rtPeer: l mt lp bao cha c dng bi cc agent giao thc.Mi i tng cha a ch ca agent tng ng, v u tin, metric i vi mi ng i c qung b bi agent ng ng .Mt agent giao thc s cha mt i tng tng ng.Lp lu gi bin instance addr_, v cc mng bin instance , metric_ v rtpref_; Ch mc bng l cc handle ca node ch.. Cc th tc instance lp : metric{} v preference{}, xc nh mt ch n v gi tr, thit lp bin mng tng ng.Cc th tc metric?{} v preference?{}, xc nh mt ch n v tr v gi tr hin hnh cho ch .Th tc instance addr?{} tr v a ch ca agent ng ng. Lp Agent/rtProto Lp ny l lp c s t bt ngun tt c cc agent giao thc nh tuyn Mi agent giao thc phi nh ngha procedureinit-all{} khi to giao thc hon chnh, v cc th tc instance init{},compute-routes{}, v send-updates{}. Thm vo, nu t p l ng v giao thc h tr tnh ton ng i tc ng li s thay i t p, sau giao thc nh ngha th tc compute-all{}, v th tc instance intf-changed{}. + Th tc init-all{} l th tc khi to ton cc cho lp, n c th c a ra mt danh sch cc node nh cc i s.y l danh sch cc node chy giao thc routing ny.Tuy nhin, cc giao thc routing trng tm nh static v session routing s sa cha i s ny, m t cc giao thc routing ng nh DV s dng danh sch tham s ny khi to cc agent giao thc ti mi node. Ch rng cc lp bt ngun t OTcl khng tha k cc th tc nh ngha trong lp c s.Do mi lp giao thc c bt ngun phi nh ngha cc th tc ca n mt cch r rng.
Cyber Pro !!! :))

55

C s mng thng tin K4X + Th tc instance init{} l c s cho cc agent giao thc c to ra,Constructor lp c s khi to u tin mc nh cho cc i tng trong lp ny, ID cc giao din trn cc node v trng thi hin ti ca chng.Cc giao din c h ch mc bi handle hng xm v cha trong mng bin instance, ifs_; Mng bin instance trng thi tng ng l ifstat_. Cc giao thc nh tuyn trng tm ha nh static v session routing khng to cc agent ring bit trn cc node, v do khng truy cp th tc instance no. + Th tc instance compute-routes{} tnh ton ng i thc s i vi giao thc.S tnh ton da trn cc ng nh tuyn hc bi giao thc v s bin i t giao thc ti giao thc. Chu trnh ny oc gi bi rtObject khi t p thay i, v cng c gi khi node nhn mt cp nht. Nu chu trnh tnh ton ng i mi, rtObject::compute-routes{} cn c triu gi tnh ton li v ci t ng nh tuyn mi ti node.S triu gi thc s ca rtObject c thc hin bi th tc gi chu trnh ny ln u tin. + Th tc instance send-updates{} c gi bi rtObject khi cc bng routing thay i.v cp nht mi wcj gi i cc node. Th tc ny cng c th c gi khi khng c s thay i no v ng nh tuyn nhng t p gn lin vi node thay i trng thi.S lng thay i wocj dng xc nh danh sch cc node ng ng m thng tin cp nht phi c gi.

Cc m rng khc cho Simulator, Node, Link, and Classifier


Ta xt cc phng thc rtproto{} v cost{} trong lp Simulator .Mt phng thc khc dng trong l get-routelogic{}; Th tc ny tr v instance ca routelogic trong m phng. Phng thc wcj dng bi lp Simulator, unicast v multicast routing. Lp Node cha cc th tc instance thm vo ny h tr dynamic unicast routing: initrouting{},add-routes{}, delete-routes{}, v rtObject?{}. + Th tc instance init-routing{} c gi bi rtObject ti node.N cha mt con tr ti rtObject, trong bin instance ca n: rtObject_, cho s vn ng hay thu hi sau .N cng kim tra bin lp ca n thy nu dng multiPath routing, v thit lp mt bin instance ti tc ng ny..Nu multiPath routing c th c dng, mng bin instance routes_ cha mt lng cc ng dn c ci trn mi mt ch n.y ch l mng trong unicast routing c nh ch mc bi ID ca node,hn l node handle. + Th tc instance rtObject?{} tr v rtObject handle cho node . + Th tc instance add-routes{} to mt node id, v mt danh sch cc link.N s thm vo danh sch cc link nh cc ng nh tuyn tm n ch c xc nhn bi node id.S thc hin ca multiPath routing c xc nh bi mt Classifier/multiPath ring bit.Vi mt s ch n c ID d, nu node ny c nhiu ng ti d, v classifier chnh tr ti multipath classifier ny thay cho link tm ng ti ch.Mi multiple path c xc nhn bi cc giao din c dng ci t trong multipath classifier.Multipath classifier s dng mi mt link ci trn n chuyn tip thnh cng cc gi tin ti n. + Th tc instance delete-routes{} nm mt node id,mt danh sch cc giao din v mt ullAgent. N s xa mi giao din trong danh sch, nu cng vo trc khng dng mt multipath classifier,sau ch c mt ng nh tuyn, v cng vo ng i c thit lp tr ti nullAgent

2.4.2 Interface to Network Dynamics and Multicast

Cyber Pro !!! :))

56

C s mng thng tin K4X S hi p ca vic thay i t p wocj xt theohaich : Cc hot ng xy ra bi cc agent cc b ti mi node v cc hot ng bi ton th giao thcCc giao thc routing chi tit nh DV thc thi i hi cc hot ng c thc hin bi cc agent giao thc cc b ti node ang xt.. Hot dng ti cc node cc b Sau y l mt s thay i trong t p, cc m hnh mng ng s c gi u tin. rtObject::intf-changed{} : mi mt node nh hng, vi mi mt giao thc nh tuyn unicast c thc hin ta node , rtObject::intf-changed{} s gi th tc instance ca giao thc cc b, intf-changed{}, theo sau bi th tc compute-routes{} ca giao thc . sau khi mi giao thc c tnh cc ng nh tuyn ca n rtObject::intf-changed{} s gi compute-routes{} c th ci cc ng nh tuyn mi.Nu cc ng nh tuyn mi c thit lp, rtObject::compute-routes{} s gi send-updates{} chomoix giao thc c thc hin trn node.Th tc cng thit lp c i tng nh tuyn multicast ca wngf nh tuyn thay i trn node, xc nh s lng thay i c thc hin. rtObject::flag-multicast{} s thng bo i tng nh tuyn multicast to hnh ng thch hp.Mt ngoi l cho giao din gia unicast v multicast l s tng tc gia multicast c ch dy c ng - dynamic dense mode v nh tuyn unicast chi tit - detailed unicast routing. S thc hin DM ng trong NS coi node hng xm s gi cp nht ngm khi no ng nh tuyn thay i.m khng gi bn cp nht tht s.Sau n dng thng tin tnh ton quan h cha-con thch hp cho multicast spanning trees.V th, detailed unicast routing s gi rtObject_ flag-multicast 1 khi no n nhn mt cp nht nh tuyn , thm ch khi cp nht khng biu hin trong bng routing table ca n. Hot ng ton cc : Mi ln hot ng chi tit ti cc node nh hng c hon thnh, cc m hnh mng ng s bo hiu RouteLogic instance (RouteLogic::notify{}) ca cc s thay i ti t p.Th tc ny s gi th tc compute-all{} i vi mi giao thc c ci ti cc node.Cc giao thc nh tuyn tp trung nh session routing dng tn hiu ny tnh ton li cc ng nh tun ti t p.Cui cng th tc RouteLogic::notify{} s bo hiu mt vi instance ca centralized multicast s c thc hin ti node .

2.5 Protocol Internals


Direct Routing: Giao thc ny ghi li trng thi ca lin kt gn lin v duy tr cc ng nh tuyn ngay lp tc ti cc hng xm gn k.Vi cc gikhc, n duy tr cc mng bin instance nextHop_, rtpref_, v metric_, c nh ch mc bi handle ca mi ch n c th trong t p Th tc instance compute-routes{} tnh ton ng i da trn trng thi hin thi ca link, v trng thi trc ca link gn vi n.Khng c th tc hay th tc instance khc c nh ngha trong giao thc ny. Static Routing Th tc compute-routes{} trong lp RouteLogic u tin to ra ma trn gn k, v sau gi cc phng thc C++, compute_routes() ca i tng.Cui cng, th tc khi phc li kt qu tnh ton nh tuyn ti mi node trong t p.. Session Routing: Lp nh ngha th tc init-all{} tnh ton dng i khi khi to m phng.N cng nh ngha th tc compute-all{} tnh ton cc ng i khi t p thay i.Mi th tc ny s gi trc tip compute-routes{}.

Cyber Pro !!! :))

57

C s mng thng tin K4X DV Routing: Trong mt c ch nh tuyn ng, cc node gi v nhn cc thng ip, v tnh ton ng i trong t p da trn trao i thng ip.Th tc init-all{} to mt danh sch node lm tham s, mc nh l danh sch node trong t p.Ti mi mt node th tc khi to lp rtObject v cc agent lp Agent/rtProto/DV .N xc nh cc DV ng ng vi mi agent DV c to ra. V to cc i tng rtPeer lin quan.. Constructor cho agent DV khi to mt s cc bin instance, mi agent cha mt mng c nh ch mc bi handle ca node ch, ca u tin, metric, giao din (hay link) ti next hop, v cc node xa, vi ng i tt nht cho mi ch n c tnh ton bi cc agent .agent to ra cc bin instance v lp lch gi cp nht u tin trong 0.5 giy u tin khi khi ng m phng.. Mi agent cha danh sch cc ng ng c ch ra bi handle ca node dng ng.Mi peer l mt cu trc ng ng ring bit nm gi a ch ca agent ng ng, metric v u tin ca ng i ti ch c qung b bi agent .Cu trc peer c khi to bi th tc add-peer{} c gi bi init-all{}. Chu trnh send-periodic-update{} gi send-updates{} gi cp nht thc t, n t li lch gi bn cp nht tip theo sau khi advertInterval chng li s ng b c th.nh hng send-updates{} s gi cc bn cp nht ti tp cc peer chn, nu mt vi ng thay di hay khng cp nht nh k, th tc s gi cp nht ti tt c cc peer.Ni cch khc, nu vi link c ly li, th tc s gi cp nht ti peer st ch gn vi link. send-updates{} Dng th tc send-to-peer{} gi cc cph nht thc t, th tc ny s ng gi cc cp nht, dng c ch split-horizon and poison reverse .N gi instproc-like, sendupdate{} gi cp nht.Cp nht thc t c cha trong bin lp msg_ c nh ch mc bi s nguyn khng gim.instproc-like ch gi msg_ ti peer xa. iu ny loi tr s cn phi chuyn i t xu OTcl xang dng nh dng khc.Khi mt peer nhn mt cp nht, u tin n s kim tra nu cp nht c khc trc khng.Agent s tnh ton ng nh tuyn mi nu bn cp nht c thng tin mi

2.6 Cc i tng Unicast routing


Routelogic v rtObject l hai i tng quan trng i vi unicast routing trong NS. Routelogic,v c bn s m t bng routing c to ra v duy tr vi mi m phng unicast. rtObject l i tng m mi node c trong nh tuyn unicast n, c mt instance.Ch rng khng c instance ca di tng ny nu Session routing c chy nh mt detailed routing protocol khong c m phng trong trng hp ny.

2.7 Tng quan cc lnh


Sau y l danh sch cc lnh v unicast routing c dng trong kch bn m phng: $ns_ rtproto <routing-proto> <args> Vi <routing-proto> nh ngha loi giao thc routing nh Static, Manual, Session , DV.Cc i s args c th nh ngha danh sch cc node m giao thc routing chy Cc phng thc bn trong: $ns_ compute-routes: Tnh ton thng tin next_hop cho tt c cc node dng kt ni t p.Thng tin next_hop ny sau c s dng tnh cc node classifier hay cc bng routing . compute-routes triu gi calls compute-flat-routes hay compute-hier-routes da vo loi a ch c dng trong m phng.

Cyber Pro !!! :))

58

C s mng thng tin K4X $ns_ get-routelogic : Tr v mt handle ti i tng RouteLogic object (the routing table),nu mt i tng c to ra.Ni cch khc mt i tng bng routing s c to ra $ns_ dump-routelogic-nh : Kt xut ra thng tin nexthop trong bng routing table.. $ns_ dump-routelogic-distance Kt xut ra thng tin khong cch trong bng routing. $node add-route <dst> <Target>: y l mt phng thc dng thm vo cc u vo routing (thng tin nexthop) trong bng routing table ca node. Nexthop ti <dst> t mt node l i tng <target> v thng tin ny s c thm vo classifier. ca node $routelogic lookup <srcid> <destid>: Tr v ID ca node l nexthop t node vi ID ngun ti ID ch. $routelogic dump <nodeid>: Kt xut cc bng routing table ca tt c cc node vi ID nh hn nodeid.Cc node id c gn cho cc node tng dn bt u t 0 theo th t to ra. rtobject dump-routes <fileID> Kt xut bng routing table ra knh ngoi c xc nh theo fileID. fileID phi l mt file handle tr v bi lnh Tcl open v phi c m khi hot ng.. $rtobject rtProto? <proto> Tr v mt handle routing protocol agent specified by proto if it exists at that node. Returns an empty string otherwise. $rtobject nextHop? <destID> Tr v ID ca node m next hop ti ch c c t bi node id, <destID>. $rtobject rtpref? destID : Tr v u tin ca ng nh tuyn ti node ch c cho bi destid. $rtobject metric? destID: Tr v metric cho ng nh tuyn ti destid.

3.Multicast Routing
3.1 Multicast API
Multicast forwarding yu cu s ci tin cc node v link trong t p.Do , ngi s dng phi nh r cc yu cu multicast ti lp Simulator trc khi to ra t p>Sau y l mt trong hai cch: set ns [new Simulator -multicast on] hay set ns [new Simulator] $ns multicast Khi cc m rng multicast c kch hot, cc node s c to ra vi cc classifiers v cc replicators thm vo cho multicast forwarding, v cc link cha cc thnh phn gn nhn giao din vo cho cc gi tin vo mt node. Mt c ch multicast routing l c ch trong cy phn tn multicast wocj tnh ton trong m phng .NS h tr 3 c ch tnh ton nh tuyn multicast :centralised, dense mode(DM) hay shared tree mode(ST). Phng thc mrtproto{} trong lp Simulator c t c ch tnh ton nh tuyn cho centralised multicast routing, hay giao thc nh tuyn m t chi tit owcj dng Sau y l v d khai bo hp l cho multicast routing trong ns: set cmc [$ns mrtproto CtrMcast] ; # specify centralized multicast for all nodes ;# cmc is the handle for multicast protocol object $ns mrtproto DM ; # specify dense mode multicast for all nodes $ns mrtproto ST ; # specify shared tree mode to run on all nodes

Cyber Pro !!! :))

59

C s mng thng tin K4X

Trong v d trn CtrMcast tr v mt handle c th qc dng d thm cu hnh ca centralised multicast routing.Cc giao thc routing khc s tr v chui Null.Tt c cc node trong t p s chy instance c cng mt giao thc.Cc giao thc nh tuyn multicast c th chy trn mt node, nhng trong trng hp ny ngi dng phi nh r giao thc no s i vo giao din.Khi mrtproto-iifs{} c dng. Cc a ch mi, khng dng c nh v qua th tc allocaddr{}. Cc agent dng th tc instance join-group{} v leave-group{}, trong lp Node nhp v ri cc nhm multicast.Cc th tc ny c hia tham s bt buc, u tin l cc ID ca agent tng ng v tham s th hai xc nh a ch nhm. Sau y l mt v d cu hnh multicast set ns [new Simulator -multicast on] ; # enable multicast routing set group [Node allocaddr] ; # allocate a multicast address set node0 [$ns node] ; # create multicast capable nodes set node1 [$ns node] $ns duplex-link $node0 $node1 1.5Mb 10ms DropTail set mproto DM ; # configure multicast protocol set mrthandle [$ns mrtproto $mproto] ; # all nodes will contain multicast protocol agents set udp [new Agent/UDP] ; # create a source agent at node 0 $ns attach-agent $node0 $udp set src [new Application/Traffic/CBR] $src attach-agent $udp $udp set dst_addr_ $group $udp set dst_port_ 0 set rcvr [new Agent/LossMonitor] ; # create a receiver agent at node 1 $ns attach-agent $node1 $rcvr $ns at 0.3 "$node1 join-group $rcvr $group" ; # join the group at simulation time 0.3 (sec)

3.1.1 Cu hnh gim st Multicast


NS h tr mt module gim st multicast c th ghi vt cc hot ng gi tin do ngi dng nh ngha.Module tnh ton s lng gi tin i qua nh k v instance ra kt qu ra cc file c t. attach{} kch hot mt module gim st instance kt qu ra file trace-topo{} ghp module gim st vo cc link filter{} cho php tnh ton cc packet header, trng trong header v gi tr ca trng . Gi filter{} lp li vikt qu trong php AND iu kin lc print-trace{} Thng bo module gim st bt u kt xut d liu. ptype() l mt mng ton cc vi tn loi gi tin(xem trong u ra ca trace-all{}) v nh x ti gi tr tng ng.Mt cu hnh n gin lc cc gi tin CBR trong nhm nh sau: set mcastmonitor [new McastMonitor] set chan [open cbr.tr w] ; $mmonitor attach $chan1 ;

# open trace file # attach trace file to McastMoniotor object

Cyber Pro !!! :))

60

C s mng thng tin K4X $mcastmonitor set period_ 0.02 ; # default 0.03 (sec) $mmonitor trace-topo ; # trace entire topology $mmonitor filter Common ptype_ $ptype(cbr) ; # filter on ptype_ in Common header $mmonitor filter IP dst_ $group ; # AND filter on dst_ address in IP header $mmonitor print-trace ; # begin dumping periodic traces to specified files Sau y l mt v d u ra minh ha nh dng file (time, count):
0.16 0 0.17999999999999999 0 0.19999999999999998 0 0.21999999999999997 6 0.23999999999999996 11 0.25999999999999995 12 0.27999999999999997 12

3.1.2 Cu hnh c t giao thc


Centralized Multicast: centralized multicast l mt c ch thc hin ri rc ca multicast tng t nh PIM-SM .Mt cy chia s gc - rooted shared tree Rendezvous Point (RP) wocj xy dng cho nhm multicast.Vic gi thc s cng nh vic kt hp thng ip , thit lp trng thi ti cc node l khng c m phng.Mt agent tnh ton tp trung c dng tnh ton cy forwarding v thit lp trng thi multicast forwarding,< S, G> cc node lin quan khi nhng receiver mi gia nhp nhm.Cc gi tin d liu t sender ti nhm l unicast i vi RP.Ch rng cc gi tin d liu t ngi gi l unicast i vi RP thm ch khi khng c receiver i vi nhm. Phng thc kch hot centralised multicast routing trong m phng l: set mproto CtrMcast ; set mrthandle [$ns mrtproto $mproto] # set multicast protocol

Th tc lnh mrtproto{} tr v mt handle ti i tng multicast protocol .Handle ny c th c dng iu khin RP v boot-strap-router (BSR),chuyn i cc loi tree-types cho mt nhm, t cc cy chia s cho n cc cy c t ngun v tnh ton li ng nh tuyn multicast # set the RPs # set the BSR, specified as list of node:priority $mrthandle get_c_rp $node0 $group ; # get the current RP ??? $mrthandle get_c_bsr $node0 ; # get the current BSR $mrthandle switch-treetype $group ; # to source specific or shared tree $mrthandle compute-mroutes ; # recompute routes. usually invoked automatically as needed Ch rng khi no mng thay i hay unicast routing thay i,compute-mroutes{} c th c gi tnh ton li multicast routes. Tnh nng tnh ton li ngay lp tc ca cc thut ton tp trung c th dn n kt qu ngay trong hi gian nh k ngn. Dense Mode: giao thc Dense Mode (DM.tcl) l mt s thc thi ca giao thc dense modelike .Da vo gi tr ca bin lp DM CacheMissMode n c th chy trong mt hay hai $mrthandle set_c_rp $node0 $node1 ; $mrthandle set_c_bsr $node0:0 $node1:1 ;

Cyber Pro !!! :))

61

C s mng thng tin K4X ch Nu CacheMissMode c thit lp l pimdm (mc nh ), PIM-DM ging nh lut forwarding s c dng.Nh mt la chn, CacheMissMode cth c thit lp l dvmrp (da vo DVMRP]). S khc nhau chnh ga hai phng thc l DVMRP duy tr quan h cha-con gia cc node gim s link khi cc gi tin d liu c qung b.S thc thi trn lin kt point-to-point nh LAN v thch hp vi s linh ng ca mng (Cc link up v down).Mt vi node nhn d liu cho mt nhm c th khng c cc downstream receiver,gi mt prune upstream. Mt prune message gy ra upstream node khi to trng thi prune node .Trng thi prune ngn chn node d gi d liu xui xung cho nhm ti node gi thng ip prune ban u trong khi trng thi ang hot ng.Trong khong thi gian m trng thi prune c kch hot, c cu hnh thng qua bin lp DM, PruneTimeout. Mt cu hnh DM in hnh nh sau: DM set PruneTimeout 0.3 ; DM set CacheMissMode dvmrp ; $ns mrtproto DM # default 0.5 (sec) # default pimdm

Shared Tree Mode L ch n gin ST.tcl, l mt phin bn ca giao thc multicast cychia s - sharedtree multicast protocol. Mng bin lp RP_ c nh ch mc bi nhm xc nh trong node l RP i vi nhm. V d: ST set RP_($group) $node0 $ns mrtproto ST Khi m phng multicast c khi to, giao thc c to ra v ci t dng gi cc i tng ti node c cc multicast sender, m gi cc i tng ti cc RP v kt ni chng. tham gia mt nhm, mt node gi mt thng ip graft ti RP ca nhm. ri khi nhm, n gi mtthng ip prune message. Giao thc hin nay khng h tr s thay i ng v cc LAN. Bi-directional Shared Tree Mode BST.tcl l mt phin bn ca bidirectional shared tree protocol. Khi ch cy chia s, cc RP phi c cu hnh bng cch dng mng lp RP_.Giao thc hin nay khng h tr s thay i ng v cc LAN

3.2 Internals of Multicast Routing 3.2.1 The classes


Cc lp chnh trong s thc thi l lp mrtObject v McastProtocol. y l cc phn m rng da trn cc lp c s: Simulator, Node, Classifier, ... Cc giao thc c t cng dng cu trc d liu thm vo cho cc tc v c bit, nh cc c ch b m thi gian bi ch detailed dense mode, cc agent ng gi /m gi cho multicast tp trung,; mrtObject class y l mt i tng mrtObject (aka Arbiter) trn mi node c kh nng multicast .i tng ny h tr kh nng mt node chy cc giao thc nh tuen multicast bng cch gi mt mng cc giao thc multicast c nh ch mc bi cc giao din i vo. Do , nu c nhiu giao thc multicast trn mt node, mi giao din s c lm ch bi ch mt giao thc .Khi i tng ny h tr kh nng mt node chy nhiu giao thc nh tuyn multicast .Node dng mt trng ta thc hin hot ng giao thc, cng vy i vi mt instance giao thc c t ti node , hay tt c cc instance giao thc ti ndoe .

Cyber Pro !!! :))

62

C s mng thng tin K4X addproto{instance, [iiflist]} thm handle cho instance giao thc ti mng giao thc ca n. Tham s la chon th hai l danh sch giao din i vo c iu khin bi giao thc .Nu tham s ny l danh sch rng th giao thc s c cho rng chy trn tt c cc giao din.(ch mt giao thc ). getType{protocol} Tr v handle i instance giao thc kch hot ti node Chc nng ny thng c dng nh v s tng ng ti cc node khc.Mt xu rng s c tr v nu giao thc khng c tm ra. all-mprotos{op, args} Chu trnh bn trong thc hin op vi args trn tt c cc instance giao thc kch hot ti node . start{} stop{} Khi to v dng s thc hin ca tt c cc giao thc notify{dummy} : c gi khi t p thay i.i s dummy hin khng c dng. dump-mroutes{file-handle, [grp], [src]} Kt xut cc ng nh tuyn multicast ti file-handle. join-group{G, S} nh du tt c cc instance giao thc gia nhp < S, G> leave-group{G, S} nh du tt c cc instance giao thc loi b < S, G> upcall{code, s, g, iif} nh du bi node trn li forwarding errors trong classifier;chu trnh ny bt cc tn hiu instance giao thc lm ch gao din vo (iif) bi vic triu gi chc nng handle thch hp . drop{rep, s, g, iif} c gi khi cc gi tin mt.C th kch hot trng thi prune trn giao din Thm vo , lp mrtObject h tr khi nim cc nhm ni ting- well known groups,.. .,Cc nhm ny khng yu cu h tr giao thc r rng.Hai nhm tiu biu l ALL_ROUTERS v ALL_PIM_ROUTERS c nh ngha trc trong NS. Lp mrtObject nh ngha hai th tc lp thit lp v ly thng tin v cc nhm ny, - registerWellKnownGroups{name} t tn cho a ch nhm ni ting - getWellKnownGroup{name} Tr v a ch c nh cho nhm ni ting,hay tn .Nu tn khng c ng k nh nhm ni ting - well known group, th n s tr v a ch ALL_ROUTERS. McastProtocol class: y l lp c bn cho s thc hin tt c cc giao thc multicast .N cha cc hm multicast c bn: start{}, stop{} Thit lp trng thi status_ ca instance giao thc getStatus{} Tr v trng thi thc hin instance giao thc ny. getType{} Tr v loi ca giao thc c thc hin. bi instance ny.. upcall{code args} c triu gi khi cc tn hiu node classifier signals c li, da vo cache-miss hay wrong-iif cho cc gi tin n.Chu trnh ny gi protocol specific handle, handle-<code>{} vi cc tham s cho tn hiu handle Multicast thc thi trong NS cho rng dng duplex links, nu c mt link n gin t node 1 ti node 2,s phi c mt link ngc li t node 2 ti node 1 C th ni rng vi link no nhn c gi tin, b m phng multicast s cu hnh link vi mt nhn giao din cui mi link, vi cc nhn gi tin l n nht.D incoming interface c quy cho nhn ny v l mt s >=0.Nhn giao din vo c th l -1 trong trng hp c bit gi tin c gi bi mt chi nhnh cc b ti agent node. Ngc li, mt outgoing interface c quy cho mt object handler, thng l mt phn u ca mt link c ci ti mt replicator.

Cyber Pro !!! :))

63

C s mng thng tin K4X

3.2.2 M rng cho cc lp khc trong NS


Ta bit u vo ca node i vi node multicast l switch_. N c xem bit cao nht quyt nh nu ch l gi tin multicast hay unicast .Cc gi tin multicast c forward ti mt multicast classifier l ni lu gi danh sch cc replicator;C mt replicator trn mt <source, group> tuple. Cc replicator sao chp gi tin n v forward ti tt c cc outgoing interface. Class Node: Node h tr cho multicast theo hai cch chnh : N p ng nh mt tiu im truy cp cc giao thc multicast, trong cc vng dnh a ch, qun l v iu khin, v th hai l n cung cp iu khin v truy cp cc giao din trn cc link gn vi node . expandaddr{}, allocaddr{} Cc th tc lp cho vic qun l a ch expandaddr{} Hin nay khng dng na allocaddr{} nh v a ch multicast tip theo c th. start-mcast{}, stop-mcast{} Khi ng v dng multicast routing ti node . notify-mcast{} notify-mcast{} Ra tn hiu cho mrtObject ti node tnh ton li ng nh tuyn multicast sau khi t p thay i hay ng unicast cp nht t hng xm. getArbiter{} Tr v mt handle tr ti mrtObject thc hin ti node .. dump-routes{file-handle} Truy xut cc bng multicast forwarding table ti node new-group{s g iif code} Khi mt gi tin d liu multicast c nhn, v multicast classifier khng th tm thy slot tng ng vi gi d liu .N gi Node nstproc new-group{} thit lp mt cng vo thch hp. join-group{a g} Mt agent ti node gia nhp mt nhm , gi node join-group <agent> <group>. Node pht tn hiu mrtObject gia nhp nhm v thm n vo danh sch ca cc agent ti nhm ny.Sau n thm agent ti tt c cc replicator trong nhm. leave-group{a g} Node instproc leave-group o nghch qu trnh c m t trc , v hiu ha cc outgoing interface cc receiver agent cho tt c cc replicator ca nhm, xa cc receiver agent t danh sch cc b Agents_ ;Sau n gi trng ti leave-group{} ca instance. add-mfc{s g iif oiflist} Node instproc add-mfc thm mt u vo multicast forwarding cache cho nhm c bit <source, group, iif> C ch l: + To mt replicator mi (nu khng c ci no tn ti ), + Cp nht mng bin instance replicator_ ti node. + Thm tt c cc outgoing interface v local agent vo replicator thch hp, + Gi add-rep{} ca multicast classifier to ra mt khe slot cho replicator trong multicast classifier. del-mfc{s g oiflist} v hiu mi oif trong oiflist t replicator vi <s, g> Danh sch cc thnh phn c th s dng c ti node iu khin giao din ca n c lit k di y: add-iif{ifid link},add-oif{link if} Triu gi trong sut qa trnh to link chun b cho node v nhn giao din vo v cc i tng giao din ra.. get-all-oifs{} Tr v tt c oifs cho node ny.

Cyber Pro !!! :))

64

C s mng thng tin K4X get-all-iifs{} Tr v tt c cc iifs cho node ny iif2link{ifid} Tr v cc i tng link c t nhn vi nhn ca giao din . link2iif{link} Tr v nhn giao din i vo cho link. oif2link{oif} Tr v i tng link tng ng vi outgoing interface. link2oif{link} Tr v outgoing interface cho link . rpf-nbr{src} Tr v mt handle ti node hng xm m next hop ca n l src. getReps{s g} Tr v mt handle tr ti replicator so snh vi <s,g>, cc tham s c th l wildcard getReps-raw{s g} Nh trn, nhng tr v danh sch cp <key, handle> clearReps{s g} Xa tt c cc replicator cng vi <s,g> Class Link and SimpleLink: Lp ny cung cp cc phng thc kim tra loi link, v nhn n c thm vo trn gi tin cc b i qua.C mt phng thc them vo i tng giao din trn link c gi l if-label?{} Class NetworkInterface y l mt connector n gin c t trn link, n thm vo ID nhn ca n vo mi gi tin i qua.ID ca gi tin c dng bi node ch gn trn link nhn ra link no gi tin ang tm n. ID ca nhn c cu hnh bi Link constructor.i tng ny l mt i tng bn trong, v khng c thit k vn hnh bi kch bn m phng c ngi dng.i tng ny ch h tr hai phng thc: + label{ifid} gn ifid m i tng ny thm vo cho mi gi tin + label{} Tr v nhn m i tng ny thm vo mi gi tin.. Bin lp ton cc, ifacenum_,ch r s ifid c th tip theo. Class Multicast Classifier Classifier/Multicast duy tr mt multicast forwarding cache. C mt multicast classifier trn mi node.Node cha mt tham chiu ti classifier ny trong bin instance multiclassifier_.Khi classifier ny nhn mt gi tin, n s kim tra thng tin <source, group> trong packet headers,v giao din m gi tin xut pht (incoming interface hay iif);Thc hin kim tra trong MFC v nhn din slot c dng forward gi tin .Khe slot s ch ti mt replicator thch hp. Tuy nhin, nu classifier khng c u vo cho nhm <source, group> ny hay iif cho u vo khc, n s gi th tc upcall new-group{} cho classifier,vi mt trong hai m code nhn ra vn : + cache-miss xc inh rng classifier khng tm thy mt u vo <source, group> no + wrong-iif ch ra rng classifier tm thy u vo <source,group> nhng khng so snh c giao din vi gi tin ny.
_

Class Replicator Khi mt replicator nhn mt gi tin , n sao chp ti tt c cc khe slot ca n, mi slot tr ti mt outgoing interface i vi mi < source, group> Nu khng slot no c tm thy, C++ replicator gi th tc instance lp drop{} thc y hot ng giao thc nhanh Cc th tc instance iu khin cc thnh phn ca mi slot: + insert{oif} Chn mt outgoing interface mi vo slot tip theo + disable{oif} V hiu con tr slot ti oif. + enable{oif} kch hot con tr slot ti oif. + is-active{} Tr v true nu replicator coits nht mt slot dc kch hot. + exists{oif} Tr v true nu con tr slot tr ti oif c kch hot. + change-iface{source, group, oldiif, newiif} Sa cha u vo iif cho replicator.
Cyber Pro !!! :))

65

C s mng thng tin K4X

3.2.3 Protocol Internals


Centralized Multicast CtrMcast l tha k ca McastProtocol. Mt agent CtrMcast cn wocj to ra chomoix node.C mt agent CtrMcastComp trung tm tnh ton v ci t cc ng nh tuyn multicast cho ton th t p.Mi agent CtrMcast agent x l cc lnh chc nng, v gi li agent CtrMcastComp tnh li ng i thch hp + join-group{} ng k thnh vin mi vi agent CtrMCastComp v gi agent tnh ton li ng i cho mi thnh vin + leave-group{} L o ngc ca join-group{}. + handle-cache-miss{} c gi khi khng cng forwarding thch hp c tm thy vi ngun gi tin no .Trong trng hp centralized multicast,ngun mi bt u gi cc gi tin d liu.Do , agent CtrMcast ng k vi ngun mi vi agent CtrMcastComp.Nu c cc thnh vin trong nhm , tnh ton cy multicast mi.Nu nhm l ch RPT (cy chia s shared tree) , th : 1. To mt agent ng gi ngun; 2. To mt agent m gi tng ng RP 3. Hai agent c kt ni bi unicast; 4. Cng vo <S,G> tr outgoing interface ca n ti agent ng gi CtrMcastComp l mt agent tnh ton ng nh tuyn multicast tp trung + reset-mroutes{} Khi ng li tt c cc u vo multicast forwarding + compute-mroutes{} Tnh ton tt c cc u vo multicast forwarding + compute-tree{source, group} tnh ton mt cy multicast cho mt ngun tm tt c cc receiver trong mt nhm c bit +compute-branch{source, group, member} c thc hin khi mt receiver gia nhp mt nhm multicast .N cng c th c gi bi compute-tree{} khi bn thn n tnh li cy multicast .Thut ton khi to ti receiver,tm kim quy lin tip cc nexthop, cho ti khi tm thyngun hay RP, hoc tm thy mt node l mt phn ca cy multicast lin quan.Trong sut qu trnh, nhu replicator mi v mt outgoing interface s c ci t. + prune-branch{source, group, member} tng t nh compute-branch{} ngoi tr outgoing interface l disabled;Nu danh sch outgoing interface l rng ti mode ny n s i dc cy multicast , pruning ti cc node trung gian cho ti khi tm thy mt node c mt danh sch outgoing interface khng rng Dense Mode + join-group{group} Gi cc thng ip graft nu <S,G> khng cha cc slot outgoing kch hot no, (v d no downstream receiver).Nu nexthop hng ti ngun l mt LAN, tng b m ca receiver cho nhm i vi LAN. + leave-group{group} Gim b m LAN. +handle-cache-miss{srcID group iface} Da vo gi tr cu CacheMissMode gi hoc l handle-cache-miss-pimdm hay handle-cache-miss-dvmrp. + handle-cache-miss-pimdm{srcID group iface} Nu gi tin c nhn trn iif ng(t node m nexthop ch ti ngun), th a gi tin ra tt c oifs ngoi tr oif m tr v nexthop neighbor v oifs l cc LAN vi node khng c forward.Ni cch khc, nu giao din sai th gi mt prune tr li .

Cyber Pro !!! :))

66

C s mng thng tin K4X + handle-cache-miss-dvmrp{srcID group iface}truyn cc gi tin ra ch cc node l nexthop tr ti ngun (parent). + drop{replicator source group iface} Gi mt thng ip prune tr li hop trc . + recv-prune{from source group iface} Khi ng li b m prune nu giao din b prune trc .Ni cch khc, n s khi ng b m prune timer v s disables interface; xa hn,nu danh sch outgoing interface rng, n s truyn thng ip prune . + recv-graft{from source group iface} Hy b mt s b m prune timer,kch hot li giao din b prune.Nu danh sch giao din trc rng, n s forward graft ln ng truyn. + handle-wrong-iif{srcID group iface} c gi khi multicast classifier mt gi tin v n sai giao din + invoked new-group{}. Chu trnh ny b gi bi mrtObject instproc new-group{}.Khi gi, n gi mt thng ip prune tr v ngun

3.2.4 The internal variables


Class mrtObject protocols_ :Mt mng ca cc handleca instance giao thc kch hot ti node m giao thc hot ng, c nh du bi giao din vo- incoming interface. mask-wkgroups : Bin lp, nh ngha mask c dng nhn dng cc nhm ni ting - well known groups. wkgroups : Bin mng lp, mng ca cc a ch nhm ni ting, xc nh bi tn nhm. wkgroups(Allocd): l mt bin c bit nh v nhm ni ting c nh v cao nht.. McastProtocol status_ c gi tr l up hay down, biu th trng thi thc hin ca protocol instance. type_ cha loi (tn lp) ca giao thc c thc hin bi instance ny nh DM, hay ST. Simulator multiSim_ l 1 nu m phng multicast v 0 nu khc MrtHandle_ Nm gi handle ti i tng m phng multicast tp trung ha. Node switch_ L handle cho classifier wocj t bit cao nht ca a ch ch trong gi tin xc nh khi no l gi tin multicast (bit=1 ) hay gi tin unicast (bit = 0). multiclassifier_ L handle tr ti classifier thc hin so snh <s,g,iif> replicator_ Mng c nh ch mc bi <s,g> ca cc handle l bn sao ca mt gi tin multicast trn link yu cu. Agents_ Mng c dnh ch mc bi nhm multicast ca danh sch cc agent ti node cc b nghe hy group outLink_ Cached list ca outgoing interfaces ti node ny inLink_ Cached list ca incoming interfaces ti node ny. Link v SimpleLink iif_ L thao tc cho i tng NetworkInterface c t trn link head_ i tng u tin trn link, mt no-op connector.Tuy nhin i tng ny cha bin instance, link_, c tr ti i tng container Link . NetworkInterface ifacenum_ Bin lp , nm gi s giao din c th c tip theo

Cyber Pro !!! :))

67

C s mng thng tin K4X

Bng tra cu nh dng File Nam trace:


# : comment this line is ignored T : Dummy event to be used in time synchronization -t <time> time n : node -t <time> time -s <int> node id -v <shape> shape (circle, box, hexagon) -c <color> color -z <double> size of node -a <int> address -x <double> x location -y <double> y location -i <color> label color -b <string> label -l <string> label -o <color> previous color -S <string> state (UP, DOWN, COLOR) -L <string> previous label -p <string> label location -P <string> previous label location -i <color> inside label color -I <color> previous inside label color -e <color> label color -E <color> previous label color -u <string> x velocity -U <string> x velocity -V <string> y velocity -T <double> node stop time -w <flag> wireless node l : link -t <time> time -s <int> source id -d <int> destination id
Cyber Pro !!! :))

-r <double> transmission rate -D <double> delay -h <double> length -O <orientation> orientation -b <string> label -c <color> color -o <color> previous color -S <string> state (UP, DOWN) -l <string l> label -L <string> previous label -e <color> label color -E <color> previous label color + : enqueue packet -t <time> time -s <int> source id -d <int> destination id -e <int> extent -a <int> packet color attribute id -i <int> id -l <int> energy -c <string> conversation -x <comment> comment -p <string> packet type -k <string> packet type - : dequeue packet -t <time> time -s <int> source id -d <int> destination id -e <int> extent -a <int> attribute -i <int> id -l <int> energy -c <string> conversation -x <comment> comment -p <string> packet type -k <string> packet type

68

C s mng thng tin K4X h : hop -t <time> time -s <int> source id -d <int> destination id -e <int> extent -a <int> attribute -i <int> id -l <int> energy -c <string> conversation -x <comment> comment -p <string> packet type -k <string> packet type -R <double> wireless broadcast radius -D <double> wireless broadcast duration r : receive -t <time> time -s <int> source id -d <int> destination id -e <int> extent -a <int> attribute -i <int> id -l <int> energy -c <string> conversation -x <comment> comment -p <string> packet type -k <string> packet type -R <double> wireless broadcast radius -D <double> wireless broadcast duration d : drop line -t <time> time -s <int> source id -d <int> destination id -e <int> extent -a <int> attribute -i <int> id -l <int> energy -c <string> conversation -x <comment> comment -p <string> packet type -k <string> packet type E : session enqueue -t <time> time -s <int> source id
Cyber Pro !!! :))

-d <int> destination id -e <int> extent -a <int> attribute -i <int> id -l <int> energy -c <string> conversation -x <comment> comment -p <string> packet type -k <string> packet type D : session dequeue -t <time> time -s <int> source id -d <int> destination id -e <int> extent -a <int> attribute -i <int> id -l <int> energy -c <string> conversation -x <comment> comment -p <string> packet type -k <string> packet type P : session drop -t <time> time -s <int> source id -d <int> destination id -e <int> extent -a <int> attribute -i <int> id -l <int> energy -c <string> conversation -x <comment> comment -p <string> packet type -k <string> packet type a : agent -t <time> time -s <int> source id -d <int> destination id -x <flag> remove agent -n <string> agent name f : feature -t <time> time -s <int> source id -d <int> destination id -x <flag> remove feature -T <char> type -n <string> name -a <string> agent 69

C s mng thng tin K4X -v <string> value -o <string> previous value G : group -t <time> time -n <string> name -i <int> node id -a <int> group id -x <flag> remove from group L : lan link -t <time> time -s <int> source id -d <int> destination id -o <orientation> orientation -O <orientation> orientation m : mark node -t <time> time -n <string> name -s <int> node id -c <string> color -h <string> shape (circle, square, hexagon) -X <flag> remove mark R : routing event -t <time> time -s <int> source id -d <int> destination id -g <int> multicast group -p <packet source> packet source id or * -n <flag> negative cache -x <flag> this route timed out -T <double> timeout -m <string> mode (iif or oif) v : execute tcl expression -t <time> time -e <tcl expression> tcl script V : set trace file version -t <time> time -v <string> time -a <int> time N : use nam graph W : wireless range -t <time> time -x <int> X -y <int> Y g : energy status for future use -t <time> time A : hierarchical address space configuration initilization only -t <time> time -n <int> hierarchy -p <int> port shift -o <hex> port mask -c <int> mulitcast shift -a <int> multicast mask -h <int> hierarchy -m <int> node shift -s <int> node mask c : color table configuration initialization only -t <time> time -i <int> id -n <string> color q : create packet queue initialization only -t <time> time -s <int> source id -d <int> destination id -a <orientation> orientaion X : layout lan -t <time> time -n <string> name -r <double> rate -D <double> delay -o <orientation> orientation -O <orientation> orientation

Cyber Pro !!! :))

70

C s mng thng tin K4X

Cyber Pro !!! :))

71

You might also like