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: