Δηζαγσγή ζηνλ Network Simulator-2 Δίκτσα Υπολογιστώμ Ι Κ. Τσαγκάρης, Π. Δεμέστιτας, Μ. Λογοθέτης
Ση είλαη ν Network Simulator-2 (NS-2); O NS (Network Simulator) είλαη έλαο πξνζνκνησηήο διακριηών γεγονόηων πξνζαλαηνιηζκέλνο ζηελ έξεπλα θαη εθπαίδεπζε γύξσ από ηα δίκησα επικοινωνιών/σπολογιζηών Ο NS παξέρεη ζεκαληηθή ππνζηήξημε ζηελ πξνζνκνίσζε πξσηνθόιισλ επηθνηλσλίαο, δξνκνιόγεζεο θ.ά. επάλσ ζε ελζύξκαηα αιιά θαη αζύξκαηα δίθηπα ύγθξηζε πξσηνθόιισλ Λέα αξρηηεθηνληθά ζρέδηα NS-2 είλαη έλα δσξεάλ ινγηζκηθό πξόγξακκα κε κεγάιν πιήζνο βηβιηνζεθώλ, γξακκέλεο ζε Tcl/OTcl αιιά θαη ζε C/C++ Αλνηθηόο θώδηθαο «Αύμεζε εκπηζηνζύλεο» ζην απνηέιεζκα Ο NS-2 ζεσξείηαη έλα ηζρπξό εξγαιέην πξνζνκνίσζεο, αιιά... απαηηεί πνιιή κειέηε πνιιή εμάζθεζε θπξίσο γηα ηελ «πξαγκαηηθή εξγαζία» ζηνλ NS-2 (δει. αιιαγέο ζηνλ θώδηθα) 2
... Ση είλαη ν Network Simulator-2 (NS-2); ns-2 ~230 kloc C/C++, ~150 kloc Tcl/OTcl ~100 test suites θαη 100+ παξαδείγκαηα ~400 ζειίδεο ηνπ ns manual Σειεπηαία έθδνζε: 2.34, 17 Ηνπιίνπ 2009 Τπνζηεξηδόκελεο πιαηθόξκεο FreeBSD, Linux, Solaris, Windows, Mac Υξήζηεο >1k ηλζηηηνύηα (50 ρώξεο), >10k ρξήζηεο ~300 ζέκαηα/κήλα ζηελ ns-users@isi.edu (ζειίδα εγγξαθήο: http://mailman.isi.edu/mailman/listinfo/ns-users) ns-3 Δθδόζεηο θάζε 15 ηνπ κελόο (κόλν source) επηέκβξηνο 2010 (ns-3.9) Άκεζα ζρέδηα βειηίσζεο Άκεζε ζύλδεζε κε ηελ πξαγκαηηθή ζηνίβα πξσηνθόιισλ TCP/IP Δμειηγκέλε θαηαγξαθή απνηειεζκάησλ/ζηαηηζηηθώλ (Doxygen) Λέα, αθξηβή κνληέια γηα 802.11/MAC Python bindings 3
Πξνζνκνίσζε δηαθξηηώλ γεγνλόησλ 2 ηύπνη πξνζνκνίσζεο Πξνζνκνίσζε νδεγνύκελε από δηαθξηηό ρξόλν (discrete time-driven simulation) ν ρξόλνο δηαθξηηνπνηείηαη ζε δηαζηήκαηα γηα θάζε δηάζηεκα κηα δηαδηθαζία ειέγρεη αλ ππάξρεη γεγνλόο λα επεμεξγαζηεί αιιηώο πξνρσξά ζην επόκελν δηάζηεκα (Γύζθνιε θαη αθξηβή) Πξνζνκνίσζε νδεγνύκελε από δηαθξηηά γεγνλόηα (discrete event-driven simulation) Ζ βαζηθή δηαδηθαζία (scheduler) δεκηνπξγεί κηα ιίζηα (linked list) από γεγνλόηα, θαζέλα από ηα νπνία δεηθηνδνηείηαη αλάινγα 4
...Πξνζνκνίσζε δηαθξηηώλ γεγνλόησλ Ο NS-2 είλαη έλαο πξνζνκνησηήο δηαθξηηώλ γεγνλόησλ (discrete-event simulator) Φπζηθέο δξαζηεξηόηεηεο κεηαθξάδνληαη ζε γεγνλόηα (events) π.ρ. επαλακεηάδνζε παθέηνπ κεηά από ιήμε timeout Ζ «θαξδηά» ηνπ NS-2 είλαη ν scheduler ηελ αξρή ηεο πξνζνκνίσζεο ν ρξήζηεο δξνκνινγεί έλαλ αξηζκό από γεγνλόηα πνπ ζα εθηειεζζνύλ π.ρ. Έλαξμε κηαο εθαξκνγήο Σα αληηθείκελα ηνπ scheduler δξνκνινγνύλ άιια γεγνλόηα Όια ηα γεγνλόηα κπαίλνπλ ζε κηα ιίζηα αλάινγα κε ην ρξόλν εθηέιεζή ηνπο 5
...Πξνζνκνίσζε δηαθξηηώλ γεγνλόησλ Ο scheduler απνζπά (dequeue) από ηε ιίζηα ην γεγνλόο πνπ ππάξρεη ζηελ θνξπθή ελεκεξώλεη ην ρξόλν εθηειεί ην γεγνλόο απνζπά λέν γεγνλόο...θ.ν.θ κέρξη ην γεγνλόο εμόδνπ Time: 1.5 sec Time: 1.7 sec 1 2 Time: 2.0 sec Time: 1.8 sec ΠΡΟΟΥΖ: Ο ρξόλνο ζηνλ NS-2 δελ αληηζηνηρεί ζηνλ πξαγκαηηθό ρξόλν Ο ρξόλνο πξνζνκνίσζεο εμαξηάηαη από ην πιήζνο ησλ γεγνλόησλ πνπ εθηεινύληαη εληόο απηνύ 6
...Πξνζνκνίσζε δηαθξηηώλ γεγνλόησλ Ιίζηα γεγνλόησλ RX TX Ack Pkt Event @ 1.5sec 1.7sec 1.8sec 2.0sec Σέινο Πξνζνκνίσζεο! RX TX Ack Pkt Event @ 1.5sec 2.0sec TX RX Ack Pkt Event @ 1.7sec 1.8sec Node 1 Module Node 2 Module 7
Ση είλαη ν Network Simulator-2 (NS-2); Πεξηνξηζκνί ηνπ NS-2 Σα κνληέια πνπ ρξεζηκνπνηνύληαη ζηνλ NS-2 είλαη εθ ησλ πξαγκάησλ απινπνηεκέλα ζε ζρέζε κε ηα πξαγκαηηθά ζπζηήκαηα (π.ρ. ππνζηεξίδνληαη κνληέια πξνζνκνίσζεο γηα Reno, NewReno, Sack ή Fack TCP, σζηόζν, δελ ππάξρεη δπλακηθή δηαθήκηζε παξαζύξνπ) Ο NS-2 δελ είλαη έλα πιήξσο εκπνξηθό πξνηόλ, νύηε θαη έρεη ηειεηώζεη ε αλάπηπμή ηνπ Δίλαη απνηέιεζκα ζπλερηδόκελεο εξεπλεηηθήο θαη πξνγξακκαηηζηηθήο πξνζπάζεηαο Ιάζε ζην software αλαθαιύπηνληαη ζπλερώο θαη δηνξζώλνληαη. Ζ επηθύξσζε ηεο νξζόηεηαο ησλ απνηειεζκάησλ πξνζνκνίσζεο είλαη δηθή καο ππόζεζε (π.ρ. ιάζε ζην παθέην EDCF γηα ην πξσηόθνιιν 802.11e) ΠΑΡΟΙΑ ΑΤΣΑ, ν NS-2 είλαη πνιύ δεκνθηιήο! Αξθεηέο εθαηνληάδεο από εξεπλεηηθά άξζξα πνπ ρξεζηκνπνηνύλ ηνλ NS-2 είλαη δηαζέζηκα 8
Δγθαηάζηαζε ηνπ NS-2 Απαηηήζεηο γηα εγθαηάζηαζε ηνπ NS-2 Έλαο Unix like Ζ/Τ (FreeBSD, Linux, Solaris), έλαο C++ compiler, 320MB απνζεθεπηηθνύ ρώξνπ Γηα εγθαηάζηαζε ηνπ NS-2 ζε windows απαηηέηηαη Linux emulator π.ρ. Cygwin (linux-like πεξηβάιινλ γηα Windows) : Κηα DLL (cygwin1.dll) = Linux API emulation layer πνπ παξέρεη ηελ απαξαίηεηε Linux API ιεηηνπξγηθόηεηα πιινγή εξγαιείσλ, πνπ παξέρνπλ έλα Linux «look and feel». Αξθεηά πεηξακαηηθό, πξνηηκνύκε εγθαηάζηαζε ζε Linux 2 ηξόπνη εγθαηάζηαζεο ηνπ NS-2 Δγθαηάζηαζε από ηα μερσξηζηά θνκκάηηα ηνπ Δγθαηάζηαζε από ην παθέην all-in-one (όια ζε έλα) Θα εγθαηαζηήζνπκε ην παθέην ns-allinone-2.33 ζε Linux κεραλήκαηα 9
Δγθαηάζηαζε ηνπ NS-2 ζε Linux Βήκα 1: θαηεβάδνπκε ην παθέην ns-allinone (έθδνζε 2.33) από ηελ επίζεκε ηζηνζειίδα ηνπ NS-2 γηα εθδόζεηο πξηλ ην 2005 -> http://www.isi.edu/nsnam/ns πιένλ, από ηελ απνζήθε πεγαίνπ θώδηθα SourceForge.net -> http://sourceforge.net/project/showfiles.php?group_id=1497 43 Βήκα 2: επηιέγνπκε έλα directory εξγαζίαο έζησ ην /home/ktsagkaris θαη αληηγξάθνπκε ην αξρείν Βήκα 3: απνζπκπηέδνπκε ην αξρέην $ tar xzvf ns-allinone-2.33.tar Βήκα 4: Δληόο ηνπ ns-allinone directory, ηξέρνπκε ην script εγθαηάζηαζεο $ cd ~/ns-allinone-2.33 $./install Αλ δελ ηειεηώζεη ή είλαη αλεπηηπρήο ε εγθαηάζηαζε, εξώηεζε ζηε ns-mailing list ή αηνκηθή δηόξζσζε! 10
...Δγθαηάζηαζε ηνπ NS-2 ζε Linux Βήκα 5: δηακνξθώλνπκε ην πξνζσπηθό καο.bashrc αξρέην ζην home directory γηα ηε ρξήζε ηνπ NS-2 $ cd ~ ή cd /home/ktsagkaris $ vi.bashrc & Γει. πξνζζέηνπκε ζην αξρείν ηηο αθόινπζεο γξακκέο γηα ηα εθηειέζηκα ηνπ NS θαη ηεο tcl LD_LIBRARY_PATH θαη TCL_LIBRARY πνπ είλαη κεηαβιεηέο πεξηβάιινληνο (environment variables) θαη δείρλνπλ ζε βηβιηνζήθεο (libraries απαξαίηεηεο) γηα ηon NS Ζ εληνιή εμαξηάηαη από ηνλ shell πνπ ρξεζηκνπνηείηαη) export PATH="$PATH:/home/ktsagkaris/ns-allinone- 2.33/bin:/home/ktsagkaris/ns-allinone-2.33/tcl 8.4.14/unix:/home/ktsagkaris/ns-allinone-2.33/tk8.4.18/unix" export LD_LIBRARY_PATH="/home/ktsagkaris/ns-allinone- 2.33/otcl-1.13:/home/ktsagkaris/ns-alli none-2.33/lib" export TCL_ LIBRARY="/home/ktsagkaris/ns-allinone- 2.33/tcl8.4.18/library" 11
...Δγθαηάζηαζε ηνπ NS-2 ζε Linux Βήκα 6: Βγείηε από ην ηξέρνλ ηεξκαηηθό θαη εθηειέζηε έλα λέν θαη θάληε έιεγρν αλ ηξέρεη ην ns.exe $ ns % Βήκα 7: (πξναηξεηηθό) ηξέμηε θάπνην από ηα παξαδείγκαηα π.ρ. $ cd ~/ns-allinone-2.33/ns-2.33/tcl/ex $ ns simple.tcl 210 0.0037499999999999999 running nam... Βήκα 8: (πξναηξεηηθό) Δπηθπξώζηε ηελ εγθαηάζηαζε. Πεγαίλεηε ζην directory ηνπ NS θαη ηξέμηε validate (ρξνλνβόξν) $ cd ~/ns-allinone-2.33/ns-2.33 $./validate 12
Πξσηόθνιια θαη κνληέια ζηνλ NS-2 Κνληέια θίλεζεο (Traffic models) θαη Δθαξκνγέο (applications): Web, FTP, telnet, constant-bit rate(cbr) Πξσηόθνιια κεηαθνξάο (Transport protocols): Unicast: TCP (π.ρ. Reno, Vegas), UDP, Multicast (π.ρ. Scalable Reliable Multicasting - SRM, Receiver Driven Layered - RLM) Γξνκνιόγεζε (Routing) θαη νπξέο αλακνλήο (queuing): Static routing, DV routing, multicast, Ad-Hoc routing Γηαρείξηζε νπξώλ αλακνλήο (Queuing disciplines): droptail, RED (Random Early Drop), (S)FQ Φπζηθά κέζα δηάδνζεο (Physical media): Δλζύξκαηα (Wired point-to-point, LANs), Αζύξκαηα (Wireless), Γνξπθνξηθά (Satellite) 13
Σα ζπζηαηηθά ηνπ NS-2 Ο πξνζνκνησηήο NS-2 απηόο θαζεαπηόο Θαζνξίδεη ηελ πξνζνκνίσζε Παξάγεη απνηειέζκαηα (ίρλε ή traces) NAM = Network AniMator Οπηηθνπνίεζε (visualization) ηεο πξνζνκνίσζεο ηνπ NS GUI γηα θαηαζθεπή απιώλ ζελαξίσλ Πξν-επεμεξγαζία (pre-processing): Γελλήηξηεο θίλεζεο θαη ηνπνινγίαο Κεη-επεμεξγαζία (post-processing): Αλάιπζε ηρλώλ (trace analysis) εθηόο από Tcl scripts, ζπρλά ζε Awk ή Perl Δξγαιεία αλαπαξάζηαζεο απνηειεζκάησλ Xgraph, Gnuplot, excel θηι 14
Γνκή αξρείσλ ηνπ NS-2 ns-2.33 tcl ex examples tcl8.4.18 doc test test cases tk8.4.18 ns-tutorial lib core code tclcl-1.19 otcl-1.13 models }C++ } OTcl nam-1.13 και υυσικά, το αρχείο (script) για προσομοίωση! 15
Οη δύν γιώζζεο ηνπ NS-2 Γύν γιώζζεο: 1. Tcl/OTcl 2. C++ 1. Tcl/OTcl: MIT Object Tcl, Δπέθηαζε ηεο Tcl/Tk γηα object-oriented programming Υξεζηκνπνηείηαη γηα λα δεκηνπξγήζεη ηε δνκή ηνπ δηθηύνπ θαη ηελ ηνπνινγία Απιή ζύληαμε θαη ζπκβαηή κε πνιιέο πιαηθόξκεο Δπθνιία ζηε δηεπζέηεζε (configuration) ησλ παξακέηξσλ δηθηύνπ Δμεξεπλά γξήγνξα πνιιά θαη δηαθνξεηηθά ζελάξηα Όρη αξθεηή γηα πεξαηηέξσ εξεπλεηηθά δεηήκαηα 16
Οη δύν γιώζζεο ηνπ NS-2 2. C++: Σν πην ζεκαληηθό θνκκάηη ηνπ NS-2! Τινπνίεζε ηνπ ππξήλα ηεο αξρηηεθηνληθήο ησλ πξσηνθόιισλ Σξνπνπνίεζε ή απνθιεηζκόο ( comment out ) ησλ ππαξρόλησλ πξσηνθόιισλ ζηνλ NS-2 Ιεπηνκεξείο πξνζνκνηώζεηο πξσηνθόιισλ απαηηνύλ γιώζζα πξνγξακκαηηζκνύ ζπζηήκαηνο δηαρείξηζε byte, επεμεξγαζία παθέηνπ, πινπνίεζε αιγνξίζκσλ Ζ ηαρύηεηα θαη ν ρξόλνο εθηέιεζεο είλαη πνιύ ζεκαληηθά Αξγόο ρξόλνο απόθξηζεο ζηηο αιιαγέο run simulation find bug fix bug recompile re-run 17
Σειηθά γηαηί 2 γιώζζεο? Γηόηη 2 θαη νη βαζηθέο απαηηήζεηο ηνπ πξνζνκνησηή! Ιεπηνκεξήο πξνζνκνίσζε πξσηνθόιινπ: Τατύτητα τρόνοσ εκτέλεσης Γξήγνξε κεηαβνιή παξακέηξσλ ηνπ configuration: Εσκολία τρήσης Ζ C++ είλαη γξήγνξε ζηελ εθηέιεζε αιιά αξγή ζηηο αιιαγέο (θσδηθνπνίεζε) Ζ Tcl/OTcl είλαη εύθνιε ζηελ θσδηθνπνίεζε αιιά ηξέρεη αξγά 18
ύληαμε Tcl Set b 0 b=0 ρξήζε ηεο b me $b Καζεκαηηθή ιεηηνπξγία (expression) set x [expr $a + $b] puts [expr 1/60] ηππώλεη 0 puts [expr 1.0/60.0] ηππώλεη 0.0166 ρόιηα κε # 19
ύληαμε Tcl Άλνηγκα αξρείνπ set file1 [open filename w] Βξόρνη for { set i 0 } { $i < 5 } { incr i } { execute commands } Γηαδηθαζίεο (procedures) proc lala { par1 par2 } { } global var1 var2 <Commands > Return sth 20
Παξάδεηγκα Tcl script (ex-tcl.tcl) # Γξάθνπκε κηα δηαδηθαζία (procedure) test θαη ηελ απνζεθεύνπκε ζε έλα αξρείν ex-tcl.tcl proc test {} { set a 43 set b 27 set c [expr $a + $b] set d [expr [expr $a - $b] * $c] for {set k 0} {$k < 10} {incr k} { if {$k < 5} { puts "k < 5, pow = [expr pow($d, $k)] } else { puts "k >= 5, mod = [expr $d % $k] } } } 21
Παξάδεηγκα Tcl script (ex-tcl.tcl) # θιήζε ηεο ηεζη πνπ δεκηνπξγήζεθε ns ex-tcl.tcl k < 5, pow = 1.0 k < 5, pow = 1120.0 k < 5, pow = 1254400.0 k < 5, pow = 1404928000.0 k < 5, pow = 1573519360000.0 k >= 5, mod = 0 k >= 5, mod = 4 k >= 5, mod = 0 k >= 5, mod = 0 k >= 5, mod = 4 22
Παξάδεηγκα OTcl script (ex-otcl.tcl) Δημιοσργία κλάζης mom και προζθήκη ζσνάρηηζης μέλοσς greet Class Mom Mom instproc greet {} { $self instvar age_ puts $age_ years old mom: How are you doing? } Class Kid -superclass Mom Kid instproc greet {} { $self instvar age_ puts $age_ years old kid: What s up, dude? } Δημιοσργία child κλάζης kid ποσ κληρονομεί ηη mom και ανηικαηάζηαζη (override) ηης ζσνάρηηζης μέλοσς greet Δημιοσργία ανηικειμένων mom και kid Θέζη ηιμής age set mom [new Mom] $mom set age_ 45 set kid [new Kid] $kid set age_ 15 $mom greet $kid greet Κλήζη ηης ζσνάρηηζης μέλοσς "greet για κάθε ανηικείμενο ns ex-otcl.tcl 45 years old mom say: How are you doing? 15 years old kid say: What's up, dude? 23
Βήκαηα πξνζνκνίσζεο κέζσ NS-2 Γεκηνπξγία Tcl/OTcl script γηα ην κνληέιν ηνπ δηθηύνπ καο Θόκβνη (nodes), δεύμεηο(links), πεγέο θίλεζεο (traffic sources), απνδέθηεο θίλεζεο (sinks) θηι Παξακεηξνπνίεζε αληηθεηκέλσλ πξνζνκνίσζεο Εεύμεηο: κεγέζε νπξώλ, ηαρύηεηα δεύμεο, Πξσηόθνιια κεηαθνξάο: TCP κε παξακέηξνπο (>30) όπσο κέγεζνο παξαζύξνπ ζπκθόξεζεο, πιινγή ζηαηηζηηθώλ Απνηύπσζε ησλ γεγνλόησλ ζε ίρλε, κεη-επεμεξγαζία ηνπο Θαηαγξαθή ζηαηηζηηθώλ εληόο ηνπ OTCL script θαηά ηελ πξνζνκνίσζε Σξνπνπνίεζε ηνπ πεγαίνπ NS θώδηθα Δθηέιεζε ηνπ NS-2 πνιιέο θνξέο Γηαζηήκαηα εκπηζηνζύλεο (confidence intervals) 24
Γεκηνπξγία κηαο βαζηθήο πξνζνκνίσζεο NS-2 1. Γεκηνπξγία ηνπ δξνκνινγεηή γεγνλόησλ (event scheduler) 2. Γεκηνπξγία θόκβσλ θαη δεύμεσλ 3. Γεκηνπξγία ζπλδέζεσλ 4. Γεκηνπξγία πεγώλ/απνδεθηώλ θίλεζεο 5. Δλεξγνπνίεζε θαηαγξαθήο (tracing) 25
Γεκηνπξγία κηαο βαζηθήο πξνζνκνίσζεο NS-2 1. Γεκηνπξγία ηνπ δξνκνινγεηή γεγνλόησλ (event scheduler) 2. Γεκηνπξγία θόκβσλ θαη δεύμεσλ 3. Γεκηνπξγία ζπλδέζεσλ 4. Γεκηνπξγία πεγώλ/απνδεθηώλ θίλεζεο 5. Δλεξγνπνίεζε θαηαγξαθήο (tracing) 26
Βήκα 1: Γεκηνπξγία ηνπ event scheduler Γεκηνπξγία scheduler set ns [new Simulator] Πξνγξακκαηηζκόο γεγνλόηνο $ns at <time> <event> <event>: νπνηαδήπνηε απνδεθηή Ns/TCL εληνιή π.ρ $ns at 0.5 $cbr start $ns at 4.5 $cbr stop $ns at 5.0 finish Δθθίλεζε scheduler $ns run 27
Γεκηνπξγία κηαο βαζηθήο πξνζνκνίσζεο NS-2 1. Γεκηνπξγία ηνπ δξνκνινγεηή γεγνλόησλ (event scheduler) 2. Γεκηνπξγία θόκβσλ θαη δεύμεσλ 3. Γεκηνπξγία ζπλδέζεσλ 4. Γεκηνπξγία πεγώλ/απνδεθηώλ θίλεζεο 5. Δλεξγνπνίεζε θαηαγξαθήο (tracing) 28
Βήκα 2: Γεκηνπξγία ηνπ δηθηύνπ (θόκβνη θαη δεύμεηο) Θόκβνη (Nodes) set n0 [$ns node] set n1 [$ns node] Εεύμεηο (Links): ελώλνπλ 2 θόκβνπο $ns duplex-link $n0 $n1 <bandwidth> <delay><queue_type> <ηύπνο δεύμεο> simplex-link θαη duplex-link <bandwidth> ρσξεηηθόηεηα (ηαρύηεηα δεύμεο) <delay> πξνζδηνξίδεη ηελ θαζπζηέξεζε δηάδνζεο <queue_type> θαζνξίδεη ηελ πνιηηηθή δηαρείξηζεο νπξώλ (DropTail, RED, CBQ, FQ, SFQ, DRR) n0 n1 29
Γεκηνπξγία κηαο βαζηθήο πξνζνκνίσζεο NS-2 1. Γεκηνπξγία ηνπ δξνκνινγεηή γεγνλόησλ (event scheduler) 2. Γεκηνπξγία θόκβσλ θαη δεύμεσλ 3. Γεκηνπξγία ζπλδέζεσλ 4. Γεκηνπξγία πεγώλ/απνδεθηώλ θίλεζεο 5. Δλεξγνπνίεζε θαηαγξαθήο (tracing) 30
Βήκα 3: Γεκηνπξγία ζπλδέζεσλ Transports: TCP, UDP, multicast θηι. Λέν: SCTP (Stream Control Transport Protocol), RFC 2960 Πξσηόθνιια κεηαθνξάο «επηζπλάπηνληαη» ζηνπο θόκβνπο 31
Γεκηνπξγία θαλαιηώλ κεηαθνξάο: UDP Πεγή θαη απνδέθηεο set u_src [new Agent/UDP] set u_dst [new Agent/NULL] udp Δπηζύλαςε ζηνπο θόκβνπο θαη κεηά ζύλδεζή ηνπο $ns attach-agent $n0 $u_src $ns attach-agent $n1 $u_dst $ns connect $u_src $u_dst n0 n1 null 32
Γεκηνπξγία θαλαιηώλ κεηαθνξάο: TCP Πεγή θαη απνδέθηεο set t_src [new Agent/TCP/Newreno] set t_dst [new Agent/TCPSink] Ο Newreno είλαη αιγόξηζκνο απνθπγήο ζπκθόξεζεο ζην TCP Δπηζύλαςε ζηνπο θόκβνπο θαη κεηά ζύλδεζή ηνπο $ns attach-agent $n0 $t_src $ns attach-agent $n1 $t_dst $ns connect $t_src $t_dst tcp n0 n1 sink 33
Γεκηνπξγία κηαο βαζηθήο πξνζνκνίσζεο NS-2 1. Γεκηνπξγία ηνπ δξνκνινγεηή γεγνλόησλ (event scheduler) 2. Γεκηνπξγία θόκβσλ θαη δεύμεσλ 3. Γεκηνπξγία ζπλδέζεσλ 4. Γεκηνπξγία πεγώλ/απνδεθηώλ θίλεζεο 5. Δλεξγνπνίεζε θαηαγξαθήο (tracing) 34
Βήκα 4: Γεκηνπξγία κνληέισλ θίλεζεο Θίλεζε - Δθαξκνγέο : Web, ftp, telnet, audio, θηι. Αληηθείκελα εθαξκνγώλ (application objects) πξνζδέλνληαη ζε αληηθείκελα πξσηνθόιινπ κεηαθνξάο (transport protocol objects) Γελληέηαη θίλεζε ζην πξσηόθνιιν κεηαθνξάο 35
Θίλεζε πάλσ από TCP FTP session πάλσ από TCP? Γεκηνπξγία κνληέινπ θίλεζεο set ftp [new Application/FTP] ε εμ νξηζκνύ (default) πεξίπησζε αλαθέξεηαη ζε άπεηξν κέγεζνο αξρείνπ ftp tcp Πξόζδεζε ζε TCP θαλάιη $ftp attach-agent $t_src n0 Γξνκνιόγεζε ρξόλνπ έλαξμεο $ns at <time> $ftp start n1 sink 36
Θίλεζε πάλσ από UDP Κνληέιν CBR (Constant Bit Rate) πάλσ από UDP? set cbr [new Application/Traffic/CBR] $cbr set packetsize_ 512 $cbr set interval_ 0.250 $cbr attach-agent $u_src $ns at <time> $cbr start cbr udp n0 n1 null 37
Δρομολόγηση n0 n1 Port Classifier Port Classifier entry_ Addr Classifier 0 1 dmux_ Link n0-n1 entry_ Addr Classifier 1 0 dmux_ classifier_ classifier_ Link n1-n0 38
Μεταυορά n0 n1 Port Classifier dst_=1.0 Port Classifier dst_=0.0 entry_ Addr Classifier 0 1 0 dmux_ Agent/TCP agents_ Link n0-n1 entry_ Addr Classifier 1 0 0 dmux_ Agent/TCPSink agents_ classifier_ classifier_ Link n1-n0 39
Ευαρμογή n0 n1 Port Classifier Application/FTP dst_=1.0 Port Classifier dst_=0.0 entry_ Addr Classifier 0 1 0 dmux_ Agent/TCP agents_ Link n0-n1 entry_ Addr Classifier 1 0 0 dmux_ Agent/TCPSink agents_ classifier_ classifier_ Link n1-n0 40
Ροή πακέτων n0 n1 Port Classifier Application/FTP dst_=1.0 Port Classifier dst_=0.0 entry_ Addr Classifier 0 1 0 Agent/TCP Link n0-n1 entry_ Addr Classifier 1 0 0 Agent/TCPSink Link n1-n0 41
Γεκηνπξγία κηαο βαζηθήο πξνζνκνίσζεο NS-2 1. Γεκηνπξγία ηνπ δξνκνινγεηή γεγνλόησλ (event scheduler) 2. Γεκηνπξγία θόκβσλ θαη δεύμεσλ 3. Γεκηνπξγία ζπλδέζεσλ 4. Γεκηνπξγία πεγώλ/απνδεθηώλ θίλεζεο 5. Δλεξγνπνίεζε θαηαγξαθήο (tracing) 42
Βήκα 5: Θαηαγξαθή (αληηθείκελα θαηαγξαθήο) EnqT: θξαηά πιεξνθνξίεο γηα έλα παθέην πνπ θζάλεη θαη εηζέξρεηαη ζηελ νπξά εηζόδνπ ηεο γξακκήο DrpT: αλ ζπκβεί ππεξρείιηζε, ην αληηθείκελν DropT δηαρεηξίδεηαη ηα απνξξηθζέληα παθέηα DeqT: θαηαρσξεί πιεξνθνξίεο γηα ην ρξνληθό ζεκείν πνπ ην παθέην εμέξρεηαη ηεο νπξάο RecvT: δίλεη πιεξνθνξίεο γηα ηα παθέηα πνπ ειήθζεζαλ ζηελ έμνδν ηεο δεύμεο 43
Βήκα 5: Θαηαγξαθή Θαηαγξαθή παθέησλ ζε όιεο ηηο δεύμεηο set f [open out.tr w] $ns trace-all $f Οπηηθνπνίεζε ηεο θαηαγξαθήο κέζσ NAM set nf [open out.nam w] $ns namtrace-all $nf 44
Βαζηθή (default) κνξθή trace file 1. Event (+ enque, - deque, r receive, d drop) 2. time of event 3. input node ηεο δεύμεο πνπ ζπκβαίλεη ην event 4. output node ηεο δεύμεο πνπ ζπκβαίλεη ην event 5. packet type (tcp,udp,cbr,sip,...) 6. packet size (ζε bytes, encoded ζηελ IP header) 7. flags (γηα δηάθνξεο ιεηηνπξγίεο π.ρ. γηα κείσζε παξαζύξνπ ζπκθόξεζεο) 8. flow id (ζε πεξίπησζε IPv6 ή ζαλ color id) 9. source address (<node.port>) 10. destination address (<node.port>) 11. seq num (αύμσλ αξηζκόο παθέηνπ γηα αλαιύζεηο, αθόκα θαη γηα UDP) 12. pkt id (κνλαδηθό αλαγλσξηζηηθό παθέηνπ) 45
Παξάδεηγκα Trace file.txt (n1->n2)... + 11.533441 1 2 tcp 1440 ------- 12 1.2 2.4 96 2092 r 11.535694 1 2 tcp 1440 ------- 12 1.2 2.4 65 1527-11.537214 1 2 exp 180 ------- 100 0.2 2.13 284 1528-11.538654 1 2 cbr 1440 ------- 101 1.11 2.14 155 1530 r 11.547214 1 2 tcp 1440 ------- 12 1.2 2.4 66 1529 + 11.54728 1 2 tcp 1440 ------- 12 1.2 2.4 97 2095 r 11.548654 1 2 exp 180 ------- 100 0.2 2.13 284 1528 + 11.55 1 2 cbr 1440 ------- 101 1.11 2.14 211 2096-11.550174 1 2 tcp 1440 ------- 12 1.2 2.4 67 1534 r 11.560174 1 2 cbr 1440 ------- 101 1.11 2.14 155 1530-11.561694 1 2 exp 180 ------- 100 0.2 2.13 285 1532 + 11.56222 1 2 tcp 1440 ------- 12 1.2 2.4 98 2097-11.563134 1 2 tcp 1440 ------- 12 1.2 2.4 68 1537 r 11.571694 1 2 tcp 1440 ------- 12 1.2 2.4 67 1534 r 11.573134 1 2 exp 180 ------- 100 0.2 2.13 285 1532-11.574654 1 2 exp 180 ------- 100 0.2 2.13 286 1536... 46
Παξάδεηγκα Trace file.txt (n1->n2)... + 11.533441 1 2 tcp 1440 ------- 12 1.2 2.4 96 2092 r 11.535694 1 2 tcp 1440 ------- 12 1.2 2.4 65 1527-11.537214 1 2 exp 180 ------- 100 0.2 2.13 284 1528-11.538654 1 2 cbr 1440 ------- 101 1.11 2.14 155 1530 r 11.547214 1 2 tcp 1440 ------- 12 1.2 2.4 66 1529 + 11.54728 1 2 tcp 1440 ------- 12 1.2 2.4 97 2095 r 11.548654 1 2 exp 180 ------- 100 0.2 2.13 284 1528 + 11.55 1 2 cbr 1440 ------- 101 1.11 2.14 211 2096-11.550174 1 2 tcp 1440 ------- 12 1.2 2.4 67 1534 r 11.560174 1 2 cbr 1440 ------- 101 1.11 2.14 155 1530-11.561694 1 2 exp 180 ------- 100 0.2 2.13 285 1532 + 11.56222 1 2 tcp 1440 ------- 12 1.2 2.4 98 2097-11.563134 1 2 tcp 1440 ------- 12 1.2 2.4 68 1537 r 11.571694 1 2 tcp 1440 ------- 12 1.2 2.4 67 1534 r 11.573134 1 2 exp 180 ------- 100 0.2 2.13 285 1532-11.574654 1 2 exp 180 ------- 100 0.2 2.13 286 1536... 0.0114sec=180*8/(10^6)+0.01 47
Θαηαγξαθή κέζσ παξαθνινύζεζεο Παξαθνινύζεζε νπξάο: ε νπξά γηα πξόζβαζε ζε κία δεύμε set qmon[$ns monitor-queue $n0 $n1 $q_f $sample_interval] Ιήςε ζηαηηζηηθώλ κηαο νπξάο $qmon set pdrops_ Πξναηξεηηθή θαηαγξαθή ε ζε trace file 29.000000000000142 0 1 0.0 0.0 4 4 0 1160 1160 0 48
Θαηαγξαθή κέζσ παξαθνινύζεζεο Παξαθνινύζεζε ξνήο (flow) monitor: ζπγθεθξηκέλε ξνή ζε κία νπξά set fmon [$ns makeflowmon Fid] $ns attach-fmon $link $fmon $ns at <time> puts $fmon set pdrops_ 49
Κεη-επεμεξγαζία απνηειεζκάησλ nam-1 (Network AniMator Version 1) Οπηηθνπνίεζε ζε επίπεδν παθέηνπ (packet-level) Τπνζηεξίδεηαη πνιύ θαιά από ηνλ NS-2 xgraph, gnuplot, tracegraph... Γξαθηθέο παξαζηάζεηο 50
Ο Network Animator (ΛΑΚ) 51
Γπλαηόηεηεο ΛΑΚ - θόκβνη Color (ρξσκαηηζκόο θόκβσλ) $node color red Shape (ζρήκα θόκβσλ *δελ αιιάδεη θαηά ηε δηάξθεηα ηεο πξνζνκνίσζεο) $node shape box (circle, box, hexagon) Label (απιό string) $ns at 1.1 $n0 label \ web cache 0\ 52
Γπλαηόηεηεο ΛΑΚ - δεύμεηο Color $ns duplex-link-op $n0 $n1 color "green" Label $ns duplex-link-op $n0 $n1 label backbone 53
Οινθιεξσκέλν παξάδεηγκα απινύ δηθηύνπ 54
Οινθιεξσκέλν παξάδεηγκα απινύ δηθηύνπ 55
NS Agents θαη Applications Αθνύ νξίζακε ηελ ηνπνινγία -> traffic flow 1) FTP over ΣCP Tahoe/Reno/Vegas κηλ Οριζμός κόμβοσ πηγής ηης TCP ζύνδεζης Sink ζηον προοριζμό (acks) Σύνδεζη πηγής-προοριζμού Μέγεθος πακέηοσ TCP (default =1000) Οριζμός εθαρμογής FTP πάνω από ηη ζύνδεζη TCP 56
... NS Agents θαη Applications 2) CBR over UDP Άλλες πηγές κίνηζης πτ. Exponential, Pareto Ρσθμός μεηάδοζης (ζηαθερός) Τσταίος θόρσβος 57
Πξνγξακκαηηζκόο γεγνλόησλ $ns at <time> <event> Δθηέιεζε simulator ns example.tcl 58
ύλνςε Scripts για εκτέλεση Εκτέλεση NS Αποτελέσματα προσομοίωσης Ανάλσση... 59
Γηθηπαθόο ηόπνο http://www.isi.edu/nsnam/ns http://nsnam.isi.edu/nsnam/index.php/main_page 60