Professional Documents
Culture Documents
M PH NG TRONG NS-2
TI LI U THAM KH O LNH V C M PH NG V NG D NG
H N i 12 - 2009
N i dung trong ti li u ny c l y t m t s sch tham kh o v cc bi bo khoa h c. Vi c th c hi n ti li u ny l Phi L i Nhu n nn chng ti khng ti n hnh cc th t c v b n quy n. N u c nhn/t ch c no sao chp n i dung ti li u ny vo cc s n ph m thng m i th trch nhi m th c thi v n b n quy n thu c v c nhn/t ch c . y l m t ti li u mi n ph. B n hon ton c th phn ph i l i cho nh ng ng i s d ng khc ho c c th ch nh s a cho ph h p. Ti li u ny c pht hnh v i hy v ng r ng n s tr nn h u ch, nhng n KHNG KM THEO B T K S B O M NO, ngay c nh ng m b o ng m hi u v vi c thng m i ho hay ph i ph h p v i m t ch c th no (v n ny b n c th tham kh o gi y php GNU General Public License bi t thm chi ti t) Ti li u ny c ti t ng h p v nh d ng l i t cc b n d ch. Trong qu trnh nh d ng, ti c g ng s a cc l i nh: tham chi u cc ph n, l i chnh t , thi u d u ... nhng c th cn b st. Trong tr ng h p b n c pht hi n c l i, cc b n hy g i th v a ch li u ny. Cc l i ny s c s a i trong phin b n k ti p cu i ti
One Edition
Xin c trch d n m t cu trong cu n sch "The Last Lecture", tc gi cu n sch lm vi c t i tr ng i h c Carnegie Mellon (CMU). L do trch d n xin m i b n c tm hi u ...!
L i ni u
K t khi ban qu n tr di n n vntelecom.org thnh l p nhm AdNet cho t i nay c hn m t nm. T khi thnh l p nhm pht ng d n NETSIM D n bin t p ti li u m ph ng b ng ti ng Vi t. n thng 04/2009 nhm hon thnh t p m t c a d n, ti li u c tn l - "L thuy t chung v m ph ng". T p m t c cng b chnh th c trn di n n vntelecom.org. Sau khi hon thnh t p m t, nhm ti p t c pht tri n d n v i m c tiu l hon thnh t p hai: M ph ng trong NS-2. Sau nhi u l n tr hon v nh ng l do khc nhau, n thng 12-2009 nhm hon thnh t p hai. t p m t chng ti bin d ch v gi i thi u v i b n c nh ng khi ni m t ng quan trong m ph ng. Nh ng khi ni m v nh gi hi u nng, cc l i th ng g p khi m ph ng, cc k thu t m ph ng, nguyn l v m ph ng, gi i thi u v m ph ng r i r c trong h th ng m ng my tnh v m ng vi n thng. Ngoi ra cn c p n vi c so snh v nh gi cc chng trnh m ph ng ph bi n hi n nay. Nh v y, n i dung trong t p m t l n n t ng nh ng ng i quan tm n lnh v c m ph ng c th tm hi u. ng th i n l c s b n c tm hi u cc v n c c p trong t p hai. Nh ng v n ny th ng hay b b qua i v i nh ng ng i m i tm hi u. Trong t p hai, chng ti gi i thi u v i b n c m t b cng c m ph ng c th - l b cng c m ph ng NS-2-allinone. Trong ti li u ny g i t t l NS-2. L do chng ti ch n NS-2 n gi n l y l b m ph ng m ngu n m , mi n ph v i ng i dng. N l b cng c m ph ng m nh, c c ng ng m ng s d ng ph bi n kh p ni trn th gi i, th m ch c nh ng di n n chuyn v chng. B m ph ng ny ph h p v i cc i t ng sinh vin, nghin c u sinh. Thng tin chi ti t c trnh by chng 1 c a cu n ny.
M c ch c a vi c d ch ti li u xy d ng n i dung cho t p hai, chng ti l a ch n v bin d ch t cc ti li u [1] [2] [3] [4], y l nh ng ti li u khng th thi u c v i nh ng ai ang v s tm hi u v m ph ng. S d nhm ti n hnh d n bin d ch ny l ph bi n NS-2 t i cc b n sinh vin, cc nghin c u sinh.... Ngoi ra cc b n m i tm hi u 4
v c nh tm hi u rt ng n c th i gian ti p c n. m bo tnh chnh xc v cc v n b n quy n, chng ti a thng tin v ngu n g c c a b n g c b n c l a ch n d ch u m i chng. N u c m th y cha an tm v i b n d ch cc b n c th tham kh o tr c ti p cc b n g c.
N i dung cc chng trong t p hai T chng 1 t i chng 4 gi i thi u t ng quan v NS2, cc thnh ph n trong NS2, gi i thi u v hai ngn ng chnh c s d ng trong NS-2 l TCL v C++, m t v file v t sau khi ch y m ph ng. . Hi u v n m ch c cc ph n ny b n c s s d ng NS-2 c t t hn. cc b n m i tm hi u h ng th hn v i NS-2, chng ti trnh by trong chng 5 m t tutorial h ng d n b n c c th t o c m t chng trnh n gi n u tin. c bi t, chng 5 cn cung c p m ngu n c a cc chng trnh m u, b n c c th t i v , ch y th v quan st k t qu . Chng 6, 7, 8,9 cung c p cho b n c ki n th c v cc k thu t m t v giao th c truy n t i TCP, UDP, m t v TCP/IP trong NS, lo i b ng u nhin s m. y l cc k thu t c b n p d ng vo m t chng trnh c th . T chng 10 n chng 14 gi i thi u v i b n c chi ti t hn v cc m-dun m ph ng ph bi n. N i dung c a t ng chng c t p trung lm sng t cc v n t l thuy t cho n lc p d ng vo m hnh m ph ng. N i dung cc chng ny c th ni m c nng cao hn, ph h p v i nh ng sinh vin nm cu i. Nh ng ng i lm ti t t nghi p c th tham kh o ph c v cho bo co c a mnh. i n hnh l: Chng 10: M ph ng m ng LAN. Chng 11: M ph ng MPLS [4] Chng 12: M ph ng hng i. Chng 13: M ph ng trong m ng di ng. Chng 14: M ph ng m ng v tinh. V i hn 200 trang ti li u, khng qu di m cng khng qu ng n. Nhm bin so n hi v ng s cung c p cho b n c nh ng trang ti li u b ch. D a vo y b n c c th ti p c n, k th a, pht tri n v sng t o ra cc k ch b n m ph ng. N u kh nng c th vi t c cc m-dun d a trn NS2. t o ra ti li u ny cc nhm lm vi c s d ng nh ng ti n ch c cung c p trn m ng internet, g n k t v lin l c v i nhau. Cc nhm c t ch c theo quy trnh: l a ch n ti li u, d ch, bin t p, nh d ng v xu t b n. Thng tin nhm cc b n c th tham kh o ph n cu i cng c a ti li u. 5
V i tinh th n t nguy n, ch ng v khng ng ng h c h i gip chng ti hon thnh ti li u ny. S n ph m ny l cng s c chung c a c nhm, nhn y ban bin t p chn thnh cm n s c ng tc c a cc c nhn, cc sinh vin, cc th y c t cc tr ng i h c, ng th i xin c g i l i cm n t i ban qu n tr di n n vntelecom.org t o ra sn chi ny, y l m t sn chi th c s b ch v i nh ng ng i quan tm n lnh v c m ng vin thng ni ring v truy n thng ni chung. Cu n sch ny c thnh vin trong nhm NETSIM nh d ng v hi u ch nh. Trong qu trnh lm vi c c g ng h t kh nng th hi n ti li u c khoa h c nh t, trong qu trnh nh d ng ch nh s a l i cc ph n tham kh o, cc ch thch theo b n g c, m t s ch ng i d ch khng a vo b n d ch. Do khi c ti li u ny cc b n c th tham kh o cng v i b n g c n u c kh nng Anh vn t t. c bi t, vi c th ng nh t cc thu t ng r t c n b n c v nh ng ng i c kinh nghi m gp thm. Trong phin b n t i, nhm s b xung cc thi u st (thu t ng , l i chnh t , c php cu, vi t ha hnh nh . . . ), b xung cc m-dun m ph ng WiMax, m ph ng WDM, m ph ng SDR. . . Vi c ci t NS-2 c r t nhi u ti li u v h ng d n b ng ti ng Vi t cc b n c th tham kh o t m ng internet, chng ti khng a vo trong ti li u ny.
M i ki n ng gp b n c c th g i v th i n t c a nhm: adnet@ vntelecom. org ban bin t p s ti p nh n, s a ch a v b xung k p th i. Ngy 24 thng 12 nm 2009 Tc gi
Nhm bin so n
M cl c
L i ni u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M c l c ..................................................... Danh sch hnh v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Danh sch b ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nh ng t vi t t t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 1. Gi i thi u v NS-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1. Khi ni m t ng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. T ng quan v m ngu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. L p Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1. t c m t tham chi u v i v d v l p Tcl . . . . . . . . . . . . . . . . . . . . . 1.3.2. D n ch ng v cc th t c c a OTcl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3. Truy nh p cc k t qu n/t trnh thng d ch . . . . . . . . . . . . . . . . . . . . 1.3.4. Thot v bo co l i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.5. Cc hm hash trong trnh thng d ch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.6. Cc ho t ng khc trn trnh thng d ch . . . . . . . . . . . . . . . . . . . . . . . . .
4 7 16 18 19 21 22 23 24
24 25 26 26 27 27
1.4. L p TclObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1. T o v hu cc TclObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.2. S rng bu c bi n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.3. Bm v t bi n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.4. Cc phng th c command: nh ngha v g i ra . . . . . . . . . . . . . . . . . .
28
29 31 33 35
1.5. L p TclClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1. Lm th no rng bu c cc bi n thnh vin l p C++ tnh . . . . . .
37
39
1.6. L p Tcl Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7. L p EmbeddedTcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.8. L p InstVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 2. C b n v TCL v OTCL . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1. T ng quan v NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. L p trnh Tcl v Otcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 3. Cc thnh ph n c b n trong b m ph ng NS . . . . . . 3.1. Kh i t o v k t thc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. nh ngha m t m ng cc lin k t v cc nt . . . . . . . . . . . 3.3. Tc nhn v ng d ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1. FTP trn n n TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. CBR qua UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. UDP v i cc ngu n lu l ng khc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41 43 44 46 46 47 53 54 56 58
59 60 61
61 65 67
67 67
3.7. Bi n ng u nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.1. H t nhn (hay gi tr ban u c a m t bi n ng u nhin)v b t o . 3.7.2. T o cc bi n ng u nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
70 70
Chng 4. Lm vi c v i file trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1. X l file d li u v i cng c awk . . . . . . . . . . . . . . . . . . . . . . 4.2. S d ng grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. X l cc file d li u v i perl . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. V th v i gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5. V th v i xgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73 74 75 76 78 79
4.6. Trch tch thng tin trong m t k ch b n tcl . . . . . . . . . . . . . 4.7. Minh h a m t s file awk v gnuplot . . . . . . . . . . . . . . . . . . .
4.7.1. Tnh thng l ng c a m ng theo hai ki u file trace . . . . . . . . . . . . . . . . 4.7.2. M u v th thng l ng v a tnh xong b ng file awk . . . . . . . . . . . .
80 80
80 82
4.8. M t s file hnh plot v b ng gnuplot . . . . . . . . . . . . . . . . . . . Chng 5. NS Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1. K ch b n Tcl u tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1. B t u nh th no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2. Hai node, m t lin k t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3. G i d li u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82 84 84
85 86 87
88
88 89 91 91
5.3. M ng c tnh ch t ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1. T o m t Topo l n hn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2. Lin k t l i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
93 94
96 97
97 97 99 99 100
6.2. Qu trnh bm v t v phn tch v d Ex1.tcl . . . . . . . . . . 6.3. TCP trn lin k t nhi u v vi c gim st hng i . . . . . 6.4. T o nhi u k t n i v i cc c tnh ng u nhin . . . . . . . . . 6.5. Cc k t n i TCP ng n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.6. Cc cng c gim st tin ti n: . . . . . . . . . . . . . . . . . . . . . . . . 6.7. Bi t p. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 7. nh tuy n v m ng di d ng . . . . . . . . . . . . . . . . . . . . . . . 7.1. B t u nh th no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2. M ng ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3. Cc giao th c nh tuy n multicast (PIM) . . . . . . . . . . . . .
7.3.1. Ch Dense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.2. nh tuy n d a trn i m RP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
132
135 136
7.5. Kh o st m ph ng pimdm.tcl . . . . . . . . . . . . . . . . . . . . . . . . 7.6. Bi t p. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 8. Lo i b ng u nhin s m . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1. M t RED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2. Thi t t cc tham s RED trong ns . . . . . . . . . . . . . . . . . . 8.3. Cc v d v m ph ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1. B m lo i Drop-Tail (B ng ui) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.2. B m RED v i c u hnh tham s t ng . . . . . . . . . . . . . . . . . . . . . . 8.3.3. B m RED v i cc tham s khc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4. Gim st cc lu ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5. Bi t p. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 9. Cc d ch v phn bi t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1. M t chuy n ti p c m b o c a Diffserv . . . . . . . . . . . . 9.2. Cc router MRED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.1. M t chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.2. C u hnh MRED trong ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.3. Truy v n TCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
166
166 167
168
168
9.5. K t qu m ph ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6. Th o lu n v k t lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7. Bi t p. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 10. M ph ng m ng LAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1. C s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2. M ph ng m ng LAN v i ns: . . . . . . . . . . . . . . . . . . . . . . . . . Chng 11. M ph ng m ng cho MPLS (MNS) . . . . . . . . . . . . . . . 11.1. Gi i thi u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Gi i thi u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.1. M c ch v ph m vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.2. M hnh khi ni m c a MNS h tr QoS . . . . . . . . . . . . . . . . . . . . . . . .
187
187 188 189 190 190
11.4. Cc v d m ph ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.1. M ph ng lu l ng QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.2. M ph ng s u tin tr c ti nguyn . . . . . . . . . . . . . . . . . . . . . . . . . . .
191
191 192
11.5. K t lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
193
11
195 197
197 198 198 199
12.2. M ph ng m ng di ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2.1. K ch b n m ph ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.2. Vi t m t tcl script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
200
200 201
12.3. nh d ng file v t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4. Phn tch k t qu m ph ng . . . . . . . . . . . . . . . . . . . . . . . . . 12.5. So snh v i nh tuy n ad-hoc khc . . . . . . . . . . . . . . . . . .
12.5.1. TCP qua DSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.2. TCP qua AODV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.3. TCP qua TORA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.4. M t vi bnh lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
211
211 213 216 219
Chng 13. Hng i c i n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.1. M ph ng hng i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2. Hng i h u h n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 14. M ng v tinh trong NS . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.1. T ng quan v cc m hnh v tinh . . . . . . . . . . . . . . . . . . . .
14.1.1. V tinh a tnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.1.2. Cc v tinh LEO (Cc v tinh qu o th p) . . . . . . . . . . . . . . . . . . . .
12
230
230 233 235 237 239 240 240 240 241 242
14.3. Th c hi n ph n m r ng m ph ng v tinh . . . . . . . . . .
14.3.1. S d ng cc danh sch lin k t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3.2. C u trc nt m ng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3.3. Cc chi ti t v ng truy n v tinh. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
243
243 244 245
13
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8
6.9
6.10 S l ng k t n i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.11 Bng thng c s d ng trong giai o n ngh n c chai 7.1 7.2 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9
V d v nh tuy n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 V d v nh tuy n multicast . . . . . . . . . . . . . . . . . . . . . . . . 133 Thi t l p m ng cho vi c nghin c u RED . . . . . . . . . . . . . . . . . . 144 S tng kch th c hng i . . . . . . . . . . . . . . . . . . . . . . . . . 148 Kch th c c a s c a t t c cc phin k t n i TCP . . . . . . . . . . . . 148 S ti n tri n c a kch th c hng i trung bnh t c th i . . . . . . . . . 149 S ti n tri n c a kch th c hng i trung bnh t c th i phng to . . . 149 Kch th c c a s c a tc c cc phin k t n i TCP cho b m RED v i cc c u hnh tham s t ng . . . . . . . . . . . . . . . . . . . . . . 150 S thay i v kch th c hng i . . . . . . . . . . . . . . . . . . . . . 154 Kch th c hng i c a t t c cc phin k t n i cho b m RED . . . 154 S ti n tri n c a kch th c hng i v gi tr trung bnh c a n . . . . 161
8.10 S ti n ha c a kch th c hng i v gi tr trung bnh c a n c phng to) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 8.11 S cc phin k t n i tch c c theo th i gian . . . . . . . . . . . . . . . . . 161 9.1 9.2 Topo m ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 S ti n ha c a t ng s phin . . . . . . . . . . . . . . . . . . . . . . . . 178
10.1 V d m ng LAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 11.1 M hnh khi ni m c a MNS . . . . . . . . . . . . . . . . . . . . . . . . . 187 11.2 Ki n trc nt MPLS v i chuy n m ch nhn . . . . . . . . . . . . . . . . 188 11.3 X l lu l ng QoS MPLS c a nt v link MPLS . . . . . . . . . . . . . 189 11.4 Qu trnh ginh tr c ti nguyn c a nt v link MPLS . . . . . . . . . 189 11.5 M c l p trong MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 11.6 M ng MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 11.7 M l p l ch s kin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 11.8 S bi n i lu l ng bng thng . . . . . . . . . . . . . . . . . . . . . . 192 11.9 M l p l ch s ki n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 11.10K t qu c a m l p l ch s ki n . . . . . . . . . . . . . . . . . . . . . . . 193 12.1 V d v m t m ng ad-hoc 3 i m . . . . . . . . . . . . . . . . . . . . . . 201
15
12.2 Kch th c c a s TCP trong k ch b n 3 nt m ng v i giao th c nh tuy n DSDV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 12.3 Kch th c c a s TCP trong k ch b n 3 nt m ng v i giao th c nh tuy n DSDV v i k t n i qua v khng qua trung gian) . . . . . . . . . . 208 12.4 TCP trong k ch b n 3 nt m ng v i giao th c nh tuy n DSDV, th i i m 124.14 giy, k t n i tr c ti p . . . . . . . . . . . . . . . . . . . . . . 208 12.5 TCP trong k ch b n 3 nt m ng v i giao th c nh tuy n DSDV, th i i m 58 giy, k t n i qua 1 trung gian . . . . . . . . . . . . . . . . . . . 208 12.6 Kch th c c a s c a k t n i TCP qua DSR . . . . . . . . . . . . . . . . 209 12.7 Kch th c c a s c a k t n i TCP qua AODV . . . . . . . . . . . . . . 209 12.8 Kch th c c a s c a k t n i TCP qua TORA v i 4 nt m ng . . . . . . 210 12.9 TCP qua AODV v i gi tr l n c a kch th c c a s l n nh t . . . . . . 210 12.10TCP qua TORA v i 4 nt m ng, i m th i gian 33 . . . . . . . . . . . . 211 12.11TCP qua Tora v i 4 nt m ng. i m th i gian 56 . . . . . . . . . . . . . 211 12.12Chu i topo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 12.13S gi tin/giy i v i n = 9 nh m t ch c nng c a kch c c a s l n nh t216 12.14S gi tin/giy i v i n = 20 nh m t ch c nng c a kch c c a s l n nh t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 12.15: S gi tin/giy i v i n = 30 nh m t ch c nng c a kch c c a s l n nh t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 12.16Ti n trnh c a kch th c c a s cho TCP chu n v i kch th c c a s l n nh t l 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 12.17Ti n trnh c a kch th c c a s cho DelAck TCP v i d = 3 v kch th c c a s l n nh t l 2000 . . . . . . . . . . . . . . . . . . . . . . . . 217 12.18Ti n trnh c a kch th c c a s cho TCP chu n v i 9 nt m ng v kch th c c a s l n nh t l 3 . . . . . . . . . . . . . . . . . . . . . . . 218 12.19Tc ng c a kho ng th i gian tr ACK t i s gi tin TCP g i c, nh l m t ch c nng c a kch th c c a s l n nh t. d=3 . . . . . . . . 218 13.1 S m r ng kch c c a hng i M/M/1 . . . . . . . . . . . . . . . . . . 223 14.1 V d c a m t chm sao LEO qu o c c . . . . . . . . . . . . . . . . . 229 14.2 H th ng t a hnh c u dng cc nt m ng v tinh . . . . . . . . . . . 231 14.3 Cc thnh ph n chnh c a giao di n m ng v tinh . . . . . . . . . . . . . 234 14.4 B sung danh sch ng truy n trong ns . . . . . . . . . . . . . . . . . 243 14.5 C u trc c a l p SatNode . . . . . . . . . . . . . . . . . . . . . . . . . . 245 14.6 Chi ti t c t ngn x p giao di n c a m ng . . . . . . . . . . . . . . . . 246
16
Danh sch b ng
2.1 2.2 2.3 2.4 3.1 3.2 3.3 3.4 3.5 3.6 4.1 4.2 4.3 4.4 4.5 6.1 6.2 6.3 6.4 7.1 7.2 7.3 8.1 8.2 Chng trnh Tcl th c hi n cc php ton . . . . . . . . . . . . . . . . . 49 Chng trnh Tcl tnh ton cc s nguyn t . . . . . . . . . . . . . . . . 50 Chng trnh Tcl tnh giai th a c a m t s . . . . . . . . . . . . . . . . . 51 Chng trnh Tcl n gi n s d ng i t ng real v integer . . . . . . . 52 nh ngha cc nt, knh truy n v gn kch c hng i . . . . . . . . . 57 nh ngha m t ng d ng FTP s d ng tc nhn TCP . . . . . . . . . . 58 nh ngha m t ng d ng CBR s d ng tc nhn UDP . . . . . . . . . . 60 Chng trnh ex.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 N i dung c a m t file bm v t (trace file) . . . . . . . . . . . . . . . . . 69 Ki m tra cc bi n ng u nhin phn b Pareto v i cc seed khc nhau . . 72 awk script tnh gi tr trung bnh c a c t 4 c a m t file . . . . . . . . 74 awk script tnh gi tr l ch chu n c a c t 4 c a m t file . . . . . . 74 M t o n m awk s d ng m ng tnh trung bnh v l ch chu n . . 75 M t o n m tnh t ng cc c t . . . . . . . . . . . . . . . . . . . . . . . 75 M t o n m tnh thng l ng . . . . . . . . . . . . . . . . . . . . . . . 77 nh ngha m t ng d ng FTP s d ng tc nhn TCP . . . . . . . . . . 106 o n m ex3.tcl i v i m t s k t ni TCP c nh tranh . . . . . . . . . 111 o n m shortTcp.tcl i v i m t s k t ni TCP ng n . . . . . . . . . . 118 o n m shortTcp.tcl i v i m t s k t ni TCP ng n . . . . . . . . . . 124 K ch b n tcl cho nh tuy n tnh v ng(ex2.tcl) . . . . . . . . . . . . . 129 V d cho multicast v i m hnh DM: pimdm.tcl . . . . . . . . . . . . . . 135 V d cho multicast v i m hnh i m RV: bts.tcl . . . . . . . . . . . . . 138 o n m tcl droptail.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 o n m tcl droptail.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
17
K ch tcl shortRed.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 o n m Diffs.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 B o v cc gi tin d b t n thng nh m t hm c a CIR . . . . . . . . 177 Th i gian trung bnh c a mt phin theo hm CIR . . . . . . . . . . . . 177
12.1 K ch b n "wrls-dsdv.tcl" cho TCP ttrn m t m ng ad-hoc . . . . . . . . 207 12.2 K ch b n tcpwD.tcl cho TCp qua m t m ng ad-hoc tnh v i chu i topo . 215 12.3 S l ng gi tin g i c trong kho ng th i gian 149 giy v i n=3 nh m t ch c nng c a kch th c c a s l n nh t . . . . . . . . . . . . . . . 219 13.1 K ch b n tcl mm1.tcl m ph ng hng i MM1 . . . . . . . . . . . . . 222 13.2 K ch b n tcl mm1k.tcl m ph ng hng i MM1. . . . . . . . . . . . . . 225
18
Nh ng t vi t t t
AODV CDMA CIR CTS CR-LDP CR-LSP CSMA/CD Diffserv ED ERB FDDI FDMI FTP IEEE Intserv IP LAN LDP LIB LSP LSR MAC MPLS MRED NAM NS NS 2 PFT PHB QoS RED RFC RR Ad hoc On Demand Distance Vector Code Division Multiple Access Committed Information Rate Clear to Send Constraint-based Label Distribution Protocol Constraint-based routed label switched path Carrier Sense Multiple Access with Collision Detect Differentiated Services Early Drops Explicit Route information Base Fiber Distributed Data Interface Frequency Division Multiple Access File Transfer Protocol Institute of Electrical and Electronics Engineers Integrated Service Internet Protocol Local Area Network Label Distribution Protolcol Label Information Table Label Switch Path Label Switch Router Medium Access Control Multiprotocol Label Switching Multi RED Network Animator Network Simulaton Network Simulaton version 2 Partial Forwarding Table Per Hop Behavior Quality of service Random Early Detection Request for Comments Round Robin 19
Transmission Control Protocol Time Division Multiple Access User Datagram Protocol Universal Mobile Telecommunications System Virtual InterNetwork Testbed Weighted Interleaved Round Robin
20
21
T i sao l i l hai ngn ng ? NS s d ng hai ngn ng b i v b m ph ng c hai ki u cng vi c khc nhau c n ph i lm. M t m t, m ph ng chi ti t cc giao th c yu c u m t ngn ng l p trnh h th ng c th thao tc m t cch hi u qu n cc byte, cc tiu gi, v cc thu t ton tri n khai m c th ch y trn m t t p d li u l n. V i nhi m v ny th t c ch y chng trnh v th i gian xoay vng (g m ch y m ph ng, tm l i, s a l i, bin d ch l i, ch y l i) l t quan tr ng hn. M t khc, m t ph n l n cc nghin c u v m ng bao g m cc tham s ho c cc c u hnh t thay i, hay nghin c u nhanh chng m t s ho t c nh. Trong cc tr ng h p , th i gian l p l i (thay i m u v ch y l i) quan tr ng hn. Khi c u hnh ch y m t l n ( t i th i i m b t u m ph ng), th i gian ch y c a ph n nhi m v ny th t quan tr ng hn. NS p ng c hai yu c u ny v i 2 ngn ng , C++ v OTcl. V i C++ ch y chng trnh nhanh nhng thay i l i ch m hn, i u khi n n ph h p cho vi c
vn te lec om
22
NS l m t b m ph ng h ng i t ng, c vi t b ng ngn ng C++, v i trnh thng d ch OTcL nh l l p v (frontend). B m ph ng ny h tr m t nhnh l p trong C++ ( cn c g i l nhnh c bin d ch compiled hierarchy trong ti li u ny ), v m t nhnh l p tng t trong trnh thng d ch OTcL ( trong ti li u ny g i l nhnh c thng d ch interpreted hierarchy). Hai h th ng ny c m i tng quan kh m t thi t; nhn t pha ng i s d ng th y l m i tng quan m t - m t gi a m t l p nhnh thng d ch v m t l p nhnh bin d ch. Ph n g c c a nhnh ny l l p TcLObject. Ng i dng t o cc i t ng c a b m ph ng m i thng qua b thng d ch; cc i t ng ny c t o s n bn trong trnh thng d ch, v cng c ph n nh b i m t i t ng tng ng trong nhnh bin d ch. Nhnh l p c thng d ch s c thnh l p m t cch t ng thng qua cc phng php c nh ngha trong l p TcLClass. Cc i t ng c t o s n c ph n nh thng qua cc phng php c nh ngha tr ng l p TclObject. C cc nhnh khc trong m C++ v o n m Otcl; nh ng nhnh khc ny khng c ph n nh trong cch c a TclObject.
tri n khai giao th c chi ti t. OTcl ch y ch m hn nhi u nhng c th c thay i r t nhanh (v c th tng tc), v n l t ng cho vi c c u hnh m ph ng. NS (thng qua tclcl) cung c p s k t dnh t o nn cc i t ng v cc bi n trong c hai ngn ng . bi t thm thng tin v t ng v cc ngn ng t o b n v chng trnh phn chia ngn ng , tham kh o tiu c a Ousterhout trong IEEE Computer. Thng tin v chng trnh phn c p phn chia cho m ph ng m ng, xem trang NS[2]. Ngn ng no lm g? C hai ngn ng ct th l a ch n d n n lm tng s cu h i r ng ngn ng no nn c dng cho m c ch g. L i khuyn c b n c a chng ti l dng Otcl : C u hnh, ci t, v cc cng vi c th c hi n m t l n. N u b n c th lm i u g b n mu n b ng vi c thao tc v i cc i t ng c s n trong C++ v dng C++. N u b n s lm b t c th g m yu c u x l m i gi c a m t lu ng. N u b n ph i thay i ho t ng c a m t l p c s n trong C++ b ng nh ng cch m cha t ng c bi t n. V d , cc knh truy n l cc i t ng OTcl m t p h p tr , vi c x p hng, v cc mun c th b m t. N u b n c th s d ng thnh th o cc cng c ny th t t. N u khng, thay vo b n mu n lm i u g ring bi t (m t quy t c x p hng c bi t ho c cc ki u m t mt), th b n c n m t i t ng C++ m i. C nh ng ph n khng r rng: h u h t vi c nh tuy n c th c hi n trong OTcl (m c d thu t ton li Dijkstra trong C++). Chng ta c nh ng b m ph ng HTTP m trong m i lu ng c b t u trong OTcl v qu trnh x l trn m t gi c nh ngha trong C++. i u ny n khi chng ta c 100cc lu ng b t u trn m t giy trong th i gian m ph ng. Ni chung, n u chng ta c n n Tcl nhi u l n trn m t giy, th nn chuy n sang C++.
m C++ s dng truy c p trnh thng d ch. L p TclObject (ph n 1.4) l l p c b n cho t t c cc i t ng c a b m ph ng m cng c ph n nh vo trong h th ng c p b c c bin d ch. L p TclClass (ph n 1.5) xc nh cc h th ng c p b c l p c bin d ch, v cc phng php cho php ng i dng di n gi i TclObjects. L p TclCommand (ph n 1.6) c s d ng nh ngha cc l nh bin d ch ton c c c b n. L p EmbeddedTcl (ph n 1.7) bao g m cc phng th c t i cc l nh c s n c p cao hn, i u ny lm cho vi c m ph ng c u hnh tr nn d dng hn. Cu i cng, l p InstVar (ph n 1.8) l cc phng php truy c p cc bi n thnh vin c a C++ nh l cac bi n trong OTcl. Cc th t c v cc hm c m t trong chng ny c th c tm th y trong tclcl/Tcl.cc, h, tclcl/Tcl2.cc, tclcl/tcl-object.tcl, v tclcl/tracedvar.cc, h. File tclcl/tcl2c++.c c dng xy d ng ns, v c c p m t cch ng n g n trong chng ny.
1.3. L p Tcl
L p class Tcl tm g n tr ng h p th c c a b thng d ch OTcl, v cung c p cc phng php truy c p v giao ti p v i b thng d ch ny. Cc phng th c c m t trong ph n ny lin quan n ng i l p trnh ns, t c ng i s vi t o n m C++. N cn cho ta cc phng php cho cc ho t ng sau y: t c tham chi u t i Tcl instance. G i ra cc th t c OTcl thng qua b thng d ch. Khi ph c ho c g i l i cc k t qu c a trnh thng d ch. Bo co cc tnh tr ng l i v thot ra nh bnh th ng. Lu tr v tra c u cc TclObjects. Ginh quy n truy c p tr c ti p vo trnh thng d ch.
24
1.3.2. D n ch ng v cc th t c c a OTcl
C 4 phng php khc nhau g i ra m t l nh OTcl thng qua tr ng tcl. Chng khc nhau m t cch c b n v cc i s g i. M i hm chuy n m t chu i vo trnh thng d ch, m sau nh gi chu i ny trong m t ng c nh chung (global context). Cc phng php ny s tr v cho hm g i n u trnh thng d ch tr v b n tin TCL_OK. Hay ni cch khc, n u trnh thng d ch tr v TCL_ERROR, cc phng th c ny s g i th t c tkerror{}. Ng i dng c th lm qu t i th t c ny c b qua m t s lo i l i no . Nh ng ph c t p c a vi c l p trnh OTcl n m ngoi ph m vi c a ti li u ny. Ph n ti p theo (ph n 1.3.3) s m t cc phng th c truy c p k t qu c tr v b i b thng d ch. tcl.eval(char* s) invokes Tcl_GlobalEval() to execute s through the interpreter. tcl.evalc(const char* s) preserves the argument string s. It copies the string s into its internal buffer; it then invokes the previous eval(char* s) on the internal buffer. tcl.eval() assumes that the command is already stored in the class internal bp_; it directly invokes tcl.eval(char*bp_). A handle to the buffer itself is available through the method tcl.buffer(void). tcl.evalf(const char* s, . . . ) is a Printf(3) like equivalent. It uses vsprintf(3) internally to create the input string. tcl.eval(char* s) vi n d n Tcl_GlobalEval() th c thi s thng qua trnh thng d ch. tcl.evalc(const char* s) lu gi chu i i s s. N copy chu i s vo b m bn trong; sau n d n nh p eval(char* s) tr c ln b m bn trong. tcl.eval() cho r ng l nh c lu tr s n sng trong bp_ n i c a l p; n d n nh p tcl.eval(char*bp_) m t cch tr c ti p. M t khc b m c a n lun s n sng thng qua th t c tcl.buffer(void). tcl.evalf(const char* s, . . . ) tng ng v i Printf(3). N s d ng vsprintf(3) t o nn m t chu i n i t i bn trong n. V d , d i y l m t s cch s d ng cc phng php ni trn: Tcl& tcl = Tcl::instance(); char wrk[128]; strcpy(wrk, "Simulator set NumberInterfaces_ 1"); tcl.eval(wrk); sprintf(tcl.buffer(), "Agent/SRM set requestFunction_ %s", "Fixed"); 25
tcl.eval(); tcl.evalc("puts stdout hello world"); tcl.evalf("%s request %d %d", name_, sender, msgid);
1.3.4. Thot v bo co l i
Phng php ny cung c p m t cch th c quy chu n bo co cc l i trong m c bin d ch. tcl.error(const char* s) th c hi n cc ch c nng sau y: ghi s vo stdout; ghi tcl_>result vo stdout; thot ra v i m l i 1. 26
tcl.resultf("cmd = %s", cmd); tcl.error("invalid command specified"); /*NOTREACHED*/ Lu , khng c s khc nhau nhi u gi a vi c tr v b n tin TCL_ERROR nh chng ta lm trong ph n tr c (ph n 3.3.3), v vi c g i Tcl::error(). B nh d ng s t o m t ngo i l bn trong trnh thng d ch; ng i dng c th gi ngo i l ny v c th khi ph c l i t l i. N u ng i dng khng nh ngha b t c ngo i l no, th trnh thng d ch s in m t v t c m v thot. Tuy nhin, n u m g i ra error(), th ng i dng m ph ng khng th gi l i; thm vo , ns s khng in b t k m t v t c m no.
27
1.4. L p TclObject
class TclObject l l p c b n cho h u h t cc l p khc trong cc nhnh thng d ch v bin d ch. M i i t ng trong l p TclObject c t o ra b i ng i dng t bn trong b thng d ch. M t i t ng ph n bng tng ng c t o ra nhnh bin d ch. Hai i t ng ny c m i tng quan ch t ch v i nhau. L p TclClass, m s c m t trong ph n ti p theo, ch a cc c c u th c hi n qu trnh bng ho (qu trnh nh x t i t ng nhnh thng d ch sang i t ng nhwrnh bin d ch ). Trong ph n cn l i c a ti li u ny, chng ta s th ng xuyn g i m t i t ng l m t TclObject1. B ng cch , ta xem xt m t i t ng c th m c tr ng l p TclObject ho c trong m t l p m c t o ra t l p TclObject. N u c n thi t, ta xc nh xem i t ng l m t i t ng trong b thng d ch hay l trong m bin d ch. Trong nh ng tr ng h p nh v y, chng ta s s d ng cc thu t ng tng ng l " i t ng thng d ch", v " i t ng bin d ch" phn bi t hai lo i i t ng trn. Nh ng s khc bi t t ns v1 Khng nh ns v1, l p TclObject1 g p cc hm tr c y c a l p NsObject. V th , n lu tr nh ng lin k t bi n giao di n ( ph n 1.4.2) m dng n i cc bi n instance c a Otcl trong i t ng thng d ch v i cc bi n thnh vin C++ tng ng trong i t ng bin d ch. S rng bu c ny m nh hn trong ns v1 v trong b t k s thay i cc bi n OTcl u b kho, v cc gi tr C++ v OTcl hi n t i u c lm cho ph h p sau m i l n truy c p thng qua b thng d ch. S ng nh t c th c hi n thng qua l p InstVar (ph n 3.8). Khc nls v1, cc i t ng trong l p TclObject cng khng cn c lu nh m t danh sch lin k t ton c c. Thay vo , chng c lu tr trong m t b ng hash thu c l p Tcl (ph n 1.3.5). C u hnh tiu bi u c a m t TclObject V d sau y m t c u hnh c a m t tc t SRM (class Agent/SRM/Adaptive). set srm [new Agent/SRM/Adaptive] \$srm set packetSize\_{} 1024 \$srm traffic-source \$s0 Theo quy c trong ns, l p Agent/SRM/Adaptive l m t l p con c a Agent/SRM, l m t l p con c a Agent, l m t l p con c a TclObject. Nhnh l p bin d ch tng ng l ASRMAgent, c l y t SRMAgent, SRMAgent l i c l y t Agent, v cu i cng l t TclObject m t cch tu n t . Dng u tin c a v d trn cho th y m t TclObject c t o ra (ho c b hu ) nh th no (ph n 3.4.1); dng ti p theo
Trong phin b n g n y nh t c a ns v ns/tclcl, i t ng ny c i tn thnh SplitObjefct, ph n nh m t cch chnh xc hn s b n ch t c a s t n t i c a n. Tuy nhin, lc ny, chng ta s ti p t c s d ng thu t ng TclObject ch nh ng i t ng ny v l p ny
1
28
c u hnh m t bi n gi i h n (ph n 3.4.2); v cu i cng, dng cu i m t i t ng c thng d ch b ng cch g i ra m t phng th c C++ ngay khi n l m t th t c v d .
1.4.1. T o v hu cc TclObject
Khi ng i dng t o/hu m t TclObject m i, s d ng cc th delete{}; cc th t c ny c nh ngha trong tclcl/tcl-object.tcl. c dng t o hay hu cc i t ng trong t t c cc l p, bao g jects2 Trong ph n ny,chng ta s m t cc ho t ng bn trong m t TclObject c t o ra. t c new{} v Chng c th m cc TclObc th c thi khi
T o cc TclObject b ng cch dng new{}, ng i dng t o m t TclObject c thng d ch. b thng d ch xy d ng c u trc cho i t ng , init{}, cc i s c a ph n ny c cung c p b i ng i dng. ns ch u trch nhi m t o ra i t ng bin d ch m t cch t ng. i t ng bng c t o ra b i l p c b n c a hm t o TclObject. V th , hm t o cho m t TclObject m i ph i g i hm t o l p ngu n c a n tr c. new{} tr v m t ch c danh cho i t ng, m c th c dng cho cc ho t ng sau ny trn i t ng . V d sau y minh h a hm t o Agent/SRM/Adaptive: Agent/SRM/Adaptive instproc init args \{ eval \$self next \$args \$self array set closest\_{} "requestor 0 repairor 0" \$self set eps\_{} [\$class set eps\_{}] \} Chu i cc ho t ng sau y c th c hi n b i trnh thng d ch nh m t ph n c a vi c th hi n m t TclObject m i . cho d theo di, chng ta s m t t ng b c t o nn m t i t ng Agent/SRM/Adaptive. Cc b c l: 1. T o c m t tn duy nh t cho m t i t ng m i t khng gian tn TclObject. Tn ny c tr v cho ng i dng. H u h t tn trong ns u c d ng_<NNN>, v i <NNN> l m t s nguyn. Tn ny c t o b i getid{}. N c th c tm th y t C++ b ng phng th c name(){}. 2. T o hm t o cho m t i t ng m i. B t k cc i s c quy nh b i ng i dng no cng c truy n t i hm t o ny. Hm t o ny ph i g i ra hm t o c lin k t v i l p ngu n c a n.
Nh v d , Cc l p, Simulator, Node, Link, hay rtObject, l cc l p m khng xu t pht t l p TclObject. Cc i t ng trong nh ng l p ny v th khng ph i l TclObjects. Tuy nhin, m t i t ng Simulator, Node, Link, ho c route cng c t o ra b ng cch s d ng th t c new trong ns.
2
29
dng chnh u
Lu r ng m i hm t o l n l t g i ra hm t o c a l p ngu n c a n ad nauseum. Hm t o cu i cng trong ns l hm t o TclObject. Hm t o ny ch u trch nhi m thi t l p i t ng bng, v th c hi n nh ng vi c kh i t o thao v cc rng bu c khc, nh chng ti gi i thch bn d i. T t hn l nn g i cc c u trc ngu n tr c khi th c hi n vi c n p cc thng s c yu c u trong l p ny. i u ny cho php i t ng bng c thi t l p, v cc rng bu c bi n c thi t l p. 3. Hm t o TclObject g i ra th t c v d create-shadow{} cho l p Agent/SRM/Adaptive. 4. Khi i t ng bng c t o ra, ns g i t t c cc b cu trc cho i t ng bin d ch, m i b nh v y c th thi t l p cc rng bu c bi n cho cc i t ng trong l p , v th c hi n cc kh i t o c n thi t khc. Do l nh hu n th tr c y c a chng ta ph h p hn g i ra cc hm t o ngu n tr c khi th c hi n vi c kh i t o l p. 5. Sau khi i t ng bng c t o ra thnh cng b ng l nh create_shadow(void) (a) i t ng m i vo b ng hash c a cc TclObject c m t tr c y (ph n 1.3.5). (b) Th c hi n cmd{}, m t th t c c a i t ng thng d ch m i c t o. Th t c v d ny g i ra phng th c command() c a i t ng bin d ch. Trong m t ph n nh sau (Section 1.4.4), chng ti s m t cch th c command c nh ngha , v c g i ra nh th no. Lu r ng t t c cc c ch bng ho trn ch ho t ng khi ng i dng t o m t TclObject m i thng qua trnh thng d ch. N s khng lm vi c n u ng i l p trnh t o m t TclObject c bin d ch m t cch n phng. V th , ng i l p trnh b c m khng dng phng th c m i C++ t o cc i t ng bin d ch m t cch tr c ti p. Xo cc TclObject: l nh delete hu i t ng thng d ch, v i t ng bng tng ng.V d , use-scheduler{hscheduleri} dng th t c delete xo b b l p l ch trnh b ng k m c nh, v t o ra m t b l ch trnh thay th trong khng gian c a n. Simulator instproc use-scheduler type { \$self instvar scheduler\_{} delete scheduler\_{} ; # xo b l ch trnh b ng k ang t n t i tr c set scheduler\_{} [new Scheduler/\$type] }
30
1.4.2. S rng bu c bi n
Trong h u h t cc tr ng h p, vi c truy c p n cc bi n thnh vin bin d ch b gi i h n t i m bin d ch, v truy c p n cc bi n thnh ph n c thng d ch cng b h n ch , ph i truy nh p thng qua m thng d ch; tuy nhin, c th thi t l p cc rng bu c hai chi u nh c hai bi n thnh ph n thng d ch v bi n thnh ph n bin d ch, truy c p cng d li u, v vi c thay i gi tr c a c hai bi n c th thay i gi tr c a bi n c c p i tng ng sang cng m t gi tr . S rng bu c c t o ra b i hm t o c bin d ch khi i t ng c t o; c th truy c p m t cch t ng b i i t ng c thng d ch nh m t bi n instanc. ns h tr nm ki u d li u khc nhau: cc gi tr th c, cc bi n nh tr bng thng, cc bi n nh tr th i gian, cc s nguyn, v cc s nh phn. C php m t cc gi tr c c t trong OTcl l khc nhau ng v i m i ki u. Cc bi n gi tr th c v s nguyn c c t theo d ng "bnh th ng" . V d , $object set realvar 1.2e3 $object set intvar 12 Bng thng c c t nh m t gi tr th c, c i n thm ti n t l m t k hay K ch gi tr hng ngn, ho c m hay M ch gi tr hng tri u. M t k t B sau cng th hi n gi tr Byte trn m t giy. Theo m c nh, bng thng c th hi n d ng bps. V d , t t cc cc dng l nh sau l tng ng: $object set bwvar 1.5m $object set bwvar 1.5mb $object set bwvar 1500k $object set bwvar 1500kb $object set bwvar .1875MB $object set bwvar 187.5kB $object set bwvar 1.5e6 $object set bwvar 1500kb $object set bwvar .1875MB $object set bwvar 187.5kB $object set bwvar 1.5e6 Th i gian c quy nh nh l m t gi tr th c,c th i km v i h u t m th hi n n v mili giy, v n n u l nano giy, ho c l pico giy v i p. Gi tr m c nh l giy (s). V d , t t c cc gi tr sau l tng ng nhau: $object set timevar 1500m $object set timevar 1.5 $object set timevar 1.5e9n 31
$object set timevar 1500e9p Lu r ng ta c cng th thm 1 ch s bi u th n v l giy. ns w s b qua t t c cc gi tr khc ngoi cc con s , ho c k t thc b ng ch m, n, hay p. Cc gi tr nh phn c th c bi u di n c hai d ng nh m t s nguyn, hay nh T ho c t v i gi tr ng. Cc k t theo sau ch ci u tin c b qua. N u gi tr khng ph i l m t s nguyn hay m t gi tr ng th ng nhin c xem l sai. V d , $object set boolvar t ; # t gi tr l ng $object set boolvar true $object set boolvar 1 ; # hay b t k gi tr khng b ng khng no $object set boolvar false ; # t gi tr l sai $object set boolvar junk $object set boolvar 0 Cc v d sau y cho th y hm t o c a ASRMAgent3 ASRMAgent::ASRMAgent() { bind("pdistance_", &pdistance_); /* bi n gi tr th c */ bind("requestor_", &requestor_); /* ibi n gi tr nguyn */ bind_time("lastSent_", &lastSessSent_); /* bi n gi tr th i gian */ bind_bw("ctrlLimit_", &ctrlBWLimit_); /* bi n gi tr bng thng */ bind_bool("running_", &running_); /* bi n gi tr nh phn */ Ch r ng t t c cc hm trn u c hai i s , tn c a m t bi n OTcl, v a ch c a bi n thnh vin c bin d ch tng ng c lin k t l i. Trong khi th ng c tr ng h p l cc rng bu c c thi t l p b i hm t o c a i t ng, khng c n ph i lun c th c hi n theo ki u ny. Ta s th o lu n cc phng php thay th khi n m c m t l p InstVar (ph n 3.8) m t cch chi ti t ph n sau. M i bi n c rng bu c s t ng c kh i t o v i gi tr m c nh khi i t ng c t o ra. Cc gi tr m c nh ny c c t nh cc bi n l p c thng d ch. Qu trnh kh i t o ny c th c hi n b i tuy n init-instvar{}, c g i ra b i cc phng php trong l p Insvar, s c m t sau (ph n 1.8). hm init-instvar{} ki m tra l p i t ng thng d ch, v t t c cc l p ngu n c a i t ng , tm ki m l p u tin m cc bi n c nh ngha. N dng gi tr c a bi n trong l p kh i t o i t ng . H u h t cc gi tr kh i t o lin quan c nh ngha trong ns/tcl/lib/ns-default.tcl. V d , n u cc bi n l p sau y c nh ngha cho ASRMAgent:
3
Lu r ng hm t o ny c t i m thm m t cc c i m c a c ch rng bu c bi n
32
Agent/SRM/Adaptive set pdistance_ 15.0 Agent/SRM set pdistance_ 10.0 Agent/SRM set lastSent_ 8.345m Agent set ctrlLimit_ 1.44M Agent/SRM/Adaptive set running_ f Agent/SRM/Adaptive set pdistance_ 15.0 Agent/SRM set pdistance_ 10.0 Agent/SRM set lastSent_ 8.345m Agent set ctrlLimit_ 1.44M Agent/SRM/Adaptive set running_ f Do , m i i t ng Agent/SRM/Adaptive m i s c tham s pdistance_ v i gi tr t l 15.0; lastSent_ l 8.345m t vi c ci t bi n l p c a l p ngu n; ctrlLimit_ c gi tr l 1.44M s d ng bi n l p c a l p ngu n hai l n b xo; running c t l sai; bi n tr ng h p pdistance_ khng c gn tham s u vo, v khng c bi n l p t n t i trong b t k h th ng phn c p l p c a i t ng thng d ch. Trong nh ng tr ng h p nh v y, init-instvar{} s g i ra warn-instvar{}, in ra m t c nh bo v m t bi n ch ng h n. Ng i dng c th b qua m t cch c ch n l c th t c ny trong cc b n m t m ph ng, l t qua c nh bo ny. Ch r ng s rng bu c th c t c th c hi n bng vi c t o cc i tng trong l p InstVar. M i i t ng trong l p InstVar rng bu c m t bi n thnh vin bin d ch v i m t bi n thnh vin thng d ch. M t TclObject lu tr m t danh sch cc i t ng InstVar tng ng v i m i bi n thnh vin c a n m b rng bu c trong ki u ny. Ph n u c a danh sch c lu trong bi n thnh vin c a n instvar_ c a TclObject. i m cu i cng c n xem xt l NS s b o m cc gi tr th c c a bi n, c trong i t ng thng d ch v i t ng bin d ch, s gi ng nhau m i lc. Tuy nhin, n u cc phng th c v cc bi n khc c a compiled object m bm theo gi tr c a bi n , chng ph i c g i ra r rng ho c c thay i b t k khi no gi tr c a bi n b thay i. i u ny th ng i h i cc t g c m ng i dng c n bi t. C m t cch cung c p cc t g c trong NS l thng qua phng th c command() s c m t trong ph n ti p theo.
1.4.3. Bm v t bi n
Thm vo cc rng bu c bi n, TclObject cn h tr bm v t c a cc bi n tr ng h p trong C++ v Tcl. M t bi n bm v t c th c t o v c u hnh trong C++ hay Tcl. t o ra qu trnh bm v t bi n ng v i m c Tcl, bi n ph i c nhn th y trong Tcl, i u c ngha r ng n ph i l m t bi n tr ng h p Tcl thu n ty ho c bi n C++/Tcl b gi i h n . Thm vo , i t ng s h u bi n bm v t cng ph i c yu c u thi t l p qu trnh bm v t s d ng phng th c Tcl trace c a 33
TclObject. i s u tin trong phng th c trace ph i l tn bi n. i s th 2 (khng b t bu c) c t i t ng bm v t, ch u trch nhi m bm v t c a bi n . N u i t ng v t khng c c t , th i t ng s h u bi n ch u trch nhi m bm v t n. V i m t TclObject, bm v t cc bi n, n ph i m r ng phng th c bn m n c nh ngha trong TclObject. L p bm v t th c hi n m t phng th c trace n gi n, v th , n c th ho t ng nh m t ng i bm v t chung cho t t c cc bi n. class Trace public Connector {: ... virtual void trace(TracedVar*); }; D i y l m t v d n gi n cho vi c ci t qu trnh bm v t bi n trong Tcl: \# \$tcp tracing its own variable cwnd\_ \$tcp trace cwnd_ \# the variable ssthresh_ of \$tcp is traced by a generic \$tracer set tracer [new Trace/Var] \$tcp trace ssthresh_ \$tracer i v i m t bi n C++ c th bm v t c, n ph i thu c v m t l p m b t ngu n t TracedVar. L p c s o TracedVar lu tr tn bi n, ng i s h u, v cc b bm v t. Cc l p m b t ngu n t TracedVar s ph i cung c p phng th c o value, phng th c m l y b m k t nh l m t i s v ghi gi tr c a bi n vo . class TracedVar { ... virtual char* value(char* buf) = 0; protected: TracedVar(const char* name); const char* name_; // name of the variable TclObject* owner_; // the object that owns this variable TclObject* tracer_; // callback when the variable is changed ... }; Th vi n TclCL xu t ra 2 l p c a TracedVar l: TracedInt v TracedDouble. Cc l p ny c th c dng v i cc ki u d li u c b n c a int v double tng ng. C TracedInt v TracedDouble lm qu t i t t c cc ho t ng m c th thay 34
i gi tr c a bi n nh php gn, tng v gi m. Cc ho t ng b qu t i ny dng phng th c assign gn gi tr m i cho bi n v g i b bm v t n u gi tr m i khc v i gi tr c tr c . TracedInt v TracedDouble cng b sung cc phng th c v value c a chng m a cc gi tr bi n vo trong chu i. r ng v tnh chnh xc c a u ra c th c c t tr c.
Ng i dng c th g i phng th c cmd{} b ng m t trong 2 cch sau: g i ra m t cch r rng th t c, c t ho t ng mong mu n nh l i s u tin, ho c m t cch r rng , n u c m t th t c tr ng h p c a cng tn nh ho t ng mong mu n. H u h t cc b n m ph ng s dng ki u sau ny, v th , ta s m t ki u d n ch ng kia tr c. Cho r ng tnh ton kho ng cch trong SRM c th c hi n b i i t ng bin d ch; tuy nhin, n l i th ng c s d ng b i i t ng thng d ch v th ng c g i ra nh sau: $srmObject distance? <agentAddress> N u khng c th t c no g i l distance, trnh thng d ch s g i ra th t c unknown, c nh ngha trong TclObject l p c b n. Th t c unknown sau s g i ra $srmObject cmd distance? <agentAddress> th c hi n ho t ng thng qua th t c command() c a i t ng bin d ch. D nhin, ng i dng c th g i ho t ng ny m t cch tr c ti p. M t l do cho i u ny l c th lm qu t i ho t ng b ng cch s d ng m t th t c trng tn. V d , Agent/SRM/Adaptive instproc distance? addr { $self instvar distanceCache_ if ![info exists distanceCache_($addr)] { set distanceCache_($addr) [$self cmd distance? $addr] } set distanceCache_($addr) } By gi ta s m t cch m phng th c command() s d ng ASRMAgent:command(): nh v d sau: 35
int ASRMAgent:command(int argc, const char*const*argv) : Tcl& tcl = Tcl:instance();: if (argc == 3) { if (strcmp(argv[1], "distance?") == 0) { int sender = atoi(argv[2]); SRMinfo* sp = get_state(sender); tcl.tesultf("%f", sp->distance_); return TCL_OK; } } return (SRMAgent:command(argc, argv));: } Chng ta c th phn tch o n m ny nh sau: Hm c g i v i 2 i s : i s u tin (argc) bi u th s l ng c a cc i s c c t trong dng l nh cho trnh thng d ch. Vector cc i s dng l nh (argv) bao g m argv[0] ch a tn c a phng th c, "cmd". argv[1] c t ho t ng mong mu n. N u ng i dng c t b t k i s no, th chng ph i c t trong argv[2...(argc - 1)]. Cc i s c truy n nh cc chu i; chng ph i c chuy n i sang ki u d li u ph h p. N u php ton l ng, th n s tr v k t qu php ton s d ng cc phng th c c m t tr c (ph n 1.3.3). B n thn hm command() ph i tr v ho c l TCL_OK hay TCL_ERROR bi u th thnh cng hay th t b i. N u php ton trong phng th c ny khng ng, n ph i g i ra phng th c l nh g c, v tr v k t qu tng ng. i u ny cho php ng i dng hnh dung c cc php ton khi c c cc thu c tnh k th a nh l cc th t c tr ng h p, ho c cc phng php bin d ch. Tr ng h p phng th c command ny c nh ngha cho m t l p v i s a k th a, ng i l p trnh c th t do ch n m t trong hai thnh ph n b sung sau: 1. Chng c th g i ra m t trong cc phng th c command g c, v tr v k t qu c a s g i ra , ho c l. 2. Chng c th l m t trong cc phng th c command g c m t s chu i, v tr v k t qu c a s g i ra u tin thnh cng. N u khng thnh cng, th chng s tr v m t l i.
36
Trong ti li u ny, chng ta g i cc php ton c th c thi thng qua command() l instproc-likes. N ph n nh cng d ng c a nh ng ho t ng ny nh th chng l cc th t c tr ng h p OTcl c a m t i t ng, nhng c th s r t khc trong s nh n th c v s d ng.
1.5. L p TclClass
L p bin d ch ny (class TclClass) l m t l p hon ton o. Cc l p thu c t l p c s ny cung c p 2 ch c nng: xy d ng nn nhnh l p thng d ch ph n nh nhnh l p bin d ch; v cung c p cc phng th c t o ra cc TclObject m i. M i l p thu c nh v y k t h p v i m t l p bin d ch ring bi t trong nhnh l p bin d ch, v c th t o cc i t ng m i trong l p k t h p. V d , xt m t l p nh RenoTcpClass. N c l y ra t l p TclClass, v c k t h p v i l p RenoTcpAgent. N s d n ra cc i t ng m i trong l p RenoTcpAgent. Nhnh l p bin d ch cho RenoTcpAgent l l p l n l t c t o ra t TcpAgent, TcpAgent: l i c t o ra t Agent, Agent l i c t o ra t TclObject. RenoTcpClass c nh ngha nh sau
static class RenoTcpClass: public TclClass { public: RenoTcpClass() : TclClass("Agent/TCP/Reno") {} TclObject* create(int argc, const char*const* argv) { return (new RenoTcpAgent()); } } class_reno;
Chng ta c th a ra m t s phn tch t nh ngha trn: 1. L p ny ch nh ngha hm t o, v m t phng th c thm vo, create cc i t ng c a TclObject k p h p. 2. NS s th c hi n hm t o hm t o RenoTcpClass cho bi n tnh class_reno}, khi n c b t u l n u tin. Vi c ny ci t cc phng th c thch h p v nhnh l p phin d ch. 3. Hm t o c t l p thng d ch m t cch r rng nh Agent/TCP/Reno. i u ny cng c t nhnh l p thng d ch m t cch hon ton. G i l i tho thu n kia trong ns is l dng k t g ch cho (/) nh l cch phn chia. V i b t k l p c cho l A/B/C/D, th l p A/B/C/D l 1 l p con 37
c a A/B/C, A/B/C l l p con c a A/B, l n l t A/B l l p con c a A. A chnh n l i l l p con c a TclObject. Trong tr ng h p trn, hm t o TclClass t o ra 3 l p, Agent/TCP/Reno l l p con c a Agent/TCP l l p con c a Agent l l p con c a TclObject. 4. L p ny k p h p v i l p RenoTcpAgent; n t o ra cc i t ng m i trong l p c k t h p ny. 5. Phng th c RenoTcpClass::create tr cc TclObject v trong l p RenoTcpAgent. 6. Khi ng i dng c t new Agent/TCP/Reno, th t c ti p theo RenoTcpClass::create c g i ra 7. Vector cc i s (argv) bao g m argv[0] ch a tn c a i t ng. argv[1...3] ch a $self, $class, v $proc. K t khi create is c g i thng qua th t c tr ng h p create-shadow, argv[3] bao g m create-shadow. argv[4] ch a b t k i s b sung no ( c xem nh l m t chu i) c cung c p b i ng i dng. class Trace minh ho vi c trnh by i s b ng cc phng th c TclClass. class TraceClass : public TclClass \{ public:\tab {}TraceClass() : TclClass("Trace") \{\} {}TclObject* create(int args, const char*const* argv) \{ {}if (args >= 5)\untab {}return (new Trace(*argv[4])); {}else {}return NULL; {}\} {}\} trace\_{}class; M t i t ng Trace c t o ra nh new Trace "X" Cu i cng, v c b n, cch m nhnh l p thng d ch c t o nn nh sau: 1. Hm t o i t ng c th c hi n khi ns kh i ng l n u. 2. Hm t o ny g i hm t o TclClass v i ci tn c a l p c thng d ch cng nh i s c a n. 3. Hm t o TclClass lu tr tn c a l p, v chn i t ng ny vo m t b ng k lin k t c a cc i t ng TclClass. 38
4. Trong su t qu trnh kh i t o c a b m ph ng, hm Tcl_AppInit(void) g i ra TclClass::bind(void) 5. V i m i i t ng trong b ng k cc i t ng TclClass, hm bind() g i ra register{}, b ng cch c t tn c a l p thng d ch nh i s c a n. 6. Hm register{} thi t l p l p nhnh, t o cc l p c yu c u, v cha c t o ra. 7. Cu i cng, hm bind() nh ngha cc th t c i t ng creat-shadow v delete-shadow cho chnh l p m i ny.
2. Khai bo cc phng th c bind() v method() trong l p do b n t o ra; 3. T o cc phng th c rng bu c c a b n trong hm bind() c a b n v i hm add_method("your_method"), v sau b sung bi n i u khi n trong method() b ng cch tng t nh b n s lm trong TclObject::command(). Lu , s l ng bi n h p quy cch v i TclClass::method() l khc so v i TclObject::command(). Ng i t o c nhi u hn 2 i s tr c. Nh v d sau, chng ta bi u di n m t phin b n n gi n PacketHeaderClass trong ~ns/packet.cc. Gi s r ng chng ta c l p Packet sau y c ch a m t bi n tnh hdrlen_ m ta mu n truy c p t OTcl: class Packet { ...... 39
static int hdrlen_; }; Sau ta lm ti p theo nh bn d i xy d ng m t b truy c p cho bi n ny: class PacketHeaderClass:public TclClass { protected: PacketHeaderClass(const char* classname, int hdrsize); TclObject* create(int argc, const char*const* argv); /* Hai thnh ph n c a cc phng th c truy nh p trong l p Tcl */ virtual void bind(); virtual int method(int argc, const char*const* argv); }; void PacketHeaderClass::bind() { /*G i n l p c b n bind() ph i lm tr c add_method()*/ TclClass::bind(); add_method("hdrlen"); { int PacketHeaderClass::method(int ac, const char*const* av) { Tcl& tcl = Tcl::instance(); /*Lu vi c chuy n i i s ny; ta c th sau i x v i chng nh n u l trong TclObject::command()*/ int argc = ac - 2; const char*const* argv = av 2;+ if (argc == 2) { if (strcmp(argv[1], "hdrlen") == 0) { tcl.resultf("%d", Packet::hdrlen_); return (TCL_OK); } } else if (argc == 3) { if (strcmp(argv[1], "hdrlen") == 0) { Packet::hdrlen_ = atoi(argv[2]); return (TCL_OK); } } return TclClass::method(ac, av); { Sau b c ny, ta c th dng l nh OTcl sau truy c p v thay i cc gi tr c a bi n Packet::hdrlen_: 40
class RandomCommand nh ngha l nh ns-random. Khng c n i s , ns-random returns tr v m t s nguyn, v c phn b u trong kho ng [0, 231 1]. Khi c t m t i s , n l y i s nh h t gi ng. N u h t gi ng ny c gi tr l 0, l nh dng m t gi tr h t gi ng heuristic; hay ni cch khc, n t h t gi ng cho hm t o s ng u nhin m t gi tr c th . % ns-random; 2078917053 % ns-random 0; 858190129 % ns-random 23786; 23786 # tr v m t s ng u nhin heuristically gi tr c c t
# t h t gi ng v
Lu r ng, ni chung khng nn xy d ng cc l nh m c cao cho ng i dng. By gi ta m t cch nh ngha m t l nh m i b ng cch s d ng v d class say_hello. V d nh ngha l nh hi, in chu i "hello world", c theo sau b i b t k cc i s dng l nh no c c t b i ng i dng. V d % hi this is ns [ns-version] hello world, this is ns 2.0a12
41
1. L nh ph i c nh ngha bn trong m t l p c xu t pht t class TclCommand. Vi c nh ngha l p ny nh sau: class say_hello : public TclCommand { public: say_hello(); int command(int argc, const char*const* argv); }; 2. Hm t o cho l p ph i g i ra hm t o TclCommand v i l nh v i s ; v.v., say_hello() : TclCommand("hi") {} Hm t o TclCommand t "hi" nh l m t th t c ton c c m g i ra TclCommand::dispatch_cmd() 3. Phng th c command() ph i th c hi n c vi c mong mu n. Phng th c c 2 i s , m t l argc, ch a s l ng i s th c t c thng qua b i ng i dng. Cc i s th c t c truy n vo b i ng i s d ng u c xem nh l m t vector i s (argv) v bao g m: argv[0] ch a tn c a l nh (hi). argv[1...(argc - 1)] ch a cc i s khc c c t trn dng l nh b i ng i dng. command() c g i ra b i dispatch_cmd(). #include <streams.h> /* b i v ta dng dng I/O */ int say_hello::command(int argc, const char*const* argv) { cout << "hello world:"; for (int i = 1; i < argc; i++) cout << << argv[i]; cout << n n; return TCL_OK; } 4. Cu i cng, ta yu c u m t i t ng cho l p ny. Cc i t ng TclCommand c t o ra trong th t c init_misc(void). new say_hello; Lu r ng, y th ng dng nhi u hm hn nh ns-at v ns-now m c th truy c p c. H u h t cc hm ny s c gom vo trong m t l p hi n hnh. C th l, ns-at v ns-now c th truy c p c thng qua b l p lich th i gian c a TclObject. Cc hm c nh ngha trong ns/tcl/lib/ns-lib.tcl % set ns [new Simulator] ; # L y tr ng h p c a b m ph ng _o1 % $ns now ; # truy v n b m ph ng v th i gian hi n t i 0 % $ns at ... ; # ch r cc ho t ng cho b m ph ng 42
1.7. L p EmbeddedTcl
NS cho php s pht tri n c a cc tnh nng trong c m bin d ch, ho c thng qua m thng d ch, m c nh gi trong qu trnh kh i t o. V d , cc b n trong tclcl/tcl-object.tcl hay trong ns/tcl/lib. Vi c t i v nh gi cc o n m nh v y c th c hi n thng qua cc i t ng trong l p class EmbeddedTcl. Cch d nh t m r ng ns is l thm m OTcl vo ho c tclcl/tcl-object.tcl ho c qua cc o n m th m c ns/tcl/lib. Lu r ng, trong nh ng tr ng h p sau ny, ns t ng t o ns/tcl/lib/ns-lib.tcl, v v th ng i l p trnh ph i thm hai dng l nh vo file ny b n d ch c a chng s t ng l y ngu n t ns khi kh i ng. V d , file ns/tcl/mcast/srm.tcl xc nh m t s th t c tr ng h p ch y SRM. Trong ns/tcl/lib/ns-lib.tcl, chng ta c cc dng l nh: source tcl/mcast/srm.tcl t ng l y srm.tcl c t o b i NS khi kh i ng. C ba i m c n lu v i m EmbeddedTcl l: u tin n u m c m t l i c t o ra trong qu trnh nh gi th ns s khng ch y. Th hai, ng i dng c th khng c n n b t k m no trong cc b n d ch. c bi t, chng c th ti t o ton b o n m sau khi sau khi c s thay i n i t i. Cu i cng, sau khi thm cc b n d ch cho ns/tcl/lib/ns-lib.tcl, v t v sau b t c khi no o n m thay i, ng i dng ph i bin d ch l i ns lm s thay i c hi u l c. D nhin, trong h u h t tr ng h p 4 , ng i dng ch th t o o n m c a mnh b qua m c nhng. Ph n cn l i ny s m t cch tch h p cc b n c l p tr c ti p vo trong ns. B c u tin l chuy n i b n d ch vo trong m t i t ng EmbeddedTcl. Cc dng bn d i m r ng ns-lib.tcl v t o ra i t ng EmbeddedTcl c g i l et_ns_lib: tclsh bin/tcl-expand.tcl tcl/lib/ns-lib.tcl | n ../Tcl/tcl2c++ et_ns_lib > gen/ns_tcl.cc o n m,ns/bin/tcl-expand.tcl m r ng ns-lib.tcl b ng cch thay th t t c cc dng source lines b i cc file ngu n tng ng. Chng trnh, tclcl/tcl2cc.c, chuy n i m OTcl thnh m t i t ng EmbeddedTcl tng ng, et_ns_lib. Trong qu kh i t o, vi c g i ra phng th c EmbeddedTcl::load s nh gi m ng m t cch r rng. tclcl/tcl-object.tcl c nh tr b i phng th c Tcl::init(void); Tcl_AppInit() g i ra Tcl::Init(). C php l nh chng xc cho t i l:
M t t tr ng h p m i u ny c th s khng x y ra l khi cc bi n no c th ph i c nh ngha hay khng c nh ngha, ho c ni cch khc b n d ch ch a m khc hn l th t c, v vi c nh ngha bi n v th c thi cc ho t ng m t cch tr c ti p l khng th o ng c c
4
43
1.8. L p InstVar
Ph n ny m t cc b n ch t c a l p InstVar. L p ny xc nh cc phng th c v c c u rng bu c m t bi n thnh vin C++ trong i t ng bng bin d ch v i m t bi n tr ng h p OTcl c c t trong i t ng thng d ch tng ng. Vi c rng bu c c thi t l p gi tr c a bi n c th c t ho c c truy c p t c trnh thng d ch ho c t m bin d ch m i lc. C nm l p bi n i t ng: class InstVarReal, class InstVarTime, class InstVarBandwidth, class InstVarInt, v class InstVarBool, tng ng v i cc rng bu c cho cc bi n gi tr th c, th i gian, bng thng, s nguyn, v nh phn m t cch l n l t. By gi , ta m t c c u ci t cc bi n tr ng h p. Ta dng class InstVarReal to di n gii khi ni m. Tuy nhin, c c u ny c th ng d ng c v i c 5 ki u bi n tr ng h p. Khi vi c ci t m t bi n thng d ch truy c p m t bi n thnh vin, cc hm thnh vin c a l p InstVar gi s r ng chng ang th c hi n cc phng th c thch h p, do chng s khng truy v n trnh thng d ch xc nh b i c nh m bi n ph i t n t i. b o m hon c nh th c thi phng th c chnh xc, m t bi n ph i c rng bu c n u l p c a n c thi t l p trong b trnh thng d ch, v trnh thng d ch ang lm vi c trn m t i t ng c a l p . r ng b nh d ng yu c u khi m t phng th c trong m t l p cho s n s lm cc bi n c a n c th truy c p thng qua trnh thng d ch, ph i l m t l p TclClass (ph n 1.5) lin k t c nh ngha nh n d ng nhnh l p ph h p cho trnh thng d ch. V th , b i c nh th c thi phng th c ph h p, c th c t o ra b ng m t trong 2 cch. M t gi i php n xu t hi n b t c khi no m t TclObject c t o ra bn trong trnh thng dich. i u ny thi t l p b i c nh th c thi phng th c trong trnh thng d ch. Khi i t ng bng bin d ch c a TclObject thng d ch c t o ra, hm t o cho i t ng bin d ch c th rng bu c cc bi n thnh vin c a i t ng v i cc bi n i t ng thng d ch trong b i c nh c a i t ng thng d ch m i c t o. M t gi i php n i nh ngha m t php ton bind-variables trong m t hm command, m c th c g i ra thng qua phng th c cmd. B i c nh th c thi phng th c ng c thi t l p th c hi n phng th c cmd. Tng t , m bin
44
d ch by gi s ho t ng trn i t ng bng thch h p, v v th c th rng bu c ch c ch n c c bi n thnh vin c yu c u. M t bi n i t ng c t o b i vi c c t tn c a bi n thng d ch, v a ch c a bi n thnh vin trong i t ng bin d ch. Hm t o cho l p c s InstVar t o ra m t tr ng h p c a bi n trong trnh thng d ch, v sau thi t l p m t th t c b y b t t t c cc truy c p n bi n thng qua trnh thng d ch. M i khi bi n c c thng qua trnh thn d ch, th t c b y c g i ra tr c ngay khi c thao tc c. Th t c g i ra hm get thch h p tng ng s tr v gi tr hi n t i c a bi n. Gi tr ny sau c dng t gi tr c a bi n thng d ch v sau c c b i trnh thng d ch. Tng t , m i khi bi n c l p thng qua trnh thng d ch, th t c b y c g i ra ch sau khi vi c ghi hon t t. Th t c l y gi tr hi n t i c l p b i trnh thng d ch, v g i ra hm set tng ng ch u trch nhi m l p gi tr c a thnh vin bin d ch n gi tr hi n t i c l p bn trong trnh thng d ch.
45
2.1. T ng quan v NS
B m ph ng NS d a trn hai ngn ng : m t b m ph ng h ng i t ng, c vi t b ng C++, v m t b thng d ch OTcl (ph n m r ng h ng i t ng c a Tcl), c dng th c hi n cc o n m k ch b n (script) c a ng i dng. NS c m t th vi n s cc i t ng giao th c v m ng. C 2 nhnh cc l p trong NS: nhnh g m m ngn ng C++ c bin d ch v nhnh g m m l nh OtcL oc thng d ch, gi a chng c s tng ng 1-1. Nhnh g m m ngn ng C++ c bin d ch cho php ta t hi u qu m ph ng v i th i gian th c hi n nhanh hn. i u ny c bi t h u ch cho vi c nh ngha v m ph ng ho t ng m t cch th t chi ti t c a cc giao th c c th , cho php ta gi m th i gian x l s ki n v gi tin. Sau , o n m Otcl c nh p b i ng i dng, ta c th nh ngha m t c u trc (topo) m ng c th , cc giao th c v ng d ng ring bi t m ta mu n m ph ng (t p tnh c a chng c nh ngha bn nhnh m ngn ng C++ c bin 46
d ch) v d ng c a d liu u ra mu n nh n c t b m ph ng. Otcl c th t n d ng cc i t ng c bin d ch trong C++ thng qua m t lin k t Otcl ( c th c hi n b ng vi c s d ng TclCL1 )[5] , lin k t Otcl ny t o ra m t nh x gi a i t ng Otcl v i m i i t ng trong C++. NS l m t b m ph ng s ki n r i r c, trong , tng c a th i gian ph thu c vo vi c nh th i c a cc s ki n, tng ny c duy tr v i m t b nh trnh. M t s ki n l m t i t ng trong nhnh C++ v i m t ID duy nh t, m t th i gian nh tr c v con tr tr t i i t ng s d ng s ki n . B nh trnh n m quy n qu n l m t c u trc d li u c th t (c 4 c u trc, nhng theo m c nh, NS s d ng m t danh sch lin k t n gi n) cng v i cc s ki n chu n b c th c hi n, v th c thi t ng s ki n m t b ng cch kch ho t th (handle) c a s ki n .
47
trong ph m vi chng trnh m ph ng. i u ny c th th c hi n c b ng cch dng l nh xgraph nh sau: Exec xgraph data & (ch : d u "&" c dng i u khi n cho l nh th c hi n ng m). C u trc c a m t cu l nh if nh sau: If { bi u th c}{ <kh i l nh> } else { {<kh i l nh> } Cu l nh if c th c bao trong cc cu l nh "if" khc v v i cc cu l nh "else". Chng c th xu t hi n trong ph n "<kh i l nh>. Ch , khi ki m tra i u ki n logic tng ng, ta nn dng d u "==" ch khng nn dng d u "=". i u ki n logic b t tng ng c c php l "!=". Cc vng l p c d ng nh sau: for {set i 0}{$ i < 5}{incr i}{ <kh i cu l nh> } Trong v d ny, kh i cu l nh trong vng l p s c th c hi n 5 l n. Sau ton t for, c m "{set i 0} khai bo bi n i l b m c a vng l p ng th i kh i t o gi tr 0 cho n. Ph n th hai trong {} l i u ki n ti p t c c a vng l p, n c ngha l "ti p t c th c hi n vng l p n u i<5. Ph n cu i cng c a cu l nh th hi n s thay i trong bi n m, y, ta lin t c tng i thm 1, nhng ta cng c th gi m ho c dng b t k m t bi u th c ton h c no khc thay i gi tr b m.
#Create a procedure+\\ proc test {} {+\\ set a 43 set b 27 set c [exrp $a + $b] set d [expr [expr $a - $b] * $c] puts "c = $c d = $d":\\ for{set k 0} {$k < 10} {incr k}{ if {$k < 5} { puts "k>= 5, pod = [expr $d % $k]" } else {:\\ 48
puts "k >= 5, mod = [expr $d % $k]" } } } calling the procedure test
B ng 2.1: Chng trnh Tcl th c hi n cc php ton tcl cho php t o cc th t c. Chng c th tr v m t vi gi tr trong tr ng h p chng c ch a l nh "return". C php t ng qut c a m t th t c c tn v d l blue nh sau: proc blue {par1 par2 ...} { global var1 var 2 <kh i cu l nh> Return $<m t gi tr no > } Th t c nh n m t vi tham s u vo, c th l cc i t ng, file, ho c cc bi n. Trong tr ng h p c a chng ta, cc bi n c t tn l par1, par2, v.v.. Th t c c g i ra b ng cch g: blue x y ... y, gi tr c a x v y s c gn cho par1 v par2. N u par1 v par 2 b thay i trong th t c, i u khng nh h ng g t i x v y. M t khc, n u ta mu n th t c c kh nng tc ng tr c ti p t i cc bi n bn ngoi ph m vi c a n, ta ph i nh ngha cc bi n l bi n ton c c "global, v d d i y l var 1 v var 2. b ng 2.1, ta th y m t v d th hi n r t nhi u ton t s h c trong tcl. Ch th pow cho k t qu l hm m b c k c a bi n d (dk ). b ng 2.2, ta l y v d m t chng trnh tcl tnh t t c s nguyn t nh hn m t gi i h n j cho tr c. V d , nh n c cc s nguyn t nh hn 11, g: ns prime.tcl 11. V d v cc s nguyn t cho th y cch s d ng l nh if, cc vng l p v th t c. Bi n argc c ch a cc tham s c a vo chng trnh. Bi n argv l m t vect ch a cc tham s c truy n t i chng trnh (v y nn bi n argc chnh l di c a bi n argv), v l nh lindex cho php chng ta l y tr ng h p c a vect c tr b i tham s th hai. Do v y, dng l nh set j [lindex $argv 0] gn cho bi n j gi tr c a tham s u tin c truy n vo chng trnh (gi tr c lu vo bi n argv).
49
# Cch s d ng: ns prime.tcl NUMBER # NUMBER l s cc s nguyn t m chng ta mu n nh n If {$argc !=1}{ # Ph i nh n l y m t i s n, ho c chng trnh s bo #l i Puts stderr ERROR! Ns called with wrong number of argument!($argc) exit 1 } else{ Set j [lindex $argv 0] proc prime {j}{ #Tnh ton t t c cc s nguyn t cho t i j for {set a 2}{$a<=$j}{incr a}{ set b 0 for {set i 2}{$i<$a}{incr i}{ set d [expr fmod($a,$i)] if {$d==0}{ set b 1} } if{$b==1}{ puts $a khng ph i l s nguyn t }else{ puts $a l s nguyn t } } } prime $j
B ng 2.2: Chng trnh Tcl tnh ton cc s nguyn t Chng ti ch gi i thch ng n g n thng qua m t v d v m u l p trnh trong Otcl. N u b n cha bi t m t ngn ng l p trnh h ng i t ng no (C++, Java), b n nn h c cch l p trnh cc ngn ng h ng i t ng. T kha dnh ring Class t sau tn c a m t l p c dng khai bo m t l p m i trong OTcl. Cc phng th c (hm) c a m t l p c khai bo b ng cch dng t kha instproc t ng sau tn l p, ti p l tn c a phng th c v cc tham s c a n. Phng th c init l hm kh i t o c a l p . Bi n self l m t con tr t i b n thn i t ng, gi ng nh con tr "this" trong C++ ho c Java. khai bo m t i t ng (instance), OTcl s d ng t kha instvar. T kha superclass c dng khai bo r ng m t l p l l p con (l p th a k ) c a m t l p khc, trong v d ny, l p Integer (s nguyn)l l p con c a l p Real (s th c). Chng 50
# Cch dng: ns fact.tcl Number # NUMBER l s m ta mu n l y giai th a # if {$argc !=1}{ # Ph i l y i s n ho c chng trnh bo l i # Puts stderr ERROR! Ns called with wrong number # of argument!($argc) exit 1 } else{ Set f [lindex $argv 0] } proc Factorial{x}{ for {ser result 1}{$x>1}{set x [expr $x-1]}{ set result [expr $result*$x] } return $result } Set res [Factorial $f] Puts Factorial of $f is $res
Class Real Real instproc init {a}{ $self instvar value_ set value_ $a } Real instproc sum {x}{ $self instvar value_ set op $value_+[$x set value_] = \t set value_[expr $value_+ [$x set value_]] put $op $value_ } Real instproc multiply {x}{ 51
$self instvar value_ set op $value_*[$x set value_] = \t set value_[expr $value_* [$x set value_]] put $op $value_ } Real instproc divide {x}{ $self instvar value_ set op $value_/[$x set value_] = \t set value_[expr $value_/ [$x set value_]] put $op $value_ } Class integer superclass Real Integer instproc divide {x}{+ $self instvar value_ set op $value_/[$x set value_] = \t set d[expr $value_/ [$x set value_]] set value_ [expr round($d)] put $op $value_ } set realA [new Real 12.3] set realB [new Real 0.5] $realA sum $realB $realA multiply $realB $realA divide $realB set integerA [new Integer 12] set integerB [new Integer 5] set integerC [new Integer 7] $integerA multiply $integerB $integerB divide $integerC
52
3.3.1. FTP trn n n TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. CBR qua UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. UDP v i cc ngu n lu l ng khc . . . . . . . . . . . . . . . . . . . . . 3.4. L p l ch s ki n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Hi n th : dng NAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Bm v t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1. Bm cc i t ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2. C u trc c a cc file bm v t. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7. Bi n ng u nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t o............................................................ 3.7.2. T o cc bi n ng u nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ng i d ch: Nguy n Thanh H i Bin t p: H T t Thnh B n g c: NS Simulator for beginners, Chapter 2 [2] 53
Trong chng ny chng ta s trnh by cc b c u tin g m c: Vi c kh i t o v k t thc c a b m ph ng ns. nh ngha cc node m ng, link, hng i v topology. nh ngha cc tc nhn (agent) v cc ng d ng. Cng c hi n th nam . Bm v t. Cc bi n ng u nhin.
3.1. Kh i t o v k t thc
y l dng u tin trong t p l nh tcl. Dng ny khai bo 1 bi n ns m i dng l nh set, b n c th g i bi n ng u nhin ny nh b n mu n, tuy nhin thng th ng ng i ta khai bo n l ns v n l m t th hi n c a l p Simulator, do v y n l m t i t ng. Th t v y o n m [new simulator] l m t tr ng h p th hi n c a l p Simulator s d ng t kha new. V y nn vi c s d ng bi n m i ns ny chng ta c th s d ng t t c phng th c c a l p Simulator, chng ta s th y i u ny ph n sau. c cc file u ra v i d li u m ph ng (file bm v t) hay cc file s d ng cho hi n th (cc file nam) th chng ta c n t o cc file b ng cch s d ng l nh "open": #M Set $ns #M set $ns file bm v t tracefile1 [open out.tr w] trace-all $tracefile1 file bm v t NAM namfile [open out.nam w] namtrace-all $namfile
o n m trn t o m t file bm v t tn l out.tr v m t file bm v t hi n th nam (cho cng c NAM) tn l "out.nam". Trong t p lnh tcl, cc file ny khng c g i m t cch r rng b ng tn c a chng nhng thay vo b ng cc con tr c khai bo trn v c g i l n l t l tracefile1 v "namefile". Dng u tin v dng th 4 trong v d ny ch l cc ch thch, chng khng ph i l cc l nh m 54
vn te lec om
M t m ph ng ns b t u v i cu l nh set ns [new Simulator]
ph ng. Ch r ng chng b t u v i m t k t "#". Dng th 2 m file "out.tr" s d ng cho ghi, c khai bo v i ch "w". Dng th 3 s d ng m t phng th c Simulator tn l trace-all c tham s l tn c a file m cc trace s ch y. V i cu l nh simulator ny chng ta s bm v t t t c cc s ki n theo m t khun d ng c th m chng ta s gi i thch sau chng ny Dng cu i cng bo cho b m ph ng ghi l i t t c s bm v t thnh d ng u vo NAM. N cng a ra tn file m s bm v t s c ghi l i sau b ng l nh $ns flush-trace (xem th t c finish d i). Trong tr ng h p c a chng ta, file c ch t i b ng con tr $ namfile l file out.tr Ch : cc cu l nh trace-all v namtrace-all c th d n n vi c t o ra cc file kch th c l n. N u chng ta mu n ti t ki m khng gian, cc l nh trace khc s c s d ng b i v y khi t o trace ch m t t p con cc s ki n m ph ng l th c s c n n. Nh cc cu l nh c m t trong ph n 3.6 K t thc chng trnh c th c hi n b ng m t th t c finish # nh ngha m t th t c finish Proc finish {} { glocal ns tracefile1 namfile $ns flush-trace close $tracefile1 close $namfile exe nam out.nam & exit 0 } T kha proc khai bo m t th t c - trong tr ng h p ny l finish v khng c tham s no. T kha global c dng cho bi t r ng chng ta ang dng cc bi n c khai bo ngoi th t c. Phng th c simulator flush-trace s (dump) cc trace vo cc file tng ng. L nh tcl close ng cc file bm v t nh ngha tr c v exec th c thi chng trnh nam cho hi n th . Lu r ng chng ta chuy n tn th t c a file bm v t thnh nam v khng th c hi n i u ny v i con tr namfile v n khng ph i cu l nh ngoi. Cu l nh exit s k t thc ng d ng v tr v s 0 nh tr ng thi c a h th ng. Gi tr khng l m c nh cho exit khng l i (clean exit). Cc gi tr khc c th c dng cho bi t l m t exit c m t vi l i g . cu i chng trnh ns chng ta s g i th t c finish v ch ra th i i m k t thc. V d , $ns at 125.0 finish s c dng g i finish vo th i i m 125 giy. Th t v y, phng th c c a simulator cho php chng ta l p l ch cc s ki n m t cch chnh xc. Sau trnh m ph ng c th b t u b ng l nh: 55
$ns run
56
gi tr m c nh l 50. Gi tr m c nh ny n m trong cu l nh c a ns-default.tcl2 Queue set limit_ 50 #T o 6 Set n0 Set n1 Set n2 Set n3 Set n4 Set n5 nt [$ns [$ns [$ns [$ns [$ns [$ns
$T o cc lin k t gi a cc nt $ns duplex-link $n0 $n2 2Mb 10ms DropTial $ns duplex-link $n1 $n2 2Mb 10ms DropTial $ns simplex-link $n2 $n3 0.3Mb 100ms DropTail $ns simplex-link $n3 $n2 0.3Mb 100ms DropTail $ns duplex-link $n3 $n4 0.5Mb 40ms DropTail $ns duplex-link $n3 $n5 0.5Mb 30ms DropTail # t kch th c hng i cho lin k t (n2-n3) b ng 20 $ns queue-limit $n2 $n3 20 B ng 3.1: nh ngha cc nt, knh truy n v gn kch c hng i Chng ta c th tm gi tr m c nh ny b ng cch no ? u tin, ki m tra file ns-lib.tcl, y ta s th y th t c queue-limit
trong is-allinone-2.XXX/ns-2.XXX/tcl/lib,
57
$self instvar link_ [$link_([$n1 id]:[$n2 id]) queue] set limit_ $limit } Trong , chng ta th y r ng gi i h n hng i l m t phng th c c a b m ph ng m c n 3 tham s : 2 nt nh ngha knh truy n v gi i h n hng i. y ta th y s gi i h n hng i c a ra b i bi n limit_.
Hnh 3.2: V d v m t m ng n gi n
#Thi t t m t k t n i TCP Set tcp [new Agent/TCP] $ns attach-agent $n0 $tcp Set sink [new Agent/TCP] $ns attach-agent $n4 $tcp $ns connect $tcp $sink $tcp set fid_ 1 $tcp set packetSize_ 552 #Thi t t m t FTP qua k t n i TCP Set ftp [new Application/FTP] $ftp attach-agent $tcp B ng 3.2: nh ngha m t ng d ng FTP s d ng tc nhn TCP
3.3. Tc nhn v ng d ng
V a r i chng ta nh ngha c u trc m ng (cc nt v knh truy n ), by gi ta s t o dng lu l ng qua chng. Cu i cng chng ta c n nh ngha vi c nh 58
tuy n ( cc ngu n v ch c th ) cho cc tr m (cc giao th c nh tuy n) v ng d ng s d ng chng. Trong v d tr c, chng ta mu n ch y m t ng d ng FTP (giao th c truy n file) gi a nt $n0 v $n4 v ng d ng CBR (t c bit khng i) gi a nt $n1 v $n5. Giao th c internet m FTP s d ng l TCP/IP (Giao th c i u khi n v n chuy n/Giao th c Internet) cn CBR s d ng giao th c UDP (giao th c gi d li u ng i dng). Tr c tin chng ta s nh ngha ( nh trong b ng 3.2 m t tc nhn TCP gi a nt ngu n $n0 v nt ch $n4 v ng d ng FTP s d ng n. Sau chng ta nh ngha nh trong b ng 3.3 tc nhn UDP gi a nt ngu n $n1 v nt ch $n5 v ng d ng CBR s d ng n.
59
#Thi t t m t k t n i UDP Set udp [new Agent/UDP] $ns attach-agent $n1 $udp Set null [new Agent/Null] $ns attach-agent $n5 $null $ns connect $udp $null $udp set fid_ 2 #Thi t t m t CBR qua k t n i UDP Set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp $cbr set packetSize_ 1000 $cbr set rate_ 0.01Mb $cbr set random_ false
Ch r ng c tc nhn TCP cng nh ng d ng FTP u c cho cc con tr : chng ta g i con tr cho tc nhn TCP l tcp (tuy nhin c th s d ng tn khc) v con tr cho FTP l ftp.
60
3.4. L p l ch s ki n
NS l m t m ph ng d a trn s ki n r i r c. T p l nh Tcl nh ngha khi no s ki n x y ra. Cu l nh kh i t o set ns [new Simulator] t o m t chng trnh l p l ch s ki n v cc s ki n c l p l ch b ng cch s d ng d ng sau:
61
$ns at <time> <event> B l p l ch b t u khi ta ch y ns, thng qua l nh $ns run Trong v d n gi n c a chng ta, ta s l p l ch qu trnh b t u v k t thc c a ng d ng FTP v CBR. i u ny c th c th c hi n thng qua cc l nh sau: $ns $ns $ns $ns at at at at 0.1 $cbr start 1.0 $ftp start 124.0 $ftp stop 0.1 $cbr stop
Nh v y FTP s ho t ng trong th i gian t 1.0 n 124.0 v CBR s ho t ng trong th i gian 0.1 n 124.5 (t t c n v l giy). By gi chng ta s n sng ch y m ph ng c a n. N u cc cu l nh c vi t trong m t file g i l ex1.tcl (xem b ng ?? ) th n gi n ta ch c n g ns ex1.tcl Ch trong b ng ?? chng ta thm cu i m t th t c khc ghi m t file u ra v i kch th c c a s TCP t c th i cc kho ng th i gian 0.1 giy. Trong v d , tn file u ra l WinFile. Th t c l quy nn c sau 0.1 giy n s g i l i chnh n. N chuy n ngu n TCP v file t i u ra ghi mh m t tham s m ta mu n ghi u ra. set ns [new Simulator] # nh ngha cc mu c a cc lu ng khc nhau $ns color 1 Blue $ns color 2 Red #M file bm v t set tracefile1 [open out.tr w] set winfile [open WinFile w] #ns trace-all $tracefile1 #M file bm v t NAM set namfile1 [open out.tr w] #ns namtrace-all $namfile # nh ngha th t c finish proc finish {} { glogal ns tracefile1 namefile #ns flusj-trace close $tracefile1 close $namfile exec nam out.nam & exit 0
62
# T o 6 nt set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #T o cc knh truy n gi a cc nt $ns duplex-link $n0 $n2 2Mb 10ms Droptail $ns duplex-link $n1 $n2 2Mb 10ms Droptail $ns simplex-link $n2 $n3 0.3Mb 100ms Droptail $ns simplex-link $n3 $n2 0.3Mb 100ms Droptail $ns duplex-link $n3 $n4 0.5Mb 40ms Droptail $ns duplex-link $n3 $n5 0.5Mb 30ms Droptail # t v tr nt (cho NAM) $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns simplex-link-op $n2 $n3 orient right $ns simplex-link-op $n3 $n2 orient left $ns duplex-link-op $n3 $n4 orient right-up $ns duplex-link-op $n3 $n5 orient right-down # t kch th c hang i cho knh truy n (n2-n3) thnh 20 $ns queue-limit $n2 $n3 20 #Thi t l p cc phin k t n i TCP set tcp [new Agent/TCP] $ns attack-agent $n0 $tcp set tcp [new Agent/TCPSink] $ns attack-agent $n4 $sink $ns connect $tcp $sink $tcp set fid_ 1 $tcp set packetSize_ 552 $Thi t l p m t phin k t n i FTP d a trn TCP set ftp [new Application/FTP] $ftp attach-agent $tcp #Thi t l p phin k t n i UDP set tcp [new Agent/UDP] $ns attack-agent $n1 $udp set null [new Agent/Null] 63
$ns attack-agent $n5 $null $ns connect $udp $null $tcp set fid_ 2 $Thi t l p m t phin k t n i CBR d a trn UDP set cbr [new Application/Trafic/CBR] $cbr attach-agent $udp $cbr set packetSize_ 1000 $cbr set rate_ 0.01Mb $cbr set random_ false $ns $ns $ns $ns at at at at 0.1 $cbr start 1.0 $ftp start 124.0 $ftp stop 124.5 $cbr stop
# Th t c v kch th c c a s . L y tn c a nut tcp ngu n v # c a cc file u ra nh cc tham s /vector proc plotWindow {tcpSource file} { global ns set time 0.1 set now {$ns now} set cwnd {$tcpSource set cwnd_} put $file $now $cwnd $ns at [expr $now+$time] plotWindow $tcpSource $file } $ns at 0.1 plotWindow $tcp $winfile $ns at 125.0 finish $ns run
64
Hnh d ng cc nt: m c nh chng l vng, tuy nhin c th hi n th khc i. V d ta c th g $n1 shape box (ho c thay v box ta c th dng hexagon hay circle) T mu lin k t: nh v d $ns duplex-link-op $n0 $n2 color green 65
Thm v xa cc d u (mark): Chng ta c th nh d u m t nt th i i m ang xt (v d cng th i i m khi chng ta kch ho t m t ngu n lu l ng no th i i m ). V d chng ta c th g $ns at 2.0 $n3 add-mark m3 blue box $ns at 30.0 $n3 delete-mark m3 o n m ny t o ra d u mu xanh bao quanh nt 3 trong kho ng th i gian [2,30] Thm cc nhn: m t nhn c th xu t hi n trn mn hnh t th i i m ang xt tr i, nh l a ra nhn active node t i m t nt n3 t th i i m 1.2. $ns at 1.2 "$n3 label \" active node\"" V a m t nhn "TCP input link" cho lin k t n0-n2 g $ns duplex-link-op $n0 $n2 label TCP input link Thm ch : cu i khung c a c a s NAM, ta c th t o ch hi n ra th i i m ang xt. Ch ny c th c dng m t m t s ki n no c l p l ch th i i m . V d . $ns at 5 "$ns trace-annotate \"packet drop\"" Ngoi ra trong NAM c th gim st kch th c hng i. V d , gim st hng i u vo c a lin k t gi a n2-n3, b ng cch g $ns simplex-link-op $n2 $n3 queuePos 0.5
(T t c cc v d u tham chi u t i cc i t ng c nh ngha trong ex1.tcl) Giao di n h a c a NAM c ch ra trong hnh 3.3
66
3.6. Bm v t
3.6.1. Bm cc i t ng
M ph ng NS c th t o ra trace hi n th (cho NAM) cng nh m t file bm v t ASCII tng ng v i cc s ki n ng k trong m ng. Khi chng ta s d ng bm v t (nh c p trong ph n 3.1) th ns s chn 4 i t ng vo trong lin k t: EngT, DeqT, RecvT v DrpT nh ch ra trong hnh 3.4 EnqT ng k thng tin lin quan
Hnh 3.4: Bm cc i t ng trong m t knh truy n n cng n m t gi n v c x p hng i hng i u vo c a knh truy n. N u gi tin trn th thng tin lin quan n gi b h y s c i u khi n b i DrpT. DeqT ng k thng tin ngay lc gi tin b y ra kh i hng i. Cu i cng, RecvT a thng tin c a chng ta v cc gi nh n c u ra knh truy n. NS cho php chng ta nh n nhi u thng tin hn l thng qua bm v t M t phng php l s d ng gim st hng i. Phng php ny c m t ph n 7.3 trn. cu i
67
1. Tr ng u tin l ki u s ki n. c a ra b ng m t trong 4 bi u t ng r,+,-,d l n l t tng ng v i nh n ( u ra c a knh truy n), x p vo hng, ra kh i hng, v b lo i. 2. Tr ng th 2 a ra th i i m x y ra s ki n. 3. a ra nt u vo c a knh truy n m s ki n x y ra 4. a ra nt u ra c a knh truy n m s ki n x y ra . .
5. a ra ki u gi tin (v d nh CBR hay TCP. Ki u tng ng v i tn m chng ta gn cho cc ng d ng . V d , ng d ng TCP b ng 3.2 c g i l tcp. 6. a ra kch th c gi tin 7. M t vi c (chng ta s xem sau)
8. y l m nh n d ng lu ng (fid) Ipv6 m m t ng i s d ng c th t cho m i dng t p l nh Otcl u vo. 9. y l a ch ngu n a ra d i d ng "node.port" 10. y l a ch ch, c d ng nh trn. 11. y l s th t gi tin c a giao th c l p m ng. M c d cc th c thi UDP trong m t m ng th c t khng s d ng s tu n t ny, tuy nhin ns v n gi v t i c a s tu n t gi UDP cho m c ch phn tch. 12. Tr ng cu i cng ch ra m nh n d ng duy nh t c a gi tin. M t v d , xt o n m u c a trace sinh ra b ng vi c ch y t p l nh ex1.tcl c a ra trong b ng 3.4
r s r s s r s s r s s
93.393900519 0 RTR 19 message 94.278068529 0 RTR 20 message 94.278504547 1 RTR 20 message 100.000000000 0 AGT 21 tcp 100.000000000 0 RTR 21 tcp 100.000936054 1 AGT 21 tcp 100.000936054 1 AGT 22 ack 100.000936054 1 RTR 22 ack 100.001984108 0 AGT 22 ack 100.001984108 0 AGT 23 tcp 100.001984108 0 RTR 23 tcp 68
32 1 1 -1 32 0 0 -1 32 0 0 -1 40 0 0 1 60 0 0 1 60 0 0 1 40 0 1 0 60 0 1 0 60 1 1 0 1000 0 0 1020 0 0
0 0 0 0 1 1 0 0 0 1 1
-1 -1 -1 0 0 0 0 0 0 0 1 1 1
s s r s s r s s r s s r s s r s s r s s r s s s s r s
100.001984108 100.001984108 100.006992162 100.006992162 100.006992162 100.011920235 100.011920235 100.011920235 100.013128291 100.013128291 100.013128291 100.014811365 100.014811365 100.014811365 100.019719421 100.019719421 100.019719421 100.024687497 100.024687497 100.024687497 100.025795554 100.025795554 100.025795554 100.025795554 100.025795554 100.026883631 100.026883631
0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0
AGT RTR AGT AGT RTR AGT AGT RTR AGT AGT RTR AGT AGT RTR AGT AGT RTR AGT AGT RTR AGT AGT RTR AGT RTR AGT AGT
24 24 23 25 25 24 26 26 25 27 27 26 28 28 27 29 29 28 30 30 29 31 31 32 32 30 33
tcp tcp tcp ack ack tcp ack ack ack tcp tcp ack tcp tcp tcp ack ack tcp ack ack ack tcp tcp tcp tcp ack tcp
1000 1020 1020 40 0 60 0 1020 40 0 60 0 60 1 1000 1020 60 1 1000 1020 1020 40 0 60 0 1020 40 0 60 0 60 1 1000 1020 1000 1020 60 1 1000
0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1
0 1 1 1 1 1 2 2 1 0 1 2 0 1 1 3 3 1 4 4 3 0 1 0 1 4 0
2 2 1
3 3 4 4 3
5 5 6 6 7
3.7. Bi n ng u nhin
Cc bi n ng u nhin (RVs) v i phn b khc nhau c th c t o trong ns. Do vai tr quan tr ng c a cc bi n ng u nhin trong m hnh ha lu l ng v m ph ng m ng nn chng ta c n nh l i v n t t cc nh ngha v t m quan tr ng c a cc bi n ng u nhin chnh trong ph l c 11. Chi ti t hn, c th tra c u thm, t i http://www.xycoon.com.
69
3.7.2. T o cc bi n ng u nhin
u tin chng ta t o m t b t o m i, v gn n m t seed l 2 v i l nh Set MyRng [new RNG] $MyRng2 seed 2 Sau t o m t bi n ng u nhin th c s , chng ta ph i nh ngha ki u phn b v cc tham s c a n. Chng ta a ra m t vi v d d i y: ta s t o cc bi n ng u nhin v i phn b Pareto, h ng s , ng nh t, hm m v siu m. 1. Phn b pareto: M t bi n ng u nhin phn b pareto ngha l r1 c xy d ng b ng cch cho bi t k v ng c a n v tham s hnh d ng (shape) c a n , gi tr m c nh tng ng l 1.0 v 1.5. Set r1 [new RandomVariable/Pareto] $r1 use-rng $MyRng 70
$r1 set avg_ 10.0 $r1 set shape_ 1.2 2. H ng s : M t bi n ng u nhin suy bi n l h ng s v b ng gi tr c a n set r2 [new RandomVatiable/Constant] $r2 use-rng $MyRng $r2 set val_ 5.0 3. Phn b u: c nh ngha thng qua i m nh nh t v l n nh t trong kho ng h tr c a n: set $r3 $r3 $r3 r3 [new RandomVariable/Uniform] use-rng $MyRng set min_ 0.0 set max_ 10.0 trung bnh c a n
\item \textbf{Phn b m:} c nh ngha qua gi tr \begin{quote} \begin{verbatim} set r4 [new RandomVariable/Exponential] $r4 use-rng $MyRng $r4 set avg_ 5 4. Phn b siu m: c nh ngha nh sau: set $r5 $r5 $r5 r5 [new RandomVariable/HyperExponential] use-rng $MyRng set avg_ 1.0 set cov_ 4.0
Ti p theo chng ta s trnh by m t chng trnh nh (rv1.tcl) ki m tra cc bi n ng u nhin phn b Pareto v i cc seed v b t o khc nhau nhng v i cng phn b Pareto. c a ra trong B ng 2.6. Cho m i seed (gi tr 0, 1 v 2) v b t o, chng ta t o m t chu i 3 bi n ng u nhin. Bi n count c gn s bi n ng u nhin m chng ta t o b ng cch s d ng test cho m i seed v b t o. Khi ch y v d ny ta c th th y r ng v i seed b ng 0, hai b t o cho cc gi tr bi n khc nhau; nh v y ta t c 6 gi tr khc nhau (3 gi tr t m i b t o). Cho cc seed khc, m t b t o t o ra 3 gi tr khc nhau nhng cc gi tr ny khng ph thu c vo b t o: gi tr th n c t o b i b t o 1 cng nh c t o b i b t o 2.
71
## V d
tcl
Set count 3 For {set I 0} {$i<3}{incr i}{ Puts ===== I = $i Set MyRng1 [new RNG] $MyRng1 seed $i Set MyRng2 [new RNG]
$MyRng2 seed $i Set r1 [new RandomVariable/Pareto] $r1 use-rng $MyRng1 $r1 set avg_ 10.0 $r1 set shape_ 1.2 Puts stdout KT phn b Pareto, avg = [$r1 set avg_] shape = [$r1 set shape_ ]
Set r2 [new RandomVariable/Pareto] $r1 use-rng $MyRng2 $r1 set avg_ 10.0 $r1 set shape_ 1.2 Puts stdout KT phn b } Pareto, avg = [$r2 set avg_] shape = [$r2 set shape_ ]
72
4.4. V th v i gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5. V th v i xgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6. Trch tch thng tin trong m t k ch b n tcl . . . . . . . . . 4.7. Minh h a m t s file awk v gnuplot . . . . . . . . . . . . . . . 4.7.1. Tnh thng l ng c a m ng theo hai ki u file trace . . . . . . 4.7.2. M u v th thng l ng v a tnh xong b ng file awk . . 4.8. M t s file hnh plot v b ng gnuplot . . . . . . . . . . . . . . .
Ng i d ch: Nguy n M nh Linh Bin t p: Nguy n Qu c Bnh B n g c: NS Simulator for beginners, Chapter 3 [2]
Chng trnh m ph ng NS c th cung c p r t nhi u d li u chi ti t v cc s ki n x y ra khi m t m ng ho t ng. N u chng ta mu n phn tch nh ng d li u chng ta c n ph i trch tch nh ng thng tin lin quan ra t nh ng file v t (trace files) v x l chng Tuy r ng ta c th vi t nh ng chng trnh b ng b t c ngn ng l p trnh no 73
c th x l c nh ng file d li u , nhng c m t s cng c mi n ph ph h p cho m c ch phn tch file trace c pht tri n trn m t s h i u hnh (unix, linux, window, . . . ). T t c nh ng g ng i s d ng c n lm l vi t nh ng o n script ng n c d ch v th c thi m khng c n ph i bin d ch chng trnh.
B ng 4.2: awk script tnh gi tr l ch chu n c a c t 4 c a m t file s d ng script u tin tnh ton gi tr trung bnh c a c t th 4 c a m t file c tn l "Out.ns" chng ta s g nh sau trn h i u hnh unix: awk f Average.awk Out.ns Chng ta s nh n c k t qu trng gi ng nh l: average : 29.397 cho gi tr trung bnh c a c t 4 . By gi tnh l ch chu n c a c t chng ta g: awk v t=29.397 f StDev.awk Out.ns Cu l nh ny s tr v gi tr : standev : 33.2003. Ch r ng trong o n m trn, chng ta ph i copy gi tr trung bnh thu c t o n m tr c vo trong cu l nh tnh ton l ch chu n. Th d ny ch ra lm th no a m t tham s vo m t o n m awk. 74
Ch r ng n u chng ta khng chia ph n cu i c a o n m awk u tin (B ng 4.1) chon l, chng ta s nh n c t ng c a t t c cc gi tr trong c t 4 thay v gi tr trung bnh c a chng. M t cch t t nh t thu c gi tr trung bnh v l ch chu n l s d ng m ng: BEGIN { FS = \t} {val[nl]=$4} {nl++} {s=s+$4} END { Av=s/nl For (I in val) { d=val[i]-av s2=s2+d*d } Print averate: av standev sqrt(s2/nl)} B ng 4.3: M t o n m awk s d ng m ng tnh trung bnh v l ch chu n V d ti p theo l y u vo l m t file v i 15 c t (t 0 n 14). u ra s l m t file c 5 c t, c t th nh t ch c t s 1 c a file g c, v c t th 2 t i 5 l t ng c a l n l t cc c t 3-4, 6-8, 9-11 v 12-14 (12-14 tng ng v i 3 c t cu i cng trong file g c). s d ng o n m trn chng ta lm nh sau: BEGIN {FS=\t} {l1=$3+$3+$5} {l2=$6+$7+$8} {d1=$9+$10+$11} \ {d2=$12+$13+$14} {print $1"\t" l1\t l2\t d1\t d2 } END {} B ng 4.4: M t o n m tnh t ng cc c t awk f suma.awk Conn4.tr > outfile File g c y l file Conn4.tr v u ra c ghi vo m t file c tn l outfile
4.2. S d ng grep
L nh grep trong unix cho php chng ta l c m t file. Chng ta c th t o m t file m i ch ch a m t s dng ch a m t chu i k t nh t nh l y t file g c. V d , file trace c a ns c th ch a t t c cc lo i gi tin (packets) i qua t t c cc ng truy n (links) v chng ta c th ch quan tm n d li u lin quan n cc gi tcp g i t node 0 n node 2. N u cc dng lin quan n cc s ki n ch a chu i "0 2 tcp" th t t c nh ng g chng ta ph i lm l g: grep 0 2 tcp tr1.tr > tr2.tr cu l nh trn tr1.tr l file trace g c v tr2.tr l file m i xu t ra. N u chng 75
ta mu n thu c m t file ch a t t c cc dng c a tr1.tr kh i u v i k t r, chng ta g l nh: grep ^r tr1.tr > tr2.tr N u chng ta mu n t o ra m t file m t t c cc dng b t u v i s v ch a chu i tcp 1020 chng ta g l nh: grep ^s simple.tr | grep tcp 1020 > tr3.tr
76
#type: perl throughput.pl <trace file> <required node> <granularity> > file $infile=$ARGV[0]; $tonode=$ARGV[1]; $granularity=$ARGV[2]; #We compute how many bytes were transmitted during time interval #specified by granularity parameter in seconds $sum=0; $clock=0; Open (DATA,<$infile) While (<DATA>) { @x = split( ); #column 1 is time If ($x[1]-$clock <= $granularity) { #checking if the event corresponds to a reception If ($x[0] eq r) { #checking if the destination corresponds to 1st argument If ($x[3] eq $tonode) { #checking if the packet type is TCP If ($x[4] eq tcp) { $sum=$sum+$x[5]; } } } } Else { $throughput=$sum/$granularity; print STDOUT $x[1] $throughput\n; $clock=$clock+$granularity; $sum=0; } } $throughput=$sum/$granularity; print STDOUT $x[1] $throughput\n; $clock=$clock+$granularity; $sum=0; Close DATA; exit(0);
77
4.4. V th v i gnuplot
Gnuplot l m t ph n m m m ngu n m mi n ph c s d ng r ng ri cho c h i u hnh ch y trn n n unix/linux v window. Gnuplot c m t l nh yu c u gip c th c s d ng h c chi ti t hn v cc tnh nng c a ph n m m ny. Cch n gi n nh t s d ng gnuplot l g "plot <fn>", y file (chng ta t tn l fn) c hai c t th hi n cc gi tr t a x v y c a cc i m. Cc i m c th c n i b i ng v i nhi u ki u th hi n c nh ngha b i l nh: plot fn w lines 1 (nh ng ch s khc nhau c th c s d ng thay cho 1, gi tr ny th hi n cc ki u ng (line) khc nhau). Ta cng c th s d ng cc ki u i m (points) khc nhau b ng cch vi t l nh nh sau: plot fn w points 9 (m t s ki u i m c th c s d ng ph thu c vo ch s xu t hi n sau points). M t s ch c nng khc c a gnuplot: hy xem trong v d d i y: set size 0.6, 0.6 set pointsize 3 set key 100,8 set xrange [90.0:120.0] plot fn1 w lines 1, fn2 w lines 8, fn3 with points 9 Dng 1: ch ra kch th c th v c nh hn m c nh. Dng 2: ch ra kch th c i m v c l n hn m c nh. Dng 4: gi i h n kho ng gi tr trn tr c x l 90-120. Dng 5: v ra 3 ng trn cng m t th , m i ng l y s li u t 3 file khc nhau: fn1, fn2, fn3. Dng 3: cho gnuplot bi t chnh xc v tr v key, l ph n ch thch c a th m t cc i t ng v . Thng th ng, n ch ra m i i t ng c v s d ng ki u ng v i m nh th no. Thay cho vi c m t chnh xc m t v tr, ta cng c th s d ng cc t kha left, right, top, bottom, outside v below .v.v set key below (cu l nh trn t b ng ch thch bn d i th ), hay ta ch c n g set nokey b i b ng ch thch. Ch r ng tn m c nh cho m i i t ng xu t hi n trong b ng ch thch ch n gi n l tn c a t p t v th . N u chng ta 78
N u m t chu i cc cu l nh c s d ng i s d ng l i nhi u l n, ta c th vi t chng vo trong m t file, gi s c tn l g1.com, v sau ch c n load l i file m i l n chng ta s d ng b ng cu l nh nh sau: load g1.com gnuplot c th c s d ng trch tch m t vi c t t m t file nhi u c t. i u c th c hi n nh sau: plot queue.tr using 1: ($4/1000) t "kbytes" w lines 1, \ queue.tr using 1:5 t "packest" w lines 2 Cu l nh trn c ngha l v m t ng th s d ng s li u c a c t 1 c a file queue.tr trn tr c x v cc gi tr c a c t 4 chia cho 1000 trn tr c y, v sau v trn cng th m t ng khc s d ng s li u c a c t 5 cho tr c y v cng s li u c t 1 cho tr c x. Ch : th t c a "using", t v lines trong cu l nh l quan tr ng !
4.5. V th v i xgraph
Xgraph l m t cng c v th c cung c p b i ns. (i khi c n ph i ti n hnh bin d ch ring r cho xgraph trong th m c xgraph s d ng l nh ./configure v make. Xgraph c th c ng gi cng ns trong cc phin b n ns-allinone ho c c th t i ring r xgraph v ci). Ch r ng cng c ny cho php t o ra cc file postscript (eps), nh Tgif, v cc nh d ng khc b ng cch n vo nt Hdcpy. Cu l nh g i xgraph c th c khai bo trong k ch b n tcl do c th xu t ra th ngay sau khi k t thc cng vi c m ph ng. u vo c a xgraph l m t ho c nhi u ascii file ch a m i c p gi tr x-y trn m t dng (m i dng s v c m t i m trn th ). V d l nh xgraph f1 f2 s v ra trn cng m t hnh th c a file 1 v file 2. M t s l a ch n c s d ng trong xgraph l: Title: s d ng t "title" Kch th c: -geometry xsize x ysize. Tiu cho cc tr c: -x xtitle (khai bo tiu cho tr c x) v y ytitle (khai bo tiu cho tr c y). 79
80
} # Trace line format: new if ($2 == "-t") { event = $1 time = $3 node_id = $5 flow_id = $39 pkt_id = $41 pkt_size = $37 flow_t = $45 level = $19 } # Calculate total received packets size if (flow_id == flow && node_id == dst && event == "r" && level == "AGT") { if (time/tic >= k) { for (i=k; i<time/tic; i+=1) { if (i != k) recv = 0 printf("%15g %18g\n",i*tic, (recv/tic)*(8/1000)) } k = i recv = pkt_size } else recv += pkt_size } } END { printf("%15g %18g\n",k*tic, (recv/tic)*(8/1000)) printf("%15g %18g\n",k*tic, 0) }
81
82
Hnh 4.1: Probability Distribution Fuction of BS queue delay rtPS - Nontokenbucket - Nonmobility
Hnh 4.2: Evaluation of throughphut performance in downlink WiMAX with PF scheduler (Nonmonbility Tokenbucket)
83
Chng 5 NS Tutorial
M cl c
te lec om
84
84 85 86 87 88 88 89 91 91 92 93 94
5.2.1. T o topo trong NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2. T o cc s ki n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3. nh nhn cho lu ng d li u . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4. Gim st hng i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. M ng c tnh ch t ng . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ng i d ch: Tr nh Vi t Thi
Bin t p: H T t Thnh, Tr n Cng L B n g c: Tutorial for the Network Simulator "ns", part 4,5,6 [3]
vn
5.3.2. Lin k t l i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
v nh ng lin k t (links), lm th no g i d li u t m t node n node khc, lm th no i u khi n hng i hay ch y NAM t t p l nh v a vi t hi n th qu trnh m ph ng.
5.1.1. B t u nh th no
Chng ta s vi t m t m u chung c th s d ng l i cho m i l n nh vi t t p l nh Tcl m i. B n c th vi t t p l nh Tcl b ng b t c trnh so n th o no nh joe ho c emacs. Ti t tn cho v d ny l example1.tcl. u tin, c n t o ra i t ng m ph ng b ng cu l nh:
Ti p theo t o t p tin ph c v cho ch c nng bm v t d li u (trace data) c a NAM (network animator) set nf [open out.nam w] $ns namtrace-all $nf
vn te lec
hai, truy n tham s l i t ng c t o ra lin quan n nam vo trong t p tin ny. proc finish {} { global ns nf close $nf exit 0 $ns flush-trace exec nam out.nam & } ng. ph ng. $ns at 5.0 "finish" gi n l p l ch cho cc s ki n b ng cu l nh at . Dng cu i cng l k t thc vi c m ph ng
om
85
trn ns ghi t t c d li u m ph ng c
$ns run By gi b n c th lu t p tin v ch y th b ng l nh ns example1.tcl. B n c th g p thng bo l i nh nam: empty trace file out.nam b i v chng ta cha nh ngha b t c i t ng ( node, lin k t. . . ) hay s ki n no. Chng ta s h c cch nh ngha cc i t ng trong ph n 5.2 v cc s ki n trong ph n ??. B n s ph i s d ng l i o n m trong ph n ny y ho c t i y cc ph n khc. B n c th t i t i
Hnh 5.1: T o k t n i gi a n0 v n1
B n c th t i v d y t i y ho c t i y n u n khng ho t ng v b n ngh m c l i.
86
5.1.3. G i d li u
D nhin, v d trn l cha hon thi n v b n ch c th th y c m hnh topo v cha c ho t ng xy ra, v th b c ti p theo l g i d li u t node n0 n node n1. Trong ns, d li u lun c g i t m t tc nhn (agent) n tc nhn khc. Do , c n ph i t o ra m t tc nhn g i d li u t node n0, m t tc nhn khc nh n c d li u trn node n1. #Create a UDP agent and attach it to node n0 set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 # Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 Hai l nh u t o ra tc nhn UDP (User Datagram Protocol:giao th c d li u ng n ng i dng) v gn n cho node n0. Nh ng cu l nh ti p theo t o ra b t o d li u t c khng i CBR (Constant Bit Rate:t n s bit b t bi n) m c th t ng g i cc gi tin c di 500 byte cch nhau 0.005 giy (t c l 200 gi tin/giy). B n c th tm th y cc thng s thch h p cho m i tc nhn ns manual page
Dng ti p theo l t o m t tc nhn Null v i tc ng lm suy gi m lu l ng gn n vo vo node nt n1. set null0 [new Agent/Null] $ns attach-agent $n1 $null0 Hai tc nhn c k t n i v i nhau theo cu l nh: $ns connect $udp0 $null0 V by gi , ta c n b o tr m CBR khi no th g i d li u, khi no th d ng. Ch : T t nh t l t cc dng l nh ny ngay tr c dng "$ns at 5.0 "finish" $ns at 0.5 "$cbr0 start" By gi b n c th lu t p tin v b t u m ph ng l i. Khi b n lick vo nt play c a s nam, b n s th y 0.5 giy sau m ph ng node 0 b t u g i gi d li u t i node 1. B n c th lm ch m nam b ng con tr t Step $ns at 4.5 "$cbr0 stop"
87
Hnh 5.2: G i d li u gi a n0 v n1 Nh v y b n c m t cht kinh nghi m v i nam v o n m Tcl. B n c th click b t k gi d li u trong c a s nam gim st n hay click tr c ti p ln cc lin k t c m t s th th ng k. B n nn thay i tham s packetsize_ v interval_ trong o n m Tcl th y c i u g x y ra. B n c th t i ton b v d t i y ho c t i y H u h t cc thng tin c n thi t m ti c n c th vi t o n m Tcl ny c l y tr c ti p t cc t p tin v d th m c tcl/ex/, khi thi t l p cc thng s CBR (packetSize_, interval_) ti ph i l y t ns manual page
88
$ns duplex-link $n0 $n2 1Mb 10ms DropTail $ns duplex-link $n1 $n2 1Mb 10ms DropTail $ns duplex-link $n3 $n2 1Mb 10ms DropTail B n c th lu v kh i ng o n m by gi . B n c th th y r ng m hnh m ng c v hi r c r i trong nam. B n c th b m vo nt re-layout th y r hn nhng s t t hn n u c thm m t cht i u ch nh trong vi c b tr topo. Thm 3 dng sau vo o n m Tcl c a b n v kh i ng l i n. $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right By gi , b n s c th hi u o n m ny lm ci g khi nhn topo trong c a s nam. N trng gi ng nh hnh bn d i
Ch r ng cc ph n lin quan n b tr t ng c b qua, do n b tr theo mnh. Ty ch n cho h ng c a cc cc lin k t l ph i, tri, ln, xu ng v s k t h p cc h ng . B n c th th nghi m v i cc ci t sau, nhng by gi hy thot kh i topo m ng theo ng cch.
5.2.2. T o cc s ki n
By gi chng ta t o ra hai tc nhn UDP v i lu ng ti nguyn CBR v gn chng cho node n0 v n1. R i t o ra tc nhn Null v gn n cho node n3. #Create a UDP agent and attach it to node n0 set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 # Create a CBR traffic source and attach it to udp0
89
set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 #Create a UDP agent and attach it to node n1 set udp1 [new Agent/UDP] $ns attach-agent $n1 $udp1 # Create a CBR traffic source and attach it to udp1 set cbr1 [new Application/Traffic/CBR] $cbr1 set packetSize_ 500 $cbr1 set interval_ 0.005 $cbr1 attach-agent $udp1 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 Hai tc nhn CBR c n ph i c k t n i v i tc nhn Null. $ns connect $udp0 $null0 $ns connect $udp1 $null0 Chng ta mu n tc nhn CBR th nh t b t u g i lc 0.5 giy v k t thc lc 4.5 giy trong khi tc nhn CBR th hai b t u lc 1.0 giy v k t thc lc 4.0 giy. $ns at 0.5 "$cbr0 start" $ns at 1.0 "$cbr1 start" $ns at 4.0 "$cbr1 stop" $ns at 4.5 "$cbr0 stop" Khi b n b t u o n m ns example2.tcl ngay by gi , b n s r ng lu l ng trn cc knh truy n t n0 n n2 v t n1 n n2 nhi u hn lu l ng m knh truy n t n2 n n3 c th mang c. M t tnh ton n gi n xc nh n vi c ny: Chng ti ang g i 200 gi tin/giy trn m i knh trong hai knh truy n u tin v i kch th c gi tin l 500 byte. I u ny n n m t bng thng 0.8 Mbps cho cc knh truy n t n0 n n2 v t n1 n n2.. T ng bng thng l 1.6 Mb/giy nhng knh truy n gi a n2 v n3 ch c dung l ng l 1Mb/giy, v th hi n nhin l vi gi tin b lo i ra. Nhng gi tin no b lo i? C hai lu ng u mu en v th ch c th th y c i u g ang di n ra i v i gi
90
tin l gim st chng trong nam b ng cch click vo chng. Ti p theo c a ph n 2, ti s trnh by cch lm th no phn bi t cc lu ng khc nhau v lm th no th y th t s i u g ang th c s xy ra hng i t i knh truy n t n2 n n3.
i t ng m ph ng, do y l m t ph n c a s thi t l p m ph ng $ns color 1 Blue $ns color 2 Red o n m ny cho php thi t l p cc mu s c khc nhau c a m i lu ng.
Hnh 5.4: Mu s c cc lu ng
By gi b n c th kh i ng l i t p l nh v m t lu ng c mu xanh, lu ng kia mu . Khi theo di k t n i t node n2 n node n3 v b n s r ng sau m t th i gian truy n th cc phn b gi a cc gi tin mu xanh v mu khng cn cn b ng n a (ch t l trn h th ng c a ti). Trong ph n ti p theo ti s trnh by cho b n lm th no c th theo di bn trong hng i c a lin k t ny tm hi u chuy n g ang xy ra .
91
$ns duplex-link-op $n2 $n3 queuePos 0.5 Kh i ng ns l i v b n s th y m t hnh nh tng t bn d i sau m t th i gian ng n
By gi b n c th th y cc gi tin trong hng i v sau c th th y cc gi tin b lo i b nh th no v i qua nh th no, m c d ch c gi tin mu xanh b lo i (ch t trong h th ng c a ti, ti on l c th khc nhau trong phin b n sau ho c tr c ). Nhng b n khng th trong i qu nhi u vo s cng b ng t m t hng DropTail n gi n. V th hy c c i thi n b ng cch s d ng hng i SFQ (stochastic fair queueing: hng i cng b ng ng u nhin) cho k t n i t n2 n n3. Thay i nh ngha cho lin k t gi a n2 v n3 v i dng l nh bn d i $ns duplex-link $n3 $n2 1Mb 10ms SFQ By gi , vi c x p hng c l l cn b ng r i. S l ng mu xanh v mu b lo i l nh nhau.
B n c th t i v d y
y ho c
5.3. M ng c tnh ch t ng
Trong ph n ny ti s trnh by cho b n m t v d v m ng ng vi c nh tuy n ch nh s a l i cc knh truy n b l i. B ng cch ny ti s ch cho b n c th gi s l ng l n cc nt trong m t m ng Tcl thay v c p cho m i nt m t ci tn ring.
92
5.3.1. T o m t Topo l n hn
Ti g i cho b n g i t p l nh Tcl trong v d ny l example3.tcl. B n c th chn vo m u t i y ho c t i y, trong ph n 5.1 Thng th ng, tr c tin, m t topo c t o ra, m c d l n ny chng ti c h ng ti p c n khc m b n s c m th y d dng hn khi mu n t o cc m hnh m ng l n. o n m bn d i t o ra b y nt v lu chng trong m ng n() for {set i 0} {$i < 7} {incr i} { set n($i) [$ns nt] } Cc b n t ng g p vng l p for cc ngn ng l p trnh khc tr c y, v ti ch c
r ng cc b n hi u c u trc ny m t l n n a. nh ng m ng , cng nh cc bi n khc trong Tcl, chng khng c n ph i c khai bo u tin . By gi chng ta s k t n i cc nt thnh m t topo vng trn. Ban u dng m bn d i trng c v ph c t p hn m t cht. for {set i 0} {$i < 7} {incr i} { $ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms DropTail } Vng l p for k t n i t t c cc nt v i nt ti p theo trong m ng tr nt cu i cng, nt ny s k t n i v i nt u tin.. th c hi n i u , ti s d ng ton t % By gi , khi b n cho ch y o n m, u tin topo c v l trong NAM nhng sau khi b n b m vo nt re-layout th n s trng gi ng hnh bn d i.
93
5.3.2. Lin k t l i
B c ti p theo l g i d li u t nt n0 n nt n3. #Create a UDP agent and attach it to node n(0) set udp0 [new Agent/UDP] $ns attach-agent $n(0) $udp0 # Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n(3) $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" Gi y, o n m trn c l quen thu c v i b n. Ch khc v i cc ph n tr c l
by gi chng ta s d ng cc thnh ph n m ng l cc nt. N u b n kh i ng t p l nh, b n s th y r ng lu l ng s ch n ng ng n nht t nt 0 t i nt 3 i qua nt 1 v 2 ng nh mong i. By gi chng ti thm m t tnh nng th v khc. Chng ta hy lm cho lin k t gi a nt 1 v 2 b t trong 1 giy. $ns rtmodel-at 1.0 down $n(1) $n(2) $ns rtmodel-at 2.0 up $n(1) $n(2) C l khng qu kh hi u hai dng l nh trn. By gi b n ch y l i t p l nh v b n s th y r ng t giy th nh t n giy th 2 knh truy n s b t v t t c d li u c g i i t nt 0 b m t. By gi ti s cho b n th y lm th no s d ng nh tuy n ng gi i quy t v n trn. Thm vo dng l nh bn d i vo ph n u c a o n m Tcl c a b n sau khi i t ng m ph ng c t o ra. $ns rtproto DV
94
B t u m ph ng l i, b n s th y u tin c r t nhi u gi tin nh truy n qua m ng. N u b n lm ch m nam xu ng click vo m t trong s chng b n s th y r ng cc chng l cc gi tin rtProtoDV c s d ng thay i thng tin nh tuy n gi a cc nt. Khi knh truy n b t tr l i lc 1 giy, vi c nh tuy n s c c p nh t v lu l ng s c nh tuy n l i i qua nt 6, 5, v 4.
B n c th t i chng y ny t i y ho c t i y tham kh o
95
Chng 6 M ph ng v m t TCP/IP
M cl c
6.1. M t TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.1.2. Cc b n tin xc nh n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3. C a s ch ng t c ngh n ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.4. M t cc gi tin v ng ng Wth ng: . . . . . . . . . . . . . . . . . . . . 6.1.5. Kh i t o k t n i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Qu trnh bm v t v phn tch v d Ex1.tcl . . . . . . 97 99 99 100 100 101 107 111 119 124 97 6.1.1. Cc m c ch c a TCP v i u khi n lu ng theo c ch c a s
6.3. TCP trn lin k t nhi u v vi c gim st hng i . 6.4. T o nhi u k t n i v i cc c tnh ng u nhin . . . . . 6.5. Cc k t n i TCP ng n . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6. Cc cng c gim st tin ti n: . . . . . . . . . . . . . . . . . . . .
6.7. Bi t p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ng i d ch: Nguy n Thy Vn Bin t p: Hong Tr ng Minh B n g c: NS Simulator for beginners, Chapter 4 [2]
TCP (Transport Control Protocol) l m t giao th c truy n t i ch u trch nhi m truy n kho ng 90% lu l ng d li u trn Internet. Chnh v v y, n m v ng v hi u r TCP ng
96
vai tr v cng quan tr ng nh c lu l ng trong Internet. M c d TCP c tri n khai r ng kh p, n v n pht tri n khng ng ng. IETF (Internet Engineering Task Force) l t ch c tiu chu n ha chnh lin quan t i giao th c TCP. Khng gi ng nh cc t ch c chu n ha khc (ITU ho c di n n ATM) t t c cc tiu chu n c a IETF mi n ph v c s n trn m ng. ph n u tin, ta s m t ho t ng c a TCP. Cn cc ph n sau , ta xem xt
6.1. M t TCP
6.1.1. Cc m c ch c a TCP v i u khi n lu ng theo c ch c as
TCP nh m m t vi m c ch sau: i u ch nh t c truy n cc gi d li u sao cho ph h p v i bng thng kh d ng. Trnh hi n t ng ngh n m ng. T o k t n i tin c y b ng cch truy n l i cc gi tin b th t l c. i u khi n t c truy n, s l ng cc gi tin cha c nh n (hay ni m t cch chnh xc hn l nh ng gi tin m ngu n cha nh n c thng tin ph n h i t ch l nh n c) b gi i h n b i m t tham s g i l m t c a s t c ngh n. Chng ta t tn l W , tuy nhin trong ng c nh c a TCP n k hi u l cwnd. i u ny c ngha l ni truy n cc gi tin bu c ph i ch v ng ng truy n cc gi tin m n truy n tr c v cc gi tin ko c xc nh n ny c tn l W. cc gi tin ny c xc nh n v c kh nng truy n l i cc gi tin b th t l c, m i gi tin c truy n i ph i c m t s th t .
6.1.2. Cc b n tin xc nh n
M c tiu c a cc b n tin xc nh n g m i u ch nh t c truy n c a TCP, m b o r ng cc gi tin ch c truy n i khi m cc gi tin khc c truy n ra kh i m ng. T o ng k t n i ng tin c y b ng cch truy n t i nt ngu n cc thng tin c n thi t truy n l i cc gi tin khng n c ch.
97
Lm th no m ch n c a gi tin bi t l gi tin c b th t l c ? Lm th no m ta bi t c m t gi tin b m t? Gi ACK ch a thng tin g? Gi tin ACK cho ngu n g i tin bi t s th t c a gi tin m n ch i. V d sau s minh h a cho i u ny. Gi s gi tin 1,2,. . . ,6 n ch theo th t . Khi gi tin s 6 n, ch g i m t gi tin ACK thng bo r ng n ang i gi tin s 7. N u gi tin s 7 n, ch yu c u gi tin s 8. Gi s gi tin s 8 b th t l c, gi tin s 9 c th n ch c. T i th i i m , ch g i gi tin ACK c tn l ACK l p thng bo v i ngu n g i tin r ng n ch gi tin s 8. Thng tin trong gi tin ACK ny tng t nh gi tin ACK g i tr c . Phng php ny c tn l ACK n (implicit ACK) . Phng php ny hi u qu ngay c khi m t cc gi tin ACK. Hn n a, gi s r ng gi tin ACK thng bo r ng ch i gi tin s 5 b m t, Khi gi tin ACK ti p theo n v thng bo r ng ch ang i gi s 6, nt ngu n hi u r ng ch nh n c gi s 5, v v y thng tin g i b i ACK m t c suy ra t gi tin ACK k ti p. Gi tin TCP b coi l m t n u nh: C 3 gi tin ACK gi ng nhau thng tin cho ngu n1 v cng m t gi tin c g i i. Khi m t gi tin c truy n i, c m t ng h m th i gian. N u gi tin ACK c a gi tin c truy n ko n trong kho ng th i gian T0 , c ngha l qu h n (Time-out) v gi tin coi nh b m t. Qu trnh truy n l i sau khi l p l i 3 gi tin ACK c g i l truy n l i nhanh (fast retransmit) Ch n th i gian T0 nh th no? Ngu n c l ng th i gian quay vng RT T trung bnh, hay ni cch khc l th i gian c n thi t cho m t gi tin n ch c ng v i th i gian cho gi tin ACK quay tr l i thng bo cho ngu n. N cng nh gi s bi n ng c a RT T . T0 c tnh ton nh sau: T0 = RT T + 4D RT T l c l ng hi n t i c a RT T cn D l s bi n ng c a RT T . c l ng RT T , ta tnh ton s chnh l ch M gi a th i gian truy n 1 gi tin v th i gian gi tin ACK c a n quay tr l i. Sau tnh: RT T a RT T + (1 a)M, D aD + (1 a) RT T M
1
...
98
gi m s l ng gi tin ACK trong h th ng, TCP th ng xuyn s d ng l a ch n ACK tr (delayed ACK) t i 1 gi tin ACK c truy n ch cho cc gi tin d n ch. Gi tr chu n c a d l 2 ( xem RFC 1122). Tuy nhin, tr 1 gi tin ACK n t n khi d > 1 gi tin c nh n c th d n n vi c nh tr hon ton trong tr ng h p kch th c c a s nh . V v y, n u gi tin u tin (n m trong s d gi tin ang c ch i) n ch, sau m t kho ng th i gian ng t qung (th ng l 100ms) n u d gi tin v n cha n th m t b n tin ACK c t o ra m khng c n ch i thm n a.
6.1.3. C a s ch ng t c ngh n ng
T u nh ng nm 80, trong su t vi nm, TCP lun c 1 c a s ch ng t c ngh n c nh. Cc m ng t i th i i m ko n nh, nhi u gi tin b m t, Cc chu k ngh n m ng l n v r c r i, trong su t th i gian ngh n th thng l ng gi m ng k , nhi u gi tin ph i truy n l i v th i gian tr l n. gi i quy t v n ny, Van Jacobson [25] xu t s d ng c a s ch ng t c ngh n ng. Kch th c c a c a s thay i ty theo tr ng thi c a m ng. V c b n, t ng l: Khi c a s nh , kch th c c a n c th tng nhanh chng , nhng khi t n m t gi tr nh t nh no , kch th c c a n ch c th tng ch m. Khi hi n t ng ngh n m ng c pht hi n, kch c c a c a s gi m m nh. C ch ng ny c php gi i quy t t c ngh n nhanh chng v s d ng hi u qu bng thng c a m ng. Chnh xc hn, nh ngha ng ng Wth , hay tn g i khc l "ng ng b t u ch m" n s th hi n nh gi c a chng ta v dung l ng m ng. C a s b t u gi tr 1. 1 gi tin n l c truy n. Khi gi tin ACK c a gi tin ny quay tr l i, ta c th truy n 2 gi tin. i v i m i gi tin ACK c a 2 gi tin ny, c a s tng ln 1 gi tr , m c ch l khi cc gi tin ACK c a 2 gi tin ny quay tr l i, ta c th truy n 4 gi tin. Ta nh n th y l c a s tng theo s m. Giai o n ny c tn l "b t u ch m" (slow start). S d n c tn nh th l b i l thay v c a s to d n ln nhanh chng, n ch l n ln t t n u ta b t u v i m t gi tr W = Wth . N u W = Wth , ta chuy n qua giai o n 2 c tn g i l giai o n trnh t c ngh n . Khi , m i gi tin ACK quay l i s lm c a s W tng ln 1/W . Sau khi truy n W gi tin, W tng ln 1. N u ta truy n W gi tin c n t th i gian, th truy n W + 1 c n t + RT T v W + 2 c n t + 2RT T , ...v.v. Ta th y l l n c a c a s thay i tuy n tnh.
99
b t k khi no pht hi n ra m t gi tin b m t th c a s gi m gi tr xu ng 1 n v v giai o n slow start b t u. i u ny lm gi m kch c c a s nhanh chng v cng nh v y v i t c truy n tin. M t phng php c i thi n khc c tn l Reno hay New- Reno, c a s gi m xu ng 1 n u nh pht hi n ra gi tin b m t trong th i gian qu h n. Khi m t gi tin m t b pht hi n ra thng qua cc gi tin ACK b l p, c a s gim st t c ngh n gi m xu ng 1/2. Giai o n slow start s ko kh i t o v ta v n tr ng thi trnh t c ngh n.
6.1.5. Kh i t o k t n i
kh i t o m t k t n i TCP, ngu n g i m t gi tin ng b (sync packet) dung l ng 40 byte n ch. Sau ch g i 1 gi tin ACK (cng c di 40 gi tin g i l gi tin xc nh n ng b (sync ACK)). Khi ngu n nh n gi tin ACK ny, TCP c th b t u g i d li u. Ch r ng: n u c b t k gi tin no n m trong s nh ng gi tin ny b m t sau th i gian qu h n (th ng l t 3-6s) th n s c truy n l i. Khi gi tin c truy n l i b m t, th i gian qu h n tng ln g p i v gi tin l i c g i l i m t l n n a.
hi u t t hn v hnh vi c a h th ng, ta th hi n kch th c c a s b ng bi u (hnh 6.2 ). y l file Winfile t o ra khi ch y o n m ex1.tcl. Ta nh n th y l t th i i m 20 tr i, ch quay vng tr ng thi ko i c a TCP c n nh: TCP lun giai o n trnh t c ngh n, v kch th c c a s c a n tng u (theo qui lu t hm tuy n
100
tnh) cho n khi x y ra ngh n m ng. Tr c th i i m 20, ta th y TCP ri vo giai o n slow-start trong th i gian r t ng n. th i i m 4.2, t i giai o n slow-start x y ra hi n t ng m t gi tin. C a s cn 1 n a trong khi thng l ng g n nh v 0. Ta gi i thch hi n t ng ny nh th no? L do l t i th i i m 4.2 c m t kho ng th i gian qu h n, chnh v l , m c d kch th c c a c a s l 30 (gi tin) nhng ch ng c ho t ng truy n tin no di n ra. slow-start. th i i m 11, l i x y ra hi n t ng m t gi tin trong giai o n
101
$ns lossmodel $loss_module $n2 $n3 L nh $loss_module set rate_0.2 xc nh t l m t gi tin l 20% . N s d ng 1 b t o bi n ng u nhin c phn b u. i u ny c th hi n cu i cng quy t nh xem lin k t no b nh h ng. dng ti p theo. Dng
102
Kch th c hng i tnh theo byte ( tng ng v i thu c tnh size_ c a i t ng monitor-queue). Kch th c hng i tnh theo gi tin ( tng ng v i thu c tnh pkt_) S l ng gi tin v a n ( tng ng v i thu c tnh parrivals_) S l ng gi tin r i kh i lin k t ( tng ng v i thu c tnh pdeparture_) S l ng gi tin b lo i b t i hng i (tng ng v i thu c tnh pdrop_) S l ng byte n ( tng ng v i thu c tnh barrivals_) S l ng byte r i kh i lin k t ( tng ng v i thu c tnh bdepartures_) S l ng byte b lo i b ( tng ng v i thu c tnh bdrops_) M t cch khc tm hi u tr c ti p cc thu c tnh ny c nu nhi u. m c 4.5 V d ti p theo
m ph ng
1 file bm v t NAM
set nf [open out.name w] $ns namtrace-all $nf # M 1 file bm v t set tf [open.tr w] set windowVsTime2 [open WindowVsTimeNReno w] $ns trace-all $nf # nh ngha 1 qu trnh "hon t t" proc finish {}{ global ns nf tf $ns flush-trace close $nf close $tf exac nam out.nam & exit 0 }
103
#T o 4 nt set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] $ns at 0.1 $n1 label \"CBR\"" $ns at 1.0 $n0 label \"FTP\"" #T o ng link gi a cc nt $ns duplex-link $n0 $n1 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns simpex-link $n2 $n3 0.07Mb 20ms DropTail $ns simpex-link $n3 $n2 0.07Mb 20ms DropTail # t kch th c hng i c a lin k t (n2-n3) t i 10 $ns queue-limit $n2 $n3 10 # Gim st hng i cho lin k t gi a (ns-n3). (dnh cho NAM). $ns simplex-link-op $n2 $n3 queuePos 0.5 #T o m hnh l i trn lin k t gi a n3 v n2. Set loss_module [new ErrorModel] RandomVariable/Unionform] $loss_module set rate_ 0.2 $loss_module ranvar [new $loss_module drop-target [new Agen/Null] $ns lossmodel $loss_module $n2 $n3 #Thi t l p m t k t n i TCP Set tcp [new Agen/TCP/Newreno] $ns attach-agent $n0 $tcp Set sink [new Agen/TCPsink/Delack] $ns attach-agen $n3 $sink $ns connect $tcp $sink $tcp set fid_ 1 #Thi t l p m t FTP thng qua k t n i TCP Set ftp [new Application/FTP] $ftp attach-agent $tcp $ftp set type_ FTP #Thi t l p m t k t n i UDP Set UDP [new Agent/UDP]
104
$ns attach-agen $n1 $udp Set null [new Agent/Null] $ns attach-agent $udp set fid_ 2 #Thi t l p m t CBR thng qua k t n i UDP Set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp $cbr set type_ CBR $cbr set packetSize_ 1000 $cbr set rate_ 0.01Mb $cbr set random_ false #L p l ch cc s ki n cho cc tc nhn CBR v FTP $ns at 0.1 "$cbr start" $ns at 1.0 "$ftp start" $ns $ns at 624.0 $ftp stop at 624.5 $fcbr stop $n3 $null $ns connect $udp $null
#in ra kch th c c a s Proc plotWindow {tcpSource} { Global ns Set time 0.01 Set now [$ns now] Set cwnd [tcpSource set cwnd_] Puts $file $now $cwnd $ns at [expr $now+$time] plotWindow $tcpSource $file} $ns at 1.1 plotWindo $tcp $windowVsTime2 # L y m u hng i nt th t c chai 0.1s m t l n . Lu file bm v t trong qm.out
Set qmon [$ns monitor-queue $n2 $n3 [opne qm.out w] 0.1]; [$ns link $n2 $n3] queue-sample-timeout; # [$ns link $n2 $n3] start-tracing #Tch cc tc nhn tcp v sink (b $ns detach-agent $n3 $sink ch a, b nh n)
105
Trong m t vi tr ng h p, Ta kh o st th i gian qu h n di, kho ng 300. xem xem cc gi tin ng u nhin b m t nh h ng l n nh th no n hi u su t ho t ng c a TCP, Ta th c hi n m ph ng l i nhng ko c cc gi tin b m t. K t qu c m t t i hnh 6.6
106
M t cch o hi u nng quan tr ng l thng l ng trung bnh c a TCP. M t cch n gi n tnh ton l tm trong file bm v t out.tr th i i m m ch nh n m t gi tin TCP (t i nt 3). Khi th c hi n m ph ng, Ta nh n th y l th i i m ny l 624.08754 v file bm v t tng ng l R 624.0827 2 3 tcp 1000------- 1 0.0 3.0 1562 4350 S tr c s cu i cng cho Ta bi t r ng: gi tin m ch nh n c l gi TCP s 1562. Theo , thng l ng TCP n gi n l s b chia ra b i kho ng th i gian k t n i FTP (623s), ngha l 2.507 gi tin/s, ho c tng ng v i 2.507 Kbyte/s hay 20058 bps) (khi m t gi tin TCP m c nh c dung l ng l 1000 byte). Lu : N u ta nhn vo dng u tin c a file out.tr, Ta s th y l c cc gi TCP khc (m i gi c kch c 40 gi tin) m Ta ko tnh n trong t ng s 1562 gi tin. S seri c a chng l 0. Ta ko tnh cc gi tin ny v chng tng ng v i cc gi tin bo hi u (signalling) lin quan n lc b t u k t n i TCP. M t i u c n ch n a l Ta s d ng phin b n Ack b tr c a TCP qua vi c s d ng l nh: Set sink [new Agent/TCPSink/DelAck] Instead of simply set sink [new Agen/TCPSink]
Ta t o 5 k t n i FTP b t u m t cch ng u nhin: th i gian b t u l phn b ng d ng trong kho ng 0-7s. Ton b qu trnh m ph ng di n ra trong 10s. Ta t o lin k t v i tr c ch n l a ng u nhin, phn b u trong kho ng t 1-5s. Cng v i file bm v t theo tiu chu n c t o ra, Ta cng t o thm 1 file c tn l win. File ny cho bi t s thay i kch c c a s c a t t c k t n i v i chi ti t l 0.03s. Th c hi n i u ny b ng cch dng th t c plotWindow. Ch l file win c nh a ch b ng cch s d ng con tr windowVsTimes Th t c ny g i mt cch qui cho
107
t ng k t n i m t trong 5 k t n i t o ra.
#Create the simulator instance set ns [new Simulator] #Opening the trace files set nf [open out.nam w] $ns namtrace-all $nf set tf [open out.tr w] set windowVsTime [open win w] set param [open parameters w] $ns trace-all $tf #Define a finish procedure proc finish {} { global ns nf tf $ns flush-tracert close $nf close $tf exec nam out.nam & exit 0 } #Create bottleneck and dest nodes and link between them
108
set n2 [$ns node] set n3 [$ns node] $ns duplex-link $n2 $n3 0.7Mb 20ms DropTail set NumbSrc 5 set Duration 10 #Source nodes for {set j 1} {$j<=$numbSrc} {incr j} { set S($j) [$ns node] } # Create a random generator for starting the ftp # and for starting the ftp and for bottleneck link delays set rng [new RNG] $rng seed 0 # parameters for random variables for delays
set RVdly [new RandomVariable/Uniform] $RVdly set min_ 1 $RVdly set max_ 5 $RVdly use-rng $rng # parameters for random variables for beginning of ftp connections set RVstart [new RandomVariable/Uniform] $RVstart set min_ 0 $RVstart set max_ 7 $RVstart use-rng $rng } #We define two random parameters for each connection for {set i 1} {$i<=$NumbSrc} { incr i } { set startT ($i) [expr [$RVstart value]] set dly)$i) [expr [$RVdly value]] puts $param dly($i) $dly($i) ms puts $param startT($i) $startT($i) sec } #Links between source and bottleneck For {set j 1} {$j<=$NumbSrc} { incr j} {
109
$ns duplex-link $S($j) $n2 10Mb $dly($j)ms DropTail $ns queue-limit $S($j) $n2 100 } #Monitor the queue for link (n2-n3). (for NAM) $ns duplex-link-op $n2 $n3 queuePos 0.5 #Set Queue Size of link (n2-n3) to 10 $ns queue-limit $n2 $n3 10 #TCP Sources for {set j 1} {$j<=$NumbSrc} { incr j } { set tcp_src($j) [new Agent/TCP/Reno] } #TCP Destinations For {set j 1} {$j<=$NumbSrc} { incr j} { Set tcp_snk($j) [new Agent/TCPSink] } #Connections for {set j 1} {$j<=$NumbSrc} { incr j } { $ns attach-agent $S($j) $tcp_src($j) $ns attach-agent $n3 $tcp_snk($j) $ns connect $tcp_src($j) $tcp_snk($j) } #FTP sources for {set j 1} {$j<=$NumbSrc} { incr j } { set ftp($j) [$tcp_src($j) attach-source FTP] } #Parametrisation of TCP sources for {set j 1} {$j<=NumbSrc} { incr j } { $tcp_src($j) set packetSize_ 552 } #Schedule events for the FTP agents:
110
for {set i 1} P$i<=$NumbSrc} { incr i } { $ns at $startT($i) ftp($i) start $ns at $Duration $ftp($i) stop } proc plotWindow {tcpSource file k} { global ns set time 0.03 set now [$ns now] set cwnd [$tcpSource set cwnd_] puts $file $now $cwnd $ns at [expr $now+$time] plotWindow $tcpSource $file $k } # The procedure will now be called for all tcp sources for {set j 1} {$j<=$NumbSrc} { incr j } { $ns at 0.1 plotWindow $tcp_src($j) $windowVsTime $j } $ns at [expr $Duration] finish $ns run
6.5. Cc k t n i TCP ng n
a s lu l ng trn Internet l truy n file. Dung l ng file truy n trung bnh l kho ng 10Kbyte, ngha l m t file trung bnh c t 10 gi TCP tr xu ng th kch c c a 1 gi TCp s l 1Kbyte [10,36]. i u ny cho th y h u h t vi c truy n file k t thc trong giai o n slow start. Nh ng file ny th ng c g i l "con chu t" ("mice"). Tuy nhin, i u ng ng c nhin l h u h t lu l ng Internet c truy n b ng cc file r t di, c g i l "con voi" ("elephants"). M t phn b i n hnh m t kch th c file c tn l Pareto [10], v i tham s shape (shape parameter) n m gi a 1 v 2 [10] ( trung bnh l 10KB). Trung bnh kch th c file kho ng 2.5Kbyte . Nh v y, phn b Pareto v i gi tr k v ng l 10Kbyte v kch th c bnh qun l 2.5 Kbyte nh ngha m t phn b Pareto v i tham s shape
111
= 1.16 v v i kch th c nh nh t l 1.37Kbytes. Phn b cc th i gian gi a hai s ki n n c a cc k t n i m i th ng c l y theo hm m. Trong ph n ny, ta s xem xt cc cch m ph ng cc phin lm vi c ng n v xc nh phn b th i gian truy n, s l ng k t n i ang di n ra v lu l ng. Ta s xem xt m t m ng l i c cng topo nh trong hnh 6.2: m t vi ngu n chia s chung nt th t c chai v cng m t ch chung. Thng s "NodeNb" cho bi t s l ng ngu n. ( trong v d ta ang c p, thng s l 6). Ngu n TCP by gi c tham s ha b i 2 tham s : nt ngu n v s phin t nt ngu n . i v i m i m t tr m TCP ta nh ngha m t ng d ng FTP. Cc k t n i TCP m i n theo m t qu trnh Poison. V v y, ta kh i t o m t k t n i TCP m i b ng cch dng cc bi n ng u nhin c phn b theo hm m. Gi s lin k t nt th t c chai l 2 Mbps, tr l 1ms v kch th c 1 hng i l 3000. T t c cc lin k t u vo khc tham gia cng lin k t ny c bng thng l 100Mbps v tr l 1ms. Ta s d ng phng php New Reno v i kch th c l n nh t c a c a s l 2000. Th i gian trung bnh gi a nh ng l n n c a cc phin TCP m i t i m i nt trong v d ang xt l 45. i u ny c ngha l trung bnh, 22.22 phin m i n m i nt, v v y t ng t c n c a cc phin l 22.22 l n NodeNb m trong v d c a ta l 133.33 phin/s .Ta t o ra cc phin lm vi c c kch th c ng u nhin ( gi tr trung bnh l 10Kbyte), tham s shape c a phn b Pareto l 1.5. Do v y, t ng t c n c a cc bit l: 133.33 104 8 = 10.67M bps Ta th y t c t o ra c a cc bit l n hn dung l ng nt th t c chai, v v y hi n t ng t c ngh n s x y ra. Tuy nhin, TCP c kh nng trnh hi n t ng t c ngh n trong m ng ( t i hng i nt th t c chai). V v y, hi n t ng ngh n m ng s x y ra theo nh ng cch th c khc . i u khi n s phin lm vi c: Trong ng c nh cc phin TCP ng n, ta quan tm n c s li u th ng k gi l n s li u th ng k phin. Trong chng trnh ns, Ta s nh ngha th t c qui, c g i l Test. Th t c ny ki m tra m i phin lm vi c xem li u n k t thc hay cha. Th t c ny g i l i chnh n sau 0.1s. ( Gi tr ny c t trong bi n time). N u m t k t n i ch m d t, Ta s c m t file u ra ch a cc thng s sau: i t ng xc nh k t n i i v j ( trong (i, j) th hi n cho l n k t n i th j t nt i. Th i i m b t u v k t thc k t n i. Thng l ng c a k t n i. Kch th c c a knh truy n d li u tnh theo byte.
112
Sau m t kho ng th i gian ng u nhin, th t c l i xc nh kh i u m t qu trnh truy n khc n a. Trong o n m sau y, file u ra s l Out.ns. ki m tra xem li u m t phin lm vi c k t thc hay cha, Ta s d ng l nh: If{$tcpsrc{$i,$j) set ack_]==[$tcpsrc($tcpsrc($i,$j) set maxseq_]} { M t th t c qui khc tn l countFlows c s d ng c p nh t s k t n i ang ho t ng t m i nt ( c lu tr d i d ng vect Cnts c di tng ng v i s k t n i ang di n ra t nt j2 Th t c c 2 thng s : ind v sign. Thng s ind cho bi t nt ngu n no c quan tm cn thng s signcho th t c bi t ph i lm g: gi tr c a sign l 0 n u cu c g i k t thc cn n s l 1 n u cu c g i b t u. Nh ng thng s ny c s d ng khi vi c g i th t c x y ra lc b t u v k t thc k t n i. Th t c cng t g i l i chnh n u n sau 0.2 v sau n in s l ng cu c g i ang di n ra vo file Conn.tr. lm c i u , gi tr c a thng s sign ko ph i l 1 cng ko ph i l 0. (Ta t l 3) Gim st hng i: ti p t c v i chng trnh tcl, Ta xem xt m t cch khc th c hi n vi c gim st hng i. Cch ny ph c t p hn phng php m Ta xem m c 4.3 Ta s d ng l i cc cu l nh: Set qfile [$ns monitor-queue $N$D [open queue.tr.w] 0.05] [$ns link $N $D] queue-sample timeout; Tuy nhin ta cng c th xa dng th 2. Thay v ph i gi i h n v i l nh ny, ta lm vi c tr c ti p v i cc thu c tnh c a gim st hng i(monitor-queue) c m t m c 4.3. Vi c ny c ti n hnh trong m t th t c c tn l record. Th t c ny t ng l p l i sau 0.05s. V d , chng ta sao lu bng thng s d ng c a hng i (tnh theo Kb/s) thnh m t file b ng cch chia s l ng s l ng gi tin i trong m t kho ng th i gian cho kho ng th i gian . Lu l gim st hng i t ng s l ng cc byte n trong thu c tnh bdepartures_. N u nh ta ch mu n tnh n s l ng departure trong m t kho ng th i gian ( m ko ph i trong su t ton b th i gian m ph ng), ta ph i ch nh l i gi tr c a bdepartures_ cu i m i qu trnh tnh ton bng thng m i.
set ns [new Simulator] #There are several sources of TCP sharing a bottleneck link #and a single destination . Their number is given by the paramter NodeNb #
2
S(1)
----
M i quan tm dnh cho cc b m khc nhau cc nt khc nhau th hi n ch ta cng c th s d ng chng trnh cho cc lin k t ko i x ng, trong tr ng h p ny ta c th s nghin c u s ph thu c c a hi u nng vo tr c a knh truy n v bng thng.
113
# # . ---# . # S(NodeNb)
| | ----
#Next file will contain the transfer time of different connections set out [open Out.ns w] # Next file will contain the number of connections set Conn [open Conn.tr w] #Open the Trace file set tf [open out.tr w] $ns trace-all $tf #We define three files that will be used to trace the queue size , #the bandwidth and losses at bottleneck. Set qsize [open queuesize.tr Set qbw [open queuebw.tr Set qlost [open queuelost.tr #defining the topology Set Set N D [$ns node] [$ns node] $D 2Mb 1ms Droptail $D 3000 w] w] w]
#Number of flows per suouce node Set NumberFlows 530 #Nodes and links For {set j 1} {$j<=$nodeNb} { incr j } { Det S($j) [$ns node ] $ns duplex-link $S($j) $N 100Mb 1ms DropTail $ns queue-limit $S($j) $N 1000 } #TCP sources and Destinations For {set i 1} {$i<=$NodeNb} {incr I } { For {set j 1} {$j<=$NumberFlows} {incr j } { set tcpsrc($i,$j) [new Agent/TCP/Newreno] set tcp_snk($i,$j) [new Agent/TCPSink] $tcpsrc($i.$j) set window_ 2000 }
114
} #Connections For {set i 1} {$i<=$NodeNb} {incr I } { For {set j 1} {$j<=$NumberFlows} {incr j } { $ns attach-agent $S($i) $tcpsrc($i,$j) $ns attach-agent $D Stcp_snk($i,$j) $ns connect $tcpsrc($i,$j) $tcp_snk($i,$j) } } #Generators for random size of files Set rng1 [new RNG] $rng1 seed 0 Set rng2 [new RNG] $rng2 seed 0 # Random interarrival time of TCP transfers at each source i Set RV [new RandomVariable/Exponential] $RV set avg_ 0.045 $RV use-rng $rng1 #Random size of files to transmit Set RVSize [new RandomVariable/pareto] $RVSize set avg_ 10000 $RVSize set shape_ 1.5 $RVSize use-rng $rng2 #We now define the beginning times of transfers and the transfer sizes #Arrivals of sessions follow a Poisson process. # For {set i 1} {$i<=$NumberFlows} { incr j } { #set the beginning time of next transfer from source i Ser t [expr $t + [$RV value]] Set Conct($i,$j) $t #set the size of next transfer from source i Set Size($i,$j) [expr [$RVSize value]] $ns at $Conct($i,$j) $Sftp($i,$j) send $Size($i,$j) #update the number of flows $ns at $Conct($i,$j) countFlows $i 1 } } #Next is a recursive procedure that checks foreach session whether #it has ended . The procedure calls itself each 0.1 sec ( this is
115
#set in the variable time) #If a connection has ended then we print in the file $Out # * the connection identifiers i and j , # * the start and end time of the connection, # *the throughput of the session , # *the size of the transfer in bytes #and we further define another beginning of transfer after a random time . Proc Test {} { Global Conct tcpsrc Size NodeNb NumberFlows ns RV ftp Out tcp_snk RVSize Set time 0.1 For {set i 1} {$i<=$NodeNb} {incr I } { For {set j 1} {$j<=$NumberFlows} {incr j } { #We now check if the transfer is over if {[ cpsrc($i,$j) set ack_]==[$tcpsrc($i,$j) set maxseq_]} { if { $tcpsrc($i,$j) set ack_]>=0} { # If the transfer is over , we print relevant information in $Out put $Out $i,$j\t$Conct($i,$j)\t[expr [$ns now]]\t\ [expr ($Size($i,$j))/(1000*([expr [$ns now]] - $Conct($i,$j)))]\t$Size($i,$j) countFlows $i 0 $tcpsrc($i,$j) reset $tcp_snk($i,$j) reset } } } } $ns at [expr [$ns now]+$time] Test } for {set j 1} {$j<=$nodeNb} {incr j } { set Cnt($j) 0 } #The following recursive procedure updates the number of connections #as a function of time . Each 0.2 it prints them into $Conn. This #is done by calling the procedure with the sign parameter equal # 3 (in which case the ind parameter does not play a role). The #procedure is also called by assingning the sign parameter 0 , or when #from source I ends by assingning the sing parameter 0, or when #it begins , by assingning it 1 (I is passed though the ind variable). proc countFlows {ind sing} { global Cnts Conn NodeNb set ns [Simulator instance]
116
if {$sign==0 } { set Cnts($ind) [expr $Cnts($ind) 1] } else if {$sign==1 } { set Cnts($ind) [expr $Cnts($ind0 + 1] } else { puts nonewline $Conn [$ns now] \t set sum 0 for {set j 1} {$j<=$NodeNb} {incr j } { set sum [expr $sum + $Cnts($j)] } puts $Conn $sum $ns at [expr [$ns now] + 0.2] countFlows 1 3 } } #Define a finish procedure proc finish {} { global ns tf qsize qbw qlost $ns flush-trace close $qsize close $qbw close $qlost #Execute xgraph to display the queu size , queue bandwith and loss rate exec xgraph queuesize.tr geometry 800x400 t Queue size x secs y #packets & exec xgraph queuebw.tr geometry 800x400 t bandwith x secs y Kbps fg white & exec xgraph queuelost.tr geometry 800x400 t #Packets lost x secs y packets & exut 0 } # QUEUE MONiTORiNG set qfile [$ns monitor-queue $N $D [open queue,tr w] 0.05] [$ns lick $N $D] queue-sample-timeout; #The following procedure records queue size , bandwidth and loss rate proc record {} { global ns qfile qsize qbw alost N D set time 0.0.5 set now [$ns now] #print the current queue size in $qsize , the current used # bandwidth is $qbw, and the loss rate in $qloss $qfile instvar parrivals_ pdepartures_ bdrops_ bdepartures_ pdrops_ puts $qsize $now [expr $parrivals_ -$pdepartures_ -$pdrops_] puts $qbw $now [expr $bdepartures_*8/1024/$time]
117
set bdepartures_ 0 puts $qlost $now [expr $pdrops_/$time] $ns at [expr $now+$time] record } $ns at 0.0 recoerd $ns at 0.01 Test $ns at 0.5 countFlows 1 3 $ns at 20 finish $ns run
D i y l m t s k t qu quan st c 1. Trong c 2 hnh, s l ng gi tin t i hng i nhi u hn s l ng Kbyte c x p hng. i u ny d ng nh l v m t gi TCP c kch th c l 1Kbyte! L do l cc phin c s l ng gi tin l n r t t (M t phin th ng ch c 3 gi tin ho c t hn). V v y, s l ng gi tin u phin c kch th c 40 byte ( c g i lc b t u k t n i TCP) cng ng k . (kho ng 1/3) N u tnh n nh ng gi tin ng n ny th c nhi u gi tin hn l ng Kbyte.
118
3000. y l kch
th c l n nh t m hng i t t i. Ti p theo th i i m ny s x y ra hi n t ng
3. Nh trn hnh 4.8 th hi n, s l ng gi tin lun lun l n hn s l ng Kbyte x p hng v trn hnh 4.9, sau m t kho ng th i gian no , s l ng gi tin s b ng v i s l ng Kbyte. T i th i i m ny, t t c cc gi tin gi i h n s l ng gi tin t i m i nt xu ng cn 130. 4. N u l y t c d li u t o ra tr i t c ra c a lin k t nt th t c chai, ta s thu c l ng d li u c x p hng t i hng i c a lin k t nt th t c chai l n hn r t nhi u. L do l d li u cng c lu l i t i b nh m c a ng i g i. Ti p theo ta quan st s pht tri n s l ng k t n i ang di n ra hnh 6.10 v l ng bng thng c s d ng h th ng, nh trong hnh 6.11 hng i l cc gi tin d li u TCP v ko c cc gi tin 40 byte dnh cho kh i t o phin. i u ny c c khi ta
lin k t nt th t c chai
Hnh 6.10: S l ng k t n i
1. Th nh t l xc nh nh ng ho t ng c n lm lin quan n vi c h y k t n i trong th t c done, l m t th t c t ng c g i n khi m t k t n i k t thc. S nh n d ng c a k t n i v a k t thc cng nh l cc thu c tnh khc c a k t n i (v nh th i gian kh i u c a n ch ng h n) c th c th t c ny s d ng n u
119
2. Ta cng c th dng qu trnh gim st trn m i lu ng. Qa trnh ny cung c p cc con s th ng k trn m i lu ng v 1 s thng tin nh s l ng gi tin truy n, cc byte truy n, gi tin b m t, vv. Ta s l i ph n th o lu n ti p c n ny trong ph n sau ?? nh ngha tr ng thi(state) c a cc k t n i TCP trong o n m ny c a ra cng gi ng nh cch nh ngha kch th c c a s l n nh t c a TCP, ng ng ban u c a giai o n slow-start., vv. Trong o n m, chng ta nh ngha th i gian b t u phin lm vi c, nh n d ng nt v phin lm vi c cng nh l kch th c truy n nh theo cc tr ng thi sau: $tcpsrc($i, $j) set starts $t $tcpsrc($i, $j) set sess $j $tcpsrc($i, $j) set node $i $tcpsrc($i, $j) set size [$RVSize value]] Lu l ta s d ng cc tr ng thi khc c a k t n i TCP: Ndatapack_ l s l ng gi tin c truy n b i k t n i ( n u 1 gi tin c truy n l i vi l n, n ch c m 1 l n Ndatapbytes_ l s l ng byte d li u c truy n b i k t n i Nrexmitpackets_ l s l ng gi tin c k t n i truy n l i Nrexmitbytes_ l s l ng byte c k t n i truy n l i
set ns [new Simulator] # there are serveral source each generating many TCP session sharing a bootleneck # link and a single destination. Their numner is given by the paramter NodeNb # # # # # S(1) . . . S(1) ---| ---- ---- N ---------D(1)...D(NodeNb) | ----
120
#Next file will contain the trasfer time of diffent connections set Out [open Out.ns w] #Next file will contain the number of connections set Conn [open Conn.tr w] #Open the Trace file set tf [open out.tr w] $ns trace-all $tf #defining the topolofy set N [$ns node] set D [$ns node] $ns duplex-link $N $D 2Mb 1ms DropTail $ns queue-limit $N $D 300 #Number of Nodes set NodeNb 6 #Number of flows per source node set NumberFlows 530 #Node and links for {set j 1} {$j<=$NodeNb} {incr j}{ set S{$j} [$ns node] $ns duplex-link $S($j) $N 100Mb 1ms DropTail $ns queue-limit $S($j) $N 1000 } #TCP Source, destinations, connections for {set i 1} {$i<=$NodeNb} {incr i} { for {set j 1} {$j<=$NumberFlows} {incr j }{ set tcpsrc($i, $j) [new Agent/TCP/Newreno] set tcp_snk($i, $j) [new Agent/TCKSink] $tcpsrc($i, $j) set window_ 200 $ns attach-agent $S ($i) $tcpsrc($i, $j) $ns attach-agent $D $tcp_snk($i, $j) #ns connect $tcpsrc($i, $j) $tcp_snk($i, $j) set ftp($i, $j) [$tcpsrc($i, $j) attach-source FTP] }}
121
#Generator for random size of files. set rng1 [new RNG] $rng1 seed 0 set rng2 [new RNG] $rng2 seed 0 #Random inter-arrival times of TCP rtasfer at each source i set RV [new Random Variable/Exponential] $RV set avg_ 0.045 $RV use-rng $rng1 #Random size of files to transmit set RVSize [new RandomVariabl/Pareto] $RVSize set avg_ 10000 $RVSize set shape_ 1.5 $RVSize use-rng $rng2 #We now define the beginning times of transfer and the transfer sizes #Arrivals of sessions follows a Poisson process. # for {set i 1} {$i<=$NodeNb} {incr i}{ set t [$ns now] for {set j 1} {$j<=$NumberFlows} {incr j}{ #Set the beginning time of next transfer from source and attributtes set t [expr $t + [$RV value]] $tcpsrc($i, $j) set starts $t $tcpsrc($i, $j) set sess $j $tcpsrc($i, $j) set node $i $tcpsrc($i, $j) set size [expr [$RVsize value]] $ns at [$tcpsrc($i, $j) set starts] "$ftp( $i, $j) send [$tcpsrc($i, $j) ser size]"
# update the number of flows $ns at [$tcpsrc($i, &j) set starts] "contFlows $i 1" }}
122
for {set j 1} {$j<=$NodeNb} {incr j }{ set Cnts($j) 0 } #The following procedure is called whenever a connection ands Agen/TCP instproc done {}{ global tcpsrc NodeNb NumberFlows ns RV ftp Out tcp_snk RVsize #Print in $Out: node, session, start time, end time, duration, #trans-pkts, trans-bytes, retrans-bytes, throughput set duration [expr [$ns now] - [$self set starts]] puts $Out "[$self set node] \t [$self set sess] \t [$self set starts]\t\ [$ns now] \t $duration \t [$self set ndatapack_] \t\ [$self set ndatabytes_] \t [$self set nrexmitbytes_] \t\ [expr [$self set ndatabytes_]/$duration]" countFlows [$self set node] 0 } # The following recursive procedure updates the number of connections # as a function of time. Each 0.2 sec it prints them into $Conn. This # is done by calling the procedure with the "sign" parameter equal # 3 (in which case the "ind" parameter does not play a role). The # procedure is also called by the "done" procedure whenever a connection # from source i ends by asssinging the "sign" parameter 0, or when # it begins, by assinging it 1 (i is passed through the "ind" variable). proc countFlows {ind sign}{ global Cnts Conn NodeNb set ns [Simulator instance] if {$sign==0} {set Cnts($ind) [expr $Cnts($ind) - 1] } elseif {$sign==1} {set Cnts($ind) [expr $Cnts($ind) + 1] } else { puts -nonewline $Conn "[$ns now] \t" set sum 0 for {set j 1} {$j<=$NodeNb} {incr j} { puts -nonewline $Conn "$Cnts($j) \t" set sum [expr $sum + $Cnts($j)] } puts $Conn "$sum"
123
$ns at [expr [$ns now] + 0.2] "countFlows 1 3" }} #Define a finish procedure proc finish {} { global ns tf close $tf $ns flush-trace exuit 0 } $ns at 0.5 "countFlows 1 3" $ns at 20 "finish" $ns run
6.7. Bi t p
Bi t p 6.7.1. Gi i thch t i sao kch th c c a s dao ng nhi u hn so v i thng l ng trong hnh 6.1 v hnh 6.2 Bi t p 6.7.2. Thng l ng trung bnh v t l m t gi tin c a k t n i TCP trong v d ex1.tcl l g? Bi t p 6.7.3. Kch th c hng i trung bnh trong v d ex1.tcl l g? Bi t p 6.7.4. Nghin c u nh h ng c a xc su t m t gi tin trong m hnh nhi u rdrop.tcl ln thng l ng TCP v i xc xu t m t gi tin dao ng t 0 -40% Bi t p 6.7.5. S a i o n m rdrop.tcl nghin c u nh h ng xc su t m t c a cc gi tin (C th l gi tin ACK) trn knh truy n ng c n3-n2. V th thng l ng nh l m t hm xc su t m t gi tin i v i t l m t gi tin dao ng t 0 - 40%. TCP nh y c m hn v i vi c m t ng u nhin cc gi tin g i i hay nh n v cc gi tin ACK? Bi t p 6.7.6. M ph ng 2 lin k t TCP c nh tranh i x ng chia s chung ng lin k t nt th t c chai. M i lin k t chi m bao nhiu ph n bng thng n u:
124
(i) ch 1 lin k t s d ng l a ch n ACK b tr v c 1 lin k t u l NewReno (ii) c 2 lin k t u dng l a ch n ACK n gi n, lin k t u dng phin b n Tahoe cn lin k t cn l i dng phin b n NewReno Bi t p 6.7.7. Trong th t c plotWindow cu i o n m ex3.tcl b ng 6.2 , chng ta
coi s lin k t nh 1 tham s c a th t c. Nhng n u ta coi n nh 1 bi n chung th i u g s x y ra? ( c ngha l chng ta vi t global ns j) Bi t p 6.7.8. Phn tch cc qu trnh m t gi tin trong ex3.tcl ( xem b ng 4.2). Kch th c hng i knh n2-n3 s l bao nhiu trnh hi n t ng m t gi tin?
Bi t p 6.7.9. Thm vo o n m shortTcp.tcl ( B ng 6.4 ) cc gi tin b m t ng u nhin (i) knh truy n i (ii) knh nh n v N-D. T l m t gi tin bi n i trong kho ng t 0 40 %. Phn tch th i gian trung bnh truy n 1 file v l ch tiu chu n c a th i gian ny nh l m t hm c a t l m t gi tin. Gi i thch k t qu thu c! Lu : trong tr ng h p c nhi u ng i s d ng, 1 ng i c th mong i r ng n u 1 s phin lm vi c c thng l ng th p do b t n hao, s c thm thng l ng s n c dnh cho cc phin lm vi c khc cc phin TCP ng n t nh y c m v i t n hao hn cc phin di. Cc qu trnh m ph ng xc nh n i u ny hay ko? N u ko, hy gi i thch i u g x y ra.
125
Chng 7 nh tuy n v m ng di d ng
M cl c
7.1. B t u nh th no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2. M ng ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3. Cc giao th c nh tuy n multicast (PIM) . . . . . . . . . 7.3.1. Ch Dense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.2. nh tuy n d a trn i m RP . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4. nh tuy n d a trn i m RP . . . . . . . . . . . . . . . . . . . . . 7.4.1. Ch DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.2. nh tuy n v i i m RV t p trung . . . . . . . . . . . . . . . . . . . . . 7.5. Kh o st m ph ng pimdm.tcl. . . . . . . . . . . . . . . . . . . . . 7.6. Bi t p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 130 130 131 132 132 135 136 138 138
Ng i d ch: Tr n Di u Linh Bin t p: Hong Tr ng Minh B n g c: NS Simulator for beginners, Chapter 5 [2]
Chng ta s xem l i trong chng ny c nh tuy n unicast v multicast. Cc giao th c nh tuy n t p trung vo ng i c nh ( nh tuy n tnh) s c so snh v i nh tuy n ng. Tc d ng c a k t n i ng trong nh tuy n s c ki m tra. M t tham chi u t t cho nh tuy n qua Internet n m trong tham kh o [6].
126
7.1. B t u nh th no
C m t vi ki u nh tuy n qua Internet. M t ki u n gi n nh t l ki u nh tuy n tnh trong ng i ng n nh t (gi i h n b i s cc hop) c l a ch n trong cc k t n i. Ns c th m ph ng cc lin k t nhi u ( nh chng ta th y trong ph n 7.3 ) ho c th m ch cc lin k t c th b ng t k t n i. m ph ng s ng t k t n i c a m t lin k t gi a nt n1 v nt n4 t th i i m 1 n 4.5, v d ta c th dng l nh: $ns rtmodel at 1.0 down $ns1 $ns4 $ns rtmodel at 4.5 up $ns1 $ns4
By gi , chng ta xt m ng c m t trong hnh 7.1, trong c hai m ng khc nhau gi a nt ngu n 0 v nt ch 5. nh tuy n tnh m c nh c s d ng b i ns, s l a ch n tuy n 0-1-4-5 cho vi c thi t l p k t n i.
Set ns [new Simulator] # nh ngha cc m u khc nhau cho cc lu ng d $ns color 1 Blue $ns color 2 Red #Open the Trace file Set file1 [open out.tr w] li u (dnh cho NAM)
127
$ns trace-all $file1 #m file theo d u NAM (open the NAM trace file) Set file2 [open out.nam w] $ns namtrace-all $file2 # nh ngha th Proc finish {} { global ns file1 file2 $ns flush-trace close $file1 close $file2 exec nam out.nam & exit 0 } #dng ti p theo nn c ghi ch $ns rtprt DV #t o 6 nt set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] # T o cc lin k t gi a cc nt $ns $ns $ns $ns $ns $ns duplex-link duplex-link duplex-link duplex-link duplex-link duplex-link $n0 $n1 $n2 $n1 $n3 $n4 $n1 $n2 $n3 $n4 $n5 $n5 0.3Mb 0.3Mb 0.3Mb 0.3Mb 0.3Mb 0.3Mb 10ms 10ms 10ms 10ms 10ms 10ms DropTail DropTail DropTail DropTail DropTail DropTail ch r nh tuy n tnh. t c finish (define a finish procedure)
tr c a nt (cho NAM) $n0 $n1 $n2 $n1 $n3 $n1 $n2 $n3 $n4 $n5 orient orient orient orient orient right right up up-left left-up
128
$ns
duplex-link-op
$n4
$n5
orient
right-up
#ci t k t n i TCP Set tcp [new Agent/TCP/Newreno] $ns $ns $ns $tcp attach-agent attach-agent connect set fid_ $tcp 1 $n0 $n5 $tcp $sink Set sink [new Agent/TCPSink/DelAck] $sink
#Ci t FTP qua k t n i TCP Set $ftp $ftp ftp set [new Application/FTP] $tcp FTP type_ attach-agent
$ns rtmodel-at 1.0 down $n1 $n4 $ns rtmodel-at 4.5 up $n1 $n4 $ns at 0.1 $ftp start $ns at 12.0 finish $ns run
129
7.2. M ng ng
Chng ta c th th y ph n tr c, chng ta c th xc nh tr ng thi lin k t hi n: lin k t c th down v up t i cc th i i m ch n tr c. Tuy nhin, k t n i ng c th thay i theo cc ti n trnh ON-OFF hm m, ho c ti n trnh ON-OFF xc nh, ho c theo m t s d li u kh o st theo yu c u. Cc m hnh hm m ho c m hnh xc nh c b n tham s : th i gian b t u (m c nh l 0,5 giy t khi b t u m ph ng), chu k up (m c nh l 10 giy), chu k down (m c nh l 1giy) v th i gian k t thc (m c nh l k t thc m ph ng). Trong tr ng h p hm m, cc tham s up v down tng ng v i kho ng th i gian d tnh. V d , c u trc cho m hnh quy t nh c p d ng cho lin k t n1-n2 l: $ns rtmodel Deterministic {0.8 1.0 1.0} $n1 $n2
(th i gian k t thc l m c nh). Trong m t cu l nh theo d ng $ns rtmodel Deterministic {0.8 1.0} $n1 $n2
Cc th i i m b t u v k t thc l m c nh v trong cu l nh theo d ng $ns rtmodel Deterministic {1.0} $n1 $n2 trn b ng
Ch c tham s khng m c nh l chu k down. K t n i hm m a ra cch thay hm xc nh Deterministic b ng hm m Exponential Cu l nh tng ng v i k t n i d a trn file theo v t l: $ns rtmodel Trace <config_file> $n0 $n1
Cu i cng, cu l nh cng c th t o th t cc tr ng thi nh tuy n l ns, v s d ng n nh u vo (xem [1] ). Cc l i nt: C m t kh nng l m t nt ang down v up. i u ny gi ng nh ta th y trong cc tr ng h p l i lin k t, ngo i tr tr ng h p m t nt xu t hi n t i i m cu i.
130
trong khi bn g i c th g i m khng c n tham gia vo nhm t tr c. Bn g i khng nh n c ph n h i t m ng v vi c bn nh n trong nh tuy n IP multicast. Khng ph i t t c cc nt c a m ng u c th x l multicast, trong ns ta c th m t cc nt c kh nng multicast m t cch chi ti t. M t giao th c nh tuy n nh ngha m t c ch m qua cy multicast c tnh ton trong m ph ng. C hai l p chnh c a cc l p nh tuy n: 1. Ki u dense mode thch h p i v i tr ng h p s l ng ng i dng multicast l n, trong tr ng h p ny, cc cy multicast c xy d ng cho b t k m t c p ngu n no v nhm multicast c a n. Vi c xy d ng cy yu c u qu ng b n t t c cc nt trong m ng. 2. Sparse mode c s d ng trong tr ng h p s cc nt nh . Do , nh tuy n c th c x l b ng vi c s d ng m t cy n c chia s . B n giao th c nh tuy n multicast c s d ng trong ns: Dense Mode (DM), Centralised (CtrMcast), Share Tree Mode (ST), v Bi-directional Sahred Tree Mode (BST). Khng may, cch ns m ph ng cc giao th c khng c nhi u bo hi u, c bi t trong qu trnh kh i t o. Giao th c DM ch l m t giao th c c phin b n ng trong ns, c g i l dynamicDM.
7.3.1. Ch Dense
Giao th c DM c hai ch kh gi ng nhau: Protocol pim DM (Protocol Independent Multicast Dense Mode) v dvmrp (Distance Vector Multicast Routing Protocol) [40], pimDM n gi n hn m t cht. Chng u d a trn vi c trn l t kh i t o c a m ng (s d ng ti p c n RFP) v sau d a trn tnh ton ng ng c l i ng n nh t. Chng ta gi s r ng b ng nh tuy n i m t i i m P2P l s n c. i u ny c th c hi n nh sau. N u router nh n c gi tin a i m multipoint t ngu n S n nhm G, u tin n ki m tra (s d ng b ng nh tuy n P2P) m giao di n nh n u vo tng ng v i gi tin S: i u ny c ngha r ng router ny l ng i ng n nh t t ngu n (do , y c g i l " ng tr l i ng n nh t"). N u k t qu l m th n g i thng i p "delete (S.G)", v d b n tin n ngu n yu c u ng ng vi c g i n n gi tin t S n G. N u k t qu dng th router g i m t b n sao c a thng i p n t p T c a t t c cc giao di n m qua n khng nh n c yu c u "delete(S,G)". N u T r ng, th n h y gi tin v g i thng i p delete(S,G) n giao di n m qua n nh n c thng i p.
131
Trong k ch b n tcl, chng ta nh ngha a ch nhm qua s d ng cu l nh "set group1 [Node allocaddr]".Sau , chng ta nh ngha m t ng d ng v m t giao th c truy n t i, m t m t gn vo nt ngu n c a ra v m t khc gn vo nhm ch.
132
Chng ta xt n giao th c DM d i y. Khi ngu n S g i n m t nhm G tr thnh active, n b t u trn l t thng tin qua m ng n cy c g n vo tng ng v i nhm G. Khi m t l khng tham gia vo nhm multicast m nh n m t gi tin t nhm , n g i thng i p n giao di n n xa n t cy (S,G) (gi prune). Sau , n qu ng b tr l i ngu n: m t nt nh n m t thng i p t t t c cc lin k t u ra c a n trong cy c a (S,G) yu c u xa cc lin k t ny, g i tr l i giao di n n m t thng i p xa n t cy (S,G). M t ngu n s ng ng hon ton vi c g i gi tin n u khng c k t n i n bn nh n trong nhm ; n s ti p t c l i vi c g i gi tin khi bn nh n k t n i. M t v d c a c u hnh multicast v i su nt m ng c m t trong hnh 7.2 Chng ta xt n m ng c m t trong hnh 7.1
Set ns
[new Simulator]
$ns multicast Set $ns $ns $ns $ns f [open out.tr $f [open out.nam w] w]
#the nam colors for the prune packets #the nam colors for the graft
133
green
#allocate a multicast address; [Node allocaddr] 6 i 1} {$i <= $nod} {incr i} { #nod is the number of nodes #creat multicast capanle nodes;
#creat links between the nodes $ns $ns $ns $ns $ns $ns $ns $ns Set duplex-link duplex-link duplex-link duplex-link duplex-link duplex-link duplex-link duplex-link mproto DM [$ns mrtproto $mproto] $n(1) $n(2) $n(2) $n(2) $n(3) $n(4) $n(4) $n(5) $n(2) $n(3) $n(4) $n(5) $n(4) $n(5) $n(6) $n(6) 0.3Mb 0.3Mb 0.5Mb 0.3Mb 0.3Mb 0.5Mb 0.5Mb 0.5Mb 10ms 10ms 10ms 10ms 10ms 10ms 10ms 10ms DropTail DropTail DropTail DropTail DropTail DropTail DropTail DropTail
#configure multicast protocol; #all nodes will contain multicast protocol agents; Set mrthandle Set Set udp1 udp1
[new [new
$src1 attach-agent #udp1 set $udp1 #creat Set $ns $ns set dst_addr_
134
$ns $ns $ns $ns $ns $ns $ns Proc $ns Exec
at at at at at at at
Global ns &
i u khi n m t mt l m t gi tin "sink agent" duy tr s th ng k v lu l ng nh n c, nh thng tin v l ng thng tin nh n c cng nh b m t. C th , chng ta c th truy c p cc bi n tr ng thi sau: nlost_ (s cc gi tin m t mt), npkts_ (s cc gi tin nh n c), bytes_ (s cc byte nh n c), lastPktTime_ (th i gian t i gi tin cu i cng nh n c) v expected_ (s trnh t mong mu n c a gi tin ti p theo). Ta c th s d ng thay cho tc nhn i u khi n m t mt, Null agent, nh chng ta lm tr c , v d : set rcvr [new Agent/Null] thay cho set rcvr [new Agent/LossMonitor].
7.4.1. Ch DM
Cu l nh set mproto DM ch ra r ng chng ta s d ng giao th c Dense Mode. M c nh, pimDM c s d ng. s d ng ch dvmrp, ph i thm dng sau DM set CacheMissMode dvmrp tr c dng set mproto DM Trong ch DM, vi c trn l t x y ra theo chu k, do pht hi n cc nt c k t n i v i nhm. Gi tr b nh th i cho chu k c a ra trong bi n c g i l PruneTimeout
135
. M c nh, gi tr ny l 0.5 giy. N u ta yu c u gi tr khc , v d nh 0.8 giy, th thm vo k ch b n tcl cu l nh: DM set PruneTimeout 0.8 ch tr c dng set mproto DM.
# all nodes will contain multicast protocol agents; Set mrthandle #set RV and bootstrap points $mrthandle set_c_rp
y chng ta ch n n(2) l i m RP. Trong c ch t p trung cng nh ch ST, bo hi u (cc gi tin prune) khng c m ph ng. Chng ta th hi n trong b ng 7.3 , cng m t v d nh trong pimdm.tcl (b ng 7.2) nhng v i giao th c nh tuy n BST.
Simulator w] $f
-multicast
on]
w]
# the nam colors for the prune packets #the nam colors for the graft packets $ns color
136
#create multicast capable nodes; For } #create link between the nodes $ns $ns $ns $ns $ns $ns $ns $ns duplex-link duplex-link duplex-link duplex-link duplex-link duplex-link duplex-link duplex-link $n(1) $n(2) $n(2) $n(2) $n(3) $n(4) $n(4) $n(5) $n(2) $n(3) $n(4) $n(5) $n(4) $n(5) $n(6) $n(6) 0.3Mb 0.3Mb 0.5Mb 0.3Mb 0.3Mb 0.5Mb 0.5Mb 0.5Mb 10ms 10ms 10ms 10ms 10ms 10ms 10ms 10ms DropTail DropTail DropTail DropTail DropTail DropTail DropTail DropTail {set i 1} {$i <= $nod} {incr i} { Set n($i) [$ns node]
#configure multicast protocol; BST set Set udp1 Set udp2 RP_($group) $n(2) $ns mrtproto BST [new Agent/UDP] [new Agent/UDP] $n(1) $n(1) $n(2) $udp1 $group 0 $udp1 $udp1 $udp2
$ns attach-agent $ns attach-agent $ns attach-agent Set src1 $udp1 $udp1 $src1 $src1 attach-agent set set set
Set src2 $udp2 $udp2 $src2 $ns $ns $ns $ns $ns $ns at at at at at at
$src2 attach-agent set set set 0.6 1.3 1.6 1.9 2.3 3.5
random_false $n(3) $n(4) $n(5) $n(4) $n(6) $n(3) join-group join-group join-group leave-group join-group leave-group $rcvr $rcvr $rcvr $rcvr $rcvr $rcvr $group $group $group $group $group $group
137
Proc finish {} { Global ns $ns Exec Exit 0 } $ns run flush-trace nam out.nam &
7.5. Kh o st m ph ng pimdm.tcl
Dense mode: pimdm v drmrp. N u chng ta ch y m ph ng v kh o st bm v t, chng ta s th y r ng trong vi c thm cc gi tin CBR, c hai ki u gi tin khc nhau: gi tin prune v gi tin graft. Vai tr c a gi tin prune c g i b i nt N l bo hi u cho nt r ng g i gi tin tr c n N ng ng vi c g i cc gi tin n N. Gi tin graft l kh i t o tn hi u t m t nt mu n tham gia vo nhm (sau khi n b ng t k t n i). Trong hi n th NAM trong m ph ng c a chng ta, cc gi tin graft l n xanh v prune l mu . Chng ta c th th y r ng t i th i i m 0.4, nt 0 b t y g i cc gi tin CBR trn l t qua m ng. Nhng khng c bn nh n t i nhm multicast, do k t qu l, cc gi tin prune tr v ngu n v vi c truy n k t thc (th i i m 0.579). T i th i i m 0.6, m t gi tin graft c g i t nt 2 (nt mu n tham gia vo nhm) n nt 1, v sau t nt 1 n nt 0. Nt 0 sau b t u vi c truy n. T i th i i m 0.9978, l i c vi c th ki m tra xem c k t n i c v i cc nt bn nh n trong nhm ngoi nt 2 v m ng c trn l t l i, cc gi tin prune tr v ng ng vi c truy n n cc nt 3, 4, 5. Ch t p trung: chng ta th y trong cc gi tin bm v t c ng gi c g i t ngu n n i m RV c a kch th c 230 byte. Header sau c xa b i i m RV m sau chuy n gi tin (210 byte) n cc thnh vin trong nhm.
7.6. Bi t p
Bi t p 7.6.1. Ch y chng trnh ex2.tcl (xem b ng 7.1) ghi ch l nh "$ns v gi i thch i u g x y ra. rtproto DV"
138
Bi t p 7.6.2. Ch y chng trnh ex2.tcl (xem b ng 7.1) v i l nh "$ns gi i thch s khc nhau v i nh tuy n tnh tr c .
rtproto DV" v
Bi t p 7.6.3. Thay i v ch y m ph ng ex2.tcl (xem b ng 7.1) trong kho ng 20 giy v i nh tuy n tnh nhng v i m t k t n i hm m ON-OFF ng, v i th i gian trung bnh ON l 3 giy v th i gian trung bnh OFF l 0.5 giy. Phn tch hnh vi c a k t n i TCP v hnh vi c a time-out. Bi t p 7.6.4. Ch y k ch b n pimdm.tcl (xem b ng 7.2). C bao nhiu gi gin CBR c truy n t m i m t ngu n, v c bao nhiu gi tin b m t? C bao nhiu gi tin CBR c nh n t i cc nt m khng c n chng (chnh xc hn, c bao nhiu gi tin prune c t o)? Bi t p 7.6.5. Xt d u v t t c t k ch b n pimdm.tcl. T i th i i m 1.8375 chng ta b t u c m t mt t i nt 0. T i th i i m 2.481 cc gi tin b t u m t cng t i nt 1. Gi i thch s m t mt ny. Bi t p 7.6.6. Ch y chng trnh pimdm.tcl v i ch dvmrp c a DM. B n c quan st c s khc bi t no gi a dvmrp v phin b n pimDM? Bi t p 7.6.7. Ch y phin b n t p trung c a multicast. Gi i thch i u g x y ra khi RP c thay i nt n(5) (trong NAM n s tng ng v i nt 4, khi NAM m t 0). Gi i thch v sao n t hi u qu hn vi c ch n nt RP l n(2). Chng ta c th nh gi hi u qu b ng cch no?
139
Chng 8 Lo i b ng u nhin s m
M cl c
te lec om
v m ph ng . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1. B m lo i Drop-Tail (B ng ui) . . . . . . . . . . . . . . . . . . 8.3.2. B m RED v i c u hnh tham s t ng . . . . . . . . . . . . 8.3.3. B m RED v i cc tham s khc . . . . . . . . . . . . . . . . . . . . . 8.4. Gim st cc lu ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.5. Bi t p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ng i d ch: H T t Thnh
8.1. M t RED
C ch qu n l b m RED c gi i thi u vo nm 1993 by Floyd v Jacobson [10] , v c m t su hn trong RFC 2309 [11] , Nhi u ti li u tham kh o quan tr ng v RED c th c tm th y trang web http://www.icir.org/floyd/red.html. t ng c b n l khng nn ch t i khi b m b y pht hi n t c ngh n (lo i b gi tin), m b t u d tm s t c ngh tr c khi b m trn. Cc d u hi u c a s t c ngh n c th v n thng
vn
140
qua vi c lo i b gi tin, nhng gi y, cng c th thng qua vi c nh d u cc gi tin m khng c n ph i lo i b chng. M t s m c tiu c a qu n l b m RED l: 1. u tin cc c m d li u (burst) ng n thu c lo i delay sensitive (nh y c m v i tr ), nhng khng cho php kch th c hng i trung bnh tng qu nhi u. B ng cch dng m t vi c l c low past no cho kch th c hng i, m c ch ny l pht hi n s t c ngh n m c th i gian di. 2. Cc c ng lo i Drop Tail v Random Drop c s thin v (bias) i v i lu l ng c m (bursty traffic). Th t v y, trong nh ng b m nh v y, cng nhi u lu l ng c a m t k t n i lo i c m, hng i cng c kh nng trn t i th i i m t i c a cc gi tin c a k t n i . 3. Trnh ng b : b m lo i drop-tail, nhi u k t n i c th nh n d u hi u t c thong l ng.
Cc dao ng ny c th lm cho thng l ng trung bnh th p hn v jitter cao. trnh ng b (l trnh vi c cc phin k t n i nh n tn hi u t c ngh n t i cng 1 th i i m), cc tn hi u t c ngh n c ch n m t cch ng u nhin. 4. i u khi n kch th c hng i trung bnh. r ng i u cng c ngha l i u khi n tr hng i trung bnh. t c cc m c tiu ny, RED gim st kch th c hng i trung bnh avg, v ki m tra n c n m gi a ng ng c c ti u minth v c c i maxth no hay khng. N u c, th m t gi tin t i s b lo i b hay c nh d u v i xc su t p = p(avg), xc su t ny l m t hm tng theo kch th c gi tin trung bnh. T t c cc gi tin t i khi avg v t qu maxth s c nh d u/lo i b . Xc su t p(avg) c ch n nh sau. Khi kch th c hng i trng bnh thay i trong kho ng minth v maxth , m t xc su t pb thay i tuy n tnh gi a 0 v gi tr maxp no ch ng h n. pb (avg) = maxp avg minth maxth minth
Xc su t ny c dng nh p(avg) n u ti th i i m t i c a gi tin tr c avg minth . N u khng p(avg)/(1 + p(avg)). Kch th c hng i trung bnh ny c gim st nh sau. Ban u, tham s avg c t = 0. Sau , v i m i gi tin t i, avg c t gi tr m i: (1 q )avq + q
141
y, q l kch th c hng i th c t v q l m t h ng s no . N u hng i tr nn r ng, m t cng th c khc c dng c p nh t kch th c c a n, cng th c ny s tnh n th i gian t khi hng i tr nn r ng v m t c l ng s cc gi tin c th c g i i trong su t th i gian r i ny, xem thm[11]. c l ng cc gi tin sau ny, ta c l s c n a m t c l ng th kch th c gi trung bnh nh m t tham s trong ns. Cc v d v cc tham s RED nghin c u [10] l q = 0.002, minth = 5 gi tin,
maxth = 15 gi tin, maxp = 1/50 v kch th c hng i l 100. Thng th ng, ng i ta cng khai thc gi tr minth n m trong d i t 3 n 50, v gi maxth = 3minth S th c hi n red trong ns c th c tn th y trong ns-allinone-2.XXX/queue/red.cc (XXX l phin b n, v d 1b9a).
142
10. drop-tail_: y l tham s m khi t gi gi tr "true" th cho php s d ng chnh sch drop-tail khi hng i trn ho c kch th c hng i trung bnh v t qu maxth . Gi tr m c nh c a cc tham s q_weight_, maxthres_, thres_ tng ng l 0.002,15,v
5 cho t i cu i nm 2001. Trong nh ng phin b n g n y, chng c c u hnh t ng. RED c cc tham s v bi n khc c tri n khai trong ns. C th , S.Floyd khuy n co trong http://www.icir.org/floyd/gentle.html cho ho t ng t t nh t c a RED (trong m ph ng v th c thi), s d ng, tham s gentle_ c t thnh true (y l gi tr m c nh k t thng 4, 2001). Trong cc ch nh s a gentle_ v RED trong ns, xc su t lo i gi tin thay i t maxp n 1 khi kch th c hng i trung bnh thay i t maxthres_ n 2 l n maxthres_. Ty ch n ny lm cho RED tr nn m nh m hn thi t l p cc thng s maxthres_ v max_p. M t phin b n khc l RED thch nghi, phin b n ny i u ch nh s l a ch n tham s cho cc lu l ng m ng, nh c m t [12] .
gim st m t b m red cho tr c, ch ng h n nh m t b m gi a hai nt m ng $n2 v $n3, c th g l nh nh sau: set redq [[$ns link $n2 $n3]queue] set traceq [open red-queue.tr.w] $redq trace curq_ $redq trace ave_ $redq attach $traceq y, curq_ l gi tr hng i hi n th i v ave_ l gi tr l y trung bnh. i u ny em l i file m t u ra (trong tr ng h p c a chng ta l "red-queue.tr") v i 3 c t. C t u tin ch ra n l gi tr c a kch th c hng i hi n th i (b ng cch dn c Q) hay l kch th c hng i trung bnh (dng c a). Sau i n th i i n hi u t o v cu i cng l gi tr c gim st.
8.3. Cc v d v m ph ng
Ta xt m ng sau, c minh h a ch qu n l hng i. hnh 9.1: Ta s so snh ho t ng c a m t vi c
143
chai chung c tr 20ms v gng thng 700kbps. Ta xt 3 phin k t n i FTP s d ng TCP v t kch th c c a s c c i l 8000. kch th c hng i c chai alf 100. 3 phin k t n i ny kh i ng 7 giy. cc th i i m ng u nhin, c phn b u trong kho ng t 0 n , tr cho t i knh c chai l 1ms. Ta ch n kch th c gi tin TCP l 552 bytes.
Ch : trong phin b n 2.1b9a c a ns, khi ta g dng l nh $tcp_src($j) set packetSize_552 Th kch th c gi tin th c t c t o ra trong m ph ng alf 592, do c 40 bytes tiu (header) c thm vo. Ton b qu trnh m ph ng l 50s. B ng cch dng ty ch n monitor-queue m ta th y ph n 7.3 , ta t o m t file g i
l queue.tr ton b c t u tin l th i gian v c t th 5 l kch th c hng i o b ng gi tin. Ta cng s dng m t th t c, goik l plotWindow, gi m st kch th c c a s : n t o ra m t file m s c a 3 phin k t n i. , c t u l th i gian, ba c t khc tng ng v i kch th c c a
set nt [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set tf [open out.tr w] set windowVsTime [open win w] set param [open parameters w]
144
$ns trace-all $tf # nh ngha th proc finish {}{ global ns nf tf $ns flush-trace close $nf close $tf exec nam out.nam & exit 0 } #T o cc nt c chai v ch t c finish
set n2 [$ns node] set n3 [$ns node] #T o lien k t gi a cc nt $ns duplex-link $ns2 $ns3 0.7Mb 20ms DropTail set NumSrc 3 set Duration 50 #Cc nt ngu n for {set j 1} {$j<=$NumSrc} {incr j} { set S($j) [$ns node] } #T o m t b #cc tr pht ng u nhin cho vi c kh i ng d ch v chai ftp v cho
knh truy n c
Set rng [new RNG] $rnf seed 2 #Cc tham s cho cc bi n ng u nhin cho vi c kh i ng cc k t
#n i ng u nhin #RVstart set nmin_ 0 #RVstart set nmax_ 7 #RVstart use-rng $rng
145
#Ta nh ngha nh ng th i i m kh i ng ng u nhin cho #m i phin k t n i for {set i 1} {$i<=$NumSrc} {incr i} { set srartT($i) [expr [$RVstart value]] set dly($i) 1 put $param startT($i) $startT($i) sec } #Knh truy n gi a ngu n v c chai
for {set j 1} {$j<=$NumSrc} {incr j} { $ns duplex-link $S($j)$n2 10Mb $dly($j)ms DropTail $ns queue-limit $S($j) $n2 20 } # t kch th c hng i c a knh truy n (n2-n3) thnh 100 $ns queue-limit $n2 $n3 100 set redq [[$ns link #n2 $n3]queue] set traced [open red-queue.tr w] $redq trace curq_ $redq trace ave_ $redq attach $traceq #Ngu n TCP for {set j 1} {$j<=$NumSrc} {incr j} { set tcp_src($j) [new Agent/TCP/Reno] $tcp_src($j) set window_ 8000 } #ch TCP for {set j 1} {$j<=$NumSrc} {incr j} { set tcp_snk($j) [new Agent/TCPSink] } # Cc phin k t n i for {set j 1} {$j<=$NumSrc} {incr j} { $ns attach-agent $S($j) $tcp_src($j) $ns attach-agent $n3 $tcp_snk($j) $ns $tcp_src($j) $tcp_snk($j)
146
} # Cc ngu n FTP for {set j 1} {$j<=$NumSrc} {incr j} { set ftp($j) [$tcp_src($j) attach-source FTP] } #Cc tham s c a ngu n TCP for {set j 1} {$j<=$NumSrc} {incr j} { $tcp_src($j) set packetSize_552 } # nh trnh cc s ki n cho cc tr m FTP:
for {set i 1} {$i<=$NumSrc} {incr i} { $ns at $srartT($i) $ftp($i) start $ns at $Duration $ftp($i) stop } proc plotWindow {tcpSource file k}{ global ns NumSrc set time 0.03 set now [$ns now] set cwnd [$tcpSource set cwnd_] if {$k==1}{ puts nonewline $file $now \t $cwnd \t } else { If {$k < $NumSrc} { puts nonewline $file $cwnd \t } } if {$k == $NumSrc}{ puts nonewline $file $cwnd \n } $ns at [expr $now+$time] plotWindow [$tcpSource $file $k} # Th t c ny by gi s c g i cho t t c cc ngu n tcp
for {set j 1} {$j<=$NumSrc} {incr j} { $ns at 0.1 plotWindow } set qfile [#ns monitor-queue $n2 $n3 [open queue.tr w] 0.05] $tcp_src($j) $windowVsTime $j
147
[$ns link $n2 $n3] queue-sample-timeout; $ns at $Duration $ftp($i) finish #ns run
Ta th y t cc hnh ny, c m t s ng b cao gi a cc kch th c c a s : Chng u m t gi tin t i cng m t th i i m. Hn n a ta c s dao ng cao trong cc kch th c hng i tng ng v i kch th c c a s , v kch th c hng i trung bnh vo kho ng 75 gi tin. i u ny c ngha l c m t tr trung bnh thm vo, v b ng: 75x592x8 = 507.42msec 700x103
Dq =
Ch 8.3.1 hng i lo i b ng ui c th c m ph ng b ng cch dng m t b m RED v iminth = maxth c t trn kch th c hng i c c i v maxp c t v gi tr g n b ng 0, i u s cho php ta s d ng cc cng c gim st di hd trung bnh v t c th i c a RED. T t nhin, tham s drop-tail_ c gi t true.
148
Trong su t 50 giy m ph ng, ngu n tin nh n 7310 gi tin TCP, it hn m t cht so v i tr ng h p lo i b ng ui (m , ta c 7211 gi tin ). Ti p theo , ta v kch th c hng i (Hnh 8.4 v 8.5 )v kch th c c a s (Hnh 8.6). Ta th y t cc hnh ny, khng c s ng b gi a kch th c c a s , v s ng b gi a kch th c hng i trung bnh thf nh hn nhi u so v i tr ng h p lo i b ng ui: kho ng 10 (thay v 75 trong tr ng h p lo i b ng ui). Do , trn trung bnh c a cc phin k t n i cng nh hn nhi u: 10x592x8 = 67.66msec 700x103
Dq =
Ta quan st th y thay cho cc dao ng r ng trong kch th c hng i v kch th c c a s , by gi , ta t c s bi n ng nh hn, nhanh hn khng b trn, khng nh c kch th c c a s cng nh kch th c hng i. Cu i cng ta r ng trong su t th i gian m ph ng, hng i tr ng h p lo i b ng ui RED cho php hng i l n ln r t nhi u trong su t kho ng th i gian ng n lc b t u phin k t n i,
149
set nt [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set tf [open out.tr w] set windowVsTime [open win w] set param [open parameters w] $ns trace-all $tf # nh ngha th proc finish {}{ global ns nf tf $ns flush-trace close $nf close $tf exec nam out.nam & exec grep a red-queue.tr > ave.tr exec grep Q red-queue.tr > ave.tr exit 0 } t c finish
150
#T o cc nt c
chai v ch
set n2 [$ns node] set n3 [$ns node] #T o lien k t gi a cc nt $ns duplex-link $ns2 $ns3 0.7Mb 20ms RED set NumSrc 3 set Duration 50 #Cc nt ngu n for {set j 1} {$j<=$NumSrc} {incr j} { set S($j) [$ns node] } #T o m t b #cc tr pht ng u nhin cho vi c kh i ng d ch v chai ftp v cho knh truy n c
Set rng [new RNG] $rnf seed 2 #Cc tham s cho cc bi n ng u nhin cho vi c kh i ng cc k t
#n i ng u nhin #RVstart set nmin_ 0 #RVstart set nmax_ 7 #RVstart use-rng $rng #Ta nh ngha nh ng th i i m kh i ng ng u nhin cho #m i phin k t n i for {set i 1} {$i<=$NumSrc} {incr i} { set srartT($i) [expr [$RVstart value]] set dly($i) 1 put $param startT($i) $startT($i) sec } #Knh truy n gi a ngu n v c chai
for {set j 1} {$j<=$NumSrc} {incr j} { $ns duplex-link $S($j)$n2 10Mb $dly($j)ms DropTail $ns queue-limit $S($j) $n2 20
151
} # t kch th c hng i c a knh truy n (n2-n3) thnh 100 $ns queue-limit $n2 $n3 100 set redq [[$ns link #n2 $n3]queue] set traced [open red-queue.tr w] $redq trace curq_ $redq trace ave_ $redq attach $traceq #Ngu n TCP for {set j 1} {$j<=$NumSrc} {incr j} { set tcp_src($j) [new Agent/TCP/Reno] $tcp_src($j) set window_ 8000 } #ch TCP for {set j 1} {$j<=$NumSrc} {incr j} { set tcp_snk($j) [new Agent/TCPSink] }
# Cc phin k t n i for {set j 1} {$j<=$NumSrc} {incr j} { $ns attach-agent $S($j) $tcp_src($j) $ns attach-agent $n3 $tcp_snk($j) $ns $tcp_src($j) $tcp_snk($j) } # Cc ngu n FTP for {set j 1} {$j<=$NumSrc} {incr j} { set ftp($j) [$tcp_src($j) attach-source FTP] } #Cc tham s c a ngu n TCP
152
for {set i 1} {$i<=$NumSrc} {incr i} { $ns at $srartT($i) $ftp($i) start $ns at $Duration $ftp($i) stop } proc plotWindow {tcpSource file k}{ global ns NumSrc set time 0.03 set now [$ns now] set cwnd [$tcpSource set cwnd_] if {$k==1}{ puts nonewline $file $now \t $cwnd \t } else { If {$k < $NumSrc} { puts nonewline $file $cwnd \t } } if {$k == $NumSrc}{ puts nonewline $file $cwnd \n } $ns at [expr $now+$time] plotWindow [$tcpSource $file $k} # Th t c ny by gi s c g i cho t t c cc ngu n tcp for {set j 1} {$j<=$NumSrc} {incr j} { $ns at 0.1 plotWindow } $ns at $Duration $ftp($i) finish #ns run $tcp_src($j) $windowVsTime $j
153
Queue/RED set thresh_ 60 Queue/RED set maxthresh_ 60 Queue/RED set q_weight_ 0.002 Ch quan tr ng: Nh ng l nh ny nn c t ra Hnh 8.8 v 8.7 tng ng. lc b t u, tr c khi cc knh
thay i v kch th c
r ng v i cc tham s m ta ch n, di hng i c gi quanh m t gi tr trung bnh l 50. S cc gi tin TCP nh n c trong su t qu trnh m ph ng l 7212
8.4. Gim st cc lu ng
Chng ti gi i thi u trong ph n ny b gim st hng i, l m t cch hi u qu gim st cc i l ng trn m i hng i nh l ng lu l ng c truy n i v b m t. Chng ti s s a o n m ns c a chng trnh shortTcp2.tcl (b ng ??) g p m t b m RED v i ch c nng gim st. M t lu ng gim st m t knh n cng, v v y, tr c h t ta nh ngha knh truy n ta mu n gim st: set flink [$ns simplex-link $N $D 2Mb 1ms RED] v sau b gim st hng i c nh ngha nh sau i v i knh truy n ny: set monfile [open mon.tr w] set fmon [$ns makeflowmon Fid]
154
$ns attach-fmon $flink $fmon #fmon attack $monfile Khi chng ta kch ho t vi c gim st, ta nh n c cc th ng k cho t i th i gian kch ho t trong m t file. i u ny c lm nh sau: $ns at $time "$fmon dump Ti p theo chng ti trnh by o n m y shortRed.tcl b ng ?? m cho php
set ns [new simulattor] # C nhi u ngu n, m m i ngu n tao ra nhi u phin TCP cng chia s #knh truy n c #b i tham s # S(1) # # # . . . chai v m t ch n chung. S NodeNb -----| -----N----------D | -----m t hi u c a chng c cho
# S(NodeNb)
set Out [open Out.ns w]; set Conn [open Conn.tr w]; set tf [open out.ns w]; $ns trace-all $tf ser NodeNb 6; set NumberFlows 253; set sduration 50; #Khi cc tham s sau y c bnh lu n, hng i RED c ng.
#c u hnh m t cch t
# Queue/RED set thresh_ 5 # Queue/RED set maxthresh_ 15 # Queue/RED set q_weight_ 0.002 # nh ngha topology set N [$ns node]
155
set D [$ns node] set flink [$ns simplex-linh $N $D 2Mb 1ms RED] $ns simplex-link $N $D 1Mb 1ms Droptail $ns queue-limit $N $D 50 #Gim st hng i, RED set redq [[$ns linh $N $D] queue] set traceq [open red-queue.tr w] $redq trace curq_ $redq trace ave_ $redq attach $traceq #nt m ng v knh truy n for {set j 1} {$j<=$NumSrc} {incr j} { set S($j) [$ns node] $ns duplex-link $S($j)$N 100Mb 1ms DropTail $ns queue-limit $S($j) $N 100 } #thi t l p b gim st lu ng
set monfile [open mon.tr w] set fmon [$ns makeflowmon Fid] $ns attach-fmon $flink $fmon #fmon attack $monfile #Cc phin k t n i, ngu n ch TCP for {set i 1} {$i<=$NodeNb} {incr i} { for {set j 1} {$j<=$NumFlows} {incr j} { set tcpsrc($i,$j) [new Agent/TCP/newreno] set tcp_snk($i,$j) [new Agent/TCPSink] set k [expr $i*1000 + $j]; $tcpsrc($i,$j) set fid_ #k $tcpsrc($i,$j) set window_ 2000 $ns attach-agent $S($i) $tcpsrc($i,$j $ns attach-agent $D tcp_snk($i,$j) $ns connect tcpsrc($i,$j tcp_snk($i,$j) set ftp($i,$j) [$tcpsrc($i,$j attach-source FTP] } } # Cc b t o cc file c kch th c ng u nhin
156
set rng1 [new RNG] $rng1 seed 0 set rng2 [new RNG] $rng2 seed 0 #T o hai ki u phn b ng u nhin cho hai b t o rng1 v rng2 pht TCP m i ngu n i # nh ng khe th i gian n ng u nhin c a b set RV [new RandomVariable/Exponential] $RV set avg_ 0.3 $RV use-rng $rng1 # Kch th c ng u nhin c a cc file truy n i set RVSize [new RandomVariable/Pareto] $RVSize set avg_ 10000 $RVSize set shap_ 1.5 $RVSize set use-rng $rng2 #By gi ta nh ngha th i gian b t u c a cc phin truy n v kch
#th c truy n #Vi c n c a m t phin tun theo qu trinh Poison for {set i 1} {$i<=$NodeNb} {incr i} { set t [$ns now] for {set j 1} {$j<=$NumFlows} {incr j} { # t th i i m kh i u cho phin truy n k # cc thu c tnh set t [expr $t + [$RV value]] $tcpsrc($i,$j) set starts $t $tcpsrc($i,$j) set sess $j $tcpsrc($i,$j) set node $i $tcpsrc($i,$j) set size [expr [$RVSize value]] $ns at [$tcpsrc($i,$j) set starts] $ftp($i,$j) send [$tcpsrc($i,$j) set size] # C p nh t s lu ng $ns at [$tcpsrc($i,$j) set starts] countFlows $i 1 } } for {set j 1} {$j<=$NodeNb} {incr j} { set Cnt($j) 0 } # Th t c sau y c g i t i b t k th i i m no khi ti p t ngu n v
157
# m t phin k t n i k t thc Agent/TCP instproc done {} { global tcpsrc NodeNb NumberFlows ns RV ftp Out tcp_snk RVSiz # In vo bi n Out cc tham s: node, phin, # th i gian kh i u, th i gian k t thc, # giai o n lm vi c, s gi tin truy n, s byte truy n, thng l ng. Set duration [expr [$ns now]] - [$self set starts]] puts $Out [$self set node] \t [$self set sess] \t\ [$self set starts] \t [ns now] \t $duration \t\ [$self set ndatapack_] \t [$self set ndatabytes_] \t\ [$self set nrexmibytes_] \t [expr [$self set ndatabytes_]/$duration] countFlows [$self set node] 0 } # Th # C t c tnh ton l p sau y c p nh t s 0.2s n in ra $Com. i u ny c th g c ), Th k t n i nh m t hm theo th i gian. hi n b ng cch g i th t c t c ind khng
# v i tham s # ng vai tr
t c ny cng c g i ra b i th
# th c hi n khi m t k t n i t # "sign" gi tr # gi tr
i k t thc b ng vi c gn thm s
proc countFlows {ind sign}( global Cnts Com NodeNb ser ns [Simulator instance] if {#sign==0} {set Cnts($ind)} [expr $Cnts($ind)-1] } else {#sign==1} {set Cnts($ind)} [expr $Cnts($ind)+1] } else { puts -nonewline $Conn [$ns now] \t set sum 0 for {set j 1} {$j<=$NodeNb} {incr j}{ puts -nonewline $Conn [$ns now] \t set sum [expr $sum + Cnts($j)] } puts $Conn $sum $ns at [expr [$ns now] + 0.2] countFlows 1 3 } } proc finish{}{ global ns tf $ns flush-trace
158
close $tf exec grep a red-queue.tr > ave.tr exec grep Q red-queue.tr > cur.tr exit 0 } $ns at 0.5 countFlows 1 3 $ns at [expr $sduration 0 0.01] $fmon dump $ns at $sduration finish $ns run
159
Ch : p dng b gim st lu ng, m i phin k t n i TCP m ta mu gin st c n c m t s nh n d ng lu n. tr ng h p c a chng ta, ban u, ta nh n d ng m t lu ng b ng nt 4). Ta chuy n s th t v nt ngu n c a n (v d : Phin k t n i th 3 kh i u i u thnh m t vector c h ng nh sau: set k [expr $i*1000 +$j]; $tcpsrc($i,$j) set fid_ $k Qu trnh m ph ng t o ra cc file u ra sau: 1. Cur.tr v ave.tr gi m st s ti n ho c a kch th c hng i v phin b n l y trung bnh c a n. 2. Conn.tr cho vi c gim st s cc phin k t n i tch c c t m i trong 6 ngu n ( s 6 c a vo bi n NumberFlows nh l tham s trong o n m) cng nh t ng cc phin k t n i tch c c, nh m t hm theo th i gian. 3. Out.ns dnh cho vi c gim st m i phin ( c nh n d ng v i nt ngu n v s phin b t ngu n t nt ), th i gian kh i u, th i gian k t thc v th i gian c a phin kt n i, s cc gi tin truy n c, cc byte truy n c v cc byte ph i truy n l i, v thng l ng m phin k t n i t c. 4. mon.tr l t p tin bm v t c t o ra b i b gim st lu ng, n bao g m s gi tin v byte truy n c v b m t m i phin k t n i.
5. Out.tr l t p tin bm v t ton c c cho t t c cc s ki n. Ta dng o n m trn v i phin b n RED v i vi c c u hnh t ng. Ta v th hnh 8.9 - 8.10. Ta th y r ng hnh 8.11 tr ng h p phin k t n i TCP kin
Ta bao g m trong o n m trn y nhi u cch gim st. Cch gim st tr c ti p s phin truy n l i v cc gi tin t i thng qua th t c done: n em l i t t c d li u lin quan t i phin k t n i. B gim st hng i m t khc em l i thng tin c c b v s m t mt m t knh truy n c th . N u phin k t n i i qua m t vi knh truy n c m t chai, phng php th nh t u vi t hn, Phng php th hai c u i m l em l i nhi u thng tin lm tr m c th h u ch trong vi c hi u s ng gp c a m i phin vi nt gy ra t c ngh n m t phin no .
160
8.5. Bi t p
Bi t p 8.5.1. Xem xt o n m shortRED.tcl (b ng 8.3) v s a l i chng trnh c s i u ch nh cc tham s thresh_, maxthresh_,q_weight_, Nh ng tham s ny cng nh l kch th c hng i trn knh truy n N-D nn c ch n nh th no thng l ng t c c i. Nghin c u i u ny b ng m ph ng v gi i thch s tr gi. Bi t p 8.5.2. M t trong nh ng m c ch c a RED l cho php cng b ng hn v i cc c m ng n. Phn tch thng lng v xc su t m t gi tin c a m t phin k t n i nh m t hn theo kch th c c a n v i RED v so snh n v i hnh i Drop tail. S d ng o n m shortRED.tcl (b ng 8.3). Th cc tham s khc nhau cho tr ng h p dng hng i RED t c s cng b ng t t hn, bi t p ny d a trn [13] .
161
Chng 9 Cc d ch v phn bi t
M cl c
9.1. M t chuy n ti p c m b o c a Diffserv . . . . . . . . 9.2. Cc router MRED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.1. M t chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.2. C u hnh MRED trong ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.3. Truy v n TCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3. nh ngha cc chnh sch . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.1. nh ngha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.2. C u hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 164 164 164 165 166 166 167
9.4. M ph ng Diffserv: b o v cc gi tin d b t n cng . . . . 168 9.4.1. K ch b n m ph ng nh ngha . . . . . . . . . . . . . . . . . . . . . . . . . 9.5. K t qu m ph ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6. Th o lu n v k t lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7. Bi t p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 177 178 179
Ng i d ch: Nguy n Ch Thnh Bin t p: H T t Thnh B n g c: NS Simulator for beginners, Chapter 7 [2]
162
y l i m tri ng c v i cc khi ni m m ng khc, nh m ng ATM (ch truy n khng ng b ), c th p ng ch t l ng yu c u d ch v i v i cc k t n i m c cao hn v x l v bo hi u lin quan n vi c ch p nh n cc k t n i m i v duy tr cc k t n i ang c. Hn n a, v ti nguyn m ng b gi i h n nn vi c m b o hi u su t yu c u ph i t ch i cc k t n i m i n u ti nguyn khng c s n. y l i m tng ph n so v i c tnh best-effort c a m ng Internet ngy nay, m t ni m i u khi n truy nh p khng c th c hi n. Tuy nhin, ng i ta nh n ra t m quan tr ng c a vi c phn bi t gi a cc l p k t n i v kh nng c p pht ti nguyn cho cc k t n i theo l p c a chng. Do , m t thu bao s s n sng tr nhi u hn c c tr nh hn v thng l ng l n hn. y cng l yu c u i v i cc ng d ng th i gian th c trn Internet (tho i, video). V l do nn cc d ch v phn bi t (Diffserv) c a ra. Diffserv d a trn vi c nh d u cc gi tin t i ra m ng (ni gi tin b t u i vo m ng) theo m c hi u su t c n cung c p, sau d a theo cc d u ny, cc gi tin ny s c x l khc nhau t i cc nt m ng. Cch ph bi n phn bi t gi tin l dng b m RED, t c l dng cc tham s khc nhau cho cc gi tin khc nhau. Modul NS c x l Diffserv c pht tri n Networks, v chng ny c d a trn ph n l n cc bo co c a Nortel. Nortel
163
d ch v no trong m ng, vi c ny c th ph thu c vo tnh ch t c a ti nguyn c a lu ng (nh t c d trung bnh v tnh truy n theo lo t) v cc thnh ph n m ng c bi t theo c thm vo t i ra m ng xc nh tnh ch t c a ti nguyn. Trong m ph ng ns, chnh sch c xc nh hon ton trong o n m tcl. 2. Cc router bin: ch u trch nhi m gn cc i m m vo cc gi tin theo chnh sch c ch r b i ng i qu n tr m ng. lm c i u ny, ng i qu n tr ph i o cc tham s c a lu l ng u vo c a m i lu ng. 3. Cc router li: v c b n th Diffserv gi cc thng tin m t t i ra m ng , router trong m ng ch n gi n gn m c u tin tng ng v i cc gi tin theo m nh d u c a chng. M c u tin ny chuy n thanh cc tham s quy t nh vi c l p l ch v h y b trong cc router li.
N u tham s cu i cng khng c cho tr c th t t c cc hng i c t l RIO-C. Tng t c th nh ngha cc RIO-C khc. ch r s $n c a hng i o chng ta dng
164
l nh: $dsredq setNumPrec $ Tham s Red c c u hnh dng l nh $dsredq configQ $queueNum $virtualQueueNum $minTh $maxTh $maxP C 5 tham s : s hng i, s hng i o, minth , maxth , vmaxp . Tham s qw c th c cho (nh tham s th 6) v n u n khng c xc nh th s nh n gi tr m c nh l 0.002. Hng i droptail dng l nh $dsredq setMREDMode DROP C u hnh sau c cho tr c v i duy nh t 3 tham s u tin: $dsredq configQ $queueNum $virtualQueueNum $minTh T t c gi tin n b h y khi t gi tr minth Nh ta th y trong chng ni v RED, tnh xc su t h y gi tin c n c l ng c kch th c gi tin. V i gi tin kch th c 1000 byte dng l nh $dsredq meanPktSize 1000 L p l ch: Cc ch l p l ch c th c nh ngha. V d nh weighted round robin v i tr ng s hng i l 5 v 1 tng ng, c nh ngha qua l nh $dsredq setSchedularMode WRR $dsredq addQueueWeights 1 5 C ch l p l ch khc l Weighted Interleaved Round Robin (WIRR), Round Robin (RR) l c ch l p l ch c m c nh, v c m c u tin h n ch (PRI). B ng PHB: m t t p 4 hng i cng v i cc hng i o c b sung v i b ng PHB (cch x l trn 1 hop) (Per Hop Behavior). Cc m c trong b ng c nh ngha b i: (1) i m m v (2) l p (hng i v t l) v (3) quy n u tin (hng i o). M t m c c gn v i cu l nh c d ng: $dsredq addPHBEntry 11 0 1 c ngha l i m m 11 c nh x t i hng i o 1 trong hng i v t l s 0.
165
166
16. di c a s TSW (TSW l chnh sch d a trn t c truy n trung bnh v l y bnh qun theo kch th c c a s d li u tnh theo giy). Gi tr m c nh l 1 giy. Sau y l cc lo i chnh sch: 1. TSW2CM (TSW2CMPolicer): Dng CIR v 2 th t u tin h y gi. Ci no th p hn th c dng theo xc su t khi CIR v t m c cho php. 2. TSW3CM (TSW3CMPolicer): Dng m t CIR, m t PIR v 3 th t u tin h y gi. M c u tin trung bnh c dng theo xc su t khi CIR v t m c cho php, v ci th p nh t c dng theo xc su t khi PIR v t m c cho php. 3. Token Bucket (TokenBucketPolicer): Dng CIR v CBS v 2 th t u tin h y gi 4. Single Rate Three Color Marker (srTCMPolicer): Dng CIR, CBS, EBS, v PBS ch n t 3 drop precedences. 5. Two Rate Three Color Marker (trTCMPolicer): Dng CIR, CBS, EBS, v PBS ch n ra t 3 drop precedences. M i lo i chnh sch trn y nh b o m n s d ng. M t b ng chnh sch nh ngha cho m i lo i chnh sch i m m kh i u cng nh l 1 hay 2 i m m gi m m c. i m m kh i u th ng c g i l green code v i m m gi m m c th p nh t l red. N u c m t i m m khc gi a, n c g i l yellow.
9.3.2. C u hnh
c p nh t b ng chnh sch dng l nh addPolicyEntry, trong g m bi n hng i bin bao hm hng i bin, nt ngu n v nt ch c a lu ng, lo i chnh sch, i m m kh i u c a n, v sau l gi tr cc tham s m n dng nh CIR, CBS, PIR v PBS nh trn. CIR v PIR c n v l bps, cn CBS, EBS, v PBS c n v byte. V d nh: $edgeQueue addPolicerEntry [$n1 id][$n8 id] trTCM 10 200000 1000 300000 1000 y chng ta thm vo 1 chnh sch cho lu ng xu t pht t nt $n1 v k t thc nt $n8. N u dng chnh sch TSW th c th thm vo cu i chi u di c a s TSW. N u khng c thm vo th l y gi tr m c nh l 1s. Sau m t l nh addPolicyEntry khc ch r chnh sch v i m m kh i u (v i m t lu ng khng c th ) s nh ngha i m m gi m m c v i t t c cc lu ng s d ng chnh sch v i cng m t i m m kh i u. V d : $edgeQueue addPolicerEntry srTCM 10 11 12
167
Ba l nh sau y in ra (1) ton b b ng chnh sch, (2) ton b b ng gim st v (3) kch th c hi n th i o b ng byte c a kh i C tng ng: $edgeQueue printPolicyTable $edgeQueue printPolicerTable $edgeQueue getBucket
9.4.1. K ch b n m ph ng nh ngha
M u v phn lo i d ch v : Hai m c u tin c nh ngha. M c cao hn gi tin vo hay green packets v m c th p hn gi tin ra hay red packets. Chng ta t p chung vo chnh sch n gi n nh t c s n trong ns: c a s th i gian tr t (TSW2CM). M t t c cho php CIR c nh ngha cho m i router bin. Mi n l t c k t n i d i m c CIR th t t c gi tin c nh d u l m c u tin cao. Khi t c v t m c CIR th cc gi tin c nh d u theo xc su t bnh qun, m t c c a gi tin c nh d u v i m c u tin cao ng v i CIR. T c truy n c tnh theo t c trung bnh trn c a s TSW; trong ph n m ph ng th kho ng th i gian c a s l 20ms. V i kinh nghi m c a mnh chng ti thay i m c CIR t i nt bin ngu n v nghin c u nh h ng c a n n hi u su t. Chng ta s xem xt m t topo m ng n gi n v i 1 nt th t c chai, c m t trn hnh 9.1
168
M i nt ngu n c k t n i t i nt bin tng ng ni lu l ng c nh d u theo tham s s c ch r. Router bin c k t n i t i router li t i nt th t c chai, v sau qua m t router khc t i ch. C 20 nt ngu n, m i nt t o ra cc k t n i TCP. Chng ta s th nghi m v i m ng LAN c t c cao (tr truy n d n nh ) v i ng truy n hon ton i x ng ng truy n gi a nt bin v nt ngu n tng ng c tr 10sec v bng thng 6Mbps. ng truy n gi a nt bin v nt ch tng ng c tr 10sec v bng thng 10Mbps. ng truy n gi a nt trung tm v nt bin g n v i nt ngu n c tr 0.1sec v bng thng 6Mbps. ng truy n gi a nt trung tm v nt bin g n v i nt ch c tr 1sec v bng thng 10Mbps. M hnh lu l ng: M t file c truy n c phn b xc su t Pareto v i tham s shape l 1.25 v kch th c trung bnh 10kbytes. File c truy n n m i nt ngu n theo ti n trnh Poisson v i t c trung bnh 5 file/giy. Nhi u phin truy n t cng 1 nt ngu n c th c kch ho t ng th i. Tham s qu n l vi c x p hng: Hng i ch c th c xy d ng t i router nt c chai, v d nh t i ng truy n gi a nt trung tm v nt bin n i t i ch. Ta ch n kch th c c a n l 100 gi tin. V th nn cc tham s qu n l hng i t i cc nt khc khng
169
nh h ng n k t qu . Trong hng i th t c chai t i nt trung tm, qu n l hng i multi-RED c dng v i phin b n RIO-D; ta ch n tham s gi ng nhau cho c 2 m c u tin (chi ti t hn ph n sau). M c ch c a chng ta trong vi c ch n ra cc tham s khng ph i l nh n c hi u nng c n thi t v ti u m ng ra l t o ra cc i u ki n cho php ta nghin c u nh h ng c a Diffserv khi gi m xc su t m t cc o n d b m t v tc ng c a n n hi u su t c a cc ho t ng trn TCP ( tr , thng l ng). V l do , chng ta ch n tham s gi ng nhau cho 2 m c u tin (i u ny s c gi i thch d i). Kch th c hng i trung bnh c gim st, v i m i lo i gi tin ( , xanh) (i u ny c th c hi n b ng cch dng hm m chu n l y trung bnh v i tham s wq = 0.01). Cc gi tin c mu cho tr c b t u b lo i b khi s hng i trung bnh c a gi tin v t qu gi tr minw ; ta ch n minw = 15; xc su t h y gi ny tng tuy n tnh v i kch th c hng i trung bnh cho n khi t t i gi tr maxw = 45, trong xc su t h y gi l y gi tr maxp = 0.5. Khi v t qu gi tr ny, th xc su t h y gi b ng 1. Lu r ng vi c phn bi t gi a cc m c u tin c th c hi n b ng cch dng cc t p tham s khc nhau: nh vi c h y gi tin mu xanh t i kch th c hng i l n hn. Chng ta th ng khng s d ng cch ny, v s lo i b khi kch th c c a s l n s gy tr l n hn, trong m t s tham s th nghi m cho k t qu thng l ng th p hn v i gi tin mu xanh hn l gi tin mu v s suy gi m chung v hi u su t. V i vi c cho cng tham s gi ng nhau v i c 2 m c u tin, chng ta c th nghin c u v tc ng tr c ti p c a vi c b o v cc gi tin d b t n cng trn ng truy n TCP. S nh d u c th c hi n b ng cch dng RIO-D, trong xc su t t ch i m i lo i m u ph thu c vo s l ng gi tin trung bnh c a lo i . V v y, c t gi tin mu xanh b h y hn gi mu , chng ta ch n thng l ng c a chng th p hn (cho nn cng ph thu c vo kch th c hng i trung bnh); i u ny c th c hi n b ng cch ch n gi tr CIR thch h p m gi tr ny xc nh ph n gi tin b nh d u mu xanh. M ph ng ko di 80s. T c n c a cc bit nt c chai l
20 1.04 104 8 = 7.563M bps 0.22 K t qu trn thu c nh sau: M t gi tin kch th c trung bnh l 1040 bytes trong 1000 bytes l d li u v 40 bytes l mo u ph . M t file ftp trung bnh c gi thi t l c 104 bytes d li u, c ngha l t ng kch th c trung bnh (bao g m c mo u ph ) kho ng 1.04x104x8 bits. K t qu ny t c khi nhn s nt ngu n v chia cho th i gian trung bnh gi a cc file n t i 1 nt. o n m ns c cho trong b ng 7.1.
170
# C nhi u ngu n v m i ngu n t o nhi u phin TCP # chia s cng 1 ng truy n nt c c a chng c cho b i tham s NodeNb # chai v 1 ch. S
# S(NodeNb)-E(NodeNb)set cir0 100000; #policing parameter set cir1 100000; #policing parameter set pktSize 1000 set NodeNb set NumberFlows set sduration 60 20; # s nt ngu n lu ng trn m t nt ngu n 360;# s
# nh ngha cc mu khc nhau cho lu ng d $ ns color 1 Blue $ ns color 2 Red $ ns color 3 Green $ ns color 4 Brown $ ns color 5 Yellow $ ns color 6 Black
#file bao g m th i gian truy n c a cc k t n i khc nhau Set Out [open Out.ns w]; #file bao g m s l ng k t n i
Set tf
$ns trace-all $tf #Open file lu v t NAM Set file2 [open out.nam w] # $ns namtrace-all $file2
171
# nh ngha topo Set D Set Ed [$ns node] [$ns node] [$ns node]
Set Core
Set flink [$ns simplex-link $core $Ed 10Mb 1ms dsRED/core] $ns queue-limit $Core $Ed 100 $ns simplex-link $Ed $Core 10Mb 1ms dsRED/edge $ns duplex-link $Ed $D 10Mb 1ms 0.01ms DropTail For {set j 1} {$j<=$NodeNb} {incr j} { Set S($j) [$ns node] Set E($j) [$ns node] $ns duplex-link $S($j) $E($j) 6Mb $ns simplex-link $E($j) $Core $ns simplex-link $Core $E($j) $ns queue-limit $S($j) } #c u hnh Diffserv Set qEdC [[$ns link $Ed $Core] queue] $qEdC meanPktSize 40 $qEdC set numQueues_ 1 $qEdC setNumPrec 2 For {set j 1} {$j<=$NodeNb} {incr j} { $qEdC addPolicyEntry [$D id] [$S($j) id] TSW2CM 10 $cir0 0.02 } $qEdC addPolicerEntry TSW2CM 10 11 $qEdC addPHBEntry 10 0 0 $qEdC addPHBEntry 11 0 1 $qEdC configQ 0 0 10 30 0.1 $qEdC configQ 0 1 10 30 0.1 $qEdC printPolicyTable $qEdC printPolicerTable $E($j) 6Mb 6Mb 100 0.01ms 0.1ms 0.1ms DropTail dsRED/edge dsRED/edge
172
Set qCEd [[$ns link $Core $Ed] queue] # set CEd [$flink queue] $qCEd meanPktSize $pktSize $qCEd set numQueues_ 1 $qCEd set NumPrec 2 $qCEd addPHBEntry 10 0 0 $qCEd addPHBEntry 11 0 1 $qCEd setMREDMode RIO-D $qCEd configQ 0 0 15 45 0.5 0 0.1 $qCEd configQ 0 1 15 45 0.5 0 0.1 For {set j 1} {$j<=$NodeNb} {incr j} { Set qEC($j) [[$ns link $E($j) $Core] queue] $qEC($j) meanPktSize $pktSize $qEC($j) set numQueues_ 1 $qEC($j) setNumPrec 2 $qEC($j) addPolicyEntry [$S($j) id] [$D id] TSW2CM 10 $cir1 0.02 $qEC($j) addPolicerEntry TSW2CM $qEC($j) addPHBEntry 10 0 0 $qEC($j) addPHBEntry 11 0 1 #$qEC($j) configQ 0 0 20 40 0.02 $qEC($j) configQ 0 0 10 20 0.1 $qEC($j) configQ 0 1 10 20 0.1 $qEC($j) printPolicyTable $qEC($j) printPolicerTable Set qCE($j) [[$ns link $Core $E($j)] queue] $qCE($j) meanPktSize 40 $qCE($j) set numQueues_ 1 $qCE($j) setNumPrec 2 $qCE($j) addPHBEntry 10 0 0 $qCE($j) addPHBEntry 11 0 1 # $qCE($j) configQ 0 0 20 40 0.02 $qCE($j) configQ 0 0 10 20 0.1 $qCE($j) configQ 0 1 10 20 0.1 } 10 11
173
# set flow monitor Set monfile [open mon.tr w] Set fmon [$ns makeflowmon Fid] $ns attach-fmon $flink $fmon $fmon attach $monfile #TCP Sources, destinations, connections For {set i 1} {$i<=$NodeNb} {incr i} { For {set j 1} {$i<=$NumberFlows} { incr j } { Set tcpscr($i,$j) [new Agent/TCP/Newreno] Set tcp_snk($i,$j)[new Agent/TCPSink] Set k [expr $i*1000 +$j]; $tcpsrc($i,$j) set fid_$k $tcpsrc($i,$j) set window_ 2000 $ns attach-agent $S($i) $tcpsrc($i,$j) $ns attach-agent $D $tcp_snk($i,$j) $ns connect $tcpsrc($i,$j) $tcp_snk($i,$j) Set ftp($i,$j) [$tcpsrc($i,$j) attach-source }} # kh i t o kch th c ng u nhin cho file Set rng1 [new $rng1 seed 22 RNG] FTP]
# Random inter-arrival times of TCP transfer at each source i Set RV [new RandomVariable/Exponential] $RV set avg_ $RV use-rng 0.22 $rng1
#kch th c gi tin n sau ti n trnh Poisson For {set i 1} {$i<=$NodeNb} {incr i} Set t [$ns now] For {set i 1} {$i<=$NumberFlows} {incr i} { {
174
# set the beginning time of next transfer from source and attributes $tcpsrc($i,$j) set sess $j $tcpsrc($i,$j) set node $i Set t [expr $t + [$RV value]] $tcpsrc($i,$j) set starts $t $ftp($i,$j) send countFlows $i [$tcpsrc($i,$j) set size] $tcpsrc($i,$j) set size [expr [$RVSize value]] $ns at [$tcpsrc($i,$j) set starts] $ns at [$tcpsrc($i,$j) set starts] }} For {set j 1} {$j<=NodeNb} {incr j} { Set Cnts($j) } # the following procedure is called whenever a connection ends Agent/TCP instproc done {} { Global tcpsrc NodeNb NumberFlows ns RV ftp Out tcp_snk RVSize # print in $Out: node, session, start time, end time, duration, # trans-pkts, transm-bytes, retrans-bytes, throughput Set duration [expr [$ns now] - [$self set starts]] Set i [$self set node] Set j [$self set sess] Set time [$ns now] Puts $Out $i \t $j \t $time \t\ $time \t $duration \t [$self set ndataback_] \t\ [$self set ndatabytes_] \t [$self set nrexmitbytes_] \t\ 0 1
[expr [$self set ndatabytes_] /$duration] #update the number of flows countFlows [$self } # Th t c quy sau y s c p nh t s in k t qu k t n i nh l m t ra $bi n $Conn. t c v i tham s ind khng khi no set node] 0
# hm th i gian. M i 0.2 n s
t c cng c g i b t c
175
ind).
Proc countFlows {ind sign} { Global Cnts Conn NodeNb Set ns [Simulator instance] if {$sign==0} {set Cnts($ind) [expr $Cnts($ind) - 1]} elseif {$sign==1} {set Cnts($ind) [expr elseif { Puts -nonewline $Conn [$ns now] \t Set sum 0 For {set j 1} {$j<=$NodeNb} {incr j} { Puts -nonewline $Conn $Cnts($j)\t Set sum [expr $sum + $Cnts($j) ] } Puts $Conn $sum $ns at [expr [$ns now] + 0.2] countFlows 1 3 } } $Define a finish procedure Proc finish {} { Global ns tf qsize qbw qlost file2 $ns flush-trace Close $file2 Exit 0 } $ns at 0.5 countFLows 1 3 $ns at [expr $sduration - 0.01] $fmon dump $ns at [expr $sduration - 0.001] $qCEd printStats $ns at $sduration finish $ns run $Cnts($ind) + 1]}
B ng 9.1: o n m Diffs.tcl
176
10kbps 120
30kbps 95
100kbps 53
200kbps 45
300kbps 17
1Mbps 78
10Mbps 114
125
119
90
56
37
73
115
1699
1612
1476
1286
1088
1290
1577
9.5. K t qu m ph ng
M t gi : chng ta ki m tra nh h ng c a t c nh d u CIR n xc su t m t gi c a gi tin SYN v c a gi tin d li u u tin trong k t n i, nh tr c y. Ta th y r ng c n gi m vi c m t gi tin SYN b ng m t th a s c a 7, v m t gi d li u u tin c a m t k t n i b ng th a s c a 3.4, c hai t c t c CIR l 320kbps. Throughput v goodput: s gi tin d li u c truy n thnh cng trong m ph ng hon ton c l p v i t c CIR: m c trung bnh l 58285, v i l ch chu n l 395 gi tin. l v trn th c t t l gi n khng ph thu c vo t c CIR. Ch r ng khi xc su t m t gi th p, th thng l ng cng th p, n lun khng i gi ng nh m t hm c a CIR. S phin k t n i : t ng s phin l m t hm c a th i gian c cho trong hnh 9.2 cho t c CIR l 200kbps (gi tr t i u) v cho tr ng h p khng c u tin (CIR l 10Mbps). Chng ta s th y t k t qu m ph ng r ng l c nh d u v i CIR 300kbps cho hi u su t t t hn: gi m s k t n i kch ho t hi n c b nh d u. Lin h v i th c t , th i gian c a phin trong nh d u ng n hn, chng ta s lm r trong ph n sau. Th t v y, v t l gi tin n trong 1 phin k t n i l gi ng nhau v khng ph thu c vo CIR s phin trung bnh nn t l v i th i gian trung bnh c a 1 phin (h s t l l t l gi n trong phin). Th i gian phin k t n i: trong b ng 9.3 ta th hi n th i gian trung bnh c a m t phin nh l 1 hm c a CIR. Trong kho ng t c 100kbps n 300kbps th i gian trung bnh gi m b i h s 1/3 (cho 100kbps) v 1/2 (cho 300kbps) v i tr ng h p khng c u tin.
10kbps 0.252616
30kbps 0.231077
100kbps 0.167948
200kbps 0.149478
300kbps 0.119509
1Mbps 0.203202
10Mbps 0.225075
177
9.6. Th o lu n v k t lu n
C 1 vi h n ch khi th c hi n vi c nh d u. S c i thi n ng k m chng ta nh n c khng ph i s c c trong m i ho t c nh, v chng ti a ra m t vi ch d n m chng ti nh chnh trong nh ng m ph ng ti p theo, m t nh ng h n ch c a n. 1. Nh ng gi tin d b t n cng lm gi m hi u su t ng k v chng gy ra th i gian gin o n (time-out) di. c bi t l trong tr ng h p m t gi tin ng b s d n n th i gian time-out 3s hay 6s. Trong m ng t c cao th i gian truy n file r t ng n (th ng th t ng th i gian truy n ng n hn nhi u th i gian time-out), v th ta mong mu n t hi u su t cao hn b ng cch lo i tr th i gian time-out ny. Trong m ng t c th p, th vi c lo i tr th i gian time-out l khng c n thi t. 2. Trong m ph ng c a chng ta, m t file c kch th c trung bnh 10kbytes, l kch th c c tnh trung bnh trn m ng Internet. i u ny c ngha l 10% gi tin l gi SYN v c th hn th , 10% khc l gi u trong m t l n truy n. Kho ng 20% gi b m t tng ng v i lo i gi tin d b t n cng ny,v th lo i tr m t gi s d n n c i thi n ng k hi u su t. N u chng ta p d ng v i cc file l n hn, th ph n gi tin d b t n cng s nh hn, gi tr thm vo nh hn.
178
9.7. Bi t p
M ph ng c a chng ta h n ch gi i h n v i lu l ng FTP. Trong bi t p ny chng ta xem xt lu l ng HTTP: th i gian t lc k t thc truy n file n lc b t u phin truy n m i c phn ph i theo hm m v i gi tr trung bnh 0.1s. Ci ny c g i l th i gian suy ngh. V th t m i nt ngu n ch c duy nh t 1 file c truy n t i cng th i i m (nhi u nh t l 1 phin kch ho t). Vi t chng trnh tcl cho m hnh lu l ng v ki m tra hi u su t c a n nh l m t hm c a CIR, so snh v i lu l ng FTP.
179
Chng 10 M ph ng m ng LAN
M cl c
10.1. C s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
te lec om
180
180 182
Ng i d ch: L Th Nga
Bin t p: H T t Thnh
10.1. C s
vn
gi n ha vi c trao i b n tin, chia s file v tnh ton phn tn. M ng cho php chia s
T n t i b n ki u topo chnh c a m ng LAN: m ng hnh sao, m ng l i, m ng vng v bus. Trong c u hnh sao, cc thi t b u cu i c k t n i v i hub trung tm nh lin k t i m-i m. i u ny cho php i u khi n t p trung cc tranh ch p v x l qu ng b m t cch d dng. H n ch c a m hnh ny l s tin c y trong cc ho t ng c a n b gi i h n b i s ph thu c vo hub trung tm. Hn n a, kh nng c a hub trung tm h n ch s l ng tr m c th k t n i.
C u hnh l i cho php c m t vi tuy n gi a hai ng i dng. V d nh h th ng i n tho i. M ng vng bao g m cc b l p c k t n i nh cc lin k t n h ng i m-i m t o thnh m t vng kn. V d nh IBM token ring, IEEE 802.5 v FDDI. M ng vng n gi n v cho php truy n trn lin k t ny trong khi ang nh n t m t lin k t khc. trnh s tranh ch p ch c m t tr m c th truy n t i m t th i i m, i u c ngha l vi c s d ng ti nguyn khng hi u qu . indexEthernet c u hnh bus g m c cc o n cp n c k t n i n cc tr m, cc k t n i ny l ki u k t n i a i m: t t c cc tr m c k t n i t i bus, v n u hai tr m cng truy n t i m t th i i m th c tranh ch p . V d nh token bus (IEEE 802.4) v Ethernet (IEEE 802.3, IEEE 802.9 v IEEE 802.4). B n thn bus l th ng (khng ph c h i ho c khu ch i tn hi u) d n n ph m vi gi i h n. m r ng ph m vi c n s d ng m t b l p c th k t n i nhi u bus n m t cp. Trong cc c u hnh m ng khc hnh sao, giao th c MAC phn tn (a truy nh p) n cc knh c n c th c hi n. Cc giao th c truy nh p ny c chia lm 3 lo i: chia s tnh, truy nh p ng u nhin, v truy nh p theo yu c u. Trong cc giao th c chia s tnh, cc ngu n ti nguyn c phn b c nh gi a cc ng i s d ng. Cc giao th c chnh l: 1. TDMA (a truy nh p phn chia theo th i gian): th i gian c chia thnh cc khe khc nhau v phn b cho nhi u ng i s d ng. 2. FDMA (a truy nh p phn chia theo t n s ): nhi u ng i dng c th truy n ng th i nh s d ng cc t n s khc nhau. Vi c truy nh p n v tinh th ng d a trn c s k t h p TDMA v FDMA. 3. CDMA (a truy nh p phn chia theo m): nhi u ng i s d ng c th truy nh p t i cng m t th i i m v s d ng cng t n s , nhng s d ng cc m khc nhau. Cc m th ng tr c giao v i nhau nn lm gi m nhi u. c s d ng trong cc m ng di ng th h th 3 nh l h th ng vi n thng di ng ton c u (UMTS). Trong giao th c truy nh p ng u nhin, truy nh p ng u nhin c th gy ra xung t v c n truy n l i. V d Aloha c s d ng trong truy n thng v tinh v Ethernet. gi m xung t, m t tr m s l ng nghe tr c, n u khng c tn hi u no khc ang c truy n trn knh chung v n u c th vi c truy n hon l i. i u ny c g i l a truy nh p c m nh n sng mang (CSMA). Hn n a, (one can avoid transmission a long tram) C th trnh vi c truy n ln ng truy n n u trong su t qu trnh truy n d n pht hi n c xung t. i u c g i l pht hi n xung t (Collision Dectection-CD). Phin
181
b n ny c a CSMA bao g m c CSMA/CD v CSMA c tri n khai(implemented) trong ns, c bi t l CSMA/CD. Ethernet l m t giao th c MAC d a trn CSMA/CD, v cc phin b n khc c chu n ha, v d IEEE 802.3 (10Mbps), IEEE 802.9 (a phng ti n), IEEE 802.11 (Ethernet khng dy), IEEE 802.12 (AnyLan t c cao 100Mbps, thch h p v i cc ki u m ng LAN khc nhau) v IEEE 802.14 (t c cao). Ethernet g m c cc thu t ton backoff truy n l i. M t s M c l a ch n ng u nhin, 0 M < 2k v i k = min(n, 10) , v n l t ng s xung t x y ra v i cc gi. Th i gian tr c khi truy n l i c l y M l n "c a s xung t" (b ng hai l n th i gian truy n t i a c a tn hi u trong m ng c c b ). Khi n = 16, phin truy n b h y. Chu n IEEE802.3 c tri n khai rong ns. C a s xung t c gi i h n 51,2us v m ng c c b gi i h n trong 5km. N c m t vi phin b n, v d nh 10base5, 10base2, 10broad36 v m t s phin b n khc. S u tin ch thng l ng Mbps, s th hai cho i u ch (broad c ngha l khng i u ch ). Kho ng th i gian r i gi a cc khung truy n d n trong 10base5 l 9,6us. Khi s d ng Ethernet t c cao, kho ng th i gian r i ny cng nh th i gian lan truy n c c i gi m i, v i u tng t i a ph m v c a m ng T n t i cng ngh Ethernet khc d a trn chuy n m ch ni s l ng l n u vo c th t n t i v c t xung t hn.
182
7. Ki u knh (v d : "Channel)
Theo m t v d , Xt m ng trong hnh 11.1 l m t ki u bi n i c a m ng c nghin c u chng 2 (hnh ?? ) v i cc node n3, n4, v n5 c t trong m t m ng LAN chung. i u ny c ngha l cc gi TCP c h ng n node 4 cng n node 5 (V b lo i b tai y), TCP c g i b i node n4 t i node n0 cng n node n5 (v b lo i b y) v cc gi UDP c g i n node n5 cng n node n4 (v b lo i b y).
T p tin m sau gi ng nh ex1.tcl (b ng ?? ) nhng chng ta thay th cc l nh $ns duplex-link $n3 $n4 0.5Mb 40Ms DropTail $ns duplex-link $n3 $n5 0.5Mb 30Ms DropTail b ng l nh:
set lan [$ns newLan $n3 $n4 $n5 0.5Mb 40ms LL Queue/DropTail MAC/Csma/Cd Channel ]
183
te lec om
m ph ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
185 185 185 186 187 187 188 189 190 190 191 191 192 193
11.2.1. M c ch v ph m vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.2. M hnh khi ni m c a MNS h tr QoS . . . . . . . . . . . . . . 11.3. Thi t k v thi hnh v i MNS . . . . . . . . . . . . . . . . . . . .
11.3.1. Chuy n m ch nhn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.2. Chuy n m ch nhn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.3. S ginh tr c ti nguyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.4. M c l p - Class Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.5. Mi tr ng th c thi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4. Cc v d
Ng i d ch: ng Thnh Chng Bin t p: Nguy n Nam Hong. B n g c: Design and Implementation of MPLS Network Simulator [4]
vn
11.5. K t lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
184
11.1. Gi i thi u
MNS l vi t t t c a MPLS Network Simulator Ti li u ny s trnh by v n thi t k v th c thi b ph n m m m ph ng MNS, h tr vi c thi t l p knh chuy n m ch nhn rng bu c CR-LSP i v i lu l ng QoS, cng nh cc ch c nng c b n v MPLS, nh giao th c phn b nhn LDP v chuy n m ch nhn. c th h tr cc ch c nng , MNS bao g m r t nhi u thnh ph n; l CR-LDP, MPLS Classifier, Service Classifier, Admission Control, Resource Manager, v Packet Scheduler. m bo tnh chnh xc v hi u qu c a MNS, hai v d s c m ph ng v th c hi n. M t l m ph ng i v i cc lu ng lu l ng v i cc QoS khc nhau, v hai l m ph ng s ginh tr c (preemtion) ti nguyn.
C u trc c a ti li u ny nh sau: ph n 2 s a ra ci nhn t ng qut v MNS, v n thi t k v th c thi chi ti t hn s c trnh by trong ph n 3. Cc v d m ph ng s c gi i thi u trong ph n 4, v cu i cng l ph n k t lu n.
vn te lec
qu c a d n VINT.
11.2. Gi i thi u
11.2.1. M c ch v ph m vi
Tnh "ti s d ng" (Reusability) Ph m vi th c hi n c a b m ph ng MPLS: Chuy n m ch nhn: cc thao tc chuy n m ch nhn, gi m (decrement) TTL, hop bin (p cht)
185
om
LDP: cc thng i p LDP (Request, Mapping, Withdraw, Release, Notification) CR-LDP: cc thng i p CR-LDP Kh nng c a b m ph ng MPLS lin quan n vi c thi t l p knh LSP nh sau: Trong LSP Trigger Strategy: h tr kh i ng (trigger) theo i u khi n (controldriven) v theo d li u (data-driven) Trong Label Allocation and Distribution Scheme: ch h tr l c downstream trong kh i ng control-driven, h tr c 2 l c upstream v downstream-on-demand trong kh i ng data-driven Trong Label Distribution Control Mode: ch h tr mode c l p trong kh i ng control-driven, v c 2 mode c l p v ordered trong kh i ng data-driven. Trong Label Retention Mode: ch h tr trong ch duy tr (conservative mode) ER LSP based on CR-LDP: thi t l p d a trn thng tin ng i xc nh tr c b i user. CR LSP based on CR-LDP: thi t l p d a trn cc tham s nh t c lu l ng, kch th c vng m. t tr c ti nguyn (Resource preemption): ginh tr c ti nguyn c a CR-LDP t n t i v i setup-priority v holding-priority. Flow Aggregation (G p lu ng): g p c c lu ng m n (fine flows) vo 1 lu ng th (coarse flow)
186
Resource Manager: t o/xa cc hng i yu c u, cng nh qu n l thng tin v ti nguyn. Packet Scheduler: qu n l cc gi trong hng i sao cho chng c th nh n c cc yu c u ph c v .
187
N u hop ti p theo c a gi cng l chnh n, gi s c g i n Port Classifier i v i chuy n m ch nhn, hai b ng c xc nh nh sau: Partial Forwarding Table (PFT) n l t p con c a Forwarding Table, v c s d ng nh x m t gi IP thnh LSP t i LSR vo (Ingress). N bao g m FEC, FlowID, v LIBptr. LIBptr l con tr cho bi t m t i m vo c a b ng LIB. Label Information Table (LIB) Ch a cc thng tin v vi c thi t l p cc LSP, v c s d ng cung c p chuy n m ch nhn i v i gi c gn nhn. N bao g m cc nhn in/out v giao di n in/out.
188
Hnh 11.4 ch ra qu trnh x l vi c dnh tr c ti nguyn c a node v link MPLS. Khi thnh ph n CR-LDP nh n b n tin yu c u CR-LDP, n g i Admission Control ki m tra
189
node c c yu c u ti nguyn. N u c ti nguyn kh d ng, Admission Control s ginh tr c ti nguyn b ng cch c p nh t b ng Resource. Sau , b n tin yu c u LDP c cho php i qua n node MPLS ti p theo. Khi thnh ph n CR-LDP nh n b n tin CR-LDP Mapping, n s lu gi nhn v thng tin giao ti p trong b ng LIB v cc thng tin CR-LSP c yu c u (t c l LSPID) trong b ng ERB. V cu i cng, b n tin LSP Mapping s c cho php i qua n node MPLS tr c .
11.3.5. Mi tr ng th c thi
B m ph ng MNS c th c thi trn h th ng Sun Unix b i chng trnh ns-2.1b6, NS version 2.1
190
11.4. Cc v d m ph ng
11.4.1. M ph ng lu l ng QoS
Trong ph n ny, chng ta kh o st m t vi lo i c a lu l ng MPLS v i m i lo i QoS khc nhau, c ch ra trong hnh 11.6. Theo cch ny, chnh xc v tnh hi u qu c a MNS s c ki m nh.
Trong hnh 11.6 , node0 v node4 l cc node IP. LSR1, LSR2 v LSR3 l cc node MPLS. C 4 c p t i lm vi c: m t c p l Simple Best-effort Traffic, c g i l SBT, m t c p l High priority Best-effort Traffic, c g i l HBT, v hai c p Real-time Traffic, tng ng l RT1 v RT2. Lu l ng c a vo t i node0 v i ra t node4. Bng thng k t n i (link) l 1Mbit/s, ngo i tr k t n i gi a Node0 v LSR1. SBT v HBT pht ra lu l ng t c bit khng thay i (CBR) t i 250 Kbit/s, theo th t l n l t. RT1 v RT2 pht ra lu l ng CBR t i 350 Kbit/s v 450 Kbit/s, m t cch tng ng. Do , t ng t c d li u t i c a t t c cc t i lm vi c l n hn bng thng k t n i c a m ng MPLS. Hnh 11.7 ch ra m l p l ch cc s ki n i v i m ph ng. C 4 LSP c thi t l p i v i lu l ng; l hai ER-LSP i v i SBT v HBT, v hai CR-LSP i v i RT1 v RT2. T i th i i m 0.1 giy, 2 ER-LSP c thi t l p i v i SBT v HBT, v 1 CR-LSP i v i RT1. T i 1.0, SBT, HBT v RT1 pht ra cc lu l ng c a chng. T i 10.0 giy, m t CR-LSP c thi t l p i v i RT2, v RT2 pht ra lu l ng c a n t i 11.0 giy. T i 30.0 giy, RT2 d ng vi c pht ra lu l ng c a n v CR-LSP i v i RT2 c gi i phng t i 31.0 giy. Cu i cng, SBT, HBT v RT1 d ng vi c pht lu l ng c a chng t i 40.0 giy. K t qu m ph ng c ch ra trong hnh ??. Nh trong hnh ??, t ng bng thng gi a kho ng 11 giy v 30 giy g n b ng v i bng thng k t n i, t c l hi u qu s d ng bng thng l r t cao. Trong kho ng th i gian , RT1 v RT2 c th t c bng thng yu c u, trong khi SBT v HBT t n d ng bng thng cn l i c a k t n i. V HBT c ph c v nhi u hn SBT.
191
192
Hnh 11.9: M l p l ch s ki n
b i v gi tr setup-priority c a RT2 nh hn gi tr holding-priority c a RT1. K t qu m ph ng c ch ra trong hnh 11.10, trong ch ra ti nguyn c a RT1 c ginh tr c RT2 t i giy th 11. T giy th 11, RT1 c p ng v i lu l ng cao nh t. Trong kho ng th i gian ny, ch RT1 c th t c bng thng theo yu c u, trong khi trong khi SBT, HBT v RT2 t n d ng bng thng cn l i c a k t n i. V HBT c ph c v nhi u hn SBT v RT2.
Hnh 11.10: K t qu c a m l p l ch s ki n
11.5. K t lu n
MPLS c bi t n nh l cng ngh quan tr ng nh t i v i vi c gi i quy t nhi u bi ton trn Internet. R t nhi u k thu t lin quan n MPLS c cung c p. MNS cung
193
c p m t n n t ng m ph ng v i nhi u k thu t c xem xt. B ng cch s d ng MNS, chng ta m ph ng 2 v d trong ti li u ny. V i cc s ki n n gi n, cc k t qu c ch ng minh l c tnh kh thi v hi u qu i v i MNS. C n nhi u k t qu m ph ng hn ch ng t MNS u c th c hi n trong tng lai.
194
Chng 12 M ng di ng
M cl c
12.1. Cc thu t ton nh tuy n . . . . . . . . . . . . . . . . . . . . . . . 12.1.1. Vector kho ng cch theo th t ch DSDV . . . . . . . . . . 12.1.2. Vector kho ng cch theo yu c u c bi t AODV . . . . 12.1.3. nh tuy n ngu n ng DSR . . . . . . . . . . . . . . . . . . . . . . . . 12.1.4. Thu t ton nh tuy n t ch t m th i TORA . . . . .
om
197 197 198 198 199 200 200 201 203 207 208 208 210 210 211 211 211 213 216 219
vn te lec
12.6. S
12.3. nh d ng file v t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4. Phn tch k t qu m ph ng . . . . . . . . . . . . . . . . . . . . . 12.5. So snh v i nh tuy n ad-hoc khc . . . . . . . . . . . . . . 12.5.1. TCP qua DSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.2. TCP qua AODV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.3. TCP qua TORA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.4. M t vi bnh lu n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tc ng c a TCP t i giao th c MAC . . . . . . . . .
195
Ng i d ch: Nguy n Hong Minh Phc Bin t p: Nguy n Anh Tn B n g c: NS Simulator for beginners, Chapter 9 [2]
C hai cch lin l c khng dy gi a hai thi t b : th nh t l qua m ng t bo t p trung trong m i m t thi t b di ng c k t n i t i m t ho c nhi u tr m c s t c nh (m i tr m c s ch u trch nhi m m t ), do lin l c gi a hai thi t b di ng i h i c s tham gia c a m t ho c nhi u tr m c s . Ki u th hai l ki u khng t p trung bao g m c s c a m t m ng ad-hoc gi a nh ng ng i dng mong mu n lin l c v i nhau. Do tng thm gi i h n ph m vi ho t ng c a m t thi t b di ng ( i v i m t tr m c s t c nh), ki u lin l c ny i h i cc thi t b i ng khng ch ph i ng vai tr l ngu n ho c ch c a cc gi tin c truy n trong qua trnh lin l c c a chng m cn m nhi m thm vai tr y cc gi tin cho qu trnh lin l c gi a cc thi t b khc n a. Tr m t bo c ph m vi l n hn cc m ng ad-hoc. Tuy nhin cc m ng ad-hoc l i c u i m l c th tri n khai nhanh chng b i v chng khng i h i h t ng c s s n c. Trong cc m ng t bo, cc thnh ph n khng dy b h n ch ch truy c p vo m t m ng v trong m ng cc giao th c nh tuy n c i n c th c s d ng. Tri l i, m ng ad-hoc d a vo cc giao th c nh tuy n c bi t c th p ng c s thay i th ng xuyn c a c u trc lin k t m ng. m hnh ha t t cc m ng t bo, cc cng c m ph ng ph c t p nh knh v tuy n v t l cng nh cc cng c m ph ng cc k thu t i u khi n cng su t c n c s d ng. NS khng ph i l m t module cao c p m ph ng l p v t l (m c d n c ch a m t s cc ch c nng m ph ng knh v tuy n n gi n). Trong cc m ng ad-hoc, tri l i, cc giao th c nh tuy n th ng t p trung. NS cho php m ph ng cc giao th c nh tuy n chnh cng nh s truy n t i v cc ng d ng s d ng cc giao th c . Ngoi ra, n cn cho php tnh ton i v i l p MAC, tnh di ng v m t vi c i m c a l p v t l. Cc giao th c nh tuy n thng d ng c trong NS bao g m: DSDV- Destination Sequenced Distance Vector. DSR- Dynamic Source Routing ( nh tuy n ngu n ng). TORA/IMPE-Temporally Ordered Routing Algorithm / Internet MANET Encapsulation Protocol. AODV- Ad-hoc On Demand Distance Vector.
196
197
t hn s t t hn. N u m t nt pht hi n ra m t ng nh tuy n b h ng n s t gi tr v cng cho s l ng i m trung gian ng th i s th t s c c p nh t (tng ln) nhng s l m t s l , i u ny c ngha l s th t ch n l t ng trng cho vi c ng nh tuy n v n cn s d ng c.
198
ng k cc b n tin c p nh t trong m ng. Cc nt lu tr trong b nh t m th i c a chng t t c cc ng nh tuy n m chng bi t. Giao th c ny bao g m vi c tm ra cc ng nh tuy n v duy tr chng. T i qu trnh tm ki m ng nh tuy n, m t ngu n c yu c u g i tin t i m t ch s g i qu ng b b n tin yu c u nh tuy n RREQ. Cc nt nh n c b n tin RREQ ny s tm ki m trong b nh c a n xem c ng no i n a ch ch c ghi trong RREQ khng. N u n khng tm th y th b n tin RREQ s c g i ti p i xa hn ng th i n s thm a ch c a n vo danh sch chu i i m trung gian. Th t c ny s ti p t c cho t i khi t i c ch c n n ho c n c m t node no c ng nh tuy n t i ch c n n. ng nh tuy n s c xc nh b ng cch o ng c danh sch chu i i m trung gian. V cc ng nh tuy n khng c n ph i i x ng , nn khi DSR ki m tra b nh lu tr b ng nh tuy n t m th i c a node cu i cng trong th t c tm ki m v n u m t ng c tm th y n s c s d ng thay th . Do k t n i m t chi u c th c i u khi n. Duy tr ng nh tuy n: Khi t o ra ho c y i m t gi tin s d ng m t ng nh tuy n, m i nt m gi tin i qua c trch nhi m xc th c r ng d li u c th c chuy n qua theo ng k t n i t n n i m trung gian ti p theo. M t gi tin xc nh n c th cung c p s xc th c cho m t k t n i r ng c th chuy n d li u trn n. Cc gi tin xc nh n th ng l m t b ph n c a giao th c MAC (nh l khung xc nh n l p lin k t c nh ngha trong IEEE 802.11), ho c l xc nh n th ng ngha l m t nt c th xc nh c r ng gi tin c n c nh n b i m t nt trung gian v n c th bi t c nt trung gian y gi tin i xa hn. N u nh ng b n tin xc nh n ny cha c g i i th m t nt c th yu c u m t b n tin xc nh n (b n tin xc nh n ny c th c g i tr c ti p t i nt qua m t ng nh tuy n khc). B n tin xc nh n c th b yu c u nhi u l n (trong m t gi i h n t tr c), v n u lin t c khng nh n c b n xc nh n, ng nh tuy n s b lo i b kh i b nh nh tuy n t m th i v m t b n tin nh tuy n l i s c g i t i cc nt m t ng g i tin qua k t n i k t th i i m cu i cng nh n c b n tin xc nh n. Cc nt nghe ngng ho c chuy n ti p cc gi tin s s d ng t t c cc thng tin nh tuy n tch tr c p nh t cho gi tin nh tuy n c a n.
199
cho t ng nt trong m ng ( i v i cc ch thng th ng). Cc tin nh n s i t cc nt c tham s l n hn t i nh ng nt c tham s th p hn. Cc ng nh truy n c pht hi n ra b ng cch s d ng cc gi tin Truy v n (QRY) v C p nh t (UPD). Khi m t nt m ng khng c ng k t n i xu ng c n c ng nh tuy n t i m t ch, n g i qu ng b b n tin QRY v s truy n i cho t i khi n tm th y c m t nt c ng nh tuy n t i ch c n n ho c truy n t i c ch c n n. ch ny s p l i b ng cch g i qu ng b b n tin UPD c ch a gi tr tham s c a nt. M t nt m ng khi nh n c gi tin UPD s c p nh t gi tr c a tham s tng ng c a n v g i qu ng b ra m t gi tin UPD khc. Vi c ny c th t o ra m t s l ng cc ng tr c ti p t ngu n t i ch. N u m t nt m ng pht hi n ra m t ch no m n khng th no tm c ng t i, n s t cho i m ch ny gi tr tham s l n nh t. Trong tr ng h p nt m ng ny khng th tm th y c b t k m t hng xm no c gi tr tham s l h u h n t i node ch , n s c g ng tm m t ng nh tuy n m i. N u cng khng c ng nh tuy n no t i c ch ny (v d nh ch n thu c m t ph n b chia c t c a m ng), nt m ng ny s g i qu ng b gi tin Xa (CLR) thi t l p l i t t c cc tr ng thi nh tuy n v xa b i cc nh tuy n khng cn ng t cc thnh ph n khc c a m ng. TORA ho t ng pha bn trn giao th c IMEP (Giao th c ng gi MANET internet), y l giao th c cung c p kh nng phn ph i n nh cc b n tin nh tuy n v cung c p cc giao th c nh tuy n lin quan n s thay i cc k t n i cho cc hng xm c a n. IMEP c g ng t p h p cc b n tin IMEP v TORA l i thnh m t gi tin (g i l kh i) c th gi m lu l ng. c c thng tin v tr ng thi c a cc k t n i t i hng xm, IMEP theo s g i nh k cc b n tin BEACON c tr l i l i b i cc b n tin HELLO
12.2. M ph ng m ng di ng
12.2.1. K ch b n m ph ng
Chng ta b t u b ng vi c a ra m t k ch b n n gi n: m t k t n i TCP n qua 3 node m ng v i ph m vi 500 x400m nh c miu t trong hnh 12.1. V tr kh i t o c a node 0, 1 v 2 l n l t l (5,5), (490,285) v (150,240) (chng ta gi s r ng t a tr c z b ng 0). Vo i m th i gian 10, node 0 b t u di chuy n t i i m (250,250) v i v n t c 3m/s Vo i m th i gian 15, node 1 b t u di chuy n t i i m (45,285) v i v n t c 5m/s Vo i m th i gian 10, node 0 b t u di chuy n t i i m (480,300) v i v n t c 5m/s Node 2 khng tham gia m ph ng.
200
M ph ng ny ko di 150s. T i i m th i gian 10, m t k t n i TCP c kh i t o gi a node 0 v node 1. Chng ta s s IEEE802.11 MAC. d ng d i y giao th c nh tuy n c bi t DSDV v giao th c
201
$ns node-config adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType &val(ifq) \ -ifqLen $val(ifqLen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \ -routerTtrace ON \ -macTrace OFF \ -movementTrace ON for {set i 0} {$i < $val(nn) } { incr i } { set node_($i) [$ns node] } B n ty ch n cu i cng trong ph n c u hnh nt m ng c th nh n gi tr ON ho c OFF. Ty ch n agentTrace s l n theo ng c a TCP, routerTrace s cung c p ng i c a cc gi tin trong qu trnh nh tuy n, macTrace th l n theo cc gi tin giao th c MAC, v movementTrace c s d ng l n theo s di chuy n c a cc node V tr kh i t o c a nt 0 l: $node_(0) set X_ 5.0 $node_(0) set Y_ 5.0 $node_(0) set Z_ 0.0 S di chuy n tuy n tnh c a m t nt m ng c t o ra b ng cch xc nh r th i gian n b t u chuy n ng, gi tr t a x v y c a ch n v t c c a n. V d , s di chuy n c a nt s 1 c xc nh nh sau: $ns at 15.0 $node_(1) setdest 45.0 285.0 5.0 Chng ta c n t o ra v tr ban u c a nt m ng cho NAM (Network AniMator) b ng cch s d ng : Tng t nh v y chng ta kh i t o v tr ban u cho cc nt cn l i. For {set i 0} {$i < $val(nn)} { incr i } {
202
# 30 defines the node size for nam $ns initial_node_pos $node_($i) 30 } Chng ta ch ra cc nt m ng khi qu trnh m ph ng k t thc v i: For {set i 0} {$i < $val(nn)} { incr i} { $ns at $val(stop) $node_($i) reset; } Sau chng ta t o k t n i TCP v t o ng d ng ftp qua k t n i ny nh bnh th ng. K t thc qu trnh m ph ng nh th ng l ngo i tr vi c thm l nh k t thc NAM.
12.3. nh d ng file v t
M t v d v m t ng trong d u v t u ra l
r 40.649943289 _1_ AGT --- 1569 tcp 1032 [a2 1 2 800] ------- [0:0 1:0 32 1] [35 0] 2 0
Tham s u tin l m t ch ci gi tr c a n c th l r, s, f , D thay cho received, sent, forward v dropped. N cng c th l M m ch m t a i m ho c m t s di chuy n, n s c miu t sau. Tham s th hai l th i gian Th ba l s th t c a nt m ng Th t l MAC bi u th r ng gi tin c lin quan n l p MAC, AGT th hi n l m t gi tin l p Transport (ch ng h n nh TCP), ho c RTR n u l m t gi tin c nh tuy n. Gi tr ny cng c th l IFQ ch ra cc s ki n lin quan n hng i u tin (nh gi tin b r t ch ng h n). pha sau cc d u g ch ngang l s th t c a gi tin (l global sequence number ch khng ph i l tcp sequence number). T i tr ng ti p theo l cc thng tin b sung v gi tin (ch ng h n nh tcp, ack ho c udp) Ti p n l kch c c a gi tin (tnh theo bytes) Trong ngo c vung l cc thng tin v l p MAC. S th p l c phn u tin a2 (tng ng v i 162 trong h th p phn) miu t s th i gian tnh theo giy c mong i
203
l s g i xong gi tin qua knh v tuy n. S th hai c gi tr 1 l thay cho MAC-id c a node ang g i gi tin, s th ba c gi tr 2 chnh l MAC-id c a nt m ng ang nh n gi tin. Tr ng cu i cng, 800, ch ra lo i MAC l ETHERTYPE_IP. Trong ngo c vung th 2 l a ch a IP ngu n v ch, ti p theo l ttl (Time To Live) c a gi tin (trong tr ng h p ny l 32) Ngo c vung th ba c p n thng tin tcp: s th t c a n v s ch ng th c (acknowledgement number) C nhi u ki u nh d ng khc nhau lin quan n cc k thu t nh tuy n khc v cc lo i gi tin khc nhau. M t cu l nh di chuy n c d ng nh sau: M 10.00000 0 (5.00, 5.00, 0.00), (250.00, 250.00), 3.00 Con s u tin l th i gian, th hai l s node, sau l v tr ngu n v ch, cu i cng l t c .
# M t v d
g m 3 nt cho m ph ng ad-hoc v i DSDV Channel/WirelessChannel; Propagation/TwoRayGround; Phy/WirelessPhy; Mac/802.11; Queue/DropTail/PriQueue; LL; Antenna/OmniAtenna; 3; DSDV; 500; 400; 150; [new Simulator] [open simple.tr w] [open win.tr w] [open simwrls.nam w] # lo i knh # radio-propagation model # network interface type # lo i MAC # interface queue type # link layer type # antenna model # max packet in ifq # number of mobilenodes # routing protocol # X dimention of topography # Y dimention of topography # time of simulation end
# nh ngha cc ty ch n Set val(chan) Set val(prop) Set val(netif) Set val(mac) Set val(ifq) Set val(ll) Set val(ant) Set val(nn) Set val(rp) Set val(x) Set val(y) Set val(stop) Set ns Set tracefd Set windowVsTime2 Set namtrace $ns trace-all $tracefd @ns namtrace-all-wireless $namtrace $val(x) $val(y)
204
$topo load_flatgrid $val(x) $val(y) Creat-god $val(nn) # Creat nn mobilenodes # configure the nodes $ns node-config adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType &val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \ -routerTtrace ON \ -macTrace OFF \ -movementTrace ON for {set i 0} {$i < $val(nn) } { incr i } { set node_($i) [$ns node] } # Provide initial location of mobilenodes $node_(0) set X_ 5.0 $node_(0) set Y_ 5.0 $node_(0) set Z_ 0.0 $node_(1) set X_ 490.0 $node_(1) set Y_ 285.0 $node_(1) set Z_ 0.0 $node_(2) set X_ 150.0 $node_(2) set Y_ 240.0 $node_(2) set Z_ 0.0 [$val(nn)] and attach them to the channel
205
# Generation of movements $ns at 10.0 $node_(0) setdest 250.0 250.0 3.0 $ns at 15.0 $node_(1) setdest 45.0 285.0 5.0 $ns at 110.0 $node_(0) setdest 480.0 300.0 5.0 # Set a TCP connection between node_(0) and node_(1) Set tcp [new Agent/TCP/Newreno] $tcp set class_2 Set sink [new Agent/TCPSink] $ns attach-agent $node_(0) $tcp $ns attach-agent $node_(1) $sink $ns connect $tcp $sink Set ftp [nw Application/FTP] $ftp attach-agent $tcp $ns at 10.0 $ftp start # Printing the window size Proc plotWindow {tcpSource file} { Global ns Set time 0.01 Set now [$ns now] Set cwnd [$tcpSource set cwnd_] Puts $file $now $cwnd $ns at [expr $now+$time] plotWindow $tcpSource $file } $ns at 10.1 plotWindow $tcp $windowVsTime2 # Define node initial position in nam For {set i 0} {$i < $val(nn)} { inct i } { # 30 define the node size for nam $ns initial_node_pos $node_($i) 30 } # Telling nodes when the simulation ends For {set i 0} {$i < $val(nn)} { inct i } { $ns at $val(stop) $node_($i) reset ; } # ending nam and the simulation $ns at $val(stop) $ns nam-end-wireless $val(stop) $ns at $val(stop) stop
206
$ns at 150.01 puts \end simulation\ ; $ns halt Proc stop {} { Globla ns tracefd namtrace $ns flush-trace Close $tracefd Close $namtrace } $ns run
207
Hnh 12.3: Kch th c c a s TCP trong k ch b n 3 nt m ng v i giao th c nh tuy n DSDV v i k t n i qua v khng qua trung gian)
Hnh 12.5: TCP trong k ch b n 3 nt m ng v i giao th c nh tuy n DSDV, th i i m 58 giy, k t n i qua 1 trung gian
208
T i th i i m 125.50 giai o n 4 b t u v k t thc t i i m 149 giy ng th i cng k t thc t t c k t n i. Cc giai o n c m t trong hnh 12.6
T k t qu thu c ta c th th y c cc i m sau: Trong DSDV, h th ng khng th cung c p c giai o n 4 do v y k t n i b t s m hn. T ng s gi tin TCP c truy n s d ng DSR nhi u hn DSDV. V i DSR c 6770 gi tin TCP (d li u) c nh n, trong khi DSDV v i cng cc tham s th s gi tin l 2079. (Chng ta c th thu c thng tin ny b ng cch s d ng: Grep ^r simple.tr | grep tcp | grep _1_AGT > tcp.tr v sau m s dng. Ho c chng t cng c th c c b ng cch nhn vo s th t c a gi tin tcp cu i cng.) N u chng ta l n theo d u v t c a m t gi tin TCP, ch ng h n v i gi tin c s th t 5, chng ta s th y n xu t hi n nhi u l n: s 40.298003207 _0_ AGT r 40.298003207 _0_ RTR s 40.298003207 _0_ RTR f 40.310503613 _2_ RTR r 40.310503613 _2_ RTR f 40.310503613 _2_ RTR r 40.348863637 _1_ RTR r 40.348863637 _1_ RTR --- 1507 tcp 1040 [0 0 0 0] ... --- 1507 tcp 1040 [0 0 0 0] ... --- 1507 tcp 1060 [0 0 0 0] ... --- 1507 tcp 1060 [13a 2 0 800] ... --- 1507 tcp 1060 [13a 2 0 800] ... --- 1507 tcp 1068 [13a 2 0 800] ... --- 1507 tcp 1068 [13a 1 2 800] ... --- 1507 tcp 1040 [13a 1 2 800] ...
Gi tin u tin c g i b i l p TCP c a nt s 0 sau c nh n b i giao th c nh tuy n c a cng nt v c g i i t cng v i m t header thm vo. Ti p
209
n c nh n v chuy n ti p b i nt s 2, cu i cng n c nh n t i nt s 1 t i l p nh tuy n, cu i cng l l p TCP. D u v t chng ta m ch c nng macTrace. trn thu c b ng cch m ch c nng ghi d u v t c a agentTrace v routerTrace. 4 dng cn l i c p n cng m t gi tin s xu t hi n n u
T i th i i m ban u khng c k t n i no c . Khi k t n i hnh thnh, m t ng nh tuy n c t o ra b ng cch s d ng cc nt m ng: 0-2-3-1 (xem hnh 12.10 miu t th i i m 33). T i i m th i gian 34.5 m t ng ng n hn c hnh thnh: 0-2-1 nhng ng cho ACK v n khng thay i. Sau vo th i i m 44 ng cho ACK thay i thnh 1-3-0 (hnh 12.11 ).
210
12.5.4. M t vi bnh lu n
Trong cc v d chng ta th y, vi c m t gi tin x y ra khi kho ng cch v t l l qu xa ho c khi ng nh tuy n thay i, v gi tin s khng b m t khi c b m b trn. i u ny l do th c t r ng chng ta s d ng m t gi tr m c nh c a kch c l n nh t c a c a s TCP l 20. Do c a s th c t c s d ng l nh nh t gi a di c a s ngh n v 20. Trong hnh 9.9 chng ta trnh by m t ti n trnh kch th c c a s c a TCP qua AODV d i cc i u ki n gi ng h t nh ci chng ta s d ng c c hnh 9.7 nhng gi tr c a s l n nh t l 2000. Chng ta th y r ng chng ta s b m t gi tin do trn b m.
211
Giao th c b t tay c dng gi m kh nng xung t. Cc xung t c th x y ra khi m t i m di ng (gi s l M3) cng mu n g i gi tin n cho M2 t i cng th i i m v i M1; M3 c th khng bi t c r ng M1 cng ang truy n d li u n M2, khi m t s xung t gi a cc gi tin c a M1 v M3 c th x y ra n bi t c gi tin CTS g i t M2 t i M1. N u M1 khng nh n c gi tin CTS n s d ng vi c truy n tin l i v sau m t kho ng th i gian n s g i l i m t gi tin RTS. Node g i tin s h y gi tin DATA n u n g i tin RTS 7 l n m v n khng nh n c gi tin ph n h i CTS no. M t gi tin DATA cng s b h y i sau 4 l n truy n l i m v n khng nh n c gi tin ACK (l p MAC). M c d b t tay s gi m kh nng xu t hi n cc xung t d u i m cu i, nhng n khng hon ton ch m d t c n. hi u c cch m cc xung t nh v y v n c th x y ra, chng ta ph i xem xt n ph m vi a l c a nhi u v s ti p nh n. Ph n c ng hi n nay ch ra r ng ph m vi truy n d n l kho ng 250 m v ph m vi nhi u l kho ng 550m. Theo nh c u hnh chu i trong hnh 12.12 , kho ng cch gi a cc node l 200m. Although nodes that are two hops apart are not hidden from each other, nodes that are three hops apart are, and may creat collisions. Th c t , n u node M4 mu n truy n tin n M5 thng qua m t ng truy n t M1 n M2, n khng th nghe th y CTS t node M2 v kho ng cch t n n M1 l n hn 550m. Do M4 c t t o ra m t ng truy n n M5 v n s va ch m t i node M2 v i ng truy n tr M1. Chng ta s nghin c u trong ph n ny s va ch m c lo i xung t ny trn hi u su t TCP b ng cch s d ng m ph ng ns, gi i h n v i topo chu i. Chng ta s khng c p n v n di ng [3, 19, 37] th y chi ti t hn. y. Chng ta xem xt M2. Hi n t ng ny c g i l hi n t ng i m cu i b d u. V i giao th c b t tay, M3 s khng c g ng g i gi tin khi
212
truy n ng th i b gi i h n nn chng ta s th tng s gi tin TCP truy n thnh cng b ng cch gi m ng truy n ACK,s d ng ACK tr (Delayed ACK). Ns cho php chng ta m ph ng ACK tr v i d = 2. Chng ta s xem xa hn cch v n hnh trong tr ng h p d > 2 b ng cch t o ra thay i trong trnh m ph ng ns.
12.6.2. K ch b n m ph ng
Chng ta s d ng m hnh truy n sng m t t 2 tia, IEEE892.11 MAC, v m hnh anten ng h ng c a ns. Chng ta s d ng thu t ton nh tuy n AODV, m t hng i giao di n di 50 t i m i nt m ng. Chng ta s ki m tra phin b n NewReno c a TCP, l phin b n c tri n khai nhi u nh t. Chng ta lm v i 4 k ch b n: 3, 9, 20 v 30. Trong tr ng h p c a 3 v 9 i h i 150 giy cho m i m ph ng ( c c s v n hnh n nh). Cc tr ng h p cn l i i h i 1500 giy cho m i m ph ng. M t gi tin d li u TCP c t kch c 1040 bytes ( bao g m header). K ch b n cho tr ng h p ACK b tr (v i d = 2) c cho trong b ng 12.2. d i, khi c u hnh cc node chng ta s s d ng ty ch n macTrace ON c c d u v t chi ti t c a gi tin giao th c MAC. i u ny cho php chng ta phn tch l do c a m i gi tin TCP b th t l c.
# nh ngha cc ty ch n Set val(chan) Set val(prop) Set val(netif) Set val(mac) Set val(ifq) Set val(ll) Set val(ant) Set val(ifqlen) Set val(nn) Set val(rp) Set val(x) Set val(y) Set val(stop) Set ns Set tracefd Set windowVsTime2 Channel/WirelessChannel; Propagation/TwoRayGround; Phy/WirelessPhy; Mac/802.11; Queue/DropTail/PriQueue; LL; Antenna/OmniAtenna; 50; 9; AODV; 2200; 500; 150; [new Simulator] [open simple.tr w] [open win.tr w] # lo i knh # radio-propagation model # network interface type # lo i MAC # interface queue type # link layer type # antenna model # max packet in ifq # number of mobilenodes # routing protocol # X dimention of topography # Y dimention of topography # time of simulation end
213
$topo load_flatgrid $val(x) $val(y) Creat-god $val(nn) # Creat nn mobilenodes [$val(nn)] and attach them to the channel # configure the nodes $ns node-config adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType &val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \ -routerTtrace ON \ -macTrace ON \ -movementTrace OFF for {set i 0} {$i < $val(nn) } { incr i } { set node_($i) [$ns node] } # Provide initial location of mobilenodes For {set i 0} {$i < $val(nn)} { incr i } { $node_($i) set X_ [expr $node_($i) set Y_ 250.0 $node_($i) set Z_ 0.0 } # Set a TCP connection between node_ (0) and node_ (8) Set tcp [new Agent/TCP/Newreno] ($i+1)*200.0]
214
$tcp set class_2 $tcp set window_ 2000 Agent/TCPSink/DelAck set interval_ 100ms Set sink [new Agent/TCPSink/DelAck] $ns attach-agent $node_(0) $tcp $ns attach-agent $node_ (8) $sink $ns connect $tcp $sink Set ftp [new Application/FTP] $ftp attach-agent $tcp $ns at 1.0 $ftp start # In ra kch th c c a s Proc plotWindow {tcpSource file} { Global ns Set time 0.1 Set now [$ns now] Set cwnd [$tcpSource set cwnd_] Puts $file $now $cwnd $ns at [expr $now+$time] plotWindow $tcpSource $file } $ns at 1.1 plotWindow $tcp $WindowVsTime2 # Telling nodes when the simulation ends For {set i 0} {$i < $val(nn) } { incr i } { $ns at $val(stop) $node_($i) reset: } $ns at $val(stop) stop $ns at [expr $val(stop)+0.1] puts \end simulation\ ; $ns halt Proc stop {} { Global ns tracefd $ns flush-trace Close $tracefd } $ns run
215
12.6.3. Cc k t qu m ph ng
K t qu m ph ng i v i n = 9, 20 v 30 nt m ng c ghi l i hnh 12.15 cc hnh 12.13 n
Chng ta th y r ng ty ch n tr ACK (Delayed ACK) chu n (d = 2) lm t t hn m t cht TCP chu n (nhng khng t t hn v i cc gi tr l n nh t khc c a kch th c c a s ) i v i n = 9, v lm t t hn nhi u (hn 10%) TCP chu n v i n = 30. S ti n b ny thu c tr ACK v i d = 3 ( i v i n = 9 v n = 20). Nhng s ti n b l n nh t m chng ta th y chnh l t t c cc phin b n tr ACK u t t hn TCP chu n i v i cc kch th c
216
c a s l n nh t l n hn 10, v i cc ty ch n d = 3 ho c d = 4 th c hi n t t hn ty ch n tr ACK chu n. V i n = 9, phin b n tr ACK v i d = 3 chng ta th y mang l i t 30% n 40% ti n b hn so v i TCP chu n v i b t k gi tr kch th c l n nh t c a c a s l n hn 10 no; trong ph m vi n cng lm t t hn TCP chu n 20% 30% v i n = 20 v 6% 20% v i n = 30. Phin b n d = 4 th m ch cn lm t t hn v i n = 20 cho cc c a s c kch c l n nh t mang gi tr t 10 n 25. Hi u su t t t hn c a tr ACK cn c th thu c b ng cch t i u kho ng th i gian c a cc ty ch n tr ACK K t lu n quan tr ng nh t c a cc ng cong l tnh m nh m c a cc ty ch n tr ACK. Trong th c t , khi chng ta khng bi t s l ng nt m ng, khng c l do g gi i h n kch th c c a s xu ng m t gi tr nh , v v y i u ny c th lm gi m s l ng gi tin g i c m t cch ng k . Khi l a ch n gi tr l n cho kch c l n nh t c a c a s , cc phin b n tr ACK lm t t hn m t cch ng k so v i TCP chu n. Chng nh n c h u h t cc gi tr t i u m TCP chu n c th nh n c n u n bi t s l ng nt m ng v c th ch n kch c l n nh t c a c a s m t cch tng ng. i v i m t gi tr nh c nh c a kch c l n nh t c a c a s , ty ch n tr ACK khng lm t t hn TCP chu n v trong h u h t th i gian, kch c c a c a s gi i h n s l ng gi tin TCP c truy n xu ng nh hn d, i u c ngha l ty ch n tr ACK ph i ch cho n khi b m th i gian (m c nh l 100ms) k t thc tr c khi t o ra m t ACK; trong su t kho ng th i gian ny node ngu n khng th truy n c tin. Ti p theo, chng ta v th ti n trnh cho kch c c a s v i n = 9 cho TCP chu n v cho TCP v i ty ch n Delayed ACK v i d = 3. Kch c c a s c l y m u v i chu k 0.1 giy. Chng ta th y r ng m c d kch c l n nh t c a s l 2000, c a s ngh n th c t khng v t qu 13. T cc hnh chng ta th y r ng v i TCP chu n, s gi tin m t l th ng xuyn hn v nghim tr ng hn (lm tng timeout) trong khi v i phin b n d=3 c a tr ACK khng h lm tng timeout.
217
Trong hnh 12.18 chng ta th y ti n trnh c a kch c c a s ngh n c a TCP chu n v i kch c l n nh t c a c a s l 3 trong tr ng h p 9 nt m ng. Chng ta bi t r ng m t kch c l n nh t gi a 2 v 3 s th t s mang n hi u su t t i u (v i u ny c xc minh l n n a hnh 12.13). Chng ta th y trong hnh 12.18 r ng h u nh khng c s m t y l 3). mt gi tin. l kch c c a s th c t l nh nh t gi a c a s ngh n ( c miu t trong hnh) v kch c l n nh t c a c a s (gi tr c a n
Trong cc hnh tr c , t t c cc phin b n s d ng tr ACK u c kho ng th i gian m c nh l 100ms (nh gi i thch trong ph n gi i thi u). Ti p theo, chng ta thay i di c a kho ng th i gian v ki m tra s tc ng c a n v i s l ng gi tin, xem hnh 12.19. Chng ta xem xt phin b n tr ACK v i d = 3. Chng ta th y r ng gi tr m c nh th c hi n kh t t, m c d v i cc c a s c kch th c l n nh t nh , kho ng th i gian nh th c hi n t t hn m t cht, trong khi v i c a s c kch th c l n nh t l n, m t kho ng th i gian l n (130ms) s t t hn. Chng ta c g ng tng kho ng th i gian trn 130ms nhng sau s gi tin gi m xu ng. Cu i cng, chng ta xem xt tr ng h p n = 3 nt m ng. Trong tr ng h p ny hi n t ng d u i m cu i khng cn x y ra n a, v th chng ta khng th y vi c m t mt gi tin TCP no c , cho d v i b t c kch c c a s no. Th m ch sau , tr ACK c th c s d ng tng ng k hi u su t. Vi c ny c ch ng minh trong b ng 12.3 v mang t i s l ng gi tin TCP c nh n thnh cng trong 149 giy v i n = 3. S c i ti n lm tng t 10% n 15% khi d tng t 2 ln 4, khng ph thu c vo kch c l n nh t c a c a s (ch c n n l n hn d).
Hnh 12.19: Tc ng c a kho ng th i gian tr ACK t i s gi tin TCP g i c, nh l m t ch c nng c a kch th c c a s l n nh t. d=3
Tuy nhin v i d = 4 nh mong i, chng ta c th th t r ng chng ta nh n c m t hi u su t t i v i kch c l n nh t c a c a s l 3, b i v ch lun ph i ch i cho n khi kho ng th i gian 100ms c a ty ch n tr ACK h t g i m t gi tin ACK (v cc c a s
218
B ng 12.3: S l ng gi tin g i c trong kho ng th i gian 149 giy v i n=3 nh m t ch c nng c a kch th c c a s l n nh t
ch cho php g i 3 gi d li u).
219
Chng 13 Hng i c i n
M cl c
13.1. M ph ng hng i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2. Hng i h u h n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 223
Ng i d ch: L Th Nga Bin t p: Nguy n Anh Tn B n g c: NS Simulator for beginners, Chapter 10 [2]
Ns2 c th c s d ng m ph ng cc m hnh hng i c i n. Trong cc m hnh c i n n gi n nh t, th i gian n gi a cc gi l ng u nhin v phn b xc su t chung no , v th i gian truy n m t gi l cng l ng u nhin theo cc phn b khc no . Th c t th i gian truy n d n thay i c th ph n nh s khng i c a t c truy n nhng nhng c s bi n i kch th c gi.
13.1. M ph ng hng i
V d hng i n gi n nh t cho phn tch ton h c l hng i M/M/1: l kho ng th i gian gi a hai l n n phn b theo hm m ph thu c tham s v l t ng th i gian truy n c a m t gi cng c phn b m v i cc tham s khc. M t gi c th c truy n i t i m t th i i m v kch th c b m l v h n. N u nh chng ta ch r = /,
220
B ng 13.1 gi i thi u m ph ng c a hng i ny. M ph ng ny t o ra file out.tr v i t t c cc s ki n, and also a monitor-queue trace called qm.out, v cng t o ra m t file truy v t dung gim st hang i g i l qm.out,nh c c p m c 7.3. B ng cch v c t 5 (cc gi trong kch c hng i) d a vo c t 1 (th i gian) B ng cch v th c t 5 theo c t 1, chng ta nh n c s m r ng chi u di hng i (xem hnh 13.1). Kch c hng i c m ph ng trung bnh trn 1000sec l 9.69117, gi tr x p x c a 10 theo 13.1 . Ch r ng chng ta s d ng cch n gi n hn trnh by v v n d ng cc bi n ng u nhin so v i cch c th hi n m c 2.7: chng ta khng trnh by generators v seeds.
set ns [new Simulator] set tf [open out.tr w] $ns trace-all $tf set lambda 30.0 set mu 33.0 set n1 [$ns node] set n2 [$ns node] # kch th c cc gi c lm trn thnh s # bng thng l n nguyn (bytes), # chng ta ph i c kch th c cc gi l n hn v l i do lm trn nh , set link [$ns simplex-link $n1 $n2 100kb 0ms DropTail] $ns queue-limit $n1 $n2 10000 # thi t l p kch th c gi v th i gian n gi a cc gi ng u nhin set InterArrivalTime [new RandomVariable/Exponential] $InterArrivalTime set avg_ [expr 1/$lambda] set pktSize [new RandomVariable/Exponential] $pktSize set avg_ [expr 100000.0/(8*$mu)] set src [new Agent/UDP] $ns attach-agent $n1 $src # qu n l hng i set qmon [$ns monitor-queue $n1 $n2 [open qm.out w] 0.1] $link queue-sample-timeout proc finish {} { global ns tf
221
$ns flush-trace close $tf exit 0 } proc sendpacket {} { global ns src InterArrivalTime pktSize set time [$ns now] $ns at [expr $time + [$InterArrivalTime value]] sendpacket set bytes [expr round ([$pktSize value])] $src send $bytes } set sink [new Agent/Null] $ns attach-agent $n2 $sink $ns connect $src $sink $ns at 0.0001 sendpacket $ns at 1000.0 finish $ns run
222
Hng i M/D/1 c th i gian n phn b m nhng th i gian truy n cc gi l khng i. m ph ng, n gi n thay th bi n ng u nhin pktSize b ng gi tr trung bnh c a bi n. Cng nh th , hng i D/M/1 c th i gian truy n phn b m v th i gian gi a hai gi n l khng i. m ph ng, chng ta c th thay th bi n ng u nhin InterarrivalTime b i gi tr trung bnh.
13.2. Hng i h u h n
Trong m ph ng su t m t gi l: P (loss) = K
k i i=0
trn, ta s d ng b m r t l n trnh m t gi d li u. C th
Cch n gi n tnh ton xc su t m t gi t m ph ng l chia t ng s gi b m t cho t ng s gi n, hai gi tr ny nh n c dng cu i cng c a file gim st hng i.
223
set tf [open out.tr w] $ns trace-all $tf set lambda 30.0 set mu 33.0 set qsize 2 set duration 2000 set n1 [$ns node] set n2 [$ns node] set link [$ns simplex-link $n1 $n2 100kb 0ms DropTail] $ns queue-limit $n1 $n2 $qsize # thi t l p kch th c gi v th i gian n gi a cc gi ng u nhin set InterArrivalTime [new RandomVariable/Exponential] $InterArrivalTime set avg_ [expr 1/$lambda] set pktSize [new RandomVariable/Exponential] $pktSize set avg_ [expr 100000.0/(8*$mu)] set src [new Agent/UDP] $ns attach-agent $n1 $src # qu n l hng i set qmon [$ns monitor-queue $n1 $n2 [open qm.out w] 0.1] $link queue-sample-timeout proc finish {} { global ns tf $ns flush-trace close $tf exit 0 } proc sendpacket {} { global ns src InterArrivalTime pktSize set time [$ns now] $ns at [expr $time + [$InterArrivalTime value]] sendpacket set bytes [expr round ([$pktSize value])] $src send $bytes } set sink [new Agent/Null] $ns attach-agent $n2 $sink $ns connect $src $sink $ns at 0.0001 sendpacket $ns at 1000.0 finish
224
$ns run
s ph h p gi a m ph ng v cng th c. V d , v i K = 2, ta c P (loss) = 0.298 v i th i cng th c trn. V i K = 5, ta thu c k t b ng 12.2 Ch : v i K = 1, m qu tng ng l 0.131 v 0.128. Cc l nh c th hi n
ph ng khng th c hi n t t; trong tr ng h p ny t t c cc gi n u b m t
225
te lec om
d ng cc tnh nng m r ng cho v tinh. . . . . . .
227 228 228 230 230 233 235 237 239 240 240 240 241 242 243 243 244 245 247
vn
14.3. Th c hi n ph n m r ng m ph ng v tinh . . . . . . 14.3.1. S d ng cc danh sch lin k t . . . . . . . . . . . . . . . . . . . . . . . . 14.3.2. C u trc nt m ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3.3. Cc chi ti t v ng truy n v tinh. . . . . . . . . . . . . . . . . . . 14.4. Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . .
226
Ng i d ch: Trng Th Hi n Bin t p: Nguy n Nam Hong B n g c: The ns Manual, Chapter 3 [1]
Chng ny t p trung m t cc tnh nng m r ng d dng m ph ng m ng v tinh trong ns. C th , cc tnh nng m r ng ny cho php ns c th m hnh ha cc ph n sau: Cc v tinh a tnh lo i chuy n ti p (bent-pipe) truy n th ng v i a ng i dng trn cc tuy n ln v tuy n xu ng v cc tuy n khng i x ng. Cc v tinh a tnh v i cc kh i x l tn hi u trn v tinh (processing payload) g m hai lo i: ho c l kh i x l lo i khi ph c tn hi u (regenerative payload) ho c l kh i x l chuy n m ch gi hon ton (full packet switching) Cc chm v tinh LEO qu o c c nh Iridium ho c Teledesic. Nh ng m hnh v tinh ny ph n l n c nh m n vi c s d ng ns cho nghin c u v cc kha c nh c a h th ng v tinh, nh l cc giao th c MAC, l p lin k t d li u, giao th c nh tuy n, v giao th c giao v n.
227
trn b m t tri t v k t n i chng n ng truy n knh tuy n ln v tuy n xu ng c a cng m t v tinh. Tr truy n sng trong h th ng (c s khc nhau cht t v i m i ng i dng) s c m hnh ha m t cch chnh xc. Thm vo , knh tuy n ln v knh tuy n xu ng cng c th c nh ngha khc nhau ( c th l cc ki u m hnh l i khc nhau) bng thng khc nhau ho c
Cc h th ng v tinh qu o c c, ch ng h n nh h th ng Iridium v h th ng Teledesic v a c xu t c th c m hnh ha trong ns. Ngoi ra cng c cc c u hnh cho cc chm sao v tinh phi a tnh khc (v d nh chm sao Walker). Ng i dng c th pht tri n cc l p dnh cho lo i chm sao m i . Cc tham s c a cc chm sao v tinh c th m ph ng c g m c: Cc thng s c b n c a chm sao: bao g m cao c a v tinh, s l ng v
228
229
Iridium cao so v i m t n c bi n S m t ph ng qu o S v tinh trn m i m t ph ng d c (inclination)(deg) Kho ng cch gi a hai m t ph ng (deg) Chia ng phn gi i(seam)(deg) Ng ng gc ng ng (deg) ng b cng m t ph ng ng b khc m t ph ng ISLs trn m i v tinh Bng thng c a ISL Bng thng tuy n ln xu ng ISLs gi a hai m t ph ng ng c chi u Ng c v ISL (deg)
Cc ng truy n t
th c k t n i n m t knh v tinh GSL. ng truy n GSL cho v tinh GEO l khng i, trong khi ng truy n GSL cho knh LEO th nh k chuy n giao nh m t sau.
Ng ng gc ng ng thu tn hi u (elevation mask): Gc ng ng m m i ng truy n GSL c th ho t ng. Hi n nay, n u v tinh LEO ang ph c v m t thi t b u cu i m ri kh i ng ng goc ng ng ny, thi t b u cu i s tm ki m m t v tinh khc m ang n m pha trn ng ng gc ng ng. Cc thi t b u cu i v tinh xc nh th i c chuy n giao theo cc kho ng th i gian tr c trng b i m i ng i dng. M i thi t b u cu i kh i t o chuy n giao khng ng b . Cng c th nh r m t h th ng trong m i l n chuy n giao x y ra m t cch ng b trong h th ng. B ng d i y li t k cc thng s s d ng m ph ng cho h th ng Iridium v Teledesic
230
th t trn b m t tri t. C 3 lo i nt m ng khc nhau c b sung v i cng l p i t ng Sat Node nhng v i cc l p i tng khc nhau dnh v tr, qu n l chuy n giao v knh truy n. L p i t ng v tr (position objects) theo di v tr c a v trinh trn h quy chi u nh l m t hm th i gian m ph ng x y ra. Thng tin v tr ny c dng quy t nh tr truy n k t n i v x p x th i gian cho chuy n giao k t n i.
231
$ns node-config -satNodeType terminal n \ (Cc nt khc c th set n1 [$ns node] $n1 set-position $lat $lon; # tnh theo th p phn thi t l p c u hnh y)
Position/Sat/Geo: M t v tinh a tnh GEO cng c thng s c trng l v tr kinh trn xch o. Khi th i gian m ph ng tng, v tinh a tnh di chuy n qua h th ng t a v i chu k qu o gi ng nh chu k quay c a tri t. Kinh thay i t [-180; 180] . C hai lo i nt v tinh a tnh quen thu c, l GEO (cho v tinh c x l tn hi u) v "b l p geo" (cho v tinh chuy n ti p). B t o nt c th dng t o ra v tinh a tnh v i i t ng v tr g n vo nh sau: ns node-config -satNodeType geo (or geo-repeater) n (other node config commands go here...) set n1 [$ns node] $n1 set-position $lon; # in decimal degrees Position/Sat/Polar V tinh qu o c c c qu o trn theo m t ph ng qu o c nh trong h th ng t a . Tri t quay pha d i c a m t ph ng qu o ny, v v y vng ph song (footprint) c a v tinh trn b m t tri t s theo cc h ng ng - ty v b c - nam. C th hn, lo i i t ng v tr c c ny c th s d ng m hnh s chuy n ng c a b t k m t qu o trn no trong m t m t ph ng c nh. Chng ta dng thu t ng c c y b i v sau ny chng ta dng cc v tinh m hnh chm sao v tinh qu o c c. Qu o v tinh c c trng b i 6 tham s : cao so v i m t n c bi n, tr c chnh, l ch tm, gc ln ng c a i m ln (right ascension of ascending Node), d c v th i gian c n i m tri t nh t. V tinh qu o c c trong ns ch y u c qu o trn, v v y chng ta n gi n ho tnh ch t c a qu o ch cn 3 tham s : l cao so v i m t n c bi n, d c v kinh , v i tham s th t alpha c trng cho v tr ban u c a v tinh trn qu o, nh miu t d i y. cao so v i m t n c bi n tnh b ng km. d c n m trong kho ng [0; 180] , v i 90 tng ng l qu o thu n v gc l n hn 90 tng ng v i qu o ng c. i m ln (ascending node) tng ng v i v tr c a v tinh m footprint c a v tinh ngang qua xch o khi ang di chuy n t nam sang b c. Trong chng trnh m ph ng ny, kinh c a i m ln l kinh trn tri t, t i i m y (nadir point) c a v tinh i qua ng xch o khi di chuy n t nam t i b c 1 . Kinh c a i m ln n m trong kho ng [-180; 180] .
1
...
232
Tham s th t, alpha, xc nh v tr ban u c a v tinh d c theo qu o, b t u t i m ln. V d , gi tr alpha 180 ch ra r ng v tinh ang ph trn ng xch o, di chuy n t b c n nam. Alpha c gi tr t [0; 360] . Cu i cng, thng s th 5, m t ph ng, c nh ngha khi t o ra nt v tinh c c. T t c cc v tinh trong cng m t m t ph ng c a vo cng m t ch m c m t ph ng. B t o nt mang c dng t o ra m t v tinh c c v i i t ng v tr g n vo nh sau: $ns node-config -satNodeType polar n (cu l nh c u hnh nt m ng khc set n1 [$ns node] $n1 set-position $alt $inc $lon $alpha $plane y )
Giao di n truy n v nh n tn hi u ph i c k t n i n cc knh khc nhau. Khng c ch c nng ARP( giao th c phn gi i a ch ). M hnh truy n sng radio l m t m hnh cho ng i dng thm cc m hnh l i chi ti t n u c. Cc m l nh hi n t i khng dng m hnh truy n sng. Giao di n m ng c th thm vo theo cu l nh sau c a Class Node/SatNode:: $node add-interface $type $ll $qtype $qlim $mac $mac_bw $phy Cu l nh add-interface tr l i k t qu c a gi tr ch m c m c th c dng truy c p vo kh i giao di n m ng sau ny trong qu trnh m ph ng. Theo quy c, giao di n u tin c t o ra trn m t nt m ng s g n vo knh truy n tuy n ln ho c tuy n xu ng c a v tinh ho c thi t b u cu i. Tham s sau ph i c a vo: type: Ch ra lo i knh truy n, c cc lo i sau: geo ho c polar dng cho cc ng truy n t m t thi t b u cu i n GEO ho c n v tinh c c tng ng, gsl ho c gsl-repeater dng cho ng truy n t v tinh n m t thi t b u cu i, intraplane, interplane v crossseam ISLs. Tr ng type ny c dng bn trongchuwowng trnh m ph ng xc nh r cc lo i ng truy n khc nhau, nhng v m t c u trc th chng cng tng ng nhau. ll: Lo i l p ng truy n (ch c duy nh t m t l p LL/Sat).
233
234
d li u dng cho giao th c MAC nh n ( m ph ng i c gi d li u n). phy: L p v t l- hi n t i ch c hai l p v t l (l p Phy/Sat v l p Phy/Repeater) c nh ngha. L p Phy/Sat chuy n thng tin ln v xu ng cc kh i- nh m ha trong m ng khng dy miu t chng tr c, m hnh truy n d n radio c g n vo i m ny. L p Phy/Repeater truy n cc gi d li u nh n c theo ki u ng ng trn giao di n nh n truy n th ng t i giao di n truy n. M t ISL c th thm vo gi a hai nt m ng dng cu l nh sau: $ns add-isl $ltype $node1 $node2 $bw $qtype $qlim Cu l nh ny t o ra hai knh (lo i Channel/Sat), v giao di n m ng thch h p c hai
nt m ng, v g n cc knh truy n vo giao di n m ng. Bng thng c a ng truy n c t l bw. L ai ng truy n (ltype) ph i c thi t l p l lo i intraplane, interplane, ho c crossseam. M t GSL bao g m vi c them vo cc giao di n m ng v m t knh truy n trn v tinh ( i u ny thng th ng c hon thnh dng phng php ph ngoi c m t sau), v sau nh ngha giao di n ph h p trn nt truy n v tinh, nh sau: $node add-gsl $type $ll $qtype $qlim $mac $bw_up $phy n [$node_satellite set downlink_] [$node_satellite set uplink_] y, tham s type ph i l geo ho c polar, v chng ta th ng dng bi n downlink_ v uplink_ c a v tinh, do , ng truy n tuy n ln v tuy n xu ng c a v tinh ph i c t o ra tr c khi g i cu l nh ny. M c nh r ng b t o nt i v i cc nt m ng v tinh ( m t ph n 5.3 cu n The ns Manual-The VINT Project ) s t o ra cc lo i nt m ng theo lo i v tinh GEO hay polar , giao di n ng truy n tuy n ln tuy n xu ng c a chng, t o ra v g n vo knh ng truy n, d a trn vi c l a ch n giao di n c quy nh. o n m t t v g n chng vo ng
235
qu trnh m ph ng - khng kh thay i chng trnh m ph ng ho t ng theo cch nh v y. Khng c chuy n giao knh truy n no lin quan n v tinh a tnh. Nhng c hai lo i knh truy n n v tinh qu o c c c n c chuy n giao: knh truy n GSLs trong v tinh qu o c c v cc knh truy n crossbeam ISLs. Cc knh interplance khng chuy n giao nhng chng khng ho t ng cc v cao nh chng ta miu t d i y.
M i thi t b u cu i k t n i n v tinh qu o c c kh i ng b nh th i, n u qu th i h n s d n n Qu n l CHuy n giao (HandoffManager) ki m tra v tinh ny c n m trong vng ho t ng c a thi t b u cu i hay khng. Khi th qu n l chuy n giao s tch thi t b u cu i t ng truy n c a v tinh, v tm ki m d c theo ng truy n s tr m v tinh cho cc v tinh khc c th . u tin, v tinh "ti p theo trong m t ph ng qu o hi n t i c ki m tra, v tr n v tinh ny s c lu trong i t ng Position c a m i tr m v tinh c c, v c t thng s trong su t c u hnh m ph ng dng Node/SatNode cu l ch: "$node set_next $next_node. N u v tinh ti p theo khng ph h p, qu n l chuy n giao s tm ki m cc v tinh cn l i. N u tm th y m t v tinh c c thch h p th n s k t n i giao di n m ng c a n n knh truy n tuy n ln v tuy n xu ng c a v tinh, v b t u b m th i gian chuy n giao. N u khng tm th y v tinh no, n b t u b m gi v l i th l i sau . N u b t k s thay i ng k t n i no di n ra th b ph n nh tuy n s nh n c thng bo. Vng h at ng v b m kho ng th i gian chuy n giao c t thng s qua OTcl: HandoffManager/Term set elevation_mask_ 10; # theo HandoffManager/Term set term_handoff_int_ 10; # theo giy Thm vo , chuy n giao c th c th c hi n m t cch ng u nhin trnh nhi u pha b ng cch t gi tr bi n sau: HandoffManager set handoff_randomization_ 0; # 0 l false, 1 l true N u bi n handoff_randomization l true, th kho ng th i gian chuy n giao ti p theo l m t bi n ng u nhin c ch n t phn b u trong d i (0:5*_term_handoff_int_, 1.5*term_handoff_int_). Crossseam ISLs l lo i ISLs duy nh t c th c hi n chuy n giao. Tiu chu n cho chuy n giao Crossseam ISLs c t n t i m t v tnh trong m t ph ng g n khng v v tinh v tinh c c quy t nh khi no th ny g n v i v tinh cho hn m t ph ng m n ang c n i t i. M t l n n a, m t b nh th i chuy n giao ch y trong b qu n l chuy n giao chm sao v tinh c duy t cho cc c h i chuy n giao. Cc chuy n giao ki u Crossseam ISL c kh i u b i cc v tinh trong m t ph ng c s th t th p hn 2. Do , c kh
236
nng sinh ra m t i u ki n t m th i m m t v tinh c c c 2 crossseam ISLs trong (t i cc v tnh khc nhau). Kho ng th i gian gi a hai l n chuy n giao v tinh c th c t l i t OTcl v cng c th c ng u nhin ha. HandoffManager/Sat set sat_handoff_int_ 10; # theo giy Interplane v crossseam ISLs khng ho t ng khi v tinh ng t nh ng ng k t n i ny c gim st b tham s sau: HandoffManager/Sat set latitude_threshold_ 70; # theo Gi tr c a tham s ny trong v d m t ch l d on, gi tr chnh xc l c l p nh vo ph n c ng c a v tinh. Kh i qu n l chuy n giao ki m tra v v quan st th i gian tr chuy n giao v tinh c a n, n u m t ho c c cc v tinh khc n m trn v latitude_threshold_ tnh b ng ( pha b c ho c pha nam) th ng truy n khng ho t ng cho n khi cc v tinh u n m d i ng ng ny. Cu i cng, n u crossseam ISLs t n t i, s x y ra tnh hu ng ch c ch n m trong cc v tinh ko n m t v tinh khc qu g n ch ng l n ln nhau v i tham s sau: HandoffManager/Sat set longitude_threshold_ 10; # theo M t l n n a kh ng nh l i, gi tr cho tham s trong v d ny ch l suy on, n u c hai v tinh g n kinh nhau hn ng ng kinh cho tr c longitude_threshold_ th ng truy n gi a chng b ng t. Tham s ny khng th t m c nh ( t l 0), t t c cc m c nh cho cc bi n thay i lin quan gi a cc v tinh c th tm th y trong th m c ~ns/tcl/lib/ns-sat.tcl. chnh gi a v , ( n u qu o khng g n v i qu o c c ban u). Chng ta ki m tra hi n t ng x y ra cho qu o c a hai v tinh b g n i m c c, b i v yu
14.2.4. nh tuy n
nh tuy n trong m ng v tinh tng t v i nh tuy n trong ns2 c ngo i tr vi c n c th c hi n hon ton b ng C++. V i m i s thay i c a topo m ng, m t ph n t nh tuy n trung tm s xc nh tp m ng ton c c, s tnh ton cc tuy n m i cho m i nt m ng v s d ng cc tuy n ny d ng ln m t b ng chuy n ti p (forwarding table) cho m i nt m ng. Hi n nay, b ng chuy n ti p ny c duy tr b i m t ph n t nh tuy n trn m i nt m ng, v cc gi d li u khng g i n ph n t no trn nt m ng th s c g i m c nh n ph n t nh tuy n. ch nh n tin c m t ng i, b ng nh h ng ch a i m u ng truy n i tng ng. Ng i dng c c nh bo r ng lo i nh tuy n trung tm ny c th d n n vi ph m quan h nhn qu .
237
nh tuy n c trong l p SatRouteObject v c t o ra v thi hnh b ng cu l nh OTcl sau: set satrouteobject_ [new SatRouteObject] $satrouteobject_ compute_routes trong cu c g i n compute_routes c bi u di n sau t t c cc k t n i v nt m ng trong m ph ng c minh h a. Gi ng nh Scheduler, c m t tr ng h p c a SatRouteObject trong m ph ng, v n c ch p nh n b i m t bi n trung gian v d trong C++. Xt v d , cu c g i tnh l i ng i sau m t topo thay i l: SatRouteObject::instance().recompute(); Thay v s d ng nh tuy n trung tm hi n nay th thi t k c a ph n t nh tuy n trn m i nt m ng c th c hi n v i cch th c nh tuy n phn b . Cc gi d li u dng cho nh tuy n c th g i n c ng 255 c a m i nt m ng. Cha kha nh tuy n phn b lm vi c chnh xc l cho ph n t nh tuy n c quy n quy t nh ng truy n gi d li u n. i u ny c th c thi b i l p i t ng NetworkInterface trong m i lin k t, m ch c cc nhn ng truy n trn m i gi n. Hm tr gip NsObject*intf_to_target (int label) c th s d ng tr l i k t qu ph n u c a ng truy n tng ng v i m i nhn ang c. Vi c s d ng cc ph n t nh tuy n tng ng v i cc ph n m r ng c a phng th c di ng. Vi c tnh ng i nh tuy n ng n nh t dng tr truy n hi n nay nh l m t tham s nh tuy n. C th tnh ton cc tuy n b ng cch s d ng vi c m cc k t n i trn tuy n (hop count) v khng s d ng tr truy n d n. th c hi n i u ny, ta ph i t bi n m c nh sau y l false: SatRouteObject set metric_delay_ "true" V i topo m ng l n nh v d Teledesic trn th m nh tuy n trung tm s lm ch m
th i gian x l b i v n th c thi thu t ton tm ng ng n nh t trn t t c cc c p m i topo thay i th m ch c cc topo khng c d li u truy n. tng t c m ph ng khi khng c nhi u d li u truy n nhng c nhi u v tinh v ISLs, c th s d ng tnh ton tuy n theo s xu t hi n c a d li u (data driven) ch khng tnh ton tuy n theo s xu t hi n c a chuy n giao (handoff driven). V i vi c tnh ton tuy n theo s xu t hi n c a d li u, ng i c tnh ch khi c m t gi d li u g i i, v hn n a, thu t ton ng i ng n nh t t ngu n n ( ch cho nt m ng v i m t gi d li u g i i) c th c thi thay cho thu t ton tm ng ng n nh t c a t t c cc c p. Bi n OTcl c th c u hnh nh sau ( t l false m c nh) : SatRouteObject set data_driven_computation_ "false"
238
14.2.5. H tr bm v t
i t ng c bi t SatTrace (l p SatTrace c tch t l p Trace) c dng ghi l i t a a l l kinh v v c a nt m ng ang ghi d u v t ny (trong tr ng h p m t nt m ng v tinh, v v kinh tng ng v i i m th p nh t c a v tinh). V d , m t gi d li u trn m t ng truy n t nt m ng 66 n nt m ng 26 c th c ghi l i nh sau: + 1.0000 66 26 cbr 210 ------- 0 66.0 67.0 0 0 nhng trong m ph ng v tinh, thng tin v tr c g n vo nh sau: + 1.0000 66 26 cbr 210 ------- 0 66.0 67.0 0 0 37.90 -122.30 48.90 -120.94. Trong tr ng h p ny, nt m ng 66 v 37.9000 , kinh 122.3000 , trong khi nt v 48.9000 , v kinh
120.3000 (v m tng ng v i h ng nam, trong khi kinh m tng ng v i hng ty). Thm vo l p Trace/Sat/Error tm v t b t k gi d li u no b l i thng qua m t m hnh l i. Tm v t cc l i truy c p gi gi m i do l i sau, v d : e 1.2404 12 13 cbr 210 ------- 0 12.0 13.0 0 0 -0.00 10.20 -0.00 -10.00 C th x y ra m t nt m ng sinh ra m t gi m khng th truy n i (nh trong
sat-mixed.tcl). i u ny s ch ra s suy gi m trong file truy v t v i tr ng ch n t l 2, v n t n 999.00: d 848.0000 14 -2 cbr 210 ------- 1 14.0 15.0 6 21 0.00 10.00 -999.00 -999.00. i u ny ch ra r ng nt m ng 14 ang c g ng g i m t gi d li u n nt m ng 15, nhng khng th tm th y ng i thu n l i nh t. d dng tm v t t t c cc ng truy n v tinh trong m ph ng dng cu l nh before sau y minh h a cho cc nt m ng v ng truy n: set f [open out.tr w] $ns trace-all $f Sau dng dng l nh sau y sau khi t o ra t t c cc nt m ng v ng truy n (chn t t c ki u l i vo n u c th ), d dng truy v t cc ng truy n v tinh: $ns trace-all-satlinks $f c bi t, i u ny s t s bm v t xung quanh cc hng i l p lin k t d li u trong cc ng truy n v tinh s nh n c truy v t gi a l p MAC v l p lin k t d li u cho gi d li u nh n c. c kh nng truy v t ch trn m t ng truy n xc nh trn m t nt m ng xc nh th ch c th dng cu l nh sau: $node trace-inlink-queue $f $i $node trace-outlink-queue $f $i trong i l ch m c giao di n c truy v t. S b sung c a i t ng truy v t v tinh c
239
14.2.6. Cc m hnh l i
Cc m hnh l i trong ns c trnh by chng tr c. Nh ng m hnh l i ny c th c thi t l p t o ra cc gi d li u b l i theo cc hm phn b xc su t khc nhau. Nh ng m hnh l i ny n gi n v khng c n ph i tng ng v i cc l i c th c trn knh v tinh th c (c th nh knh LEO). Ng i dng c t do thi t l p cc m hnh ki u l i ph c t p hn m gi ng v i mi tr ng v tinh c th hn. M sau a ra v d cch th c thm m t m hnh l i vo m t ng truy n: set em_ [new ErrorModel] $em_ unit pkt $em_ set rate_ 0.02 $em_ ranvar [new RandomVariable/Uniform] $node interface-errormodel $em_ N s thm m t m hnh l i vo ng nh n tn hi u c a giao di n u tin c t o trn nt m ng $node (c th l gi a l p MAC v l p lin k t d li u)- giao di n u tin ni chung tng ng v i giao di n ng truy n tuy n ln v tuy n xu ng cho v tinh ho c cho thi t b u cu i ( n u ch c m t ng truy n tuy n ln ho c ng truy n tuy n xu ng t n t i). thm vo m hnh l i ny vo m t stack khc (nh ch m c b i i) th dng m l nh: $node interface-errormodel $em_ $i
14.2.8. M ph ng h tr NAM
NAM khng c h tr trong m ph ng ny.
240
241
x y ra enque "+", deque "-", and drop "d" tng ng n m t gi d li u gi ng nhau, v ch l -1 Trong cc tr ng h p t x y ra, c th c cc b n tin c nh bo trong su t qu trnh th c hi n bi u th vi c "n m ngoi ph m vi c a nt m ng". i u ny c th x y ra n u m t nt m ng b t k t n i trong topo v sau m t nt m ng khc g i m t gi d li u n . V d , wiredRouting trong file ...ns/tcl/ex/sat-mixed.tcl. i u ny x y ra b i v b ng nh tuy n c kch th c thay i ph thu c vo s thay i c a topo m ng. N u m t nt m ng b t k t n i n s khng c b t c s ti p nh n c chn vo b ng nh tuy n.( v do b ng nh tuy n khng th tng ln ph h p v i s nt m ng). C nh bo ny khng nn tc ng n u ra truy v t th c. Khng c s tng tc no v i cc m v tuy n ho c IP di ng.
14.2.10. Cc t p l nh v d
Cc t p l nh v d ny c th tm th y trong th m c ...ns/tcl/ex, bao g m: sat-mixed.tcl: M ph ng c hai lo i v tinh c c v v tinh a tnh. sat-wired.tcl: tng t nh t p l nh tr c, nhng n ch ra cch k t n i cc nt m ng h u tuy n trong m ph ng v tinh. sat-repeater.tcl: bi u th cch s d ng n gi n c a v tinh a tnh lo i chuy n ti p, bao g m c cc m hnh l i. sat-aloha.tcl: m ph ng m t trm thi t b u cu i trong c u hnh v tinh VSAT dng giao th c MAC aloha khng khe c m v i m t v tinh a tnh chuy n ti p. Thi t b u cu i l ng nghe knh truy n c a chng ( sau m t kho ng tr ) v n u n khng nh n c gi d li u c a n v i m i kho ng th i gian tr , n s th c hi n c ch back-off theo hm m v sau truy n l i gi d li u.T n t i ba hm khc nhau: basic, basic_tracing, v poisson, cc hm khc nhau ny c miu t u m i ch thch c a t p l nh. sat-iridium.tcl: M ph ng chm sau LEO v i tham bi n tng t chm sao c a Iridium ( t p l nh h tr l sat-iridium-links.tcl, sat-iridium-linkswithcross.tcl, v sat-iridium-nodes.tcl) _at-teledesic.tcl: M ph ng chm sao LEO c knh truy n r ng v i tham s tng t nh ng xu t cho chm sao v tinh 288 Teledesic ( cng h tr cc t p l nh l sat-teledesic-links.tcl v sat-teledesic-nodes.tcl). Thm vo , c m t t p l nh ki m tra tnh ph h p nhi u c u hnh m t cch ng th i, c th tm th y th m c ...ns/tcl/test/testsuite-sat.tcl.
242
14.3. Th c hi n ph n m r ng m ph ng v tinh
M chng trnh c a ph n m r ng m ph ng v tinh c th tm th y th m c ...ns/sat.h, sathandoff.cc,h, satlink.cc,h, satnode.cc,h, satposition.cc,h, satroute.cc,h, sattrace.cc,h, and ns/tcl/lib/ns-sat.tcl. H u h t chng c th c hi n trong C++. Trong ph n ny, chng ta t p trung vo b n thnh ph n chnh c a s th c hi n g m: tn, danh sch lin k t, ki n trc nt v "detailed look" t i ki n trc lin k t v tinh
243
Hnh 14.4 cung c p m t gi n li t k cc cch th c t ch c k t n i c s p x p. M i i t ng trong danh sch li t k c k t n i qua "LINK_ENTRY" c thnh vin c b o v c a l p. Cc l i vo ny ch a con tr ch n cc thnh ph n trong danh sch v m t con tr n a nh a ch c a con tr next pha tr c i t ng c tr c.
14.3.2. C u trc nt m ng
Hnh 14.5 l m t gi n li t k cc thnh ph n thi t b chnh c a m t SatNode. C u trc ny c s tng ng v i MobileNode trong ph n m r ng m ng khng dy, nhng cng c m t vi khc bi t. Gi ng nh cc nt m ng ns, SatNode c m t i m entry n m t lo t cc "classifiers". "Classifier" cho a ch bao g m m t b ng nh tuy n cho gi d li u truy n th ng n nt ngoi m ng. Nhng v nh tuy n OTcl khng c s d ng, t t c cc gi d li u khng dnh ring cho nt m ng ny (v do s truy n th ng n phn lo i c ng), s c gi n ch m c nh. Gi d li u dnh cho nt m ng c ng 255 c phn lo i nh gi d li u nh tuy n v truy n th ng n ph n t nh tuy n. M i nt m ng ch a m t ho c nhi u network stack bao g m m t SatLinkHead chung t i i m entry c a ng truy n. SatLinkHead c dng nh m t API l y m t i t ng khc trong c u trc ng truy n, v v y n ch a m t s con tr ( m c d y API cha hon thnh). Gi d li u khi r i kh i "network stack" th c tr ng iface_ trong ph n tiu c a gi d li u c m v i ch s NetworkInterface duy nh t tng ng v i m i ng truy n. Gi tr ny c th s d ng h tr nh tuy n phn tn nh miu t d i. Ph n t nh tuy n c b n l SatRouteAgent; n c th s d ng dung v i nh tuy n trung tm. SatRouteAgent ch a b ng nh h ng th ng n phn tch a ch c a gi d li u n ch LinkHead c th - n l m t nhi m v c a SatRouteObject c tr ny chnh xc. SatRouteAgent thm cc tr ng nh t nh g i gi d li u xu ng n ng truy n thch h p. th c hi n m t giao th c nh tuy n phn tn, m t SatRouteAgent m i c nh ngha, i u ny s h c v topo b ng cch nh d u ch s giao di n trong m i gi d li u nh n n ngn x p, m t hm tr gip trn nt m ng intf_to_target() cho php n phn tch m t gi tr ch s n m t LinkHead c th . C nhi u con tr n ba i t ng thm vo trong m t SatNode. u tin, m i SatNode ch a m t LinkHandoffMgr i u khi n t n d ng c h i chuy n giao v ngang hng chuy n giao. Nt m ng v tinh v nt m ng thi t b u cu i m i ci c phin b n LinkHandoffMgr thi t k ring. Cu i cng, s cc con tr n i t ng ch a trong m t SatNode. Chng ta th o lu n linklisthead_ v nodehead_ trong ph n trn. Con tr uplink_ v downlink_ c dng m t cch thu n ti n gi nh r ng trong h u h t cc m ph ng, m t v tinh ho c m t b ng tiu c a gi d li u v sau
244
Cc gi d li u r i kh i m t nt m ng s truy n th ng n SatLinkHead n i t ng c a class SatLL. L p SatLL thu c l p lin k t d li u LL.Giao th c l p lin k t d li u (nh giao th c ARQ) c th c nh ngha y. SatLL hi n t i s c p a ch MAC n gi d li u. Ch r ng trong tr ng h p v tinh, chng ta khng dng giao th c phn gi i a ch (ARP); thay vo , chng ta ch n gi n dng bi n MAC index_ nh a ch
In the authors opinion, all network stacks in ns should eventually have a LinkHead object at the front the class SatLinkHead would then disappear
2
245
c a n, v chng ta s d ng ch c nng tr gip tm a ch MAC c a giao di n tng ng c a nt m ng b c truy n ti p theo.B i v l p lin k t d li u LL xu t pht t l p LinkDelay, tham s delay_ c a LinkDelay c th dng m hnh ha b t c tr x l trong l p lin k t d li u, v i gi tr m c nh tr ny l khng.
246
Ti p theo, gi d
t ng ny v a g i gi n knh truy n c g n vo. Chng ta c gi thi t r ng t t c cc giao di n g n vo knh l m t ph n c a danh sch lien k t cho knh . i u ny tuy nhin khng ng v i giao di n truy n. Ch giao di n nh n c g n vo m t knh bao g m danh sch ng truy n ny, t ch c giao di n nh n nh n c b n sao c a gi d li u truy n. Vi c s d ng giao di n truy n v nh n ring r ph n nh trung th c cc ng truy n v tinh song cng c t o ra b i knh RF cc t n s khc nhau.
Gi d li u i c g i ti p n m t SatChannel, m n s sao gi d li u n m i giao di n nh n ( ho c l p SatPhy) trn m i knh. Phy_rx g i gi d li u n l p MAC. t il p MAC, gi d li u c gi trong su t th i gian truy n c a n ( v b t c s pht hi n xung t no c tm th y s c thi hnh n u l p MAC, nh l Aloha MAC, h tr n).N u m t gi d li u n l p MAC an ton, n s truy n ti p n m t i t ng ErrorModel, n u n t n t i. N u khng th gi s chuy n qua b t c i t ng truy v t nh n no n i t ng SatLL . i t ng SatLL truy n gi n sau tr x l ( nh c l i r ng theo m c nh, gi tr cho delay_ l b ng 0). Gi d li u nh n s t i i t ng cu i cng m i t ng ny thu c v l p NetworkInterface. i t ng ny thm nhn iface_field vo tiu chung cng v i gi tr ch m c ring c a ngn x p m ng. i u ny c dng th c hi n bm v t xem ngn x p m ng no m m t gi d li u t i. Gi d li u ny sau s t i u vo c a SatNode (th ng l b phn lo i a ch ). Cc ngn x p m ng (network stacks) c a v tinh lo i l p- a tnh ch bao g m m t Phy_tx v m t Phy_rx thu c v l p Repeater-Phy, v m t SatLinkHead. Cc gi d li u nh n b i Phy_rx c g i t i Phy_tx v i tr b ng khng. V tinh lo i l p- a tnh l m t nt v tinh pht l i. N khng c cc b ph n nh bm v t, qu n l chuy n giao, nh tuy n ho c b t k giao di n ng truy n no khc ngo i tr giao di n chuy n ti p.
$ns_ node-config -llType <type> $ns_ node-config -ifqType <type> $ns_ node-config -ifqLen <length> $ns_ node-config -macType <type>
247
$ns_ node-config -channelType <type> $ns_ node-config -downlinkBW <value> (ch r ng Geo SatNodeType lo i l p- a tnh ch yu c u nh r lo i knh, cn t t c cc l a ch n khc khng c quan tm n. Hy tham kh o v d trong tcl/ex/satrepeater.tcl.) $ns_ satnode-polar <alt> <inc> <lon> <alpha> <plane> <linkargs> <chan> y l m t phng php bao b c wrapper method dung trong m ph ng t o ra m t nt m ng v tinh c c. Hai ng truy n ln v xu ng, c t o ra v i hai knh truy n, knh ln v knh xu ng. <alt> l v c a v tinh c c, cn <inc> l gc nghing di chuy n theo ng xch o w.r.t, <lon> l kinh c a i m ln ascending node, <alpha> a ra v tr ban u c a v tinh d c theo qu o ny, <plane> nh ngha m t ph ng qu o v tinh c c ny. <linkargs> l danh sch cc l a ch n bi n ng truy n nh ngha giao di n m ng ( gi ng nh LL< Qtype,Qlim,Phy, MAC,v.v) $ns_ satnode-geo <lon> <linkargs> <chan> y l phng php bao b c t o ra nt m ng c a b l p v tinh a tnh GEO, u tin t o ra m t nt m ng v tinh cng v i hai giao di n ng truy n (tuy n ln v tuy n xu ng) v hai knh v tinh (knh ln v knh xu ng). <chan> nh ngha lo i knh $ns_ satnode-geo-repeater <lon> <chan> y l phng php bao b c t o ra nt m ng c a b l p v tinh a tnh GEO, u tin t o ra m t nt m ng v tinh cng v i hai giao di n ng truy n (tuy n ln v tuy n xu ng) v hai knh v tinh (knh ln v knh xu ng). $ns_ satnode-terminal <lat> <lon> Cn y l phng php bao b c t o nt m ng c a thi t b u cu i. <lat> v <lon> nh ngha kinh v v tng ng c a thi t b u cu i. $ns_ satnode <type> <args> y l m t phng php nguyn th y t o ra lo i satnodes <type> c th l c c, a tnh, ho c thi t b u cu i. l: $satnode add-interface <type> <ll> <qtype> <qlim> <mac_bw> <phy> y l m t phng php n i b c a Node/SatNode ci t cho l p lin k t d li u, l p MAC, hng i giao di n v c u trc l p v t l cho cc nt m ng v tinh. $satnode add-isl <ltype> <node1> <node2> <bw> <qtype> <qlim> Phng php ny t o ra ISL ( ng truy n v tinh n i b ) gi a hai nt m ng. Lo i ng truy n (inter, intra, ho c crossseam), d i thng c a ng truy n, lo i hng i v gi i h n hng i u c nh r. $satnode add-gsl <ltype> <opt_ll> <opt_ifq> <opt_qlim> <opt_mac> <opt_bw> <opt_phy> <opt_inlink> <opt_outlink> Phng php ny t o m t GSL ( ng truy n
248
t m t t t i v tinh). u tin, m t stack m ng c t o ra nh ngha b i LL, IfQ, Qlim, MAC, BW, v l p PHY. Ti p theo nt m ng c g n vo knh truy n ln v knh truy n xu ng.
249
Ti li u tham kh o
[1] The VINT Project. The ns Manual(formerly ns Notes and Documentation), April 15, 2006 [2] Eitan Altman, Tanima Jimnez. NS Simulator for beginners , Lecture Note, 2003 2004 [3] Mrc Greis. Tutorial for the Network Simulator "ns", URL: www.isi.edu/nsnam/ns/tutorial/ [4] Gaeil Ahn and Woojik Chun. Design and Implementation of MPLS Network Simulator [5] TCL web page. http://otcl-tclcl.sourceforge.net/tclcl/ [6] Christian Huitema. Routing in the Internet, Prentice Hall, April 1995. 2nd Edition 1999 [7] A.Ballardie Core Based Trees (CBT) Multicast Routing Architecture, Internet RFC 2201 (Experimenatal), September1997 [8] D. Thaler, D.Estrin, D.Meyer(Editor). Border Gateway Multicast Protocol (BGMP): Protocol Spection,Internet Draft, November 2000 [9] S.Deering, D.Estrin, D. Farinacci, V.Jacobson, Ching-Gung Liu, and L Wei. An architecture for wise-area multicast routing.Technical Report USC-SC-94-565, Computer Science Department, University of Southern Clifornica, Los Angeles, CA 90089, 1984 [10] Floyd, S., and V. Jacobson. V.1 N.4, Random August Early 1993, p. Detection 397-413. gateways Available for at
Congestion
Avoidance
http://www.icir.org/floyd/papers/red/red/html [11] A. Ballardie. Core Based Trees (CBT) Multicast Routing Architecture Internet RFC 2201 (Experimental), September 1997 [12] S. Floyd, R. Gummadi and S. Shenker. Adaptive Red: an algorithm for increasing the robustness of REDs active queue management. Submitted
250
[13] E. Altman and T. Jimnez. Simulation analysis of RED whit short lived TCP connections. submitted [14] P. Pieda, J. Ethridge, M.Baines and F. Shallwani. A network simulator differentiated serices implementation. Open IP, Nortel Networks, July 26, 2000. [15] W. Noureddine and F. Tobagi. Improving the Performance of Interactive TCP Applications using Service Differentiation. Proceeding of IEEE infocom, New-York, USA, June 2002 [16] D. D Clark and W. Fang. Explicit Allocation of Best-E ort Packet Delivery Service. IEEE/ACM Trans on Networking, 6(4), 362-372, August 1998 [17] W, Gang, N. Seddigh and B. Nandy . A Time Sliding Window Three Colour Marker(TSWTCM), RFC 2589. [18] J. Heinanen andd R. Guerin. A tow rate three color marker. RFC 2698 Sept 1999 June 2000
251
252
Trao i cc v n nghin c u qua mailing list, qua di n n trn vntelecom T ch c cc seminar, cc bu i g p g trao i ki n th c Th c hi n cc d n chuyn mn 4. Quy nh Cc thnh vin tham gia mailling list v i t cch c nhn cng v i vi c cung c p cc thng tin t i thi u v b n thn nh tn, gi i tnh, trnh , ni cng tc t i cc thnh vin khc
254