You are on page 1of 256

VNTELECOM.

ORG ADNET NETSIM

M PHNG TRONG NS-2

TI LIU THAM KHO LNH VC M PHNG V NG DNG

Dch thut bi: Nhm TE Bin tp bi: Nhm CM

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

NetSim VNtelcom.orgTM AdNet

Tp hai: M phng trong NS-2

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

Nhm bin son

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

3.4. Lp lch s kin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Hin th: dng NAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Bm vt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3.6.1. Bm cc i tng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2. Cu trc ca cc file bm vt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61 65 67
67 67

3.7. Bin ngu nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3.7.1. Ht nhn (hay gi tr ban u ca mt bin ngu nhin)v b to . 3.7.2. To cc bin ngu nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

88
88 89 91 91

5.3. Mng c tnh cht ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


5.3.1. To mt Topo ln hn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2. Lin kt li . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92
93 94

Chng 6. M phng v m t TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . 6.1. M t TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


6.1.1. Cc mc ch ca TCP v iu khin lung theo c ch ca s . . . . . 6.1.2. Cc bn tin xc nhn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3. Ca s chng tc nghn ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.4. Mt cc gi tin v ngng Wth ng: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.5. Khi to kt ni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

100 101 107 111

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

119 124 126 127 130 130


131 132

7.4. nh tuyn da trn im RP . . . . . . . . . . . . . . . . . . . . . . . . .


7.4.1. Ch DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.2. nh tuyn vi im RV tp trung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

138 138 140 140 142 143


143 148 153

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

154 161 162 163 164


164 164 165

10

9.3. nh ngha cc chnh sch . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


9.3.1. nh ngha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.2. Cu hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

166
166 167

9.4. M phng Diffserv: bo v cc gi tin d b tn cng . .


9.4.1. Kch bn m phngnh ngha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

177 178 179 180 180 182 184 185 185


185 186

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

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

Chng 12. Mng di ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . .

195 197
197 198 198 199

12.2. M phng mng di ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


12.2.1. Kch bn m phng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.2. Vit mt tcl script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

203 207 208


208 210 210 211

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

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

220 220 223 226 227


228 228

12

14.2. S dng cc tnh nng m rng cho v tinh . . . . . . . . . .


14.2.1. Nt mng v v tr ca nt mng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.2. ng truyn v tinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.3. Chuyn giao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.4. nh tuyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.5. H tr bm vt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.6. Cc m hnh li . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.7. Cc la chn cu hnh khc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.8. M phng h tr NAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.9. Tch hp vi m hu tuyn v v tuyn . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.10. Cc tp lnh v d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

230
230 233 235 237 239 240 240 240 241 242

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

243
243 244 245

14.4. Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ti liu tham kho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Thng tin nhm bin son . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

247 252 252

13

Danh sch hnh v


3.1 3.2 3.3 3.4 3.5 4.1 4.2 Knh truyn n cng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 V d v mt mng n gin . . . . . . . . . . . . . . . . . . . . . . . . . 58 Giao din ha NAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Bm cc i tng trong mt knh truyn n cng . . . . . . . . . . . . 67 Cc trng xut hin trong mt trace . . . . . . . . . . . . . . . . . . . . 67 Probability Distribution Fuction of BS queue delay rtPS - Nontokenbucket - Nonmobility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Evaluation of throughphut performance in downlink WiMAX with PF scheduler (Nonmonbility Tokenbucket) . . . . . . . . . . . . . . . . . . . 83 To kt ni gia n0 v n1 . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Gi d liu gia n0 v n1 . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Topo ca on m gm 4 nt . . . . . . . . . . . . . . . . . . . . . . . . 89 Mu sc cc lung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Gim st hng i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Cn bng trong gim st hng i . . . . . . . . . . . . . . . . . . . . . . 92 M hnh gm 7 nt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Minh ha lin kt b li . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Lu lng truyn theo nt 6, 5, 4 . . . . . . . . . . . . . . . . . . . . . . 95 Thng lng kt ni TCP . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Kch thc ca s TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 V d rdrop.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Kch thc ca s TCP vi 20% gi tin mt ngu nhin . . . . . . . . . . 106 Kch thc ca s TCP vi 20% gi tin mt ngu nhin: phng to . . 106 Ca s TCP khi t l mt gi l 0 . . . . . . . . . . . . . . . . . . . . . . 106 V d v mng vi mt s kt ni TCP . . . . . . . . . . . . . . . . . . . 108 Kch thc hng i trong v d shortTcp.tcl . . . . . . . . . . . . . . . . 118 14

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

Kch thc hng i trong v d shortTcp.tcl khi s kt ni b gii hn . 118 . . . . . . . . . 119

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

Danh sch bng


2.1 2.2 2.3 2.4 3.1 3.2 3.3 3.4 3.5 3.6 4.1 4.2 4.3 4.4 4.5 6.1 6.2 6.3 6.4 7.1 7.2 7.3 8.1 8.2 Chng trnh Tcl thc hin cc php ton . . . . . . . . . . . . . . . . . 49 Chng trnh Tcl tnh ton cc s nguyn t . . . . . . . . . . . . . . . . 50 Chng trnh Tcl tnh giai tha ca mt s . . . . . . . . . . . . . . . . . 51 Chng trnh Tcl n gin s dng i tng real v integer . . . . . . . 52 nh ngha cc nt, knh truyn v gn kch c hng i . . . . . . . . . 57 nh ngha mt ng dng FTP s dng tc nhn TCP . . . . . . . . . . 58 nh ngha mt ng dng CBR s dng tc nhn UDP . . . . . . . . . . 60 Chng trnh ex.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Ni dung ca mt file bm vt (trace file) . . . . . . . . . . . . . . . . . 69 Kim tra cc bin ngu nhin phn b Pareto vi cc seed khc nhau . . 72 awk script tnh gi tr trung bnh ca ct 4 ca mt file . . . . . . . . 74 awk script tnh gi tr lch chun ca ct 4 ca mt file . . . . . . 74 Mt on m awk s dng mng tnh trung bnh v lch chun . . 75 Mt on m tnh tng cc ct . . . . . . . . . . . . . . . . . . . . . . . 75 Mt on m tnh thng lng . . . . . . . . . . . . . . . . . . . . . . . 77 nh ngha mt ng dng FTP s dng tc nhn TCP . . . . . . . . . . 106 on m ex3.tcl i vi mt s kt ni TCP cnh tranh . . . . . . . . . 111 on m shortTcp.tcl i vi mt s kt ni TCP ngn . . . . . . . . . . 118 on m shortTcp.tcl i vi mt s kt ni TCP ngn . . . . . . . . . . 124 Kch bn tcl cho nh tuyn tnh v ng(ex2.tcl) . . . . . . . . . . . . . 129 V d cho multicast vi m hnh DM: pimdm.tcl . . . . . . . . . . . . . . 135 V d cho multicast vi m hnh im RV: bts.tcl . . . . . . . . . . . . . 138 on m tcl droptail.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 on m tcl droptail.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

17

8.3 9.1 9.2 9.3

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

TCP TDMA UDP UMTS VINT WIRR

Transmission Control Protocol Time Division Multiple Access User Datagram Protocol Universal Mobile Telecommunications System Virtual InterNetwork Testbed Weighted Interleaved Round Robin

20

Chng 1 Gii thiu v NS-2


Mc lc
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 . . . . . . . . . . . . . . . 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 . . . . . . . . 1.5. Lp TclClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 1.6. Lp Tcl Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7. Lp EmbeddedTcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.8. Lp InstVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 43 44 22 23 24 24 25 26 26 27 27 28 29 31 33 35 37

1.5.1. Lm th no rng buc cc bin thnh vin lp C++ tnh

21

Ngi dch: Nguyn Quc Huy Bin tp: H Tt Thnh. Bn gc: The ns Manual, Chapter 3 [1]

1.1. Khi nim tng quan

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

1.2. Tng quan v m ngun


Trong ti liu ny, chng ta s dng t interpreter ng ngha vi trnh thng dch OTcl. M giao tip vi trnh thng dch ny nm trong mt th mc ring, tclcl. Phn cn li ca m b m phng nm trong th mc ns-2. Chng ta s s dng k hiu tclcl/hfilei cp n mt phn hfilei ring bit trong Tcl. Tng t, chng ta dng k hiu, ns/hfilei gn cho phn hfilei trong th mc ns-2 . C mt s lng cc lp c nh ngha trong tclcl/. Chng ta ch tp trung vo lp th 6 c dng trong ns. Lp Tcl (phn 1.3) bao gm cc phng php m 23

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.

1.3.1. t c mt tham chiu vi v d v lp Tcl


Mt instance n l ca lp c khai bo trong file tclcl/Tcl.cc nh mt bin thnh vin tnh; ngi lp trnh phi nhn c mt tham chiu n instance ny c th truy cp ti cc phng php khc c m t trong phn ny. Cu lnh truy cp instance ny l. Tcl& tcl = Tcl::instance();

24

1.3.2. Dn chng v cc th tc ca OTcl


C 4 phng php khc nhau gi ra mt lnh OTcl thng qua trng tcl. Chng khc nhau mt cch c bn v cc i s gi. Mi hm chuyn mt chui vo trnh thng dch, m sau nh gi chui ny trong mt ng cnh chung (global context). Cc phng php ny s tr v cho hm gi nu trnh thng dch tr v bn tin TCL_OK. Hay ni cch khc, nu trnh thng dch tr v TCL_ERROR, cc phng thc ny s gi th tc tkerror{}. Ngi dng c th lm qu ti th tc ny c b qua mt s loi li no . Nhng phc tp ca vic lp trnh OTcl nm ngoi phm vi ca ti liu ny. Phn tip theo (phn 1.3.3) s m t cc phng thc truy cp kt qu c tr v bi b thng dch. tcl.eval(char* s) invokes Tcl_GlobalEval() to execute s through the interpreter. tcl.evalc(const char* s) preserves the argument string s. It copies the string s into its internal buffer; it then invokes the previous eval(char* s) on the internal buffer. tcl.eval() assumes that the command is already stored in the class internal bp_; it directly invokes tcl.eval(char*bp_). A handle to the buffer itself is available through the method tcl.buffer(void). tcl.evalf(const char* s, . . . ) is a Printf(3) like equivalent. It uses vsprintf(3) internally to create the input string. tcl.eval(char* s) vin dn Tcl_GlobalEval() thc thi s thng qua trnh thng dch. tcl.evalc(const char* s) lu gi chui i s s. N copy chui s vo b m bn trong; sau n dn nhp eval(char* s) trc ln b m bn trong. tcl.eval() cho rng lnh c lu tr sn sng trong bp_ ni ca lp; n dn nhp tcl.eval(char*bp_) mt cch trc tip. Mt khc b m ca n lun sn sng thng qua th tc tcl.buffer(void). tcl.evalf(const char* s, . . . ) tng ng vi Printf(3). N s dng vsprintf(3) to nn mt chui ni ti bn trong n. V d, di y l mt s cch s dng cc phng php ni trn: Tcl& tcl = Tcl::instance(); char wrk[128]; strcpy(wrk, "Simulator set NumberInterfaces_ 1"); tcl.eval(wrk); sprintf(tcl.buffer(), "Agent/SRM set requestFunction_ %s", "Fixed"); 25

tcl.eval(); tcl.evalc("puts stdout hello world"); tcl.evalf("%s request %d %d", name_, sender, msgid);

1.3.3. Truy nhp cc kt qu n/t trnh thng dch


Khi trnh thng dch vin dn mt phng thc t C++, n mong mun c c mt kt qu phn hi trong mt bin thnh vin ring bit, tcl_>result. C hai cch to nn bin ny: tcl.result(const char* s) Dn nhp chui kt qu s tr v li trnh thng dch. tcl.resultf(const char* fmt, . . . ) varargs(3) s thay i nh trn l nh dng kt qu s dng vsprintf(3), dn nhp chui kt qu tr v li trnh thng dch. if (strcmp(argv[1], "now") == 0) { tcl.resultf("%.17g", clock()); return TCL_OK; } tcl.result("Invalid operation specified"); return TCL_ERROR; Tng t, khi mt phng thc ca C++ vin dn mt lnh OTcl, trnh thng dch s tr v kt qu trong tcl_>result. tcl.result(void) phi c s dng tm li kt qu. Lu rng, kt qu l mt chui, phi c chuyn sang mt nh dng bn trong ph hp vi kiu ca kt qu. tcl.evalc("Simulator set NumberInterfaces_"); char* ni = tcl.result(); if (atoi(ni) != 1) tcl.evalc("Simulator set NumberInterfaces_ 1");

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.

1.3.5. Cc hm hash trong trnh thng dch


ns lu tr mt tham chiu vi mi TclObject trong nhnh c bin dch trong mt mt bng hash; iu ny cho php truy cp nhanh n cc i tng. Bng hash ny nm bn trong b thng dch. ns dng tn ca TclObject nh l cha kho truy nhp, tra cu, hoc xo TclObject trong bng hash. tcl.enter(TclObject* o) s chn mt con tr vo TclObject o bn trong bng hash. N c dng bi TclClass::create_shadow() chn mt i tng vo bn trong bng, khi i tng c to ra. tcl.lookup(char* s) s tm li c TclObject vi tn s. N c dng bi TclObject::lookup(). _ tcl.remove(TclObject* o) s xo cc quan h vi TclObject o t bng hash. N c dng bi TclClass::delete_shadow() xo mt entry ang tn ti t bng hash, khi i tng b xo. Cc hm ny c dng bn trong bi lp TclObject v lp TclClass.

1.3.6. Cc hot ng khc trn trnh thng dch


Nu cc phng php trn khng , th chng ta phi nm c trnh thng dch v vit ra cc hm ring cho mnh. tcl.interp(void) tr v cc hm bn trong trnh thng dch m c lu tr trong lp Tcl.

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

1.4.2. S rng buc bin


Trong hu ht cc trng hp, vic truy cp n cc bin thnh vin bin dch b gii hn ti m bin dch, v truy cp n cc bin thnh phn c thng dch cng b hn ch, phi truy nhp thng qua m thng dch; tuy nhin, c th thit lp cc rng buc hai chiu nh c hai bin thnh phn thng dch v bin thnh phn bin dch, truy cp cng d liu, v vic thay i gi tr ca c hai bin c th thay i gi tr ca bin c cp i tng ng sang cng mt gi tr. S rng buc c to ra bi hm to c bin dch khi i tng c to; c th truy cp mt cch t ng bi i tng c thng dch nh mt bin instanc. ns h tr nm kiu d liu khc nhau: cc gi tr thc, cc bin nh tr bng thng, cc bin nh tr thi gian, cc s nguyn, v cc s nh phn. C php m t cc gi tr c c t trong OTcl l khc nhau ng vi mi kiu. Cc bin gi tr thc v s nguyn c c t theo dng "bnh thng" . V d, $object set realvar 1.2e3 $object set intvar 12 Bng thng c c t nh mt gi tr thc, c in thm tin t l mt k hay K ch gi tr hng ngn, hoc m hay M ch gi tr hng triu. Mt k t B sau cng th hin gi tr Byte trn mt giy. Theo mc nh, bng thng c th hin dng bps. V d, tt cc cc dng lnh sau l tng ng: $object set bwvar 1.5m $object set bwvar 1.5mb $object set bwvar 1500k $object set bwvar 1500kb $object set bwvar .1875MB $object set bwvar 187.5kB $object set bwvar 1.5e6 $object set bwvar 1500kb $object set bwvar .1875MB $object set bwvar 187.5kB $object set bwvar 1.5e6 Thi gian c quy nh nh l mt gi tr thc,c th i km vi hu t m th hin n v mili giy, v n nu l nano giy, hoc l pico giy vi p. Gi tr mc nh l giy (s). V d, tt c cc gi tr sau l tng ng nhau: $object set timevar 1500m $object set timevar 1.5 $object set timevar 1.5e9n 31

$object set timevar 1500e9p Lu 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

Lu rng hm to ny c t im thm m t cc c im ca c ch rng buc bin

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.

1.4.4. Cc phng thc command: nh ngha v gi ra


i vi mi TclObject c to ra, ns thit lp th tc trng hp, cmd{}, nh l mt bn l thc thi cc phng thc thng qua i tng bn sao c bin dch. Th tc cmd{} gi ra phng thc command() ca i tng bng mt cch t ng, nhp cc i s cho cmd{} nh l mt vector i s vi phng thc command(). Ngi dng c th gi phng thc cmd{} bng mt trong 2 cch sau: gi ra mt cch r rng th tc, c t hot ng mong mun nh l i s u tin, hoc mt cch r rng , nu c mt th tc trng hp ca cng tn nh hot ng mong mun. Hu ht cc bn m phng s dng kiu sau ny, v th, ta s m t kiu dn chng kia trc. Cho rng tnh ton khong cch trong SRM c thc hin bi i tng bin dch; tuy nhin, n li thng c s dng bi i tng thng dch v thng c gi ra nh sau: $srmObject distance? <agentAddress> Nu khng c th tc no gi l distance, trnh thng dch s gi ra th tc unknown, c nh ngha trong TclObject lp c bn. Th tc unknown sau s gi ra $srmObject cmd distance? <agentAddress> thc hin hot ng thng qua th tc command() ca i tng bin dch. D nhin, ngi dng c th gi hot ng ny mt cch trc tip. Mt l do cho iu ny l c th lm qu ti hot ng bng cch s dng mt th tc trng tn. V d, Agent/SRM/Adaptive instproc distance? addr { $self instvar distanceCache_ if ![info exists distanceCache_($addr)] { set distanceCache_($addr) [$self cmd distance? $addr] } set distanceCache_($addr) } By gi ta s m t cch m phng thc command() s dng ASRMAgent:command(): nh v d sau: 35

int ASRMAgent:command(int argc, const char*const*argv) : Tcl& tcl = Tcl:instance();: if (argc == 3) { if (strcmp(argv[1], "distance?") == 0) { int sender = atoi(argv[2]); SRMinfo* sp = get_state(sender); tcl.tesultf("%f", sp->distance_); return TCL_OK; } } return (SRMAgent:command(argc, argv));: } Chng ta c th phn tch 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.

1.5.1. Lm th no rng buc cc bin thnh vin lp C++ tnh


Trong phn 1.4, ta thy cch phi by cc bin thnh vin ca mt i tng C++ sang khng gian OTcl. Tuy nhin, iu ny khng p dng cho cc bin thnh vin tnh ca mt lp C++. D nhin, c th to ra mt bin OTcl cho bin thnh vin tnh ca mi i tng C++; mt cch hin nhin iu ny lm mt hon ton ngha ca cc bin thnh vin tnh. Chng ta khng th gii quyt vn rng buc bng cch s dng gii php tng t nh vic rng buc trong TclObject da trn lp InstVar, bi v lp InstVar trong TclCL yu cu s hin hu ca mt TclObject. Tuy nhin, ta c th to mt phng thc trong lp TclClass tng ng v truy cp cc thnh vin tnh ca mt lp C++ thng qua cc phng thc TclObject tng ng ca n. Th tc y nh sau: 1. To TclClass ca chnh bn nh m t trn; 2. Khai bo cc phng thc bind() v method() trong lp do bn to ra; 3. To cc phng thc rng buc ca bn trong hm bind() ca bn vi hm add_method("your_method"), v sau b sung bin iu khin trong method() bng cch tng t nh bn s lm trong TclObject::command(). Lu , s lng bin hp quy cch vi TclClass::method() l khc so vi TclObject::command(). Ngi to c nhiu hn 2 i s trc. Nh v d sau, chng ta biu din mt phin bn n gin PacketHeaderClass trong ~ns/packet.cc. Gi s rng chng ta c lp Packet sau y c cha mt bin tnh hdrlen_ m ta mun truy cp t OTcl: class Packet { ...... 39

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

PacketHeader hdrlen 120 set i [PacketHeader hdrlen]

1.6. Lp Tcl Command


Lp ny (class TclCommand) ch cung cp c ch cho NS to xut ra cc lnh n gin cho trnh thng dch, m sau c th c thc thi trong mt bi cnh ton cc bi trnh thng dch. C hai hm c nh ngha trong file ~ns/misc.cc l: ns-random v ns-version. Hai hm ny c khi to bi hm init_misc(void), c nh ngha trong ~ns/misc.cc; init_misc v c gi ra bi Tcl_AppInit(void) trong sut qu trnh khi ng. class VersionCommand nh ngha lnh ns-version. N khng cn i s, v tr v phin bn NS hin hnh. % ns-version ; 2.0a12 # ly phin bn hin hnh

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

Chng 2 C bn v TCL v OTCL


Mc lc
2.1. Tng quan v NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Lp trnh Tcl v Otcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 47

Ngi dch: H Tt Thnh Bin tp: L Tin Anh. Bn gc: NS Simulator for beginners, Chapter 1 [2]

2.1. Tng quan v NS


B m phng NS da trn hai ngn ng: mt b m phng hng i tng, c vit bng C++, v mt b thng dch OTcl (phn m rng hng i tng ca Tcl), c dng thc hin cc on m kch bn (script) ca ngi dng. NS c mt th vin s cc i tng giao thc v mng. C 2 nhnh cc lp trong NS: nhnh gm m ngn ng C++ c bin dch v nhnh gm m lnh OtcL oc thng dch, gia chng c s tng ng 1-1. Nhnh gm m ngn ng C++ c bin dch cho php ta t hiu qu m phng vi thi gian thc hin nhanh hn. iu ny c bit hu ch cho vic nh ngha v m phng hot ng mt cch tht chi tit ca cc giao thc c th, cho php ta gim thi gian x l s kin v gi tin. Sau , on m Otcl c nhp bi ngi dng, ta c th nh ngha mt cu trc (topo) mng c th, cc giao thc v ng dng ring bit m ta mun m phng (tp tnh ca chng c nh ngha bn nhnh m ngn ng C++ c bin 46

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 .

2.2. Lp trnh Tcl v Otcl


Trong Tcl, cc bin khng c nh kiu, v vy, mt bin c th l kiu chui hoc kiu s nguyn ty thuc vo gi tr m bn gn cho n. V d, khi ta mun in kt qu ca php chia 1/60, nu ta vit: puts "[expr 1/60]", th kt qu s l 0! c c kt qu chnh xc, ta cn ch ra rng ta khng lm vic vi s nguyn, v cn nhp nh sau: put"[expr 1.0/60.0]" Du # bt u mt dng ch thch khng nm trong chng trnh, trnh thng dch tcl s b qua dng ny. to mt file, ta phi cho n mt ci tn, gi s l "filename", v gn mt con tr ti n, con tr ny s c dng trong chng trnh tcl lin kt vi file , gi s l "file1". Vic ny c thc hin bi cu lnh: set file1 [open filename w]. Lnh puts c dng in kt qu u ra. Ch : mi ln lnh puts c dng, mt dng mi c bt u. trnh m dng mi, ta phi thm hu t -nonewline sau lnh "puts. Nu mun in kt qu ra file (gi s l file ta nh ngha trn), g: puts $file1 "on cn nhp". Khong nhy trng c to ra bng cch thm . V d, nu mt bin, gi s l x, c gi tr l 2 v ta nhp lnh puts $file1 "x $x" sau n s in mt lnh vo file c tn l filename, vi hai thnh phn "x" v "2" c ngn cch bi khong nhy trng. Thc thi mt cu lnh unix: g "exec" v cu lnh. V d, ta mun ns hin th mt ng cong t d liu c ghi trong mt file c 2 ct, vi tn l "data
1

TCL web page[5]

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

ti khuyn co cc bn tm hiu thm v OTcl bng cch c thm cc ti liu khc.

# 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

Bng 2.3: Chng trnh Tcl tnh giai tha ca mt s

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

Chng 3 Cc thnh phn c bn trong b m phng NS


Mc lc
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 . . . . . . . . . . . . . . . . . . . . . 3.4. Lp lch s kin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Hin th: dng NAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Bm vt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1. Bm cc i tng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2. Cu trc ca cc file bm vt. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7. Bin ngu nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . to . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.2. To cc bin ngu nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 56 58 59 60 61 61 65 67 67 67 69 70 70

3.7.1. Ht nhn (hay gi tr ban u ca mt bin ngu nhin)v b

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.

3.1. Khi to v kt thc

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]

Mt vi v d n gin c a ra s cho php chng ta thc hin cc bc u tin vi b m phng ns

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

3.2. nh ngha mt mng cc lin kt v cc nt


Cch nh ngha mt nt. set n0 [$ns node] Chng ta to mt nt c tr ti bi bin n0. Khi mun tham chiu nt trong tp lnh th chng ta s vit $n0. Mt khi nh ngha vi nt, chng ta c th nh ngha cc lin kt m kt ni ti chng. V d nh ngha mt lin kt l: $ns duplex-link $n0 $n3 10Mb 10ms DropTail y cc nt $n0 v $n2 c kt ni bng mt lin kt 2 chiu c tr ng truyn 10ms v dung lng mi chiu 10Mbps. nh ngha mt lin kt c chiu thay cho mt lin kt 2 chiu, chng ta thay duplex-link bng simplex-link Trong NS, mt hng i u ra ca mt nt c thc thi nh mt phn ca mi lin kt m u vo ca n l nt kia. nh ngha lin kt cha cch iu khin trn b nh hng i. Trong trng hp ca chng ta, nu dung lng b m ca hng i u ra b vt qu th gi tin cui cng n s b loi b (ty chn DropTail). C nhiu ty chn na khc nh l k thut RED (Loi b sm ngu nhin), FQ (Sp hng i cn bng), DRR (Deficit Round Robin), sp hng i cn bng ngu nhin (SFQ) v CBQ (gm mt b lp lch u tin v b lp lch round-robin); chng ta s tr li k thut RED sau mt cch chi tit hn). Tt nhin, chng ra cng nh ngha dung lng b m hng i lin quan ti mi lin kt. Chng hn: #set Queue Size of link (n0-n2) to 20 $ns queue-limit $n0 $n2 20 Mt lin kt n cng c mu c trnh by nh trong hnh 3.1. Trn hng i c thc hin bng vic gi cc gi tin b hy ti mt tc nhn Null. i tng TTL s tnh tham s Time to Live 1 cho mi gi nhn c. Mt lin kt song cng c xy dng t hai lin kt n cng song song. Xt mt v d ca mt mng n gin c m t trong hnh 3.2. Mng ny c nh ngha thng qua on m c a ra trong bng 3.1 Ch rng chng ta nh ngha dung lng b m tng ng vi mt lin kt duy nht (gia n2 v n3) Cc hng i tng ng vi tt c lin kt khc u c
cc gi c mt vi th kt hp c cp nht trong mng v ch ra chng s trong mng trong thi gian bao lu trc khi ti c ch. Khi thi gian ny qu hn cc gi tin s b hy.
1

56

Hnh 3.1: Knh truyn n cng

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

node] node] node] node] node] node]

$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

Simulator instproc queue-limit {n1 n2 limit}{


2

trong is-allinone-2.XXX/ns-2.XXX/tcl/lib, y XXX l ch s phin bn, v d 1b9a.

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

Hnh 3.2: V d v mt mng n gin

#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

3.3. Tc nhn v ng dng


Va ri chng ta nh ngha cu trc mng (cc nt v knh truyn ), by gi ta s to dng lu lng qua chng. Cui cng chng ta cn nh ngha vic nh 58

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.

3.3.1. FTP trn nn TCP


TCP l mt giao thc iu khin nghn tin cy ng s c gii thch chi tit trong chng 4 (Cun "ns for beginer"). N s dng cc bo nhn c to t pha ch bit gi tin nhn c y hay cha. Cc gi b mt c hiu l cc du hiu tc nghn, nh vy nguyn nhn TCP yu cu knh truyn 2 hng l cc bo nhn quay tr v ngun. C mt vi bin th ca giao thc TCP, nh l Tahoe, Reno, Newreno, Vegas. Kiu tc nhn (agent-c th hiu l mt trm) xut hin trong dng u tin: Set tcp [new Agent/TCP] Cu lnh ny cng a ra mt con tr gi "tcp" cho tc nhn TCP, mt i tng trong NS. Cu lnh $ns attach-agent $n0 $tcp nh ngha nt ngun kt ni TCP. Cu lnh Set sink [new Agent/TCPSink] nh ngha hot ng ca nt TCP ch v gn ti n mt con tr gi l sink. Chng ta lu rng trong TCP, nt ch c mt vai tr tch cc trong giao thc to ra bo nhn bo m tt c gi tin n c ch. Cu lnh $ns attach-agent $n4 $sink nh ngha nt ch. Lnh $ns connect $tcp $sink to kt ni TCP gia cc nt ngun v nt ch. TCP c nhiu tham s vi cc gi tr mc nh c c nh ban u c th b thay i nu xt trong trng hp c th. V d, kch thc gi tin TCP l 1000 bytes. Gi tr ny c th thay i thnh gi tr 552 byte bng lnh $tcp set packetSize_ 552. Khi chng ta c vi lung d liu, c th ta mun phn bit chng ta c th nhn ra chng vi cc mu khc nhau trong phn hin th. iu ny c thc hin bng cu lnh $tcp set fid_ 1 gn cho kt ni TCP mt s nhn dng lung bng 1; sau ta s gn s nhn dng lung dng cho kt ni UDP l 2. Khi kt ni TCP c nh ngha th ng dng FTP c th nh ngha qua 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.

3.3.2. CBR qua UDP


Tip theo chng ta s nh ngha kt ni UDP v ng dng CBR qua n, xem bng 3.3 . Mt ngun UDP (Agent/UDP) v ch (Agent/Null) c nh ngha theo 1 cch tng t nh trng hp ca TCP. V ng dng CBR s dng UDP, bng 3.3 cng ch ra cch nh ngha tc truyn dn v kch thc gi tin. Thay v nh ngha tc trong cu lnh $cbr set rate_ 0.01Mb, ta c th nh ngha khong thi gian gia cc gi truyn i bng lnh $cbr set interval_ 0.005 Cc tham s khc ca CBR l random_ , l mt c s ch ra m phng c a ra tp m ngu nhin trong thi gian truyn lp lch hay khng. Mc nh n l off, v c th c t thnh on bng lnh $cbr set random_ 1 Kch thc gi c th c t mt gi tr no bng lnh $cbr set packetSize_ <packet size>

60

3.3.3. UDP vi cc ngun lu lng khc


Chng ta c th m phng cc kiu ng dng lu lng s dng giao thc UDP khc:ngun lu lng dng v khng dng phn b theo hm m, ngun dng v khng dng phn b pareto, v mt ngun iu khin da trn bm vt (trace-driven). Ngun c phn b hm m v ngun c phn b pareto c khai bo ln lt l Set source [new Application/Traffic/Exponential] Set source [new Application/Traffic/Pareto] Cc ngun ny yu cu cc tham s: packetSize_ (theo byte); burst_time_ nh ngha thi gian bt trung bnh; idle_time nh ngha thi gian tt trung bnh v rate_ xc nh tc truyn dn trong sut chu k bt. Trong ngun pareto bt/tt chng ta cng nh ngha hnh dng bng tham s shape_. Mt v d ca mt Pareto bt/tt c a ra: Set source [new Application/Traffic/Pareto] $source set packetSize_ 500 $source set burst_time_ 200ms $source set idle_time_ 400ms $source set rate_ 100k $source set shape_ 1.5 (Cc bin ngu nhin c bn trong phn 2.7) ng dng iu khin da trn bm vt c nh ngha nh sau. u tin chng ta khai bo file trace: Set tracefile [new Tracefile] $tracefile filename <file> Sau chng ta nh ngha ng dng iu khin da trn bm vt v gn n vo file set stc [new Application/Traffic/Trace] $src attach-tracefile $tracefile File s dng nh phn v cha thi gian gia cc gi theo ms v kch thc gi theo byte.

3.4. Lp lch s kin


NS l mt m phng da trn s kin ri rc. Tp lnh Tcl nh ngha khi no s kin xy ra. Cu lnh khi to set ns [new Simulator] to mt chng trnh lp lch s kin v cc s kin c lp lch bng cch s dng dng sau:

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

Bng 3.4: Chng trnh ex.tcl

64

3.5. Hin th: dng NAM


Khi chng ta chy v d 3.1 , cng c hin th nam s hin th mt mng 6 nt. V tr ca cc nt c th c chn ngu nhin. th tc ti lp v tr ban u ca cc nt nh trong hnh 3.2 , chng ta thm vo tp lnh tcl on sau: #a ra 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 left $ns simplex-link-op $n3 $n2 orient right $ns duplex-link-op $n3 $n4 orient right-up $ns duplex-link-op $n3 $n5 orient right-down Ch : nu mt v tr ngu nhin ca cc nt c chn v n khng tha mn, ta c th nhn vo nt re-layout v mt v tr khc s c chn. Ta cng c th sa v tr bng cch nhp chut vo nt Edit/View v ko r mi nt ti v tr yu cu (vi s tr gip ca con chut). Cn lu rng trnh hin th nam hin th cho chng ta vi hnh nh cc gi CBR (dng tin t nt 1 n nt 5) mu v cc gi TCP (t nt 0 n nt 4) mu xanh. Cc ACK ca TCP (cc bo nhn) i theo cc hng ngc v cng c mu xanh tuy nhin chm hn bi v mt ACK c kch thc 40 byte trong khi cc gi TCP c kch thc 552 byte. nhn c cc mu, chng ta cn nh ngha trong phn bt u ca tp lnh ex1.tcl $ns color 1 Blue $ns color 2 Red Ch rng nu c mt file nam th khng cn phi chy ns xem n, m phi g trc tip lnh nam <file name> Snapshots t cc trnh hin tr nam c th c in (vo trong mt my in hoc thnh mt file) bng cch vo ty chn File menu trn cng. Mt vi iu khc c th thc hin trong NAM T mu nt, v d nh nu mun n0 xut hin vi mu chng ta vit $n0 color red Hnh dng cc nt: mc nh chng l vng, tuy nhin c th hin th khc i. V d ta c th g $n1 shape box (hoc thay v box ta c th dng hexagon hay circle) T mu lin kt: nh v d $ns duplex-link-op $n0 $n2 color green 65

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

Hnh 3.3: Giao din ha NAM

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

3.6.2. Cu trc ca cc file bm vt


Khi bm vt trong mt file ascii u ra, trace c t chc thnh 12 trng nh sau (trong hnh 3.5). ngha ca cc trng l:

Hnh 3.5: Cc trng xut hin trong mt trace

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

Bng 3.5: Ni dung ca mt file bm vt (trace file)

3.7. Bin ngu nhin


Cc bin ngu nhin (RVs) vi phn b khc nhau c th c to trong ns. Do vai tr quan trng ca cc bin ngu nhin trong m hnh ha lu lng v m phng mng nn chng ta cn nh li vn tt cc nh ngha v tm quan trng ca cc bin ngu nhin chnh trong ph lc 11. Chi tit hn, c th tra cu thm, ti http://www.xycoon.com.

69

3.7.1. Ht nhn (hay gi tr ban u ca mt bin ngu nhin)v b to


Ngoi s phn b cc bin ngu nhin, c mt s vn khc l chng ta cn quan tm ti khi no m phng mt bin ngu nhin: C phi chng ta mun nhn oc cng mt gi tr bing ngu nhin khi chy li m phng (c th thay i mt vi tham s khc ca m phng)? iu ny cho php chng ta so snh trc tip, cho mt tp s kin ngu nhin n l, cc kt qu m phng ph thuc vo mt vi tham s vt l (nh l cc tr knh truyn hay di hng i) nh th no. Thng khi chng ta cn cc bin ngu nhin c lp vi nhau. To cc bin ngu nhin s dng mt ht ging (l mt s no m chng ta vit trong tp lnh tcl). Gi tr ht ging l 0 gy ra vic to mt bin ngu nhin mi mi ln ta chy m phng, v vy, nu ta mun c cng cc bin ngu nhin oc to cho cc ln m phng khc nhau, ta s phi lu cc bin ngu nhin to li. Tri li, nu chng ta s dng cc ht ging khc th mi khi chng ta chy m phng, cng mt chui bin ngu nhin c to trong m phng s c to ra Trong ns, nu chng ta s dng cc b to khc nhau vi cng ht ging v phn b, chng s to cc ra gi tr bin ngu nhin ging nhau (tr khi seed bng 0). Chng ta s thy iu ny trong v d di

3.7.2. To cc bin ngu nhin


u tin chng ta to mt b to mi, v gn n mt seed l 2 vi lnh Set MyRng [new RNG] $MyRng2 seed 2 Sau to mt bin ngu nhin thc s, chng ta phi nh ngha kiu phn b v cc tham s ca n. Chng ta a ra mt vi v d di y: ta s to cc bin ngu nhin vi phn b Pareto, hng s, ng nht, hm m v siu m. 1. Phn b pareto: Mt bin ngu nhin phn b pareto ngha l r1 c xy dng bng cch cho bit k vng ca n v tham s hnh dng (shape) ca n , gi tr mc nh tng ng l 1.0 v 1.5. Set r1 [new RandomVariable/Pareto] $r1 use-rng $MyRng 70

$r1 set avg_ 10.0 $r1 set shape_ 1.2 2. 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

Chng 4 Lm vic vi file trace


Mc lc
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . 4.8. Mt s file hnh plot v bng gnuplot . . . . . . . . . . . . . . . 74 75 76 78 79 80 80 80 82 82

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.

4.1. X l file d liu vi cng c awk


Cng c awk cho php chng ta thc hin mt s cc chc nng x l n gin trn cc file d liu nh l tnh trung bnh cc gi tr a ra trn mt ct, tnh tng hoc tch tng gi tr gia mt vi ct, v tt c nhng cng vic cn n thay i cu trc d liu (data-reformating). . . Trong hai v d sau y chng ta s hc cch tnh gi tr trung bnh ca mt ct trong mt file v sau tnh lch chun. BEGIN { FS \t} {nl++} {s=s+$4} END {print average: s/nl} Bng 4.1: awk script tnh gi tr trung bnh ca ct 4 ca mt file (Ch : k hiu "\t" c s dng nu cc ct c ngn cch vi nhau bi du tab (tabulated). Nu khng dng u tab m ch dng k t trng th ta thay th bng " ".)
BEGIN {FS=\t}{ln++}{d=$4-t}{s2=s2+d*d} END {print "standev:" sqrt(s2/ln)}

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

4.2. S dng grep


Lnh grep trong unix cho php chng ta lc mt file. Chng ta c th to mt file mi ch cha mt s dng cha mt chui k t nht nh ly t file gc. V d, file trace ca ns c th cha tt c cc loi gi tin (packets) i qua tt c cc ng truyn (links) v chng ta c th ch quan tm n d liu lin quan n cc gi tcp gi t node 0 n node 2. Nu cc dng lin quan n cc s kin cha chui "0 2 tcp" th tt c nhng g chng ta phi lm l g: grep 0 2 tcp tr1.tr > tr2.tr cu lnh trn tr1.tr l file trace gc v tr2.tr l file mi xut ra. Nu chng 75

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

4.3. X l cc file d liu vi perl


PERL l t vit tt cho "Practical Extraction and Report Language". (Ngn ng trch tch v bo co thc hnh. Perl[?] cho php d dng lc v x l cc file d liu dng ASCII trong unix. Ngn ng ny c sng to ra bi Larry Wall vi tng chnh l n gin ha cc nhim v qun tr h thng. Perl pht trin rt nhiu v ngy nay l mt ngn ng a dng v l mt trong nhng cng c c s dng nhiu nht cho qun l d liu Web v Internet. Perl l mt ngn ng thng dch c rt nhiu tc dng, nhng nhng li ch quan trng nht khi s dng Perl l tm kim, trch tch v bo co. Mt s u im ca vic s dng Perl l: Trin khai d dng cc chng trnh nh c s dng nh cc b lc, trch tch thng tin t cc file vn bn (text files). N c s dng trong rt nhiu cc h iu hnh m khng cn phi thay i m chng trnh. Duy tr v debug cc on m Perl n gin hn cc chng trnh c vit bi cc ngn ng khc. Perl rt ph bin, do c rt nhiu nhng script min ph (c phn phi bi gnu) trn mng Internet. Chng ta s lm quen trong phn ny mt vi on m Perl hu dng. V d u tin c a ra trong bng 4.5 thc hin vic t ng tnh ton thng lng ca cc kt ni TCP. Chng trnh ly trung bnh ca thng lng trn nhng khong xc nh bi mt tham s gi l granularity . u vo ca chng trnh nhn 3 gi tr: tn ca trace file (v d: out.tr), node mng m ti chng ta mun kim tra thng lng ca kt ni TCP, v gi tr granularity.

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

Bng 4.5: Mt on m tnh thng lng

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

mun t cho i tng mt ci tn hn l s dng tn ca tp th chng ta phi m t bng cu lnh nh sau:


plot fn1 t expectation w lines 1, fn2 t variance w lines 2 y, nhng tiu nh expectation v variance s xut hin trong bng ch thch.

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

Mu ca ch v li: dng vi c -v. Mt v d cho cu lnh v bng xgraph:


xgraph f1 f2 geometry 800x400 t Loss rates x time y Lost packets

4.6. Trch tch thng tin trong mt kch bn tcl


Chng ta c th tch hp cc cu lnh unix nh l grep hay awk vo trong cc kch bn tcl c th tin hnh x l d liu trong khi ghi vo file. V d, mt cch khc gii hn cc file trace (hay x l chng trc tip trong khi chng c ghi) l s dng cc cu lnh linux lin quan n x l file ngay bn trong cc lnh tcl. V d, chng ta c th thay th lnh $set file 1 [open out.tr w] bng cu lnh: set file1 [open | grep \tcp\ > out.tr w] Cu lnh trn s lc cc dng vit ra file out.tr v ch li nhng dng c cha t tcp

4.7. Minh ha mt s file awk v gnuplot


4.7.1. Tnh thng lng ca mng theo hai kiu file trace
BEGIN { recv = 0 k = 1 } { # Trace line format: normal if ($2 != "-t") { event = $1 time = $2 if (event == "+" || event == "-") node_id = $3 if (event == "r" || event == "d") node_id = $4 flow_id = $8 pkt_id = $12 pkt_size = $6 flow_t = $5 level = "AGT"

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

4.7.2. Mu v th thng lng va tnh xong bng file awk


Reset set term postscript eps enhanced color #set terminal png #set output "test.png" set output "throughput.eps" set size 5/5.,4/3. set key inside right top vertical Right noreverse enhanced box linetype -1 linewidth 1.000 set grid set xlabel "Time (s)" set ylabel "Throughput (kbps)" set xrange [40:40.5] set yrange [0:5500] set ytics 500 set xtics 0.05 rotate by -45 set style line 1 lt 1 lc rgb "red" lw 3 set style line 2 lt 2 lc rgb "green" lw 3 set style line 3 lt 3 lc rgb "blue" lw 3 set style line 4 lt 4 lc rgb "orange" lw 3 set title "Evaluation of throughput performance in downlink WiMAX with PF scheduler \n (Nonmobility, tokenbucket scenario 2)" set label 1 "UGS: 5625 bytes/3 frames \n rtPS: 5625 bytes/3 frames \n nrtPS: 7500 bytes/3 frames \n BE: unlimited" at 40.025,5250 plot "bw_ugs.tr" using 1:2 title "UGS" with lp ls 1, \ "bw_rtps.tr" using 1:2 title "rtPS" with lp ls 2, \ "bw_nrtps.tr" using 1:2 title "nrtPS" with lp ls 3,\ "bw_be.tr" using 1:2 title "BE" with lp ls 4

4.8. Mt s file hnh plot v bng gnuplot

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

5.1. Kch bn Tcl u tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

5.3.1. To mt Topo ln hn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Ngi dch: Trnh Vit Thi

Bin tp: H Tt Thnh, Trn Cng L Bn gc: Tutorial for the Network Simulator "ns", part 4,5,6 [3]

5.1. Kch bn Tcl u tin


Ghi ch: Trong phn ny, ti s hng dn bn s vit mt tp lnh Tcl cho ns m phng cu hnh mng n gin. Bn s bit c lm th no to ra nhng nt (nodes)

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

hai, truyn tham s l i tng c to ra trn ns ghi tt c d liu m phng c

Bc tip theo thm th tc finish, kt thc cc tp tin bm vt v bt u nam,

th tc ny ng file bm vt v khi ng network animator.

Bn khng cn phi hiu tt c on m trn, s d hiu hn khi bn nhn thy n hot

Dng tip theo bo chng trnh m phng thc hin th tc finish sau 5.0 giy m

Nhn dng lnh bn c th hiu ngha ca n. NS cung cp cho bn mt cch n

om
85

set ns [new Simulator]

$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

5.1.2. Hai node, mt lin kt


Trong phn ny chng ta s nh ngha mt cu hnh mng (topo) n gin vi hai node c kt ni vi nhau bi mt lin kt. Bn di c hai dng lnh nh ngha hai node. (Ch : bn phi chn on m ny trc dng lnh $ns run hay tt hn l trc dng lnh $ns at 5.0 "finish). set n0 [$ns node] set n1 [$ns node] Lnh $ns node l to ra 1 node mi, nh vy 2 cu lnh trn to ra hai node mi l n0 v n1. Dng tip theo kt ni hai node $ns duplex-link $n0 $n1 1Mb 10ms DropTail Dng ny thit lp lin kt song cng vi bng thng 1Megabit, tr 10ms v hng i DropTail gia node n0 v n1. By gi bn c th lu tp tin v bt u on m vi ns example1.tcl. Nam s t ng bt u v bn c th thy kt qu tng t nh hnh bn di.

Hnh 5.1: To kt ni gia n0 v n1

Bn c th ti v d y ti y hoc ti y nu n khng hot ng v bn ngh mc li.

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

5.2. Topo trong NS


Trong phn ny chng ta s nh ngha mt m hnh vi bn node trong mt node hot ng nh l mt router chuyn d liu m hai node khc ang gi n node th t. Ti s gii thch cch phn bit cc lung d liu t hai node ny vi nhau v ti s trnh by mt hng i c th c gim st nh th no c th thy c n b trn nh th no, v s c bao nhiu gi tin b loi

5.2.1. To topo trong NS


Nh mi khi, u tin l xc nh topo. Bn nn to mt ra tp tin example2.tcl s dng m ny t phn 5.1 nh l mt tp tin mu, Nh ti ni trn, on m ny s tng t vi mu trn. Bn s lun cn phi to ra mt i tng m phng, lun bt phi u bng cng mt cu lnh v nu mun chy nam t ng bn s lun phi m tp tin bm vt, khi to n, v nh ngha th tc ng n v khi ng nam. By gi chn dng lnh vo trong m to ra bn node. set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] Bn di l v d m Tcl to ra ba lin kt song cng gia cc nt.

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

Hnh 5.3: Topo ca on m gm 4 nt

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.

5.2.3. nh nhn cho lung d liu


Thm vo hai dng lnh bn di xc nh tc nhn CBR ca bn. $udp0 set class_ 1 $udp1 set class_ 2 Tham s fid_ l vit tt ca flow id. By gi thm vi cu lnh vo tp lnh Tcl, tt hn l lc bt u, ngay sau khi to i tng m phng, do y l mt phn ca s thit lp m phng $ns color 1 Blue $ns color 2 Red on m ny cho php thit lp cc mu sc khc nhau ca mi lung.

Hnh 5.4: Mu sc cc lung

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 .

5.2.4. Gim st hng i


Bn ch cn thm dng lnh bn di vo on m ca bn gim st hng i cho kt ni t n2 ti n3

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

Hnh 5.5: Gim st hng i

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.

Hnh 5.6: Cn bng trong gim st hng i

Bn c th ti v d y y hoc y

5.3. Mng c tnh cht ng


Trong phn ny ti s trnh by cho bn mt v d v mng ng vic nh tuyn chnh sa li cc knh truyn b li. Bng cch ny ti s ch cho bn c th gi s lng ln cc nt trong mt mng Tcl thay v cp cho mi nt mt ci tn ring.

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.

Hnh 5.7: M hnh gm 7 nt

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

Hnh 5.8: Minh ha lin kt b li

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.

Hnh 5.9: Lu lng truyn theo nt 6, 5, 4

Bn c th ti chng y ny ti y hoc ti y tham kho

95

Chng 6 M phng v m t TCP/IP


Mc lc
6.1. M t TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.1.2. Cc bn tin xc nhn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3. Ca s chng tc nghn ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.4. Mt cc gi tin v ngng Wth ng: . . . . . . . . . . . . . . . . . . . . 6.1.5. Khi to kt ni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6. Cc cng c gim st tin tin: . . . . . . . . . . . . . . . . . . . . 6.7. Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 99 99 100 100 101 107 111 119 124 97 6.1.1. Cc mc ch ca TCP v iu khin lung theo c ch ca s

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.

6.1.2. Cc bn tin xc nhn


Mc tiu ca cc bn tin xc nhn gm iu chnh tc truyn ca TCP, m bo rng cc gi tin ch c truyn i khi m cc gi tin khc c truyn ra khi mng. To ng kt ni ng tin cy bng cch truyn ti nt ngun cc thng tin cn thit truyn li cc gi tin khng n c ch.

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.

6.1.3. Ca s chng tc nghn ng


T u nhng nm 80, trong sut vi nm, TCP lun c 1 ca s chng tc nghn c nh. Cc mng ti thi im ko n nh, nhiu gi tin b mt, Cc chu k nghn mng ln v rc ri, trong sut thi gian nghn th thng lng gim ng k, nhiu gi tin phi truyn li v thi gian tr ln. gii quyt vn ny, Van Jacobson [25] xut s dng ca s chng tc nghn ng. Kch thc ca ca s thay i ty theo trng thi ca mng. V c bn, tng l: Khi ca s nh, kch thc ca n c th tng nhanh chng , nhng khi t n mt gi tr nht nh no , kch thc ca n ch c th tng chm. Khi hin tng nghn mng c pht hin, kch c ca ca s gim mnh. C ch ng ny c php gii quyt tc nghn nhanh chng v s dng hiu qu bng thng ca mng. Chnh xc hn, nh ngha ngng Wth , hay tn gi khc l "ngng bt u chm" n s th hin nh gi ca chng ta v dung lng mng. Ca s bt u gi tr 1. 1 gi tin n l c truyn. Khi gi tin ACK ca gi tin ny quay tr li, ta c th truyn 2 gi tin. i vi mi gi tin ACK ca 2 gi tin ny, ca s tng ln 1 gi tr, mc ch l khi cc gi tin ACK ca 2 gi tin ny quay tr li, ta c th truyn 4 gi tin. Ta nhn thy l ca s tng theo s m. Giai on ny c tn l "bt u chm" (slow start). S d n c tn nh th l bi l thay v ca s to dn ln nhanh chng, n ch ln ln t t nu ta bt u vi mt gi tr W = Wth . Nu W = Wth , ta chuyn qua giai on 2 c tn gi l giai on trnh tc nghn . Khi , mi gi tin ACK quay li s lm ca s W tng ln 1/W . Sau khi truyn W gi tin, W tng ln 1. Nu ta truyn W gi tin cn t thi gian, th truyn W + 1 cn t + RT T v W + 2 cn t + 2RT T , ...v.v. Ta thy l ln ca ca s thay i tuyn tnh.

6.1.4. Mt cc gi tin v ngng Wth ng:


Khng ch W ng m Wth cng nh vy. N c c nh trong TCP khi mt gi mt th gi tr ca W gim i mt na. C mt s phng php ci thin TCP. phng php th nht c tn l Tahoe, tc l

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.

6.2. Qu trnh bm vt v phn tch v d Ex1.tcl


Hy chy file chng trnh vit bng ngn ng perl throughput.pl (bng ?? ) trn file bm vt (trace file) to ra on m ex1.tcl (xem bng 4.4 ). Ta phi g: perl throughput. Pl out.tr 4 1 > thp Ta c mt file u ra vi thng lng TCP trung bnh t c (byte/giy) l mt hm ca thi gian , trong trng hp ny, mi giy mt ln, mt gi tr mi ca thng qua c to ra. File u ra c th c th hin thng qua vic s dng lnh gnuplot bng cch g: Gnuplot Set size 0,4.0,4 Set key 60,15000 Plot thp w lines 1. Kt qu th hin hnh 6.1 hiu tt hn v hnh vi ca h thng, ta th hin kch thc ca s bng biu (hnh 6.2 ). y l file Winfile to ra khi chy on m ex1.tcl. Ta nhn thy l t thi im 20 tr i, ch quay vng trng thi ko i ca TCP c n nh: TCP lun giai on trnh tc nghn, v kch thc ca s ca n tng u (theo qui lut hm tuyn

100

Hnh 6.1: Thng lng kt ni TCP

Hnh 6.2: Kch thc ca s TCP

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.

6.3. TCP trn lin kt nhiu v vic gim st hng i


cc v d trc, gi tin b mt l do tc nghn. Thc t, gi tin b mt c th l do nhiu ng kt ni. iu ny c bit ng trong trng hp sng v tuyn, v d nh ng truyn in thoi hoc ng truyn v tinh. Thc t l ng kt ni c th b ngt hon ton trong giai on no . Ta s xem xt vn ny sau y ti mc 6.1. Hoc cng c th knh truyn b nhiu t hin tng xuyn nhiu cng khin cho gi tin b li v loi b. mc ny, ta s nu cch a ra m hnh li n gin nht: Ta tha nhn rng cc gi tin b loi b c lp trn g truyn theo mt xc sut c nh no . M hnh li lin kt c nu ra nt kt ni n3 v n2 trong v d hnh 6.3 c to ra nh sau: #Set error model on link n2 to n3 Set loss_module [new ErrorModel] $loss_module set rate _0.2 $loss_module ranvar [new RandomVariable/Uniform] $loss_module drop-target [new Agent/Null]

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

Hnh 6.3: V d rdrop.tcl


Queue Mornitoring Mt i tng quan trng ca ns l hng i c gim st. i tng ny cho php thu thp cc thng tin hu ch v di hng i, v cc gi tin n, im n v cc gi tin b mt. tin hnh vic gim st hng i gia nt 2 v nt 3 ta g: set qmon [$ns monitor-queue $n2 $n3 [open qm.out w] 0.1];! [$ns link $n2 $n3] queue-sample-timeout; # [$ns link $n2 $n3] start-tracing! Mc tiu ca qu trnh gim st hng i gm 4 tham s: 2 tham s u xc nh knh truyn cha v tr ca hng i, tham s th 3 l cho ra file bm vt v tham s cui cng cho bit xem mc thng xuyn m ta mong mun NS gim st hng i. Trong tnh hung trn, u vo l hng i u vo gia nt 2 v nt 3 s c gim st 0.1s ln v kt qu u ra s l file qm.out. File u ra gm11 ct sau y: Thi gian Nt u vo v u ra xc nh hng i

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

$ns at 625.0 finish $ns run

Bng 6.1: nh ngha mt ng dng FTP s dng tc nhn TCP


Trong hnh 6.4 Ta s dng gnuplot bm vt file do qu trnh m phng to nn. File ny c tn gi l WindowVsTimeNReno. Hnh nh phng ra ca n c m t hnh 6.5 .

Hnh 6.4: Kch thc ca s TCP vi 20% gi tin mt ngu nhin

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

Hnh 6.6: Ca s TCP khi t l mt gi l 0

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]

6.4. To nhiu kt ni vi cc c tnh ngu nhin


to nhiu kt ni, thay v xc nh tng nt, knh truyn, kt ni hoc cc ng dng n l, s hu ch hn nu xc nh chng nh cc vect ( hay mng) trong tcl (trong cc cu lnh lp) Hn th, vic la chn cc thng s kt ni (chng hn nh thi gian bt u hoc kt thc hot ng, tr lin kt, vv) s tr nn th v nu ta chn theo cch ngu nhin. Ta s xem xt c 2 vn trong mc ny v sau s a ra 1 v d minh ha. Lu rng Ta cng va xem xt cc kha cnh khc nhau ca yu t ngu nhin mc 6.3 V d: Xem xt mng hnh 6.7. on m c a ra bng 6.2. Ta to 5 kt ni FTP bt u mt cch ngu nhin: thi gian bt u l phn b ng dng trong khong 0-7s. Ton b qu trnh m phng din ra trong 10s. Ta to lin kt vi tr c chn la ngu nhin, phn b u trong khong t 1-5s. Cng vi file bm vt theo tiu chun c to ra, Ta cng to thm 1 file c tn l win. File ny cho bit s thay i kch c ca s ca tt c kt ni vi chi tit l 0.03s. Thc hin iu ny bng cch dng th tc plotWindow. Ch l file win c nh a ch bng cch s dng con tr windowVsTimes Th tc ny gi mt cch qui cho

107

tng kt ni mt trong 5 kt ni to ra.

Hnh 6.7: V d v mng vi mt s kt ni TCP

#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

Bng 6.2: on m ex3.tcl i vi mt s kt ni TCP cnh tranh

6.5. Cc kt ni TCP ngn


a s lu lng trn Internet l truyn file. Dung lng file truyn trung bnh l khong 10Kbyte, ngha l mt file trung bnh c t 10 gi TCP tr xung th kch c ca 1 gi TCp s l 1Kbyte [10,36]. iu ny cho thy hu ht vic truyn file kt thc trong giai on slow start. Nhng file ny thng c gi l "con chut" ("mice"). Tuy nhin, iu ng ngc nhin l hu ht lu lng Internet c truyn bng cc file rt di, c gi l "con voi" ("elephants"). Mt phn b in hnh m t kch thc file c tn l Pareto [10], vi tham s shape (shape parameter) nm gia 1 v 2 [10] ( trung bnh l 10KB). Trung bnh kch thc file khong 2.5Kbyte . Nh vy, phn b Pareto vi gi tr k vng l 10Kbyte v kch thc bnh qun l 2.5 Kbyte nh ngha mt phn b Pareto vi tham s shape

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)

| | ----

---- N -------- D(1) . . . D(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]

$ns duolex-link $N $ns queue-limit $N #Number of souces Set NodesNb 6

#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

Bng 6.3: on m shortTcp.tcl i vi mt s kt ni TCP ngn


S lng cc phin lm vic c to ra (530 phin /ngun) m bo rng cc gi tin n t tt c cc nt tip tc cho n tn khi kt thc m phng. Khi chy on m ta thu c kch thc hng i tnh theo Kbyte v theo cc gi tin nh trong hnh 6.8 Ta cng thc hin li m phng vi s phin lm vic ti mi nt gim xung cn 130 v kch thc ca hng i theo Kbyte v theo gi tin c m t hnh 6.9.

Hnh 6.8: Kch thc hng i trong v d shortTcp.tcl

Hnh 6.9: Kch thc hng i trong v d shortTcp.tcl khi s kt ni b gii hn

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

6.6. Cc cng c gim st tin tin:


mc 6.5, ta kim tra s kt thc mi phin lm vic TCP theo nh k bng cch so snh s th t ca bn tin ack hin thi vi s th t ln nht ca cc kt ni. Qa trnh tm kim ny kh tn km. Ta xem xt 2 qu trnh gim st khc:

Hnh 6.10: S lng kt ni

Hnh 6.11: Bng thng c s dng trong giai on nghn c chai

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

Bng 6.4: on m shortTcp.tcl i vi mt s kt ni TCP ngn

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

Chng 7 nh tuyn v mng di dng


Mc lc
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 . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4. nh tuyn da trn im RP . . . . . . . . . . . . . . . . . . . . . 7.4.1. Ch DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.2. nh tuyn vi im RV tp trung . . . . . . . . . . . . . . . . . . . . . 7.5. Kho st m phng pimdm.tcl. . . . . . . . . . . . . . . . . . . . . 7.6. Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 130 130 131 132 132 135 136 138 138

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.

Hnh 7.1: V d v nh tuyn

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

Bng 7.1: Kch bn tcl cho nh tuyn tnh v ng(ex2.tcl)


Ngc vi nh tuyn tnh, Internet c th tm c ng i khc khi n thy mt tuyn b ngt kt ni. Ty chn ny c s dng trong ns bng cch thm lnh (xem thm bng 7.1 ) $ns rtproto DV Trong v d ex2.tcl a ra trong bng 7.1, lin kt kt ni 1-4 b down trong sut khong thi gian [1, 4-5]. Trong th NAM chng ta c th thy lin kt ny tr thnh mu trong khong thi gian ny. Mt kt ni TCP c lp gia nt 0 v 5. Khi chy kch bn, vi nh tuyn tnh (ghi ch lnh $ns rtproto DV) chng ta thy k c nu kt ni c tip tc li ti thi im 4.5, kt ni TCP ch kt ni li ti thi im xp x 8. L do l timeout (thi gian qu hn) xy ra trong khi khng c tn hiu ACK tr li vi node 0, v khong thi gian b nhn i vi mi mt timeout mi. Trong th kho st NAM chng ta c th thy trng hp nh tuyn ng, cc gi tin bo hiu c s dng quyt nh ng i khng ch ti thi im bt u m cn ti thi im kt ni c thay i.

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.

7.3. Cc giao thc nh tuyn multicast (PIM)


Trong multicast, c th c mt vi nhm thnh vin multicast, cc nhm c th chng ph ln nhau. Trong IP multicast, bn nhn phi yu cu l thnh vin trong nhm multicast

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

7.3.2. nh tuyn da trn im RP


Centralized mcast (mcast tp trung) (CtrMcast) tng t nh PIM-SM (Ch Sparse ca PIM [11]). l im gp (Rendezvous Point RP). Mt cy chia s c xy dng cho mt nhm multicast c gc ti im RP ny. Trung tm tnh ton tp trung c s dng tnh ton vic chuyn (forward) cc cy i v ci t trng thi chuyn multicast, S,G (trng thi S tng ng vi ngun ca gi tin v G tng ng vi a ch ca nhm multicast) ti cc nt thch hp khi bn nhn vi tham gia vo nhm. Cc gi d liu t bn gi n nhm l unicast n RP. Vic multicast t RP n nhm c thc hin theo cy ng i ngn nht. Ch ST l phin bn n gin ha ca giao thc nh tuyn ca ch Sparse trn. Giao thc ny c phin bn hai hng trong ns c gi l BST, m c s dng trong phin bn chun CBT [7] v trong giao thc BGMP i vi multicast bn trong min [8] Trong cc giao thc da trn im RP, tt c cc lung lu lng multicast u i qua im RV v do gy ra hin tng tht c chai. Nt ny nh hng ti hiu nng ton mng. Vn khc vi tip cn ny l lu lng chuyn qua cc ng khng ti u. u im ca tip cn ny l: Tnh n gin ca thng tin trng thi: ch mt entry cho mt ngun mt nhm. Bo hiu khng lin quan ti ton b mng. Ch rng, trong PIM-SM, c th chuyn mch ti u cc cy da trn ngun (S,G) thay cho vic nh tuyn qua im RV. iu ny xy ra nu tc ca d liu ngun vt qu ngng. Do , im RV c th dng hin tng tht c chai nu tc lu lng ln. Ch ST khng m phng cc c tnh ny.

7.4. nh tuyn da trn im RP


Multicast yu cu ci tin cho cc nt v cc lin kt ca mng. Do , ns c iu kin r rng t lp m phng trc khi to topology. Do , chng ta bt u t cu lnh c trng: Set ns [new Simulator] $ns multicast

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

Hnh 7.2: V d v nh tuyn multicast

Set ns

[new Simulator]

$ns multicast Set $ns $ns $ns $ns f [open out.tr $f [open out.nam w] w]

trace-all namtrace-all color color 1 30

red purple packets

#the nam colors for the prune packets #the nam colors for the graft

133

$ns color 31 Set group Set For } nod {set

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

Agent/UDP] Agent/UDP] $n(1) $n(2) $udp1 $udp2

$ns attach-agent $ns attach-agent Set src1 [new

Application/Traffic/CBR] $udp1 $group 0

$src1 attach-agent #udp1 set $udp1 #creat Set $ns $ns set dst_addr_

dst_port_ false agents

$src1 set random_ receiver [new rcvr at at

Agent/LossMonitor] join-group join-group $rcvr $rcvr $group $group

#joining and leaving the group; 0.6 1.3 $n(3) $n(4)

134

$ns $ns $ns $ns $ns $ns $ns Proc $ns Exec

at at at at at at at

1.6 1.9 2.3 3.5 0.4 2.0 4.0

$n(5) $n(4) $n(6) $n(3) $src1 $src2 finish {

join-group leave-group join-group leave-group start start

$rcvr $rcvr $rcvr $rcvr

$group $group $group $group

finish {} flush-trace nam out.nam

Global ns &

Exit 0 } $ns run

Bng 7.2: V d cho multicast vi m hnh DM: pimdm.tcl


Tc nhn iu khin mt mt (Loss Monitor Agent): y chng ta s dng tc nhn iu khin mt mt l mt gi tin "sink agent" duy tr s thng k v lu lng nhn c, nh thng tin v lng thng tin nhn c cng nh b mt. C th, chng ta c th truy cp cc bin trng thi sau: nlost_ (s cc gi tin mt mt), npkts_ (s cc gi tin nhn c), bytes_ (s cc byte nhn c), lastPktTime_ (thi gian ti gi tin cui cng nhn c) v expected_ (s trnh t mong mun ca gi tin tip theo). Ta c th s dng thay cho tc nhn iu khin mt mt, Null agent, nh chng ta lm trc , v d: set rcvr [new Agent/Null] thay cho set rcvr [new Agent/LossMonitor].

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.

7.4.2. nh tuyn vi im RV tp trung


i vi ch tp trung cn: #configure Set multicast protocol;

mproto CtrMcast [$ns mrtproto $n(2) $mproto]

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

Set ns [new $ns $ns $ns $ns

Simulator w] $f

-multicast

on]

Set f [open out.tr trace-all color color 1 30 31

namtrace-all [open out.nam red purple green

w]

# the nam colors for the prune packets #the nam colors for the graft packets $ns color

#allocate a multicast address; Set group [Node allocaddr]

#nod is the number of nodes Set nod 6

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

[new Application/Traffic/CBR] dst_addr_ dst_port_

random_false $udp2 $group 1

Set src2 $udp2 $udp2 $src2 $ns $ns $ns $ns $ns $ns at at at at at at

[new Application/Traffic/CBR] dst_addr_ dst_port_

$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

#joining and leaving the group;

137

Proc finish {} { Global ns $ns Exec Exit 0 } $ns run flush-trace nam out.nam &

Bng 7.3: V d cho multicast vi m hnh im RV: bts.tcl

7.5. Kho st m phng pimdm.tcl


Dense mode: pimdm v drmrp. Nu chng ta chy m phng v kho st bm vt, chng ta s thy rng trong vic thm cc gi tin CBR, c hai kiu gi tin khc nhau: gi tin prune v gi tin graft. Vai tr ca gi tin prune c gi bi nt N l bo hiu cho nt rng gi gi tin trc n N ngng vic gi cc gi tin n N. Gi tin graft l khi to tn hiu t mt nt mun tham gia vo nhm (sau khi n b ngt kt ni). Trong hin th NAM trong m phng ca chng ta, cc gi tin graft l n xanh v prune l mu . Chng ta c th thy rng ti thi im 0.4, nt 0 bt y gi cc gi tin CBR trn lt qua mng. Nhng khng c bn nhn ti nhm multicast, do kt qu l, cc gi tin prune tr v ngun v vic truyn kt thc (thi im 0.579). Ti thi im 0.6, mt gi tin graft c gi t nt 2 (nt mun tham gia vo nhm) n nt 1, v sau t nt 1 n nt 0. Nt 0 sau bt u vic truyn. Ti thi im 0.9978, li c vic th kim tra xem c kt ni c vi cc nt bn nhn trong nhm ngoi nt 2 v mng c trn lt li, cc gi tin prune tr v ngng vic truyn n cc nt 3, 4, 5. Ch tp trung: chng ta thy trong cc gi tin bm vt c ng gi c gi t ngun n im RV ca kch thc 230 byte. Header sau c xa bi im RV m sau chuyn gi tin (210 byte) n cc thnh vin trong nhm.

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

Chng 8 Loi b ngu nhin sm


Mc lc

8.1. M t RED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2. Thit t cc tham s RED trong ns . . . . . . . . . . . . . .

te lec om
140

140 142 143 143 148 153 154 161

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

Ngi dch: H Tt Thnh

Bin tp: Nguyn Nam Hong

Bn gc: NS Simulator for beginners, Chapter 6 [2]

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

8.2. Thit t cc tham s RED trong ns


Cc tham s ca RED trong ns c a ra trong cc i tng sau: 1. bytes_: Ly gi tr "true" nu ta lm vic ch "byte mode" hoc "fale" trong ch gi tin (ch mc inh.). ch "byte mode", kch thc ca mt gi tin ti tc ng ln kh nng nh du n. 2. queue-in-bytes_: Kch thc hng i trung bnh s c o bng bytes nn n c t l true. Trong trng hp , cc i tng threst_ v maxthres_ cng c cn bng bi tham s kch thc gi tin trung bnh c c lng mean_pktsize_. N c false theo mc nh. 3. thres_: L ngng kch thc hng i cc tiu minth 4. maxthres_: L ngng kch thc hng i cc i maxth . 5. mean_pktsize_ L c lng ca kch thc gi tin trung bnh tnh theo byte. Gi tr mc nh l 500. 6. q_weight_: Tham s nng th trong vic tnh ton chiu di hng i c tnh trung bnh. 7. wait_: L tham s cho php duy tr khe thi gian gia cc gi tin b loi b khi khi c t thnh "true" (l gi tr mc nh). 8. linterm_: L nghch o camaxp . Gi tr mc nh l 10. 9. setbit_: C gi tr "false trong trng hp RED c dng loi b gi tin, v c gi tr "true" nu RED nh du gi tin vi mt bt tc nghn. (phin bn ECN ca TCP tng tc vi cc bt tc nghn ny).

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.

8.3.1. B m loi Drop-Tail (B ng ui)


C cu qun l b m u tin l c ch loi b ng ui n gin. Ta xt 3 knh truyn u vo vi trn 1ms v bng thng l 10Mbps cho mi knh. Knh truyn c

143

Hnh 8.1: Thit lp mng cho vic nghin cu RED

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

Bng 8.1: on m tcl droptail.tcl


Trong sut 50 giy m phng, ngun nhn c 7211 gi tin TCP. Tip theo, ta v th kch thc hng i (Hnh 8.2 ) v kch thc ca s (Hnh 8.3)

Hnh 8.2: S tng kch thc hng i

Hnh 8.3: Kch thc ca s ca tt c cc phin kt ni TCP

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.

8.3.2. B m RED vi cu hnh tham s t ng


Ta chy mt m phng th hai vi cc tham s nh vy. Ch rng ta chn cho tr ngu nhin mt gi tr seed l 2 trong tt c cc ln m phng, do khc vi gi tr seed 0, n s m bo cho cc tham s ngu nhin c dng trong tt c cc ln m phng.

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

Bng 8.2: on m tcl droptail.tcl

8.3.3. B m RED vi cc tham s khc


Gi s ta mun nh ngha cc tham s ca chng ta cho RED hn l s dng cc tham s mc nh. V d, gi s ta mun c trong v d trc y max_th=60, min_th=40 v q_weight_=0.02. Sau ta s thm vo cc cu lnh:

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.

Hnh 8.7: S thay i v kch thc hng i

Hnh 8.8: Kch thc hng i ca tt c cc phin kt ni cho b m RED

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

8.4. Gim st cc lung


Chng ti gii thiu trong phn ny b gim st hng i, l mt cch hiu qu gim st cc i lng trn mi hng i nh lng lu lng c truyn i v b mt. Chng ti s sa on m ns ca chng trnh shortTcp2.tcl (bng ??) gp mt b m RED vi chc nng gim st. Mt lung gim st mt knh n cng, v vy, trc ht ta nh ngha knh truyn ta mun gim st: set flink [$ns simplex-link $N $D 2Mb 1ms RED] v sau b gim st hng i c nh ngha nh sau i vi knh truyn ny: set monfile [open mon.tr w] set fmon [$ns makeflowmon Fid]

154

$ns attach-fmon $flink $fmon #fmon attack $monfile Khi chng ta kch 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

Bng 8.3: Kch tcl shortRed.tcl


File gim st lung bao gm thng tin c th hn v loi gi tin b loi b (drop type). N cho php phn bit gia cc kiu loi b sm do vic t chi cc gi tin sm, v loi b thc s do trn b m. File ny c dng nh sau: 1. Ct 1: Thi gian m ti dump c thc hin. 2. Ct 2 v 5: a ra s nhn dng lung. 3. Ct 3: Trng (mt trng vo 0) 4. Ct 4: Kiu lung. 5. Ct 6 v 7: Ngun v ch ca lung. 6. Ct 8 v 9: Tng s ln n ca lung tnh bng gi tin v byte tng ng. 7. Ct 10 v 11: Tng s ln loi b sm ca lung tnh bng gi tin v byte tng ng. 8. Ct 12 v 13: tng s ln n ca tt c cc lung tnh bng gi tin v byte tng ng. 9. Ct 14 v 15: Tng s ln loi b sm ca tt c cc lung tnh bng gi tin v byte tng ng. 10. Ct 16 v 17: Tng s ln loi b ca tt c cc lung tnh bng gi tin v byte tng ng. 11. Ct 18 v 19: Tng s ln loi b ca mt lung c th tnh bng gi tin v byte tng ng.

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.9: S tin trin ca kch thc hng i v gi tr trung bnh ca n

Hnh 8.10: S tin ha ca kch thc hng i v gi tr trung bnh ca n c phng to)

Hnh 8.11: S cc phin kt ni tch cc theo thi gian

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

Chng 9 Cc dch v phn bit


Mc lc
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3. nh ngha cc chnh sch . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.1. nh ngha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.2. Cu hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 164 164 164 165 166 166 167

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]

Trong mng Internet truyn thng, tt c cc kt ni c x l nh nhau trong mng.

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.

9.1. M t chuyn tip c m bo ca Diffserv


Diffserv c thc hin trong ns theo Assured forwarding (chuyn tip c m bo [20] c chun ha. Mt gi tin ph thuc vo mt lung c th nhn 3 mc u tin cng vi lung , i khi c gi l drop precedence, c dng cung cp xc sut mt gi thp hn cho cc gi tin ng b trong kt ni TCP, do ko ging nh cc gi tin khc, vic cc gi tin ng b b mt c th gy ra thi gian time-out (gin on lin lc) rt di. Ngoi vic phn bit mi lung, th tt c cc lung c phn thanh cc lp (ti a l 4 lp), v cc lp khc nhau s nhn c mc x l khc nhau. Hn th na, c th phn bit gia cc lung dch v. C 4 lp dch v c nh ngha, cc gi tin thuc lp no th c t vo hng i ca lp y. phn bit gia cc gi tin trong cng mt lp, ngi ta thit k 3 hng i o tng hng i mt trong s 4 hng i trn. Vi mi 12 tp hp (ca 4 lp v 3 mc u tin ni trong mi lung tng ng vi mt im m m gi tin c cho trc khi vo mng. Trn thc t khng cn trin khai tt c cc hng i v tt c cc nhm u tin. Kin trc Diffserv gm 3 thnh phn: 1. Thnh phn qun l ti nguyn v chnh sch: to ra cc chnh sch v phn phi chng cho cc router h tr diffserv. Mt chnh sch s xc nh gi tin c gn mc

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.

9.2. Cc router MRED


9.2.1. M t chung
Thc t c 3 b m RED o (gi l MRED-Multi RED) trong mi hng i vt l cho php tng cng x l v to nn tnh ph thuc trong hot ng. Mt cch thc hin l thng qua phin bn RIO C (Rio Coupled) ca MRED, trong xc sut loi b cc gi c mc u tin thp (gi l gi tin ngoi lung) da trn di trung bnh ca tt c cc hng i o, cn xc sut hy gi c mc u tin cao (gi trong lung) da trn di trung bnh ca hng i o ca chnh hng i o ca gi tin . Ngc li, trong RIO-D (RIO De-coupled) xc sut loi b mi gi tin da trn kch thc hng i o ca chnh n. Phin bn khc l WRED (Weight Red) trong tt c xc sut u da trn mt chiu di n. Cng c th dng hng i dropTail

9.2.2. Cu hnh MRED trong ns


xc nh s hng i vt l, ta dng lnh $dsredq set numQueues_ $m trong m c th ly gi tr t 1 n 4. Cu hnh hng i 0 l RIO-C bng lnh $dsredq setMREDMode RIO-C 0

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.

9.2.3. Truy vn TCL


Ba lnh sau in ra cc kt qu tng ng (1) trong bng PHB, (2) s hng i vt l v hng i o v (3) kch thc trung bnh ca trng s RED ca cc hng i vt l c th (trong trng hp ny l hng i 0): $dsredq printPHBTable $dsredq printStats $dsredq getAverage 0

165

9.3. nh ngha cc chnh sch


9.3.1. nh ngha
Tt c cc lung c cng a ch ngun v ch u l thuc vo mt chnh sch chung. Mt chnh sch nh ngha loi cc chnh sch, tcs mong mun, v cc ch tiu k thut chnh sch khc. N ch r t nht 2 im m. Vic la chn im m no ph thuc vo s so snh gia mc ch ca lung tin v tc gi gi tin hin thi, v cng c th da trn cc tham s ph thuc vo chnh sch (nh burstiness chng hn). Chnh sch quy nh loi b o c dng o cc tham s lu lng u vo lin quan. Mt gi tin n thit b bin s lm cho b o cp nht trng thi thay i tng ng vi lung gi tin, v gi tin sau c nh du theo chnh sch. Gi tin c mt im m khi u ng vi mc dch v yu cu; vic nh du gi tin c th lm gim mc dch v so vi mc dch v ban u ca gi tin. Mt bng cc chnh sch c dng trong ns lu tr loi chnh sch ca mi lung. Khng phi tt c cc mc trong bng u c dng tht s. Bng bao gm: 1. a ch nt ngun 2. a ch nt ch 3. Loi chnh sch 4. Loi thit b o 5. im m khi u 6. CIR (tc thng tin cho php) 7. CBS (kch thc cm cho php) 8. C bucket (kch thc hin thi ca dung lng cho php) 9. EBS (kch thc cm vt mc) 10. E bucket (kch thc hin thi ca dung lng vt qu) 11. PIR (tc thng tin ti a) 12. PBS (kch thc cm ti a) 13. P bucket (kch thc hin thi ca dung lng ti a) 14. Thi gian n ca gi tin cui cng 15. Tc gi tin trung bnh

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

9.4. M phng Diffserv: bo v cc gi tin d b tn cng


Trong kt ni TCP, vic mt mt s on gy nh hng nhiu hn ln hiu nng ca phin kt ni so vi cc on khc. Nhng on ny l (i) cc on thit lp kt ni, (ii) on c gi i khi kt ni c mt ca s nh, v (iii) on c gi i sau 1 khong thi gian timeout hay ln truyn li gp. Ta gi l nhng on hay gi d b tn cng. Trong mt ti liu gn y, cc tc gi c ch ra vic nh du nhng on ny vi mc u tin cao hn v thc hin u tin dng kin trc Diffserv s lm hiu sut kt ni TCP c ci thin ng k.Tuy nhin, vic nh du ny yu cu cc thnh phn lp mng bit v thng tin lp vn chuyn, v d nh trng thi kt ni TCP. Mc ch ca v d m phng m chng ta gii thiu l ch ra rng c th nh du u tin cc on nhy cm m khng cn bt k thng tin no ca lp vn chuyn, v vy s n gin ha vic thc hin nh du u tin cc gi TCP.

9.4.1. Kch bn m phngnh ngha


M u v phn loi dch v: Hai mc u tin c nh ngha. Mc cao hn gi tin vo hay green packets v mc thp hn gi tin ra hay red packets. Chng ta tp chung vo chnh sch n gin nht c sn trong ns: ca s thi gian trt (TSW2CM). Mt tc cho php CIR c nh ngha cho mi router bin. Min l tc kt ni di mc CIR th tt c gi tin c nh du l mc u tin cao. Khi tc vt mc CIR th cc gi tin c nh du theo xc sut bnh qun, m tc ca gi tin c nh du vi mc u tin cao ng vi CIR. Tc truyn c tnh theo tc trung bnh trn ca s TSW; trong phn m phng th khong thi gian ca s l 20ms. Vi kinh nghim ca mnh chng ti thay i mc CIR ti nt bin ngun v nghin cu nh hng ca n n hiu sut. Chng ta s xem xt mt topo mng n gin vi 1 nt tht c chai, c m t trn hnh 9.1

168

Hnh 9.1: Topo mng

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.

Set ns [new Simulator]

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

#dummy command Set t [$RVSize value]

#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

#(i c chuyn qua bin

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]}

Bng 9.1: on m Diffs.tcl

176

CIR Cc gi tin ng b b mt Cc gi tin u b mt Tng

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

Bng 9.2: Bo v cc gi tin d b tn thng nh mt hm ca CIR

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.

CIR sess. duaration

10kbps 0.252616

30kbps 0.231077

100kbps 0.167948

200kbps 0.149478

300kbps 0.119509

1Mbps 0.203202

10Mbps 0.225075

Bng 9.3: Thi gian trung bnh ca mt phin theo hm CIR

177

Hnh 9.2: S tin ha ca tng s phin

9.6. Tho lun v kt lun


C 1 vi hn ch khi thc hin vic nh du. S ci thin ng k m chng ta nhn c khng phi s c c trong mi hot cnh, v chng ti a ra mt vi ch dn m chng ti nh chnh trong nhng m phng tip theo, m t nhng hn ch ca n. 1. Nhng gi tin d b tn cng lm gim hiu sut ng k v chng gy ra thi gian gin on (time-out) di. c bit l trong trng hp mt gi tin ng b s dn n thi gian time-out 3s hay 6s. Trong mng tc cao thi gian truyn file rt ngn (thng th tng thi gian truyn ngn hn nhiu thi gian time-out), v th ta mong mun t hiu sut cao hn bng cch loi tr thi gian time-out ny. Trong mng tc thp, th vic loi tr thi gian time-out l khng cn thit. 2. Trong m phng ca chng ta, mt file c kch thc trung bnh 10kbytes, l kch thc c tnh trung bnh trn mng Internet. iu ny c ngha l 10% gi tin l gi SYN v c th hn th, 10% khc l gi u trong mt ln truyn. Khong 20% gi b mt tng ng vi loi gi tin d b tn cng ny,v th loi tr mt gi s dn n ci thin ng k hiu sut. Nu chng ta p dng vi cc file ln hn, th phn gi tin d b tn cng s nh hn, gi tr thm vo nh hn.

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

Chng 10 M phng mng LAN


Mc lc

10.1. C s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

te lec om
180

180 182

10.2. M phng mng LAN vi ns: . . . . . . . . . . . . . . . . . . . . .

Ngi dch: L Th Nga

Bin tp: H Tt Thnh

Bn gc: NS Simulator for beginners, Chapter 8 [2]

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

Mc ch ca cc mng cc b l chia s ti nguyn ng gi hoc khng b c quyn

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.

10.2. M phng mng LAN vi ns:


B m phng Ns m phng 3 mc lin quan n mt mng cc b: cc giao thc lp lin kt (nh l ARQ ( giao thc yu cu lp li t ng), giao thc MAC (v d nh Ethernet hoc token ring) v knh vt l. Cch c bn nh ngha mt mng LAN nh mt nhm cc node c lin kt bi lnh: Set lan [$ns newLan <arguments>] C 7 tham s: 1. Nhm cc node, v d: $n3 $n4 $n5,! 2. tr 3. rng bng tn 4. Kiu lp lin kt (v d "LL") 5. Kiu hng i nhiu , v d "QueueDrop Tail" 6. Kiu MAC (v d: "Mac/Csma/Cd hoc Mac/802_3)

182

7. Kiu knh (v d: "Channel)

Hnh 10.1: V d mng LAN

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

Chng 11 M phng mng cho MPLS (MNS)


Mc lc

11.1. Gii thiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Gii thiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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.4.1. M phng lu lng QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.2. M phng s u tin trc ti nguyn . . . . . . . . . . . . . . . . .

11.5. Kt lun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.1. Gii thiu


MNS l vit tt ca MPLS Network Simulator Ti liu ny s trnh by vn thit k v thc thi b phn mm m phng MNS, h tr vic thit lp knh chuyn mch nhn rng buc CR-LSP i vi lu lng QoS, cng nh cc chc nng c bn v MPLS, nh giao thc phn b nhn LDP v chuyn mch nhn. c th h tr cc chc nng , MNS bao gm rt nhiu thnh phn; l CR-LDP, MPLS Classifier, Service Classifier, Admission Control, Resource Manager, v Packet Scheduler. m bo tnh chnh xc v hiu qu ca MNS, hai v d s c m phng v thc hin. Mt l m phng i vi cc lung lu lng vi cc QoS khc nhau, v hai l m phng s ginh trc (preemtion) ti nguyn.

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.

11.2. Gii thiu

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

Mc ch chnh ca phn mm ny l pht trin c th m phng cc ng dng khc

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 m rng (Extensibility) Tnh d s dng (Usability) Tnh "nh gn (Portability)

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)

11.2.2. M hnh khi nim ca MNS h tr QoS


Cc hm chc nng c m t nh sau: LDP/CR-LDP: to ra hoc x l cc thng bo LDP.CR-LDP MPLS Classifier: thc hin cc php ton x l nhn nh: push, pop v swap i vi cc gi MPLS Service Classifier: phn loi phc v p dng vi cc gi n bng cch s dng nhn v thng tin giao tip hoc trng CoS ca MPLS shim header, v kt hp mi gi vi s t trc thch hp. Admission Control xem xt Traffic Parameter ca CR-LDP, v xc nh node MPLS c ti nguyn kh dng hay khng p ng yu cu QoS.

186

Hnh 11.1: M hnh khi nim ca MNS

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.

11.3. Thit k v thi hnh vi MNS


11.3.1. Chuyn mch nhn
B m phng MPLS thc hin bng cch m rng NS l b m phng da trn IP. Trong NS, mt node bao gm cc agent (tc nhn) v classifier. Mt agent l i tng gi/nhn (sender/receiver) ca giao thc, v classifier l i tng chu trch nhim i vi s phn loi gi. i vi mc ch to ra node MPLS mi, MPLS Classifier, v LDP agent c chn vo trong node IP. Kin trc node MPLS vi chuyn mch nhn c ch ra trong hnh 2. Khi node MPLS nhn 1 gi, n s thc hin nh sau: MPLS Classifier xc nh gi nhn c c gn nhn hay khng. Nu n c gn nhn, MPLS Classifier thc hin chuyn mch nhn i vi gi. Nu n khng c gn nhn nhng thuc mt LSP, n s c iu khin nh mt gi c gn nhn. Ngc li, MPLS Classifier gi n n Addr Classifier Addr Classifier: thc hin chuyn tip L3 i vi gi tin

187

Hnh 11.2: Kin trc nt MPLS vi chuyn mch nhn

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.

11.3.2. Chuyn mch nhn


h tr lu lng MPLS thi gian thc, Service Classifier l thnh phn c thit k v thi hnh. CBQ, l cng c c thc thi trong NS, c la chn i vi thnh phn Packet Scheduler. Trong thc t, thnh phn Packet Scheduler s c thc hin ti cc node. Tuy nhin, NS thc hin chc nng ny ti cc Link. Trong MNS, mt bng c xc nh duy tr cc thng tin cho vic thit lp ER-LSP; l Explicit Route information Base (ERB). ERB cha thng tin cho vic thit lp ER-LSP , nh LSPID v ServiceID Hnh 11.3 ch ra qu trnh x l lu lng MPLS QoS ca node v link MPLS. Khi mt gi d liu MPLS i n ti node MPLS, n c a n MPLS Classifier. Node MPLS s tm (indexes) trong bng LIB i vi cc nhn ra (outgoing-label) v giao din ra (outgoing-interface) thc hin cc php ton nhn v bng ERB i vi ServiceID a ra hng i dch v. Ty theo lp m gi thuc vo, n s c xp vo vng m

188

Hnh 11.3: X l lu lng QoS MPLS ca nt v link MPLS

tng ng trong CBQ. V ri n s c p ng bi CBQ v c truyn ra giao din cng ra.

11.3.3. S ginh trc ti nguyn


Cc thnh phn Admission Control v Resource Manager c thit k v thi hnh i vi vic qun l ti nguyn. Thnh phn Resource Manager c chc nng to/xa b cc hng i CBQ, v qun l cc thng tin ti nguyn (tc l bng Resource).

Hnh 11.4: Qu trnh ginh trc ti nguyn ca nt v link MPLS

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 .

11.3.4. Mc lp - Class Level


C 3 mc lp v 4 dch v (ST, RT, HBT, SBT), c ch ra trong hnh 11.5. Ngi s dng c th cu hnh cc tham s ca CBQ, tc l tc lu lng, kch thc vng m, quyn u tin. Cc hng i ca ST, HBT v SBT c to ra theo cch c nh khi mi trng m phng c cu hnh. RT th c to ra/xa b theo cch ng khi khi c mt s kin m phng, v d bn tin CR-LDP n ti node MPLS.

Hnh 11.5: Mc lp trong MPLS

11.3.5. Mi trng thc thi


B m phng MNS c thc thi trn h thng Sun Unix bi chng trnh ns-2.1b6, NS version 2.1

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.

Hnh 11.6: Mng MPLS

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

Hnh 11.7: M lp lch s kin

Hnh 11.8: S bin i lu lng bng thng fig:h118

11.4.2. M phng s u tin trc ti nguyn


Trong phn ny, chng ta m phng s u tin trc ti nguyn c xc nh trong chun CR-LDP. i vi m phng ny, tc lu lng ca RT1 v RT2 c ghi li. RT1 v RT2 pht ra lu lng CBR ln lt ti 600 Kbit/s v 700 Kbit/s. Do , khi RT1 v RT2 pht ra lu lng ti thi im ging nhau th tng tc ca tt c cc khi lng lm vic s ln hn bng thng kt ni ca mng MPLS. Hnh 11.9 ch ra m lp lch cc s kin i vi m phng. Vic thit lp u tin (setup-priority) v gi u tin (holding-priority) i vi CR-LDP ca RT1 ln lt l 7 v 4. Vic thit lp u tin (setup-priority) v gi u tin (holding-priority) i vi CR-LDP ca RT2 ln lt l 3 v 2. V vy, RT2 c th ginh c ti nguyn trc RT1

192

Hnh 11.9: M lp lch s kin

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.

Hnh 11.10: Kt qu ca m lp lch s kin

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

12.1. Cc thut ton nh tuyn


C mt vi thut ton nh tuyn dng trong cc mng c dy truyn thng v mt vi tng ny sinh t cc thut ton c s dng trong cc mng ad-hoc. Chng ta s ch trng n cc vn sau: 1. nh tuyn theo trng thi kt ni. Mi nt mng u lu tr ton b cu trc kt ni ca mng cng vi tham s ca mi ng kt ni. Mi nt mng gi qung b theo nh k gi tr tham s ca cc ng kt ni bt u t chng ti tt c cc nt mng khc. Mi nt cng s t cp nht cu trc kt ni mi ca mng v p dng mt thut ton tm ng ngn nht chn ra im ti tip theo cho ng vi tng ch n. 2. nh tuyn theo Vector khong cch. Mi nt mng ch quan tm n gi tr tham s ca cc kt ni i ra t n. Thay v qung b thng tin ti tt c cc nt, n qung b theo nh k ti cc nt ln cn ca n mt gi tr c lng khong cch ngn nht ti mi nt trong mng. Cc nt ln cn s dng thng tin ny tnh ton li bng nh tuyn ca mnh bng thut ton tm ng ngn nht. Phng php ny c hiu qu tnh ton cao hn, d dng trin khai hn v cng i hi dung lng lu tr t hn so vi nh tuyn trng thi kt ni (Link Sate). 3. nh tuyn ngun. Cc quyt nh nh tuyn c thc hin ti ngun v cc gi hon ton c chuyn theo cc tuyn . 4. nh tuyn trn. Mt ngun s gi thng tin ti tt c cc nt ln cn ca n, cc nt ny s chuyn tip cc thng tin ti cc nt ln cn ca chng v vic chuyn tin c tip tc nh vy. V bng cch nh s th t cho cc gi tin, mt nt mng c th sp xp gi tin vo ng v tr ca n. Tip theo chng ta s ni v cc giao thc nh tuyn c bit c trong NS.

12.1.1. Vector khong cch theo th t ch DSDV


DSDV l mt giao thc nh truyn vector khong cch. Mi mt nt u c mt bng nh tuyn ch ra hng i ng vi mi a ch ch, tham s ca bng bao gm a ch ca im n tip theo v s cc im trung gian cn i qua trc khi n ch. Mi nt theo nh k s gi qung b bn tin cp nht bng nh tuyn ca n. Mt chui s theo th t c s dng nh du cho tng ng nh tuyn. Cc con s ny th hin ng nh tuyn no l mi hn: ng nh tuyn c s th t cao hn s tt hn, cn nu c hai ng nh tuyn c cng s th t th ng no c s lng im trung gian

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.

12.1.2. Vector khong cch theo yu cu c bit AODV


AODV l mt kiu nh tuyn vector khong cch. N khng i hi cc node phi duy tr cc ng nh tuyn ti cc ch bi v khng phi lc no chng cng c s dng. Ch cn cc im u nt ca mt kt ni c mt ng nh tuyn ph hp i c ti nhau l c. Giao thc ny s dng cc bn tin khc nhau tm ra v duy tr cc kt ni, chng gm c: bn tin yu cu nh tuyn (RREQs), bn tin phn hi yu cu nh tuyn (RREPs) v bn tin bo li nh tuyn (RERRs). Cc loi bn tin ny c nhn thng qua giao thc UDP v normal IP header processing applies. AODV gn s th t cho tng ng nh tuyn. S th t ca ch nc to ra bi cc ch n nh l mt tham s trong thng tin nh tuyn m n gi i ti cc nt ang yu cu nh tuyn ti n. S dng cc s th t ny m bo s khng xut hin hin tng lp (loop) v cho php chng ta bit ng nh tuyn no l tt hn. chn la gia hai ng nh tuyn ti cng mt ch, nt gi yu cu nh tuyn lun lun chn ng s th t tng ng cao nht. Cc nt m l mt phn ca mt ng nh tuyn vn dng c c th a ra thng tin kt ni bng cch qung b nh k ra hng xm xung quanh n bn tin Hello (l mt bn tin RREP c bit). Nu bn tin Hello khng cn nhn c t mt hng xm no sau mt khong thi gian nh trc th c ngha l c th mt kt ni ti v hng xm . Khi mt nt pht hin ra ng i ti mt nt hng xm khng cn dng c na n s xa thng tin ng ny v gi i mt bn tin RERR ti cc hng xm cn li, vic ny gip duy tr danh sch cc hng xm vn cn lin lc c. Th tc ny s c lp li ti cc nt nhn c bn tin RERR. Mt nt m nhn c mt bn tin RERR c th li gi i mt bn tin RREQ. AODV khng cho php iu khin cc kt ni theo mt hng duy nht.

12.1.3. nh tuyn ngun ng DSR


c thit k cho mng di ng c bit c s node c th ln ti 200 vi mc lu ng cao. Giao thc ny lm vic theo kiu theo yu cu ngha l khng c hnh ng cp nht theo nh k. Cc gi tin c chuyn hon ton theo cc ng chn. Nh vy gim c lng

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.

12.1.4. Thut ton nh tuyn t ch tm thi TORA


Giao thc ny thuc dng h cc giao thc o chiu kt ni. N c th cung cp nhiu ng nh tuyn gia 2 im. TORA bao gm ba phn: to ra, duy tr v xa ng. Ti mi nt mng, mt bn sao chp ring bit ca TORA c chy vi tng ch. TORA xy dng mt th khng tun hon trc tip hng ti mt ch. N gn mt tham s

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

12.2. M phng mng di ng


12.2.1. Kch bn m phng
Chng ta bt u bng vic a ra mt kch bn n gin: mt kt ni TCP n qua 3 node mng vi phm vi 500 x400m nh c miu t trong hnh 12.1. V tr khi to ca node 0, 1 v 2 ln lt l (5,5), (490,285) v (150,240) (chng ta gi s rng ta trc z bng 0). Vo im thi gian 10, node 0 bt u di chuyn ti im (250,250) vi vn tc 3m/s Vo im thi gian 15, node 1 bt u di chuyn ti im (45,285) vi vn tc 5m/s Vo im thi gian 10, node 0 bt u di chuyn ti im (480,300) vi vn tc 5m/s Node 2 khng tham gia m phng.

200

Hnh 12.1: V d v mt mng ad-hoc 3 im

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.

12.2.2. Vit mt tcl script


Chng ta bt u bng vic xc nh r mt vi tham s c bn cho qu trnh m phng, cung cp thng tin cho cc layer khc nhau. N c lm nh di y: 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) Channel/WirelessChannel; Propagation/TwoRayGround; phy/WirelessPhy; Mac/802.11; Queue/DropTail/PriQueue ; LL; Antenna/OmniAtenna; 50; 3; DSDV; 500; 400; 150; # channel type # radio-propagation model # network interface type # MAC type # 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

Nhng thng s ny c s dng trong qu trnh cu hnh cc node vi cc lnh nh sau

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.

12.3. nh dng file vt


Mt v d v mt ng trong du vt u ra l
r 40.649943289 _1_ AGT --- 1569 tcp 1032 [a2 1 2 800] ------- [0:0 1:0 32 1] [35 0] 2 0

Tham s u tin l 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

Set val(ifqlen) 50;

204

# set up topography object Set topo [new Topography]

$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

Bng 12.1: Kch bn "wrls-dsdv.tcl" cho TCP ttrn mt mng ad-hoc

12.4. Phn tch kt qu m phng


Ti lc bt u cc node cch nhau qu xa v khng th to c kt ni n nhau. Gi tin TCP u tin c truyn ti im thi gian 10 nhng kt ni khng th m c. Trong lc y cc node 0 v node 1 bt u di chuyn v pha node 2. Sau 6 giy (timeout) c gng to kt ni ln th hai nhng vn khng c v gi tr timeout c nhn i thnh 12 giy. Ti im thi gian 18 mt c gng kt ni c thc hin. Gi tr timeout li c nhn i thnh 24 giy v tip tc nh vy li nhn i thnh 48 giy. Ch n thi im 100 giy kt ni mi c thit lp. Node 1 v node 0 l gn nhau nn to c mt kt ni trc tip. Cc im di ng tip tc di chuyn v li xa nhau thm cho n khi kt ni trc tip b t. Giao thc nh tuyn l qu chm to ra mt ng nh tuyn khc. Tin trnh c th xem trong hnh 12.2 v mt ci chp nhanh ca nam(Network AniMator) ti thi im 124.15 giy c ghi ti hnh 12.4 Tip theo chng ta thay i mt cht cc tham s m phng. Vic thay i duy nht thc y l chng ta thay i thi im truyn ftp t 10 thnh 12. Vic ny s lm cho nt s 0 1 s nm trong vng ph sng ca nt s 2 khi thi gian vo khong 53 giy, ti lc ny kt ni tcp c gng kt ni s thnh cng gia nt 0 v 1. iu ny c miu t trong hnh 12.5 . Ti im thi gian 66 node 0 v node 1 l gn nhau to c mt kt ni trc tip. Tin trnh c ny c th thy hnh 12.3 . Ti thi im ng nh tuyn thay i c mt gi tin TCP b mt nn lm cho kch thc ca s gim xung. Ti im thi gian 125.5 nt 0 v 1 l qu xa nhau c th duy tr kt ni nn kt ni b t.

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)

12.5. So snh vi nh tuyn ad-hoc khc


12.5.1. TCP qua DSR
Trc ht chng ta thay i giao thc nh tuyn sang DSR bng cch thay i wrlsdsdv.tcl thnh : Set val(rp) DSR ;# routing protocol Khi thc hin m phng, chng ta s quan st 5 giai on. Trong giai on u tin v cui cng, cc nt mng qu xa nhau nn s khng c kt ni. Giai on 2 v 4 kt ni gia nt 0 v 1 theo ng thng qua nt 2 , trong khi giai on 3 kt ni trc tip gia 2 nt mng.

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

Giai on 2 bt u vo khong thi gian 40. Giai on 3 bt u vo khong 60 giy.

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

Hnh 12.6: Kch thc ca s ca kt ni TCP qua DSR

Hnh 12.7: Kch thc ca s ca kt ni TCP qua AODV

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.

12.5.2. TCP qua AODV


Vic m phng vi cng tham s nh trn c lp li vi AODV. Tin trnh c th thy hnh 12.7 . Kt ni truyn i 3924 gi tin d liu TCP. T u n cui n trong mt giai on di vi ng nh truyn qua node 2 trung gian. Thc t l vic thay i ng nh tuyn b ngn, khng c s mt mt gi tin do vy kch thc ca s vn cao. Tuy nhin, chng ta thy rng gi tr ca n vn thp hn DSR. iu ny l do thc t thi gian i mt vng (tham s cn thit tng window mt n v) l di hn bi v y khng s dng nh tuyn trc tip. iu ny gii thch ti sao n truyn t d liu hn DSR. Chng ta nhn thy y rng vic tm kim qung ng ngn hn dn n hiu sut TCP tt hn.

12.5.3. TCP qua TORA


Vi cng tham s nh wrls-dsdv.tcl, TORA khng truyn c gi tin no c. tng tnh kt ni, chng ta thm vo mt node c nh khc ti ta (250,240) vi vai tr ch l chuyn tip cc gi tin. Tin trnh thu c nh trong hnh 12.8.

Hnh 12.8: Kch thc ca s ca kt ni TCP qua TORA vi 4 nt mng

Hnh 12.9: TCP qua AODV vi gi tr ln ca kch thc ca s ln nht

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

Hnh 12.10: TCP qua TORA vi 4 nt mng, im thi gian 33

Hnh 12.11: TCP qua Tora vi 4 nt mng. im thi gian 56

12.5.4. Mt vi bnh lun


Trong cc v d chng ta thy, vic mt gi tin xy ra khi khong cch vt l l qu xa hoc khi ng nh tuyn thay i, v gi tin s khng b mt khi c b m b trn. iu ny l do thc t rng chng ta s dng mt gi tr mc nh ca kch c ln nht ca ca s TCP l 20. Do ca s thc t c s dng l nh nht gia di ca s nghn v 20. Trong hnh 9.9 chng ta trnh by mt tin trnh kch thc ca s ca TCP qua AODV di cc iu kin ging ht nh ci chng ta s dng c c hnh 9.7 nhng gi tr ca s ln nht l 2000. Chng ta thy rng chng ta s b mt gi tin do trn b m.

12.6. S tc ng ca TCP ti giao thc MAC


12.6.1. Bi cnh
Trong phn trc chng ta cp ti mt lng nh cc im di ng v thy c nh hng ca vic di ng ti hiu sut ca TCP. Khi chng ta c mt s lng ln cc im di ng, hin tng ring bit mi do cc lp MAC v lp vt l c th c mt tc ng nghim trng ti hiu sut TCP. c th hiu c tc ng ny chng ta trc tin s miu t mt vi kha cnh lin quan n s vn hnh ca lp MAC IEEE802.11 v lp vt l. Mi mt truyn dn ca gi tin DATA ti lp MAC l mt phn ca mt giao thc bt tay 4 bc. im di ng mun gi mt gi tin, chng ta gi n l M1, u tin s gi mt gi RTS (Request to Send). Nu im di ng ch (gi l M2) c th nhn c gi tin ny n s gi mt gi tin CTS (Clear to Send). Nu M1 nhn c CTS n c th gi gi tin DATA (c th l d liu TCP hoc gi ACK). Cui cng M2 gi mt gi tin ACK (lp MAC) M1 hiu rng gi d liu c nhn hon chnh.

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.

Hnh 12.12: Chui topo


Hin tng m chng ta m t gii hn ca s lng gi tin c th truyn ng thi trong mng ad-hoc m khng gp xung t. V chnh S thc p v khng gian tr thnh mt nhn t chnh lm gii hn hiu qu ca TCP ch khng phi l trn b m. c th hin trong [19] vi cu hnh chui ca chng ta, s c ch nu chng ta gii hn kch c ln nht ca ca s TCP xung khong n/4; hn na vic tng kch c ln nht ca ca s cn gy ra nhiu s xung t hn v l gim gi tr thi gian. Trong phn ny chng ta s kim tra khng nh ny bng cch m phng. Hn na, v s lng gi tin c th

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.

12.6.2. Kch bn m phng


Chng ta s dng m hnh truyn sng mt t 2 tia, IEEE892.11 MAC, v m hnh anten ng hng ca ns. Chng ta s dng thut ton nh tuyn AODV, mt hng i giao din di 50 ti mi nt mng. Chng ta s kim tra phin bn NewReno ca TCP, l phin bn c trin khai nhiu nht. Chng ta lm vi 4 kch bn: 3, 9, 20 v 30. Trong trng hp ca 3 v 9 i hi 150 giy cho mi m phng ( c c s vn hnh n nh). Cc trng hp cn li i hi 1500 giy cho mi m phng. Mt gi tin d liu TCP c t kch c 1040 bytes ( bao gm header). Kch bn cho trng hp ACK b tr (vi d = 2) c cho trong bng 12.2. di, khi cu hnh cc node chng ta s s dng ty chn macTrace ON c c du vt chi tit ca gi tin giao thc MAC. iu ny cho php chng ta phn tch l do ca mi gi tin TCP b tht lc.

# 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

$ns trace-all $tracefd

213

# set up topography object Set top [new Topography]

$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

Hnh 12.13: S gi tin/giy i vi n = 9 nh mt chc nng ca kch c ca s ln nht

Hnh 12.14: S gi tin/giy i vi n = 20 nh mt chc nng ca kch c ca s ln nht

Hnh 12.15: : S gi tin/giy i vi n = 30 nh mt chc nng ca kch c ca s ln nht

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

12.6.4. Thay i cho NS vi trng hp n > 2

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.

13.1. M phng hng i


V d hng i n gin nht cho phn tch ton hc l hng i M/M/1: l khong thi gian gia hai ln n phn b theo hm m ph thuc tham s v l tng thi gian truyn ca mt gi cng c phn b m vi cc tham s khc. Mt gi c th c truyn i ti mt thi im v kch thc b m l v hn. Nu nh chng ta ch r = /,

220

thi gian trung bnh ca gi trong h thng l: E [Q] = 1 (13.1)

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

Bng 13.1: Kch bn tcl mm1.tcl m phng hng i MM1


Kh hp dn khi phn tch kt qu m phng v c gng tm l do hp l cho s khc bit. Chng ta c th tm c vi l do cho the simulations impressisions (v s dng cc kt lun ci thin m phng). Cng thc 13.1 tnh ton ton b mt gi ang c truyn, trong khi s m phng ch tnh ti phn cn li ca gi d liu c truyn m vn cn nm trong hang i. S khc bit ny c th to nn kt qu m phng thp hn kt qu chnh xc khong 0,5 gi. *Cch khc, cc gi m phng c rt ngn ti gi tr 1KB, gi tr kch c mc nh ca mt gi UDP. Nh vy thi gian truyn nh hn so vi nh ca chng ta. sa li, c th thay i gi tr cc i mc nh ca gi, v d nh 100000, bng cch thm dng lnh: $src set packetSize_ 100000 sau lnh: src [new Agent/UDP] Thi gian m phng trn khng di. Vi thi gian 20000, ta nhn c gi tr chnh xc hn.

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.

Hnh 13.1: S m rng kch c ca hng i M/M/1


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.

set ns [new Simulator]

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

Bng 13.2: Kch bn tcl mm1k.tcl m phng hng i MM1.


Thm lnh $src set packetSize_100000 nh c cp mc trc, ta c c s ph hp gia m phng v cng thc. V d, vi K = 2, ta c P (loss) = 0.298 vi thi gian m phng 2000 giy v P (loss) = 0.3025 cng thc trn. Vi K = 5, ta thu c kt qu tng ng l 0.131 v 0.128. Cc lnh c th hin bng 12.2 Ch : vi K = 1, m phng khng thc hin tt; trong trng hp ny tt c cc gi n u b mt

225

Chng 14 Mng v tinh trong NS


Mc lc

14.1. Tng quan v cc m hnh v tinh . . . . . . . . . . . . . . . .

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.1. V tinh a tnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

14.2.1. Nt mng v v tr ca nt mng. . . . . . . . . . . . . . . . . . . . . . 14.2.2. ng truyn v tinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.3. Chuyn giao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14.2.4. nh tuyn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.5. H tr bm vt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.6. Cc m hnh li . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.7. Cc la chn cu hnh khc . . . . . . . . . . . . . . . . . . . . . . . . . . .

vn

14.2.8. M phng h tr NAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.9. Tch hp vi m hu tuyn v v tuyn . . . . . . . . . . . . . . . 14.2.10. Cc tp lnh v d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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.

14.1. Tng quan v cc m hnh v tinh


Mun m phng mng v tinh mt cch chnh xc i hi phi lit k y bn cht ca tn s sng mang RF( nh nhiu, hiu ng fading ), cc tng tc ln nhau ca giao thc (nh s tng tc gia cc li cm thng d trn ng truyn v m kim tra li), tc ng th cp ca qu o (s tin ng- precession, s bt thng ca lc hp dn . . . ).Tuy nhin, nghin cu cc c im c s mng v tinh qua cc kha cnh v kt ni mng, cc c tnh nht nh c th n gin ha i. V d nh, hiu nng ca giao thc TCP qua ng truyn v tinh b thay i i cht qua vic s dng mt php gn ng sovi vic dng m hnh knh chi tit - dn n hiu nng c th c m t da vo ton b xc xut mt gi tin. y l cch tip cn dn n kiu m phng ny: l to ra mt framework nghin cu s giao vn, nh tuyn, v MAC trong mi trng v tinh bao gm c v tinh a tnh ln chm sao v tinh LEO (qu o thp) qu o cc. D nhin l ngi dng c th da vo cc m hnh m rng ny thay i cc chc nng ti mt lp no .

227

14.1.1. V tinh a tnh


Qu o v tinh a tnh ca tri t nm trn ng xch o cch khang 36000 km so vi mt nc bin. Trn thc t, v tinh a tnh c th b tri i so vi v tr thit k ban u bi s thay i ca trng hp dn- nhng tc ng ny b b qua trong m phng h thng ns. C hai m hnh v tinh a tnh c a ra: M hnh v tinh a tnh chuyn tip bent-pipe truyn thng n n thun ch l cc b lp li trn qu o- tt c cc gi tin nhn c bi v tinh loi ny trn knh tuyn ln c truyn dc theo tn s sng mang RF n cc ng tuyn xung tng ng (do vy n gi l truyn theo ng ng). Nhng v tinh mi hn s tng hiu qu x l bng c s, c v phc hi tn hiu s ln thc hin vic chuyn mch gi nhanh tch hp trn tu khng gian. Trong chng trnh m phng, cc v tinh ny c th c m hnh ha nh l nt mng ns thng thng vi cc khi chc nng thc hin phn loi v nh tuyn. Trc y, ngi dng c th m phng ng truyn v tinh a tnh bng cch m phng n gin mt ng truyn tr di dng ng truyn v nt mng ns thng thng. S nng cp chnh trong phn m rng so vi cc v tinh a tnh l tnh nng m phng giao thc MAC. Ngi dng c th thit lp nhiu thit b u cui cc v tr khc nhau trn b mt tri t v kt ni chng n ng truyn knh tuyn ln v tuyn xung ca cng mt v tinh. Tr truyn sng trong h thng (c s khc nhau cht t vi mi ngi dng) s c m hnh ha mt cch chnh xc. Thm vo , knh tuyn ln v knh tuyn xung cng c th c nh ngha khc nhau ( c th l bng thng khc nhau hoc cc kiu m hnh li khc nhau)

14.1.2. Cc v tinh LEO (Cc v tinh qu o thp)


Hnh minh ha ny c to ra t gi phn mm Savi ti trung tm nghin cu v tinh ca i hc Minnesota

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

Hnh 14.1: V d ca mt chm sao LEO qu o cc


Qu o: nghing ca qu o c th bin i gi tr lin tc trong khong t 00 n 1800 (gc nghing ln hn 900 tng ng vi qu o ngc ca hnh tinh). lch tm qu o thng khng c tnh n. S tin ng nt cng vy. Khong cch gia cc v tinh trong cng mt mt phng qu o c gi c nh. S ng b tng i gia cc mt phng qu o cng c gi nguyn (mc d l nhiu h thng c th khng iu khin s ng b gia cc mt phng qu o). ng truyn gia cc v tinh (ISL): i vi cc chm sao qu o cc, cc ISLs trong cng mt phng (intraplane ISL), gia hai mt phng cng chiu ln cn (interplane ISL) v gia hai na mt phng ngc chiu (crossseam ISLs) u c th nh r. Intraplane ISLs tn ti gia cc v tinh trong cng mt phng v s khng bao gi ngng hot ng hoc chuyn giao. Interplane ISLs th tn ti gia cc v tinh ln cn vi nhau xoay quanh mt phng. Nhng ng kt ni nh th khng c kch hot gn cc im cc ( trn ngng v ISLs nh trong bng) bi v c cu v tr nten khng th bm theo nhng ng truyn ny trong vng cc. Ging nh intraplane ISLs, interplane ISLs cng khng bao gi chuyn giao. Cn Crossseam ISLs th c th tn ti trong mt chm sao gia cc v tinh trong mt phng c hng i lp (ni cc mt phng to nn ci gi l ng phn gii trong cc topo mng). ng truyn v tinh GEO cng c th c nh r cho chm sao ca v tinh a tnh.

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

Teleesic 1375km 12 24 84.7 15 15 4 C Khng 8 15Mb/s 1.5Mb/s C 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

14.2. S dng cc tnh nng m rng cho v tinh


14.2.1. Nt mng v v tr ca nt mng
Cc nt mng v tinh c hai loi c bn : nt mng ca v tinh a tnh hoc nt mng ca cc v tinh khng phi l a tnh. Thm vo , cc nt thuc thit b u cui c

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.

Hnh 14.2: H thng ta hnh cu dng cc nt mng v tinh


Hnh 14.2 minh ha mt h thng ta hnh cu, v h thng ta -cc tng ng. H thng ta coi tri t l trung tm, v trc z trng kt vi gc quay ca trc tri t. (R, , ) = 6378km, 90o , 0o tng ng vi kinh 0 ( kinh tuyn gc) trn ng xch o. c bit, c mt lp ca nt v tinh l Class Node/SatNode, l mt trong 3 loi i tng Position c th gn vo. Mi i tng SatNode v Position l i tng do OTcl/C++ phn ra ring bit, nhng hu ht m chng trnh nm trong C++. C cc loi i tng Position sau: Position/Sat/Term: Mi thit b u cui c xc nh bng ta kinh v v ca n. Min v t [-90; 90] v min kinh t [-180; 180], vi gi tr m tng ng cho hng Nam v hng Ty. Khi thi gian m phng tng, thit b u cui di chuyn trn b mt Tri t. B to nt c th s dng to ra mt thit b u cui vi i tng v tr c gn vo nh sau:

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

14.2.2. ng truyn v tinh


Mi nt v tinh c mt hoc nhiu khi giao din mng v tinh, m mi knh s kt ni n i tng ca lp vt l trong khi . Hnh 14.3 minh ha cc thnh phn chnh ny. ng truyn v tinh khc ng truyn v tuyn ns hai kha cnh chnh: Giao din truyn v nhn tn hiu phi c kt ni n cc knh khc nhau. Khng c chc nng ARP( giao thc phn gii a ch). M hnh truyn sng radio l mt m hnh cho ngi dng thm cc m hnh li chi tit nu c. Cc m lnh hin ti khng dng m hnh truyn sng. Giao din mng c th thm vo theo cu lnh sau ca Class Node/SatNode:: $node add-interface $type $ll $qtype $qlim $mac $mac_bw $phy Cu lnh add-interface tr li kt qu ca gi tr ch mc m c th c dng truy cp vo khi giao din mng sau ny trong qu trnh m phng. Theo quy c, giao din u tin c to ra trn mt nt mng s gn vo knh truyn tuyn ln hoc tuyn xung ca v tinh hoc thit b u cui. Tham s sau phi c a vo: type: Ch ra loi knh truyn, c cc loi sau: geo hoc polar dng cho cc ng truyn t mt thit b u cui n GEO hoc n v tinh cc tng ng, gsl hoc gsl-repeater dng cho ng truyn t v tinh n mt thit b u cui, intraplane, interplane v crossseam ISLs. Trng type ny c dng bn trongchuwowng trnh m phng xc nh r cc loi ng truyn khc nhau, nhng v mt cu trc th chng cng tng ng nhau. ll: Loi lp ng truyn (ch c duy nht mt lp LL/Sat).

233

Hnh 14.3: Cc thnh phn chnh ca giao din mng v tinh


qtype: Loi hng i (v d lp Queue/DropTail). Bt k loi hng i no cng c th s dng, tuy nhin nu cc tham s thm vo ln hn di ca hng i yu cu th sau instproc c th cn c sa i bao gm nhiu i s (agruments) hn na. qlim: di ca hng i giao din, tnh theo s gi d liu. mac: Loi giao thc MAC. Hin ti, c hai loi c nh ngha: lp Mac/Sat cho ng truyn ch c mt my thu (tc l gi thuyt khng c xung t xy ra) v lp Mac/Sat/UnslottedAloha- s trin khai phng php ALOHA khng phn khe . mac_bw: Bng thng ca ng truyn c t bi tham s ny, n iu khin thi gian truyn dn: Giao thc MAC gi i nhanh nh th no. Kch c gi d liu s dng tnh ton thi gian truyn l tng gi tr ca hm size() trong phn mo u gi d liu chung v LINK_HDRSIZE l ch kch c ca bt k phn mo u ca lp lin kt d liu no. Gi tr mc nh cho LINK_HDRSIZE l 16 bytes( gi tr mc nh trong th vin satlink.h). Thi gian truyn c m ha vo phn mo u gi

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.

14.2.3. Chuyn giao


M hnh ha s chuyn giao v tinh l thnh phn ch cht ca m phng mng v tinh LEO. Rt kh d on chnh xc chuyn giao din ra nh th no trong mt h thng LEO thc bi v vn ny cha c quan tm k trong cc ti liu hin c. Trong nhng chc nng m rng ca v tinh, chng ta thit lp cc tiu ch nht nh cho vic chuyn giao v cho php cc nt mng iu khin trng thi i hi chuyn giao mt cch c lp. Mt cch thc khc c th thc hin l cc s kin chuyn giao c ng b trong sut

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

th tm thy trong th mc ...ns/tcl/lib/ns-sat.tcl v ...ns/sattrace.cc,h

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

14.2.7. Cc la chn cu hnh khc


a ra cu hnh ban u ca v tinh theo l thuyt t ln th 0, rt d bt u cu hnh v tinh t bt c im ty bng tham s time_advance_parameter ( iu ny thc s hu ch cho m phng LEO). Trong sut qu trnh chy m phng, t v tr ca i tng n v tr thi gian:Scheduler::instance().clock + time_advance_ seconds. Position/Sat set time_advance_ 0; # tnh bng giy (seconds)

14.2.8. M phng h tr NAM


NAM khng c h tr trong m phng ny.

240

14.2.9. Tch hp vi m hu tuyn v v tuyn


Phn tr gip c thm vo kt ni cc nt hu tuyn (wires) da trn OTcl truyn thng vi cc nt mng v tinh. Phn ny m t v kh nng v hn ch ca m ny Cc m lnh v tinh (v m v tuyn) thng thng hc hin nh tuyn trong C++, trong khi m ns gc th dng an xen gia OTcl v C++. Do cc l do v tnh tng thch nghch (backward) th kh tch hp cho c m hu tuyn v m v tuyn. t hc hin tch hp m hu tuyn v m v tuyn, ns to ra mt nt cng c bit (gi l trm c s- base station) dng nh tuyn phn cp v nh v nt trm gc n trong mng khng dy Bi v nh tuyn khng c tch hp hon ton, cho nn topo ca mng m phng b gii hn ch c mt nt cng trn mi mng v tuyn thnh phn (subnet) khng dy ( v d mt gi d liu khng th i vo mng v tuyn t mt cng vt l hu tuyn v chuyn i thng qua mt cng khc). Tch hp m hu tuyn v v tinh c thc hin theo cch khc. Bng cch chn chc nng cu hnh nt mng $ns node-config -wiredRouting ON nh tuyn C++ trong m v tinh c tt i,v thay vo , tt c cc thay i ca topo v tinh chuyn thnh theo m OTcl. Kt qu l, mng link_array trong OTcl c thao tc theo cc topo thay i, v nh tuyn c bn OTcl- c th xy ra. Gi phi tr cho vic ny l cn nhiu thi gian thi hnh cho cc m phng ln hn ( nh l Teledesic), nhng vi cc m phng nh hn, s khc bit l khng ng k. V d chi tit cch dng ca chc nng mi ny c trnh by trong th mc ...ns/tcl/ex /sat-wired.tcl, v mt tnh nng kim tra tng t trong v tinh kim tra bi tp ph hp vi m ny. Thm vo , tt c cc v d v tinh trong th mc ...ns/tcl/ex c th chuyn i thnh nh tuyn OTcl bng cch dng chc nng $ns node-config -wiredRouting ON. Tuy nhin, c mt vi ch : Chc nng nh tuyn hu tuyn cho v tinh ch c kim tra vi nh tuyn tnh ( c mc nh sn): $ns rtProto Static. M lnh ny kch hot cp nht bng nh tuyn ton cc da trn bt c thay i topo v tinh no. Chc nng data_driven_computation_ khng th t l "true" khi nh tuyn hu tuyn l ON. Trong file truy vt, khi mt gi d liu b mt bit do "khng c tuyn n host" (nh khi c thay i mt topo mng), truy vt tm mt bt khc nhau ph thuc vo wiredRouting ang ON hay OFF. Trong trng hp thng thng, ch c mt dng trn mi drop, vi nhn ch l "2. Trng hp sau c ba trng hp c th

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

14.3. Thc hin phn m rng m phng v tinh


M chng trnh ca phn m rng m phng v tinh c th tm thy th mc ...ns/sat.h, sathandoff.cc,h, satlink.cc,h, satnode.cc,h, satposition.cc,h, satroute.cc,h, sattrace.cc,h, and ns/tcl/lib/ns-sat.tcl. Hu ht chng c thc hin trong C++. Trong phn ny, chng ta tp trung vo bn thnh phn chnh ca s thc hin gm: tn, danh sch lin kt, kin trc nt v "detailed look" ti kin trc lin kt v tinh

Hnh 14.4: B sung danh sch ng truyn trong ns

14.3.1. S dng cc danh sch lin kt


Cc danh sch lin kt sau c s dng trong qu trnh thc hin: class Node duy tr mt danh sch tnh ca tt c cc i tng ca lp Node trong m phng. Bin Node::nodehead_ lu phn t u tin ca danh sch. Danh sch lien kt ny c s dng cho nh tuyn trung tm, tm v tinh chuyn giao, hoc truy vt. class Node cha danh sch cc ng truyn v tinh trn mi nt mng. C th, danh sch cc i tng ca lp LinkHead. Bin linklisthead_ lu phn t u tin ca danh sch. Danh sch lien kt ca LinkHead c dng kim tra cc ng truyn chuyn giao, v khi phc cc topo mng lin k. class Channel cha danh sch cc i tng ca lp Phy trn mi knh. Phn u ca danh sch c lu trong bin c tn l if_head_. Danh sch ny c s dng xc nh giao din trn knh nhn mt bn sao ca gi tin.

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.

14.3.2. Cu trc nt mng


Hnh 14.5 l mt gin lit k cc thnh phn thit b chnh ca mt SatNode. Cu trc ny c s tng ng vi MobileNode trong phn m rng mng khng dy, nhng cng c mt vi khc bit. Ging nh cc nt mng ns, SatNode c mt im entry n mt lot cc "classifiers". "Classifier" cho a ch bao gm mt bng nh tuyn cho gi d liu truyn thng n nt ngoi mng. Nhng v nh tuyn OTcl khng c s dng, tt c cc gi d liu khng dnh ring cho nt mng ny (v do s truyn thng n phn loi cng), s c gi n ch mc nh. Gi d liu dnh cho nt mng cng 255 c phn loi nh gi d liu nh tuyn v truyn thng n phn t nh tuyn. Mi nt mng cha mt hoc nhiu network stack bao gm mt SatLinkHead chung ti im entry ca ng truyn. SatLinkHead c dng nh mt API ly mt i tng khc trong cu trc ng truyn, v vy n cha mt s con tr ( mc d y API cha hon thnh). Gi d liu khi ri khi "network stack" th c trng iface_ trong phn tiu ca gi d liu c m vi ch s NetworkInterface duy nht tng ng vi mi ng truyn. Gi tr ny c th s dng h tr nh tuyn phn tn nh miu t di. Phn t nh tuyn c bn l SatRouteAgent; n c th s dng dung vi nh tuyn trung tm. SatRouteAgent cha bng nh hng thng n phn tch a ch ca gi d liu n ch LinkHead c th- n l mt nhim v ca SatRouteObject c tr bng ny chnh xc. SatRouteAgent thm cc trng nht nh tiu ca gi d liu v sau gi gi d liu xung n ng truyn thch hp. thc hin mt giao thc nh tuyn phn tn, mt SatRouteAgent mi c nh ngha, iu ny s hc v topo bng cch nh du ch s giao din trong mi gi d liu nh n n ngn xp, mt hm tr gip trn nt mng intf_to_target() cho php n phn tch mt gi tr ch s n mt LinkHead c th. C nhiu con tr n ba i tng thm vo trong mt SatNode. u tin, mi SatNode cha mt LinkHandoffMgr iu khin tn dng c hi chuyn giao v ngang hng chuyn giao. Nt mng v tinh v nt mng thit b u cui mi ci c phin bn LinkHandoffMgr thit k ring. Cui cng, s cc con tr n i tng cha trong mt SatNode. Chng ta tho lun linklisthead_ v nodehead_ trong phn trn. Con tr uplink_ v downlink_ c dng mt cch thun tin gi nh rng trong hu ht cc m phng, mt v tinh hoc mt

244

Hnh 14.5: Cu trc ca lp SatNode


thit b u cui ch c mt knh tuyn ln v mt knh tuyn xung.

14.3.3. Cc chi tit v ng truyn v tinh


Thng tin chi tit v ng truyn v tinh c minh ha trong Hnh 14.6. Tp tin ...ns/tcl/lib/ns-sat.tcl cha cc instprocs OTcl khc nhau dung ghp cc lin kt theo Hnh 14.6. Hu ht cc m lnh dung cho cc thnh phn khc nhau ca ng truyn nm trong th vin ...ns/satlink.cc,h. im entry ca mt network stack l i tng SatLinkHead .i tng SatLinkHead xut pht t Class LinkHead. Cc i tng u ng truyn dung cung cp mt API ng nht i vi mi network stacks 2 . M lnh hp l cho trng type_ th tm thy trong th vin ns/sat.h. SatLinkHead lu bin kiu logic linkup_ m n ch ra ng truyn n t nht mt nt mng khc trn mt knh kt thc. Lnh thc thi C++ ca SatLinkHead c tm thy th vin ns/satlink.cc,h. Cc gi d liu ri khi mt nt mng s truyn thng n SatLinkHead n i tng ca class SatLL. Lp SatLL thuc lp lin kt d liu LL.Giao thc lp lin kt d liu (nh giao thc ARQ) c th c nh ngha y. SatLL hin ti s cp a ch MAC n gi d liu. Ch rng trong trng hp v tinh, chng ta khng dng giao thc phn gii a ch (ARP); thay vo , chng ta ch n gin dng bin MAC index_ nh a ch
In the authors opinion, all network stacks in ns should eventually have a LinkHead object at the front the class SatLinkHead would then disappear
2

245

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.

Hnh 14.6: Chi tit c t ngn xp giao din ca mng


i tng tip theo gi d liu tin ti l hng i giao din. Tuy nhin, nu truy vt c kch hat, phn t truy vt c th bao quanh hng i, nh ch ra hnh 14.6 . Phn ny ca mt ng truyn v tinh hot ng nh mt ng truyn ns thng thng. Lp thp hn tip theo l lp MAC. Lp MAC ly gi d liu t i tng hng i ( hoc truy vt deque)- mt s mc ni gi lp MAC v hng i cho php MAC ko gi d liu khi hng i nu n cn chng. Thi gian truyn ca mt gi d liu c m hnh lp MAC, MAC tnh ton tr truyn dn ca gi ( da trn vic m trng LINK_HDRSIZE c nh ngha trong satlink.h v trng size phn u chung ca gi d liu), v yu cu mt gi khc cho n khi gi hin ti c gi xung lp thp hn. Do , rt quan trng trong vic thit lp bng tn ca ng truyn mt cch chnh xc lp ny. cho thun tin, thi gian truyn c m ha trong phn tiu MAC, c th s dng thng tin ny MAC nhn tnh xem n i bao nhiu lu pht hin mt xung t trn mt gi d liu, v d th.

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.

14.4. Commands at a glance


Cu hnh nt mng ny biu th cc nt mng mi n sau c to s l <type>, trong <type> c th l mt trong cc loi sau: geo, geo-repeater, polar, terminal. Cc trng yu cu khc cho cc nt mng v tinh ( cho ci t ng truyn ban u v knh truyn) nh di: $ns_ node-config -llType <type> $ns_ node-config -ifqType <type> $ns_ node-config -ifqLen <length> $ns_ node-config -macType <type>

247

$ns_ node-config -channelType <type> $ns_ node-config -downlinkBW <value> (ch 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

Ti liu tham kho


[1] The VINT Project. The ns Manual(formerly ns Notes and Documentation), April 15, 2006 [2] Eitan Altman, Tanima Jimnez. NS Simulator for beginners , Lecture Note, 2003 2004 [3] Mrc Greis. Tutorial for the Network Simulator "ns", URL: www.isi.edu/nsnam/ns/tutorial/ [4] Gaeil Ahn and Woojik Chun. Design and Implementation of MPLS Network Simulator [5] TCL web page. http://otcl-tclcl.sourceforge.net/tclcl/ [6] Christian Huitema. Routing in the Internet, Prentice Hall, April 1995. 2nd Edition 1999 [7] A.Ballardie Core Based Trees (CBT) Multicast Routing Architecture, Internet RFC 2201 (Experimenatal), September1997 [8] D. Thaler, D.Estrin, D.Meyer(Editor). Border Gateway Multicast Protocol (BGMP): Protocol Spection,Internet Draft, November 2000 [9] S.Deering, D.Estrin, D. Farinacci, V.Jacobson, Ching-Gung Liu, and L Wei. An architecture for wise-area multicast routing.Technical Report USC-SC-94-565, Computer Science Department, University of Southern Clifornica, Los Angeles, CA 90089, 1984 [10] Floyd, S., and V. Jacobson. V.1 N.4, Random August Early 1993, p. Detection 397-413. gateways Available for at

Congestion

Avoidance

http://www.icir.org/floyd/papers/red/red/html [11] A. Ballardie. Core Based Trees (CBT) Multicast Routing Architecture Internet RFC 2201 (Experimental), September 1997 [12] S. Floyd, R. Gummadi and S. Shenker. Adaptive Red: an algorithm for increasing the robustness of REDs active queue management. Submitted

250

[13] E. Altman and T. Jimnez. Simulation analysis of RED whit short lived TCP connections. submitted [14] P. Pieda, J. Ethridge, M.Baines and F. Shallwani. A network simulator differentiated serices implementation. Open IP, Nortel Networks, July 26, 2000. [15] W. Noureddine and F. Tobagi. Improving the Performance of Interactive TCP Applications using Service Differentiation. Proceeding of IEEE infocom, New-York, USA, June 2002 [16] D. D Clark and W. Fang. Explicit Allocation of Best-E ort Packet Delivery Service. IEEE/ACM Trans on Networking, 6(4), 362-372, August 1998 [17] W, Gang, N. Seddigh and B. Nandy . A Time Sliding Window Three Colour Marker(TSWTCM), RFC 2589. [18] J. Heinanen andd R. Guerin. A tow rate three color marker. RFC 2698 Sept 1999 June 2000

251

1. Gii thiu nhm Advanced Networking Group


Cho cc bn Ban Qun Tr vntelecom.org xc tin thnh lp mt working group vi tn gi l Advanced Networking Group(AdNet). Xin mi cc bn c gii thiu v AdNet v mi cng tham gia vo AdNet. tham gia vo AdNet, mi bn gi email ng k ti: adnet@vntelecom.org vi ni dung bao gm: 1. H tn: 2. Gii tnh: 3. Trnh v chuyn ngnh: 4. Ni cng tc (v d nh tn cng ty) hoc khu vc bn (v d nh H Ni) Group page http://groups.google.com/group/adnet a ch google group: adnet@googlegroups.com

1.1. Thng tin s b v AdNet


1. Birthday: Ngy 4 thng 11 Nm 2008 2. Lnh vc Mng my tnh v mng truyn thng (Computer and communications networks) Tp trung vo cc chuyn mc thuc link layer, network layer Quan tm ti cc chuyn mc thuc transport layer, application layer 3. Hot ng

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

2. D n NetSim ca Advanced Networking Group


2.1. D n ti liu m phng bng ting Vit (NetSim-Viet)
"Network simulation - NetSim" "M phng mng" l phn khng th thiu c trong o to v nghin cu. Hin nay Vit Nam, s lng sinh vin lm n tt nghip cn n NetSim ngy cng nhiu. C rt nhiu chng trnh m phng (simulation tool) khc nhau v thng dng nh NS2 (free), OPNET (cracked) ... nhng ti liu hng dn v cc thng tin v chng (phn m rng, cc module mi) bng ting Vit vn cha nhiu v ri rc. Ti liu ny s rt hu ch cho sinh vin i hc v cao hc, c bit nhng bn vn cn hn ch khi s dng ting Anh. AdNet xut thc hin d n "Bin son ti liu m phng mng bng ting Vit". Ni dung d nh ca ti liu: 1. Gii thiu chung v l thuyt m phng mng L thuyt chung v Discrete event simulation Nguyn tc thng k v nh gi kt qu 2. Gii thiu chung v cc tool ph bin NS2 OPNET OMNET++ 3. Hng dn ci t, gii thiu v nh gi cc module mi ca NS2 4. Hng dn ci t, gii thiu v nh gi cc module mi ca OPNET 5. Hng dn ci t , gii thiu v nh gi cc module mi ca OMNET++ 6. Tool khc ....

254

2.2. Cch thc bin son


Bc 1 - Xc nh ni dung ca ti liu. Bc 2 - Tm kim cc ti liu ting Vit c sn v lin h vi cc tc gi mi ng tn cng. Bc 3 - Bin dch cc ni dung cha c phn ting Vit. Bc 4 - Hiu nh v a ln vntelecom. Bc 5 - Cp nht v sa cha ti liu.

2.3. T chc NetSim theo cc nhm


Nhm khng c Trng hay Ph m ch c Bo Co Vin (BCV) s 1 hay s 2 gi l BCV1 v BCV2. - Nhim v ca BCV l : Duy tr s lin lc gia cc thnh vin ca nhm Bo co kt qu hot ng ti NetSim - Mi thnh vin c th tham gia 1 hoc vi nhm. Cc nhm d kin

2.3.1 Nhn S (Human Resource - HR)


Nhim v ca thnh vin: Cp nht tnh hnh thnh vin gia nhp vo NetSim hay rt lui khi NetSim Qun l mailing list Gim st nhn lc ang hot ng cc nhm khc: b sung, h tr v...v Lin h vi cc c nhn ngoi NetSim mi hp tc, ng tc gi v...v

2.3.2 Qun l ni dung NetSim (Content Management - CM)


Nhim v ca thnh vin: Bin son ni dung tng th ca d n NetSim Phn chia cc nhim v cn thc hin v xc nh thi hn (deadline) cho mi nhim v Gim st tin thc hin v iu chnh ni dung nu cn

2.3.3. Thc hnh m phng mng (Simulation Practice - SP)


Nhim v ca thnh vin: Ci t simulation tool, hc v lm vic vi tool Kim tra nh gi cc tnh nng ca simulation tool Yu cu i vi thnh vin Mun hc v s dng thnh tho simulation tool no C my tnh ring (tt nhin ri ) Trnh ting Anh: cn bn

2.3.4 Bin dch v bin son ti liu (Translation & EditionTE)


Nhim v ca thnh vin Tham gia dch (translation) v hiu nh ti liu Anh sang Vit theo ni dung nhm CM ra. Tham gia son (edition) ti liu ting Vit c sn ghp vo NetSim Yu cu i vi thnh vin: Trnh ting Anh: cn bn Trnh ting Vit: TT

You might also like