Differences

This shows you the differences between two versions of the page.

Link to this comparison view

isrm:laboratoare:01 [2016/09/28 20:19]
dragos.niculescu
isrm:laboratoare:01 [2016/10/05 12:46] (current)
dragos.niculescu
Line 1: Line 1:
 ==== Laboratorul 1 ==== ==== Laboratorul 1 ====
- 
-== Jucăm == 
- [[ http://​www.medcalf.com/​games/​cisco_games/​game_page.html?​userName=Melissa&​game=wireless | Wireless Explorer ]] doar câteva nivele LOL.  
  
 Citim tutoriale și rulăm exemple. Textul de mai jos  este bazat pe ghidul [[ http://​nile.wpi.edu/​NS/​ | NS by example ]] de J. Chung și M. Claypool. ​ Citim tutoriale și rulăm exemple. Textul de mai jos  este bazat pe ghidul [[ http://​nile.wpi.edu/​NS/​ | NS by example ]] de J. Chung și M. Claypool. ​
Line 8: Line 5:
 == Introducere în ns2 == == Introducere în ns2 ==
  
-NS-2 este un simulator ​de rețea ​bazat pe evenimente dezvoltat la UC Berkely scris in C++ si OTcl. NS-2 este în primul rând util pentru simularea rețelelor LAN și WAN. Cu toate ca NS este destul de ușor de utilizat pentru avansați, ​este destul de dificil la prima   ​utilizare, deoarece există puține manuale user-friendly. Chiar dacă există o mulțime de documente scrise de către dezvoltatori,​ care conțin ​explicație aprofundată a simulatorului,​ acestea sunt scrise pentru utilizatorii NS-2 avansați. Această secțiune oferă o idee de bază a modului în care funcționează simulatorul,​ cum se pregătește o simulare, unde se găsesc componentele interne ​ale simulatorului, cum se configurează componentele de rețea, etc. În principal se prezintă exemple simple și explicații bazate pe experimente simple, familiare unui student care a luat un curs introductiv de rețele. ​+NS-2 este un simulator bazat pe evenimente dezvoltat la UC Berkely scris in C++ si OTcl. NS-2 este în primul rând util pentru simularea rețelelor LAN și WAN, dar și pentru rețele wireless, adhoc, de senzori. Cu toate ca NS este destul de ușor de utilizat pentru avansați, ​poate părea ​dificil la prima utilizare, deoarece există puține manuale user-friendly. Chiar dacă există o mulțime de documente scrise de către dezvoltatori,​ care conțin ​ explicații aprofundate ale simulatorului,​ acestea sunt scrise pentru utilizatorii NS-2 avansați. Această secțiune oferă o idee de bază a modului în care funcționează simulatorul,​ cum se pregătește o simulare, unde se găsesc componentele interne, cum se configurează componentele de rețea, etc. În principal se prezintă exemple simple și explicații bazate pe experimente simple, familiare unui student care a luat un curs introductiv de rețele. ​
  
 == Limbajul OTcl == == Limbajul OTcl ==
  
-NS-2 este în esență un interpretor de OTcl cu biblioteci de obiecte specializate în simularea rețelelor. Este necesar să se cunoască ​ sumar programarea în OTcl pentru a utiliza NS-2. Această secțiune prezintă un exemplu OTcl care ilustrează ideea de bază a programării în OTcl. Acest exemplu ​este importat din manualul oficial NS-2. Această secțiune și secțiunile următoare ​presupune ​că cititorul ​ainstalat ​NS-2, și este familiarizat cu C++.+NS-2 este în esență un interpretor de OTcl cu biblioteci de obiecte ​C++ specializate în simularea rețelelor. Este necesar să se cunoască ​ sumar programarea în OTcl pentru a utiliza NS-2. Această secțiune prezintă un exemplu OTcl care ilustrează ideea de bază a programării în OTclexemplu importat din manualul oficial NS-2. Această secțiune, ca și secțiunile următoare ​presupun ​că cititorul ​a instalat ​NS-2, și este familiarizat ​cu shell și cu C++.
  
-Primul exemplu ​ este un script general OTcl, care arată modul de a declara ​o procedură și a o apela, modul de a atribui valori variabilelor,​ și modul de a implementa o buclă. OTcl este de fapt extensia orientată obiect a TCL(pronunțat "​tickle"​),​ relația dintre Tcl și Otcl este la fel ca și cea dintre C și C++, dar în acest laborator rareori sunt folosite obiectele în OTcl. Pentru a rula acest script rulați "ns ex-tcl.tcl"​ la promptul shell - comanda "​ns"​ execută NS-2 (interpretorul OTcl). Veți obține aceleași rezultate dacă tastați "tclsh ex-tcl.tcl",​ în cazul în care tcl8.0 este instalat pe mașina dumneavoastră.+Primul exemplu ​ este un script general OTcl, care arată modul de declarare ​o procedură și a o apela, modul de a atribui valori variabilelor,​ și modul de a implementa o buclă. OTcl este de fapt extensia orientată obiect a Tcl(pronunțat "​tickle"​),​ relația dintre Tcl și Otcl este la fel ca și cea dintre C și C++, dar în acest laborator rareori sunt folosite obiectele în OTcl. Pentru a rula acest script rulați "ns ex-tcl.tcl"​ la promptul shell - comanda "​ns"​ execută NS-2 (interpretorul OTcl). Veți obține aceleași rezultate dacă tastați "tclsh ex-tcl.tcl",​ în cazul în care tcl8.0 este instalat pe mașina dumneavoastră.
  
 <file tcl ex-tcl.tcl>​ <file tcl ex-tcl.tcl>​
Line 36: Line 33:
 </​file>​ </​file>​
  
-In Tcl, the keyword proc is used to define a procedure, followed by an procedure name and arguments in curly brackets. The keyword set is used to assign a value to a variable. [expr ...] is to make the interpreter calculate the value of expression within the bracket after the keyword. One thing to note is that to get the value assigned to a variable, $ is used with the variable name. The keyword puts prints out the following string within double quotation marks. The following shows the result of Example 1. 
  
-În Tcl, cuvântul cheie ''​proc'' ​ este folosit pentru a defini o procedură, urmat de un nume de procedură și argumentele în acolade. Cuvântul cheie ''​set''​ este folosit pentru a atribui o valoare unei variabile. ''​[Expr ...]''​ este pentru a calcula valoarea expresiei între paranteze drepte, după cuvântul cheie. Un lucru de remarcat este faptul că pentru a obține valoarea atribuită unei variabile, ''​$''​ este utilizat cu numele variabilei. Cuvântul cheie ''​puts''​ imprimă șirul de caractere la consolă. ​Rulănd ​exemplul de mai sus, se obține: ​+În Tcl, cuvântul cheie ''​proc'' ​ este folosit pentru a defini o procedură, urmat de un nume de procedură și argumentele în acolade. Cuvântul cheie ''​set''​ este folosit pentru a atribui o valoare unei variabile. ''​[Expr ...]''​ este pentru a calcula valoarea expresiei între paranteze drepte, după cuvântul cheie. Un lucru de remarcat este faptul că pentru a obține valoarea atribuită unei variabile, ''​$''​ este utilizat cu numele variabilei ​(ca în shell). Cuvântul cheie ''​puts''​ imprimă șirul de caractere la consolă. ​Rulând ​exemplul de mai sus, se obține: ​
  
 <​code>​ <​code>​
Line 53: Line 49:
 </​code>​ </​code>​
  
-== Simple Simulation Example ​==+== Primul exemplu de simulare ​==
  
 Această secțiune prezintă un script simplu NS-2 si explica ce face fiecare linie. Exemplul este un script OTcl care creează o configurație de rețea simplă și rulează scenariul de simulare din figura de mai jos. Pentru a rula această simulare, descărcați "​ns-simple.tcl"​ și rulați "ns ns-simple.tcl"​ în shell. ​ Această secțiune prezintă un script simplu NS-2 si explica ce face fiecare linie. Exemplul este un script OTcl care creează o configurație de rețea simplă și rulează scenariul de simulare din figura de mai jos. Pentru a rula această simulare, descărcați "​ns-simple.tcl"​ și rulați "ns ns-simple.tcl"​ în shell. ​
Line 68: Line 64:
 $ns color 1 Blue $ns color 1 Blue
 $ns color 2 Red $ns color 2 Red
 +
 +#Open the NAM trace file
 +set nf [open out.nam w]
 +$ns namtrace-all $nf
 +
 +#ns trace file
 +set tracefd ​       [open simple.tr w]
 +$ns use-newtrace
 +$ns trace-all $tracefd
 +
  
 #Create four nodes #Create four nodes
Line 120: Line 126:
 $cbr set rate_ 1mb $cbr set rate_ 1mb
 $cbr set random_ false $cbr set random_ false
- 
-#Open the NAM trace file 
-set nf [open out.nam w] 
-$ns namtrace-all $nf 
  
 #Define a '​finish'​ procedure #Define a '​finish'​ procedure
Line 153: Line 155:
 </​file>​ </​file>​
  
-În continuare, descriem ​script-ul de mai sus. În general, un script NS-2 începe cu o instanță a obiectului simulator:+== Descrierea ​script-ului ==  
 + 
 +În general, un script NS-2 începe cu o instanță a obiectului simulator:
   * ''​set ns [new Simulator]''​ generează un obiect de tip simulator și îl atribuie variabilei //ns// (caracterele cursive sunt folosite pentru variabile și valori). Această linie:   * ''​set ns [new Simulator]''​ generează un obiect de tip simulator și îl atribuie variabilei //ns// (caracterele cursive sunt folosite pentru variabile și valori). Această linie:
      * inițializează formatul pachetelor (ignorați acest lucru deocamdată)      * inițializează formatul pachetelor (ignorați acest lucru deocamdată)
Line 165: Line 169:
      * specifică opțiunile NAM (network animator)      * specifică opțiunile NAM (network animator)
  
-Cele mai multe dintre funcțiile  sunt pentru configurarea simularii ​ și pentru planificare,​ iar unele dintre ele sunt pentru animatorulul NAM. Alte setăriu ale simulatorului pot fi consultate în fișierul ''​ns-2 / TCL / lib / ns-lib.tcl''​.+Cele mai multe dintre funcții  sunt pentru configurarea simularii ​ și pentru planificare,​ iar unele dintre ele sunt pentru animatorulul NAM. Multe alte setări ale simulatorului pot fi consultate în fișierul ''​ns-2 / TCL / lib / ns-lib.tcl''​.
  
- +  * ''​$ns color fid color''​ stabilește ​culoarea pachetelor pentru un flux specificat de id-ul fluxului ​(fid). Acest membru al obiectului "simulator" este pentru afișajul NAM, și nu are nici un efect asupra simulării ​propriuzise
-$ns color fid color este de a stabili ​culoarea pachetelor pentru un flux specificat de id - ul de curgere ​(FID). Acest membru al obiectului "Simulator" este pentru afișajul NAM, și nu are nici un efect asupra simulării ​actuale+  * ''​$ns namtrace-all file-descriptor'' ​Acest membru ​specifică un fișier trace de simulare în format ​specific ​NAM. Acesta oferă numele de fișier pe care informațiile de trace vor fi scrise mai târziu de comandă ​''​$ns flush-trace''​. În mod similar, ​''​trace-all'' ​este pentru înregistrarea ​trace-urilor ​de simulare într-un format general. 
-$ns namtrace-all file-descriptor Acest membru ​spune simulator pentru a înregistra urme de simulare în format ​de intrare ​NAM. Acesta oferă, de asemenea, ​numele de fișier pe care urmele ​vor fi scrise mai târziu de comandă $ ns spălare urme. În mod similar, ​linia-toate funcțiile de membru ​este pentru înregistrarea ​urmelor ​de simulare într-un format general. +  * ''​proc finish {}'' ​este rulată la sfârșitul simulării când se interpretează comanda ​''​$ns at 15.0 "finish"''​. În această funcție, sunt specificate ​diverse procesări ​post-simulare. 
-proc finish {} este numit după această simulare este de peste de comanda $ ns la 5.0 "termina". În această funcție, sunt specificate ​procese ​post-simulare. +  * ''​set n0 [$ns node]''​ Funcția membru ​''​node'' ​creează un nod nou. Un nod în NS-2 este un obiect compus din adresa si port clasificator. Utilizatorii pot crea un nod prin crearea separată ​a adresei ​și a unui port  clasificatorși conectarea lor ulterioară. Pentru a vedea modul în care se creează un nod, se pot consulta ​fișierele: ​''​ns-2 / tcl / libs / ns-lib.tcl'' ​și ''​ns-2 / tcl / libs / ns-node.tcl''​
-set n0 [$ns node] Nodul funcția de membru creează un nod. Un nod în NS este obiect compus din adresa si portul clasificatoare (descris într-o secțiune ulterioară). Utilizatorii pot crea un nod prin crearea separat ​o adresă și un port de obiecte ​clasificator și conectarea lor împreună. Cu toate acestea, această funcție membru al obiectului Simulator face treaba mai ușoară. Pentru a vedea modul în care se creează un nod, uita-te la fișierele: ​"ns-2 / tcl / libs / ns-lib.tcl" ​și "ns-2 / tcl / libs / ns-node.tcl"+  * ''​$ns duplex-link node1 node2 bandwidth delay queue-type'' ​creează ​**două** legături simplex de bandă ​ și întârziere ​specificatepentru a conecta ​cele două noduri. În NS-2, coada de ieșire a unui nod este implementată ca parte a unei legături, prin urmare, utilizatorii ar trebui să specifice ​tipul de coadă atunci când crează ​legături. În script-ul de mai sus, este utilizată coadă ​ de tip DropTail. În cazul în care se dorește ​ o coadă RED, pur și simplu ​se înlocuiește ​DropTail cu RED. Implementarea NS-2 a unei legături este prezentată într-o secțiune ulterioară. Ca și nodurile, link-urile sunt obiect ​compusedeci se pot crea sub-obiecte ​ce pot fi conectateCodul sursă ​pentru legături poate fi găsit în "ns-2 / tcl / libs / ns-lib.tcl"​ și  "ns-2 / tcl / libs / ns-link.tcl"​. ​Se remarcă ​faptul că se pot insera modulele de eroare într-o legătură pentru a simula ​o legătură cu pierderi ​(de fapt, utilizatorii pot crea și insera orice obiect ​de rețea). Consultați documentația pentru NS pentru ​detalii.  
-$ns duplex-link node1 node2 bandwidth delay queue-type ​de $ns duplex-link node1 node2 bandwidth delay queue-type de $ns duplex-link node1 node2 bandwidth delay queue-type ​creează două legături ​de simplex ​de lățime ​de bandă ​specificată ​și de întârziere, ​și se conectează ​cele două noduri ​specificate. În NS, coada de ieșire a unui nod este implementat ca parte a unei legături, prin urmare, utilizatorii ar trebui să specifice ​tipului ​de coadă atunci când crearea de legături. În script-ul ​de simulare ​de mai sus, este utilizat coadă DropTail. În cazul în care cititorul ​dorește ​să utilizeze ​o coadă RED, pur și simplu ​înlocuiți ​DropTail ​cuvânt ​cu RED. Implementarea NS a unei legături este prezentată într-o secțiune ulterioară. Ca un nodun link este un obiect ​compusiar utilizatorii ​pot crea sub-obiecte ​și să le și nodurile conectațiCodurile ​sursă ​link-ul pot fi găsite în "ns-2 / tcl / libs / ns-lib.tcl"​ și fișiere ​"ns-2 / tcl / libs / ns-link.tcl"​. ​Un lucru de remarcat este faptul că aveți posibilitatea să inserați modulele de eroare într-o ​componentă de legătură pentru a simula ​un link lossy (de fapt, utilizatorii pot face și insera orice obiecte ​de rețea). Consultați documentația pentru NS pentru ​a afla cum să facă acest lucru+  * ''​$ns queue-limit node1 node2 number'' ​Această linie stabilește ​dimensiunea cozii de așteptare a celor două legături simplex care conectează node1 și node2. ​Aruncați o privire la "ns-2 / tcl / libs / ns-lib.tcl"​ și "ns-2 / tcl / libs / ns-link.tcl",​ sau documentația NS-2 pentru mai multe informații. 
-$ns queue-limit node1 node2 number ​pentru $ns queue-limit node1 node2 number de $ns queue-limit node1 node2 number ​Această linie stabilește ​limita coada de așteptare a celor două legături simplex care se conectează node1 și node2 la numărul specificatLa acest moment, autorii nu știu cât de multe dintre aceste tipuri de functii membre ale obiectelor Simulator sunt disponibile și ceea ce sunt. Vă rugăm să aruncați o privire la "ns-2 / tcl / libs / ns-lib.tcl"​ și "ns-2 / tcl / libs / ns-link.tcl",​ sau documentația NS pentru mai multe informații. +  * ''​$ns duplex-link-op node1 node2 …''​ Urmatoarea linie este folosită ​pentru afișajul NAM. Pentru a vedea efectele ​ei, utilizatorii pot comenta și rerula simularea.
-$ns duplex-link-op node1 node2 … Urmatoarele doua linii sunt folosite ​pentru afișajul NAM. Pentru a vedea efectele ​acestor linii, utilizatorii pot comenta ​aceste linii și încercați simulare.+
    
-Now that the basic network setup is donethe next thing to do is to setup traffic agents such as TCP and UDP, traffic sources such as FTP and CBR, and attach ​them to nodes and agents respectively.+Odată configurată rețeaua de bazătrebuie configurați agenții de generare/​consum trafic, cum ar fi TCP și UDP, aplicațiile de generare/​consum trafic, cum ar fi FTP și CBR. Acestea trebuie atașate nodurilor și agenților într-un mod similar cu rularea aplicațiilor peste anumite protocoale în nodurile reale.  
 + 
 +  * ''​set tcp [new Agent/​TCP]''​ Această linie crează un agent TCP. Agenții și sursele de trafic sunt obiecte de  bază în cea mai mare parte implementate în C++ și "​legate"​ în OTcl. Prin urmarenu există funcții specifice ale obiectului simulator care creează aceste instanțe. Pentru a crea agenți sau surse de trafic, trebuie să se cunoască numele clasei ​ (''​Agent/​TCP'',​ ''​Agent/​TCPSink'',​ ''​Application/​FTP'',​ etc). Aceste informații pot fi găsite rapid  în fișierul "​ns-2/​tcl/​libs/​ns-default.tcl"​. Acest fișier conține configurări implicite pentru diverse obiecte. Sursele sunt un bun indicator pentru obiectele disponibile în NS-2 și ce parametrii lor.  
 +  * ''​$ns ​attach-agent node agent''​ Funcția ''​atttach-agent''​ conectează un obiect agent la un nod.  
 +  * ''​$ns connect agent1 agent2''​ După ce s-au creat doi agenți care se vor comunicatrebuie stabilită o conexiune ​ logică între ei. Această linie stabilește o conexiunea prin setarea reciprocă a adreselor și a porturilor. 
 + 
 +Odată configurația rețelei specificată,​ următorul lucru este implementarea unui scenariu de simulareObiectul Simulator are funcția ''​at'':​
  
-set tcp [new Agent/​TCP] ​Această linie arată cum să creați un agent TCP. Dar, în general, utilizatorii pot crea orice agent sau de trafic surse în acest fel. Agenți și sursele de trafic sunt obiecte de fapt de bază (nu doar obiecte compuse), cea mai mare parte puse în aplicare în C ++ și legate de OTcl. Prin urmare, nu există funcții specifice membru obiect Simulator care creează aceste instanțe obiect. Pentru a crea agenți sau surse de trafic, un utilizator trebuie să cunoască numele clasei acestor obiecte (Agent / TCP, Agnet / TCPSink, aplicație / FTP și așa mai departe). Aceste informații pot fi găsite în documentația NS sau parțial în această documentație. Dar, o comandă rapidă este să se uite la fișierul "ns-2 / TCL / libs / ns-default.tcl"​. Acest fișier conține implicit configurabile setările ​de valoare a parametrului pentru obiecte de rețea disponibilePrin urmareacesta funcționează ca un bun indicator de ce fel de obiecte de rețea sunt disponibile în NS și care sunt parametrii configurabile. +  * ''​$ns at time “string”'' ​Această funcție programează executarea ​șirului specificat ​la un moment ​de simulareDe exemplu''​$ns at 0.1 "$CBR start"''​ va face scheduler-ul să apeleze o funcție membru de start al obiectului ''​$CBR''​ la momentul ''​0.1s''​. În NS-2, o sursă de trafic ​nu transmite date reale, ci notifică agentul ​care de la baza anumită cantitate ​de date, iar agentul, creează pachete ​și le trimite în mod fidel implementărilor din kernel**considerând un CPU cu viteză infinită**.
-$ns attach-agent node agent de $ns attach-agent node agent Funcția de membru atașați-agent atașează un obiect agent creat într - un obiect nod. De fapt, ceea ce această funcție ​nu este apelează funcția de membru ​atașați ​de nod specificat, care se atașează agentul dat în sine. Prin urmare, un utilizator poate face același lucru, de exemplu, ​N0 atașați $ PPȚ. În mod similarfiecare obiect agent are funcție de membru atașați-agent care se atașează un obiect ​sursă de trafic ​pentru sine. +
-$ns connect agent1 agent2 După ce sunt create doi agenți ​care se vor comunica unele cu altele, urmatorul lucru este de a stabili ​conexiune ​de rețea logică între ele. Această linie stabilește o conexiune de rețea prin setarea adresei de destinație a rețelei ​și portul de adrese pereche reciproc. +
-Presupunând că toată configurația de rețea se faceurmătorul lucru de făcut este să scrie un scenariu de simulare (de exemplu, programarea simulare)Obiectul Simulator are multe functii membre de programare. Cu toate acestea, cel care este utilizat în principal este următoarea:​+
  
-$ns at time “string” de $ns at time “string” Acest membru al unui obiect Simulator face planificatorul (scheduler_ este variabila care indică obiectul planificator creat de [nou Programator] comanda la începutul script - ul) pentru a programa executarea șirului specificat la dat timp de simulare. De exemplu, $ ns la 0.1 "$ CBR start" va face programatorul apela o funcție membru de start al obiectului sursă de trafic CBR, care începe CBR pentru a transmite date. În NS, de obicei, o sursă de trafic nu transmite date reale, dar notifică agentul care stă la baza că are o anumită cantitate de date pentru a transmite, și agentul, știind cât de mult a datelor pentru a transfera, creează pachete și le trimite. +După ce s-au efectuat ​toate specificațiile de configurare a rețelei, ​specificat ​procedura post-simulare,​ singurul lucru rămas este rularea propriu-zisă. Acest lucru se face cu funcția ''​$ns run''​.
-După ce sunt efectuate ​toate specificațiile de configurare a rețelei, ​programarea și procedura ​de post-simulare,​ singurul lucru rămas este de a rula simulare. Acest lucru se face prin $ns run. a $ns run.+
  
-  * La rularea ​cu ''​ns ./​ns-simple.tcl''​ , se execută ​scriptul care generează "​filmul simulării"​ out.nameși se lansează animatorul ''​nam''​. Rulați slide-ul în animator pentru a accelera filmul, ​observați ​transferul pachetelor și comportarea cozii din nodul 2 +  * La rularea ​din shell ''​ns ./​ns-simple.tcl'',​ se execută ​simularea și se generează "​filmul simulării"​ out.namapoi se lansează animatorul ''​nam''​. Rulați slide-ul în animator pentru a accelera filmul, ​observând ​transferul pachetelor și comportarea cozii din nodul 2.  ​
  
 == Trasarea unui grafic == == Trasarea unui grafic ==
  
 ns2 permite implementarea cu ușurință a procedurilor specializate de generare de loguri. Aceste proceduri sunt apelate periodic în timpul simulării și permit adresarea tuturor datelor specifice nodurilor, fluxurilor, cozilor, și ale celorlalte entități din rețea.  ​ ns2 permite implementarea cu ușurință a procedurilor specializate de generare de loguri. Aceste proceduri sunt apelate periodic în timpul simulării și permit adresarea tuturor datelor specifice nodurilor, fluxurilor, cozilor, și ale celorlalte entități din rețea.  ​
-În partea de final a scriptului de mai sus, inserați ​codul următor. Apelată periodic, această procedură contorizează numărul de octe ți primiți de destinația UDP, și numărul de octeți confirmați la sursa TCP. În acest mod, se poate calcula debitul obținut de cele două fluxuri pe intervale fixe de timp. Cele două valori sunt stocate periodic într-un fișier text ''​out.tr''​. ​  +În partea de final a scriptului de mai sus, inserați ​patch-ul ​următor. Apelată periodic, această procedură contorizează numărul de octe ți primiți de destinația UDP, și numărul de octeți confirmați la sursa TCP. În acest mod, se poate calcula debitul obținut de cele două fluxuri pe intervale fixe de timp. Cele două valori sunt stocate periodic într-un fișier text ''​out.tr''​. ​  
 <file tcl> <file tcl>
 #Open a trace file  #Open a trace file 
Line 228: Line 233:
 </​file>​ </​file>​
 În plus, înainte de a demara simularea, trebuie să armăm procedura record cu ''​$ns at 0.0 "​record"''​. ​ În plus, înainte de a demara simularea, trebuie să armăm procedura record cu ''​$ns at 0.0 "​record"''​. ​
-După execuția scriptului, se vor lansa automat atât fereastra animatorului,​ cât și o fereastră gnuplot care afișează conținutul fișierului trace ''​out.tr''​+După execuția scriptului, se vor lansa automat atât fereastra animatorului,​ cât și o fereastră gnuplot care afișează conținutul fișierului trace ''​out.tr''​. {{ :​isrm:​laboratoare:​01:​lab1-gnuplot.png?​nolink&​300 |}} 
 + 
 +== Task-uri == 
   - examinați cu editorul de text conținutul fișierelor ''​out.nam''​ și ''​out.tr''​   - examinați cu editorul de text conținutul fișierelor ''​out.nam''​ și ''​out.tr''​
   - Ce reprezintă axele x, y? Explicați comportarea graficelor. ​   - Ce reprezintă axele x, y? Explicați comportarea graficelor. ​
   - Măriți coada de la link-ul bottleneck la 100. Cum explicați noua comportare? ​   - Măriți coada de la link-ul bottleneck la 100. Cum explicați noua comportare? ​
   - Coada aruncă pachete TCP în mod disproporționat. De ce? Folosiți o coadă SFQ pentru a remedia situația. ​   - Coada aruncă pachete TCP în mod disproporționat. De ce? Folosiți o coadă SFQ pentru a remedia situația. ​
 +  - În prezent se măsoară debitul la fiecare 250ms. Experimentați cu diverse rezoluții de măsurare în funcția "​record"​. ​
 +  - **Facultativ**:​ monitorizarea cozii ([[http://​www.mathcs.emory.edu/​~cheung/​Courses/​558-old/​Syllabus/​90-NS/​trace.html#​QMon| formatul ]] trace-ului queue)
 +<code tcl>
 +set qfile [$ns monitor-queue $n2 $n3  [open queue.tr w] 0.1]
 +[$ns link $n2 $n3] queue-sample-timeout ​
 +</​code>​
 +
 +
 +== Ne jucăm! ==
 + [[ http://​www.cisco.com/​E-Learning/​prod/​curriculum/​cco_tdo_ldd/​demos/​DandEguideSPN/​SpaceGame/​remote.html | Wireless Explorer ]] câteva nivele LOL. 
 +
  
  
isrm/laboratoare/01.1475083191.txt.gz · Last modified: 2016/09/28 20:19 by dragos.niculescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0