This shows you the differences between two versions of the page.
isrm:laboratoare:new:01 [2021/01/01 18:13] vlad.traista [Rulare exemple existente] |
isrm:laboratoare:new:01 [2021/01/01 18:24] (current) vlad.traista [Development] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 01: Introducere în ns-3 ====== | ====== Laborator 01: Introducere în ns-3 ====== | ||
- | ''ns-3'' este un simulator de rețele (''Ethernet'', ''WiFi'', ''4G'' etc.) ce oferă: | + | ''ns-3'' este un simulator de rețele (''Ethernet'', ''Wi-Fi'', ''4G'' etc.) ce oferă: |
* modele pentru studiul circulației unui pachet în rețea | * modele pentru studiul circulației unui pachet în rețea | ||
* un engine pentru simulări de rețele complexe (noduri, modele de propagare, trafic ''UDP''/''TCP'' etc.) | * un engine pentru simulări de rețele complexe (noduri, modele de propagare, trafic ''UDP''/''TCP'' etc.) | ||
* un mecanism de tracing atat in format text, cat și în format pcap. | * un mecanism de tracing atat in format text, cat și în format pcap. | ||
- | Simulatorul este scris în ''C++'', iar modelele se pot dezvolta în ''C++'' sau ''Python''. In cadrul laboratoarelor vom folosi și vom dezvolta modele în ''C++'' deoarece suportul oferit in ''ns-3'' este mai bun decat cel pentru ''Python''. | + | Simulatorul este scris în ''C++'', iar modelele se pot dezvolta în ''C++'' sau ''Python''. In cadrul laboratoarelor vom folosi și vom dezvolta modele în ''C++'' deoarece capabilitatile si suportul oferite in ''ns-3'' sunt mai bune decat cele pentru ''Python''. |
**Obiectiv:** Acest laborator oferă o idee de bază a modului în care funcționează simulatorul: | **Obiectiv:** Acest laborator oferă o idee de bază a modului în care funcționează simulatorul: | ||
Line 179: | Line 179: | ||
</code> | </code> | ||
- | Iată un exemplu de schimb de pachete Wifi pentru procedura de asociere a stației la access point: | + | Iată un exemplu de schimb de pachete Wi-Fi pentru procedura de asociere a stației la access point: |
{{:isrm:laboratoare:new:sample-pcap-caputre-ns3.png?500|}} | {{:isrm:laboratoare:new:sample-pcap-caputre-ns3.png?500|}} | ||
Line 189: | Line 189: | ||
===== Structura unui cod sursă al unei simulări în C++ ===== | ===== Structura unui cod sursă al unei simulări în C++ ===== | ||
- | Parcurgem codul sursă din ''ns3/examples/wifi-tcp.cc'' | + | Parcurgem codul sursă din ''ns3/examples/wireless/wifi-tcp.cc'' |
Urmariți și explicațiile de aici: https://www.nsnam.org/docs/tutorial/html/building-topologies.html#building-a-wireless-network-topology | Urmariți și explicațiile de aici: https://www.nsnam.org/docs/tutorial/html/building-topologies.html#building-a-wireless-network-topology | ||
===== Structura modelului Wi-Fi ===== | ===== Structura modelului Wi-Fi ===== | ||
- | În cadrul laboratorului ne vom concentra pe simulări Wi-Fi (IEEE 802.11). ''ns-3'' ne oferă posibilitatea de a configura toate nivelele din stiva OSI: | + | În cadrul laboratorului ne vom concentra pe simulări Wi-Fi (IEEE ''802.11''). ''ns-3'' ne oferă posibilitatea de a configura toate nivelele din stiva OSI: |
- | * PHY - modelul de canal, propagare, atenuare, senzitivitatea receptorilor | + | * ''PHY'' - modelul de canal, propagare, atenuare, senzitivitatea receptorilor |
- | * MAC: | + | * ''MAC'': |
- | * LMAC (lower MAC): accesul la mediu (DCF/EDCA ca algoritmi de backoff pentru evitarea coliziunilor), RTS/CTS, ACK-uri de nivel 2 | + | * ''LMAC'' (lower ''MAC''): accesul la mediu (''DCF''/''EDCA'' ca algoritmi de backoff pentru evitarea coliziunilor), ''RTS/CTS'', ''ACK''-uri de nivel 2 |
- | * UMAC (upper MAC): beacon, probe request/probe response, WPA2 etc. | + | * ''UMAC'' (upper ''MAC''): beacon, probe request/probe response, ''WPA2'' etc. |
- | * IPv4, TCP/UDP - tipul de trafic între noduri | + | * ''IPv4'', ''TCP''/''UDP'' - tipul de trafic între noduri |
{{:isrm:laboratoare:new:wifiarchitecture.png?600|}} | {{:isrm:laboratoare:new:wifiarchitecture.png?600|}} | ||
Line 212: | Line 212: | ||
<code bash> | <code bash> | ||
- | student@isrm-vm-2020:~/ns-3-dev$ ./waf --command-template="valgrind \ | + | student@isrm-vm:~/ns3$ ./waf --command-template="valgrind \ |
--leak-check=full --show-reachable=yes %s" \ | --leak-check=full --show-reachable=yes %s" \ | ||
--run wifi-tcp | --run wifi-tcp | ||
- | Waf: Entering directory `/home/vagrant/facultate/isrm/ns-3-dev/build' | + | Waf: Entering directory `/home/student/ns3/build' |
- | Waf: Leaving directory `/home/vagrant/facultate/isrm/ns-3-dev/build' | + | Waf: Leaving directory `/home/student/ns3/build' |
Build commands will be stored in build/compile_commands.json | Build commands will be stored in build/compile_commands.json | ||
- | 'build' finished successfully (1.303s) | + | 'build' finished successfully (0.936s) |
- | ==21406== Memcheck, a memory error detector | + | ==2901== Memcheck, a memory error detector |
- | ==21406== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. | + | ==2901== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. |
- | ==21406== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info | + | ==2901== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info |
- | ==21406== Command: /home/vagrant/facultate/isrm/ns-3-dev/build/examples/wireless/ns3.30.1-wifi-tcp-debug | + | ==2901== Command: /home/student/ns3/build/examples/wireless/ns3-dev-wifi-tcp-debug |
- | ==21406== | + | |
+ | ==2901== | ||
(...) | (...) | ||
- | =21406== LEAK SUMMARY: | + | =2901== LEAK SUMMARY: |
(...) | (...) | ||
- | ==21406== For counts of detected and suppressed errors, rerun with: -v | + | ==2901== For counts of detected and suppressed errors, rerun with: -v |
- | ==21406== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) | + | ==2901== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) |
</code> | </code> | ||
Line 239: | Line 240: | ||
===== Development ===== | ===== Development ===== | ||
- | |||
- | * Pentru lucrul acasă vă recomandăm să folosiți instrucțiunile din pagina [[isrm:mv|setup ISRM]] deoarece are toate pachetele necesare (inclusiv Visual Studio Code cu toate dependențele necesare). | ||
<note tip> | <note tip> |