Università degli Studi di Modena e Reggio Emilia
Dipartimento di Scienze Fisiche, Informatiche e Matematiche
Corso di Laurea in Informatica (A.A. 2021/22)

WebDHT:

browser-compatible distributed hash table for decentralized Web applications

https://tesi22.rossilorenzo.dev/

Candidato: Lorenzo Rossi
Relatore: Luca Ferretti
Problema generale:

Le applicazioni web stanno migrando sempre più logica dal server al browser

Molte applicazioni non necessitano di nessun server di backend

Il problema più difficile in questi casi è come scambiare dati due browser diversi

(per esempio in giochi multiplayer, applicazioni di telefonia ed utility varie)

Problema: Peer discovery in applicazioni Web

Come scambiare pacchetti tra due browser?

Relay server:

WebRTC channel:

Come è stato risolto dalle applicazioni native?

Distributed Hash Table (DHT)

HashTable distribuite su più computer

Usate da:

  • BitTorrent
  • IPFS (File sharing)
  • Jami (Videoconferenze)
WebDHT

DHT compatibile con i browser, per distribuire il carico

Feature principali:
  • DHT compatibile con protocolli connection-oriented (WebRTC)
  • Parte logica modulare sul trasporto utilizzato
  • Sviluppata in Rust
  • Compilabile in WebAssembly

Permette allo stesso codice di essere usato sia da un server (con performance elevate) sia da un browser, rendendo tutta la DHT compatibile

Signaling: Aprire una connessione WebRTC

Solitamente il canale di signaling è un server centralizzato

Canale di signaling Offerta Risposta Connessione WebRTC aperta Connessione WebRTC Offer Answer

Inoltro dei messaggi tramite referral peer

WebDHT è un servizio di peer discovery decentralizzato, ogni browser che fa parte della DHT può essere intermediario per inoltrare altri messaggi di signaling.

Struttura del progetto

Applicazioni dimostrative

WebDHT Chat

wdhtchat.rossilorenzo.dev

Semplice chat per dimostrare l'utilizzo di WebDHT (provatela ed entrate nella stanza "tesi")

TorrentParty

tparty.rossilorenzo.dev

Programma per guardare video in sincronia tra un gruppo di persone, supporta anche la condivisione dello schermo

Limiti e sviluppi futuri

  • Alcune impostazioni NAT e di firewall possono impedire le connessioni WebRTC peer-to-peer
  • I browser possono mettere la pagina in ibernazione quando non è visibile dall'utente bloccando o rallentando le funzionalità del nodo
  • WebDHT per ora usa WebRTC anche per le comunicazioni tra nodi nativi, si potrebbe usare un protocollo meno costoso in termini di risorse

Grazie per l'attenzione!

Domande?