This is an old revision of the document!


Laboratorul 1 - Pregătirea infrastructurii. Introducere în ns-3

Repository-uri git folosite

Instalare docker

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/

Generarea imaginii pentru ISRM

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

Despre ns-3

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
  • 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.

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:

  • cum se pregătește o simulare, unde se găsesc componentele interne
  • cum se configurează componentele de rețea.
  • in principal vom discuta experimente simple, familiare unui student care a luat un curs introductiv de rețele.

Cele mai importante pagini de parcurs despre ns-3 la început, dar și în timpul laboratoarelor sunt:

Task 00: Rulare exemple existente

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:

isrm/laboratoare/v2/01.1719516628.txt.gz · Last modified: 2024/06/27 22:30 by mbarbulescu
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