Differences

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

Link to this comparison view

isrm:laboratoare:02 [2018/01/19 14:48]
dragos.niculescu
isrm:laboratoare:02 [2019/02/28 20:45] (current)
mbarbulescu
Line 1: Line 1:
 ==== Laboratorul 2 ==== ==== Laboratorul 2 ====
 +Cuprins ​
 +   - introducere în gnuplot ​
 +   - introducere în awk 
 +   - comenzi utile în shell 
 +   - wireless ns-2
  
-== Introducere în gnuplot ​((Ghid bazat pe [[ http://​www.gnuplotting.org/​plotting-data/​ | Gnuplot Guide ]])) ==+ 
 +=== 1. Introducere în gnuplot ​===
        
-Plotarea datelor rezultate din măsurători sau+Plotarea datelor ​((Ghid bazat pe [[ http://​www.gnuplotting.org/​plotting-data/​ | Gnuplotting ]])) rezultate din măsurători sau
 simulări este probabil cea mai frecventă utilizare a programului simulări este probabil cea mai frecventă utilizare a programului
 gnuplot. Gnuplot gnuplot. Gnuplot
Line 9: Line 15:
 modul interactiv, fiecare comandă este scrisa la promptul gnuplot, cu modul interactiv, fiecare comandă este scrisa la promptul gnuplot, cu
 posibilitatea de a folosi la sfârsit comanda save pentru a posibilitatea de a folosi la sfârsit comanda save pentru a
-salva comenzuile ​într-un script. Un script scris manual, sau obtinut+salva comenzile ​într-un script. Un script scris manual, sau obtinut
 cu save poate fi pasat ca parametru programului gnuplot cu save poate fi pasat ca parametru programului gnuplot
 pentru a genera grafice. pentru a genera grafice.
Line 22: Line 28:
 onține datele ca coloane. Considerăm fișierul de date numit  plotting\_data1.dat onține datele ca coloane. Considerăm fișierul de date numit  plotting\_data1.dat
  ce conține ( gnuplot-ul ignoră liniile care încep cu diez \#):  ce conține ( gnuplot-ul ignoră liniile care încep cu diez \#):
-\begin{verbatim} +<file txt data1> 
- # ​plotting_data1.dat + # ​comentarii ​ 
- # ​XY+ # ​X Y
    1 2    1 2
    2 3    2 3
    3 2    3 2
    4 1    4 1
-\end{verbatim}+</​file>​
 Poate fi plotat scriind: Poate fi plotat scriind:
-\begin{verbatim}+<code gnuplot>
 set style line 1 lc rgb '#​0060ad'​ lt 1 lw 2 pt 7 ps 3.5 set style line 1 lc rgb '#​0060ad'​ lt 1 lw 2 pt 7 ps 3.5
-# albastru: +plot 'data1' with linespoints ls 1 
-plot 'plotting_data1.dat' with linespoints ls 1 +</​code>​
-\end{verbatim}+
  
 Aici setăm tipul de punct (pt) și dimensiunea punctului Aici setăm tipul de punct (pt) și dimensiunea punctului
-(ps) de utilizat. Pentru stilurile de puncte și linii disponibile,​ puteți să +(ps), și culoarea (lc) de utilizat. Pentru stilurile de puncte și linii disponibile,​ puteți să 
-rulați comanda test la promptul gnuplot. Imaginea rezultată este prezentată în +rulați comanda ​**test** la promptul gnuplot. Imaginea rezultată este 
-figura \ref{fig:gnuplot1}. +{{ :​isrm:​laboratoare:​02:​gnuplot:​plotting_data1.png?nolink |}}
- +
-\begin{figure} +
-  \includegraphics[width=7cm]{figures/​plotting_data1.png} +
-  \caption{Plotul datelor din plotting\_data1.dat} +
-  \label{fig:​gnuplot1} +
-\end{figure}+
  
 Dacă avem colecții de puncte care reprezintă date ne-continue,​ putem Dacă avem colecții de puncte care reprezintă date ne-continue,​ putem
 indica aceasta prin introducerea unei linii indica aceasta prin introducerea unei linii
-libere între date (Figura \ref{fig:​gnuplot2}).+libere între date 
  
-\begin{verbatim} +<file txt data2> 
- # ​plotting_data2.dat+ # ​data2
  # XY  # XY
    1 2    1 2
Line 60: Line 59:
    3 2    3 2
    4 1    4 1
-\end{verbatim}+</​file>​
        
-\begin{figure} +{{ :isrm:laboratoare:02:​gnuplot:​plotting_data2.png?nolink |}}
-  \includegraphics[width=7cm]{figures/​plotting_data2.png} +
-  \caption{Plotarea datelor din plotting\_data2.dat ca linie non-continuă} +
-  \label{fig:gnuplot2} +
-\end{figure} +
- +
-\subsection{Date simple} +
-La început, vom analiza un fișier de date. Acesta poate fi un fișier text care c +
-onține datele ca coloane. Considerăm fișierul de date numit  plotting\_data1.dat +
- ce conține ( gnuplot-ul ignoră liniile care încep cu diez \#): +
-\begin{verbatim} +
- # plotting_data1.dat +
- # XY +
-   1 2 +
-   2 3 +
-   3 2 +
-   4 1 +
-\end{verbatim} +
-Poate fi plotat scriind: +
-\begin{verbatim} +
-set style line 1 lc rgb '#​0060ad'​ lt 1 lw 2 pt 7 ps 3.5 +
-# albastru: +
-plot '​plotting_data1.dat'​ with linespoints ls 1 +
-\end{verbatim} +
- +
-Aici setăm tipul de punct (pt) și dimensiunea punctului +
-(ps) de utilizat. Pentru stilurile de puncte și linii disponibile,​ puteți să +
-rulați comanda test la promptul ​gnuplot. Imaginea rezultată este prezentată în +
-figura \ref{fig:gnuplot1}. +
- +
-\begin{figure} +
-  \includegraphics[width=7cm]{figures/​plotting_data1.png} +
-  \caption{Plotul datelor din plotting\_data1.dat} +
-  \label{fig:​gnuplot1} +
-\end{figure} +
- +
-Dacă avem colecții de puncte care reprezintă date ne-continue,​ putem +
-indica aceasta prin introducerea unei linii +
-libere între date (Figura \ref{fig:​gnuplot2}). +
- +
-\begin{verbatim} +
- # plotting_data2.dat +
- # XY +
-   1 2 +
-   2 3 +
- +
-   3 2 +
-   4 1 +
-\end{verbatim} +
-    +
-\begin{figure} +
-  \includegraphics[width=7cm]{figures/​plotting_data2.png} +
-  \caption{Plotarea datelor din plotting\_data2.dat ca linie non-continuă} +
-  \label{fig:​gnuplot2} +
-\end{figure}+
  
 Dacă dorim să folosim altă culoare pentru cel de-al doilea set de date Dacă dorim să folosim altă culoare pentru cel de-al doilea set de date
Line 122: Line 67:
 liberă. Apoi trebuie să indexăm blocul de date începând cu comanda '​index'​. liberă. Apoi trebuie să indexăm blocul de date începând cu comanda '​index'​.
  
-\begin{verbatim} +<file txt data3> 
- # ​plotting_data3.dat+ # ​data3
  # Primul bloc de date (index 0)  # Primul bloc de date (index 0)
  # X Y  # X Y
Line 134: Line 79:
    3 2    3 2
    4 1    4 1
-\end{verbatim}+</​file>​ 
 Și plotăm cu comenzile: Și plotăm cu comenzile:
-\begin{verbatim}+<code gnuplot>
 # albastru: # albastru:
 set line style 1 lc rgb '# 0060ad'​ lt 1 lw 2 pt 7 ps 3.5 set line style 1 lc rgb '# 0060ad'​ lt 1 lw 2 pt 7 ps 3.5
 # roșu: # roșu:
 set line style 2 lc rgb '# dd181f'​ lt 1 lw 2 pt 5 ps 3.5 set line style 2 lc rgb '# dd181f'​ lt 1 lw 2 pt 5 ps 3.5
-plot 'plotting-data3.dat' index 0 w lp ls 1 , \ +plot '​data3'​ index 0 w lp ls 1 , \ 
-      '' ​indicele ​1 w lp ls 2 +      '' ​index 1 w lp ls 2 
-\end{verbatim} +</​code>​
  
 +Atenție, gnuplot dorește toată comanda pe o singură linie, de aceea poate fi necesar un backslash "​\"​. ​
 După cum putem vedea, am adăugat un alt tip de culoare și punct și am După cum putem vedea, am adăugat un alt tip de culoare și punct și am
 reprezentat cele două seturi de date utilizând indexul și separat reprezentat cele două seturi de date utilizând indexul și separat
 parcelele cu o virgulă. Pentru a reutiliza ultimul nume de fișier, parcelele cu o virgulă. Pentru a reutiliza ultimul nume de fișier,
-putem scrie doar ''​ . Rezultatul este prezentat în figura 3.+putem folosi un nume vid \'\'. Rezultatul este 
  
-\begin{figure} +{{ :​isrm:​laboratoare:​02:​gnuplot:​plotting_data2.png?nolink |}}
-  \includegraphics[width=7cm]{figures/​plotting_data3.png} +
-  \caption{Plotarea datelor din plotting\_data3.dat cu două stiluri diferite.} +
-  \label{fig:​gnuplot3} +
-\end{figure}+
  
  
-\subsection{Datele ​cu erori}+== Date cu erori ==
  
 O necesitate frecventă este reprezentarea datelor cu bare de erori O necesitate frecventă este reprezentarea datelor cu bare de erori
Line 166: Line 108:
 de măsurare a puterii: de măsurare a puterii:
  
-\begin{verbatim} +<file txt battery.dat>
-battery.dat+
 # X Y stddev # X Y stddev
 50.000000 0.036990 0.007039 50.000000 0.036990 0.007039
Line 187: Line 128:
 2.000000 0.091000 0.011203 2.000000 0.091000 0.011203
 0.000000 0.081480 0.011828 0.000000 0.081480 0.011828
-\end{verbatim}+</​file>​
  
 Vom plota astfel: Vom plota astfel:
-\begin{verbatim}+<code gnuplot>
  set xrange [ -2 : 52 ]  set xrange [ -2 : 52 ]
  set yrange [ 0 : 0.12 ]  set yrange [ 0 : 0.12 ]
Line 197: Line 138:
       w yerrorbars ls 1 , \       w yerrorbars ls 1 , \
       ''​ using  1:2 w lines ls 1       ''​ using  1:2 w lines ls 1
-\end{verbatim}+</​code>​
  
  
Line 204: Line 145:
 măsură. Așadar, am setat opțiunea de format pentru a spune măsură. Așadar, am setat opțiunea de format pentru a spune
 gnuplot-ului să folosească "​mantisa as base of current logscale",​ vezi gnuplot-ului să folosească "​mantisa as base of current logscale",​ vezi
-documentația gnuplot . Apoi, cu indicația ​{\texttt ​using}, se+documentația gnuplot . Apoi, cu indicația ​**using**, se
 specifică gnuplot ce coloane din fișierul de date ar trebui să specifică gnuplot ce coloane din fișierul de date ar trebui să
 utilizeze. Deoarece vrem să plotăm eroarea puterii și puterea, avem nevoie de utilizeze. Deoarece vrem să plotăm eroarea puterii și puterea, avem nevoie de
 trei coloane - 1,2, și 4. Folosind stilul de trei coloane - 1,2, și 4. Folosind stilul de
-plotare ​{\texttt ​yerrorbarsnu este posibilă combinarea punctelor cu o +plotare ​ **yerrorbars** nu este posibilă combinarea punctelor cu o 
-linie. Prin urmare, adăugăm o a doua linie la comanda ​{\texttt ​plotpentru a +linie. Prin urmare, adăugăm o a doua linie la comanda ​**plot** pentru a 
-combina punctele cu o linie. Acest lucru ne va da rezultatul din +combina punctele cu o linie. Acest lucru va rezulta în
-figura \ref{fig:gnuplot4}. + 
-\begin{figure} +{{ :​isrm:​laboratoare:​02:​gnuplot:​battery_data.png?nolink |}} 
-  ​\includegraphics[width=7cm]{figures/battery_data.png} + 
-  \caption{Plotarea datelor din battery.dat cu erori pentru axa y (putere). ​+Putem evita comanda ​**set format** din ultimul grafic prin manipularea
-  ​\label{fig:​gnuplot4} +
-\end{figure} +
-Putem evita comanda ​{\texttt ​set formatdin ultimul grafic prin manipularea+
 directă a datelor de intrare: directă a datelor de intrare:
  
-\begin{verbatim}+<code gnuplot>
  set yrange [ 0:120 ]  set yrange [ 0:120 ]
- plot '​battery.dat'​ using 1:​($2*1000):​($4*1000)\+ plot '​battery.dat'​ using 1:​($2*1000):​($3*1000)\
                     w yerrorbars ls 1                     w yerrorbars ls 1
-\end{verbatim}+</​code>​
  
 Atenție, sunt necesare paranteze în jurul Atenție, sunt necesare paranteze în jurul
-expresiilor pe coloană, iar numărul coloanei este indicat cu \$column\_number ​.+expresiilor pe coloană, iar numărul coloanei este indicat cu caracterul ​\$.
  
-În ultimul grafic ​vom adăuga date teoretice și o legendă: +În ultimul grafic adăugăm date teoretice și o legendă: 
-\begin{verbatim}+<code gnuplot>
 # Legendă # Legendă
 set key at  50,112 set key at  50,112
Line 237: Line 175:
 # Curba teoretică # Curba teoretică
 P(x) = 1.53**2 * x/(5.67 + x)**2 * 1000 P(x) = 1.53**2 * x/(5.67 + x)**2 * 1000
-plot '​battery.dat'​ using 1:​($2*1000):​($4*1000) \+plot '​battery.dat'​ using 1:​($2*1000):​($3*1000) \
                     title "​Power"​ w yerr ls 2 , \                     title "​Power"​ w yerr ls 2 , \
       P(x) title '​Theory'​ w lines ls 1       P(x) title '​Theory'​ w lines ls 1
-\end{verbatim}+</​code>​
  
-În general, legenda este activată cu comanda ​{\texttt ​set +În general, legenda este activată cu comanda ​**set key**, iar poziția sa poate fi specificată prin **set key top left**,
-  ​key}, iar poziția sa poate fi specificată prin {\texttt ​set key top left},+
 etc. Puteți, de asemenea, să o setați direct la un punct așa cum am etc. Puteți, de asemenea, să o setați direct la un punct așa cum am
-făcut-o aici, pentru a avea suficient spațiu între ​chei și +făcut-o aici, pentru a avea suficient spațiu între ​legendă ​și 
-ticuri. Cuvântul cheie din title în comanda ​complot ​specifică textul+ticuri. Cuvântul cheie din titlu în comanda ​plot specifică textul
 care va fi afișat în legendă. care va fi afișat în legendă.
  
-\begin{figure} +{{ :​isrm:​laboratoare:​02:​gnuplot:​battery.png?nolink |}}
-  \includegraphics[width=7cm]{figures/​battery_theoretical.png} +
-  \caption{Plotarea datelor din battery.dat cu erori y și o curbă teoretică. } +
-  \label{fig:​gnuplot5} +
-\end{figure}+
  
  
-Alte comenzi utile gnuplot: +  * Alte comenzi utile gnuplot: 
-\begin{Verbatim}[fontsize=\small]+<code gnuplot>
 set term png       # setează terminalul într-un format set term png       # setează terminalul într-un format
 set out '​file.png'​ # va plota într-un fisier set out '​file.png'​ # va plota într-un fisier
Line 266: Line 199:
 help plot with     # manual la prompt help plot with     # manual la prompt
 save '​file.plot' ​  # creează un script pt plotul curent save '​file.plot' ​  # creează un script pt plotul curent
-\end{Verbatim} +</​code>​ 
- + 
- +
- +
- +
  
  
-  * **Exercițiul 1** realizați folosind ''​gnuplot''​ graficul din laboratorul 1. Indicați semnificațiile axelor și legenda. Salvați imaginea în format ''​png/​svg'',​ și scriptul pentru restaurarea imaginilor. + **Exercițiul 1** realizați folosind ''​gnuplot''​ graficul din laboratorul 1. Indicați semnificațiile axelor și legenda. Salvați imaginea în format ''​png/​svg'',​ și scriptul pentru restaurarea imaginilor. 
-       * Exemplu<​code>​+       * Exemplu<​code ​gnuplot>
 plot '​out.tr'​ using 1:2 t "​TCP"​ with lp, \ plot '​out.tr'​ using 1:2 t "​TCP"​ with lp, \
      '​out.tr'​ using 1:3 t "​UDP"​ with lines lw 3      '​out.tr'​ using 1:3 t "​UDP"​ with lines lw 3
Line 287: Line 216:
 </​code> ​ {{:​isrm:​laboratoare:​02:​lab02bw.png?​300|}} </​code> ​ {{:​isrm:​laboratoare:​02:​lab02bw.png?​300|}}
  
-== Introducere în awk ==+=== 2. Introducere în awk ===
     * AWK (K vine de la Kernighan) este mic, simplu, și rapid, spre deosebire de perl sau python. Nu poți face tot ce faci în perl/​python,​ dar poți face foarte ușor multe taskuri de procesare de text. Are o sintaxă apropiată de C, dar preferă datele organizate pe coloane, ca foarte multe date în rețelistică:​ trace-uri de simulare, tcpdump, loguri, etc. Un mare avantaj este ca poate fi rulat direct de pe linia de comandă, fără a mai folosi un script separat - de multe ori apare într-un pipeline cu cat, sed, tr.      ​     * AWK (K vine de la Kernighan) este mic, simplu, și rapid, spre deosebire de perl sau python. Nu poți face tot ce faci în perl/​python,​ dar poți face foarte ușor multe taskuri de procesare de text. Are o sintaxă apropiată de C, dar preferă datele organizate pe coloane, ca foarte multe date în rețelistică:​ trace-uri de simulare, tcpdump, loguri, etc. Un mare avantaj este ca poate fi rulat direct de pe linia de comandă, fără a mai folosi un script separat - de multe ori apare într-un pipeline cu cat, sed, tr.      ​
-    * În cazul cel mai des întâlnit, se specifică un program care este rulat succesiv pentru fiecare linie de intrare: <​code>​cat trace.out | awk '​{print $2}'</​code>​ afișează coloana a doua a fiecărei linii. De exemplu, pentru acest fișier: <file txt trace.out>​+    * În cazul cel mai des întâlnit, se specifică un program care este rulat succesiv pentru fiecare linie de intrare: <​code ​awk>cat trace.out | awk '​{print $2}'</​code>​ afișează coloana a doua a fiecărei linii. De exemplu, pentru acest fișier: <file txt trace.out>​
 10 2    0.2 10 2    0.2
 11 3 0.3 11 3 0.3
Line 296: Line 225:
 13 3 0.1 13 3 0.1
 14 4 0.05 </​file>​ 14 4 0.05 </​file>​
-    * <​code>​cat trace.out | awk '​{print $1+$2, $2 $3, i++;​}'</​code>​ produce <​code>​+    * <​code ​awk>cat trace.out | awk '​{print $1+$2, $2 $3, i++;​}'</​code>​ produce <​code>​
 12 20.2 0 12 20.2 0
 14 30.3 1 14 30.3 1
Line 310: Line 239:
        * tipurile sunt slabe - int, float, string, din context  ​        * tipurile sunt slabe - int, float, string, din context  ​
        * spațiu este operator de concatenare pe stringuri        * spațiu este operator de concatenare pe stringuri
-    * <​code>​cat trace.out | awk 'NF==3 { s+=$3; n++} /​1[2-3]/​{print $0} END{print ​ n, s/​n}'</​code>​ produce <​code>​+    * <​code ​awk>cat trace.out | awk 'NF==3 { s+=$3; n++} /​1[2-3]/​{print $0} END{print ​ n, s/​n}'</​code>​ produce <​code>​
 12 2 0.2 12 2 0.2
 13 3 0.1 13 3 0.1
Line 321: Line 250:
  
 /​********************** /​**********************
-  - Exercițiul 2: Folosind <​code>​set qfile [$ns monitor-queue $n3 $n4  [open queue.tr w] 0.1]+  - Exercițiul 2: Folosind <​code ​tcl>set qfile [$ns monitor-queue $n3 $n4  [open queue.tr w] 0.1]
 [$ns link $n3 $n4] queue-sample-timeout;​ </​code>​ [$ns link $n3 $n4] queue-sample-timeout;​ </​code>​
  ​plotați dimensiunea în pachete cozii pe link-ul de ieșire [[http://​www.mathcs.emory.edu/​~cheung/​Courses/​558-old/​Syllabus/​90-NS/​trace.html#​QMon | Formatul]] fișierului queue.tr  ​  ​plotați dimensiunea în pachete cozii pe link-ul de ieșire [[http://​www.mathcs.emory.edu/​~cheung/​Courses/​558-old/​Syllabus/​90-NS/​trace.html#​QMon | Formatul]] fișierului queue.tr  ​
      * {{:​isrm:​laboratoare:​02:​lab02qsize.png?​300|}}      * {{:​isrm:​laboratoare:​02:​lab02qsize.png?​300|}}
 ************************/​ ************************/​
-  - **Exercițiul 2**: În laboratorul 1, folosiți <code tcl>$tcp attach [open tcp.tr w]+ 
 + **Exercițiul 2**: În laboratorul 1, folosiți <code tcl>$tcp attach [open tcp.tr w]
 $tcp trace cwnd_ $tcp trace cwnd_
 $tcp trace rtt_ </​code>​ $tcp trace rtt_ </​code>​
Line 335: Line 265:
        * Care este relația dintre RTT și debite? ​        * Care este relația dintre RTT și debite? ​
  
- == ns-2 wireless ==+ 
 + === 3. comenzi utile de shell ===  
 +  * bash face toate calculele pe integer. <code bash> 
 +$ x=5  
 +$ echo $(($x / 3)) 
 +
 +</​code>​ 
 +  * <code bash> 
 +$ awc() { awk "​BEGIN{print $*}"; } 
 +funcția poate fi adăugata la .bashrc 
 +$ awc "$x / 3" 
 +1.66667 
 +</​code>​ 
 +  * este necesar adesea să rulăm o buclă de pe linia de comandă <code bash> 
 +$for i in `seq 10 2 20`; do awc "$i / 10"; done  
 +
 +1.2 
 +1.4 
 +1.6 
 +1.8 
 +
 +
 +</​code>​ 
 +  * în multe cazuri se lucrează direct de la prompt pentru a pregăti datele de plotat  
 +  * script one liner <color red>​**foarte des folosit în majoritatea laboratoarelor**</​color>,​ datele vor fi pe ecran și în fișierul "​out.a" ​ <code bash> 
 +$ i=1; while [ $i -le 10 ]; do echo -n "$i "; ​ns ./​script.tcl ​-rate0 "​$(($i*100))Kbps"​| grep Throughput |head -n1 | awk '​{print $2}'; i=$(($i+1));​ done | tee ./out.a  
 +1 505744.0 
 +2 989296.0 
 +3 1495040.0 
 +4 2026480.0 
 +5 2504192.0 
 +6 3004096.0 
 +7 3143088.0 
 +8 3120896.0 
 +9 3118560.0 
 +10 3124400.0 
 +$</​code>​ 
 +    * atenție la spațiile de lânga parantezele drepte, și de lângă do, done. atenție la ; după fiecare comandă; înainte de do, done 
 +    * ''​echo -n''​ nu printează un CR la sfârsitul liniei, util pentru a ține un experiment pe o linie  
 +    * ''​ns ./​script.tcl''​ produce un output de tipul ''​Throughput 505744.0 bps''​ din care reținem cu **awk** doar câmpul 2 
 +    * ''​head -n1''​ reține doar prima linie de Throughput  
 +    * comanda ''​tee''​ lasă outputul pe ecran, dar îl salvează și în fișierul **out**, gata de plotat  
 + 
 +       
 + === 4. wireless ​ns-2 ===
  
 Citiți [[ http://​www.mathcs.emory.edu/​~cheung/​Courses/​558-old/​Syllabus/​90-NS/​4-Wireless/​intro.html | ns2 wireless tutorial ]] Citiți [[ http://​www.mathcs.emory.edu/​~cheung/​Courses/​558-old/​Syllabus/​90-NS/​4-Wireless/​intro.html | ns2 wireless tutorial ]]
Line 371: Line 345:
       * detaliu http://​www.isi.edu/​nsnam/​ns/​doc/​node186.html       * detaliu http://​www.isi.edu/​nsnam/​ns/​doc/​node186.html
  
-  - Exercițiul 3: modificați ''​simple-wireless.tcl''​ din Marc Greis sec IX pentru ​+ **Exercițiul 3**: modificați ''​simple-wireless.tcl''​ din Marc Greis sec IX pentru ​
     * a utiliza noul format de trace ( cu ''​$ns_ use-newtrace''​)     * a utiliza noul format de trace ( cu ''​$ns_ use-newtrace''​)
     * a monitoriza evenimentele de la nivelele 2 și 4 (agent și MAC)     * a monitoriza evenimentele de la nivelele 2 și 4 (agent și MAC)
Line 389: Line 363:
     * comparați pierderile între cadrele ACK și RTS (( ACK=0 pierderi, RTS=14 pierderi. Dacă nodurile sunt în apropiere, conversația RTS-CTS-Date-ACK se desfășoară cu bine, nu se pierd ACK-uri. La distanță mare, destinația nu răspunde la RTS, deci sunt pierdute, și nu se mai ajunge la ACK.))     * comparați pierderile între cadrele ACK și RTS (( ACK=0 pierderi, RTS=14 pierderi. Dacă nodurile sunt în apropiere, conversația RTS-CTS-Date-ACK se desfășoară cu bine, nu se pierd ACK-uri. La distanță mare, destinația nu răspunde la RTS, deci sunt pierdute, și nu se mai ajunge la ACK.))
     * justificați diferențele     * justificați diferențele
-  - dezactivați RTS/CTS folosind <​code>​Mac/​802_11 set RTSThreshold_ ​   3000</​code>​ și comparați performanța TCP cu cazul precendent. Sugestie: plotați evoluția în timp a numerelor de secvență ​  ((Numărul de secvență în timp este de fapt throughput. RTS-CTS introduce un overhead, de fapt timp pierdut, care duce la un throughput redus. ​)) + 
-    * <​code>​ cat simple.tr | grep '​^r' ​ | grep AGT | grep tcp | grep -v ack | awk '​{print $3, $47}' </​code>​ + ​**Exercițiu 4** dezactivați RTS/CTS folosind <​code>​Mac/​802_11 set RTSThreshold_ ​   3000</​code>​ și comparați performanța TCP cu cazul precendent. Sugestie: plotați evoluția în timp a numerelor de secvențăNumărul de secvență în timp este de fapt throughput. RTS-CTS introduce un overhead, de fapt timp pierdut, care duce la un throughput redus.  
-    * {{:​isrm:​laboratoare:​02:​lab02tcp_rts.png?​300|}} ​+   ​* <​code ​bash> cat simple.tr | grep '​^r' ​ | grep AGT | grep tcp | grep -v ack | awk '​{print $3, $47}' </​code>​ 
 +   ​* {{:​isrm:​laboratoare:​02:​lab02tcp_rts.png?​300|}} ​
isrm/laboratoare/02.1516366081.txt.gz · Last modified: 2018/01/19 14:48 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