You are on page 1of 27

‫ ـــ

ـــ ـ ﻝ‬

‫ﻝ‬
‫أ   اﻝی  اﻝ‬

‫‪1‬‬
‫‬
‫  
ﻝ‬

‫آ" اﻝ! ت ‪NS2‬‬

‫اﻝء اول‬

‫ﻝ‬
‫أ! !  اﻝی اﻝ‬

‫‪2‬‬
‫اﻝ  ‪ 0‬رب اﻝ ‪-‬ﻝ واﻝ‪*,‬ة واﻝ‪*$‬م ‪ ($‬أ'‪%$‬ف اﻝ‪$ ! -1$ $%‬‬
‫و( ‪4‬ﻝ‪ 2‬وﺹ ‪ 2‬و أ!‪.  -‬‬
‫أو; أﺡ ا‪ 0‬أن ی‪ %‬ﻝ‪ 8‬آ‪  -6‬ه=< اﻝ واﻝ=ي أرﺝ‪ $! $‬ا‪ 0‬أن ی‪-$
?$@A‬‬
‫اﻝ‪.‬‬

‫‪ D‬م ه=< اﻝ ‪%E‬ﺡ‪% 2‬ی‪ 2$  G


 D‬و‪%$E‬ح أ‪ 2-$-‬و!@‪-‬ه‪ ، 2$‬واﻝ‪8$6‬‬
‫* ﻝ‪
6J$E‬وردًا‬‫أل ا‪ -
0‬أن ‪ J‬ن  ‪ -ً1‬ﻝ
‪ 8K 6‬ه=ا اﻝ‪-‬ل وأن ‪ J‬ن ﺡ‪ً $‬‬
‫( أ‪K ،
6M‬رﺝ !‪ $‬أي '‪ OP$‬ی‪ $ $!  ! N$‬ه‪ <=$‬اﻝ ‪-$‬آ‪ 8‬أن ; ی‪G$P‬‬

‪ 8 -‬ﻝ‪ 8J‬أ‪ 8K -
@Q‬ه‪ <=$‬اﻝ‪ ،$‬ﺡ‪ $  ($6‬اﻝ@‪-‬ﺉ‪$‬ة‪$K ،‬ل ا‪ 0‬أن ی‪8$K 8ADK $‬‬
‫آ‪ -
6 -6‬وأن ی=آ‪ S1 -! -
K 81%‬وأن ی ‪ -$! -$
K 8$A‬ﺝ
‪ S$‬و!‪ -$‬أﺹ‪ $K S$‬ا‪0‬‬
‫; ‪-ًY‬‬
‫و!‪ -‬أﺥت ‪ 8@1 K‬واﻝ‪-E‬ن ‪ ....‬واﻝ
إ‪1 1‬ﻝ‪ -ً K-1 -ً N‬ورز‪ -ًV‬ﺡ* ً‬
‫*‪.‬‬
‫و* !‪ً D6‬‬

‫وا‪ 2‬أل أن ی ‪ (/0‬ﻝ ‪ +.‬وأن ی((  ه ﺵ‪ +‬وأن ی ی( ' اﻝ‪ 34‬اﻝ‪+‬ﺵ‪4‬د إﻥ‪ 74‬وﻝ‪ "4‬ذﻝ‪54‬‬
‫واﻝ‪/‬در ‪. 7‬‬

‫‪--‬أرﺡ? ﻝ‪+‬وض اﻝ‪--- +‬‬


‫أ   اﻝی  اﻝ‬
‫اﻝ‪+‬ی ا‪B‬ﻝ ‪+A‬وﻥ"‬
‫‪amjedns2@gmail.com‬‬
‫م‪2009‬اﻝ دان ‪-‬‬

‫اﻝ‪%‬ة اﻝ=ا )‪(CV‬‬


‫‪http://amjedns2cv.blogspot.com‬‬

‫‪3‬‬
‫ یت‬A‫س اﻝ‬+ 0

5 !D!
6 %Q- ‫ واﻝ‬8Q-‫ت  اﻝ‬-JE‫ اﻝ‬8‫آ‬- !
7 ‫ت‬-JE‫ اﻝ‬8‫آ‬- ! ‫ت‬--‫أ‬
8 TCL !% ‫ت‬--‫أ‬
12 NS2 8K w!-1%  -6‫ آ‬D‫ی‬%Y
14 -
 ‫ ور‬J' ‫ء‬-E1‫إ‬
16 agents and application ‫ت‬-@z‫ت واﻝ‬-D6‫ی اﻝ‬% 
18 } 8 ‫ل‬-|!
21 €A6‫ اﻝ‬Ns2 Formatting
23 Network Animator (Nam) w!-1% ‫ام‬P6‫ا‬
27 ‫در‬-,‫اﻝ‬

4
‫‪/‬‬

‫ه=ا اﻝء ی‪ D‬م ‪%E‬ح اﻝ@‪-‬ه ا‪ -‬دون اﻝ‪ P‬ض ‪ 8K‬اﻝ‪-@6‬ﺹ‪ G$‬اﻝ ‪$D‬ة اﻝ‪8$6‬‬
‫‪ … ,‬اﻝ@
واﻝ‪ $
K ($ -$ 8$6‬اﻝ ‪-$‬آ‪ $, 8‬رة ﺝ‪$‬ة ‪ ،‬وی‪%‬آ‪ ($ $‬اﻝ ی‪$! $‬‬
‫ا!| اﻝ‪ S| 86‬اﻝ@
و‪ D‬ی‪ 2‬و‪ } %‬اﻝ ا‪. †  -
z ?Q‬‬
‫‪ 8$$K‬اﻝ‪$$‬ء اول ی‪% 6$$‬ض اﻝ‪-$$6J‬ب أ‪-$$-‬ت اﻝ ‪-$$‬آ‪ 8‬واﻝ‪ $$D 8$$6‬م ‪TCL ($$‬‬
‫وی‪%E‬ح أه اوا!‪ -
K %‬واﻝ‪ 8K !P6‬اﻝ ‪-‬آ‪.8‬‬
‫ﺙ ی‪%‬د ‪ G‬آ‪  -6‬اﻝ‪ ns2 8K w!-1%‬وﺥ‪-,‬ﺉ‪ 2,‬وأ‪ 1‬اع اﻝ‪-DA6‬ت اﻝ‪ 86‬ی‪-$
 $J‬‬
‫وآ‪=$$‬ﻝ‪ $$ ! N‬ادوات اﻝ‪ 8$$6‬ی‪ $$J‬ا‪P6$$‬ا!
‪ ?$$! -‬اﻝ ‪-$$‬آ‪ nam G$$|! 8‬واﻝ‪=$$‬ي ‪ 6$$‬‬
‫اﻝ‪%6‬ق إﻝ‪; 2‬ﺡ‪- -ًD‬ﻝ‪ G,@6‬واﻝ=ي ی‪P6‬م ﻝ ‪%‬ض ‪-61‬ﺉ‪- ! w‬آ‪-‬ة اﻝ‪ GJ$E J$E‬ر‪8! $‬‬
‫!‪% 6‬ك ‪.‬‬

‫وا‹ااااااااااااااااااااان!!!!!‬
‫ه‪ G‬أ‪ S1‬ﺝ‪-‬ه ﻝ‪ P‬ض ‪- 8K‬ﻝ ‪ns2‬‬
‫إذا ( ‪%‬آ ا‪ 0‬و  ا‪1 0‬أ اﻝ‪%‬ﺡ ‪,,,,‬‬

‫‪5‬‬
‫آ" اﻝ! ت  اﻝ‪ "T‬واﻝ‪+T‬‬
‫ أ ه=ا اﻝ ‪-‬آ‪- 8K 8‬م ‪ 1989‬ا !‪%E‬وع ‪ VINT‬واﻝ=ي ه '‪ ! GJ‬أ'‪-J‬ل‬
‫اﻝ ‪-‬آ‪ 8K Real Network Simulator 8‬ﺝ‪  !-‬آ‪-‬ﻝ@ ر‪ ! 8K -1‬ــــ‪% G!-‬آــــ‪8‬‬
‫‪ Berkeley Lab‬وه=ا ه ' ‪-‬ر اﻝ‪. !-‬‬

‫وی– د اﻝ‪ !P6‬ﻝ


=ا اﻝ ‪-‬آ‪- 8K 8‬م ‪ 2006‬آ‪-‬ﻝ‪-6‬ﻝ‪: 8‬‬
‫أآ|‪ 8K 
! 1000 ! %‬أآ|‪ ! %‬ﺥ دوﻝ وأآ|‪! %‬‬
‫‪P6! 10000‬م ﺡ ل اﻝ ‪-‬ﻝ وی‪%
' G,‬یً‪ -‬ﺡ اﻝ‪ 300 8‬ر‪-‬ﻝ‬
‫( اﻝ ‪ ?V‬اﻝ‪%‬ﺉ‪ 8‬ﻝ‪.  !-‬‬
‫‪Ns home page‬‬
‫‪http://www.isi.edu/nsnam/ns‬‬

‫آ‪ -‬ی ﺝ د ! ا˜ﺹارات ‪4‬ﺥ‪%‬ه‪ -‬ا˜ﺹارة ‪ ns-allinone-2.33‬و‪-$ 8$K‬م ‪2008‬‬


‫‪   June %
' 8K‬ی‪ ns2 %‬إﻝ( ا˜ﺹار اﻝی واﻝ=ي ‪ ns3 26 S‬واﻝ=ي إﻝ(‬
‫ا‹ن ‪ V‬اﻝ‪6‬ــ ی‪.%‬‬

‫آ‪ -‬ی‪ D 6‬ور' ‪ G‬آ‪ 6A G‬واﻝ‪ 8K D  86‬اﻝ ‪-$1‬ن ‪! 8$K‬ی‪ $A‬أﺙ‪ ، -$A‬واﻝ‪$ 8$6‬أت‬
‫‪ 2006 A‬وﺡ‪-1 SDD‬ﺡً‪ -‬آ‪ً%‬ا ﺙ ‪D‬ت اﻝ ر' اﻝ|‪ ، 2008 A 8K 1-‬وأ‪-$
 €Y‬‬
‫)‪ ، WNS2(workshop ns2‬وآ‪-‬ن اﻝ
‪$‬ف اﻝ‪%‬ﺉ‪ 8$‬ﻝ
‪ <=$‬اﻝ ر'‪ $‬ﺝ‪ …$‬اﻝ‪-$‬ﺡ| ‪8$K‬‬
‫!‪-$$‬ل اﻝ‪-J$$E‬ت !‪ $$‬اﻝ‪-$$‬ﻝ اﻝ‪ 8-A$$,‬واآ‪-$$‬دی‪ 8‬ﻝ‪ $$EV-A‬ا اﻝ‪ $$6‬ر اﻝ ‪-‬ﺹ‪ G$$‬وﻝ‪8$$J‬‬
‫ی دوا ا;‪ <-‬اﻝ‪ 8D6‬ﻝ ‪-‬آ‪-‬ة اﻝ‪-JE‬ت ‪. network simulation‬‬

‫‪6‬‬
‫أت آ" اﻝ! ت‬
‫‪-1 J! -‬ت اﻝ ‪-‬آ‪:8‬‬

‫ی ‪ %6‬اﻝ ‪-‬آ‪ 8Aœ 8‬ﺝًا ‪-‬ﻝ ی‪-$1 J! $! $‬ت و ‪%‬و آ‪; $‬ت اﻝ‪-J$E‬ت واﻝ‪ 8$6‬ی‪ 6$‬‬
‫اﻝ‪ ، Object GJE -
A % 6‬وی‪ 2 ( J%‬داﺥً‪ ( -‬ﻝž‪ 6‬ه‪OTCL,C++ -$‬‬
‫وآ‪* -$$‬ﺡ‪  $$‬ه‪-$$A‬ك ‪%$$K‬ق '‪ $$ ?$$-‬اﻝž‪ C++ $$žK $$6‬ه‪ 8$$‬ﻝž‪P6$$ $$‬م ‪Compiler‬‬
‫ﻝ‪%6‬ﺝ أوا!‪%‬ه‪ -A -‬ﻝž ‪ 8
K OTcl‬ﻝž ‪P6‬م !@‪ interpreter %‬ﻝ‪ %@6‬أوا!‪%‬ه‪.-‬‬
‫‪P6-K‬ام ﻝž ‪ C++‬ﻝ‪-@J‬ء
‪ -‬و‪ 8K -
6%‬اﻝ‪ =@A6‬وآ‪ -$
S$6‬اﻝ‪%‬و آ‪; $‬ت واﻝ‪-$1 J‬ت‬
‫اﻝ|‪ 6 -‬واﻝ‪ %$ž6 ; 86‬و ‪-$6‬ج ﻝ‪ 8$K %$‬اﻝ‪ -$A =$@A6‬ﻝž‪ ?$! TCL $‬آ ‪8$K $M -$
1‬‬
‫اﻝ‪ =$$@A6‬ﻝ‪%$$ $$J‬ی  ‪ 8$$K‬اﻝ‪$$ 6‬ی‪ G‬وه‪8$$' 8$$‬ء !
‪- $$‬ﻝ‪ $$A‬ﻝ‪P6$$‬م ‪ -$$
S$$6JK‬أوا!‪%$$‬‬
‫اﻝ‪P6‬م !‪ -‬ﺝ?  ‪ %‬اﻝ‪ =@A6‬و‪ %‬اﻝ‪ 6‬ی‪ ! G‬ه‪ -‬اﻝž‪. 6‬‬

‫‪%Y -‬ی‪ D‬اﻝ ‪-‬آ‪-‬ة اﻝ‪ 86‬ی‪ -


6‬اﻝ ‪-‬آ‪:8‬‬

‫! ‪-‬آ‪ ns2 8‬ه ‪-‬رة  ‪ discrete event simulator‬ی ‪ 8$A‬ی‪P6$‬م !@


‪ $‬م‬
‫اﺡاث اﻝ‪ $ D6‬واﻝ‪ %$6  8$6‬واﺡ‪$‬ة !‪%$Y $‬ق اﻝ ‪-‬آ‪-$‬ة ‪ ،‬ﺡ‪ £$‬ی‪ 6$‬ﺝوﻝ‪ $‬اﺡ‪$‬اث‬
‫ ‪P6-‬ام ‪ 1‬ع !  ! اﻝو;ت ز!‪ -
1-‬وی‪ -$
% 6‬وﺡ‪ …$‬ه‪ <=$‬از!‪-$‬ن ی ‪G$,‬‬
‫اﻝ ث وی‪- ! 6‬ﻝ‪ 26‬ویﺥ= ر‪%@6! V‬د ‪. ID‬‬
‫* ‪ 8K‬اﻝ! ‪ 0.2‬ی‪ 6‬إر‪-‬ل ﺡ! ! ‪ $1‬ع ‪ -$ G$, -!$A K FTP‬اﻝ ‪-‬آ‪-$‬ة إﻝ‪($‬‬ ‫‪ً |K‬‬
‫ه=ا اﻝ! ی‪ 6‬ر } ا˜ﺝ‪%‬اء اﻝ ‪-‬ﻝ‪ V% w‬ه=ا اﻝ ‪$‬ث ﻝ‪ $D‬م  ‪-‬ﻝ‪ ، 2$6‬وی‪ ($‬ا˜ﺝ‪%$‬اء‬
‫اﻝ=ي ی‪ D‬م  ‪-‬ﻝ اﺡاث ‪ ، Handler‬وی ‪ 6‬ى اﻝ ‪-‬آ‪ !  ! ( 8‬اﺹ‪-A‬ف‬
‫‪ Classes‬اﻝ‪ -
z ?! }% 86‬اﻝ † و‪  8K -‬اﻝ‪  -! …Y-P6‬اﻝž‪.6‬‬
‫‪ -‬آ*س ‪:Simulator‬‬
‫ی ‪ %$$6‬ه‪=$$‬ا اﻝ‪*$$J‬س ه‪ $$‬اﻝ‪*$$J‬س ا‪ 8$$K 8$$-‬اﻝ ‪-$$‬آ‪ 8‬واﻝ‪=$$‬ي ‪%Y $$‬ی‪$$ 6$$ $$D‬‬
‫اﻝ ‪-‬آ‪-‬ة وی ‪ 6‬ي ( !  ! اﻝ اﺝ
‪-‬ت ‪ interfaces‬اﻝ‪
 86‬ف إﻝ( 
‪ M‬‬
‫اﻝ ‪-‬آ‪-‬ة واﺥ‪-6‬ر اﻝ‪ A‬ع اﻝ‪ ! …-A‬أ‪ 1‬اع اﻝو;ت ‪.‬‬
‫ اﻝ ‪-‬آ‪-‬ة  !ً‪ -‬أ ‪ ! instance G‬ه=ا اﻝ‪*J‬س ی ‪ ! P1 8A‬ه=ا اﻝ‪*J‬س‬
‫و  ذﻝ‪1 N‬اء اﻝ ی ! اﻝوال اﻝ‪A‬رﺝ  ‪-E1˜ 26‬ء اﻝ‪ JE‬و
‪ -
6M‬و‪. -
DA‬‬

‫‪7‬‬
‫أت ‪TCL +‬‬
‫ﻝž‪ TCL (Tool Command Language) $‬وه‪ 8$‬ﻝž‪Script language $‬‬
‫واﻝ‪ G$$|! -$$
|! very high level language -
@A$$, $$ 8$$6‬اﻝž‪-$$‬ت اﺥ‪%$$‬ى اﻝ‪8$$6‬‬
‫‪A‬رج  ‪ S‬ه=ا اﻝ‪ PHP, JavaScript, Python, Perl G|! A,6‬وه‪- 8‬رة ‪$‬‬
‫ﻝž‪P6$$ $$‬م !@‪ %$$‬ﻝ‪ %$$@6‬أوا!‪%‬ه‪ -$$‬وﻝ‪ $$
@! $$ 8$$J‬م ‪ Object Oriented‬ﻝ‪=$$‬ﻝ‪ $$ N‬‬
‫ ‪ -
$$‬وا!‪$$6‬ت إﻝ‪ ($$‬إﺹ‪$$‬ارة أﺥ‪%$$‬ى وه‪Otcl(Object extension of Tcl) 8$$‬‬
‫وآ‪ -
S6‬آ‪ -‬ذآ‪ -ًD -$ %$‬أوا!‪ %$‬اﻝ‪P6$‬م ‪ ،‬إذًا ‪-$K‬وا!‪ %‬واﻝ‪$‬وال اﻝ‪ 8$6‬ی‪$1 6$‬اؤه‪8$K -‬‬
‫اﻝ ‪-‬آ‪ 8‬ه‪ 8‬دوال !‪ Otcl ž  6J‬وه‪ D 8‬م ‪$‬وره‪-$,˜- -‬ل ž‪ C++ $‬و!‪ $‬ﺙ‪ $‬‬
‫‪ =@A‬أوا!‪ %‬اﻝ‪P6‬م‪.‬‬

‫ ف ‪=1‬آ‪ }DK %‬اوا!‪ %‬واﻝ‪% 6‬ات اﻝ‪-$6 1 86‬ج إﻝ


‪ 8$K -$‬ه‪=$‬ا اﻝ‪-$6J‬ب ‪ 8$
K‬ﻝž‪$!% $‬‬
‫!‪= D6‬ا
‪ -‬وه‪: GE 8‬‬

‫اﻝ‪%ž6‬ات‬ ‫‪-‬‬
‫اﻝ‪% 6‬ات اﻝ‪%‬ی‪Q-‬‬ ‫‪-‬‬
‫‪-‬رات اﻝ‪ J 6‬‬ ‫‪-‬‬
‫ﺡ‪ D‬اﻝ‪%J6‬ار وأ‪ 1‬ا
‪-‬‬ ‫‪-‬‬
‫ا˜ﺝ‪%‬اءات ‪.procedure‬‬ ‫‪-‬‬
‫اﻝ‪ ?! G!- 6‬اﻝ@‪-‬ت ‪.‬‬ ‫‪-‬‬

‫أو ً‪ : Y‬اﻝ‪+[A‬ات ‪:‬‬


‫‪%Y‬ی‪%  D‬ی اﻝ‪%ž6‬ات ‪ 8K‬ﻝž ‪ TCL‬ه‪: 8‬‬

‫‪- ?z1‬رة ‪ set‬ﺙ ا اﻝ‪ %ž6‬ﺙ  ذﻝ‪ N$‬اﻝ‪ $D‬اﻝ‪%1 8$6‬ی‪ $‬و‪ 8$K -
$Q‬اﻝ‪ %$ž6‬وه‪8$‬‬
‫إ!‪ J -‬ن ‪ V‬أو ‪4 %ž6! ! V‬ﺥ‪ %‬أو ‪ %  ! V‬ری‪ 8Q-‬أو  ‪; 2$1 ,1‬‬
‫ی ﺝ ‪ 1‬ع ‪-1-‬ت ﻝ‪ %ž6‬وه=< ه‪$! 8$‬ة ﻝž‪-$‬ت ‪$  ; 8$
K scripting languages‬د‬
‫* ‪ integer, float , double, Boolean‬وœ‪ $D G$ <%$‬م‬ ‫‪ 1‬ع !  ﻝ‪ A‬ع اﻝ‪-1-‬ت !‪ً |$‬‬
‫ ﺥ= ‪ 1‬ع اﻝ‪-1-‬ت ﺡ… اﻝ‪ D‬اﻝ‪A‬ة ﻝ‪. %ž6‬‬

‫‪8‬‬
: ‫ل‬-|!
result: a=6 set a 6
result: b=4 set b 4
result: a=4 set a $b
result: a=9 set a [expr 5+$b]
result: a=4.3 set a $b.3

a V %ž6 -AV |‫ﻝ‬-|‫ اﻝ‬8K‫ و‬a,b ‫ی‬%ž6! ‫ی‬%  1-|‫ر اوﻝ( واﻝ‬- ‫ اﻝ‬-A‫ ه‬ ‫*ﺡ‬1
8Q-‫ ری‬%  ?Q -AV 2‫ اﻝ=ي ی‬% 6‫ اﻝ‬8K‫ و‬4 8‫ وه‬b 8K ‫ اﻝ ﺝ دة‬D‫إﻝ( اﻝ‬
2 -AD ‫ وأﻝ‬b V ?Q -AV %  %‫ﺥ‬4 8K‫ و‬a 8K w-A‫? اﻝ‬z‫ وی‬b V (‫ إﻝ‬5 z‫ی‬
. 4.3 D‫ اﻝ‬°,6‫ ﻝ‬0.3 %‫آ‬

: T‫ی‬+‫ات اﻝ‬+A‫ اﻝ‬: ً ‫\ﻥ‬


<%$œ‫ و‬$V‫ب و‬%$Q‫ح و‬%$Y‫? و‬$‫  ! ﺝ‬- ‫ت اﻝ‬- ‫ﻝ‬- ‫م‬-D‫ ﻝ‬Q-‫ی‬%‫ات اﻝ‬% 6‫اﻝ‬
‫ر‬-$$,6‫ اﺥ‬8$$‫ وه‬expr 8$$‫ وه‬TCL $$ž ‫ زة‬$$ ‫ اﻝ‬$$J‫ اﻝ‬$$‫ی‬%  6$$‫ت وی‬-$$ ‫ اﻝ‬$$!
%$$ 6‫ اﻝ‬-‫ه‬$$ $$‫[ ﺙ‬expr expression] $$ D‫ اﻝ‬$$ ?$$Q ‫ و‬expression ‫رة‬-$$ ‫ﻝ‬
. 8Q-‫ی‬%‫اﻝ‬
: ‫ل‬-|!
set b 5
set a [expr 5+$b*2]

‫ ع‬$! 5 8$‫  وه‬-$‫ ﺡ‬$V 2$ ‫ و‬a %$ž6‫ اﻝ‬$‫ ﺙ‬5 $D‫ اﻝ‬2 b %ž6! ‫ی‬% 6 -AV -A
K
.15 ‫وي‬- a V °,‫ و‬2 8K 2 ‫و‬%z!‫ و‬5 8‫ وه‬b %ž6‫ اﻝ‬V -
‫ﻝ‬

:
A‫ رات اﻝ‬: ً ]‫\ﻝ‬
: if ‫ط‬%' ž‫ﺹ‬
if expr script
: ‫ل‬-|!
set x 2
if $x>1 {…}
or if $x>1 {…} elseif $x<-3 {…} else {…}

9
:  ‫ار وأﻥ ا‬+ A‫ اﻝ‬/‫ ﺡ‬: ً  ‫را‬
:for, while, foreach D‫ﺡ‬
: for loop D‫ﺡ‬
for script expr script script : D ‫ﺹž اﻝ‬
: ‫ل‬-|!
for {set i 0} {$i<5} {incr i} {…}
:while loop D‫ﺡ‬
:‫ل‬-|!
while $x > 2 {…}
:foreach loop D‫ﺡ‬
. %‫ﺹ‬-A ‫ أو  ! اﻝ‬K @,! ?! G  D‫ ﺡ‬8‫وه‬
foreach listvar list body :D ‫ﺹž اﻝ‬
: ‫ل‬-|!
set total 0
foreach num {1 2 3 4 5} {
set total [expr $total+$num]
}

. 15 D‫ ﺥ= اﻝ‬total %ž6‫ ه أن اﻝ‬D ‫@= ه=< اﻝ‬A w-AK

: Procedure ‫اءات‬+‫ﺝ‬B‫ ا‬: ً .


. -‫ه‬%œ‫ و‬java, c++ ž‫ ﻝ‬G|! ‫ى‬%‫ت اﺥ‬-ž‫ اﻝ‬8K ‫ اﻝوال‬G|! ‫اءات‬%‫ ا˜ﺝ‬%6 
: 8‫اء ه‬%‫ی ا˜ﺝ‬%  D‫ی‬%Y‫و‬
proc name arguments {body}
: ‫ل‬-|!
: -
A! ‫ح واﺡ‬% ‫ م‬D‫ واﺡة وی‬V GD6‫اء ی‬%‫ی إﺝ‬% 6‫ﻝ‬
proc decr x {
expr $x-1
}
decr 3 ; => x=3
‫رة‬- %‫ أﺥ‬8K -ًAQ D‫ع اﻝ‬-‫رﺝ‬¹ ‫ م‬D‫
ی‬K ‫اء‬%‫ ا˜ﺝ‬8K return ‫رة‬- ‫و; ی ﺝ‬

10
: ‫ت‬c‫ اﻝ‬d 'A‫ اﻝ‬: ً ‫د‬
: 8‫ﻝ‬-6‫ﻝ‬-‫ آ‬2 ! G!- 6‫ ! واﻝ‬°6K D‫ی‬%Y

outputfile [open "testfile" "w"] set


puts $outputfile "this is line 1"
close $outputfile

2‫ ! ا‬°6@ -AV ‫ ﺙ‬outputfile 2‫دي ا‬- %ž6! -AK% ‫ اول‬%‫ اﻝ‬8K
. write ‫ر‬-,6‫ اﺥ‬w  -6J‫ اﻝ‬-A‫ ه‬-‫یه‬%1 86‫*ﺡ اﻝ‬,‫ وه اﻝ‬testfile

11
:NS2 "0 e‫ﻥ‬+  A‫ آ‬/‫ی‬+f
-A!‫ا‬% …6J1 8J‫ ﻝ‬-
6K% ! ! ; 86‫ واﻝ‬tcl ž‫ت ﻝ‬--‫  أ‬-A‫  ﺙ‬D -‫ اﻝ‬G,@‫ اﻝ‬8K
. Otcl ž …6JA -A‫ وه‬NS2 8K

:‫ﻝ‬-6‫ ات اﻝ‬P‫ ن ! اﻝ‬J6‫ ی‬NS2 8K w!-1%


Create the event scheduler (simulator) 
[Setup tracing] 
Create network topology 
[Setup routing] 
[Insert error modules/network dynamics] 
Create connection (transport) 
Create traffic (application) 
Schedule events 
Start the scheduler 

‫رة‬-$ 8$‫ وه‬w!-$1% ‫ أي‬$ -6‫ آ‬8$K $-‫ أ‬S$‫ اس ][ ﻝ‬$V‫ ا‬$ 86‫ ات اﻝ‬P‫ اﻝ‬%6 
. ‫ ه=< ا˜ﺹارة‬8K -
‫ﺡ‬%E ‫} وﻝ‬DK K% ‫ ﻝ‬-
%‫ ذآ‬J‫! وﻝ‬D6! ?Q‫ ! ا‬

Create the event scheduler (simulator) 


‫اء‬%$‫ إﺝ‬6$ 2$‫ ﺥ*ﻝ‬$! ‫=ي‬$‫ واﻝ‬Simulator ‫*س‬$‫ آ‬$! object ‫ء‬-$E1‫رة  إ‬- 8‫وه‬
: ‫ﻝ‬-6‫ اﻝ‬D‫ی‬%‫ﻝ‬- ‫ ن‬J‫ وی‬، ‫ة‬-‫آ‬- ‫ اﻝ‬

set ns [new Simulator]

2$ ! G!- 6‫ ﻝ
ﻝ اﻝ‬J‫
=ا ا; وﻝ‬26 ‫ط‬%6E‫ و; ی‬%ž6!  ‫رة‬- -A‫ ه‬ns £‫ﺡ‬
N$AJK ،…$6J‫ اﻝ‬8$K $|!»‫ ﻝ‬$A‫ﻝ‬- ‫ام‬P6$˜‫ ا‬8$K ?‫ﺉ‬-$E‫ وه اﻝ‬8‫آ‬- ‫ یﺥ= ا اﻝ‬21‫و‬
. 2z@ ‫ أو‬2œ% 2‫ی أي ا‬% 

Create network topology 


.† ‫ اﻝ‬-
z ?! -
 ‫ ور‬topology JE‫ اﻝ‬GJ' ‫ی‬%  6‫ ة ی‬P‫ ه=< اﻝ‬8K

12
Create connection (transport) 

‫ل‬-$$$‫ ا˜ر‬8$$$K 2!‫ا‬P6$$$‫ ا‬6$$$ ‫=ي‬$$$‫ ل اﻝ‬$$$‫و آ‬%‫ء اﻝ‬-$$$E1‫ إ‬6$$$‫ ة ی‬$$$P‫=< اﻝ‬$$$‫ ه‬8$$$K
.Agent (‫ وی‬-
A! ‫ ع‬1 ‫… ي‬,‫ر واﻝ
ف أو اﻝ‬,‫ و ی اﻝ‬TCP,UDP

Create traffic (application) 

G$$$|! $$$ ! GJ$$$E ‫م‬$$$‫ل ﺡ‬-$$$‫ر‬¹ ‫ م‬$$$D‫€ ی‬$$$ $$$‫ی‬%  6$$$‫ ة ی‬$$$P‫=< اﻝ‬$$$‫ ه‬8$$$K 6$$$‫ی‬
.agent ‫ر‬,‫ ﻝ‬A‫ﻝ‬- <‫د‬-A‫ وإ‬FTP,Telnet, CBR, VBR…etc

Schedule events 
$‫اء داﻝ‬$1 6$‫( ی‬$6!‫ و‬8$
6A ($6!‫أ و‬$ ($6! ‫ت‬-D6‫ اﻝ‬8A ‫ ﺝوﻝ اﺡاث ی‬-A‫ ه‬6‫وی‬
:ž,‫ﻝ‬- ‫ ن‬J‫ة و‬-‫آ‬- ‫ء اﻝ‬-
1‫إ‬
$ns at <time> <event>
any legitimate ns/tcl commands <event> :
‫اء‬%‫اء داﻝ أو إﺝ‬1 J‫ وی‬ns/tcl %!‫دي ! أوا‬- %!‫ ن أ‬J‫ ی‬J! -A‫ اﻝ ث ه‬8A ‫ی‬
: |!‫ † ا‬N‫ وإﻝ‬، "" O,A6‫ اﻝ‬86!*  ‫ ن‬J‫ و‬2‫! ﺥ*ﻝ‬
$ns at 0.3 "$ftp start"
$ns at 1.2 "$ftp stop"
$ns at 1.3 "finish"
8 ‫ل اﻝ‬-|‫ اﻝ‬8K -
‫ﺡ‬%' 6 -
-‫ ی‬6 !‫ و‬w!-1%‫ اﻝ‬8K -
6 -6‫ آ‬6‫ ی‬finish ‫ داﻝ‬£‫ﺡ‬
.°Q ! ‫ ه‬-‫ی آ‬-
A‫ اﻝ‬SV‫ اﻝای وو‬SV‫  ی و‬6K ftp € -A

Start the scheduler 


‫ﻝ‬-6‫رة اﻝ‬- ‫ﻝ‬- N‫ة وذﻝ‬-‫آ‬- ‫ ای اﻝ‬
$ns run

.‫ة‬-‫آ‬- ‫ أ  اﻝ‬6‫ ی‬-


A!‫ و‬-‫رة ه‬- ‫و; ی ﺝ‬

13
:   ‫إﻥ!ء ﺵ  ور‬
$D GJ$' ($ ‫ة‬$
‫ اﺝ‬$‫ی‬%  6$‫ ی‬8‫آ‬-$ ‫ اﻝ‬8$K‫ة و‬$
‫ أﺝ‬$! ‫ ن‬$J6 -
6  JE‫اﻝ‬
router ‫ز‬-$
‫ة وﺝ‬$
‫ أﺝ‬$‫ ﺙ*ﺙ‬$1 J! J$' $‫ی‬%  -1‫ل إذا أرد‬-|‫ اﻝ‬G ( K ، node
: 8‫ﻝ‬-6‫ﻝ‬-‫ آ‬-
6 -6J ‫ م‬D1
set pc1 [$ns node]
set pc2 [$ns node]
set pc3 [$ns node]
set router [$ns node]

pc1 %$ž6‫=ا اﻝ‬$‫ ( أن ه‬%@‫ اﻝ‬%P ‫رة  آ !  زة‬- 8‫ ه‬node ‫ آ‬£‫ﺡ‬
$‫ی‬% 6 -$AV ($‫ ة اوﻝ‬$P‫ اﻝ‬8$K  A$K $ns ‫رة‬-$ -$!‫ أ‬، node A$,‫ ع اﻝ‬$1 $! $‫ه‬
G$$‫ ى آ‬$$6 ‫=ي ی‬$$‫ اﻝ‬Simulator ‫*س‬$$J‫ اﻝ‬$$! object $$ ‫رة‬-$$ $$‫ وه‬ns 2$$‫ ا‬%$$ž6!
 N‫ وذﻝ‬2A! -A‫ أو اﻝاﻝ اﻝ‬A,‫ر اﻝ‬-6‫ﺥ‬- ‫ م‬DAK ‫ة‬-‫آ‬- ‫  اﻝ‬D 6‫ اﻝ‬G‫ﺹ‬-@6‫اﻝ‬
. ‫ آ*س أو داﻝ‬-!¹K $ns class/method €‫ی‬%Y
$‫م اﻝاﻝ‬P6$1 -$
 % ‫م‬-$DK ، -$
 % $D1 ‫ ﻝ‬J‫ی اﺝ
ة ﻝ‬% 6 }DK ‫( ا‹ن‬6‫ ﺡ‬-AV
‫ز‬-$
‫ز اول إﻝ( اﻝ‬-
‫ را } ! اﻝ‬6
‫ وﺝ د را } ! اﻝ‬8A  86‫ واﻝ‬duplex-link
$‫م اﻝاﻝ‬P6$1 }DK ‫ی را } واﺡ‬%1 -A‫ إذا آ‬، ‫ز اول‬-
‫ إﻝ( اﻝ‬81-|‫ز اﻝ‬-
‫ و! اﻝ‬81-|‫اﻝ‬
$$ A‫( اﻝ‬$$ 26ž$$,K $$ -6J‫ اﻝ‬$$@‫ آ‬-$$!‫ أ‬، }$$DK $$‫} واﺡ‬$$ ‫ را‬8$$A  8$$‫ وه‬simplex-link
: 8‫ﻝ‬-6‫اﻝ‬
$ns duplex-link $n0 $n1 <bandwidth> <delay> <queue>
‫ ه=ا‬-A‫ﻝ‬-|! 8K‫و‬
$ns duplex-link $pc1 $router 5mb 2ms DropTail
$ns duplex-link $pc2 $router 5mb 2ms DropTail
$ns duplex-link $pc3 $router 5mb 2ms DropTail
%‫ﺥ‬$6‫ار اﻝ‬D!‫ و‬GV-A‫   اﻝ‬8‫ وه‬parameter !  ! GD6 duplex-link ‫داﻝ‬
‫ ؟‬Queue ‫ ه ه=ا‬-! ، Queue ‫ ع‬1‫ و‬GV-A‫ ه=ا اﻝ‬8K
DropTail, RED, CBQ G$|! ‫ت‬-$!‫ ارز‬P‫ اﻝ‬$! $ ! $ ‫رة‬-$ ‫ ه‬Queue
‫ل‬-$! ‫ل‬-$‫ اﻝ‬Á$‫ت وﻝ‬-$!‫ ارز‬P‫ ه=< اﻝ‬G  ‫ آ‬K% ‫ ﻝ‬S1%61˜‫ﺝ ع إﻝ( ا‬%‫ اﻝ‬J‫ی‬
Queue ‫*ء‬6$!‫ ا‬8$A  -$
 8K 86‫ واﻝ‬DropTail 8‫} وه‬DK ‫ واﺡة‬%‫=آ‬1 J‫ ﻝ‬-
,@
GJ$$E -
$Q 1 -ًA$$‫ ﺡ‬، %$$‫ ا‹ﺥ‬$$! ‫ أو‬G‫=ی‬$$‫ اﻝ‬$$! ‫م‬$$ ‫=ف اﻝ‬$$ $$!‫ ارز‬P‫=< اﻝ‬$$‫ م ه‬$$D6K
:%‫ﺥ‬4

14
‫‪Queue‬‬

‫‪Drop packet‬‬

‫اﻝ‪ ? %‬ه ‪-‬رة  ﺡ! ‪ queue -A


K‬إذا ا!‪ »6$‬ی‪ 6$‬اﻝ ‪=$‬ف !‪ $‬اﻝ‪ $P‬أو !‪ $‬اﻝ‪=$‬ی‪G‬‬
‫ﻝ=ﻝ‪ S N‬ه=< اﻝ‪ P‬ارز!
=ا ا; ‪$K ،‬ي ‪$D‬ة ی‪ $J‬ن
‪¹$K queue -$‬ذا آ‪ S$1-‬ه‪-$A‬ك‬
‫* ‪ 8$$K‬اﻝ‪ queue $$,‬ﻝ‪ 8$$J‬ی‪ 6$$‬ﺥ!‪ $$‬اﻝ !‪$$‬‬
‫أآ|‪ $$! %$$‬ﺡ!‪ $$‬وﺹ‪ S$$‬ی‪ 6$$‬و‪ً $$V -
$$Q‬‬
‫اﻝ ‪-‬ﻝ ﺙ  ذﻝ‪ N‬ی‪ 6‬أﺥ= اﻝ م ! ا!‪-‬م واﻝ‪ 86‬ه‪- 8‬ﻝ ن ا د وإر‪-‬ﻝ
‪.-‬‬
‫وی‪ J‬ر 
‪% -‬ی‪ D‬أﺥ‪%‬ى ‪P6$-‬ام داﻝ‪ simplex-link $‬واﻝ‪ J6$ 8$6‬ن ‪-$ 6‬رات‬
‫ ل ‪ 21 3‬را } ‪ 8K‬ا˜‪-‬ه‪.‬‬

‫‪h‬ﺡ‪g‬ت ه‪:‬‬
‫‪ -‬ﻝž‪ tcl $$$‬ﺡ‪ $$$-‬ﺝ‪ً$$$‬ا ‪-‬ﻝ‪ $$$A‬ﻝ@‪%‬اœ‪-$$$‬ت ی ‪ 8$$$A‬أ‪; 2$$$1‬زم ی‪ $$$J‬ن !‪ $$$ -$$$‬آ‪G$$$‬‬
‫‪ parameter‬وا‹ﺥ‪%$$$K K-$$$! %$$$‬اغ واﺡ‪$$$‬ة ‪ }$$$DK‬وإ; ‪ 8 $$$K‬ﺥ‪=$$$@A $$$A $$$‬‬
‫اﻝ‪.w!-1%‬‬
‫‪- -‬ﻝ‪-$$$ $$$A‬ء اﻝ‪ P‬ارز!‪-$$$‬ت ی‪ …$$$‬أن ‪ $$$, …$$$6J‬رة ﺹ‪ $$$1 -$$$A
K   $$$‬ع‬
‫‪ DropTail‬ی‪ …$$‬أن ی‪ <=$$
…$$6J‬اﻝ‪%‬ی‪ $$D‬وإ; أی‪ 8 $$ -ً$ z‬ﺥ‪ 8$$K $$‬اﻝ‪=$$@A6‬‬
‫‪-K‬ﻝ ‪%‬وف اﻝ‪%J‬ة ﻝ‪ S‬آ‪-‬ﻝ‪%ž,‬ة ی ‪.case sensitive (A‬‬
‫‪ -‬أی‪ -ًz‬ی… آ‪  -6‬اﻝ‪ !%‬ز ‪ ?! ms, mb‬اﻝ‪. D‬‬

‫‪15‬‬
:agent and application ‫ت‬ci‫ت واﻝ‬/A‫ی اﻝ‬+
‫ م‬$D 8$J‫ت ﻝ‬-$D6‫ † اﻝ‬GžE ‫ ا‹ن‬J‫ ! اﻝ‬°‫ أﺹ‬-
 ‫ ور‬JE‫ ی اﻝ‬J 
‫=ي‬$$$‫ اﻝ‬$$$z‫ اﻝ‬$$$‫ی‬%  : ‫  أو‬$$$‫( ﺥ‬$$$ 6$$$‫ ی‬N‫=ﻝ‬$$$ ‫م‬-$$$D‫م وﻝ‬$$$ ‫ل اﻝ‬-$$$‫ر‬¹
‫أ‬$AK TCP,UDP -$!‫ل إ‬-$‫ ا˜ر‬$D‫ی‬%Y G$|‫ ی‬2$1‫( أ‬$‫ إﻝ‬K-Q˜- €6‫ اﻝ‬z6
.…,!‫ر و‬,! ( ‫ ي‬6 ‫ واﻝ=ي ی‬agent z‫ی اﻝ‬% 6

: 8‹- ‫ م‬D1 TCP agent ‫ی‬% 6‫ﻝ‬


set tcp [new Agent/TCP]

-ًD -$$ -$$1%‫ ذآ‬-$$‫ آ‬8$$6‫ واﻝ‬Agent/TCP ‫ ع‬$$A‫ اﻝ‬$$! tcp %$$ž6! -$$AK% ‫ ة‬$$P‫=< اﻝ‬$$‫ ه‬8$$K
. ‫ر‬,‫ﻝ‬- 21‫ل و‬-‫ ا˜ر‬2D‫ی‬%Y  6‫و آ ل اﻝ=ي ی‬%‫ل أو اﻝ‬-‫ ا˜ر‬D‫ی‬%Y

set tcpsink [new Agent/TCPSink]

$$‫ ه‬TCPSink …$$,‫ﻝ‬-K tcpsink $$‫ وه‬tcp ‫ر‬$$,‫ ﻝ‬$$A‫ﻝ‬- …$$,‫ اﻝ‬$$‫ی‬% 6 ‫ م‬$$D1
. TCP ‫} ـ‬DK ‫ص‬-‫ﺥ‬
$ns attach-agent $n0 $tcp

$ -‫ده‬-A$‫ إ‬6$K ، A ! ‫ة‬D ‫ ﻝ‬-‫ده‬-A¹ D1 ‫… وﻝ‬,‫ر واﻝ‬,‫ی اﻝ‬% 6 -AV -A‫إﻝ( ه‬
($‫ر إﻝ‬$,‫د اﻝ‬-A$- -$AV -$A‫ وه‬،‫ر‬$,‫ة واﻝ‬D ‫ اﻝ‬GD6‫ و‬attach-agent ‫ی€ اﻝاﻝ‬%Y
. n0 ‫ة‬D ‫اﻝ‬
$ns attach-agent $n1 $tcpsink
.n1 ‫ة‬D ‫… ﻝ‬,‫د اﻝ‬-A- -AV

$ns connect $tcp $tcpsink

‫در‬-$$,‫ اﻝ‬$$ €$$‫ی‬%@6‫ اﻝ‬6$$‫ ی‬8$$J‫… ﻝ‬$$,!‫ر و‬$$,! G$$‫ آ‬$$ ‫ل‬-$$,‫ ا‬$  ‫اء‬%$$‫… إﺝ‬$$‫ی‬
connect $‫€ داﻝ‬$‫ی‬%Y $ N$‫ † وذﻝ‬$‫ اﻝ‬-
$z $ -$‫ه‬6‫ وﻝ‬J$E‫ اﻝ‬8$K ‫اﻝ ﺝ دة‬
. …,‫ر اﻝ‬,‫ } اﻝ‬%6‫ﻝ‬
set ftp [new Application/FTP]
$ftp attach-agent $tcp
-$$A‫ﻝ‬-|! 8$$K‫ و‬، ‫م‬$ ‫ل اﻝ‬-$$‫ر‬¹ ‫ م‬$$D‫ ﻝ‬TCP ($$‫ إﻝ‬$$ ! €$$ ‫د‬-A$$‫ ا‬6$$‫ ة ی‬$$P‫=< اﻝ‬$$‫ ه‬8$$K
.attach-agent ‫ی€ داﻝ‬%Y  tcp ‫ر‬,‫د< إﻝ( اﻝ‬-A¹ -AV‫ و‬FTP € -AK%

16
: 8-‫ ات آ‬P‫ اﻝ‬Á@A ‫ م‬D1 UDP agent ‫ی‬% 6‫وﻝ‬
set udp [new Agent/UDP]
set null [new Agent/Null]
$ns attach-agent $n0 $udp
$ns attach-agent $n1 $null
$ns connect $udp $null
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp

?$! -A TCPSink …,‫م اﻝ‬P6‫ ا‬TCP 8@K TCP,UDP ! GJ‫… ﻝ‬,‫ اﻝ‬ ‫*ﺡ‬1
‫ذا؟‬-‫ ﻝ‬Null …,‫م اﻝ‬P6-K UDP

...  2A  -‫ف ا˜ﺝ‬%  ‫ال ؟ أﻝ‬Ä

; !!‫ذا‬-$! .‫ت‬-J$E‫ اﻝ‬8$K Connection oriented, Connectionless ‫ م‬$


@! ‫ه=ا ه‬
Connection oriented ‫ م‬$
@! Y-$ ‫ م‬$
@‫=ا اﻝ‬$‫ ه‬N$‫ح ﻝ‬%$' -ًA$‫ذا! ﺡ‬-‫ ﻝ‬2K% 
‫د‬%$‫ اﻝ‬%$‫ف ا‹ﺥ‬%$‫… ( اﻝ‬K %‫ﺥ‬4 ‫ف‬%Y (‫ف إﻝ‬%Y ! !‫ل ﺡ‬-‫ إذا  إر‬21‫ أ‬8A ‫ی‬
$! ‫ل اﻝ‬-$‫ر‬¹ ‫ م‬$D‫ ی‬$‫ ﺙ‬S$‫ وﺹ‬$V S$‫ أر‬8$6‫ اﻝ‬$! ‫ أن اﻝ‬$! $‫آ‬Ä $!‫ل ﺡ‬-‫وإر‬
‫دي أو‬-$$ ‫ ن اﻝ‬$$@6‫ م اﻝ‬$$
@‫=ا اﻝ‬$$
‫ل ﻝ‬-$$|! }$$ ‫ أ‬TCP 2$$ G$$ ‫ ی‬-$$! ‫=ا‬$$‫ وه‬,...‫=ا‬$$J‫ وه‬$$1-|‫اﻝ‬
. G‫ی‬- ‫اﻝ‬
‫ م‬$$$D‫ف اول ی‬%$$$‫ أن اﻝ‬8$$$A ‫ وی‬UDP 2!P6$$$‫ ی‬$$$
K Connectionless ‫ م‬$$$
@! -$$$!‫أ‬
. 81‫و‬%6J‫ی ا˜ﻝ‬%‫ اﻝ‬2‫ل ﻝ‬-|! } ‫د وأ‬%‫ اﻝ‬%‫ف ا‹ﺥ‬%‫ ( اﻝ‬Á‫ل ﺡ! وﻝ‬-‫ر‬¹
: V (‫ إﻝ‬DA 8‫آ‬- ‫ اﻝ‬8K ‫ت اﻝ ﺝ دة‬-D6‫اﻝ‬

Simulation application -
6$‫ ی‬8$6‫ت اﻝ‬-$D6‫ اﻝ‬8$‫ وه‬FTP, Telnet, VoiceOverIP, Audio,…etc G$|!
. DD ‫ اﻝ‬JE‫ اﻝ‬8K -
!‫ا‬P6‫ا‬

Traffic generator -
‫ ;  ﺝ‬86‫ت اﻝ‬-D6‫ اﻝ‬8‫ وه‬CBR, VBR, Exponential, Pareto,…etc G|!
-‫ه‬$‫  ی‬6$‫ ی‬$A ! $D‫ی‬% <‫ؤ‬-$E1‫ إ‬6$‫ ی‬traffic $‫آ‬%‫رة ﺡ‬-$ 8$‫ ه‬$J‫ وﻝ‬$DD ‫ اﻝ‬8K
G$$$|! ‫ة‬-$$$‫آ‬- ‫ل اﻝ‬-$$$! 8$$$K -
!‫ا‬P6$$$‫ ا‬6$$$‫ ی‬8$$$6‫ت اﻝ‬-$$$ ‫ زی‬6‫ اﻝ‬$$$! ‫د‬$$$ -$$$
$$$‫وی ﺝ‬
. -‫ه‬%œ‫ و‬Exponential

17
: " ‫]ل‬
FTP ‫م‬$$‫ل ﺡ‬-$$‫ر‬¹ ‫ز اول‬-$$
‫ م اﻝ‬$$D‫زی ی‬-$$
‫ ﺝ‬$$! $$1 J! J$$' $$ J6$$‫ ی‬-$$A‫ﻝ‬-|!
. ‫ز اول‬-
‫ ﻝ‬CBR ‫ل ﺡم‬-‫ر‬¹ %‫ز ا‹ﺥ‬-
‫ م اﻝ‬D‫ وی‬%‫ز ا‹ﺥ‬-
‫ﻝ‬

:*
ً !-‫ آ‬w!-1%‫اﻝ‬
set ns [new Simulator]
set f [open out.nam w]
$ns namtrace-all $f
proc finish {} {
global ns f
$ns flush-trace
close $f
# run animation
puts "running nam..."
exec nam out.nam &
exit 0
}
set n0 [$ns node]
set n1 [$ns node]
$ns duplex-link $n0 $n1 5mb 2ms DropTail
set tcp [new Agent/TCP]
set tcpsink [new Agent/TCPSink]
$ns attach-agent $n0 $tcp
$ns attach-agent $n1 $tcpsink
$ns connect $tcp $tcpsink
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ns at 0.1 "$ftp start"
$ns at 1.5 "$ftp stop"
set udp [new Agent/UDP]
$ns attach-agent $n1 $udp

18
set null [new Agent/Null]
$ns attach-agent $n0 $null
$ns connect $udp $null
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$ns at 0.0 “$cbr start”
$ns at 1.5 “$cbr stop”
$ns at 1.5 “finish”
$ns run

set ns [new Simulator]


set f [open out.nam w]
$ns namtrace-all $f

.Simulator ‫ ! آ*س‬object ‫ی‬% 6 -AV ‫ اول‬%‫اﻝ‬


‫=ي‬$‫ اﻝ‬Nam w!-$1% ‫ص‬-$‫اد ﺥ‬$6!‫ ا‬$‫ وه‬out.nam 2$‫ ا‬$! °6@ -AV 81-|‫ اﻝ‬%‫اﻝ‬
. -ًD‫ ;ﺡ‬2‫ح إﻝ‬%6A 8! ‫ ر‬GJ' 8K JE‫ض اﻝ‬% 
‫ة‬-$‫آ‬- ‫اث اﻝ‬$‫? أﺡ‬$‫? ﺝ‬$Q ‫ م‬D 86‫ واﻝ‬namtrace-all ‫ داﻝ‬-A!P6‫ ا‬£‫ﻝ‬-|‫ اﻝ‬%‫اﻝ‬
.-
Q% ‫ م‬D‫ ﻝ‬Nam w!-1% -
! G!- 6‫ ﺹž ی‬8K -
-‫آ‬- ! S 86‫اﻝ‬

proc finish {} {
global ns f
$ns flush-trace
close $f
# run animation
puts "running nam..."
exec nam out.nam &
exit 0
}

‫ت‬-$@‫œ*ق اﻝ‬¹$ ‫ م‬$D‫=ي ی‬$‫ة واﻝ‬-$‫آ‬- ‫ اﻝ‬$ $‫ی‬-


1 8$K <‫اؤ‬$1 6$‫=ي ی‬$‫اء اﻝ‬%‫ه=ا ه ا˜ﺝ‬
. ‫وج‬%P‫ة واﻝ‬%‫ اﻝ=اآ‬ÉA‫ و‬-
6K  86‫اﻝ‬

19
‫ ‪%‬ی ا˜ﺝ‪%‬اء ی‪ J‬ن ‪-‬رة ‪ proc‬ﺙ ا ا˜ﺝ‪%‬اء و < اﻝ‪%ž6‬ات اﻝ‪ 86‬ی‪ -
D6‬وه‪-$A‬‬
‫; ی ﺝ ‪.‬‬
‫اﻝ‪ %‬اول ! ا˜ﺝ‪%‬اء ی ﺝ ‪-‬رة ‪ ، global‬ه‪ -A‬ی‪ 6$‬ا‪P6$‬ام ه‪ <=$‬اﻝ ‪-$‬رة ‪8$K 2$1‬‬
‫ﻝž ‪ tcl‬اﻝ‪%ž6‬ات اﻝ ﺝ دة ﺥ‪-‬رج ا˜ﺝ‪%$‬اء ; ی‪ $J‬رؤی‪ -$
6‬داﺥ‪ G$‬ا˜ﺝ‪%$‬اء إ; ‪¹‬ﺥ‪-$‬ر‬
‫ا˜ﺝ‪%‬اء ن ه=ا اﻝ‪ %ž6‬ه !‪% ! %ž6‬ف ﺥ‪-‬رﺝ‪ 2‬وی‪ 6‬ذﻝ‪%Y  N‬ی€ ‪-‬رة ‪.global‬‬
‫اﻝ‪ %‬اﻝ|‪- : 81-‬رة ‪ $ns flush-trace‬وه‪ D 8‬م ‪%@6‬ی– اﻝ=اآ‪%‬ة ! اﻝ‪%$ž6‬ات اﻝ‪8$6‬‬
‫ ا‪P6‬ا!
‪ 8K -‬اﻝ ‪-‬آ‪-‬ة ﻝ‪% 6‬ی‪ %‬اﻝ‪-‬ﺡ اﻝ‪.!P6‬‬
‫اﻝ‪ %‬اﻝ‪%‬ا ? ‪-‬رة  داﻝ إœ*ق اﻝ اﻝ=ي  ‪ 8K 2 6K‬ای اﻝ‪.w!-1%‬‬
‫اﻝ‪ %‬اﻝ‪- Á!-P‬رة ‪- -Y‬رة ( اﻝ‪P6- '-E‬ام داﻝ ‪. puts‬‬
‫اﻝ‪ %‬اﻝ‪-‬دس ‪-‬رة  داﻝ ‪ D‬م ‪ =@A6‬ا!‪ %‬اﻝ=ي ه‪ shell 8K -‬أو ‪ terminal‬أو‬
‫‪ ،Dos‬وه‪ nam w!-$$1% =$$@A6 -$$AV -$$A‬و!‪%$$‬ر اﻝ‪ $$‬اﻝ‪=$$‬ي ‪ S$$‬اﻝ‪ 2$$K $$ -6J‬وه‪ $$‬‬
‫‪.out.nam‬‬
‫!‪ ! (D -‬اﻝ‪%'  w!-1%‬ﺡ‪- 2‬ﻝ‪. -ًD - G,@6‬‬

‫‪h‬ﺡ‪g‬ت ه‪:‬‬
‫‪ -‬اﻝ ‪%‬وف اﻝ‪%J‬ة ﻝ‪ S‬آ‪-‬ﻝ ‪%‬وف اﻝ‪%ž,‬ة ‪. case sensitive‬‬
‫‪-J! -‬ن ا˜ﺝ‪%‬اء ‪ ; finish‬ی‪%6E‬ط ‪ 8K‬ای اﻝ‪ w!-1%‬وی‪ J‬آ‪ 8K 2 -6‬أي !‪-J‬ن ن‬
‫اﻝول ی‪ D‬م ‪ …%6‬اﺡاث ز!‪ -ًA‬ﺙ ‪=@A‬ه‪.-‬‬

‫‪20‬‬
:3(A‫ اﻝ‬NS2 Formatting
: ‫ﺡ‬-1 ! €A6‫ ث  اﻝ‬6A
Color -
Node manipulation -
Topology layout -
Misc -
:Color ‫ اﻝ ان‬: ;ً ‫أو‬
‫ أو ﻝ ن اﻝ م‬link } ‫ أو ﻝ ن را‬node ‫ة‬D ‫ ن ﻝ ن‬J‫ أن ی‬-!‫
إ‬K ‫د اﻝ ن‬-A‫إ‬
: packets
: node ‫ة‬D ‫د اﻝ ن ﻝ‬-A‫إ‬
$node color red
:link } ‫ا‬%‫د اﻝ ن ﻝ‬-A‫إ‬
$ns duplex-link-op $n0 $n1 color green
op ‫رة‬- K-Q¹ ، -ًD - -A@‫ أ‬-‫ آ‬D ‫م ﻝ  ر } اﻝ‬P6 duplex-link ‫رة‬-
.label ‫ ان‬A ‫ اﻝ ن واﻝ‬G|! options ‫رات‬-‫ ﺥ‬8A  86‫واﻝ‬
:packets ‫د اﻝ ن ﻝ م‬-A‫إ‬
:8‹-‫ آ‬w!-1%‫ ای اﻝ‬8K ‫م‬P66 86‫ی اﻝ ان اﻝ‬%  ; ً ‫ أو‬6‫ی‬
$ns color 1 red
$ns color 2 green
$ns color 3 yellow
-!‫ أ‬، V‫? أي ر‬Q‫ و‬JK 6 -‫ ﺙ‬%œ 8‫ وه‬1،2،3 G|! -ً!-V‫ء اﻝ ان أر‬-- ‫ م‬D1
‫ وه‬fid_ %ž6‫ی€ اﻝ‬%Y  N‫ وذﻝ‬agent z‫د< ﻝ‬-A‫ ا‬6K ‫د‬-A;‫ آ@ ا‬
: 8‫ﻝ‬-6‫ اﻝ‬%!‫ی€ ا‬%Y  N‫ وذﻝ‬flow id ‫ر‬-,6‫اﺥ‬
$tcp set fid_ 2
$udp set fid_ 3
‫ أول‬2@‫ی‬%   ‫ اﻝ=ي‬2 V‫ اﻝ ن ر‬tcp z‫ﻝ‬- D 6‫د ﻝ ن اﻝ م اﻝ‬-A‫ ا‬6‫ ی‬-A‫ه‬
.green %z‫ ه اﻝ ن اﺥ‬2 V‫ ر‬-A‫ﻝ‬-|! 8K‫ و‬w!-1%‫اﻝ‬

:Node Manipulation : -ً1-‫ﺙ‬


GJE‫ اﻝ‬%ž 1-|‫( واﻝ‬label) ;‫ ا‬%ž (‫ اوﻝ‬6 ‫ ن‬J ‫ة‬D ‫ﻝ اﻝ‬- !
pc, router *
ً |! nam w!-1% 8K ‫ة‬D ‫( اﻝ‬A ! °Q 6‫ ا; ه ﻝ‬%ž ، (shape)
 6P‫ ی‬router GJ' * ً |K -
‫ﻝ‬-J' D ‫ اﻝ‬6‫ ﻝ‬GJE‫ ﻝ‬A‫ﻝ‬- %!‫ ا‬N‫وآ=ﻝ‬
: 8-‫ آ‬-
6 -6‫ آ‬D‫ی‬%Y‫=ا و‬J‫ وه‬host (pc) GJ'
$node label “server”

21
$node2 label “host1”
} ‫ا‬%‫*   اﻝ‬
ً |! °Q 6‫ا } ﻝ‬%‫ ق اﻝ‬K label °Q  ‫رة أو‬- ?Q‫ و‬J‫ ی‬-ًz‫أی‬
: 8‫ﻝ‬-6‫ اﻝ‬%!- N‫ ن ذﻝ‬J‫* وی‬
ً |! 2 1 ‫ أو‬26%‫و‬
$ns duplex-link-op $node $nod2 label “Ethernet link”
: circle, box, hexagon ‫ ن‬J‫ أن ی‬-!‫
إ‬K shape GJE‫ اﻝ‬-!‫أ‬
$node shape box
$node2 shape circle
:Topology layout : -ً|‫ﻝ‬-‫ﺙ‬
N‫ ن ذﻝ‬J‫ وی‬nam w!-1% 8K JE‫ اﻝ‬GJ' ÉA 8A ‫ ی‬layout °, ‫ د‬,D‫اﻝ‬
: 8‹-‫آ‬
$ns duplex-link-op $n0 $n1 orient left
$ns duplex-link-op $n0 $n1 orient right-up
$ns duplex-link-op $n0 $n1 orient down
$ns duplex-link-op $n0 $n1 orient 60deg

‫ام‬P6- n0 ‫ة‬D ‫ ﻝ‬A‫ﻝ‬- n1 ‫ة‬D ‫ اﻝ‬2 ?Q 6 ‫ن اﻝ=ي‬-J‫? أو اﻝ‬Q 6‫  ی اﻝ‬6‫ی‬
up, down, right, left, right-up, ) ‫ت‬-‫ه‬-;‫? ا‬Q‫ و‬J‫ وی‬orient ‫اﻝاﻝ‬
6K layout ‫( وإذا ﻝ  ی أي‬right-down, left-up, left-down, 60deg)
. 8Q‫ا‬%6K˜‫? ا‬Q ‫ ی اﻝ‬

:Misc : -ً ‫را‬
:-‫ وه‬-
A! A‫ح إﺙ‬%EA €A6‫ اﻝ‬8K ‫م‬P6 ‫رة † اﻝوال‬- 8‫وه‬
trace-annotate , set-animation-rate
‫ت‬-D 6‫ † اﻝ‬K-Q‫ وإ‬°Q 6‫م ﻝ‬P6 ‫ داﻝ‬8‫ وه‬trace-annotate (‫اﻝاﻝ اوﻝ‬
: 8‹-‫ آ‬-
6ž‫@= وﺹ‬A6‫ء اﻝ‬-A‫ أﺙ‬nam w!-1% 8K
$ns at 3.5 “$ns trace-annotate \” tcp start send packet\””
tcp start send ‫رة‬- - ‫ م ه=< اﻝاﻝ‬D6 3.5 !‫ اﻝ‬8K N‫ ذﻝ‬8A ‫وی‬
.nam w!-1% ! 8@‫ اﻝء اﻝ‬8K packet
% ‫ن‬-,D1 ‫دة أو‬-‫م ﻝی‬P6 8‫ وه‬set-animation-rate 8‫ وه‬1-|‫اﻝاﻝ اﻝ‬
: 8‫ﻝ‬-6‫ﻝ‬-‫ آ‬-
6ž‫ وﺹ‬nam w!-1% 8K ‫ض‬% ‫اﻝ‬
$ns at 1.0 “$ns set-animation-rate 0.1ms”

22
‫ا‪zA‬ام ‪+‬ﻥ‪:Network Animator(NAM) e‬‬
‫ی‪ 6‬ا‪P6‬ام ه=ا اﻝ‪ w!-1%‬ﻝ ‪%‬ض !  آ‪ A ! ž, 26 -6‬ﺥ‪-‬ﺹ ‪ 2‬ﻝ‪ D‬م ﻝ ‪%‬ض‬
‫‪-61‬ﺉ‪ w‬اﻝ ‪-‬آ‪-‬ة ‪ ,‬رة ﺡ‪%‬آ ‪ £‬ی‪ 6‬رؤی اﻝ‪-6A‬ﺉ‪ , w‬رة !‪% 6‬آ وه=ا ی‪-‬‬
‫( اﻝ@
‪.‬‬
‫; !   ﻝž ‪ TCL‬ﻝ‪ -6J‬‬‫ی‪ J‬أی‪%Y  ً-z‬ی€ ه=ا اﻝ‪ w!-1%‬إ‪-E1‬ء '‪ً  J‬‬
‫اﻝ‪ NS2 8K w!-1%‬و'‪ GJ‬اﻝ‪ w!-1%‬ی‪ 8K %
É‬اﻝ‪ GJE‬اﻝ‪-6‬ﻝ‪: 8‬‬

‫وه=< ﺹ رة أﺥ‪%‬ى ﻝ ‪%‬ض ‪-61‬ﺉ‪- ! w‬آ‪-‬ة ‪ GJE‬ر !‪% 6! 8‬ك ‪:‬‬

‫‪23‬‬
‫وه=< ﺹ رة أﺥ‪%‬ى ﻝ‪ w!-1%‬واﻝ‪ °Q  86‬آ@ إ‪-E1‬ء '‪%Y  J‬ی‪ 2D‬ون   ‬
‫ﻝž ‪:TCL‬‬

‫ﺡ‪ -ًA‬ا‹ن ‪%6A‬ق إﻝ(  ‪%‬ی ازرار اﻝ ﺝ دة ‪ 8K‬اﻝ‪ 8K w!-1%‬آ* اﻝ اﺝ‪A 6‬أ‬
‫ ‪-‬ﻝ اﺝ
 اوﻝ( ‪:‬‬

‫‪24‬‬
‫اﻝ ن ا€ﺡ‪:+‬‬
‫اﻝء اﻝ د ‪-Y¹‬ر أﺡ‪ %‬ی ‪ 6‬ى ( أزرار ﻝ‪%œ S‬ی ‪%1  AK -A‬اه‪ 8K -‬أي‬
‫!‪ G‬أو !‪ GžE‬أﺹ ات وه‪ -A‬اﻝ‪ ,D‬د
‪ GžE -‬اﻝ ‪-‬آ‪-‬ة ‪ -AV -JK‬أ‪ 21‬ی‪ D‬م ‪%‬ض‬
‫اﻝ‪ GJE JE‬ر !‪ 8‬وی‪ J‬أن ‪ D1‬ل ‪K K‬ر اﻝ‪ GžE6‬ی‪ GžE 6‬اﻝ ‪-‬آ‪-‬ة و ر‬
‫ا˜ی‪-D‬ف ی‪ 6‬إی‪-D‬ف اﻝ ‪-‬آ‪-‬ة وآ=ﻝ‪ N‬ا!‪- %‬ﻝ‪ A‬ﻝ‪ D‬ازرار واﻝ‪D 8A  86‬م إﻝ(‬
‫اﻝای أو اﻝ‪-
A‬ی وی ﺝ زر ‪- ! GžE‬آ‪ Á‬ﻝ*‪ <-‬ﺡ‪ £‬ی‪ D‬م ‪%‬ض اﻝ@ أ‪ K ,V‬‬
‫اﻝ ‪-‬آ‪-‬ة ! ‪-
1‬ی‪ 26‬إﻝ( ای‪.26‬‬

‫اﻝ ن ا€‪:+i.‬‬
‫اﻝء اﻝ د ‪-‬ﻝ ن اﺥ‪ %z‬ی ‪ 6‬ى ( ﺥ أزرار ! ‪ K‬ق إﻝ(  ‪: S‬‬
‫أول زری و'‪ (
 GJ' -
J‬وأ@‪ G‬وی‪-! D‬ن ‪ %J6‬و‪ %ž,‬ﺡ ‪=K-1‬ة‬
‫اﻝ ‪%‬ض اﻝ‪ -
86‬اﻝ‪.JE‬‬
‫أ!‪ -‬اﻝر اﻝ|‪-‬ﻝ‪ £‬واﻝ=ي !‪ 6J‬ب ‪ 2‬آ ‪ Edit‬وی‪ 6‬ا‪- 6‬ﻝ‪ 8K 2‬ﺡ‪-‬ﻝ  ی‪GJ' G‬‬
‫اﻝ ‪%‬ض ی ‪ (A‬إ‪-‬دة ‪ …%‬اﻝ ‪ %ž6 D‬أ!‪-‬آ‪ -
A‬وذﻝ‪- N‬ﻝ‪ -
 }žz‬واﻝ‪% 6‬ی‪ N‬إﻝ(‬
‫أي !‪-J‬ن‪.‬‬
‫أﺥ‪ %‬زری ی‪-! D‬ن ‪ %J6‬أو ‪ %ž,‬ﺡ اﻝ ‪.D‬‬
‫اﻝ ن ا€زرق‪:‬‬
‫ه=ا اﻝء ی‪P6‬م ˜‪-
Í‬ر اﻝ‪-D 6‬ت ( '‪ GJ‬اﻝ‪%P‬ﺝ‪-‬ت ‪ 8K‬ز! !  وی‪ 6‬ذﻝ‪N‬‬
‫ ‪P6-‬ام داﻝ ‪ trace-annotate‬اﻝ‪%' € 86‬ﺡ
‪-K ، -‬ﻝ‪ € 6‬اﻝ=ي ی‪ 8K …6J‬ه=<‬
‫اﻝاﻝ ی‪ 8K %
É‬ه=ا اﻝء  اﻝ! اﻝ=ي  ی<‪.‬‬

‫‪25‬‬
‫وه=< اﻝ اﺝ
 اﻝ|‪ 1-‬اﻝ‪-A 8K -
!P61 86‬ء '‪ J‬ون ا‪P6‬ام ﻝž ‪ TCL‬وی‪°6K 6‬‬
‫ه=< اﻝ‪=K-A‬ة  ‪%Y‬ی€ ‪ Nam w!-1% °6K‬وذﻝ‪%Y  N‬ی€ ‪ 8K cmd °6K‬وی‪A‬وز أو‬
‫‪ 8K terminal °6K‬ﻝ‪ ÁJA‬وآ‪nam.exe(windows) or nam(linux)  -6‬‬
‫‪ %
É6K‬اﻝ اﺝ
 اﻝ‪-6‬ﻝ ‪:‬‬

‫ه=< اﻝ اﺝ
 ‪ 8K‬وی‪A‬وز ﺙ ! ‪-V‬ﺉ ‪-6P1 File‬ر ‪.new‬‬
‫  ذﻝ‪ N‬ی‪ 6‬اﻝ‪ ( }žz‬زر اﻝ ‪D‬ة ﺙ اﻝ‪-! 8K }žz‬ﺡ اﻝ‪ %‬ﺙ زر اﻝ‪ }P‬أو‬
‫اﻝ‪%‬ا } واﻝ‪ ( }žz‬اﻝ ‪D‬ة اوﻝ( واﻝ … ﺡ‪ (6‬اﻝ ‪D‬ة اﻝ|‪ 1-‬ﺡ‪ (6‬ی‪ 6‬ر '‪GJ‬‬
‫اﻝ‪ JE‬اﻝ=ي ‪%1‬ی<‪.‬‬
‫ ‪-@ D‬ﺹ‪ G‬ه=ا اﻝ‪ V w!-1%‬م ‪%E‬ﺡ
‪- -‬ﻝ‪ G,@6‬إن '‪-‬ء ا‪ 8K 0‬إﺹارة أﺥ‪%‬ى‬
‫*‪.‬‬
‫‪ …6 -
1‬ذآ‪ † %‬اﻝ ا‪ ?Q‬اﻝ‪ً V !D6‬‬
‫‪26‬‬
‫ی اﻝء اول‬-
1
.....81-|‫ اﻝء اﻝ‬0‫ء ا‬-E1‫ إ‬-ً‫ی‬%V‫و‬

‫ ه„ƒ اﻝ‬d‫اﺝ‬+


-The ns Manual,
http://www.isi.edu/nsnam/ns/ns-documentation.html
- Ns distribution download
- http://www.isi.edu/nsnam/ns/ns-build.html
- Installation problems and bug-fix
- http://www.isi.edu/nsnam/ns/ns-problems.html
- Ns-users mailing list
- Ns-users@isi.edu
- See http://www.isi.edu/nsnam/ns/ns-lists.html
- Archives from above URL
- Lots of slides displayed later

27

You might also like