Acest experiment simulează un mediu IPFS distribuit folosind două noduri IPFS instalate pe două mașini virtuale (VM-uri) pe aceeași mașină locală. Scopul este să observăm comportamentul IPFS în condiții de rețea instabilă, folosind instrumentul netem pentru a introduce întârzieri și pierderi de pachete.
ipfs-experiment/
├── setup_ipfs_node.sh # Instalează și configurează IPFS pe fiecare nod
├── run_experiment.sh # Adaugă fișier în IPFS și salvează CID
├── measure.sh # Măsoară timpul de descărcare a fișierului
├── netem_simulate.sh # Simulează condiții de rețea instabilă (delay și loss)
├── cleanup.sh # Oprește daemon-ul IPFS și curăță fișiere temporare
└── results/ # Folder pentru loguri și fișiere generate
├── cid.txt # CID-ul fișierului adăugat
├── ipfs_info.txt # Informații nod IPFS (PeerID, IP)
└── download_time.txt # Timp descărcare fișier
Pe fiecare VM:
chmod +x setup_ipfs_node.sh
./setup_ipfs_node.shAcest script va instala IPFS (dacă nu e deja instalat), va inițializa nodul și va porni daemonul IPFS în background. Informațiile nodului (PeerID și IP) vor fi salvate în results/ipfs_info.txt.
- Din VM1, obține IP-ul și PeerID din
results/ipfs_info.txt. - În VM2, execută:
ipfs swarm connect /ip4/<IP_VM1>/tcp/4001/p2p/<PeerID_VM1>- Din VM2, obține IP-ul și PeerID la fel.
- În VM1, execută:
ipfs swarm connect /ip4/<IP_VM2>/tcp/4001/p2p/<PeerID_VM2>Astfel nodurile se vor conecta în rețea.
În VM1:
chmod +x run_experiment.sh
./run_experiment.shAcest script adaugă un fișier test în IPFS și salvează CID-ul în results/cid.txt.
În VM2:
chmod +x measure.sh
./measure.shAcest script va descărca fișierul folosind CID-ul generat de VM1 și va măsura timpul de descărcare.
Pe VM1 sau VM2 (în funcție de care vrei să testezi instabilitatea):
chmod +x netem_simulate.sh
sudo ./netem_simulate.shAcest script va introduce delay și pierderi de pachete pe interfața de rețea (implicit eth0). Poți modifica interfața în script dacă folosești altceva (ex: wlan0).
După experiment:
chmod +x cleanup.sh
./cleanup.shOprește daemonul IPFS și curăță fișierele temporare.
- Asigură-te că VM-urile pot comunica pe portul TCP
4001. - Dacă VM-urile sunt pe rețele NAT diferite, configurează port forwarding sau folosește rețele bridged.
- Folosește
ip addrșiip routepentru a verifica adresele și interfețele de rețea. - Pentru măsurători corecte, sincronizează ceasurile VM-urilor (ex: cu
ntp).