Professional Documents
Culture Documents
H Ni 12 - 2009
Ni dung trong ti liu ny c ly t mt s sch tham kho v cc bi bo khoa hc. Vic thc hin ti liu ny l Phi Li Nhun nn chng ti khng tin hnh cc th tc v bn quyn. Nu c nhn/t chc no sao chp ni dung ti liu ny vo cc sn phm thng mi th trch nhim thc thi vn bn quyn thuc v c nhn/t chc . y l mt ti liu min ph. Bn hon ton c th phn phi li cho nhng ngi s dng khc hoc c th chnh sa cho ph hp. Ti liu ny c pht hnh vi hy vng rng n s tr nn hu ch, nhng n KHNG KM THEO BT K S BO M NO, ngay c nhng m bo ngm hiu v vic thng mi ho hay phi ph hp vi mt ch c th no (vn ny bn c th tham kho giy php GNU General Public License bit thm chi tit) Ti liu ny c ti tng hp v nh dng li t cc bn dch. Trong qu trnh nh dng, ti c gng sa cc li nh: tham chiu cc phn, li chnh t, thiu du ... nhng c th cn b st. Trong trng hp bn c pht hin c li, cc bn hy gi th v a ch cui ti liu ny. Cc li ny s c sa i trong phin bn k tip
One Edition
Xin c trch dn mt cu trong cun sch "The Last Lecture", tc gi cun sch lm vic ti trng i hc Carnegie Mellon (CMU). L do trch dn xin mi bn c tm hiu ...!
"... Chng ta khng i c nhng qun bi chia, ch c th i cch chi nhng qun bi ..."
The Last Lecture by Randy Pausch Carnegie Mellon University
Li ni u
K t khi ban qun tr din n vntelecom.org thnh lp nhm AdNet cho ti nay c hn mt nm. T khi thnh lp nhm pht ng d n NETSIM D n bin tp ti liu m phng bng ting Vit. n thng 04/2009 nhm hon thnh tp mt ca d n, ti liu c tn l - "L thuyt chung v m phng". Tp mt c cng b chnh thc trn din n vntelecom.org. Sau khi hon thnh tp mt, nhm tip tc pht trin d n vi mc tiu l hon thnh tp hai: M phng trong NS-2. Sau nhiu ln tr hon v nhng l do khc nhau, n thng 12-2009 nhm hon thnh tp hai. tp mt chng ti bin dch v gii thiu vi bn c nhng khi nim tng quan trong m phng. Nhng khi nim v nh gi hiu nng, cc li thng gp khi m phng, cc k thut m phng, nguyn l v m phng, gii thiu v m phng ri rc trong h thng mng my tnh v mng vin thng. Ngoi ra cn cp n vic so snh v nh gi cc chng trnh m phng ph bin hin nay. Nh vy, ni dung trong tp mt l nn tng nhng ngi quan tm n lnh vc m phng c th tm hiu. ng thi n l c s bn c tm hiu cc vn c cp trong tp hai. Nhng vn ny thng hay b b qua i vi nhng ngi mi tm hiu. Trong tp hai, chng ti gii thiu vi bn c mt b cng c m phng c th - l b cng c m phng NS-2-allinone. Trong ti liu ny gi tt l NS-2. L do chng ti chn NS-2 n gin l y l b m phng m ngun m, min ph vi ngi dng. N l b cng c m phng mnh, c cng ng mng s dng ph bin khp ni trn th gii, thm ch c nhng din n chuyn v chng. B m phng ny ph hp vi cc i tng sinh vin, nghin cu sinh. Thng tin chi tit c trnh by chng 1 ca cun ny.
Mc ch ca vic dch ti liu xy dng ni dung cho tp hai, chng ti la chn v bin dch t cc ti liu [1] [2] [3] [4], y l nhng ti liu khng th thiu c vi nhng ai ang v s tm hiu v m phng. S d nhm tin hnh d n bin dch ny l ph bin NS-2 ti cc bn sinh vin, cc nghin cu sinh.... Ngoi ra cc bn mi tm hiu 4
v c nh tm hiu rt ngn c thi gian tip cn. m bo tnh chnh xc v cc vn bn quyn, chng ti a thng tin v ngun gc ca bn gc bn c la chn dch u mi chng. Nu cm thy cha an tm vi bn dch cc bn c th tham kho trc tip cc bn gc.
Ni dung cc chng trong tp hai T chng 1 ti chng 4 gii thiu tng quan v NS2, cc thnh phn trong NS2, gii thiu v hai ngn ng chnh c s dng trong NS-2 l TCL v C++, m t v file vt sau khi chy m phng. . Hiu v nm chc cc phn ny bn c s s dng NS-2 c tt hn. cc bn mi tm hiu hng th hn vi NS-2, chng ti trnh by trong chng 5 mt tutorial hng dn bn c c th to c mt chng trnh n gin u tin. c bit, chng 5 cn cung cp m ngun ca cc chng trnh mu, bn c c th ti v, chy th v quan st kt qu. Chng 6, 7, 8,9 cung cp cho bn c kin thc v cc k thut m t v giao thc truyn ti TCP, UDP, m t v TCP/IP trong NS, loi b ngu nhin sm. y l cc k thut c bn p dng vo mt chng trnh c th. T chng 10 n chng 14 gii thiu vi bn c chi tit hn v cc m-dun m phng ph bin. Ni dung ca tng chng c tp trung lm sng t cc vn t l thuyt cho n lc p dng vo m hnh m phng. Ni dung cc chng ny c th ni mc nng cao hn, ph hp vi nhng sinh vin nm cui. Nhng ngi lm ti tt nghip c th tham kho phc v cho bo co ca mnh. in hnh l: Chng 10: M phng mng LAN. Chng 11: M phng MPLS [4] Chng 12: M phng hng i. Chng 13: M phng trong mng di ng. Chng 14: M phng mng v tinh. Vi hn 200 trang ti liu, khng qu di m cng khng qu ngn. Nhm bin son hi vng s cung cp cho bn c nhng trang ti liu b ch. Da vo y bn c c th tip cn, k tha, pht trin v sng to ra cc kch bn m phng. Nu kh nng c th vit c cc m-dun da trn NS2. to ra ti liu ny cc nhm lm vic s dng nhng tin ch c cung cp trn mng internet, gn kt v lin lc vi nhau. Cc nhm c t chc theo quy trnh: la chn ti liu, dch, bin tp, nh dng v xut bn. Thng tin nhm cc bn c th tham kho phn cui cng ca ti liu. 5
Vi tinh thn t nguyn, ch ng v khng ngng hc hi gip chng ti hon thnh ti liu ny. Sn phm ny l cng sc chung ca c nhm, nhn y ban bin tp chn thnh cm n s cng tc ca cc c nhn, cc sinh vin, cc thy c t cc trng i hc, ng thi xin c gi li cm n ti ban qun tr din n vntelecom.org to ra sn chi ny, y l mt sn chi thc s b ch vi nhng ngi quan tm n lnh vc mng vin thng ni ring v truyn thng ni chung. Cun sch ny c thnh vin trong nhm NETSIM nh dng v hiu chnh. Trong qu trnh lm vic c gng ht kh nng th hin ti liu c khoa hc nht, trong qu trnh nh dng chnh sa li cc phn tham kho, cc ch thch theo bn gc, mt s ch ngi dch khng a vo bn dch. Do khi c ti liu ny cc bn c th tham kho cng vi bn gc nu c kh nng Anh vn tt. c bit, vic thng nht cc thut ng rt cn bn c v nhng ngi c kinh nghim gp thm. Trong phin bn ti, nhm s b sung cc thiu st (thut ng, li chnh t, c php cu, vit ha hnh nh . . . ), b sung cc m-dun m phng WiMax, m phng WDM, m phng SDR. . . Vic ci t NS-2 c rt nhiu ti liu v hng dn bng ting Vit cc bn c th tham kho t mng internet, chng ti khng a vo trong ti liu ny.
Mi kin ng gp bn c c th gi v th in t ca nhm: adnet@ vntelecom. org ban bin tp s tip nhn, sa cha v b sung kp thi. Ngy 26 thng 2 nm 2010 Tc gi
Mc lc
Li ni u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mc lc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Danh sch hnh v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Danh sch bng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nhng t vit tt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 1. Gii thiu v NS-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1. Khi nim tng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Tng quan v m ngun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Lp Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1. t c mt tham chiu vi v d v lp Tcl . . . . . . . . . . . . . . . . . . . . . 1.3.2. Dn chng v cc th tc ca OTcl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3. Truy nhp cc kt qu n/t trnh thng dch . . . . . . . . . . . . . . . . . . . . 1.3.4. Thot v bo co li . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.5. Cc hm hash trong trnh thng dch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.6. Cc hot ng khc trn trnh thng dch . . . . . . . . . . . . . . . . . . . . . . . . .
4 7 16 18 19 21 22 23 24
24 25 26 26 27 27
1.4. Lp TclObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1. To v hu cc TclObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.2. S rng buc bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.3. Bm vt bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.4. Cc phng thc command: nh ngha v gi ra . . . . . . . . . . . . . . . . . .
28
29 31 33 35
1.5. Lp TclClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1. Lm th no rng buc cc bin thnh vin lp C++ tnh . . . . . .
37
39
1.6. Lp Tcl Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7. Lp EmbeddedTcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.8. Lp InstVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 2. C bn v TCL v OTCL . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1. Tng quan v NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Lp trnh Tcl v Otcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 3. Cc thnh phn c bn trong b m phng NS . . . . . . 3.1. Khi to v kt thc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. nh ngha mt mng cc lin kt v cc nt . . . . . . . . . . . 3.3. Tc nhn v ng dng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1. FTP trn nn TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. CBR qua UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. UDP vi cc ngun lu lng khc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41 43 44 46 46 47 53 54 56 58
59 60 61
61 65 67
67 67
69
70 70
Chng 4. Lm vic vi file trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1. X l file d liu vi cng c awk . . . . . . . . . . . . . . . . . . . . . . 4.2. S dng grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. X l cc file d liu vi perl . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. V th vi gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5. V th vi xgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73 74 75 76 78 79
4.6. Trch tch thng tin trong mt kch bn tcl . . . . . . . . . . . . . 4.7. Minh ha mt s file awk v gnuplot . . . . . . . . . . . . . . . . . . .
4.7.1. Tnh thng lng ca mng theo hai kiu file trace . . . . . . . . . . . . . . . . 4.7.2. Mu v th thng lng va tnh xong bng file awk . . . . . . . . . . . .
80 80
80 82
4.8. Mt s file hnh plot v bng gnuplot . . . . . . . . . . . . . . . . . . . Chng 5. NS Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1. Kch bn Tcl u tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1. Bt u nh th no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2. Hai node, mt lin kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3. Gi d liu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82 84 84
85 86 87
88
88 89 91 91
92
93 94
96 97
97 97 99 99 100
6.2. Qu trnh bm vt v phn tch v d Ex1.tcl . . . . . . . . . . 6.3. TCP trn lin kt nhiu v vic gim st hng i . . . . . 6.4. To nhiu kt ni vi cc c tnh ngu nhin . . . . . . . . . 6.5. Cc kt ni TCP ngn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.6. Cc cng c gim st tin tin: . . . . . . . . . . . . . . . . . . . . . . . . 6.7. Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 7. nh tuyn v mng di dng . . . . . . . . . . . . . . . . . . . . . . . 7.1. Bt u nh th no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2. Mng ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3. Cc giao thc nh tuyn multicast (PIM) . . . . . . . . . . . . .
7.3.1. Ch Dense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.2. nh tuyn da trn im RP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
132
135 136
7.5. Kho st m phng pimdm.tcl . . . . . . . . . . . . . . . . . . . . . . . . 7.6. Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 8. Loi b ngu nhin sm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1. M t RED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2. Thit t cc tham s RED trong ns . . . . . . . . . . . . . . . . . . 8.3. Cc v d v m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1. B m loi Drop-Tail (B ng ui) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.2. B m RED vi cu hnh tham s t ng . . . . . . . . . . . . . . . . . . . . . . 8.3.3. B m RED vi cc tham s khc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4. Gim st cc lung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5. Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 9. Cc dch v phn bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1. M t chuyn tip c m bo ca Diffserv . . . . . . . . . . . . 9.2. Cc router MRED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.1. M t chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.2. Cu hnh MRED trong ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.3. Truy vn TCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
166
166 167
168
168
9.5. Kt qu m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6. Tho lun v kt lun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7. Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 10. M phng mng LAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1. C s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2. M phng mng LAN vi ns: . . . . . . . . . . . . . . . . . . . . . . . . . Chng 11. M phng mng cho MPLS (MNS) . . . . . . . . . . . . . . . 11.1. Gii thiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Gii thiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.1. Mc ch v phm vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.2. M hnh khi nim ca MNS h tr QoS . . . . . . . . . . . . . . . . . . . . . . . .
187
187 188 189 190 190
11.4. Cc v d m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.1. M phng lu lng QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.2. M phng s u tin trc ti nguyn . . . . . . . . . . . . . . . . . . . . . . . . . . .
191
191 192
11.5. Kt lun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
193
11
195 197
197 198 198 199
200
200 201
12.3. nh dng file vt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4. Phn tch kt qu m phng . . . . . . . . . . . . . . . . . . . . . . . . . 12.5. So snh vi nh tuyn ad-hoc khc . . . . . . . . . . . . . . . . . .
12.5.1. TCP qua DSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.2. TCP qua AODV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.3. TCP qua TORA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.4. Mt vi bnh lun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
211
211 213 216 219
Chng 13. Hng i c in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.1. M phng hng i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2. Hng i hu hn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chng 14. Mng v tinh trong NS . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.1. Tng 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 thp) . . . . . . . . . . . . . . . . . . . .
12
230
230 233 235 237 239 240 240 240 241 242
243
243 244 245
14.4. Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ti liu tham kho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Thng tin nhm bin son . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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 lng kt ni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.11 Bng thng c s dng trong giai on nghn 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 tuyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 V d v nh tuyn multicast . . . . . . . . . . . . . . . . . . . . . . . . 133 Thit lp mng cho vic nghin cu RED . . . . . . . . . . . . . . . . . . 144 S tng kch thc hng i . . . . . . . . . . . . . . . . . . . . . . . . . 148 Kch thc ca s ca tt c cc phin kt ni TCP . . . . . . . . . . . . 148 S tin trin ca kch thc hng i trung bnh tc thi . . . . . . . . . 149 S tin trin ca kch thc hng i trung bnh tc thi phng to . . . 149 Kch thc ca s ca tc c cc phin kt ni TCP cho b m RED vi cc cu hnh tham s t ng . . . . . . . . . . . . . . . . . . . . . . 150 S thay i v kch thc hng i . . . . . . . . . . . . . . . . . . . . . 154 Kch thc hng i ca tt c cc phin kt ni cho b m RED . . . 154 S tin trin ca kch thc hng i v gi tr trung bnh ca n . . . . 161
8.10 S tin ha ca kch thc hng i v gi tr trung bnh ca n c phng to) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 8.11 S cc phin kt ni tch cc theo thi gian . . . . . . . . . . . . . . . . . 161 9.1 9.2 Topo mng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 S tin ha ca tng s phin . . . . . . . . . . . . . . . . . . . . . . . . 178
10.1 V d mng LAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 11.1 M hnh khi nim ca MNS . . . . . . . . . . . . . . . . . . . . . . . . . 187 11.2 Kin trc nt MPLS vi chuyn mch nhn . . . . . . . . . . . . . . . . 188 11.3 X l lu lng QoS MPLS ca nt v link MPLS . . . . . . . . . . . . . 189 11.4 Qu trnh ginh trc ti nguyn ca nt v link MPLS . . . . . . . . . 189 11.5 Mc lp trong MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 11.6 Mng MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 11.7 M lp lch s kin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 11.8 S bin i lu lng bng thng . . . . . . . . . . . . . . . . . . . . . . 192 11.9 M lp lch s kin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 11.10Kt qu ca m lp lch s kin . . . . . . . . . . . . . . . . . . . . . . . 193 12.1 V d v mt mng ad-hoc 3 im . . . . . . . . . . . . . . . . . . . . . . 201
15
12.2 Kch thc ca s TCP trong kch bn 3 nt mng vi giao thc nh tuyn DSDV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 12.3 Kch thc ca s TCP trong kch bn 3 nt mng vi giao thc nh tuyn DSDV vi kt ni qua v khng qua trung gian) . . . . . . . . . . 208 12.4 TCP trong kch bn 3 nt mng vi giao thc nh tuyn DSDV, thi im 124.14 giy, kt ni trc tip . . . . . . . . . . . . . . . . . . . . . . 208 12.5 TCP trong kch bn 3 nt mng vi giao thc nh tuyn DSDV, thi im 58 giy, kt ni qua 1 trung gian . . . . . . . . . . . . . . . . . . . 208 12.6 Kch thc ca s ca kt ni TCP qua DSR . . . . . . . . . . . . . . . . 209 12.7 Kch thc ca s ca kt ni TCP qua AODV . . . . . . . . . . . . . . 209 12.8 Kch thc ca s ca kt ni TCP qua TORA vi 4 nt mng . . . . . . 210 12.9 TCP qua AODV vi gi tr ln ca kch thc ca s ln nht . . . . . . 210 12.10TCP qua TORA vi 4 nt mng, im thi gian 33 . . . . . . . . . . . . 211 12.11TCP qua Tora vi 4 nt mng. im thi gian 56 . . . . . . . . . . . . . 211 12.12Chui topo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 12.13S gi tin/giy i vi n = 9 nh mt chc nng ca kch c ca s ln nht216 12.14S gi tin/giy i vi n = 20 nh mt chc nng ca kch c ca s ln nht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 12.15: S gi tin/giy i vi n = 30 nh mt chc nng ca kch c ca s ln nht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 12.16Tin trnh ca kch thc ca s cho TCP chun vi kch thc ca s ln nht l 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 12.17Tin trnh ca kch thc ca s cho DelAck TCP vi d = 3 v kch thc ca s ln nht l 2000 . . . . . . . . . . . . . . . . . . . . . . . . 217 12.18Tin trnh ca kch thc ca s cho TCP chun vi 9 nt mng v kch thc ca s ln nht l 3 . . . . . . . . . . . . . . . . . . . . . . . 218 12.19Tc ng ca khong thi gian tr ACK ti s gi tin TCP gi c, nh l mt chc nng ca kch thc ca s ln nht. d=3 . . . . . . . . 218 13.1 S m rng kch c ca hng i M/M/1 . . . . . . . . . . . . . . . . . . 223 14.1 V d ca mt chm sao LEO qu o cc . . . . . . . . . . . . . . . . . 229 14.2 H thng ta hnh cu dng cc nt mng v tinh . . . . . . . . . . . 231 14.3 Cc thnh phn chnh ca giao din mng v tinh . . . . . . . . . . . . . 234 14.4 B sung danh sch ng truyn trong ns . . . . . . . . . . . . . . . . . 243 14.5 Cu trc ca lp SatNode . . . . . . . . . . . . . . . . . . . . . . . . . . 245 14.6 Chi tit c t ngn xp giao din ca mng . . . . . . . . . . . . . . . . 246
16
17
Kch tcl shortRed.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 on m Diffs.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Bo v cc gi tin d b tn thng nh mt hm ca CIR . . . . . . . . 177 Thi gian trung bnh ca mt phin theo hm CIR . . . . . . . . . . . . 177
12.1 Kch bn "wrls-dsdv.tcl" cho TCP ttrn mt mng ad-hoc . . . . . . . . 207 12.2 Kch bn tcpwD.tcl cho TCp qua mt mng ad-hoc tnh vi chui topo . 215 12.3 S lng gi tin gi c trong khong thi gian 149 giy vi n=3 nh mt chc nng ca kch thc ca s ln nht . . . . . . . . . . . . . . . 219 13.1 Kch bn tcl mm1.tcl m phng hng i MM1 . . . . . . . . . . . . . 222 13.2 Kch bn tcl mm1k.tcl m phng hng i MM1. . . . . . . . . . . . . . 225
18
Nhng t vit tt
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
Ngi dch: Nguyn Quc Huy Bin tp: H Tt Thnh. Bn gc: The ns Manual, Chapter 3 [1]
Ti sao li l hai ngn ng? NS s dng hai ngn ng bi v b m phng c hai kiu cng vic khc nhau cn phi lm. Mt mt, m phng chi tit cc giao thc yu cu mt ngn ng lp trnh h thng c th thao tc mt cch hiu qu n cc byte, cc tiu gi, v cc thut ton trin khai m c th chy trn mt tp d liu ln. Vi nhim v ny th tc chy chng trnh v thi gian xoay vng (gm chy m phng, tm li, sa li, bin dch li, chy li) l t quan trng hn. Mt khc, mt phn ln cc nghin cu v mng bao gm cc tham s hoc cc cu hnh t thay i, hay nghin cu nhanh chng mt s hot cnh. Trong cc trng hp , thi gian lp li (thay i mu v chy li) quan trng hn. Khi cu hnh chy mt ln ( ti thi im bt u m phng), thi gian chy ca phn nhim v ny th t quan trng hn. NS p ng c hai yu cu ny vi 2 ngn ng, C++ v OTcl. Vi C++ chy chng trnh nhanh nhng thay i li chm hn, iu khin n ph hp cho vic
vn te lec om
22
NS l mt b m phng hng i tng, c vit bng ngn ng C++, vi trnh thng dch OTcL nh l lp v (frontend). B m phng ny h tr mt nhnh lp trong C++ ( cn c gi l nhnh c bin dch compiled hierarchy trong ti liu ny ), v mt nhnh lp tng t trong trnh thng dch OTcL ( trong ti liu ny gi l nhnh c thng dch interpreted hierarchy). Hai h thng ny c mi tng quan kh mt thit; nhn t pha ngi s dng th y l mi tng quan mt - mt gia mt lp nhnh thng dch v mt lp nhnh bin dch. Phn gc ca nhnh ny l lp TcLObject. Ngi dng to cc i tng ca b m phng mi thng qua b thng dch; cc i tng ny c to sn bn trong trnh thng dch, v cng c phn nh bi mt i tng tng ng trong nhnh bin dch. Nhnh lp c thng dch s c thnh lp mt cch t ng thng qua cc phng php c nh ngha trong lp TcLClass. Cc i tng c to sn c phn nh thng qua cc phng php c nh ngha trng lp TclObject. C cc nhnh khc trong m C++ v on m Otcl; nhng nhnh khc ny khng c phn nh trong cch ca TclObject.
trin khai giao thc chi tit. OTcl chy chm hn nhiu nhng c th c thay i rt nhanh (v c th tng tc), v n l tng cho vic cu hnh m phng. NS (thng qua tclcl) cung cp s kt dnh to nn cc i tng v cc bin trong c hai ngn ng. bit thm thng tin v tng v cc ngn ng to bn v chng trnh phn chia ngn ng, tham kho tiu ca Ousterhout trong IEEE Computer. Thng tin v chng trnh phn cp phn chia cho m phng mng, xem trang NS[2]. Ngn ng no lm g? C hai ngn ng ct th la chn dn n lm tng s cu hi rng ngn ng no nn c dng cho mc ch g. Li khuyn c bn ca chng ti l dng Otcl : Cu hnh, ci t, v cc cng vic thc hin mt ln. Nu bn c th lm iu g bn mun bng vic thao tc vi cc i tng c sn trong C++ v dng C++. Nu bn s lm bt c th g m yu cu x l mi gi ca mt lung. Nu bn phi thay i hot ng ca mt lp c sn trong C++ bng nhng cch m cha tng c bit n. V d, cc knh truyn l cc i tng OTcl m tp hp tr, vic xp hng, v cc mun c th b mt. Nu bn c th s dng thnh tho cc cng c ny th tt. Nu khng, thay vo bn mun lm iu g ring bit (mt quy tc xp hng c bit hoc cc kiu mt mt), th bn cn mt i tng C++ mi. C nhng phn khng r rng: hu ht vic nh tuyn c thc hin trong OTcl (mc d thut ton li Dijkstra trong C++). Chng ta c nhng b m phng HTTP m trong mi lung c bt u trong OTcl v qu trnh x l trn mt gi c nh ngha trong C++. iu ny n khi chng ta c 100cc lung bt u trn mt giy trong thi gian m phng. Ni chung, nu chng ta cn n Tcl nhiu ln trn mt giy, th nn chuyn sang C++.
m C++ s dng truy cp trnh thng dch. Lp TclObject (phn 1.4) l lp c bn cho tt c cc i tng ca b m phng m cng c phn nh vo trong h thng cp bc c bin dch. Lp TclClass (phn 1.5) xc nh cc h thng cp bc lp c bin dch, v cc phng php cho php ngi dng din gii TclObjects. Lp TclCommand (phn 1.6) c s dng nh ngha cc lnh bin dch ton cc c bn. Lp EmbeddedTcl (phn 1.7) bao gm cc phng thc ti cc lnh c sn cp cao hn, iu ny lm cho vic m phng cu hnh tr nn d dng hn. Cui cng, lp InstVar (phn 1.8) l cc phng php truy cp cc bin thnh vin ca C++ nh l cac bin trong OTcl. Cc th tc v cc hm c m t trong chng ny c th c tm thy trong tclcl/Tcl.cc, h, tclcl/Tcl2.cc, tclcl/tcl-object.tcl, v tclcl/tracedvar.cc, h. File tclcl/tcl2c++.c c dng xy dng ns, v c cp mt cch ngn gn trong chng ny.
1.3. Lp Tcl
Lp class Tcl tm gn trng hp thc ca b thng dch OTcl, v cung cp cc phng php truy cp v giao tip vi b thng dch ny. Cc phng thc c m t trong phn ny lin quan n ngi lp trnh ns, tc ngi s vit on m C++. N cn cho ta cc phng php cho cc hot ng sau y: t c tham chiu ti Tcl instance. Gi ra cc th tc OTcl thng qua b thng dch. Khi phc hoc gi li cc kt qu ca trnh thng dch. Bo co cc tnh trng li v thot ra nh bnh thng. Lu tr v tra cu cc TclObjects. Ginh quyn truy cp trc tip vo trnh thng dch.
24
tcl.eval(); tcl.evalc("puts stdout hello world"); tcl.evalf("%s request %d %d", name_, sender, msgid);
1.3.4. Thot v bo co li
Phng php ny cung cp mt cch thc quy chun bo co cc li trong m c bin dch. tcl.error(const char* s) thc hin cc chc nng sau y: ghi s vo stdout; ghi tcl_>result vo stdout; thot ra vi m li 1. 26
tcl.resultf("cmd = %s", cmd); tcl.error("invalid command specified"); /*NOTREACHED*/ Lu , khng c s khc nhau nhiu gia vic tr v bn tin TCL_ERROR nh chng ta lm trong phn trc (phn 3.3.3), v vic gi Tcl::error(). B nh dng s to mt ngoi l bn trong trnh thng dch; ngi dng c th gi ngoi l ny v c th khi phc li t li. Nu ngi dng khng nh ngha bt c ngoi l no, th trnh thng dch s in mt vt cm v thot. Tuy nhin, nu m gi ra error(), th ngi dng m phng khng th gi li; thm vo , ns s khng in bt k mt vt cm no.
27
1.4. Lp TclObject
class TclObject l lp c bn cho hu ht cc lp khc trong cc nhnh thng dch v bin dch. Mi i tng trong lp TclObject c to ra bi ngi dng t bn trong b thng dch. Mt i tng phn bng tng ng c to ra nhnh bin dch. Hai i tng ny c mi tng quan cht ch vi nhau. Lp TclClass, m s c m t trong phn tip theo, cha cc c cu thc hin qu trnh bng ho (qu trnh nh x t i tng nhnh thng dch sang i tng nhwrnh bin dch ). Trong phn cn li ca ti liu ny, chng ta s thng xuyn gi mt i tng l mt TclObject1. Bng cch , ta xem xt mt i tng c th m c trng lp TclObject hoc trong mt lp m c to ra t lp TclObject. Nu cn thit, ta xc nh xem i tng l mt i tng trong b thng dch hay l trong m bin dch. Trong nhng trng hp nh vy, chng ta s s dng cc thut ng tng ng l "i tng thng dch", v "i tng bin dch" phn bit hai loi i tng trn. Nhng s khc bit t ns v1 Khng nh ns v1, lp TclObject1 gp cc hm trc y ca lp NsObject. V th, n lu tr nhng lin kt bin giao din ( phn 1.4.2) m dng ni cc bin instance ca Otcl trong i tng thng dch vi cc bin thnh vin C++ tng ng trong i tng bin dch. S rng buc ny mnh hn trong ns v1 v trong bt k s thay i cc bin OTcl u b kho, v cc gi tr C++ v OTcl hin ti u c lm cho ph hp sau mi ln truy cp thng qua b thng dch. S ng nht c thc hin thng qua lp InstVar (phn 3.8). Khc nls v1, cc i tng trong lp TclObject cng khng cn c lu nh mt danh sch lin kt ton cc. Thay vo , chng c lu tr trong mt bng hash thuc lp Tcl (phn 1.3.5). Cu hnh tiu biu ca mt TclObject V d sau y m t cu hnh ca mt 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, lp Agent/SRM/Adaptive l mt lp con ca Agent/SRM, l mt lp con ca Agent, l mt lp con ca TclObject. Nhnh lp bin dch tng ng l ASRMAgent, c ly t SRMAgent, SRMAgent li c ly t Agent, v cui cng l t TclObject mt cch tun t. Dng u tin ca v d trn cho thy mt TclObject c to ra (hoc b hu) nh th no (phn 3.4.1); dng tip theo
Trong phin bn gn y nht ca ns v ns/tclcl, i tng ny c i tn thnh SplitObjefct, phn nh mt cch chnh xc hn s bn cht ca s tn ti ca n. Tuy nhin, lc ny, chng ta s tip tc s dng thut ng TclObject ch nhng i tng ny v lp ny
1
28
cu hnh mt bin gii hn (phn 3.4.2); v cui cng, dng cui m t i tng c thng dch bng cch gi ra mt phng thc C++ ngay khi n l mt th tc v d.
1.4.1. To v hu cc TclObject
Khi ngi dng to/hu mt TclObject mi, s dng cc th tc new{} v delete{}; cc th tc ny c nh ngha trong tclcl/tcl-object.tcl. Chng c th c dng to hay hu cc i tng trong tt c cc lp, bao gm cc TclObjects2 Trong phn ny,chng ta s m t cc hot ng bn trong c thc thi khi mt TclObject c to ra. To cc TclObject bng cch dng new{}, ngi dng to mt TclObject c thng dch. b thng dch xy dng cu trc cho i tng , init{}, cc i s ca phn ny c cung cp bi ngi dng. ns chu trch nhim to ra i tng bin dch mt cch t ng. i tng bng c to ra bi lp c bn ca hm to TclObject. V th, hm to cho mt TclObject mi phi gi hm to lp ngun ca n trc. new{} tr v mt chc danh cho i tng, m c th c dng cho cc hot ng sau ny trn i tng . V d sau y minh ha hm to 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\_{}] \} Chui cc hot ng sau y c thc hin bi trnh thng dch nh mt phn ca vic th hin mt TclObject mi . cho d theo di, chng ta s m t tng bc to nn mt i tng Agent/SRM/Adaptive. Cc bc l: 1. To c mt tn duy nht cho mt i tng mi t khng gian tn TclObject. Tn ny c tr v cho ngi dng. Hu ht tn trong ns u c dng_<NNN>, vi <NNN> l mt s nguyn. Tn ny c to bi getid{}. N c th c tm thy t C++ bng phng thc name(){}. 2. To hm to cho mt i tng mi. Bt k cc i s c quy nh bi ngi dng no cng c truyn ti hm to ny. Hm to ny phi gi ra hm to c lin kt vi lp ngun ca n.
Nh v d, Cc lp, Simulator, Node, Link, hay rtObject, l cc lp m khng xut pht t lp TclObject. Cc i tng trong nhng lp ny v th khng phi l TclObjects. Tuy nhin, mt i tng Simulator, Node, Link, hoc route cng c to ra bng cch s dng th tc new trong ns.
2
29
Trong v d trn, Agent/SRM/Adaptive gi lp ngun ca n dng chnh u tin. Lu rng mi hm to ln lt gi ra hm to ca lp ngun ca n ad nauseum. Hm to cui cng trong ns l hm to TclObject. Hm to ny chu trch nhim thit lp i tng bng, v thc hin nhng vic khi to thao v cc rng buc khc, nh chng ti gii thch bn di. Tt hn l nn gi cc cu trc ngun trc khi thc hin vic np cc thng s c yu cu trong lp ny. iu ny cho php i tng bng c thit lp, v cc rng buc bin c thit lp. 3. Hm to TclObject gi ra th tc v d create-shadow{} cho lp Agent/SRM/Adaptive. 4. Khi i tng bng c to ra, ns gi tt c cc b cu trc cho i tng bin dch, mi b nh vy c th thit lp cc rng buc bin cho cc i tng trong lp , v thc hin cc khi to cn thit khc. Do lnh hun th trc y ca chng ta ph hp hn gi ra cc hm to ngun trc khi thc hin vic khi to lp. 5. Sau khi i tng bng c to ra thnh cng bng lnh create_shadow(void) (a) i tng mi vo bng hash ca cc TclObject c m t trc y (phn 1.3.5). (b) Thc hin cmd{}, mt th tc ca i tng thng dch mi c to. Th tc v d ny gi ra phng thc command() ca i tng bin dch. Trong mt phn nh sau (Section 1.4.4), chng ti s m t cch thc command c nh ngha , v c gi ra nh th no. Lu rng tt c cc c ch bng ho trn ch hot ng khi ngi dng to mt TclObject mi thng qua trnh thng dch. N s khng lm vic nu ngi lp trnh to mt TclObject c bin dch mt cch n phng. V th, ngi lp trnh b cm khng dng phng thc mi C++ to cc i tng bin dch mt cch trc tip. Xo cc TclObject: lnh delete hu i tng thng dch, v i tng bng tng ng.V d, use-scheduler{hscheduleri} dng th tc delete xo b b lp lch trnh bng k mc nh, v to ra mt b lch trnh thay th trong khng gian ca n. Simulator instproc use-scheduler type { \$self instvar scheduler\_{} delete scheduler\_{} ; # xo b lch trnh bng k ang tn ti trc set scheduler\_{} [new Scheduler/\$type] }
30
$object set timevar 1500e9p Lu rng ta c cng th thm 1 ch s biu th n v l giy. ns w s b qua tt c cc gi tr khc ngoi cc con s, hoc kt thc bng ch m, n, hay p. Cc gi tr nh phn c th c biu din c hai dng nh mt s nguyn, hay nh T hoc t vi gi tr ng. Cc k t theo sau ch ci u tin c b qua. Nu gi tr khng phi l mt s nguyn hay mt 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 bt k gi tr khng bng 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 thy hm to ca ASRMAgent3 ASRMAgent::ASRMAgent() { bind("pdistance_", &pdistance_); /* bin gi tr thc */ bind("requestor_", &requestor_); /* ibin gi tr nguyn */ bind_time("lastSent_", &lastSessSent_); /* bin gi tr thi gian */ bind_bw("ctrlLimit_", &ctrlBWLimit_); /* bin gi tr bng thng */ bind_bool("running_", &running_); /* bin gi tr nh phn */ Ch rng tt c cc hm trn u c hai i s, tn ca mt bin OTcl, v a ch ca bin thnh vin c bin dch tng ng c lin kt li. Trong khi thng c trng hp l cc rng buc c thit lp bi hm to ca i tng, khng cn phi lun c thc hin theo kiu ny. Ta s tho lun cc phng php thay th khi n mc m t lp InstVar (phn 3.8) mt cch chi tit phn sau. Mi bin c rng buc s t ng c khi to vi gi tr mc nh khi i tng c to ra. Cc gi tr mc nh ny c c t nh cc bin lp c thng dch. Qu trnh khi to ny c thc hin bi tuyn init-instvar{}, c gi ra bi cc phng php trong lp Insvar, s c m t sau (phn 1.8). hm init-instvar{} kim tra lp i tng thng dch, v tt c cc lp ngun ca i tng , tm kim lp u tin m cc bin c nh ngha. N dng gi tr ca bin trong lp khi to i tng . Hu ht cc gi tr khi to lin quan c nh ngha trong ns/tcl/lib/ns-default.tcl. V d, nu cc bin lp sau y c nh ngha cho ASRMAgent:
3
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 , mi i tng Agent/SRM/Adaptive mi s c tham s pdistance_ vi gi tr t l 15.0; lastSent_ l 8.345m t vic ci t bin lp ca lp ngun; ctrlLimit_ c gi tr l 1.44M s dng bin lp ca lp ngun hai ln b xo; running c t l sai; bin trng hp pdistance_ khng c gn tham s u vo, v khng c bin lp tn ti trong bt k h thng phn cp lp ca i tng thng dch. Trong nhng trng hp nh vy, init-instvar{} s gi ra warn-instvar{}, in ra mt cnh bo v mt bin chng hn. Ngi dng c th b qua mt cch c chn lc th tc ny trong cc bn m t m phng, lt qua cnh bo ny. Ch rng s rng buc thc t c thc hin bng vic to cc i tng trong lp InstVar. Mi i tng trong lp InstVar rng buc mt bin thnh vin bin dch vi mt bin thnh vin thng dch. Mt TclObject lu tr mt danh sch cc i tng InstVar tng ng vi mi bin thnh vin ca n m b rng buc trong kiu ny. Phn u ca danh sch c lu trong bin thnh vin ca n instvar_ ca TclObject. im cui cng cn xem xt l NS s bo m cc gi tr thc ca bin, c trong i tng thng dch v i tng bin dch, s ging nhau mi lc. Tuy nhin, nu cc phng thc v cc bin khc ca compiled object m bm theo gi tr ca bin , chng phi c gi ra r rng hoc c thay i bt k khi no gi tr ca bin b thay i. iu ny thng i hi cc t gc m ngi dng cn bit. C mt cch cung cp cc t gc trong NS l thng qua phng thc command() s c m t trong phn tip theo.
1.4.3. Bm vt bin
Thm vo cc rng buc bin, TclObject cn h tr bm vt ca cc bin trng hp trong C++ v Tcl. Mt bin bm vt c th c to v cu hnh trong C++ hay Tcl. to ra qu trnh bm vt bin ng vi mc Tcl, bin phi c nhn thy trong Tcl, iu c ngha rng n phi l mt bin trng hp Tcl thun ty hoc bin C++/Tcl b gii hn . Thm vo , i tng s hu bin bm vt cng phi c yu cu thit lp qu trnh bm vt s dng phng thc Tcl trace ca 33
TclObject. i s u tin trong phng thc trace phi l tn bin. i s th 2 (khng bt buc) c t i tng bm vt, chu trch nhim bm vt ca bin . Nu i tng vt khng c c t, th i tng s hu bin chu trch nhim bm vt n. Vi mt TclObject, bm vt cc bin, n phi m rng phng thc bn m n c nh ngha trong TclObject. Lp bm vt thc hin mt phng thc trace n gin, v th, n c th hot ng nh mt ngi bm vt chung cho tt c cc bin. class Trace public Connector {: ... virtual void trace(TracedVar*); }; Di y l mt v d n gin cho vic ci t qu trnh bm vt bin 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 vi mt bin C++ c th bm vt c, n phi thuc v mt lp m bt ngun t TracedVar. Lp c s o TracedVar lu tr tn bin, ngi s hu, v cc b bm vt. Cc lp m bt ngun t TracedVar s phi cung cp phng thc o value, phng thc m ly b m k t nh l mt i s v ghi gi tr ca bin 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 vin TclCL xut ra 2 lp ca TracedVar l: TracedInt v TracedDouble. Cc lp ny c th c dng vi cc kiu d liu c bn ca int v double tng ng. C TracedInt v TracedDouble lm qu ti tt c cc hot ng m c th thay 34
i gi tr ca bin nh php gn, tng v gim. Cc hot ng b qu ti ny dng phng thc assign gn gi tr mi cho bin v gi b bm vt nu gi tr mi khc vi gi tr c trc . TracedInt v TracedDouble cng b sung cc phng thc v value ca chng m a cc gi tr bin vo trong chui. rng v tnh chnh xc ca u ra c th c c t trc.
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 on m ny nh sau: Hm c gi vi 2 i s: i s u tin (argc) biu th s lng ca cc i s c c t trong dng lnh cho trnh thng dch. Vector cc i s dng lnh (argv) bao gm argv[0] cha tn ca phng thc, "cmd". argv[1] c t hot ng mong mun. Nu ngi dng c t bt k i s no, th chng phi c t trong argv[2...(argc - 1)]. Cc i s c truyn nh cc chui; chng phi c chuyn i sang kiu d liu ph hp. Nu php ton l ng, th n s tr v kt qu php ton s dng cc phng thc c m t trc (phn 1.3.3). Bn thn hm command() phi tr v hoc l TCL_OK hay TCL_ERROR biu th thnh cng hay tht bi. Nu php ton trong phng thc ny khng ng, n phi gi ra phng thc lnh gc, v tr v kt qu tng ng. iu ny cho php ngi dng hnh dung c cc php ton khi c c cc thuc tnh k tha nh l cc th tc trng hp, hoc cc phng php bin dch. Trng hp phng thc command ny c nh ngha cho mt lp vi s a k tha, ngi lp trnh c th t do chn mt trong hai thnh phn b sung sau: 1. Chng c th gi ra mt trong cc phng thc command gc, v tr v kt qu ca s gi ra , hoc l. 2. Chng c th l mt trong cc phng thc command gc mt s chui, v tr v kt qu ca s gi ra u tin thnh cng. Nu khng thnh cng, th chng s tr v mt li.
36
Trong ti liu ny, chng ta gi cc php ton c thc thi thng qua command() l instproc-likes. N phn nh cng dng ca nhng hot ng ny nh th chng l cc th tc trng hp OTcl ca mt i tng, nhng c th s rt khc trong s nhn thc v s dng.
1.5. Lp TclClass
Lp bin dch ny (class TclClass) l mt lp hon ton o. Cc lp thu c t lp c s ny cung cp 2 chc nng: xy dng nn nhnh lp thng dch phn nh nhnh lp bin dch; v cung cp cc phng thc to ra cc TclObject mi. Mi lp thu c nh vy kt hp vi mt lp bin dch ring bit trong nhnh lp bin dch, v c th to cc i tng mi trong lp kt hp. V d, xt mt lp nh RenoTcpClass. N c ly ra t lp TclClass, v c kt hp vi lp RenoTcpAgent. N s dn ra cc i tng mi trong lp RenoTcpAgent. Nhnh lp bin dch cho RenoTcpAgent l lp ln lt c to ra t TcpAgent, TcpAgent: li c to ra t Agent, Agent li c to 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 mt s phn tch t nh ngha trn: 1. Lp ny ch nh ngha hm to, v mt phng thc thm vo, create cc i tng ca TclObject kp hp. 2. NS s thc hin hm to hm to RenoTcpClass cho bin tnh class_reno}, khi n c bt u ln u tin. Vic ny ci t cc phng thc thch hp v nhnh lp phin dch. 3. Hm to c t lp thng dch mt cch r rng nh Agent/TCP/Reno. iu ny cng c t nhnh lp thng dch mt cch hon ton. Gi li tho thun kia trong ns is l dng k t gch cho (/) nh l cch phn chia. Vi bt k lp c cho l A/B/C/D, th lp A/B/C/D l 1 lp con 37
ca A/B/C, A/B/C l lp con ca A/B, ln lt A/B l lp con ca A. A chnh n li l lp con ca TclObject. Trong trng hp trn, hm to TclClass to ra 3 lp, Agent/TCP/Reno l lp con ca Agent/TCP l lp con ca Agent l lp con ca TclObject. 4. Lp ny kp hp vi lp RenoTcpAgent; n to ra cc i tng mi trong lp c kt hp ny. 5. Phng thc RenoTcpClass::create tr cc TclObject v trong lp RenoTcpAgent. 6. Khi ngi dng c t new Agent/TCP/Reno, th tc tip theo RenoTcpClass::create c gi ra 7. Vector cc i s (argv) bao gm argv[0] cha tn ca i tng. argv[1...3] cha $self, $class, v $proc. K t khi create is c gi thng qua th tc trng hp create-shadow, argv[3] bao gm create-shadow. argv[4] cha bt k i s b sung no (c xem nh l mt chui) c cung cp bi ngi dng. class Trace minh ho vic trnh by i s bng cc phng thc 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; Mt i tng Trace c to ra nh new Trace "X" Cui cng, v c bn, cch m nhnh lp thng dch c to nn nh sau: 1. Hm to i tng c thc hin khi ns khi ng ln u. 2. Hm to ny gi hm to TclClass vi ci tn ca lp c thng dch cng nh i s ca n. 3. Hm to TclClass lu tr tn ca lp, v chn i tng ny vo mt bng k lin kt ca cc i tng TclClass. 38
4. Trong sut qu trnh khi to ca b m phng, hm Tcl_AppInit(void) gi ra TclClass::bind(void) 5. Vi mi i tng trong bng k cc i tng TclClass, hm bind() gi ra register{}, bng cch c t tn ca lp thng dch nh i s ca n. 6. Hm register{} thit lp lp nhnh, to cc lp c yu cu, v cha c to ra. 7. Cui cng, hm bind() nh ngha cc th tc i tng creat-shadow v delete-shadow cho chnh lp mi ny.
static int hdrlen_; }; Sau ta lm tip theo nh bn di xy dng mt b truy cp cho bin ny: class PacketHeaderClass:public TclClass { protected: PacketHeaderClass(const char* classname, int hdrsize); TclObject* create(int argc, const char*const* argv); /* Hai thnh phn ca cc phng thc truy nhp trong lp Tcl */ virtual void bind(); virtual int method(int argc, const char*const* argv); }; void PacketHeaderClass::bind() { /*Gi n lp c bn bind() phi lm trc add_method()*/ TclClass::bind(); add_method("hdrlen"); { int PacketHeaderClass::method(int ac, const char*const* av) { Tcl& tcl = Tcl::instance(); /*Lu vic chuyn i i s ny; ta c th sau i x vi chng nh nu 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 bc ny, ta c th dng lnh OTcl sau truy cp v thay i cc gi tr ca bin Packet::hdrlen_: 40
class RandomCommand nh ngha lnh ns-random. Khng cn i s, ns-random returns tr v mt s nguyn, v c phn b u trong khong [0, 231 1]. Khi c t mt i s, n ly i s nh ht ging. Nu ht ging ny c gi tr l 0, lnh dng mt gi tr ht ging heuristic; hay ni cch khc, n t ht ging cho hm to s ngu nhin mt gi tr c th. % ns-random; 2078917053 % ns-random 0; 858190129 % ns-random 23786; 23786 # tr v mt s ngu nhin #set the seed heuristically
#t ht ging v gi tr c c t
Lu rng, ni chung khng nn xy dng cc lnh mc cao cho ngi dng. By gi ta m t cch nh ngha mt lnh mi bng cch s dng v d class say_hello. V d nh ngha lnh hi, in chui "hello world", c theo sau bi bt k cc i s dng lnh no c c t bi ngi dng. V d % hi this is ns [ns-version] hello world, this is ns 2.0a12
41
1. Lnh phi c nh ngha bn trong mt lp c xut pht t class TclCommand. Vic nh ngha lp ny nh sau: class say_hello : public TclCommand { public: say_hello(); int command(int argc, const char*const* argv); }; 2. Hm to cho lp phi gi ra hm to TclCommand vi lnh v i s; v.v., say_hello() : TclCommand("hi") {} Hm to TclCommand t "hi" nh l mt th tc ton cc m gi ra TclCommand::dispatch_cmd() 3. Phng thc command() phi thc hin c vic mong mun. Phng thc c 2 i s, mt l argc, cha s lng i s thc t c thng qua bi ngi dng. Cc i s thc t c truyn vo bi ngi s dng u c xem nh l mt vector i s (argv) v bao gm: argv[0] cha tn ca lnh (hi). argv[1...(argc - 1)] cha cc i s khc c c t trn dng lnh bi ngi dng. command() c gi ra bi dispatch_cmd(). #include <streams.h> /* bi 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. Cui cng, ta yu cu mt i tng cho lp ny. Cc i tng TclCommandc to ra trong th tc init_misc(void). new say_hello; Lu rng, y thng dng nhiu hm hn nh ns-at v ns-now m c th truy cp c. Hu ht cc hm ny s c gom vo trong mt lp hin hnh. C th l, ns-at v ns-now c th truy cp c thng qua b lp lich thi gian ca TclObject. Cc hm c nh ngha trong ns/tcl/lib/ns-lib.tcl % set ns [new Simulator] ; # Ly trng hp ca b m phng _o1 % $ns now ; # truy vn b m phng v thi gian hin ti 0 % $ns at ... ; # ch r cc hot ng cho b m phng 42
1.7. Lp EmbeddedTcl
NS cho php s pht trin ca cc tnh nng trong c m bin dch, hoc thng qua m thng dch, m c nh gi trong qu trnh khi to. V d, cc bn trong tclcl/tcl-object.tcl hay trong ns/tcl/lib. Vic ti v nh gi cc on m nh vy c thc hin thng qua cc i tng trong lp class EmbeddedTcl. Cch d nht m rng ns is l thm m OTcl vo hoc tclcl/tcl-object.tcl hoc qua cc on m th mc ns/tcl/lib. Lu rng, trong nhng trng hp sau ny, ns t ng to ns/tcl/lib/ns-lib.tcl, v v th ngi lp trnh phi thm hai dng lnh vo file ny bn dch ca chng s t ng ly ngun t ns khi khi ng. V d, file ns/tcl/mcast/srm.tcl xc nh mt s th tc trng hp chy SRM. Trong ns/tcl/lib/ns-lib.tcl, chng ta c cc dng lnh: source tcl/mcast/srm.tcl t ng ly srm.tcl c to bi NS khi khi ng. C ba im cn lu vi m EmbeddedTcl l: u tin nu m c mt li c to ra trong qu trnh nh gi th ns s khng chy. Th hai, ngi dng c th khng cn n bt k m no trong cc bn dch. c bit, chng c th ti to ton b on m sau khi sau khi c s thay i ni ti. Cui cng, sau khi thm cc bn dch cho ns/tcl/lib/ns-lib.tcl, v t v sau bt c khi no on m thay i, ngi dng phi bin dch li ns lm s thay i c hiu lc. D nhin, trong hu ht trng hp 4 , ngi dng ch th to on m ca mnh b qua m c nhng. Phn cn li ny s m t cch tch hp cc bn c lp trc tip vo trong ns. Bc u tin l chuyn i bn dch vo trong mt i tng EmbeddedTcl. Cc dng bn di m rng ns-lib.tcl v to ra i tng EmbeddedTcl c gi l et_ns_lib: tclsh bin/tcl-expand.tcl tcl/lib/ns-lib.tcl | n ../Tcl/tcl2c++ et_ns_lib > gen/ns_tcl.cc on m,ns/bin/tcl-expand.tcl m rng ns-lib.tcl bng cch thay th tt c cc dng source lines bi cc file ngun tng ng. Chng trnh, tclcl/tcl2cc.c, chuyn i m OTcl thnh mt i tng EmbeddedTcl tng ng, et_ns_lib. Trong qu khi to, vic gi ra phng thc EmbeddedTcl::load s nh gi mng mt cch r rng. tclcl/tcl-object.tcl c nh tr bi phng thc Tcl::init(void); Tcl_AppInit() gi ra Tcl::Init(). C php lnh chng xc cho ti l:
Mt t trng hp m iu ny c th s khng xy ra l khi cc bin no c th phi c nh ngha hay khng c nh ngha, hoc ni cch khc bn dch cha m khc hn l th tc, v vic nh ngha bin v thc thi cc hot ng mt cch trc tip l khng th o ngc c
4
43
et_tclobject.load(); Mt cch tng t, ns/tcl/lib/ns-lib.tcl c nh tr trc tip bi Tcl_AppInit trong ns/ns_tclsh.cc. et_ns_lib.load();
1.8. Lp InstVar
Phn ny m t cc bn cht ca lp InstVar. Lp ny xc nh cc phng thc v c cu rng buc mt bin thnh vin C++ trong i tng bng bin dch vi mt bin trng hp OTcl c c t trong i tng thng dch tng ng. Vic rng buc c thit lp gi tr ca bin c th c t hoc c truy cp t c trnh thng dch hoc t m bin dch mi lc. C nm lp bin i tng: class InstVarReal, class InstVarTime, class InstVarBandwidth, class InstVarInt, v class InstVarBool, tng ng vi cc rng buc cho cc bin gi tr thc, thi gian, bng thng, s nguyn, v nh phn mt cch ln lt. By gi, ta m t c cu ci t cc bin trng hp. Ta dng class InstVarReal to din gii khi nim. Tuy nhin, c cu ny c th ng dng c vi c 5 kiu bin trng hp. Khi vic ci t mt bin thng dch truy cp mt bin thnh vin, cc hm thnh vin ca lp InstVar gi s rng chng ang thc hin cc phng thc thch hp, do chng s khng truy vn trnh thng dch xc nh bi cnh m bin phi tn ti. bo m hon cnh thc thi phng thc chnh xc, mt bin phi c rng buc nu lp ca n c thit lp trong b trnh thng dch, v trnh thng dch ang lm vic trn mt i tng ca lp . rng b nh dng yu cu khi mt phng thc trong mt lp cho sn s lm cc bin ca n c th truy cp thng qua trnh thng dch, phi l mt lp TclClass (phn 1.5) lin kt c nh ngha nhn dng nhnh lp ph hp cho trnh thng dch. V th, bi cnh thc thi phng thc ph hp, c th c to ra bng mt trong 2 cch. Mt gii php n xut hin bt c khi no mt TclObject c to ra bn trong trnh thng dich. iu ny thit lp bi cnh thc thi phng thc trong trnh thng dch. Khi i tng bng bin dch ca TclObject thng dch c to ra, hm to cho i tng bin dch c th rng buc cc bin thnh vin ca i tng vi cc bin i tng thng dch trong bi cnh ca i tng thng dch mi c to . Mt gii php ni nh ngha mt php ton bind-variables trong mt hm command, m c th c gi ra thng qua phng thc cmd. Bi cnh thc thi phng thc ng c thit lp thc hin phng thc cmd. Tng t, m bin
44
dch by gi s hot ng trn i tng bng thch hp, v v th c th rng buc chc chn cc bin thnh vin c yu cu. Mt bin i tng c to bi vic c t tn ca bin thng dch, v a ch ca bin thnh vin trong i tng bin dch. Hm to cho lp c s InstVar to ra mt trng hp ca bin trong trnh thng dch, v sau thit lp mt th tc by bt tt c cc truy cp n bin thng qua trnh thng dch. Mi khi bin c c thng qua trnh thn dch, th tc by c gi ra trc ngay khi c thao tc c. Th tc gi ra hm get thch hp tng ng s tr v gi tr hin ti ca bin. Gi tr ny sau c dng t gi tr ca bin thng dch v sau c c bi trnh thng dch. Tng t, mi khi bin c lp thng qua trnh thng dch, th tc by c gi ra ch sau khi vic ghi hon tt. Th tc ly gi tr hin ti c lp bi trnh thng dch, v gi ra hm set tng ng chu trch nhim lp gi tr ca thnh vin bin dch n gi tr hin ti c lp bn trong trnh thng dch.
45
Ngi dch: H Tt Thnh Bin tp: L Tin Anh. Bn gc: NS Simulator for beginners, Chapter 1 [2]
dch) v dng ca d liu u ra mun nhn c t b m phng. Otcl c th tn dng cc i tng c bin dch trong C++ thng qua mt lin kt Otcl (c thc hin bng vic s dng TclCL1 )[5] , lin kt Otcl ny to ra mt nh x gia i tng Otcl vi mi i tng trong C++. NS l mt b m phng s kin ri rc, trong , tng ca thi gian ph thuc vo vic nh thi ca cc s kin, tng ny c duy tr vi mt b nh trnh. Mt s kin l mt i tng trong nhnh C++ vi mt ID duy nht, mt thi gian nh trc v con tr tr ti i tng s dng s kin . B nh trnh nm quyn qun l mt cu trc d liu c th t (c 4 cu trc, nhng theo mc nh, NS s dng mt danh sch lin kt n gin) cng vi cc s kin chun b c thc hin, v thc thi tng s kin mt bng cch kch hot th (handle) ca s kin .
47
trong phm vi chng trnh m phng. iu ny c th thc hin c bng cch dng lnh xgraph nh sau: Exec xgraph data & (ch : du "&" c dng iu khin cho lnh thc hin ngm). Cu trc ca mt cu lnh if nh sau: If { biu thc}{ <khi lnh> } else { {<khi lnh> } Cu lnh if c th c bao trong cc cu lnh "if" khc v vi cc cu lnh "else". Chng c th xut hin trong phn "<khi lnh>. Ch , khi kim tra iu kin logic tng ng, ta nn dng du "==" ch khng nn dng du "=". iu kin logic bt tng ng c c php l "!=". Cc vng lp c dng nh sau: for {set i 0}{$ i < 5}{incr i}{ <khi cu lnh> } Trong v d ny, khi cu lnh trong vng lp s c thc hin 5 ln. Sau ton t for, cm "{set i 0} khai bo bin i l b m ca vng lp ng thi khi to gi tr 0 cho n. Phn th hai trong {} l iu kin tip tc ca vng lp, n c ngha l "tip tc thc hin vng lp nu i<5. Phn cui cng ca cu lnh th hin s thay i trong bin m, y, ta lin tc tng i thm 1, nhng ta cng c th gim hoc dng bt k mt biu thc ton hc 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
Bng 2.1: Chng trnh Tcl thc hin cc php ton tcl cho php to cc th tc. Chng c th tr v mt vi gi tr trong trng hp chng c cha lnh "return". C php tng qut ca mt th tc c tn v d l blue nh sau: proc blue {par1 par2 ...} { global var1 var 2 <khi cu lnh> Return $<mt gi tr no > } Th tc nhn mt vi tham s u vo, c th l cc i tng, file, hoc cc bin. Trong trng hp ca chng ta, cc bin c t tn l par1, par2, v.v.. Th tc c gi ra bng cch g: blue x y ... y, gi tr ca x v y s c gn cho par1 v par2. Nu par1 v par 2 b thay i trong th tc, iu khng nh hng g ti x v y. Mt khc, nu ta mun th tc c kh nng tc ng trc tip ti cc bin bn ngoi phm vi ca n, ta phi nh ngha cc bin l bin ton cc "global, v d di y l var 1 v var 2. bng 2.1, ta thy mt v d th hin rt nhiu ton t s hc trong tcl. Ch th pow cho kt qu l hm m bc k ca bin d (dk ). bng 2.2, ta ly v d mt chng trnh tcl tnh tt c s nguyn t nh hn mt gii hn j cho trc. V d, nhn c cc s nguyn t nh hn 11, g: ns prime.tcl 11. V d v cc s nguyn t cho thy cch s dng lnh if, cc vng lp v th tc. Bin argc c cha cc tham s c a vo chng trnh. Bin argv l mt vect cha cc tham s c truyn ti chng trnh (vy nn bin argc chnh l di ca bin argv), v lnh lindex cho php chng ta ly trng hp ca vect c tr bi tham s th hai. Do vy, dng lnh set j [lindex $argv 0] gn cho bin j gi tr ca tham s u tin c truyn vo chng trnh (gi tr c lu vo bin argv).
49
# Cch s dng: ns prime.tcl NUMBER # NUMBER l s cc s nguyn t m chng ta mun nhn If {$argc !=1}{ # Phi nhn ly mt i s n, hoc chng trnh s bo #li Puts stderr ERROR! Ns called with wrong number of argument!($argc) exit 1 } else{ Set j [lindex $argv 0] proc prime {j}{ #Tnh ton tt c cc s nguyn t cho ti 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 phi l s nguyn t }else{ puts $a l s nguyn t } } } prime $j
Bng 2.2: Chng trnh Tcl tnh ton cc s nguyn t Chng ti ch gii thch ngn gn thng qua mt v d v mu lp trnh trong Otcl. Nu bn cha bit mt ngn ng lp trnh hng i tng no (C++, Java), bn nn hc cch lp trnh cc ngn ng hng i tng. T kha dnh ring Class t sau tn ca mt lp c dng khai bo mt lp mi trong OTcl. Cc phng thc (hm) ca mt lp c khai bo bng cch dng t kha instproc t ng sau tn lp, tip l tn ca phng thc v cc tham s ca n. Phng thc init l hm khi to ca lp . Bin self l mt con tr ti bn thn i tng, ging nh con tr "this" trong C++ hoc Java. khai bo mt i tng (instance), OTcl s dng t kha instvar. T kha superclass c dng khai bo rng mt lp l lp con (lp tha k) ca mt lp khc, trong v d ny, lp Integer (s nguyn)l lp con ca lp Real (s thc). Chng 50
# Cch dng: ns fact.tcl Number # NUMBER l s m ta mun ly giai tha # if {$argc !=1}{ # Phi ly i s n hoc chng trnh bo li # 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
Bng 2.4: Chng trnh Tcl n gin s dng i tng real v integer
52
Ngi dch: Nguyn Thanh Hi Bin tp: H Tt Thnh Bn gc: NS Simulator for beginners, Chapter 2 [2] 53
Trong chng ny chng ta s trnh by cc bc u tin gm c: Vic khi to v kt thc ca b m phng ns. nh ngha cc node mng, link, hng i v topology. nh ngha cc tc nhn (agent) v cc ng dng. Cng c hin th nam . Bm vt. Cc bin ngu nhin.
y l dng u tin trong tp lnh tcl. Dng ny khai bo 1 bin ns mi dng lnh set, bn c th gi bin ngu nhin ny nh bn mun, tuy nhin thng thng ngi ta khai bo n l ns v n l mt th hin ca lp Simulator, do vy n l mt i tng. Tht vy on m [new simulator] l mt trng hp th hin ca lp Simulator s dng t kha new. Vy nn vic s dng bin mi ns ny chng ta c th s dng tt c phng thc ca lp Simulator, chng ta s thy iu ny phn sau. c cc file u ra vi d liu m phng (file bm vt) hay cc file s dng cho hin th (cc file nam) th chng ta cn to cc file bng cch s dng lnh "open": #M Set $ns #M set $ns file bm vt tracefile1 [open out.tr w] trace-all $tracefile1 file bm vt NAM namfile [open out.nam w] namtrace-all $namfile
on m trn to mt file bm vt tn l out.tr v mt file bm vt hin th nam (cho cng c NAM) tn l "out.nam". Trong tp lnh tcl, cc file ny khng c gi mt cch r rng bng tn ca chng nhng thay vo bng cc con tr c khai bo trn v c gi ln lt l tracefile1 v "namefile". Dng u tin v dng th 4 trong v d ny ch l cc ch thch, chng khng phi l cc lnh m 54
vn te lec om
Mt m phng ns bt u vi cu lnh set ns [new Simulator]
phng. Ch rng chng bt u vi mt k t "#". Dng th 2 m file "out.tr" s dng cho ghi, c khai bo vi ch "w". Dng th 3 s dng mt phng thc Simulator tn l trace-all c tham s l tn ca file m cc trace s chy. Vi cu lnh simulator ny chng ta s bm vt tt c cc s kin theo mt khun dng c th m chng ta s gii thch sau chng ny Dng cui cng bo cho b m phng ghi li tt c s bm vt thnh dng u vo NAM. N cng a ra tn file m s bm vt s c ghi li sau bng lnh $ns flush-trace (xem th tc finish di). Trong trng hp ca chng ta, file c ch ti bng con tr $ namfile l file out.tr Ch : cc cu lnh trace-all v namtrace-all c th dn n vic to ra cc file kch thc ln. Nu chng ta mun tit kim khng gian, cc lnh trace khc s c s dng bi vy khi to trace ch mt tp con cc s kin m phng l thc s cn n. Nh cc cu lnh c m t trong phn 3.6 Kt thc chng trnh c thc hin bng mt th tc finish #nh ngha mt th tc 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 mt th tc - trong trng hp ny l finish v khng c tham s no. T kha global c dng cho bit rng chng ta ang dng cc bin c khai bo ngoi th tc. Phng thc simulator flush-trace s (dump) cc trace vo cc file tng ng. Lnh tcl close ng cc file bm vt nh ngha trc v exec thc thi chng trnh nam cho hin th. Lu rng chng ta chuyn tn tht ca file bm vt thnh nam v khng thc hin iu ny vi con tr namfile v n khng phi cu lnh ngoi. Cu lnh exit s kt thc ng dng v tr v s 0 nh trng thi ca h thng. Gi tr khng l mc nh cho exit khng li (clean exit). Cc gi tr khc c th c dng cho bit l mt exit c mt vi li g . cui chng trnh ns chng ta s gi th tc finish v ch ra thi im kt thc. V d, $ns at 125.0 finish s c dng gi finish vo thi im 125 giy. Tht vy, phng thc ca simulator cho php chng ta lp lch cc s kin mt cch chnh xc. Sau trnh m phng c th bt u bng lnh: 55
$ns run
56
gi tr mc nh l 50. Gi tr mc nh ny nm trong cu lnh ca ns-default.tcl2 Queue set limit_ 50 #To 6 Set n0 Set n1 Set n2 Set n3 Set n4 Set n5 nt [$ns [$ns [$ns [$ns [$ns [$ns
$To cc lin kt gia 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 thc hng i cho lin kt (n2-n3) bng 20 $ns queue-limit $n2 $n3 20 Bng 3.1: nh ngha cc nt, knh truyn v gn kch c hng i Chng ta c th tm gi tr mc nh ny bng cch no ? u tin, kim tra file ns-lib.tcl, y ta s thy th tc queue-limit
57
$self instvar link_ [$link_([$n1 id]:[$n2 id]) queue] set limit_ $limit } Trong , chng ta thy rng gii hn hng i l mt phng thc ca b m phng m cn 3 tham s: 2 nt nh ngha knh truyn v gii hn hng i. y ta thy s gii hn hng i c a ra bi bin limit_.
#Thit t mt kt ni 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 #Thit t mt FTP qua kt ni TCP Set ftp [new Application/FTP] $ftp attach-agent $tcp Bng 3.2: nh ngha mt ng dng FTP s dng tc nhn TCP
tuyn ( cc ngun v ch c th) cho cc trm (cc giao thc nh tuyn) v ng dng s dng chng. Trong v d trc, chng ta mun chy mt ng dng FTP (giao thc truyn file) gia nt $n0 v $n4 v ng dng CBR (tc bit khng i) gia nt $n1 v $n5. Giao thc internet m FTP s dng l TCP/IP (Giao thc iu khin vn chuyn/Giao thc Internet) cn CBR s dng giao thc UDP (giao thc gi d liu ngi dng). Trc tin chng ta s nh ngha ( nh trong bng 3.2 mt tc nhn TCP gia nt ngun $n0 v nt ch $n4 v ng dng FTP s dng n. Sau chng ta nh ngha nh trong bng 3.3 tc nhn UDP gia nt ngun $n1 v nt ch $n5 v ng dng CBR s dng n.
59
#Thit t mt kt ni 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 #Thit t mt CBR qua kt ni UDP Set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp $cbr set packetSize_ 1000 $cbr set rate_ 0.01Mb $cbr set random_ false
Bng 3.3: nh ngha mt ng dng CBR s dng tc nhn UDP iu ny c thc hin 3 dng cui trong bng 3.2 . Ch rng c tc nhn TCP cng nh ng dng FTP u c cho cc con tr: chng ta gi con tr cho tc nhn TCP l tcp (tuy nhin c th s dng tn khc) v con tr cho FTP l ftp.
60
61
$ns at <time> <event> B lp lch bt u khi ta chy ns, thng qua lnh $ns run Trong v d n gin ca chng ta, ta s lp lch qu trnh bt u v kt thc ca ng dng FTP v CBR. iu ny c th c thc hin thng qua cc lnh 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 vy FTP s hot ng trong thi gian t 1.0 n 124.0 v CBR s hot ng trong thi gian 0.1 n 124.5 (tt c n v l giy). By gi chng ta sn sng chy m phng ca n. Nu cc cu lnh c vit trong mt file gi l ex1.tcl (xem bng ?? ) th n gin ta ch cn g ns ex1.tcl Ch trong bng ?? chng ta thm cui mt th tc khc ghi mt file u ra vi kch thc ca s TCP tc thi cc khong thi gian 0.1 giy. Trong v d, tn file u ra l WinFile. Th tc l quy nn c sau 0.1 giy n s gi li chnh n. N chuyn ngun TCP v file ti u ra ghi mh mt tham s m ta mun ghi u ra. set ns [new Simulator] # nh ngha cc mu ca cc lung khc nhau $ns color 1 Blue $ns color 2 Red #M file bm vt set tracefile1 [open out.tr w] set winfile [open WinFile w] #ns trace-all $tracefile1 #M file bm vt NAM set namfile1 [open out.tr w] #ns namtrace-all $namfile #nh ngha th tc finish proc finish {} { glogal ns tracefile1 namefile #ns flusj-trace close $tracefile1 close $namfile exec nam out.nam & exit 0
62
# To 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] #To cc knh truyn gia 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 thc hang i cho knh truyn (n2-n3) thnh 20 $ns queue-limit $n2 $n3 20 #Thit lp cc phin kt ni 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 $Thit lp mt phin kt ni FTP da trn TCP set ftp [new Application/FTP] $ftp attach-agent $tcp #Thit lp phin kt ni 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 $Thit lp mt phin kt ni CBR da 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 tc v kch thc ca s. Ly tn ca nut tcp ngun v # ca 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
Thm v xa cc du (mark): Chng ta c th nh du mt nt thi im ang xt (v d cng thi im khi chng ta kch hot mt ngun lu lng no thi im ). 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 on m ny to ra du mu xanh bao quanh nt 3 trong khong thi gian [2,30] Thm cc nhn: mt nhn c th xut hin trn mn hnh t thi im ang xt tr i, nh l a ra nhn active node ti mt nt n3 t thi im 1.2. $ns at 1.2 "$n3 label \" active node\"" V a mt nhn "TCP input link" cho lin kt n0-n2 g $ns duplex-link-op $n0 $n2 label TCP input link Thm ch: cui khung ca ca s NAM, ta c th to ch hin ra thi im ang xt. Ch ny c th c dng m t mt s kin no c lp lch thi im . V d. $ns at 5 "$ns trace-annotate \"packet drop\"" Ngoi ra trong NAM c th gim st kch thc hng i. V d, gim st hng i u vo ca lin kt gia n2-n3, bng cch g $ns simplex-link-op $n2 $n3 queuePos 0.5
(Tt c cc v d u tham chiu ti cc i tng c nh ngha trong ex1.tcl) Giao din ha ca NAM c ch ra trong hnh 3.3
66
3.6. Bm vt
3.6.1. Bm cc i tng
M phng NS c th to ra trace hin th (cho NAM) cng nh mt file bm vt ASCII tng ng vi cc s kin ng k trong mng. Khi chng ta s dng bm vt (nh cp trong phn 3.1) th ns s chn 4 i tng vo trong lin kt: 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 tng trong mt knh truyn n cng n mt gi n v c xp hng i hng i u vo ca knh truyn. Nu gi tin trn th thng tin lin quan n gi b hy s c iu khin bi DrpT. DeqT ng k thng tin ngay lc gi tin b y ra khi hng i. Cui cng, RecvT a thng tin ca chng ta v cc gi nhn c u ra knh truyn. NS cho php chng ta nhn nhiu thng tin hn l thng qua bm vt trn. Mt phng php l s dng gim st hng i. Phng php ny c m t cui phn 7.3
67
1. Trng u tin l kiu s kin. c a ra bng mt trong 4 biu tng r,+,-,d ln lt tng ng vi nhn ( u ra ca knh truyn), xp vo hng, ra khi hng, v b loi. 2. Trng th 2 a ra thi im xy ra s kin. 3. a ra nt u vo ca knh truyn m s kin xy ra . 4. a ra nt u ra ca knh truyn m s kin xy ra . 5. a ra kiu gi tin (v d nh CBR hay TCP. Kiu tng ng vi tn m chng ta gn cho cc ng dng . V d, ng dng TCP bng 3.2 c gi l tcp. 6. a ra kch thc gi tin 7. Mt vi c (chng ta s xem sau) 8. y l m nhn dng lung (fid) Ipv6 m mt ngi s dng c th t cho mi dng tp lnh Otcl u vo. 9. y l a ch ngun a ra di dng "node.port" 10. y l a ch ch, c dng nh trn. 11. y l s th t gi tin ca giao thc lp mng. Mc d cc thc thi UDP trong mt mng thc t khng s dng s tun t ny, tuy nhin ns vn gi vt i ca s tun t gi UDP cho mc ch phn tch. 12. Trng cui cng ch ra m nhn dng duy nht ca gi tin. Mt v d, xt on m u ca trace sinh ra bng vic chy tp lnh ex1.tcl c a ra trong bng 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
69
$r1 set avg_ 10.0 $r1 set shape_ 1.2 2. Hng s: Mt bin ngu nhin suy bin l hng s v bng gi tr ca n set r2 [new RandomVatiable/Constant] $r2 use-rng $MyRng $r2 set val_ 5.0 3. Phn b u: c nh ngha thng qua im nh nht v ln nht trong khong h tr ca n: set $r3 $r3 $r3 r3 [new RandomVariable/Uniform] use-rng $MyRng set min_ 0.0 set max_ 10.0
\item \textbf{Phn b m:} c nh ngha qua gi tr trung bnh ca n \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
Tip theo chng ta s trnh by mt chng trnh nh (rv1.tcl) kim tra cc bin ngu nhin phn b Pareto vi cc seed v b to khc nhau nhng vi cng phn b Pareto. c a ra trong Bng 2.6. Cho mi seed (gi tr 0, 1 v 2) v b to, chng ta to mt chui 3 bin ngu nhin. Bin count c gn s bin ngu nhin m chng ta to bng cch s dng test cho mi seed v b to. Khi chy v d ny ta c th thy rng vi seed bng 0, hai b to cho cc gi tr bin khc nhau; nh vy ta t c 6 gi tr khc nhau (3 gi tr t mi b to). Cho cc seed khc, mt b to to ra 3 gi tr khc nhau nhng cc gi tr ny khng ph thuc vo b to: gi tr th n c to bi b to 1 cng nh c to bi b to 2.
71
## V d n gin lm r cch dng lp RandomVariable t 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_ ] }
Bng 3.6: Kim tra cc bin ngu nhin phn b Pareto vi cc seed khc nhau
72
Ngi dch: Nguyn Mnh Linh Bin tp: Nguyn Quc Bnh Bn gc: NS Simulator for beginners, Chapter 3 [2]
Chng trnh m phng NS c th cung cp rt nhiu d liu chi tit v cc s kin xy ra khi mt mng hot ng. Nu chng ta mun phn tch nhng d liu chng ta cn phi trch tch nhng thng tin lin quan ra t nhng file vt (trace files) v x l chng Tuy rng ta c th vit nhng chng trnh bng bt c ngn ng lp trnh no 73
c th x l c nhng file d liu , nhng c mt s cng c min ph ph hp cho mc ch phn tch file trace c pht trin trn mt s h iu hnh (unix, linux, window, . . . ). Tt c nhng g ngi s dng cn lm l vit nhng on script ngn c dch v thc thi m khng cn phi bin dch chng trnh.
Bng 4.2: awk script tnh gi tr lch chun ca ct 4 ca mt file s dng script u tin tnh ton gi tr trung bnh ca ct th 4 ca mt file c tn l "Out.ns" chng ta s g nh sau trn h iu hnh unix: awk f Average.awk Out.ns Chng ta s nhn c kt qu trng ging nh l: average : 29.397 cho gi tr trung bnh ca ct 4 . By gi tnh lch chun ca ct chng ta g: awk v t=29.397 f StDev.awk Out.ns Cu lnh ny s tr v gi tr: standev : 33.2003. Ch rng trong on m trn, chng ta phi copy gi tr trung bnh thu c t on m trc vo trong cu lnh tnh ton lch chun. Th d ny ch ra lm th no a mt tham s vo mt on m awk. 74
Ch rng nu chng ta khng chia phn cui ca on m awk u tin (Bng 4.1) chon l, chng ta s nhn c tng ca tt c cc gi tr trong ct 4 thay v gi tr trung bnh ca chng. Mt cch tt nht thu c gi tr trung bnh v lch chun l s dng mng: 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)} Bng 4.3: Mt on m awk s dng mng tnh trung bnh v lch chun V d tip theo ly u vo l mt file vi 15 ct (t 0 n 14). u ra s l mt file c 5 ct, ct th nht ch ct s 1 ca file gc, v ct th 2 ti 5 l tng ca ln lt cc ct 3-4, 6-8, 9-11 v 12-14 (12-14 tng ng vi 3 ct cui cng trong file gc). s dng on 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 {} Bng 4.4: Mt on m tnh tng cc ct awk f suma.awk Conn4.tr > outfile File gc y l file Conn4.tr v u ra c ghi vo mt file c tn l outfile
ta mun thu c mt file cha tt c cc dng ca tr1.tr khi u vi k t r, chng ta g lnh: grep ^r tr1.tr > tr2.tr Nu chng ta mun to ra mt file m tt c cc dng bt u vi s v cha chui tcp 1020 chng ta g lnh: 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 vi gnuplot
Gnuplot l mt phn mm m ngun m min ph c s dng rng ri cho c h iu hnh chy trn nn unix/linux v window. Gnuplot c mt lnh yu cu gip c th c s dng hc chi tit hn v cc tnh nng ca phn mm ny. Cch n gin nht s dng gnuplot l g "plot <fn>", y file (chng ta t tn l fn) c hai ct th hin cc gi tr ta x v y ca cc im. Cc im c th c ni bi ng vi nhiu kiu th hin c nh ngha bi lnh: plot fn w lines 1 (nhng ch s khc nhau c th c s dng thay cho 1, gi tr ny th hin cc kiu ng (line) khc nhau). Ta cng c th s dng cc kiu im (points) khc nhau bng cch vit lnh nh sau: plot fn w points 9 (mt s kiu im c th c s dng ph thuc vo ch s xut hin sau points). Mt s chc nng khc ca gnuplot: hy xem trong v d di 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 thc th v c nh hn mc nh. Dng 2: ch ra kch thc im v c ln hn mc nh. Dng 4: gii hn khong gi tr trn trc x l 90-120. Dng 5: v ra 3 ng trn cng mt th, mi ng ly s liu t 3 file khc nhau: fn1, fn2, fn3. Dng 3: cho gnuplot bit chnh xc v tr v key, l phn ch thch ca th m t cc i tng v. Thng thng, n ch ra mi i tng c v s dng kiu ng v im nh th no. Thay cho vic m t chnh xc mt v tr, ta cng c th s dng cc t kha left, right, top, bottom, outside v below .v.v set key below (cu lnh trn t bng ch thch bn di th), hay ta ch cn g set nokey b i bng ch thch. Ch rng tn mc nh cho mi i tng xut hin trong bng ch thch ch n gin l tn ca tp t v th. Nu chng ta 78
Nu mt chui cc cu lnh c s dng i s dng li nhiu ln, ta c th vit chng vo trong mt file, gi s c tn l g1.com, v sau ch cn load li file mi ln chng ta s dng bng cu lnh nh sau: load g1.com gnuplot c th c s dng trch tch mt vi ct t mt file nhiu ct. iu c thc hin 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 lnh trn c ngha l v mt ng th s dng s liu ca ct 1 ca file queue.tr trn trc x v cc gi tr ca ct 4 chia cho 1000 trn trc y, v sau v trn cng th mt ng khc s dng s liu ca ct 5 cho trc y v cng s liu ct 1 cho trc x. Ch : th t ca "using", t v lines trong cu lnh l quan trng !
4.5. V th vi xgraph
Xgraph l mt cng c v th c cung cp bi ns. (i khi cn phi tin hnh bin dch ring r cho xgraph trong th mc xgraph s dng lnh ./configure v make. Xgraph c th c ng gi cng ns trong cc phin bn ns-allinone hoc c th ti ring r xgraph v ci). Ch rng cng c ny cho php to ra cc file postscript (eps), nh Tgif, v cc nh dng khc bng cch n vo nt Hdcpy. Cu lnh gi xgraph c th c khai bo trong kch bn tcl do c th xut ra th ngay sau khi kt thc cng vic m phng. u vo ca xgraph l mt hoc nhiu ascii file cha mi cp gi tr x-y trn mt dng (mi dng s v c mt im trn th). V d lnh xgraph f1 f2 s v ra trn cng mt hnh th ca file 1 v file 2. Mt s la chn c s dng trong xgraph l: Title: s dng t "title" Kch thc: -geometry xsize x ysize. Tiu cho cc trc: -x xtitle (khai bo tiu cho trc x) v y ytitle (khai bo tiu cho trc 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
Mc lc
te lec om
84
84 85 86 87 88 88 89 91 91 92 93 94
5.1.1. Bt u nh th no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2. Hai node, mt lin kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3. Gi d liu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Topo trong NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1. To topo trong NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2. To cc s kin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3. nh nhn cho lung d liu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4. Gim st hng i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Mng c tnh cht ng . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bin tp: H Tt Thnh, Trn Cng L Bn gc: Tutorial for the Network Simulator "ns", part 4,5,6 [3]
vn
5.3.2. Lin kt li . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
v nhng lin kt (links), lm th no gi d liu t mt node n node khc, lm th no iu khin hng i hay chy NAM t tp lnh va vit hin th qu trnh m phng.
5.1.1. Bt u nh th no
Chng ta s vit mt mu chung c th s dng li cho mi ln nh vit tp lnh Tcl mi. Bn c th vit tp lnh Tcl bng bt c trnh son tho no nh joe hoc emacs. Ti t tn cho v d ny l example1.tcl. u tin, cn to ra i tng m phng bng cu lnh:
Tip theo to tp tin phc v cho chc nng bm vt d liu (trace data) ca NAM (network animator) set nf [open out.nam w] $ns namtrace-all $nf
Dng lnh u tin s m tp tin out.nam vi nh danh l nf. Trong dng lnh th
vn te lec
lin quan n nam vo trong tp tin ny. proc finish {} { global ns nf close $nf exit 0 $ns flush-trace exec nam out.nam & } ng. phng. $ns at 5.0 "finish" gin lp lch cho cc s kin bng cu lnh at . Dng cui cng l kt thc vic m phng
Dng tip theo bo chng trnh m phng thc hin th tc finish sau 5.0 giy m
om
85
$ns run By gi bn c th lu tp tin v chy th bng lnh ns example1.tcl. Bn c th gp thng bo li nh nam: empty trace file out.nam bi v chng ta cha nh ngha bt c i tng ( node, lin kt. . . ) hay s kin no. Chng ta s hc cch nh ngha cc i tng trong phn 5.2 v cc s kin trong phn ??. Bn s phi s dng li on m trong phn ny cc phn khc. Bn c th ti ti y hoc ti y
86
5.1.3. Gi d liu
D nhin, v d trn l cha hon thin v bn ch c th thy c m hnh topo v cha c hot ng xy ra, v th bc tip theo l gi d liu t node n0 n node n1. Trong ns, d liu lun c gi t mt tc nhn (agent) n tc nhn khc. Do , cn phi to ra mt tc nhn gi d liu t node n0, mt tc nhn khc nhn c d liu 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 lnh u to ra tc nhn UDP (User Datagram Protocol:giao thc d liu ngn ngi dng) v gn n cho node n0. Nhng cu lnh tip theo to ra b to d liu tc khng i CBR (Constant Bit Rate:tn s bit bt bin) m c th t ng gi cc gi tin c di 500 byte cch nhau 0.005 giy (tc l 200 gi tin/giy). Bn c th tm thy cc thng s thch hp cho mi tc nhn ns manual page Dng tip theo l to mt tc nhn Null vi tc ng lm suy gim lu lng gn n vo vo node nt n1. set null0 [new Agent/Null] $ns attach-agent $n1 $null0 Hai tc nhn c kt ni vi nhau theo cu lnh: $ns connect $udp0 $null0 V by gi, ta cn bo trm CBR khi no th gi d liu, khi no th dng. Ch : Tt nht l t cc dng lnh ny ngay trc dng "$ns at 5.0 "finish" $ns at 0.5 "$cbr0 start" By gi bn c th lu tp tin v bt u m phng li. Khi bn lick vo nt play ca s nam, bn s thy 0.5 giy sau m phng node 0 bt u gi gi d liu ti node 1. Bn c th lm chm nam bng con trt Step $ns at 4.5 "$cbr0 stop"
87
Hnh 5.2: Gi d liu gia n0 v n1 Nh vy bn c mt cht kinh nghim vi nam v on m Tcl. Bn c th click bt k gi d liu trong ca s nam gim st n hay click trc tip ln cc lin kt c mt s th thng k. Bn nn thay i tham s packetsize_ v interval_ trong on m Tcl thy c iu g xy ra. Bn c th ti ton b v d ti y hoc ti y Hu ht cc thng tin cn thit m ti cn c th vit on m Tcl ny c ly trc tip t cc tp tin v d th mc tcl/ex/, khi thit lp cc thng s CBR (packetSize_, interval_) ti phi ly 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 Bn c th lu v khi ng on m by gi. Bn c th thy rng m hnh mng c v hi rc ri trong nam. Bn c th bm vo nt re-layout thy r hn nhng s tt hn nu c thm mt cht iu chnh trong vic b tr topo. Thm 3 dng sau vo on m Tcl ca bn v khi ng li 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, bn s c th hiu on m ny lm ci g khi nhn topo trong ca s nam. N trng ging nh hnh bn di
Ch rng cc phn lin quan n b tr t ng c b qua, do n b tr theo mnh. Ty chn cho hng ca cc cc lin kt l phi, tri, ln, xung v s kt hp cc hng . Bn c th th nghim vi cc ci t sau, nhng by gi hy thot khi topo mng theo ng cch.
5.2.2. To cc s kin
By gi chng ta to ra hai tc nhn UDP vi lung ti nguyn CBR v gn chng cho node n0 v n1. Ri to 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 cn phi c kt ni vi tc nhn Null. $ns connect $udp0 $null0 $ns connect $udp1 $null0 Chng ta mun tc nhn CBR th nht bt u gi lc 0.5 giy v kt thc lc 4.5 giy trong khi tc nhn CBR th hai bt u lc 1.0 giy v kt 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 bn bt u on m ns example2.tcl ngay by gi, bn s rng lu lng trn cc knh truyn t n0 n n2 v t n1 n n2 nhiu hn lu lng m knh truyn t n2 n n3 c th mang c. Mt tnh ton n gin xc nhn vic ny: Chng ti ang gi 200 gi tin/giy trn mi knh trong hai knh truyn u tin vi kch thc gi tin l 500 byte. Iu ny n n mt bng thng 0.8 Mbps cho cc knh truyn t n0 n n2 v t n1 n n2.. Tng bng thng l 1.6 Mb/giy nhng knh truyn gia n2 v n3 ch c dung lng l 1Mb/giy, v th hin nhin l vi gi tin b loi ra. Nhng gi tin no b loi? C hai lung u mu en v th ch c th thy c iu g ang din ra i vi gi
90
tin l gim st chng trong nam bng cch click vo chng. Tip theo ca phn 2, ti s trnh by cch lm th no phn bit cc lung khc nhau v lm th no thy tht s iu g ang thc s xy ra hng i ti knh truyn t n2 n n3.
By gi bn c th khi ng li tp lnh v mt lung c mu xanh, lung kia mu . Khi theo di kt ni t node n2 n node n3 v bn s rng sau mt thi gian truyn th cc phn b gia cc gi tin mu xanh v mu khng cn cn bng na (ch t l trn h thng ca ti). Trong phn tip theo ti s trnh by cho bn lm th no c th theo di bn trong hng i ca lin kt ny tm hiu chuyn g ang xy ra .
91
$ns duplex-link-op $n2 $n3 queuePos 0.5 Khi ng ns li v bn s thy mt hnh nh tng t bn di sau mt thi gian ngn
By gi bn c th thy cc gi tin trong hng i v sau c th thy cc gi tin b loi b nh th no v i qua nh th no, mc d ch c gi tin mu xanh b loi (ch t trong h thng ca ti, ti on l c th khc nhau trong phin bn sau hoc trc ). Nhng bn khng th trong i qu nhiu vo s cng bng t mt hng DropTail n gin. V th hy c ci thin bng cch s dng hng i SFQ (stochastic fair queueing: hng i cng bng ngu nhin) cho kt ni t n2 n n3. Thay i nh ngha cho lin kt gia n2 v n3 vi dng lnh bn di $ns duplex-link $n3 $n2 1Mb 10ms SFQ By gi, vic xp hng c l l cn bng ri. S lng mu xanh v mu b loi l nh nhau.
Bn c th ti v d y y hoc y
92
5.3.1. To mt Topo ln hn
Ti gi cho bn gi tp lnh Tcl trong v d ny l example3.tcl. Bn c th chn vo mu ti y hoc ti y, trong phn 5.1 Thng thng, trc tin, mt topo c to ra, mc d ln ny chng ti c hng tip cn khc m bn s cm thy d dng hn khi mun to cc m hnh mng ln. on m bn di to ra by nt v lu chng trong mng n() for {set i 0} {$i < 7} {incr i} { set n($i) [$ns nt] } Cc bn tng gp vng lp for cc ngn ng lp trnh khc trc y, v ti chc rng cc bn hiu cu trc ny mt ln na. nhng mng , cng nh cc bin khc trong Tcl, chng khng cn phi c khai bo u tin . By gi chng ta s kt ni cc nt thnh mt topo vng trn. Ban u dng m bn di trng c v phc tp hn mt cht. for {set i 0} {$i < 7} {incr i} { $ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms DropTail } Vng lp for kt ni tt c cc nt vi nt tip theo trong mng tr nt cui cng, nt ny s kt ni vi nt u tin.. thc hin iu , ti s dng ton t % By gi, khi bn cho chy on m, u tin topo c v l trong NAM nhng sau khi bn bm vo nt re-layout th n s trng ging hnh bn di.
93
5.3.2. Lin kt li
Bc tip theo l gi d liu 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, on m trn c l quen thuc vi bn. Ch khc vi cc phn trc l by gi chng ta s dng cc thnh phn mng l cc nt. Nu bn khi ng tp lnh, bn s thy rng lu lng s chn ng ngn nht t nt 0 ti nt 3 i qua nt 1 v 2 ng nh mong i. By gi chng ti thm mt tnh nng th v khc. Chng ta hy lm cho lin kt gia 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 hiu hai dng lnh trn. By gi bn chy li tp lnh v bn s thy rng t giy th nht n giy th 2 knh truyn s b t v tt c d liu c gi i t nt 0 b mt. By gi ti s cho bn thy lm th no s dng nh tuyn ng gii quyt vn trn. Thm vo dng lnh bn di vo phn u ca on m Tcl ca bn sau khi i tng m phng c to ra. $ns rtproto DV
94
Bt u m phng li, bn s thy u tin c rt nhiu gi tin nh truyn qua mng. Nu bn lm chm nam xung click vo mt trong s chng bn s thy rng cc chng l cc gi tin rtProtoDV c s dng thay i thng tin nh tuyn gia cc nt. Khi knh truyn b t tr li lc 1 giy, vic nh tuyn s c cp nht v lu lng s c nh tuyn li i qua nt 6, 5, v 4.
95
Ngi dch: Nguyn Thy Vn Bin tp: Hong Trng Minh Bn gc: NS Simulator for beginners, Chapter 4 [2]
TCP (Transport Control Protocol) l mt giao thc truyn ti chu trch nhim truyn khong 90% lu lng d liu trn Internet. Chnh v vy, nm vng v hiu r TCP ng
96
vai tr v cng quan trng nh c lu lng trong Internet. Mc d TCP c trin khai rng khp, n vn pht trin khng ngng. IETF (Internet Engineering Task Force) l t chc tiu chun ha chnh lin quan ti giao thc TCP. Khng ging nh cc t chc chun ha khc (ITU hoc din n ATM) tt c cc tiu chun ca IETF min ph v c sn trn mng. phn u tin, ta s m t hot ng ca TCP. Cn cc phn sau , ta xem xt mt s on m NS m t phn tch TCP thng qua m phng
6.1. M t TCP
6.1.1. Cc mc ch ca TCP v iu khin lung theo c ch ca s
TCP nhm mt vi mc ch sau: iu chnh tc truyn cc gi d liu sao cho ph hp vi bng thng kh dng. Trnh hin tng nghn mng. To kt ni tin cy bng cch truyn li cc gi tin b tht lc. iu khin tc truyn, s lng cc gi tin cha c nhn (hay ni mt cch chnh xc hn l nhng gi tin m ngun cha nhn c thng tin phn hi t ch l nhn c) b gii hn bi mt tham s gi l mt ca s tc nghn. Chng ta t tn l W , tuy nhin trong ng cnh ca TCP n k hiu l cwnd. iu ny c ngha l ni truyn cc gi tin buc phi ch v ngng truyn cc gi tin m n truyn trc v cc gi tin ko c xc nhn ny c tn l W. cc gi tin ny c xc nhn v c kh nng truyn li cc gi tin b tht lc, mi gi tin c truyn i phi c mt s th t.
97
Lm th no m ch n ca gi tin bit l gi tin c b tht lc ? Lm th no m ta bit c mt gi tin b mt? Gi ACK cha thng tin g? Gi tin ACK cho ngun gi tin bit s th t ca gi tin m n ch i. V d sau s minh ha cho iu ny. Gi s gi tin 1,2,. . . ,6 n ch theo th t. Khi gi tin s 6 n, ch gi mt gi tin ACK thng bo rng n ang i gi tin s 7. Nu gi tin s 7 n, ch yu cu gi tin s 8. Gi s gi tin s 8 b tht lc, gi tin s 9 c th n ch c. Ti thi im , ch gi gi tin ACK c tn l ACK lp thng bo vi ngun gi tin rng n ch gi tin s 8. Thng tin trong gi tin ACK ny tng t nh gi tin ACK gi trc . Phng php ny c tn l ACK n (implicit ACK) . Phng php ny hiu qu ngay c khi mt cc gi tin ACK. Hn na, gi s rng gi tin ACK thng bo rng ch i gi tin s 5 b mt, Khi gi tin ACK tip theo n v thng bo rng ch ang i gi s 6, nt ngun hiu rng ch nhn c gi s 5, v vy thng tin gi bi ACK mt c suy ra t gi tin ACK k tip. Gi tin TCP b coi l mt nu nh: C 3 gi tin ACK ging nhau thng tin cho ngun1 v cng mt gi tin c gi i. Khi mt gi tin c truyn i, c mt ng h m thi gian. Nu gi tin ACK ca gi tin c truyn ko n trong khong thi gian T0 , c ngha l qu hn (Time-out) v gi tin coi nh b mt. Qu trnh truyn li sau khi lp li 3 gi tin ACK c gi l truyn li nhanh (fast retransmit) Chn thi gian T0 nh th no? Ngun c lng thi gian quay vng RT T trung bnh, hay ni cch khc l thi gian cn thit cho mt gi tin n ch cng vi thi gian cho gi tin ACK quay tr li thng bo cho ngun. N cng nh gi s bin ng ca RT T . T0 c tnh ton nh sau: T0 = RT T + 4D RT T l c lng hin ti ca RT T cn D l s bin ng ca RT T . c lng RT T , ta tnh ton s chnh lch M gia thi gian truyn 1 gi tin v thi gian gi tin ACK ca n quay tr li. Sau tnh: RT T a RT T + (1 a)M, D aD + (1 a) RT T M
1
...
98
gim s lng gi tin ACK trong h thng, TCP thng xuyn s dng la chn ACK tr (delayed ACK) ti 1 gi tin ACK c truyn ch cho cc gi tin d n ch. Gi tr chun ca d l 2 ( xem RFC 1122). Tuy nhin, tr 1 gi tin ACK n tn khi d > 1 gi tin c nhn c th dn n vic nh tr hon ton trong trng hp kch thc ca s nh. V vy, nu gi tin u tin (nm trong s d gi tin ang c ch i) n ch, sau mt khong thi gian ngt qung (thng l 100ms) nu d gi tin vn cha n th mt bn tin ACK c to ra m khng cn ch i thm na.
99
bt k khi no pht hin ra mt gi tin b mt th ca s gim gi tr xung 1 n v v giai on slow start bt u. iu ny lm gim kch c ca s nhanh chng v cng nh vy vi tc truyn tin. Mt phng php ci thin khc c tn l Reno hay New- Reno, ca s gim xung 1 nu nh pht hin ra gi tin b mt trong thi gian qu hn. Khi mt gi tin mt b pht hin ra thng qua cc gi tin ACK b lp, ca s gim st tc nghn gim xung 1/2. Giai on slow start s ko khi to v ta vn trng thi trnh tc nghn.
6.1.5. Khi to kt ni
khi to mt kt ni TCP, ngun gi mt gi tin ng b (sync packet) dung lng 40 byte n ch. Sau ch gi 1 gi tin ACK (cng c di 40 gi tin gi l gi tin xc nhn ng b (sync ACK)). Khi ngun nhn gi tin ACK ny, TCP c th bt u gi d liu. Ch rng: nu c bt k gi tin no nm trong s nhng gi tin ny b mt sau thi gian qu hn (thng l t 3-6s) th n s c truyn li. Khi gi tin c truyn li b mt, thi gian qu hn tng ln gp i v gi tin li c gi li mt ln na.
100
tnh) cho n khi xy ra nghn mng. Trc thi im 20, ta thy TCP ri vo giai on slow-start trong thi gian rt ngn. thi im 4.2, ti giai on slow-start xy ra hin tng mt gi tin. Ca s cn 1 na trong khi thng lng gn nh v 0. Ta gii thch hin tng ny nh th no? L do l ti thi im 4.2 c mt khong thi gian qu hn, chnh v l , mc d kch thc ca ca s l 30 (gi tin) nhng chng c hot ng truyn tin no din ra. thi im 11, li xy ra hin tng mt gi tin trong giai on slow-start.
101
$ns lossmodel $loss_module $n2 $n3 Lnh $loss_module set rate_0.2 xc nh t l mt gi tin l 20% . N s dng 1 b to bin ngu nhin c phn b u. iu ny c th hin dng tip theo. Dng cui cng quyt nh xem lin kt no b nh hng. Ta xem xt mng c m t ti hnh 6.3. Trong v d ny, kt ni TCP chia s mt knh tp m vi kt ni UDP
102
Kch thc hng i tnh theo byte ( tng ng vi thuc tnh size_ ca i tng monitor-queue). Kch thc hng i tnh theo gi tin ( tng ng vi thuc tnh pkt_) S lng gi tin va n ( tng ng vi thuc tnh parrivals_) S lng gi tin ri khi lin kt ( tng ng vi thuc tnh pdeparture_) S lng gi tin b loi b ti hng i (tng ng vi thuc tnh pdrop_) S lng byte n ( tng ng vi thuc tnh barrivals_) S lng byte ri khi lin kt ( tng ng vi thuc tnh bdepartures_) S lng byte b loi b ( tng ng vi thuc tnh bdrops_) Mt cch khc tm hiu trc tip cc thuc tnh ny c nu mc 4.5 V d tip theo on m 4.1 m t ton b on m to mu m hnh TCP vi cc gi tin b loi b do nhiu.
# To mt v d m phng set ns [new Simulator] $ns color 1 Blue $ns color 2 Red # M 1 file bm vt NAM set nf [open out.name w] $ns namtrace-all $nf # M 1 file bm vt set tf [open.tr w] set windowVsTime2 [open WindowVsTimeNReno w] $ns trace-all $nf #nh ngha 1 qu trnh "hon tt" proc finish {}{ global ns nf tf $ns flush-trace close $nf close $tf exac nam out.nam & exit 0 }
103
#To 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\"" #To ng link gia 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 thc hng i ca lin kt (n2-n3) ti 10 $ns queue-limit $n2 $n3 10 # Gim st hng i cho lin kt gia (ns-n3). (dnh cho NAM). $ns simplex-link-op $n2 $n3 queuePos 0.5 #To m hnh li trn lin kt gia 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 #Thit lp mt kt ni 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 #Thit lp mt FTP thng qua kt ni TCP Set ftp [new Application/FTP] $ftp attach-agent $tcp $ftp set type_ FTP #Thit lp mt kt ni UDP Set UDP [new Agent/UDP]
104
$ns attach-agen $n1 $udp Set null [new Agent/Null] $ns attach-agent $udp set fid_ 2 #Thit lp mt CBR thng qua kt ni 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 #Lp lch cc s kin 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 thc ca 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 # Ly mu hng i nt tht c chai 0.1s mt ln . Lu file bm vt 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 cha, b nhn) $ns at 624.5 $ns detach-agent $n0 $tcp $ns detach-agent $n3 $sink
105
Hnh 6.5: Kch thc ca s TCP vi 20% gi tin mt ngu nhin: phng to
Trong mt vi trng hp, Ta kho st thi gian qu hn di, khong 300. xem xem cc gi tin ngu nhin b mt nh hng ln nh th no n hiu sut hot ng ca TCP, Ta thc hin m phng li nhng ko c cc gi tin b mt. Kt qu c m t ti hnh 6.6
106
Mt cch o hiu nng quan trng l thng lng trung bnh ca TCP. Mt cch n gin tnh ton l tm trong file bm vt out.tr thi im m ch nhn mt gi tin TCP (ti nt 3). Khi thc hin m phng, Ta nhn thy l thi im ny l 624.08754 v file bm vt tng ng l R 624.0827 2 3 tcp 1000------- 1 0.0 3.0 1562 4350 S trc s cui cng cho Ta bit rng: gi tin m ch nhn c l gi TCP s 1562. Theo , thng lng TCP n gin l s b chia ra bi khong thi gian kt ni FTP (623s), ngha l 2.507 gi tin/s, hoc tng ng vi 2.507 Kbyte/s hay 20058 bps) (khi mt gi tin TCP mc nh c dung lng l 1000 byte). Lu : Nu ta nhn vo dng u tin ca file out.tr, Ta s thy l c cc gi TCP khc (mi gi c kch c 40 gi tin) m Ta ko tnh n trong tng s 1562 gi tin. S seri ca chng l 0. Ta ko tnh cc gi tin ny v chng tng ng vi cc gi tin bo hiu (signalling) lin quan n lc bt u kt ni TCP. Mt iu cn ch na l Ta s dng phin bn Ack b tr ca TCP qua vic s dng lnh: Set sink [new Agent/TCPSink/DelAck] Instead of simply set sink [new Agen/TCPSink]
107
#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
111
= 1.16 v vi kch thc nh nht l 1.37Kbytes. Phn b cc thi gian gia hai s kin n ca cc kt ni mi thng c ly theo hm m. Trong phn ny, ta s xem xt cc cch m phng cc phin lm vic ngn v xc nh phn b thi gian truyn, s lng kt ni ang din ra v lu lng. Ta s xem xt mt mng li c cng topo nh trong hnh 6.2: mt vi ngun chia s chung nt tht c chai v cng mt ch chung. Thng s "NodeNb" cho bit s lng ngun. ( trong v d ta ang cp, thng s l 6). Ngun TCP by gi c tham s ha bi 2 tham s: nt ngun v s phin t nt ngun . i vi mi mt trm TCP ta nh ngha mt ng dng FTP. Cc kt ni TCP mi n theo mt qu trnh Poison. V vy, ta khi to mt kt ni TCP mi bng cch dng cc bin ngu nhin c phn b theo hm m. Gi s lin kt nt tht c chai l 2 Mbps, tr l 1ms v kch thc 1 hng i l 3000. Tt c cc lin kt u vo khc tham gia cng lin kt ny c bng thng l 100Mbps v tr l 1ms. Ta s dng phng php New Reno vi kch thc ln nht ca ca s l 2000. Thi gian trung bnh gia nhng ln n ca cc phin TCP mi ti mi nt trong v d ang xt l 45. iu ny c ngha l trung bnh, 22.22 phin mi n mi nt, v vy tng tc n ca cc phin l 22.22 ln NodeNb m trong v d ca ta l 133.33 phin/s .Ta to ra cc phin lm vic c kch thc ngu nhin ( gi tr trung bnh l 10Kbyte), tham s shape ca phn b Pareto l 1.5. Do vy, tng tc n ca cc bit l: 133.33 104 8 = 10.67M bps Ta thy tc to ra ca cc bit ln hn dung lng nt tht c chai, v vy hin tng tc nghn s xy ra. Tuy nhin, TCP c kh nng trnh hin tng tc nghn trong mng ( ti hng i nt tht c chai). V vy, hin tng nghn mng s xy ra theo nhng cch thc khc . iu khin s phin lm vic: Trong ng cnh cc phin TCP ngn, ta quan tm n c s liu thng k gi ln s liu thng k phin. Trong chng trnh ns, Ta s nh ngha th tc qui, c gi l Test. Th tc ny kim tra mi phin lm vic xem liu n kt thc hay cha. Th tc ny gi li chnh n sau 0.1s. ( Gi tr ny c t trong bin time). Nu mt kt ni chm dt, Ta s c mt file u ra cha cc thng s sau: i tng xc nh kt ni i v j ( trong (i, j ) th hin cho ln kt ni th j t nt i. Thi im bt u v kt thc kt ni. Thng lng ca kt ni. Kch thc ca knh truyn d liu tnh theo byte.
112
Sau mt khong thi gian ngu nhin, th tc li xc nh khi u mt qu trnh truyn khc na. Trong on m sau y, file u ra s l Out.ns. kim tra xem liu mt phin lm vic kt thc hay cha, Ta s dng lnh: If{$tcpsrc{$i,$j) set ack_]==[$tcpsrc($tcpsrc($i,$j) set maxseq_]} { Mt th tc qui khc tn l countFlows c s dng cp nht s kt ni ang hot ng t mi nt (c lu tr di dng vect Cnts c di tng ng vi s kt ni ang din ra t nt j2 Th tc c 2 thng s: ind v sign. Thng s ind cho bit nt ngun no c quan tm cn thng s signcho th tc bit phi lm g: gi tr ca sign l 0 nu cuc gi kt thc cn n s l 1 nu cuc gi bt u. Nhng thng s ny c s dng khi vic gi th tc xy ra lc bt u v kt thc kt ni. Th tc cng t gi li chnh n u n sau 0.2 v sau n in s lng cuc gi ang din ra vo file Conn.tr. lm c iu , gi tr ca thng s sign ko phi l 1 cng ko phi l 0. (Ta t l 3) Gim st hng i: tip tc vi chng trnh tcl, Ta xem xt mt cch khc thc hin vic gim st hng i. Cch ny phc tp hn phng php m Ta xem mc 4.3 Ta s dng li cc cu lnh: 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 phi gii hn vi lnh ny, ta lm vic trc tip vi cc thuc tnh ca gim st hng i(monitor-queue) c m t mc 4.3. Vic ny c tin hnh trong mt th tc c tn l record. Th tc ny t ng lp li sau 0.05s. V d, chng ta sao lu bng thng s dng ca hng i (tnh theo Kb/s) thnh mt file bng cch chia s lng s lng gi tin i trong mt khong thi gian cho khong thi gian . Lu l gim st hng i tng s lng cc byte n trong thuc tnh bdepartures_. Nu nh ta ch mun tnh n s lng departure trong mt khong thi gian ( m ko phi trong sut ton b thi gian m phng), ta phi chnh li gi tr ca bdepartures_ cui mi qu trnh tnh ton bng thng mi.
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)
----
Mi quan tm dnh cho cc b m khc nhau cc nt khc nhau th hin ch ta cng c th s dng chng trnh cho cc lin kt ko i xng, trong trng hp ny ta c th s nghin cu s ph thuc ca hiu nng vo tr ca knh truyn 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
Di y l mt s kt qu quan st c 1. Trong c 2 hnh, s lng gi tin ti hng i nhiu hn s lng Kbyte c xp hng. iu ny dng nh l v mt gi TCP c kch thc l 1Kbyte! L do l cc phin c s lng gi tin ln rt t (Mt phin thng ch c 3 gi tin hoc t hn). V vy, s lng gi tin u phin c kch thc 40 byte (c gi lc bt u kt ni TCP) cng ng k. (khong 1/3) Nu tnh n nhng gi tin ngn ny th c nhiu gi tin hn lng Kbyte.
118
2. Ta quan st thy rng hnh 4.8 kch thc hng i n nh 3000. y l kch thc ln nht m hng i t ti. Tip theo thi im ny s xy ra hin tng mt gi tin hng i. 3. Nh trn hnh 4.8 th hin, s lng gi tin lun lun ln hn s lng Kbyte xp hng v trn hnh 4.9, sau mt khong thi gian no , s lng gi tin s bng vi s lng Kbyte. Ti thi im ny, tt c cc gi tin hng i l cc gi tin d liu TCP v ko c cc gi tin 40 byte dnh cho khi to phin. iu ny c c khi ta gii hn s lng gi tin ti mi nt xung cn 130. 4. Nu ly tc d liu to ra tr i tc ra ca lin kt nt tht c chai, ta s thu c lng d liu c xp hng ti hng i ca lin kt nt tht c chai ln hn rt nhiu. L do l d liu cng c lu li ti b nh m ca ngi gi. Tip theo ta quan st s pht trin s lng kt ni ang din ra h thng, nh trong hnh 6.10 v lng bng thng c s dng lin kt nt tht c chai hnh 6.11
1. Th nht l xc nh nhng hot ng cn lm lin quan n vic hy kt ni trong th tc done, l mt th tc t ng c gi n khi mt kt ni kt thc. S nhn dng ca kt ni va kt thc cng nh l cc thuc tnh khc ca kt ni (v nh thi gian khi u ca n chng hn) c th c th tc ny s dng nu
119
n c nh ngha nh cc trng thi ca qu trnh kt ni. Tip cn ny c th hin on m tcl shortTcp2.tcl bng ?? 2. Ta cng c th dng qu trnh gim st trn mi lung. Qa trnh ny cung cp cc con s thng k trn mi lung v 1 s thng tin nh s lng gi tin truyn, cc byte truyn, gi tin b mt, vv. Ta s li phn tho lun tip cn ny trong phn sau ?? nh ngha trng thi(state) ca cc kt ni TCP trong on m ny c a ra cng ging nh cch nh ngha kch thc ca s ln nht ca TCP, ngng ban u ca giai on slow-start., vv. Trong on m, chng ta nh ngha thi gian bt u phin lm vic, nhn dng nt v phin lm vic cng nh l kch thc truyn nh theo cc trng 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 dng cc trng thi khc ca kt ni TCP: Ndatapack_ l s lng gi tin c truyn bi kt ni ( nu 1 gi tin c truyn li vi ln, n ch c m 1 ln Ndatapbytes_ l s lng byte d liu c truyn bi kt ni Nrexmitpackets_ l s lng gi tin c kt ni truyn li Nrexmitbytes_ l s lng byte c kt ni truyn li
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 tp
Bi tp 6.7.1. Gii thch ti sao kch thc ca s dao ng nhiu hn so vi thng lng trong hnh 6.1 v hnh 6.2 Bi tp 6.7.2. Thng lng trung bnh v t l mt gi tin ca kt ni TCP trong v d ex1.tcl l g? Bi tp 6.7.3. Kch thc hng i trung bnh trong v d ex1.tcl l g? Bi tp 6.7.4. Nghin cu nh hng ca xc sut mt gi tin trong m hnh nhiu rdrop.tcl ln thng lng TCP vi xc xut mt gi tin dao ng t 0 -40% Bi tp 6.7.5. Sa i on m rdrop.tcl nghin cu nh hng xc sut mt ca cc gi tin (C th l gi tin ACK) trn knh truyn ngc n3-n2. V th thng lng nh l mt hm xc sut mt gi tin i vi t l mt gi tin dao ng t 0 - 40%. TCP nhy cm hn vi vic mt ngu nhin cc gi tin gi i hay nhn v cc gi tin ACK? Bi tp 6.7.6. M phng 2 lin kt TCP cnh tranh i xng chia s chung ng lin kt nt tht c chai. Mi lin kt chim bao nhiu phn bng thng nu:
124
(i) ch 1 lin kt s dng la chn ACK b tr v c 1 lin kt u l NewReno (ii) c 2 lin kt u dng la chn ACK n gin, lin kt u dng phin bn Tahoe cn lin kt cn li dng phin bn NewReno Bi tp 6.7.7. Trong th tc plotWindow cui on m ex3.tcl bng 6.2 , chng ta coi s lin kt nh 1 tham s ca th tc. Nhng nu ta coi n nh 1 bin chung th iu g s xy ra? ( c ngha l chng ta vit global ns j) Bi tp 6.7.8. Phn tch cc qu trnh mt gi tin trong ex3.tcl ( xem bng 4.2). Kch thc hng i knh n2-n3 s l bao nhiu trnh hin tng mt gi tin? Bi tp 6.7.9. Thm vo on m shortTcp.tcl ( Bng 6.4 ) cc gi tin b mt ngu nhin (i) knh truyn i (ii) knh nhn v N-D. T l mt gi tin bin i trong khong t 0 40 %. Phn tch thi gian trung bnh truyn 1 file v lch tiu chun ca thi gian ny nh l mt hm ca t l mt gi tin. Gii thch kt qu thu c! Lu : trong trng hp c nhiu ngi s dng, 1 ngi c th mong i rng nu 1 s phin lm vic c thng lng thp do b tn hao, s c thm thng lng sn c dnh cho cc phin lm vic khc cc phin TCP ngn t nhy cm vi tn hao hn cc phin di. Cc qu trnh m phng xc nhn iu ny hay ko? Nu ko, hy gii thch iu g xy ra.
125
Ngi dch: Trn Diu Linh Bin tp: Hong Trng Minh Bn gc: NS Simulator for beginners, Chapter 5 [2]
Chng ta s xem li trong chng ny c nh tuyn unicast v multicast. Cc giao thc nh tuyn tp trung vo ng i c nh (nh tuyn tnh) s c so snh vi nh tuyn ng. Tc dng ca kt ni ng trong nh tuyn s c kim tra. Mt tham chiu tt cho nh tuyn qua Internet nm trong tham kho [6].
126
7.1. Bt u nh th no
C mt vi kiu nh tuyn qua Internet. Mt kiu n gin nht l kiu nh tuyn tnh trong ng i ngn nht (gii hn bi s cc hop) c la chn trong cc kt ni. Ns c th m phng cc lin kt nhiu ( nh chng ta thy trong phn 7.3 ) hoc thm ch cc lin kt c th b ngt kt ni. m phng s ngt kt ni ca mt lin kt gia nt n1 v nt n4 t thi im 1 n 4.5, v d ta c th dng lnh: $ns rtmodel at 1.0 down $ns1 $ns4 $ns rtmodel at 4.5 up $ns1 $ns4
By gi, chng ta xt mng c m t trong hnh 7.1, trong c hai mng khc nhau gia nt ngun 0 v nt ch 5. nh tuyn tnh mc nh c s dng bi ns, s la chn tuyn 0-1-4-5 cho vic thit lp kt ni.
Set ns [new Simulator] #nh ngha cc mu khc nhau cho cc lung d liu (dnh cho NAM) $ns color 1 Blue $ns color 2 Red #Open the Trace file Set file1 [open out.tr w]
127
$ns trace-all $file1 #m file theo du NAM (open the NAM trace file) Set file2 [open out.nam w] $ns namtrace-all $file2 #nh ngha th tc finish (define a finish procedure) Proc finish {} { global ns file1 file2 $ns flush-trace close $file1 close $file2 exec nam out.nam & exit 0 } #dng tip theo nn c ghi ch ch r nh tuyn tnh. $ns rtprt DV #to 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] # To cc lin kt gia 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
#a ra v tr ca nt (cho NAM) $ns $ns $ns $ns $ns duplex-link-op duplex-link-op duplex-link-op duplex-link-op duplex-link-op $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 kt ni 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 kt ni 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. Mng ng
Chng ta c th thy phn trc, chng ta c th xc nh trng thi lin kt hin: lin kt c th down v up ti cc thi im chn trc. Tuy nhin, kt ni ng c th thay i theo cc tin trnh ON-OFF hm m, hoc tin trnh ON-OFF xc nh, hoc theo mt s d liu kho st theo yu cu. Cc m hnh hm m hoc m hnh xc nh c bn tham s: thi gian bt u (mc nh l 0,5 giy t khi bt u m phng), chu k up (mc nh l 10 giy), chu k down (mc nh l 1giy) v thi gian kt thc (mc nh l kt thc m phng). Trong trng hp hm m, cc tham s up v down tng ng vi khong thi gian d tnh. V d, cu trc cho m hnh quyt nh c p dng cho lin kt n1-n2 l: $ns rtmodel Deterministic {0.8 1.0 1.0} $n1 $n2
(thi gian kt thc l mc nh). Trong mt cu lnh theo dng $ns rtmodel Deterministic {0.8 1.0} $n1 $n2
Cc thi im bt u v kt thc l mc nh v trong cu lnh theo dng $ns rtmodel Deterministic {1.0} $n1 $n2
Ch c tham s khng mc nh l chu k down. Kt ni hm m a ra trn bng cch thay hm xc nh Deterministic bng hm m Exponential Cu lnh tng ng vi kt ni da trn file theo vt l: $ns rtmodel Trace <config_file> $n0 $n1
Cui cng, cu lnh cng c th to th t cc trng thi nh tuyn l ns, v s dng n nh u vo (xem [1] ). Cc li nt: C mt kh nng l mt nt ang down v up. iu ny ging nh ta thy trong cc trng hp li lin kt, ngoi tr trng hp mt nt xut hin ti im cui.
130
trong khi bn gi c th gi m khng cn tham gia vo nhm t trc. Bn gi khng nhn c phn hi t mng v vic bn nhn trong nh tuyn IP multicast. Khng phi tt c cc nt ca mng u c th x l multicast, trong ns ta c th m t cc nt c kh nng multicast mt cch chi tit. Mt giao thc nh tuyn nh ngha mt c ch m qua cy multicast c tnh ton trong m phng. C hai lp chnh ca cc lp nh tuyn: 1. Kiu dense mode thch hp i vi trng hp s lng ngi dng multicast ln, trong trng hp ny, cc cy multicast c xy dng cho bt k mt cp ngun no v nhm multicast ca n. Vic xy dng cy yu cu qung b n tt c cc nt trong mng. 2. Sparse mode c s dng trong trng hp s cc nt nh. Do , nh tuyn c th c x l bng vic s dng mt cy n c chia s. Bn giao thc nh tuyn multicast c s dng trong ns: Dense Mode (DM), Centralised (CtrMcast), Share Tree Mode (ST), v Bi-directional Sahred Tree Mode (BST). Khng may, cch ns m phng cc giao thc khng c nhiu bo hiu, c bit trong qu trnh khi to. Giao thc DM ch l mt giao thc c phin bn ng trong ns, c gi l dynamicDM.
7.3.1. Ch Dense
Giao thc DM c hai ch kh ging nhau: Protocol pim DM (Protocol Independent Multicast Dense Mode) v dvmrp (Distance Vector Multicast Routing Protocol) [40], pimDM n gin hn mt cht. Chng u da trn vic trn lt khi to ca mng (s dng tip cn RFP) v sau da trn tnh ton ng ngc li ngn nht. Chng ta gi s rng bng nh tuyn im ti im P2P l sn c. iu ny c thc hin nh sau. Nu router nhn c gi tin a im multipoint t ngun S n nhm G, u tin n kim tra (s dng bng nh tuyn P2P) m giao din nhn u vo tng ng vi gi tin S: iu ny c ngha rng router ny l ng i ngn nht t ngun (do , y c gi l "ng tr li ngn nht"). Nu kt qu l m th n gi thng ip "delete (S.G)", v d bn tin n ngun yu cu ngng vic gi n n gi tin t S n G. Nu kt qu dng th router gi mt bn sao ca thng ip n tp T ca tt c cc giao din m qua n khng nhn c yu cu "delete(S,G)". Nu T rng, th n hy gi tin v gi thng ip delete(S,G) n giao din m qua n nhn c thng ip.
131
Trong kch bn tcl, chng ta nh ngha a ch nhm qua s dng cu lnh "set group1 [Node allocaddr]".Sau , chng ta nh ngha mt ng dng v mt giao thc truyn ti, mt mt gn vo nt ngun c a ra v mt khc gn vo nhm ch.
132
Chng ta xt n giao thc DM di y. Khi ngun S gi n mt nhm G tr thnh active, n bt u trn lt thng tin qua mng n cy c gn vo tng ng vi nhm G. Khi mt l khng tham gia vo nhm multicast m nhn mt gi tin t nhm , n gi thng ip n giao din n xa n t cy (S,G) (gi prune). Sau , n qung b tr li ngun: mt nt nhn mt thng ip t tt c cc lin kt u ra ca n trong cy ca (S,G) yu cu xa cc lin kt ny, gi tr li giao din n mt thng ip xa n t cy (S,G). Mt ngun s ngng hon ton vic gi gi tin nu khng c kt ni n bn nhn trong nhm ; n s tip tc li vic gi gi tin khi bn nhn kt ni. Mt v d ca cu hnh multicast vi su nt mng c m t trong hnh 7.2 Chng ta xt n mng 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 &
7.4.1. Ch DM
Cu lnh set mproto DM ch ra rng chng ta s dng giao thc Dense Mode. Mc nh, pimDM c s dng. s dng ch dvmrp, phi thm dng sau DM set CacheMissMode dvmrp trc dng set mproto DM Trong ch DM, vic trn lt xy ra theo chu k, do pht hin cc nt c kt ni vi nhm. Gi tr b nh thi cho chu k c a ra trong bin c gi l PruneTimeout
135
. Mc nh, gi tr ny l 0.5 giy. Nu ta yu cu gi tr khc , v d nh 0.8 giy, th thm vo kch bn tcl cu lnh: DM set PruneTimeout 0.8 ch trc 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 chn n(2) l im RP. Trong c ch tp trung cng nh ch ST, bo hiu (cc gi tin prune) khng c m phng. Chng ta th hin trong bng 7.3 , cng mt v d nh trong pimdm.tcl (bng 7.2) nhng vi giao thc nh tuyn 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.6. Bi tp
Bi tp 7.6.1. Chy chng trnh ex2.tcl (xem bng 7.1) ghi ch lnh "$ns v gii thch iu g xy ra. rtproto DV"
138
Bi tp 7.6.2. Chy chng trnh ex2.tcl (xem bng 7.1) vi lnh "$ns gii thch s khc nhau vi nh tuyn tnh trc .
rtproto DV" v
Bi tp 7.6.3. Thay i v chy m phng ex2.tcl (xem bng 7.1) trong khong 20 giy vi nh tuyn tnh nhng vi mt kt ni hm m ON-OFF ng, vi thi gian trung bnh ON l 3 giy v thi gian trung bnh OFF l 0.5 giy. Phn tch hnh vi ca kt ni TCP v hnh vi ca time-out. Bi tp 7.6.4. Chy kch bn pimdm.tcl (xem bng 7.2). C bao nhiu gi gin CBR c truyn t mi mt ngun, v c bao nhiu gi tin b mt? C bao nhiu gi tin CBR c nhn ti cc nt m khng cn chng (chnh xc hn, c bao nhiu gi tin prune c to)? Bi tp 7.6.5. Xt du vt t c t kch bn pimdm.tcl. Ti thi im 1.8375 chng ta bt u c mt mt ti nt 0. Ti thi im 2.481 cc gi tin bt u mt cng ti nt 1. Gii thch s mt mt ny. Bi tp 7.6.6. Chy chng trnh pimdm.tcl vi ch dvmrp ca DM. Bn c quan st c s khc bit no gia dvmrp v phin bn pimDM? Bi tp 7.6.7. Chy phin bn tp trung ca multicast. Gii thch iu g xy ra khi RP c thay i nt n(5) (trong NAM n s tng ng vi nt 4, khi NAM m t 0). Gii thch v sao n t hiu qu hn vic chn nt RP l n(2). Chng ta c th nh gi hiu qu bng cch no?
139
te lec om
140
8.3. Cc v d v m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1. B m loi Drop-Tail (B ng ui) . . . . . . . . . . . . . . . . . . 8.3.2. B m RED vi cu hnh tham s t ng . . . . . . . . . . . . 8.3.3. B m RED vi cc tham s khc . . . . . . . . . . . . . . . . . . . . . 8.4. Gim st cc lung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.5. Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1. M t RED
C ch qun l b m RED c gii thiu vo nm 1993 by Floyd v Jacobson [10] , v c m t su hn trong RFC 2309 [11] , Nhiu ti liu tham kho quan trng v RED c th c tm thy trang web http://www.icir.org/floyd/red.html. tng c bn l khng nn ch ti khi b m b y pht hin tc nghn (loi b gi tin), m bt u d tm s tc ngh trc khi b m trn. Cc du hiu ca s tc nghn c th vn thng
vn
qua vic loi b gi tin, nhng gi y, cng c th thng qua vic nh du cc gi tin m khng cn phi loi b chng. Mt s mc tiu ca qun l b m RED l: 1. u tin cc cm d liu (burst) ngn thuc loi delay sensitive (nhy cm vi tr), nhng khng cho php kch thc hng i trung bnh tng qu nhiu. Bng cch dng mt vic lc low past no cho kch thc hng i, mc ch ny l pht hin s tc nghn m c thi gian di. 2. Cc cng loi Drop Tail v Random Drop c s thin v (bias) i vi lu lng cm (bursty traffic). Tht vy, trong nhng b m nh vy, cng nhiu lu lng ca mt kt ni loi cm, hng i cng c kh nng trn ti thi im ti ca cc gi tin ca kt ni . 3. Trnh ng b: b m loi drop-tail, nhiu kt ni c th nhn du hiu tc nghn ti cng thi im dn n cc dao ng khng mong mun thong lng. Cc dao ng ny c th lm cho thng lng trung bnh thp hn v jitter cao. trnh ng b (l trnh vic cc phin kt ni nhn tn hiu tc nghn ti cng 1 thi im), cc tn hiu tc nghn c chn mt cch ngu nhin. 4. iu khin kch thc hng i trung bnh. rng iu cng c ngha l iu khin tr hng i trung bnh. t c cc mc tiu ny, RED gim st kch thc hng i trung bnh avg , v kim tra n c nm gia ngng cc tiu minth v cc i maxth no hay khng. Nu c, th mt gi tin ti s b loi b hay c nh du vi xc sut p = p(avg ), xc sut ny l mt hm tng theo kch thc gi tin trung bnh. Tt c cc gi tin ti khi avg vt qu maxth s c nh du/loi b. Xc sut p(avg ) c chn nh sau. Khi kch thc hng i trng bnh thay i trong khong minth v maxth , mt xc sut pb thay i tuyn tnh gia 0 v gi tr maxp no chng hn. pb (avg ) = maxp avg minth maxth minth
Xc sut ny c dng nh p(avg ) nu ti thi im ti ca gi tin trc avg minth . Nu khng p(avg )/(1 + p(avg )). Kch thc hng i trung bnh ny c gim st nh sau. Ban u, tham s avg c t = 0. Sau , vi mi gi tin ti, avg c t gi tr mi: (1 q )avq + q
141
y, q l kch thc hng i thc t v q l mt hng s no . Nu hng i tr nn rng, mt cng thc khc c dng cp nht kch thc ca n, cng thc ny s tnh n thi gian t khi hng i tr nn rng v mt c lng s cc gi tin c th c gi i trong sut thi gian ri ny, xem thm[11]. c lng cc gi tin sau ny, ta c l s cn a mt c lng th kch thc gi trung bnh nh mt tham s trong ns. Cc v d v cc tham s RED nghin cu [10] l q = 0.002, minth = 5 gi tin, maxth = 15 gi tin, maxp = 1/50 v kch thc hng i l 100. Thng thng, ngi ta cng khai thc gi tr minth nm trong di t 3 n 50, v gi maxth = 3minth S thc hin red trong ns c th c tn thy trong ns-allinone-2.XXX/queue/red.cc (XXX l phin bn, v d 1b9a).
142
10. drop-tail_: y l tham s m khi t gi gi tr "true" th cho php s dng chnh sch drop-tail khi hng i trn hoc kch thc hng i trung bnh vt qu maxth . Gi tr mc nh ca cc tham s q_weight_, maxthres_, thres_ tng ng l 0.002,15,v 5 cho ti cui nm 2001. Trong nhng phin bn gn y, chng c cu hnh t ng. RED c cc tham s v bin khc c trin khai trong ns. C th, S.Floyd khuyn co trong http://www.icir.org/floyd/gentle.html cho hot ng tt nht ca RED (trong m phng v thc thi), s dng, tham s gentle_ c t thnh true (y l gi tr mc nh k t thng 4, 2001). Trong cc chnh sa gentle_ v RED trong ns, xc sut loi gi tin thay i t maxp n 1 khi kch thc hng i trung bnh thay i t maxthres_ n 2 ln maxthres_. Ty chn ny lm cho RED tr nn mnh m hn thit lp cc thng s maxthres_ v max_p. Mt phin bn khc l RED thch nghi, phin bn ny iu chnh s la chn tham s cho cc lu lng mng, nh c m t [12] . gim st mt b m red cho trc, chng hn nh mt b m gia hai nt mng $n2 v $n3, c th g lnh 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 hin thi v ave_ l gi tr ly trung bnh. iu ny em li file mt u ra (trong trng hp ca chng ta l "red-queue.tr") vi 3 ct. Ct u tin ch ra n l gi tr ca kch thc hng i hin thi (bng cch dn c Q) hay l kch thc hng i trung bnh (dng c a). Sau i n thi in hiu to v cui cng l gi tr c gim st.
8.3. Cc v d v m phng
Ta xt mng sau, c minh ha hnh 9.1: Ta s so snh hot ng ca mt vi c ch qun l hng i.
143
chai chung c tr 20ms v gng thng 700kbps. Ta xt 3 phin kt ni FTP s dng TCP v t kch thc ca s cc i l 8000. kch thc hng i c chai alf 100. 3 phin kt ni ny khi ng cc thi im ngu nhin, c phn b u trong khong t 0 n 7 giy. , tr cho ti knh c chai l 1ms. Ta chn kch thc gi tin TCP l 552 bytes. Ch : trong phin bn 2.1b9a ca ns, khi ta g dng lnh $tcp_src($j) set packetSize_552 Th kch thc gi tin thc t c to ra trong m phng alf 592, do c 40 bytes tiu (header) c thm vo. Ton b qu trnh m phng l 50s. Bng cch dng ty chn monitor-queue m ta thy phn 7.3 , ta to mt file gi l queue.tr ton b ct u tin l thi gian v ct th 5 l kch thc hng i o bng gi tin. Ta cng s dng mt th tc, goik l plotWindow, gim st kch thc ca s: n to ra mt file m , ct u l thi gian, ba ct khc tng ng vi kch thc ca s ca 3 phin kt ni.
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 tc finish proc finish {}{ global ns nf tf $ns flush-trace close $nf close $tf exec nam out.nam & exit 0 } #To cc nt c chai v ch set n2 [$ns node] set n3 [$ns node] #To lien kt gia cc nt $ns duplex-link $ns2 $ns3 0.7Mb 20ms DropTail set NumSrc 3 set Duration 50 #Cc nt ngun for {set j 1} {$j<=$NumSrc} {incr j} { set S($j) [$ns node] } #To mt b pht ngu nhin cho vic khi ng dch v ftp v cho #cc tr knh truyn c chai Set rng [new RNG] $rnf seed 2 #Cc tham s cho cc bin ngu nhin cho vic khi ng cc kt #ni ngu nhin #RVstart set nmin_ 0 #RVstart set nmax_ 7 #RVstart use-rng $rng
145
#Ta nh ngha nhng thi im khi ng ngu nhin cho #mi phin kt ni 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 truyn gia ngun 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 thc hng i ca knh truyn (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 #Ngun 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 kt ni 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 ngun FTP for {set j 1} {$j<=$NumSrc} {incr j} { set ftp($j) [$tcp_src($j) attach-source FTP] } #Cc tham s ca ngun TCP for {set j 1} {$j<=$NumSrc} {incr j} { $tcp_src($j) set packetSize_552 } #nh trnh cc s kin cho cc trm 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 tc ny by gi s c gi cho tt c cc ngun 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 thy t cc hnh ny, c mt s ng b cao gia cc kch thc ca s: Chng u mt gi tin ti cng mt thi im. Hn na ta c s dao ng cao trong cc kch thc hng i tng ng vi kch thc ca s, v kch thc hng i trung bnh vo khong 75 gi tin. iu ny c ngha l c mt tr trung bnh thm vo, v bng: 75x592x8 = 507.42msec 700x103
Dq =
Ch 8.3.1 hng i loi b ng ui c th c m phng bng cch dng mt b m RED viminth = maxth c t trn kch thc hng i cc i v maxp c t v gi tr gn bng 0, iu s cho php ta s dng cc cng c gim st di hd trung bnh v tc thi ca RED. Tt nhin, tham s drop-tail_ c gi t true.
148
Trong sut 50 giy m phng, ngun tin nhn 7310 gi tin TCP, it hn mt cht so vi trng hp loi b ng ui (m , ta c 7211 gi tin ). Tip theo , ta v kch thc hng i (Hnh 8.4 v 8.5 )v kch thc ca s (Hnh 8.6). Ta thy t cc hnh ny, khng c s ng b gia kch thc ca s, v s ng b gia kch thc hng i trung bnh thf nh hn nhiu so vi trng hp loi b ng ui: khong 10 (thay v 75 trong trng hp loi b ng ui). Do , trn trung bnh ca cc phin kt ni cng nh hn nhiu: 10x592x8 = 67.66msec 700x103
Dq =
Ta quan st thy thay cho cc dao ng rng trong kch thc hng i v kch thc ca s, by gi, ta t c s bin ng nh hn, nhanh hn c kch thc ca s cng nh kch thc hng i. Cui cng ta rng trong sut thi gian m phng, hng i khng b trn, khng nh trng hp loi b ng ui RED cho php hng i ln ln rt nhiu trong sut khong thi gian ngn lc bt u phin kt ni,
Hnh 8.4: S tin trin ca kch thc hng i trung bnh tc thi
Hnh 8.5: S tin trin ca kch thc hng i trung bnh tc thi phng to
149
Hnh 8.6: Kch thc ca s ca tc c cc phin kt ni TCP cho b m RED vi cc cu hnh tham s t ng
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 tc finish 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 }
150
#To cc nt c chai v ch set n2 [$ns node] set n3 [$ns node] #To lien kt gia cc nt $ns duplex-link $ns2 $ns3 0.7Mb 20ms RED set NumSrc 3 set Duration 50 #Cc nt ngun for {set j 1} {$j<=$NumSrc} {incr j} { set S($j) [$ns node] } #To mt b pht ngu nhin cho vic khi ng dch v ftp v cho #cc tr knh truyn c chai Set rng [new RNG] $rnf seed 2 #Cc tham s cho cc bin ngu nhin cho vic khi ng cc kt #ni ngu nhin #RVstart set nmin_ 0 #RVstart set nmax_ 7 #RVstart use-rng $rng #Ta nh ngha nhng thi im khi ng ngu nhin cho #mi phin kt ni 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 truyn gia ngun 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 thc hng i ca knh truyn (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 #Ngun 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 kt ni 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 ngun FTP for {set j 1} {$j<=$NumSrc} {incr j} { set ftp($j) [$tcp_src($j) attach-source FTP] } #Cc tham s ca ngun TCP for {set j 1} {$j<=$NumSrc} {incr j} { $tcp_src($j) set packetSize_552
152
} #nh trnh cc s kin cho cc trm 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 tc ny by gi s c gi cho tt c cc ngun 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 trng: Nhng lnh ny nn c t lc bt u, trc khi cc knh truyn c nh ngha! Cc tin trinh kch thc hng i v ca s thu c c a ra Hnh 8.8 v 8.7 tng ng.
rng vi cc tham s m ta chn, di hng i c gi quanh mt gi tr trung bnh l 50. S cc gi tin TCP nhn c trong sut qu trnh m phng l 7212
154
$ns attach-fmon $flink $fmon #fmon attack $monfile Khi chng ta kch hot vic gim st, ta nhn c cc thng k cho ti thi gian kch hot trong mt file. iu ny c lm nh sau: $ns at $time "$fmon dump Tip theo chng ti trnh by on m y shortRed.tcl bng ?? m cho php chng ta nghin cu cc phin TCP ngn tng tc vi mt b m RED.
set ns [new simulattor] # C nhiu ngun, m mi ngun tao ra nhiu phin TCP cng chia s mt #knh truyn c chai v mt ch n chung. S hiu ca chng c cho #bi tham s NodeNb # S(1) # # # . . . -----| -----N----------D | ------
# 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 lun, hng i RED c #cu hnh mt cch t ng. # 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 mng v knh truyn 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 } #thit lp b gim st lung set monfile [open mon.tr w] set fmon [$ns makeflowmon Fid] $ns attach-fmon $flink $fmon #fmon attack $monfile #Cc phin kt ni, ngun 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 to cc file c kch thc ngu nhin
156
set rng1 [new RNG] $rng1 seed 0 set rng2 [new RNG] $rng2 seed 0 #To hai kiu phn b ngu nhin cho hai b to rng1 v rng2 # nhng khe thi gian n ngu nhin ca b pht TCP mi ngun i set RV [new RandomVariable/Exponential] $RV set avg_ 0.3 $RV use-rng $rng1 # Kch thc ngu nhin ca cc file truyn 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 thi gian bt u ca cc phin truyn v kch #thc truyn #Vic n ca mt 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 thi im khi u cho phin truyn k tip t ngun v # cc thuc 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] # Cp nht s lung $ns at [$tcpsrc($i,$j) set starts] countFlows $i 1 } } for {set j 1} {$j<=$NodeNb} {incr j} { set Cnt($j) 0 } # Th tc sau y c gi ti bt k thi im no khi
157
# mt phin kt ni kt thc Agent/TCP instproc done {} { global tcpsrc NodeNb NumberFlows ns RV ftp Out tcp_snk RVSiz # In vo bin Out cc tham s: node, phin, # thi gian khi u, thi gian kt thc, # giai on lm vic, s gi tin truyn, s byte truyn, thng lng. 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 tc tnh ton lp sau y cp nht s kt ni nh mt hm theo thi gian. # C 0.2s n in ra $Com. iu ny c th hin bng cch gi th tc # vi tham s "sign" bng 3 (trong , trng hp tham s ind khng # ng vai tr g c), Th tc ny cng c gi ra bi th tc # thc hin khi mt kt ni t ngun th i kt thc bng vic gn thm s # "sign" gi tr 0, hay khi n bt u, bng vic gn cho n # gi tr 1 (i c truyn qua bin ind). 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 lung, mi phin kt ni TCP m ta mu gin st cn c mt s nhn dng lun. trng hp ca chng ta, ban u, ta nhn dng mt lung bng s th t v nt ngun ca n (v d: Phin kt ni th 3 khi u nt 4). Ta chuyn iu thnh mt vector c hng nh sau: set k [expr $i*1000 +$j]; $tcpsrc($i,$j) set fid_ $k Qu trnh m phng to ra cc file u ra sau: 1. Cur.tr v ave.tr gim st s tin ho ca kch thc hng i v phin bn ly trung bnh ca n. 2. Conn.tr cho vic gim st s cc phin kt ni tch cc t mi trong 6 ngun ( s 6 c a vo bin NumberFlows nh l tham s trong on m) cng nh tng cc phin kt ni tch cc, nh mt hm theo thi gian. 3. Out.ns dnh cho vic gim st mi phin (c nhn dng vi nt ngun v s phin bt ngun t nt ), thi gian khi u, thi gian kt thc v thi gian ca phin kt ni, s cc gi tin truyn c, cc byte truyn c v cc byte phi truyn li, v thng lng m phin kt ni t c. 4. mon.tr l tp tin bm vt c to ra bi b gim st lung, n bao gm s gi tin v byte truyn c v b mt mi phin kt ni. 5. Out.tr l tp tin bm vt ton cc cho tt c cc s kin. Ta dng on m trn vi phin bn RED vi vic cu hnh t ng. Ta v th v kch thc hng i v s bin ng trung bnh ca n hnh 8.9 - 8.10. Ta thy rng di hng i thay i tht thng hn nhiu so vi trng hp phin kt ni TCP kin nhn (m ta thy hnh 8.4 v 8.5 ). S cc phin kt ni hot ng hnh 8.11 Ta bao gm trong on m trn y nhiu cch gim st. Cch gim st trc tip s phin truyn li v cc gi tin ti thng qua th tc done: n em li tt c d liu lin quan ti phin kt ni. B gim st hng i mt khc em li thng tin cc b v s mt mt mt knh truyn c th. Nu phin kt ni i qua mt vi knh truyn c chai, phng php th nht u vit hn, Phng php th hai c u im l em li nhiu thng tin lm tr m c th hu ch trong vic hiu s ng gp ca mi phin mt vi nt gy ra tc nghn mt phin no .
160
Hnh 8.10: S tin ha ca kch thc hng i v gi tr trung bnh ca n c phng to)
8.5. Bi tp
Bi tp 8.5.1. Xem xt on m shortRED.tcl (bng 8.3) v sa li chng trnh c s iu chnh cc tham s thresh_, maxthresh_,q_weight_, Nhng tham s ny cng nh l kch thc hng i trn knh truyn N-D nn c chn nh th no thng lng t cc i. Nghin cu iu ny bng m phng v gii thch s tr gi. Bi tp 8.5.2. Mt trong nhng mc ch ca RED l cho php cng bng hn vi cc cm ngn. Phn tch thng lng v xc sut mt gi tin ca mt phin kt ni nh mt hn theo kch thc ca n vi RED v so snh n vi hnh i Drop tail. S dng on m shortRED.tcl (bng 8.3). Th cc tham s khc nhau cho trng hp dng hng i RED t c s cng bng tt hn, bi tp ny da trn [13] .
161
9.4. M phng Diffserv: bo v cc gi tin d b tn cng . . . . 168 9.4.1. Kch bn m phngnh ngha . . . . . . . . . . . . . . . . . . . . . . . . . 9.5. Kt qu m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6. Tho lun v kt lun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7. Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 177 178 179
Ngi dch: Nguyn Ch Thnh Bin tp: H Tt Thnh Bn gc: NS Simulator for beginners, Chapter 7 [2]
162
y l im tri ngc vi cc khi nim mng khc, nh mng ATM (ch truyn khng ng b), c th p ng cht lng yu cu dch v i vi cc kt ni mc cao hn v x l v bo hiu lin quan n vic chp nhn cc kt ni mi v duy tr cc kt ni ang c. Hn na, v ti nguyn mng b gii hn nn vic m bo hiu sut yu cu phi t chi cc kt ni mi nu ti nguyn khng c sn. y l im tng phn so vi c tnh best-effort ca mng Internet ngy nay, mt ni m iu khin truy nhp khng c thc hin. Tuy nhin, ngi ta nhn ra tm quan trng ca vic phn bit gia cc lp kt ni v kh nng cp pht ti nguyn cho cc kt ni theo lp ca chng. Do , mt thu bao s sn sng tr nhiu hn c c tr nh hn v thng lng ln hn. y cng l yu cu i vi cc ng dng thi gian thc trn Internet (thoi, video). V l do nn cc dch v phn bit (Diffserv) c a ra. Diffserv da trn vic nh du cc gi tin ti ra mng (ni gi tin bt u i vo mng) theo mc hiu sut cn cung cp, sau da theo cc du ny, cc gi tin ny s c x l khc nhau ti cc nt mng. Cch ph bin phn bit gi tin l dng b m RED, tc l dng cc tham s khc nhau cho cc gi tin khc nhau. Modul NS c x l Diffserv c pht trin Nortel Networks, v chng ny c da trn phn ln cc bo co ca Nortel.
163
dch v no trong mng, vic ny c th ph thuc vo tnh cht ca ti nguyn ca lung (nh tc d trung bnh v tnh truyn theo lot) v cc thnh phn mng c bit theo c thm vo ti ra mng xc nh tnh cht ca ti nguyn. Trong m phng ns, chnh sch c xc nh hon ton trong on m tcl. 2. Cc router bin: chu trch nhim gn cc im m vo cc gi tin theo chnh sch c ch r bi ngi qun tr mng. lm c iu ny, ngi qun tr phi o cc tham s ca lu lng u vo ca mi lung. 3. Cc router li: v c bn th Diffserv gi cc thng tin mt ti ra mng , router trong mng ch n gin gn mc u tin tng ng vi cc gi tin theo m nh du ca chng. Mc u tin ny chuyn thanh cc tham s quyt nh vic lp lch v hy b trong cc router li.
Nu tham s cui cng khng c cho trc th tt c cc hng i c t l RIO-C. Tng t c th nh ngha cc RIO-C khc. ch r s $n ca hng i o chng ta dng
164
lnh: $dsredq setNumPrec $ Tham s Red c cu hnh dng lnh $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 nu n khng c xc nh th s nhn gi tr mc nh l 0.002. Hng i droptail dng lnh $dsredq setMREDMode DROP Cu hnh sau c cho trc vi duy nht 3 tham s u tin: $dsredq configQ $queueNum $virtualQueueNum $minTh Tt c gi tin n b hy khi t gi tr minth Nh ta thy trong chng ni v RED, tnh xc sut hy gi tin cn c lng c kch thc gi tin. Vi gi tin kch thc 1000 byte dng lnh $dsredq meanPktSize 1000 Lp lch: Cc ch lp lch c th c nh ngha. V d nh weighted round robin vi trng s hng i l 5 v 1 tng ng, c nh ngha qua lnh $dsredq setSchedularMode WRR $dsredq addQueueWeights 1 5 C ch lp lch khc l Weighted Interleaved Round Robin (WIRR), Round Robin (RR) l c ch lp lch c mc nh, v c mc u tin hn ch (PRI). Bng PHB: mt tp 4 hng i cng vi cc hng i o c b sung vi bng PHB (cch x l trn 1 hop) (Per Hop Behavior). Cc mc trong bng c nh ngha bi: (1) im m v (2) lp (hng i vt l) v (3) quyn u tin (hng i o). Mt mc c gn vi cu lnh c dng: $dsredq addPHBEntry 11 0 1 c ngha l im m 11 c nh x ti hng i o 1 trong hng i vt l s 0.
165
166
16. di ca s TSW (TSW l chnh sch da trn tc truyn trung bnh v ly bnh qun theo kch thc ca s d liu tnh theo giy). Gi tr mc nh l 1 giy. Sau y l cc loi chnh sch: 1. TSW2CM (TSW2CMPolicer): Dng CIR v 2 th t u tin hy gi. Ci no thp hn th c dng theo xc sut khi CIR vt mc cho php. 2. TSW3CM (TSW3CMPolicer): Dng mt CIR, mt PIR v 3 th t u tin hy gi. Mc u tin trung bnh c dng theo xc sut khi CIR vt mc cho php, v ci thp nht c dng theo xc sut khi PIR vt mc cho php. 3. Token Bucket (TokenBucketPolicer): Dng CIR v CBS v 2 th t u tin hy gi 4. Single Rate Three Color Marker (srTCMPolicer): Dng CIR, CBS, EBS, v PBS chn t 3 drop precedences. 5. Two Rate Three Color Marker (trTCMPolicer): Dng CIR, CBS, EBS, v PBS chn ra t 3 drop precedences. Mi loi chnh sch trn y nh b o m n s dng. Mt bng chnh sch nh ngha cho mi loi chnh sch im m khi u cng nh l 1 hay 2 im m gim mc. im m khi u thng c gi l green code v im m gim mc thp nht l red. Nu c mt im m khc gia, n c gi l yellow.
9.3.2. Cu hnh
cp nht bng chnh sch dng lnh addPolicyEntry, trong gm bin hng i bin bao hm hng i bin, nt ngun v nt ch ca lung, loi chnh sch, im m khi u ca 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 lung xut pht t nt $n1 v kt thc nt $n8. Nu dng chnh sch TSW th c th thm vo cui chiu di ca s TSW. Nu khng c thm vo th ly gi tr mc nh l 1s. Sau mt lnh addPolicyEntry khc ch r chnh sch v im m khi u (vi mt lung khng c th) s nh ngha im m gim mc vi tt c cc lung s dng chnh sch vi cng mt im m khi u. V d: $edgeQueue addPolicerEntry srTCM 10 11 12
167
Ba lnh sau y in ra (1) ton b bng chnh sch, (2) ton b bng gim st v (3) kch thc hin thi o bng byte ca khi C tng ng: $edgeQueue printPolicyTable $edgeQueue printPolicerTable $edgeQueue getBucket
168
Mi nt ngun c kt ni ti nt bin tng ng ni lu lng c nh du theo tham s s c ch r. Router bin c kt ni ti router li ti nt tht c chai, v sau qua mt router khc ti ch. C 20 nt ngun, mi nt to ra cc kt ni TCP. Chng ta s th nghim vi mng LAN c tc cao (tr truyn dn nh) vi ng truyn hon ton i xng ng truyn gia nt bin v nt ngun tng ng c tr 10sec v bng thng 6Mbps. ng truyn gia nt bin v nt ch tng ng c tr 10sec v bng thng 10Mbps. ng truyn gia nt trung tm v nt bin gn vi nt ngun c tr 0.1sec v bng thng 6Mbps. ng truyn gia nt trung tm v nt bin gn vi nt ch c tr 1sec v bng thng 10Mbps. M hnh lu lng: Mt file c truyn c phn b xc sut Pareto vi tham s shape l 1.25 v kch thc trung bnh 10kbytes. File c truyn n mi nt ngun theo tin trnh Poisson vi tc trung bnh 5 file/giy. Nhiu phin truyn t cng 1 nt ngun c th c kch hot ng thi. Tham s qun l vic xp hng: Hng i ch c th c xy dng ti router nt c chai, v d nh ti ng truyn gia nt trung tm v nt bin ni ti ch. Ta chn kch thc ca n l 100 gi tin. V th nn cc tham s qun l hng i ti cc nt khc khng
169
nh hng n kt qu. Trong hng i tht c chai ti nt trung tm, qun l hng i multi-RED c dng vi phin bn RIO-D; ta chn tham s ging nhau cho c 2 mc u tin (chi tit hn phn sau). Mc ch ca chng ta trong vic chn ra cc tham s khng phi l nhn c hiu nng cn thit v ti u m ng ra l to ra cc iu kin cho php ta nghin cu nh hng ca Diffserv khi gim xc sut mt cc on d b mt v tc ng ca n n hiu sut ca cc hot ng trn TCP ( tr, thng lng). V l do , chng ta chn tham s ging nhau cho 2 mc u tin (iu ny s c gii thch di). Kch thc hng i trung bnh c gim st, vi mi loi gi tin (, xanh) (iu ny c thc hin bng cch dng hm m chun ly trung bnh vi tham s wq = 0.01). Cc gi tin c mu cho trc bt u b loi b khi s hng i trung bnh ca gi tin vt qu gi tr minw ; ta chn minw = 15; xc sut hy gi ny tng tuyn tnh vi kch thc hng i trung bnh cho n khi t ti gi tr maxw = 45, trong xc sut hy gi ly gi tr maxp = 0.5. Khi vt qu gi tr ny, th xc sut hy gi bng 1. Lu rng vic phn bit gia cc mc u tin c thc hin bng cch dng cc tp tham s khc nhau: nh vic hy gi tin mu xanh ti kch thc hng i ln hn. Chng ta thng khng s dng cch ny, v s loi b khi kch thc ca s ln s gy tr ln hn, trong mt s tham s th nghim cho kt qu thng lng thp hn vi gi tin mu xanh hn l gi tin mu v s suy gim chung v hiu sut. Vi vic cho cng tham s ging nhau vi c 2 mc u tin, chng ta c th nghin cu v tc ng trc tip ca vic bo v cc gi tin d b tn cng trn ng truyn TCP. S nh du c thc hin bng cch dng RIO-D, trong xc sut t chi mi loi mu ph thuc vo s lng gi tin trung bnh ca loi . V vy, c t gi tin mu xanh b hy hn gi mu , chng ta chn thng lng ca chng thp hn (cho nn cng ph thuc vo kch thc hng i trung bnh); iu ny c thc hin bng cch chn gi tr CIR thch hp m gi tr ny xc nh phn gi tin b nh du mu xanh. M phng ko di 80s. Tc n ca cc bit nt c chai l 20 1.04 104 8 = 7.563M bps 0.22 Kt qu trn thu c nh sau: Mt gi tin kch thc trung bnh l 1040 bytes trong 1000 bytes l d liu v 40 bytes l mo u ph. Mt file ftp trung bnh c gi thit l c 104 bytes d liu, c ngha l tng kch thc trung bnh (bao gm c mo u ph) khong 1.04x104x8 bits. Kt qu ny t c khi nhn s nt ngun v chia cho thi gian trung bnh gia cc file n ti 1 nt. on m ns c cho trong bng 7.1.
170
# C nhiu ngun v mi ngun to nhiu phin TCP # chia s cng 1 ng truyn nt c # chai v 1 ch. S ca chng c cho bi tham s NodeNb # S(1) -------- E(1) --------# # # . . | ------Core------- Ed ------------D | . -------- E(i)
# 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 ngun 360;# s lung trn mt nt ngun ;# thi gian m phng
# nh ngha cc mu khc nhau cho lung d liu (cho NAM) $ 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 gm thi gian truyn ca cc kt ni khc nhau Set Out [open Out.ns w]; #file bao gm s lng kt ni Set Conn [open Conn.tr w]; #m file lu vt Set tf [open out.tr w]; $ns trace-all $tf #Open file lu vt 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) } #cu 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 }} # khi to kch thc ngu 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
#By gi chng ta nh ngha thi gian bt u truyn v #kch thc gi tin n sau tin 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 tc quy sau y s cp nht s kt ni nh l mt # hm thi gian. Mi 0.2 n s in kt qu ra $bin $Conn. # iu ny c thc hin bng cch gi th tc vi tham s # ng du bng 3 (trong trng hp tham s ind khng # ng vai tr g c). Th tc cng c gi bt c khi no # mt kt ni t ngun i v kt thc bng cch gn tham s # ng du 0, hay khi n bt u, bng cch gn n bng 1 set node] 0
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]}
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. Kt qu m phng
Mt gi : chng ta kim tra nh hng ca tc nh du CIR n xc sut mt gi ca gi tin SYN v ca gi tin d liu u tin trong kt ni, nh trc y. Ta thy rng cn gim vic mt gi tin SYN bng mt tha s ca 7, v mt gi d liu u tin ca mt kt ni bng tha s ca 3.4, c hai t c tc CIR l 320kbps. Throughput v goodput: s gi tin d liu c truyn thnh cng trong m phng hon ton c lp vi tc CIR: mc trung bnh l 58285, vi lch chun l 395 gi tin. l v trn thc t t l gi n khng ph thuc vo tc CIR. Ch rng khi xc sut mt gi thp, th thng lng cng thp, n lun khng i ging nh mt hm ca CIR. S phin kt ni : tng s phin l mt hm ca thi gian c cho trong hnh 9.2 cho tc CIR l 200kbps (gi tr ti u) v cho trng hp khng c u tin (CIR l 10Mbps). Chng ta s thy t kt qu m phng rng lc nh du vi CIR 300kbps cho hiu sut tt hn: gim s kt ni kch hot hin c b nh du. Lin h vi thc t, thi gian ca phin trong nh du ngn hn, chng ta s lm r trong phn sau. Tht vy, v t l gi tin n trong 1 phin kt ni l ging nhau v khng ph thuc vo CIR s phin trung bnh nn t l vi thi gian trung bnh ca 1 phin (h s t l l t l gi n trong phin). Thi gian phin kt ni: trong bng 9.3 ta th hin thi gian trung bnh ca mt phin nh l 1 hm ca CIR. Trong khong tc 100kbps n 300kbps thi gian trung bnh gim bi h s 1/3 (cho 100kbps) v 1/2 (cho 300kbps) vi trng hp 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
178
9.7. Bi tp
M phng ca chng ta hn ch gii hn vi lu lng FTP. Trong bi tp ny chng ta xem xt lu lng HTTP: thi gian t lc kt thc truyn file n lc bt u phin truyn mi c phn phi theo hm m vi gi tr trung bnh 0.1s. Ci ny c gi l thi gian suy ngh. V th t mi nt ngun ch c duy nht 1 file c truyn ti cng thi im (nhiu nht l 1 phin kch hot). Vit chng trnh tcl cho m hnh lu lng v kim tra hiu sut ca n nh l mt hm ca CIR, so snh vi lu lng FTP.
179
10.1. C s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
te lec om
180
180 182
10.1. C s
s dng bi mt ngi dng. V d nh b nh a cng v my in. Mng LAN lm n gin ha vic trao i bn tin, chia s file v tnh ton phn tn. Mng cho php chia s chi ph ci t v hot ng.
bus. Trong cu hnh sao, cc thit b u cui c kt ni vi hub trung tm nh lin kt im-im. iu ny cho php iu khin tp trung cc tranh chp v x l qung b mt cch d dng. Hn ch ca m hnh ny l s tin cy trong cc hot ng ca n b gii hn bi s ph thuc vo hub trung tm. Hn na, kh nng ca hub trung tm hn ch s lng trm c th kt ni.
vn
Tn ti bn kiu topo chnh ca mng LAN: mng hnh sao, mng li, mng vng v
Cu hnh li cho php c mt vi tuyn gia hai ngi dng. V d nh h thng in thoi. Mng vng bao gm cc b lp c kt ni nh cc lin kt n hng im-im to thnh mt vng kn. V d nh IBM token ring, IEEE 802.5 v FDDI. Mng vng n gin v cho php truyn trn lin kt ny trong khi ang nhn t mt lin kt khc. trnh s tranh chp ch c mt trm c th truyn ti mt thi im, iu c ngha l vic s dng ti nguyn khng hiu qu. indexEthernet cu hnh bus gm c cc on cp n c kt ni n cc trm, cc kt ni ny l kiu kt ni a im: tt c cc trm c kt ni ti bus, v nu hai trm cng truyn ti mt thi im th c tranh chp . V d nh token bus (IEEE 802.4) v Ethernet (IEEE 802.3, IEEE 802.9 v IEEE 802.4). Bn thn bus l th ng (khng phc hi hoc khuch i tn hiu) dn n phm vi gii hn. m rng phm vi cn s dng mt b lp c th kt ni nhiu bus n mt cp. Trong cc cu hnh mng khc hnh sao, giao thc MAC phn tn (a truy nhp) n cc knh cn c thc hin. Cc giao thc truy nhp ny c chia lm 3 loi: chia s tnh, truy nhp ngu nhin, v truy nhp theo yu cu. Trong cc giao thc chia s tnh, cc ngun ti nguyn c phn b c nh gia cc ngi s dng. Cc giao thc chnh l: 1. TDMA (a truy nhp phn chia theo thi gian): thi gian c chia thnh cc khe khc nhau v phn b cho nhiu ngi s dng. 2. FDMA (a truy nhp phn chia theo tn s): nhiu ngi dng c th truyn ng thi nh s dng cc tn s khc nhau. Vic truy nhp n v tinh thng da trn c s kt hp TDMA v FDMA. 3. CDMA (a truy nhp phn chia theo m): nhiu ngi s dng c th truy nhp ti cng mt thi im v s dng cng tn s, nhng s dng cc m khc nhau. Cc m thng trc giao vi nhau nn lm gim nhiu. c s dng trong cc mng di ng th h th 3 nh l h thng vin thng di ng ton cu (UMTS). Trong giao thc truy nhp ngu nhin, truy nhp ngu nhin c th gy ra xung t v cn truyn li. V d Aloha c s dng trong truyn thng v tinh v Ethernet. gim xung t, mt trm s lng nghe trc, nu khng c tn hiu no khc ang c truyn trn knh chung v nu c th vic truyn hon li. iu ny c gi l a truy nhp cm nhn sng mang (CSMA). Hn na, (one can avoid transmission a long tram) C th trnh vic truyn ln ng truyn nu trong sut qu trnh truyn dn pht hin c xung t. iu c gi l pht hin xung t (Collision Dectection-CD). Phin
181
bn ny ca CSMA bao gm c CSMA/CD v CSMA c trin khai(implemented) trong ns, c bit l CSMA/CD. Ethernet l mt giao thc MAC da trn CSMA/CD, v cc phin bn khc c chun ha, v d IEEE 802.3 (10Mbps), IEEE 802.9 (a phng tin), IEEE 802.11 (Ethernet khng dy), IEEE 802.12 (AnyLan tc cao 100Mbps, thch hp vi cc kiu mng LAN khc nhau) v IEEE 802.14 (tc cao). Ethernet gm c cc thut ton backoff truyn li. Mt s M c la chn ngu nhin, 0 M < 2k vi k = min(n, 10) , v n l tng s xung t xy ra vi cc gi. Thi gian trc khi truyn li c ly M ln "ca s xung t" (bng hai ln thi gian truyn ti a ca tn hiu trong mng cc b). Khi n = 16, phin truyn b hy. Chun IEEE802.3 c trin khai rong ns. Ca s xung t c gii hn 51,2us v mng cc b gii hn trong 5km. N c mt vi phin bn, v d nh 10base5, 10base2, 10broad36 v mt s phin bn khc. S u tin ch thng lng Mbps, s th hai cho iu ch (broad c ngha l khng iu ch). Khong thi gian ri gia cc khung truyn dn trong 10base5 l 9,6us. Khi s dng Ethernet tc cao, khong thi gian ri ny cng nh thi gian lan truyn cc i gim i, v iu tng ti a phm v ca mng Tn ti cng ngh Ethernet khc da trn chuyn mch ni s lng ln u vo c th tn ti v c t xung t hn.
182
Theo mt v d, Xt mng trong hnh 11.1 l mt kiu bin i ca mng c nghin cu chng 2 (hnh ?? ) vi cc node n3, n4, v n5 c t trong mt mng LAN chung. iu ny c ngha l cc gi TCP c hng n node 4 cng n node 5 (V b loi b tai y), TCP c gi bi node n4 ti node n0 cng n node n5 (v b loi b y) v cc gi UDP c gi n node n5 cng n node n4 (v b loi b y). Tp tin m sau ging nh ex1.tcl (bng ?? ) nhng chng ta thay th cc lnh $ns duplex-link $n3 $n4 0.5Mb 40Ms DropTail $ns duplex-link $n3 $n5 0.5Mb 30Ms DropTail bng lnh:
set lan [$ns newLan $n3 $n4 $n5 0.5Mb 40ms LL Queue/DropTail MAC/Csma/Cd Channel ]
183
te lec om
184
185 185 185 186 187 187 188 189 190 190 191 191 192 193
11.2.1. Mc ch v phm vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.2. M hnh khi nim ca MNS h tr QoS . . . . . . . . . . . . . . 11.3. Thit k v thi hnh vi MNS . . . . . . . . . . . . . . . . . . . .
11.3.1. Chuyn mch nhn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.2. Chuyn mch nhn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.3. S ginh trc ti nguyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.4. Mc lp - Class Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.5. Mi trng thc thi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4. Cc v d m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ngi dch: ng Thnh Chng Bin tp: Nguyn Nam Hong. Bn gc: Design and Implementation of MPLS Network Simulator [4]
vn
11.5. Kt lun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cu trc ca ti liu ny nh sau: phn 2 s a ra ci nhn tng qut v MNS, vn thit k v thc thi chi tit hn s c trnh by trong phn 3. Cc v d m phng s c gii thiu trong phn 4, v cui cng l phn kt lun.
vn te lec
qu ca d n VINT.
Phn ny s trnh by mc ch, phm vi, kin trc v kh nng thc hin ca MNS.
MNS c thc hin bng cch m rng phn mm NS2, l b m phng da trn IP, c bt u bng b m phng mng REAL bi UC Berkeley, 1989. Hin ti NS ver 2 l kt
11.2.1. Mc ch v phm vi
nhau ca MPLS trong iu kin khng c mng MPLS thc t. B m phng MPLS c thit k da trn cc l do sau:
Tnh "ti s dng" (Reusability) Phm vi thc hin ca b m phng MPLS: Chuyn mch nhn: cc thao tc chuyn mch nhn, gim (decrement) TTL, hop bin (p cht)
185
om
LDP: cc thng ip LDP (Request, Mapping, Withdraw, Release, Notification) CR-LDP: cc thng ip CR-LDP Kh nng ca b m phng MPLS lin quan n vic thit lp knh LSP nh sau: Trong LSP Trigger Strategy: h tr khi ng (trigger) theo iu khin (controldriven) v theo d liu (data-driven) Trong Label Allocation and Distribution Scheme: ch h tr lc downstream trong khi ng control-driven, h tr c 2 lc upstream v downstream-on-demand trong khi ng data-driven Trong Label Distribution Control Mode: ch h tr mode c lp trong khi ng control-driven, v c 2 mode c lp v ordered trong khi ng data-driven. Trong Label Retention Mode: ch h tr trong ch duy tr (conservative mode) ER LSP based on CR-LDP: thit lp da trn thng tin ng i xc nh trc bi user. CR LSP based on CR-LDP: thit lp da trn cc tham s nh tc lu lng, kch thc vng m. t trc ti nguyn (Resource preemption): ginh trc ti nguyn ca CR-LDP tn ti vi setup-priority v holding-priority. Flow Aggregation (Gp lung): gp cc lung mn (fine flows) vo 1 lung th (coarse flow)
186
Resource Manager: to/xa cc hng i yu cu, cng nh qun l thng tin v ti nguyn. Packet Scheduler: qun l cc gi trong hng i sao cho chng c th nhn c cc yu cu phc v.
187
Nu hop tip theo ca gi cng l chnh n, gi s c gi n Port Classifier i vi chuyn mch nhn, hai bng c xc nh nh sau: Partial Forwarding Table (PFT) n l tp con ca Forwarding Table, v c s dng nh x mt gi IP thnh LSP ti LSR vo (Ingress). N bao gm FEC, FlowID, v LIBptr. LIBptr l con tr cho bit mt im vo ca bng LIB. Label Information Table (LIB) Cha cc thng tin v vic thit lp cc LSP, v c s dng cung cp chuyn mch nhn i vi gi c gn nhn. N bao gm cc nhn in/out v giao din in/out.
188
Hnh 11.4 ch ra qu trnh x l vic dnh trc ti nguyn ca node v link MPLS. Khi thnh phn CR-LDP nhn bn tin yu cu CR-LDP, n gi Admission Control kim tra
189
node c c yu cu ti nguyn. Nu c ti nguyn kh dng, Admission Control s ginh trc ti nguyn bng cch cp nht bng Resource. Sau , bn tin yu cu LDP c cho php i qua n node MPLS tip theo. Khi thnh phn CR-LDP nhn bn tin CR-LDP Mapping, n s lu gi nhn v thng tin giao tip trong bng LIB v cc thng tin CR-LSP c yu cu (tc l LSPID) trong bng ERB. V cui cng, bn tin LSP Mapping s c cho php i qua n node MPLS trc .
190
11.4. Cc v d m phng
11.4.1. M phng lu lng QoS
Trong phn ny, chng ta kho st mt vi loi ca lu lng MPLS vi mi loi QoS khc nhau, c ch ra trong hnh 11.6. Theo cch ny, chnh xc v tnh hiu qu ca MNS s c kim nh.
Trong hnh 11.6 , node0 v node4 l cc node IP. LSR1, LSR2 v LSR3 l cc node MPLS. C 4 cp ti lm vic: mt cp l Simple Best-effort Traffic, c gi l SBT, mt cp l High priority Best-effort Traffic, c gi l HBT, v hai cp Real-time Traffic, tng ng l RT1 v RT2. Lu lng c a vo ti node0 v i ra t node4. Bng thng kt ni (link) l 1Mbit/s, ngoi tr kt ni gia Node0 v LSR1. SBT v HBT pht ra lu lng tc bit khng thay i (CBR) ti 250 Kbit/s, theo th t ln lt. RT1 v RT2 pht ra lu lng CBR ti 350 Kbit/s v 450 Kbit/s, mt cch tng ng. Do , tng tc d liu ti ca tt c cc ti lm vic ln hn bng thng kt ni ca mng MPLS. Hnh 11.7 ch ra m lp lch cc s kin i vi m phng. C 4 LSP c thit lp i vi lu lng; l hai ER-LSP i vi SBT v HBT, v hai CR-LSP i vi RT1 v RT2. Ti thi im 0.1 giy, 2 ER-LSP c thit lp i vi SBT v HBT, v 1 CR-LSP i vi RT1. Ti 1.0, SBT, HBT v RT1 pht ra cc lu lng ca chng. Ti 10.0 giy, mt CR-LSP c thit lp i vi RT2, v RT2 pht ra lu lng ca n ti 11.0 giy. Ti 30.0 giy, RT2 dng vic pht ra lu lng ca n v CR-LSP i vi RT2 c gii phng ti 31.0 giy. Cui cng, SBT, HBT v RT1 dng vic pht lu lng ca chng ti 40.0 giy. Kt qu m phng c ch ra trong hnh ??. Nh trong hnh ??, tng bng thng gia khong 11 giy v 30 giy gn bng vi bng thng kt ni, tc l hiu qu s dng bng thng l rt cao. Trong khong thi gian , RT1 v RT2 c th t c bng thng yu cu, trong khi SBT v HBT tn dng bng thng cn li ca kt ni. V HBT c phc v nhiu hn SBT.
191
192
bi v gi tr setup-priority ca RT2 nh hn gi tr holding-priority ca RT1. Kt qu m phng c ch ra trong hnh 11.10, trong ch ra ti nguyn ca RT1 c ginh trc RT2 ti giy th 11. T giy th 11, RT1 c p ng vi lu lng cao nht. Trong khong thi gian ny, ch RT1 c th t c bng thng theo yu cu, trong khi trong khi SBT, HBT v RT2 tn dng bng thng cn li ca kt ni. V HBT c phc v nhiu hn SBT v RT2.
11.5. Kt lun
MPLS c bit n nh l cng ngh quan trng nht i vi vic gii quyt nhiu bi ton trn Internet. Rt nhiu k thut lin quan n MPLS c cung cp. MNS cung
193
cp mt nn tng m phng vi nhiu k thut c xem xt. Bng cch s dng MNS, chng ta m phng 2 v d trong ti liu ny. Vi cc s kin n gin, cc kt qu c chng minh l c tnh kh thi v hiu qu i vi MNS. Cn nhiu kt qu m phng hn chng t MNS uc thc hin trong tng lai.
194
Chng 12 Mng di ng
Mc lc
12.1. Cc thut ton nh tuyn . . . . . . . . . . . . . . . . . . . . . . . 12.1.1. Vector khong cch theo th t ch DSDV . . . . . . . . . . 12.1.2. Vector khong cch theo yu cu c bit AODV . . . . 12.1.3. nh tuyn ngun ng DSR . . . . . . . . . . . . . . . . . . . . . . . . 12.1.4. Thut ton nh tuyn t ch tm thi 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
195
12.2. M phng mng di ng . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.1. Kch bn m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.2. Vit mt tcl script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.3. nh dng file vt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4. Phn tch kt qu m phng . . . . . . . . . . . . . . . . . . . . . 12.5. So snh vi nh tuyn ad-hoc khc . . . . . . . . . . . . . . 12.5.1. TCP qua DSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.2. TCP qua AODV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.3. TCP qua TORA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.4. Mt vi bnh lun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.6. S tc ng ca TCP ti giao thc MAC . . . . . . . . . 12.6.1. Bi cnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.2. Kch bn m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.3. Cc kt qu m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.4. Thay i cho NS vi trng hp n > 2 . . . . . . . . . . . . . . . .
Ngi dch: Nguyn Hong Minh Phc Bin tp: Nguyn Anh Tn Bn gc: NS Simulator for beginners, Chapter 9 [2]
C hai cch lin lc khng dy gia hai thit b: th nht l qua mng t bo tp trung trong mi mt thit b di ng c kt ni ti mt hoc nhiu trm c s t c nh (mi trm c s chu trch nhim mt ), do lin lc gia hai thit b di ng i hi c s tham gia ca mt hoc nhiu trm c s. Kiu th hai l kiu khng tp trung bao gm c s ca mt mng ad-hoc gia nhng ngi dng mong mun lin lc vi nhau. Do tng thm gii hn phm vi hot ng ca mt thit b di ng (i vi mt trm c s t c nh), kiu lin lc ny i hi cc thit b i ng khng ch phi ng vai tr l ngun hoc ch ca cc gi tin c truyn trong qua trnh lin lc ca chng m cn m nhim thm vai tr y cc gi tin cho qu trnh lin lc gia cc thit b khc na. Trm t bo c phm vi ln hn cc mng ad-hoc. Tuy nhin cc mng ad-hoc li c u im l c th trin khai nhanh chng bi v chng khng i hi h tng c s sn c. Trong cc mng t bo, cc thnh phn khng dy b hn ch ch truy cp vo mt mng v trong mng cc giao thc nh tuyn c in c th c s dng. Tri li, mng ad-hoc da vo cc giao thc nh tuyn c bit c th p ng c s thay i thng xuyn ca cu trc lin kt mng. m hnh ha tt cc mng t bo, cc cng c m phng phc tp nh knh v tuyn vt l cng nh cc cng c m phng cc k thut iu khin cng sut cn c s dng. NS khng phi l mt module cao cp m phng lp vt l (mc d n c cha mt s cc chc nng m phng knh v tuyn n gin). Trong cc mng ad-hoc, tri li, cc giao thc nh tuyn thng tp trung. NS cho php m phng cc giao thc nh tuyn chnh cng nh s truyn ti v cc ng dng s dng cc giao thc . Ngoi ra, n cn cho php tnh ton i vi lp MAC, tnh di ng v mt vi c im ca lp vt l. Cc giao thc nh tuyn thng dng c trong NS bao gm: DSDV- Destination Sequenced Distance Vector. DSR- Dynamic Source Routing (nh tuyn ngun ng). TORA/IMPE-Temporally Ordered Routing Algorithm / Internet MANET Encapsulation Protocol. AODV- Ad-hoc On Demand Distance Vector.
196
197
t hn s tt hn. Nu mt nt pht hin ra mt ng nh tuyn b hng n s t gi tr v cng cho s lng im trung gian ng thi s th t s c cp nht (tng ln) nhng s l mt s l, iu ny c ngha l s th t chn l tng trng cho vic ng nh tuyn vn cn s dng c.
198
ng k cc bn tin cp nht trong mng. Cc nt lu tr trong b nh tm thi ca chng tt c cc ng nh tuyn m chng bit. Giao thc ny bao gm vic tm ra cc ng nh tuyn v duy tr chng. Ti qu trnh tm kim ng nh tuyn, mt ngun c yu cu gi tin ti mt ch s gi qung b bn tin yu cu nh tuyn RREQ. Cc nt nhn c bn tin RREQ ny s tm kim trong b nh ca n xem c ng no i n a ch ch c ghi trong RREQ khng. Nu n khng tm thy th bn tin RREQ s c gi tip i xa hn ng thi n s thm a ch ca n vo danh sch chui im trung gian. Th tc ny s tip tc cho ti khi ti c ch cn n hoc n c mt node no c ng nh tuyn ti ch cn n. ng nh tuyn s c xc nh bng cch o ngc danh sch chui im trung gian. V cc ng nh tuyn khng cn phi i xng , nn khi DSR kim tra b nh lu tr bng nh tuyn tm thi ca node cui cng trong th tc tm kim v nu mt ng c tm thy n s c s dng thay th. Do kt ni mt chiu c th c iu khin. Duy tr ng nh tuyn: Khi to ra hoc y i mt gi tin s dng mt ng nh tuyn, mi nt m gi tin i qua c trch nhim xc thc rng d liu c th c chuyn qua theo ng kt ni t n n im trung gian tip theo. Mt gi tin xc nhn c th cung cp s xc thc cho mt kt ni rng c th chuyn d liu trn n. Cc gi tin xc nhn thng l mt b phn ca giao thc MAC (nh l khung xc nhn lp lin kt c nh ngha trong IEEE 802.11), hoc l xc nhn th ng ngha l mt nt c th xc nh c rng gi tin c n c nhn bi mt nt trung gian v n c th bit c nt trung gian y gi tin i xa hn. Nu nhng bn tin xc nhn ny cha c gi i th mt nt c th yu cu mt bn tin xc nhn (bn tin xc nhn ny c th c gi trc tip ti nt qua mt ng nh tuyn khc). Bn tin xc nhn c th b yu cu nhiu ln (trong mt gii hn t trc), v nu lin tc khng nhn c bn xc nhn, ng nh tuyn s b loi b khi b nh nh tuyn tm thi v mt bn tin nh tuyn li s c gi ti cc nt m tng gi tin qua kt ni k t thi im cui cng nhn c bn tin xc nhn. Cc nt nghe ngng hoc chuyn tip cc gi tin s s dng tt c cc thng tin nh tuyn tch tr cp nht cho gi tin nh tuyn ca n.
199
cho tng nt trong mng (i vi cc ch thng thng). Cc tin nhn s i t cc nt c tham s ln hn ti nhng nt c tham s thp hn. Cc ng nh truyn c pht hin ra bng cch s dng cc gi tin Truy vn (QRY) v Cp nht (UPD). Khi mt nt mng khng c ng kt ni xung cn c ng nh tuyn ti mt ch, n gi qung b bn tin QRY v s truyn i cho ti khi n tm thy c mt nt c ng nh tuyn ti ch cn n hoc truyn ti c ch cn n. ch ny s p li bng cch gi qung b bn tin UPD c cha gi tr tham s ca nt. Mt nt mng khi nhn c gi tin UPD s cp nht gi tr ca tham s tng ng ca n v gi qung b ra mt gi tin UPD khc. Vic ny c th to ra mt s lng cc ng trc tip t ngun ti ch. Nu mt nt mng pht hin ra mt ch no m n khng th no tm c ng ti, n s t cho im ch ny gi tr tham s ln nht. Trong trng hp nt mng ny khng th tm thy c bt k mt hng xm no c gi tr tham s l hu hn ti node ch , n s c gng tm mt ng nh tuyn mi. Nu cng khng c ng nh tuyn no ti c ch ny (v d nh ch n thuc mt phn b chia ct ca mng), nt mng ny s gi qung b gi tin Xa (CLR) thit lp li tt c cc trng thi nh tuyn v xa b i cc nh tuyn khng cn ng t cc thnh phn khc ca mng. TORA hot ng pha bn trn giao thc IMEP (Giao thc ng gi MANET internet), y l giao thc cung cp kh nng phn phi n nh cc bn tin nh tuyn v cung cp cc giao thc nh tuyn lin quan n s thay i cc kt ni cho cc hng xm ca n. IMEP c gng tp hp cc bn tin IMEP v TORA li thnh mt gi tin (gi l khi) c th gim lu lng. c c thng tin v trng thi ca cc kt ni ti hng xm, IMEP theo s gi nh k cc bn tin BEACON c tr li li bi cc bn tin HELLO
200
M phng ny ko di 150s. Ti im thi gian 10, mt kt ni TCP c khi to gia node 0 v node 1. Chng ta s s dng di y giao thc nh tuyn c bit DSDV v giao thc IEEE802.11 MAC.
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] } Bn ty chn cui cng trong phn cu hnh nt mng c th nhn gi tr ON hoc OFF. Ty chn agentTrace s ln theo ng ca TCP, routerTrace s cung cp ng i ca cc gi tin trong qu trnh nh tuyn, macTrace th ln theo cc gi tin giao thc MAC, v movementTrace c s dng ln theo s di chuyn ca cc node V tr khi to ca nt 0 l: $node_(0) set X_ 5.0 $node_(0) set Y_ 5.0 $node_(0) set Z_ 0.0 S di chuyn tuyn tnh ca mt nt mng c to ra bng cch xc nh r thi gian n bt u chuyn ng, gi tr ta x v y ca ch n v tc ca n. V d, s di chuyn ca nt s 1 c xc nh nh sau: $ns at 15.0 $node_(1) setdest 45.0 285.0 5.0 Chng ta cn to ra v tr ban u ca nt mng cho NAM (Network AniMator) bng cch s dng : Tng t nh vy chng ta khi to v tr ban u cho cc nt cn li. 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 mng khi qu trnh m phng kt thc vi: For {set i 0} {$i < $val(nn)} { incr i} { $ns at $val(stop) $node_($i) reset; } Sau chng ta to kt ni TCP v to ng dng ftp qua kt ni ny nh bnh thng. Kt thc qu trnh m phng nh thng l ngoi tr vic thm lnh kt thc NAM.
Tham s u tin l mt ch ci gi tr ca n c th l r, s, f , D thay cho received, sent, forward v dropped. N cng c th l M m ch mt a im hoc mt s di chuyn, n s c miu t sau. Tham s th hai l thi gian Th ba l s th t ca nt mng Th t l MAC biu th rng gi tin c lin quan n lp MAC, AGT th hin l mt gi tin lp Transport (chng hn nh TCP), hoc RTR nu l mt gi tin c nh tuyn. Gi tr ny cng c th l IFQ ch ra cc s kin lin quan n hng i u tin (nh gi tin b rt chng hn). pha sau cc du gch ngang l s th t ca gi tin (l global sequence number ch khng phi l tcp sequence number). Ti trng tip theo l cc thng tin b sung v gi tin (chng hn nh tcp, ack hoc udp) Tip n l kch c ca gi tin (tnh theo bytes) Trong ngoc vung l cc thng tin v lp MAC. S thp lc phn u tin a2 (tng ng vi 162 trong h thp phn) miu t s thi gian tnh theo giy c mong i
203
l s gi xong gi tin qua knh v tuyn. S th hai c gi tr 1 l thay cho MAC-id ca node ang gi gi tin, s th ba c gi tr 2 chnh l MAC-id ca nt mng ang nhn gi tin. Trng cui cng, 800, ch ra loi MAC l ETHERTYPE_IP. Trong ngoc vung th 2 l a cha IP ngun v ch, tip theo l ttl (Time To Live) ca gi tin (trong trng hp ny l 32) Ngoc vung th ba cp n thng tin tcp: s th t ca n v s chng thc (acknowledgement number) C nhiu kiu nh dng khc nhau lin quan n cc k thut nh tuyn khc v cc loi gi tin khc nhau. Mt cu lnh di chuyn c dng nh sau: M 10.00000 0 (5.00, 5.00, 0.00), (250.00, 250.00), 3.00 Con s u tin l thi gian, th hai l s node, sau l v tr ngun v ch, cui cng l tc .
# Mt v d gm 3 nt cho m phng ad-hoc vi DSDV # nh ngha cc ty chn 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) 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] # loi knh # radio-propagation model # network interface type # loi 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
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.2: Kch thc ca s TCP trong kch bn 3 nt mng vi giao thc nh tuyn DSDV
Hnh 12.3: Kch thc ca s TCP trong kch bn 3 nt mng vi giao thc nh tuyn DSDV vi kt ni qua v khng qua trung gian)
Hnh 12.4: TCP trong kch bn 3 nt mng vi giao thc nh tuyn DSDV, thi im 124.14 giy, kt ni trc tip
Hnh 12.5: TCP trong kch bn 3 nt mng vi giao thc nh tuyn DSDV, thi im 58 giy, kt ni qua 1 trung gian
208
Ti thi im 125.50 giai on 4 bt u v kt thc ti im 149 giy ng thi cng kt thc tt c kt ni. Cc giai on c m t trong hnh 12.6
T kt qu thu c ta c th thy c cc im sau: Trong DSDV, h thng khng th cung cp c giai on 4 do vy kt ni b t sm hn. Tng s gi tin TCP c truyn s dng DSR nhiu hn DSDV. Vi DSR c 6770 gi tin TCP (d liu) c nhn, trong khi DSDV vi cng cc tham s th s gi tin l 2079. (Chng ta c th thu c thng tin ny bng cch s dng: Grep ^r simple.tr | grep tcp | grep _1_AGT > tcp.tr v sau m s dng. Hoc chng t cng c th c c bng cch nhn vo s th t ca gi tin tcp cui cng.) Nu chng ta ln theo du vt ca mt gi tin TCP, chng hn vi gi tin c s th t 5, chng ta s thy n xut hin nhiu ln: 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 gi bi lp TCP ca nt s 0 sau c nhn bi giao thc nh tuyn ca cng nt v c gi i t cng vi mt header thm vo. Tip
209
n c nhn v chuyn tip bi nt s 2, cui cng n c nhn ti nt s 1 ti lp nh tuyn, cui cng l lp TCP. Du vt trn thu c bng cch m chc nng ghi du vt ca agentTrace v routerTrace. 4 dng cn li cp n cng mt gi tin s xut hin nu chng ta m chc nng macTrace.
Ti thi im ban u khng c kt ni no c. Khi kt ni hnh thnh, mt ng nh tuyn c to ra bng cch s dng cc nt mng: 0-2-3-1 (xem hnh 12.10 miu t thi im 33). Ti im thi gian 34.5 mt ng ngn hn c hnh thnh: 0-2-1 nhng ng cho ACK vn khng thay i. Sau vo thi im 44 ng cho ACK thay i thnh 1-3-0 (hnh 12.11 ).
210
211
Giao thc bt tay c dng gim kh nng xung t. Cc xung t c th xy ra khi mt im di ng (gi s l M3) cng mun gi gi tin n cho M2 ti cng thi im vi M1; M3 c th khng bit c rng M1 cng ang truyn d liu n M2, khi mt s xung t gia cc gi tin ca M1 v M3 c th xy ra M2. Hin tng ny c gi l hin tng im cui b du. Vi giao thc bt tay, M3 s khng c gng gi gi tin khi n bit c gi tin CTS gi t M2 ti M1. Nu M1 khng nhn c gi tin CTS n s dng vic truyn tin li v sau mt khong thi gian n s gi li mt gi tin RTS. Node gi tin s hy gi tin DATA nu n gi tin RTS 7 ln m vn khng nhn c gi tin phn hi CTS no. Mt gi tin DATA cng s b hy i sau 4 ln truyn li m vn khng nhn c gi tin ACK (lp MAC). Mc d bt tay s gim kh nng xut hin cc xung t du im cui, nhng n khng hon ton chm dt c n. hiu c cch m cc xung t nh vy vn c th xy ra, chng ta phi xem xt n phm vi a l ca nhiu v s tip nhn. Phn cng hin nay ch ra rng phm vi truyn dn l khong 250 m v phm vi nhiu l khong 550m. Theo nh cu hnh chui trong hnh 12.12 , khong cch gia 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. Thc t, nu node M4 mun truyn tin n M5 thng qua mt ng truyn t M1 n M2, n khng th nghe thy CTS t node M2 v khong cch t n n M1 ln hn 550m. Do M4 c t to ra mt ng truyn n M5 v n s va chm ti node M2 vi ng truyn tr M1. Chng ta s nghin cu trong phn ny s va chm c loi xung t ny trn hiu sut TCP bng cch s dng m phng ns, gii hn vi topo chui. Chng ta s khng cp n vn di ng y. Chng ta xem xt [3, 19, 37] thy chi tit hn.
212
truyn ng thi b gii hn nn chng ta s th tng s gi tin TCP truyn thnh cng bng cch gim ng truyn ACK,s dng ACK tr (Delayed ACK). Ns cho php chng ta m phng ACK tr vi d = 2. Chng ta s xem xa hn cch vn hnh trong trng hp d > 2 bng cch to ra thay i trong trnh m phng ns.
# nh ngha cc ty chn 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] # loi knh # radio-propagation model # network interface type # loi 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 thc ca 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
Bng 12.2: Kch bn tcpwD.tcl cho TCp qua mt mng ad-hoc tnh vi chui topo
215
12.6.3. Cc kt qu m phng
Kt qu m phng i vi n = 9, 20 v 30 nt mng c ghi li cc hnh 12.13 n hnh 12.15
Chng ta thy rng ty chn tr ACK (Delayed ACK) chun (d = 2) lm tt hn mt cht TCP chun (nhng khng tt hn vi cc gi tr ln nht khc ca kch thc ca s) i vi n = 9, v lm tt hn nhiu (hn 10%) TCP chun vi n = 30. S tin b ny thu c tr ACK vi d = 3 (i vi n = 9 v n = 20). Nhng s tin b ln nht m chng ta thy chnh l tt c cc phin bn tr ACK u tt hn TCP chun i vi cc kch thc
216
ca s ln nht ln hn 10, vi cc ty chn d = 3 hoc d = 4 thc hin tt hn ty chn tr ACK chun. Vi n = 9, phin bn tr ACK vi d = 3 chng ta thy mang li t 30% n 40% tin b hn so vi TCP chun vi bt k gi tr kch thc ln nht ca ca s ln hn 10 no; trong phm vi n cng lm tt hn TCP chun 20% 30% vi n = 20 v 6% 20% vi n = 30. Phin bn d = 4 thm ch cn lm tt hn vi n = 20 cho cc ca s c kch c ln nht mang gi tr t 10 n 25. Hiu sut tt hn ca tr ACK cn c th thu c bng cch ti u khong thi gian ca cc ty chn tr ACK Kt lun quan trng nht ca cc ng cong l tnh mnh m ca cc ty chn tr ACK. Trong thc t, khi chng ta khng bit s lng nt mng, khng c l do g gii hn kch thc ca s xung mt gi tr nh, v vy iu ny c th lm gim s lng gi tin gi c mt cch ng k. Khi la chn gi tr ln cho kch c ln nht ca ca s, cc phin bn tr ACK lm tt hn mt cch ng k so vi TCP chun. Chng nhn c hu ht cc gi tr ti u m TCP chun c th nhn c nu n bit s lng nt mng v c th chn kch c ln nht ca ca s mt cch tng ng. i vi mt gi tr nh c nh ca kch c ln nht ca ca s, ty chn tr ACK khng lm tt hn TCP chun v trong hu ht thi gian, kch c ca ca s gii hn s lng gi tin TCP c truyn xung nh hn d, iu c ngha l ty chn tr ACK phi ch cho n khi b m thi gian (mc nh l 100ms) kt thc trc khi to ra mt ACK; trong sut khong thi gian ny node ngun khng th truyn c tin. Tip theo, chng ta v th tin trnh cho kch c ca s vi n = 9 cho TCP chun v cho TCP vi ty chn Delayed ACK vi d = 3. Kch c ca s c ly mu vi chu k 0.1 giy. Chng ta thy rng mc d kch c ln nht ca s l 2000, ca s nghn thc t khng vt qu 13. T cc hnh chng ta thy rng vi TCP chun, s gi tin mt l thng xuyn hn v nghim trng hn (lm tng timeout) trong khi vi phin bn d=3 ca tr ACK khng h lm tng timeout.
Hnh 12.16: Tin trnh ca kch thc ca s cho TCP chun vi kch thc ca s ln nht l 2000
Hnh 12.17: Tin trnh ca kch thc ca s cho DelAck TCP vi d = 3 v kch thc ca s ln nht l 2000
217
Trong hnh 12.18 chng ta thy tin trnh ca kch c ca s nghn ca TCP chun vi kch c ln nht ca ca s l 3 trong trng hp 9 nt mng. Chng ta bit rng mt kch c ln nht gia 2 v 3 s tht s mang n hiu sut ti u (v iu ny c xc minh ln na hnh 12.13). Chng ta thy trong hnh 12.18 rng hu nh khng c s mt mt gi tin. l kch c ca s thc t l nh nht gia ca s nghn (c miu t trong hnh) v kch c ln nht ca ca s (gi tr ca n y l 3). Trong cc hnh trc , tt c cc phin bn s dng tr ACK u c khong thi gian mc nh l 100ms (nh gii thch trong phn gii thiu). Tip theo, chng ta thay i di ca khong thi gian v kim tra s tc ng ca n vi s lng gi tin, xem hnh 12.19. Chng ta xem xt phin bn tr ACK vi d = 3. Chng ta thy rng gi tr mc nh thc hin kh tt, mc d vi cc ca s c kch thc ln nht nh, khong thi gian nh thc hin tt hn mt cht, trong khi vi ca s c kch thc ln nht ln, mt khong thi gian ln (130ms) s tt hn. Chng ta c gng tng khong thi gian trn 130ms nhng sau s gi tin gim xung. Cui cng, chng ta xem xt trng hp n = 3 nt mng. Trong trng hp ny hin tng du im cui khng cn xy ra na, v th chng ta khng thy vic mt mt gi tin TCP no c, cho d vi bt c kch c ca s no. Thm ch sau , tr ACK c th c s dng tng ng k hiu sut. Vic ny c chng minh trong bng 12.3 v mang ti s lng gi tin TCP c nhn thnh cng trong 149 giy vi n = 3. S ci tin lm tng t 10% n 15% khi d tng t 2 ln 4, khng ph thuc vo kch c ln nht ca ca s (ch cn n ln hn d).
Hnh 12.18: Tin trnh ca kch thc ca s cho TCP chun vi 9 nt mng v kch thc ca s ln nht l 3
Hnh 12.19: Tc ng ca khong thi gian tr ACK ti s gi tin TCP gi c, nh l mt chc nng ca kch thc ca s ln nht. d=3
Tuy nhin vi d = 4 nh mong i, chng ta c th tht rng chng ta nhn c mt hiu sut ti vi kch c ln nht ca ca s l 3, bi v ch lun phi ch i cho n khi khong thi gian 100ms ca ty chn tr ACK ht gi mt gi tin ACK (v cc ca s
218
Bng 12.3: S lng gi tin gi c trong khong thi gian 149 giy vi n=3 nh mt chc nng ca kch thc ca s ln nht
ch cho php gi 3 gi d liu).
219
Chng 13 Hng i c in
Mc lc
13.1. M phng hng i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2. Hng i hu hn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 223
Ngi dch: L Th Nga Bin tp: Nguyn Anh Tn Bn gc: NS Simulator for beginners, Chapter 10 [2]
Ns2 c th c s dng m phng cc m hnh hng i c in. Trong cc m hnh c in n gin nht, thi gian n gia cc gi l ngu nhin v phn b xc sut chung no , v thi gian truyn mt gi l cng l ngu nhin theo cc phn b khc no . Thc t thi gian truyn dn thay i c th phn nh s khng i ca tc truyn nhng nhng c s bin i kch thc gi.
220
Bng 13.1 gii thiu m phng ca hng i ny. M phng ny to ra file out.tr vi tt c cc s kin, and also a monitor-queue trace called qm.out, v cng to ra mt file truy vt dung gim st hang i gi l qm.out,nh c cp mc 7.3. Bng cch v ct 5 (cc gi trong kch c hng i) da vo ct 1 (thi gian) Bng cch v th ct 5 theo ct 1, chng ta nhn c s m rng chiu di hng i (xem hnh 13.1). Kch c hng i c m phng trung bnh trn 1000sec l 9.69117, gi tr xp x ca 10 theo 13.1 . Ch rng chng ta s dng cch n gin hn trnh by v vn dng cc bin ngu nhin so vi cch c th hin mc 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 thc cc gi c lm trn thnh s nguyn (bytes), # chng ta phi c kch thc cc gi ln hn v li do lm trn nh, # bng thng ln set link [$ns simplex-link $n1 $n2 100kb 0ms DropTail] $ns queue-limit $n1 $n2 10000 # thit lp kch thc gi v thi gian n gia cc gi ngu 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 # qun 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 thi gian n phn b m nhng thi gian truyn cc gi l khng i. m phng, n gin thay th bin ngu nhin pktSize bng gi tr trung bnh ca bin. Cng nh th, hng i D/M/1 c thi gian truyn phn b m v thi gian gia hai gi n l khng i. m phng, chng ta c th thay th bin ngu nhin InterarrivalTime bi gi tr trung bnh.
13.2. Hng i hu hn
Trong m phng trn, ta s dng b m rt ln trnh mt gi d liu. C th s dng cc b m nh hn v quan st mt mt. Vi hng i M/M/1 v K b m, xc sut mt gi l: P (loss) = K
k i i=0
Cch n gin tnh ton xc sut mt gi t m phng l chia tng s gi b mt cho tng s gi n, hai gi tr ny nhn c dng cui cng ca 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 # thit lp kch thc gi v thi gian n gia cc gi ngu 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 # qun 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
225
te lec om
226
227 228 228 230 230 233 235 237 239 240 240 240 241 242 243 243 244 245 247
14.1.2. Cc v tinh LEO (Cc v tinh qu o thp) . . . . . . . . . . 14.2. S dng cc tnh nng m rng cho v tinh. . . . . . .
vn
14.3. Thc hin phn m rng m phng v tinh . . . . . . 14.3.1. S dng cc danh sch lin kt . . . . . . . . . . . . . . . . . . . . . . . . 14.3.2. Cu trc nt mng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3.3. Cc chi tit v ng truyn v tinh. . . . . . . . . . . . . . . . . . . 14.4. Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ngi dch: Trng Th Hin Bin tp: Nguyn Nam Hong Bn gc: The ns Manual, Chapter 3 [1]
Chng ny tp trung m t cc tnh nng m rng d dng m phng mng v tinh trong ns. C th, cc tnh nng m rng ny cho php ns c th m hnh ha cc phn sau: Cc v tinh a tnh loi chuyn tip (bent-pipe) truyn thng vi a ngi dng trn cc tuyn ln v tuyn xung v cc tuyn khng i xng. Cc v tinh a tnh vi cc khi x l tn hiu trn v tinh (processing payload) gm hai loi: hoc l khi x l loi khi phc tn hiu (regenerative payload) hoc l khi x l chuyn mch gi hon ton (full packet switching) Cc chm v tinh LEO qu o cc nh Iridium hoc Teledesic. Nhng m hnh v tinh ny phn ln c nhm n vic s dng ns cho nghin cu v cc kha cnh ca h thng v tinh, nh l cc giao thc MAC, lp lin kt d liu, giao thc nh tuyn, v giao thc giao vn.
227
Cc h thng v tinh qu o cc, chng hn nh h thng Iridium v h thng Teledesic va c xut c th c m hnh ha trong ns. Ngoi ra cng c cc cu hnh cho cc chm sao v tinh phi a tnh khc (v d nh chm sao Walker). Ngi dng c th pht trin cc lp dnh cho loi chm sao mi . Cc tham s ca cc chm sao v tinh c th m phng c gm c: Cc thng s c bn ca chm sao: bao gm cao ca v tinh, s lng v tinh, s mt phng qu o v s v tinh trn mi mt phng qu o.
228
229
Iridium cao so vi mt nc bin S mt phng qu o S v tinh trn mi mt phng dc (inclination)(deg) Khong cch gia hai mt phng (deg) Chia ng phn gii(seam)(deg) Ngng gc ngng (deg) ng b cng mt phng ng b khc mt phng ISLs trn mi v tinh Bng thng ca ISL Bng thng tuyn ln xung ISLs gia hai mt phng ngc chiu Ngc v ISL (deg) 780km 6 11 86.4 31.6 22 8.2 C C 4 25Mb/s 1.5Mb/s Khng 60
Cc ng truyn t tri t n v tinh (GSL): nhiu thit b u cui c th c kt ni n mt knh v tinh GSL. ng truyn GSL cho v tinh GEO l khng i, trong khi ng truyn GSL cho knh LEO th nh k chuyn giao nh m t sau. Ngng gc ngng thu tn hiu (elevation mask): Gc ngng m mi ng truyn GSL c th hot ng. Hin nay, nu v tinh LEO ang phc v mt thit b u cui m ri khi ngng goc ngng ny, thit b u cui s tm kim mt v tinh khc m ang nm pha trn ngng gc ngng. Cc thit b u cui v tinh xc nh thi c chuyn giao theo cc khong thi gian tr c trng bi mi ngi dng. Mi thit b u cui khi to chuyn giao khng ng b. Cng c th nh r mt h thng trong mi ln chuyn giao xy ra mt cch ng b trong h thng. Bng di y lit k cc thng s s dng m phng cho h thng Iridium v Teledesic
230
th t trn b mt tri t. C 3 loi nt mng khc nhau c b sung vi cng lp i tng Sat Node nhng vi cc lp i tng khc nhau dnh v tr, qun l chuyn giao v knh truyn. Lp i tng v tr (position objects) theo di v tr ca v trinh trn h quy chiu nh l mt hm thi gian m phng xy ra. Thng tin v tr ny c dng quyt nh tr truyn kt ni v xp x thi gian cho chuyn giao kt ni.
231
$ns node-config -satNodeType terminal n \ (Cc nt khc c th thit lp cu hnh y) set n1 [$ns node] $n1 set-position $lat $lon; # tnh theo thp phn Position/Sat/Geo: Mt v tinh a tnh GEO cng c thng s c trng l v tr kinh trn xch o. Khi thi gian m phng tng, v tinh a tnh di chuyn qua h thng ta vi chu k qu o ging nh chu k quay ca tri t. Kinh thay i t [-180; 180] . C hai loi nt v tinh a tnh quen thuc, l GEO (cho v tinh c x l tn hiu) v "b lp geo" (cho v tinh chuyn tip). B to nt c th dng to ra v tinh a tnh vi i tng v tr gn 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 cc c qu o trn theo mt phng qu o c nh trong h thng ta . Tri t quay pha di ca mt phng qu o ny, v vy vng ph song (footprint) ca v tinh trn b mt tri t s theo cc hng ng - ty v bc - nam. C th hn, loi i tng v tr cc ny c th s dng m hnh s chuyn ng ca bt k mt qu o trn no trong mt mt phng c nh. Chng ta dng thut ng cc y bi v sau ny chng ta dng cc v tinh m hnh chm sao v tinh qu o cc. Qu o v tinh c c trng bi 6 tham s: cao so vi mt nc bin, trc chnh, lch tm, gc ln ng ca im ln (right ascension of ascending Node), dc v thi gian cn im tri t nht. V tinh qu o cc trong ns ch yu c qu o trn, v vy chng ta n gin ho tnh cht ca qu o ch cn 3 tham s: l cao so vi mt nc bin, dc v kinh , vi tham s th t alpha c trng cho v tr ban u ca v tinh trn qu o, nh miu t di y. cao so vi mt nc bin tnh bng km. dc nm trong khong [0; 180] , vi 90 tng ng l qu o thun v gc ln hn 90 tng ng vi qu o ngc. im ln (ascending node) tng ng vi v tr ca v tinh m footprint ca v tinh ngang qua xch o khi ang di chuyn t nam sang bc. Trong chng trnh m phng ny, kinh ca im ln l kinh trn tri t, ti im y (nadir point) ca v tinh i qua ng xch o khi di chuyn t nam ti bc 1 . Kinh ca im ln nm trong khong [-180; 180] .
1
...
232
Tham s th t, alpha, xc nh v tr ban u ca v tinh dc theo qu o, bt u t im ln. V d, gi tr alpha 180 ch ra rng v tinh ang ph trn ng xch o, di chuyn t bc n nam. Alpha c gi tr t [0; 360] . Cui cng, thng s th 5, mt phng, c nh ngha khi to ra nt v tinh cc. Tt c cc v tinh trong cng mt mt phng c a vo cng mt ch mc mt phng. B to nt mang c dng to ra mt v tinh cc vi i tng v tr gn vo nh sau: $ns node-config -satNodeType polar n (cu lnh cu hnh nt mng khc y ) set n1 [$ns node] $n1 set-position $alt $inc $lon $alpha $plane
233
234
d liu dng cho giao thc MAC nhn ( m phng i c gi d liu n). phy: Lp vt l- hin ti ch c hai lp vt l (lp Phy/Sat v lp Phy/Repeater) c nh ngha. Lp Phy/Sat chuyn thng tin ln v xung cc khi- nh m ha trong mng khng dy miu t chng trc, m hnh truyn dn radio c gn vo im ny. Lp Phy/Repeater truyn cc gi d liu nhn c theo kiu ng ng trn giao din nhn truyn thng ti giao din truyn. Mt ISL c th thm vo gia hai nt mng dng cu lnh sau: $ns add-isl $ltype $node1 $node2 $bw $qtype $qlim Cu lnh ny to ra hai knh (loi Channel/Sat), v giao din mng thch hp c hai nt mng, v gn cc knh truyn vo giao din mng. Bng thng ca ng truyn c t l bw. Lai ng truyn (ltype) phi c thit lp l loi intraplane, interplane, hoc crossseam. Mt GSL bao gm vic them vo cc giao din mng v mt knh truyn trn v tinh ( iu ny thng thng c hon thnh dng phng php ph ngoi c m t on sau), v sau nh ngha giao din ph hp trn nt mt t v gn chng vo ng truyn 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 phi l geo hoc polar, v chng ta thng dng bin downlink_ v uplink_ ca v tinh, do , ng truyn tuyn ln v tuyn xung ca v tinh phi c to ra trc khi gi cu lnh ny. Mc nh rng b to nt i vi cc nt mng v tinh ( m t phn 5.3 cun The ns Manual-The VINT Project ) s to ra cc loi nt mng theo loi v tinh GEO hay polar , giao din ng truyn tuyn ln tuyn xung ca chng, to ra v gn vo knh ng truyn, da trn vic la chn giao din c quy nh.
235
qu trnh m phng - khng kh thay i chng trnh m phng hot ng theo cch nh vy. Khng c chuyn giao knh truyn no lin quan n v tinh a tnh. Nhng c hai loi knh truyn n v tinh qu o cc cn c chuyn giao: knh truyn GSLs trong v tinh qu o cc v cc knh truyn crossbeam ISLs. Cc knh interplance khng chuyn giao nhng chng khng hot ng cc v cao nh chng ta miu t di y. Mi thit b u cui kt ni n v tinh qu o cc khi ng b nh thi, nu qu thi hn s dn n Qun l CHuyn giao (HandoffManager) kim tra v tinh ny c nm trong vng hot ng ca thit b u cui hay khng. Khi th qun l chuyn giao s tch thit b u cui t ng truyn ca v tinh, v tm kim dc theo ng truyn s trm v tinh cho cc v tinh khc c th. u tin, v tinh "tip theo trong mt phng qu o hin ti c kim tra, v tr n v tinh ny s c lu trong i tng Position ca mi trm v tinh cc, v c t thng s trong sut cu hnh m phng dng Node/SatNode cu lch: "$node set_next $next_node. Nu v tinh tip theo khng ph hp, qun l chuyn giao s tm kim cc v tinh cn li. Nu tm thy mt v tinh cc thch hp th n s kt ni giao din mng ca n n knh truyn tuyn ln v tuyn xung ca v tinh, v bt u b m thi gian chuyn giao. Nu khng tm thy v tinh no, n bt u b m gi v li th li sau . Nu bt k s thay i ng kt ni no din ra th b phn nh tuyn s nhn c thng bo. Vng hat ng v b m khong thi gian chuyn 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 , chuyn giao c th c thc hin mt cch ngu nhin trnh nhiu pha bng cch t gi tr bin sau: HandoffManager set handoff_randomization_ 0; # 0 l false, 1 l true Nu bin handoff_randomization l true, th khong thi gian chuyn giao tip theo l mt bin ngu nhin c chn t phn b u trong di (0:5*_term_handoff_int_, 1.5*term_handoff_int_). Crossseam ISLs l loi ISLs duy nht c thc hin chuyn giao. Tiu chun cho chuyn giao Crossseam ISLs c tn ti mt v tnh trong mt phng gn khng v v tinh ny gn vi v tinh cho hn mt phng m n ang c ni ti. Mt ln na, mt b nh thi chuyn giao chy trong b qun l chuyn giao v tinh cc quyt nh khi no th chm sao v tinh c duyt cho cc c hi chuyn giao. Cc chuyn giao kiu Crossseam ISL c khi u bi cc v tinh trong mt phng c s th t thp hn 2. Do , c kh
236
nng sinh ra mt iu kin tm thi m mt v tinh cc c 2 crossseam ISLs trong (ti cc v tnh khc nhau). Khong thi gian gia hai ln chuyn giao v tinh c th c t li t OTcl v cng c th c ngu nhin ha. HandoffManager/Sat set sat_handoff_int_ 10; # theo giy Interplane v crossseam ISLs khng hot ng khi v tinh gn im cc, bi v yu cu v tr cho ng truyn rt kht khe bi v v tinh di chuyn li n v tinh khc. Vic ngt nhng ng kt ni ny c gim st b tham s sau: HandoffManager/Sat set latitude_threshold_ 70; # theo Gi tr ca tham s ny trong v d m t ch l d on, gi tr chnh xc l c lp nh vo phn cng ca v tinh. Khi qun l chuyn giao kim tra v v quan st thi gian tr chuyn giao v tinh ca n, nu mt hoc c cc v tinh khc nm trn v latitude_threshold_ tnh bng ( pha bc hoc pha nam) th ng truyn khng hot ng cho n khi cc v tinh u nm di ngng ny. Cui cng, nu crossseam ISLs tn ti, s xy ra tnh hung chc chn m trong cc v tinh ko n mt v tinh khc qu gn chnh gia v , ( nu qu o khng gn vi qu o cc ban u). Chng ta kim tra hin tng xy ra cho qu o ca hai v tinh b chng ln ln nhau vi tham s sau: HandoffManager/Sat set longitude_threshold_ 10; # theo Mt ln na khng nh li, gi tr cho tham s trong v d ny ch l suy on, nu c hai v tinh gn kinh nhau hn ngng kinh cho trc longitude_threshold_ th ng truyn gia chng b ngt. Tham s ny khng th t mc nh ( t l 0), tt c cc mc nh cho cc bin thay i lin quan gia cc v tinh c th tm thy trong th mc ~ns/tcl/lib/ns-sat.tcl.
14.2.4. nh tuyn
nh tuyn trong mng v tinh tng t vi nh tuyn trong ns2 c ngoi tr vic n c thc hin hon ton bng C++. Vi mi s thay i ca topo mng, mt phn t nh tuyn trung tm s xc nh tp mng ton cc, s tnh ton cc tuyn mi cho mi nt mng v s dng cc tuyn ny dng ln mt bng chuyn tip (forwarding table) cho mi nt mng. Hin nay, bng chuyn tip ny c duy tr bi mt phn t nh tuyn trn mi nt mng, v cc gi d liu khng gi n phn t no trn nt mng th s c gi mc nh n phn t nh tuyn. ch nhn tin c mt ng i, bng nh hng cha im u ng truyn i tng ng. Ngi dng c cnh bo rng loi nh tuyn trung tm ny c th dn n vi phm quan h nhn qu.
237
nh tuyn c trong lp SatRouteObject v c to ra v thi hnh bng cu lnh OTcl sau: set satrouteobject_ [new SatRouteObject] $satrouteobject_ compute_routes trong cuc gi n compute_routes c biu din sau tt c cc kt ni v nt mng trong m phng c minh ha. Ging nh Scheduler, c mt trng hp ca SatRouteObject trong m phng, v n c chp nhn bi mt bin trung gian v d trong C++. Xt v d, cuc gi tnh li ng i sau mt topo thay i l: SatRouteObject::instance().recompute(); Thay v s dng nh tuyn trung tm hin nay th thit k ca phn t nh tuyn trn mi nt mng c thc hin vi cch thc nh tuyn phn b. Cc gi d liu dng cho nh tuyn c th gi n cng 255 ca mi nt mng. Cha kha nh tuyn phn b lm vic chnh xc l cho phn t nh tuyn c quyn quyt nh ng truyn gi d liu n. iu ny c thc thi bi lp i tng NetworkInterface trong mi lin kt, m ch c cc nhn ng truyn trn mi gi n. Hm tr gip NsObject*intf_to_target (int label) c th s dng tr li kt qu phn u ca ng truyn tng ng vi mi nhn ang c. Vic s dng cc phn t nh tuyn tng ng vi cc phn m rng ca phng thc di ng. Vic tnh ng i nh tuyn ngn nht dng tr truyn hin nay nh l mt tham s nh tuyn. C th tnh ton cc tuyn bng cch s dng vic m cc kt ni trn tuyn (hop count) v khng s dng tr truyn dn. thc hin iu ny, ta phi t bin mc nh sau y l false: SatRouteObject set metric_delay_ "true" Vi topo mng ln nh v d Teledesic trn th m nh tuyn trung tm s lm chm thi gian x l bi v n thc thi thut ton tm ng ngn nht trn tt c cc cp mi topo thay i thm ch c cc topo khng c d liu truyn. tng tc m phng khi khng c nhiu d liu truyn nhng c nhiu v tinh v ISLs, c th s dng tnh ton tuyn theo s xut hin ca d liu (data driven) ch khng tnh ton tuyn theo s xut hin ca chuyn giao (handoff driven). Vi vic tnh ton tuyn theo s xut hin ca d liu, ng i c tnh ch khi c mt gi d liu gi i, v hn na, thut ton ng i ngn nht t ngun n ( ch cho nt mng vi mt gi d liu gi i) c thc thi thay cho thut ton tm ng ngn nht ca tt c cc cp. Bin OTcl c th cu hnh nh sau (t l false mc nh) : SatRouteObject set data_driven_computation_ "false"
238
14.2.5. H tr bm vt
i tng c bit SatTrace (lp SatTrace c tch t lp Trace) c dng ghi li ta a l l kinh v v ca nt mng ang ghi du vt ny (trong trng hp mt nt mng v tinh, v v kinh tng ng vi im thp nht ca v tinh). V d, mt gi d liu trn mt ng truyn t nt mng 66 n nt mng 26 c th c ghi li nh sau: + 1.0000 66 26 cbr 210 ------- 0 66.0 67.0 0 0 nhng trong m phng v tinh, thng tin v tr c gn 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 trng hp ny, nt mng 66 v 37.9000 , kinh 122.3000 , trong khi nt mng 26 l mt v tinh LEO m cc im thuc v tinh l v 48.9000 , v kinh 120.3000 (v m tng ng vi hng nam, trong khi kinh m tng ng vi hng ty). Thm vo lp Trace/Sat/Error tm vt bt k gi d liu no b li thng qua mt m hnh li. Tm vt cc li truy cp gi gim i do li 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 xy ra mt nt mng sinh ra mt gi m khng th truyn i (nh trong sat-mixed.tcl). iu ny s ch ra s suy gim trong file truy vt vi trng ch n t l 2, v n tn 999.00: d 848.0000 14 -2 cbr 210 ------- 1 14.0 15.0 6 21 0.00 10.00 -999.00 -999.00. iu ny ch ra rng nt mng 14 ang c gng gi mt gi d liu n nt mng 15, nhng khng th tm thy ng i thun li nht. d dng tm vt tt c cc ng truyn v tinh trong m phng dng cu lnh before sau y minh ha cho cc nt mng v ng truyn: set f [open out.tr w] $ns trace-all $f Sau dng dng lnh sau y sau khi to ra tt c cc nt mng v ng truyn (chn tt c kiu li vo nu c th), d dng truy vt cc ng truyn v tinh: $ns trace-all-satlinks $f c bit, iu ny s t s bm vt xung quanh cc hng i lp lin kt d liu trong cc ng truyn v tinh s nhn c truy vt gia lp MAC v lp lin kt d liu cho gi d liu nhn c. c kh nng truy vt ch trn mt ng truyn xc nh trn mt nt mng xc nh th ch c th dng cu lnh sau: $node trace-inlink-queue $f $i $node trace-outlink-queue $f $i trong i l ch mc giao din c truy vt. S b sung ca i tng truy vt v tinh c
239
14.2.6. Cc m hnh li
Cc m hnh li trong ns c trnh by chng trc. Nhng m hnh li ny c th c thit lp to ra cc gi d liu b li theo cc hm phn b xc sut khc nhau. Nhng m hnh li ny n gin v khng cn phi tng ng vi cc li c th c trn knh v tinh thc (c th nh knh LEO). Ngi dng c t do thit lp cc m hnh kiu li phc tp hn m ging vi mi trng v tinh c th hn. M sau a ra v d cch thc thm mt m hnh li vo mt ng truyn: set em_ [new ErrorModel] $em_ unit pkt $em_ set rate_ 0.02 $em_ ranvar [new RandomVariable/Uniform] $node interface-errormodel $em_ N s thm mt m hnh li vo ng nhn tn hiu ca giao din u tin c to trn nt mng $node (c th l gia lp MAC v lp lin kt d liu)- giao din u tin ni chung tng ng vi giao din ng truyn tuyn ln v tuyn xung cho v tinh hoc cho thit b u cui ( nu ch c mt ng truyn tuyn ln hoc ng truyn tuyn xung tn ti). thm vo m hnh li ny vo mt stack khc (nh ch mc bi i) th dng m lnh: $node interface-errormodel $em_ $i
240
241
xy ra enque "+", deque "-", and drop "d" tng ng n mt gi d liu ging nhau, v ch l -1 Trong cc trng hp t xy ra, c th c cc bn tin cnh bo trong sut qu trnh thc hin biu th vic "nm ngoi phm vi ca nt mng". iu ny c th xy ra nu mt nt mng b t kt ni trong topo v sau mt nt mng khc gi mt gi d liu n . V d, wiredRouting trong file ...ns/tcl/ex/sat-mixed.tcl. iu ny xy ra bi v bng nh tuyn c kch thc thay i ph thuc vo s thay i ca topo mng. Nu mt nt mng b t kt ni n s khng c bt c s tip nhn c chn vo bng nh tuyn.( v do bng nh tuyn khng th tng ln ph hp vi s nt mng). Cnh bo ny khng nn tc ng n u ra truy vt thc. Khng c s tng tc no vi cc m v tuyn hoc IP di ng.
14.2.10. Cc tp lnh v d
Cc tp lnh v d ny c th tm thy trong th mc ...ns/tcl/ex, bao gm: sat-mixed.tcl: M phng c hai loi v tinh cc v v tinh a tnh. sat-wired.tcl: tng t nh tp lnh trc, nhng n ch ra cch kt ni cc nt mng hu tuyn trong m phng v tinh. sat-repeater.tcl: biu th cch s dng n gin ca v tinh a tnh loi chuyn tip, bao gm c cc m hnh li. sat-aloha.tcl: m phng mt trm thit b u cui trong cu hnh v tinh VSAT dng giao thc MAC aloha khng khe cm vi mt v tinh a tnh chuyn tip. Thit b u cui lng nghe knh truyn ca chng ( sau mt khong tr) v nu n khng nhn c gi d liu ca n vi mi khong thi gian tr, n s thc hin c ch back-off theo hm m v sau truyn li gi d liu.Tn ti ba hm khc nhau: basic, basic_tracing, v poisson, cc hm khc nhau ny c miu t u mi ch thch ca tp lnh. sat-iridium.tcl: M phng chm sau LEO vi tham bin tng t chm sao ca Iridium ( tp lnh h tr l sat-iridium-links.tcl, sat-iridium-linkswithcross.tcl, v sat-iridium-nodes.tcl) _at-teledesic.tcl: M phng chm sao LEO c knh truyn rng vi tham s tng t nhng xut cho chm sao v tinh 288 Teledesic ( cng h tr cc tp lnh l sat-teledesic-links.tcl v sat-teledesic-nodes.tcl). Thm vo , c mt tp lnh kim tra tnh ph hp nhiu cu hnh mt cch ng thi, c th tm thy th mc ...ns/tcl/test/testsuite-sat.tcl.
242
243
Hnh 14.4 cung cp mt gin lit k cc cch thc t chc kt ni c sp xp. Mi i tng trong danh sch lit k c kt ni qua "LINK_ENTRY" c thnh vin c bo v ca lp. Cc li vo ny cha con tr ch n cc thnh phn trong danh sch v mt con tr na nh a ch ca con tr next pha trc i tng c trc.
244
245
ca n, v chng ta s dng chc nng tr gip tm a ch MAC ca giao din tng ng ca nt mng bc truyn tip theo.Bi v lp lin kt d liu LL xut pht t lp LinkDelay, tham s delay_ ca LinkDelay c th dng m hnh ha bt c tr x l trong lp lin kt d liu, vi gi tr mc nh tr ny l khng.
246
Tip theo, gi d liu c gi n giao din truyn (Phy_tx) ca lp SatPhy. i tng ny va gi gi n knh truyn c gn vo. Chng ta c gi thit rng tt c cc giao din gn vo knh l mt phn ca danh sch lien kt cho knh . iu ny tuy nhin khng ng vi giao din truyn. Ch giao din nhn c gn vo mt knh bao gm danh sch ng truyn ny, t ch c giao din nhn nhn c bn sao ca gi d liu truyn. Vic s dng giao din truyn v nhn ring r phn nh trung thc cc ng truyn v tinh song cng c to ra bi knh RF cc tn s khc nhau. Gi d liu i c gi tip n mt SatChannel, m n s sao gi d liu n mi giao din nhn ( hoc lp SatPhy) trn mi knh. Phy_rx gi gi d liu n lp MAC. ti lp MAC, gi d liu c gi trong sut thi gian truyn ca n ( v bt c s pht hin xung t no c tm thy s c thi hnh nu lp MAC, nh l Aloha MAC, h tr n).Nu mt gi d liu n lp MAC an ton, n s truyn tip n mt i tng ErrorModel, nu n tn ti. Nu khng th gi s chuyn qua bt c i tng truy vt nhn no n i tng SatLL . i tng SatLL truyn gi n sau tr x l ( nhc li rng theo mc nh, gi tr cho delay_ l bng 0). Gi d liu nhn s ti i tng cui cng m i tng ny thuc v lp NetworkInterface. i tng ny thm nhn iface_field vo tiu chung cng vi gi tr ch mc ring ca ngn xp mng. iu ny c dng thc hin bm vt xem ngn xp mng no m mt gi d liu ti. Gi d liu ny sau s ti u vo ca SatNode (thng l b phn loi a ch). Cc ngn xp mng (network stacks) ca v tinh loi lp-a tnh ch bao gm mt Phy_tx v mt Phy_rx thuc v lp Repeater-Phy, v mt SatLinkHead. Cc gi d liu nhn bi Phy_rx c gi ti Phy_tx vi tr bng khng. V tinh loi lp-a tnh l mt nt v tinh pht li. N khng c cc b phn nh bm vt, qun l chuyn giao, nh tuyn hoc bt k giao din ng truyn no khc ngoi tr giao din chuyn tip.
247
$ns_ node-config -channelType <type> $ns_ node-config -downlinkBW <value> (ch rng Geo SatNodeType loi lp-a tnh ch yu cu nh r loi knh, cn tt c cc la chn khc khng c quan tm n. Hy tham kho v d trong tcl/ex/satrepeater.tcl.) $ns_ satnode-polar <alt> <inc> <lon> <alpha> <plane> <linkargs> <chan> y l mt phng php bao bc wrapper method dung trong m phng to ra mt nt mng v tinh cc. Hai ng truyn ln v xung, c to ra vi hai knh truyn, knh ln v knh xung. <alt> l v ca v tinh cc, cn <inc> l gc nghing di chuyn theo ng xch o w.r.t, <lon> l kinh ca im ln ascending node, <alpha> a ra v tr ban u ca v tinh dc theo qu o ny, <plane> nh ngha mt phng qu o v tinh cc ny. <linkargs> l danh sch cc la chn bin ng truyn nh ngha giao din mng ( ging nh LL< Qtype,Qlim,Phy, MAC,v.v) $ns_ satnode-geo <lon> <linkargs> <chan> y l phng php bao bc to ra nt mng ca b lp v tinh a tnh GEO, u tin to ra mt nt mng v tinh cng vi hai giao din ng truyn (tuyn ln v tuyn xung) v hai knh v tinh (knh ln v knh xung). <chan> nh ngha loi knh $ns_ satnode-geo-repeater <lon> <chan> y l phng php bao bc to ra nt mng ca b lp v tinh a tnh GEO, u tin to ra mt nt mng v tinh cng vi hai giao din ng truyn (tuyn ln v tuyn xung) v hai knh v tinh (knh ln v knh xung). $ns_ satnode-terminal <lat> <lon> Cn y l phng php bao bc to nt mng ca thit b u cui. <lat> v <lon> nh ngha kinh v v tng ng ca thit b u cui. $ns_ satnode <type> <args> y l mt phng php nguyn thy to ra loi satnodes <type> c th l cc, a tnh, hoc thit b u cui. l: $satnode add-interface <type> <ll> <qtype> <qlim> <mac_bw> <phy> y l mt phng php ni b ca Node/SatNode ci t cho lp lin kt d liu, lp MAC, hng i giao din v cu trc lp vt l cho cc nt mng v tinh. $satnode add-isl <ltype> <node1> <node2> <bw> <qtype> <qlim> Phng php ny to ra ISL (ng truyn v tinh ni b ) gia hai nt mng. Loi ng truyn (inter, intra, hoc crossseam), di thng ca ng truyn, loi hng i v gii hn 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 to mt GSL (ng truyn
248
t mt t ti v tinh). u tin, mt stack mng c to ra nh ngha bi LL, IfQ, Qlim, MAC, BW, v lp PHY. Tip theo nt mng c gn vo knh truyn ln v knh truyn xung.
249
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 vn nghin cu qua mailing list, qua din n trn vntelecom T chc cc seminar, cc bui gp g trao i kin thc Thc hin cc d n chuyn mn 4. Quy nh Cc thnh vin tham gia mailling list vi t cch c nhn cng vi vic cung cp cc thng tin ti thiu v bn thn nh tn, gii tnh, trnh , ni cng tc ti cc thnh vin khc
254