This shows you the differences between two versions of the page.
isrm:laboratoare:new:10 [2020/04/27 16:46] mbarbulescu [[03b] Justificarea ratei de coliziuni] |
isrm:laboratoare:new:10 [2023/05/09 12:54] (current) dragos.niculescu [[03c] Obțtinerea unui throughput mai mare] |
||
---|---|---|---|
Line 5: | Line 5: | ||
==== [00a] Pregătirea laboratorului ==== | ==== [00a] Pregătirea laboratorului ==== | ||
- | Dacă vreți să creați folder nou pe calculatoarele voastre: | + | <note important> |
+ | Pe [[:isrm:mv|mașina virtuală]] aveți tot ce trebuie în ''/home/student/ns-3-dev''. | ||
- | <code bash> | + | Dacă lucrați pe alt dispozitiv trebuie să rulați comenzile: |
- | git clone https://gitlab.com/b12mihai1/ns-3-dev.git ~/ns-3-dev | + | |
- | cd ~/ns-3-dev | + | |
- | git checkout -b isrm_2020 remotes/origin/isrm_2020 | + | |
- | git submodule init | + | |
- | git submodule update --remote --merge | + | |
- | git submodule foreach git pull origin master | + | |
- | ./waf configure --build-profile=debug --enable-examples --enable-tests && ./waf build -j4 | + | |
- | </code> | + | |
- | + | ||
- | Dacă folosiți [[:isrm:mv|mașina virtuală]]: | + | |
<code bash> | <code bash> | ||
- | student@isrm-vm:~$ cd ~/ns-3-dev | + | student@isrm-vm-2020:~$ git clone https://gitlab.com/nsnam/ns-3-dev.git |
+ | student@isrm-vm-2020:~$ cd ~/ns-3-dev | ||
+ | student@isrm-vm-2020:~/ns-3-dev$ git checkout -b ns-332-rel ns-3.32 | ||
+ | student@isrm-vm-2020:~$ cd ~/ns-3-dev/examples | ||
+ | student@isrm-vm-2020:~/ns-3-dev/examples$ git clone https://github.com/isrm-lab/ns3-labs.git | ||
+ | student@isrm-vm-2020:~$ cd ~/ns-3-dev | ||
+ | student@isrm-vm-2020:~$ ./waf configure --build-profile=debug --enable-examples --enable-tests | ||
+ | student@isrm-vm-2020:~$ ./waf build -j4 | ||
</code> | </code> | ||
+ | </note> | ||
- | Verificați că sunteți pe branch-ul ''isrm_2020'' din remote-ul https://gitlab.com/b12mihai1/ns-3-dev.git: | + | Pentru a lansa aplicatia de Jupyter Notebook, rulati urmatoarea comanda: |
<code bash> | <code bash> | ||
- | student@isrm-vm:~/ns-3-dev$ git remote -v | + | student@isrm-vm-2020:~$ jupyter-notebook |
- | origin https://gitlab.com/b12mihai1/ns-3-dev.git (fetch) | + | |
- | origin https://gitlab.com/b12mihai1/ns-3-dev.git (push) | + | |
- | + | ||
- | student@isrm-vm:~/ns-3-dev$ git branch -vv | + | |
- | * isrm_2020 5993ca379 [origin/isrm_2020] fix submodules to have https instead of ssh | + | |
- | master da1b41ed1 [origin/master] tcp: Ensure that congestion state is set after every notification | + | |
</code> | </code> | ||
- | |||
- | Rulați următoarele comenzi pentru update-ul submodului din ''examples/ns3-labs'': | ||
- | |||
- | <code bash> | ||
- | student@isrm-vm:~/ns-3-dev$ git submodule update --remote --merge | ||
- | </code> | ||
- | |||
- | Dacă cea de mai sus nu merge alternativ puteți încerca: | ||
- | |||
- | <code bash> | ||
- | student@isrm-vm:~/ns-3-dev$ git submodule foreach git pull origin master | ||
- | </code> | ||
- | |||
==== [00b] Rulare script ==== | ==== [00b] Rulare script ==== | ||
Line 197: | Line 177: | ||
Vom obtine 736 coliziuni pe parcursul a 100 de secunde ceea ce inseamna o rata de coliziuni de aproximativ 7 cps. | Vom obtine 736 coliziuni pe parcursul a 100 de secunde ceea ce inseamna o rata de coliziuni de aproximativ 7 cps. | ||
- | Deoarece toate dispozitive sunt în CS, nu avem terminale ascunse, iar coliziunile sunt cauzate de fereastra de contenție. Avem 2 transmițători: AP și stația 1, ce emit cadre de lungimi diferite. O coliziune durează până la sfârșitul cadrului cel mai lung (802.11 nu are CSMA/CD). Astfel, durata unei coliziuni este: 2.19 ms * 7 = 15.33 ms ceea ce inseamna ca dintr-o secunda (1000 ms), 1.53% din timp este irosit de coliziuni. | + | Deoarece toate dispozitive sunt în CS, nu avem terminale ascunse, iar coliziunile sunt cauzate de fereastra de contenție. Avem 2 transmițători: AP și stația 1, ce emit cadre de lungimi diferite. O coliziune durează până la sfârșitul cadrului cel mai lung (802.11 nu are CSMA/CD). Astfel, durata coliziunilor dintr-o secunda este: 2.19 ms * 7 = 15.33 ms ceea ce inseamna ca dintr-o secunda (1000 ms), 1.53% din timp este irosit de coliziuni. |
==== [02c] Justificarea ratei de coliziuni ==== | ==== [02c] Justificarea ratei de coliziuni ==== | ||
Line 206: | Line 186: | ||
Exprimarea matematica a ideii de mai sus este urmatoarea: | Exprimarea matematica a ideii de mai sus este urmatoarea: | ||
- | $$ \frac{x}{R_1} + \frac{x}{R_2} + \frac{C}{R_1} = 1 $$ $$ x = (1-\frac{C}{R_1})\frac{R_1R_2}{R_1+R_2} = \frac{{R_2}({R_1} - {C})}{R_1+R_2} = 291 pps$$. | + | $$ \frac{x}{R_1} + \frac{x}{R_2} + \frac{C}{R_1} = 1 $$ $$ x = \left(1-\frac{C}{R_1}\right)\frac{R_1R_2}{R_1+R_2} = \frac{{R_2}({R_1} - {C})}{R_1+R_2} = 291 pps$$. |
Convertim pps in Mbps si o sa obtinem urmatoarea valoare: 291 * 1460 * 8 = 3.398 Mbps, consistent cu ce am obținut în simulare (3.375 Mbps). | Convertim pps in Mbps si o sa obtinem urmatoarea valoare: 291 * 1460 * 8 = 3.398 Mbps, consistent cu ce am obținut în simulare (3.375 Mbps). | ||
Line 272: | Line 252: | ||
Dar debitul obținut pentru fiecare flux este doar \(x/2\) = 87pps, adică 1.01 Mbps. | Dar debitul obținut pentru fiecare flux este doar \(x/2\) = 87pps, adică 1.01 Mbps. | ||
* Stația 1 ocupă 175 * 2.19 ms = 383.25 ms -> 38.3% din timp | * Stația 1 ocupă 175 * 2.19 ms = 383.25 ms -> 38.3% din timp | ||
- | * Stația 2 ocupă 175 * 2.19 ms = 206.5 ms -> 38.3% din timp | + | * Stația 2 ocupă 175 * 2.19 ms = 383.25 ms -> 38.3% din timp |
* AP ocupă 175 * 1.18 ms = 206.5 ms -> 20.6% din timp | * AP ocupă 175 * 1.18 ms = 206.5 ms -> 20.6% din timp | ||
* Coliziuni - 2.8% din timp (am obtinut anterior 1.9%, o valoare relativ apropiata de 2.8%) | * Coliziuni - 2.8% din timp (am obtinut anterior 1.9%, o valoare relativ apropiata de 2.8%) | ||
Line 278: | Line 258: | ||
+ | ==== [03c] Obținerea unui throughput mai mare ==== | ||
+ | |||
+ | * Cum obținem mai mult de 1.04Mbps + 1.04Mbps în experimentul de la 3b? |