Professional Documents
Culture Documents
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
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 !!! :))
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 .
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 .
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:
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
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 .
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.
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.
11
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.
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.
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.
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.
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.
18
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_.
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.
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.
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
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
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().
24
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 .
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.
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.
27
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
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.
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#>
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).
31
.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 }
32
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>
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.
35
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)
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)
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
39
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
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.
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
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"
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> .....
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.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.
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).
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
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.
46
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
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 .
_
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 */
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.
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
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
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.
51
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.
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.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,
_
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.
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.
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 .
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
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
59
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)
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
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 ;
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
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.
63
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
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
67
-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
70
71