This is an old revision of the document!
ns-3.42. Pe orice mașină virtuală cu orice distribuție de Linux instalată, sau sub WSL2, sau dacă aveți Linux pe stațiile voastre instalați pachetul de docker:
sudo apt install docker docker.io docker-compose
O dată instalat docker e nevoie să vă adăugați userul în grupul docker. Urmați pașii de aici: https://docs.docker.com/engine/install/linux-postinstall/
Vezi și https://github.com/isrm-lab/isrm-vm-docker-img/blob/main/README.md
mkdir -p ~/isrm cd ~/isrm git clone git@github.com:isrm-lab/isrm-vm-docker-img.git cd ~/isrm/isrm-vm-docker ./build-img.sh isrm2024 ~/isrm/ns-3-dev yes # to enter console of image after build: ./enter-img.sh isrm2024
Compilare și rulare un exemplu de ns-3 pentru validarea funcționalității:
./ns3 configure --enable-examples --enable-tests ./ns3 build ./ns3 run "lab3 --numberOfNodes=2 \ --payloadSize=1400 --offeredRate=11Mbps --phyRate=DsssRate11Mbps --simulationTime=2"
Dacă vă dați shutdown/reboot sau unmount la filesystem-ul dockerului și vreți să re-rulați simulatorul ns-3:
./build-img.sh isrm2024 ~/isrm/ns-3-dev
ns-3 este un simulator de rețele (Ethernet, Wi-Fi, 4G etc.) ce oferă:
UDP/TCP etc.)
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:
Cele mai importante pagini de parcurs despre ns-3 la început, dar și în timpul laboratoarelor sunt:
Pentru inceput, puteti parcurge Tutorial ns-3, indeosebi urmatoarele sectiuni:
În cadrul laboratorului ne vom concentra pe simulări Wi-Fi (IEEE 802.11). Puteti gasi exemple de simulări (în afara celor pe care le veți primi pentru laboratorul de ISRM) în ns3/examples/wireless
Ne propunem să rulăm un exemplu simplu: ns3/examples/wireless/wifi-tcp.cc. Acesta constă dintr-o stație (STA) care se conectează la un access point (AP) folosind 802.11n. Traficul este uplink de la STA la AP. Putem rula orice exemplu astfel:
./enter-img.sh isrm2024 root@isrm-vm:/home/student/isrm# ./ns3 run wifi-tcp 1.1s: 46.2797 Mbit/s 1.2s: 55.2294 Mbit/s (...) 10.8s: 55.465 Mbit/s 10.9s: 44.9843 Mbit/s Average throughput: 52.15 Mbit/s
Dacă vrem să transmitem parametrii în linia de comandă simulării (deoarece wifi-tcp suportă), o putem face cu ghilimele:
root@isrm-vm:/home/student/isrm# ./ns3 run "wifi-tcp --pcap --simulationTime=3" 1.1s: 45.8086 Mbit/s 1.2s: 55.3472 Mbit/s (...) 3.9s: 52.7565 Mbit/s Average throughput: 52.9017 Mbit/s
Întrucât opțiunea --pcap activează mecanismul de pcap tracing din ns-3 (vom discuta mai târziu despre acesta), putem vizualiza cu wireshark următoarele capturi care se generează în directorul curent:
root@isrm-vm:/home/student/isrm# ls *.pcap AccessPoint-0-0.pcap Station-1-0.pcap
Iată un exemplu de schimb de pachete Wi-Fi pentru procedura de asociere a stației la access point:
Avem si un al doilea exemplu care arată traficul TCP schimbat între dispozitive: