feat: chapter 3 init with images and biblio
All checks were successful
Build LaTeX Document / build_latex (push) Successful in 3m14s

This commit is contained in:
2025-03-24 18:26:49 +01:00
parent b8df6b773c
commit 0d4bf28092
4 changed files with 98 additions and 15 deletions

View File

@@ -181,6 +181,14 @@
note = {[Accessed 18-03-2025]}
}
@misc{githubGitHubChocobozzzPeerTube,
author = {},
title = {{G}it{H}ub - {C}hocobozzz/{P}eer{T}ube: {A}ctivity{P}ub-federated video streaming platform using {P}2{P} directly in your web browser --- github.com},
howpublished = {\url{https://github.com/Chocobozzz/PeerTube}},
year = {},
note = {[Accessed 24-03-2025]}
}
@misc{githubGitHubHetznercloudcli,
author = {},
title = {{G}it{H}ub - hetznercloud/cli: {A} command-line interface for {H}etzner {C}loud --- github.com},
@@ -348,6 +356,21 @@
abstract = {This memo documents the various methods known to be in use by applications to establish direct communication in the presence of Network Address Translators (NATs) at the current time. Although this memo is intended to be mainly descriptive, the Security Considerations section makes some purely advisory recommendations about how to deal with security vulnerabilities the applications could inadvertently create when using the methods described. This memo covers NAT traversal approaches used by both TCP- and UDP-based applications. This memo is not an endorsement of the methods described, but merely an attempt to capture them in a document. This memo provides information for the Internet community.}
}
@misc{rfc8216,
series = {Request for Comments},
number = 8216,
howpublished = {RFC 8216},
publisher = {RFC Editor},
doi = {10.17487/RFC8216},
url = {https://www.rfc-editor.org/info/rfc8216},
author = {Roger Pantos and William May},
title = {{HTTP Live Streaming}},
pagetotal = 60,
year = 2017,
month = aug,
abstract = {This document describes a protocol for transferring unbounded streams of multimedia data. It specifies the data format of the files and the actions to be taken by the server (sender) and the clients (receivers) of the streams. It describes version 7 of this protocol.}
}
@misc{scalerWhichBrowser,
author = {Simran Kumari},
title = {{W}hich {B}rowser {S}upports {S}elenium ? - {S}caler {T}opics --- scaler.com},
@@ -472,6 +495,14 @@
note = {[Online; accessed 05-April-2023]}
}
@misc{wiki:PeerTube,
author = {Wikipedia},
title = {{PeerTube} --- {W}ikipedia{,} The Free Encyclopedia},
year = {2025},
howpublished = {\url{http://en.wikipedia.org/w/index.php?title=PeerTube&oldid=1281511347}},
note = {[Online; accessed 24-March-2025]}
}
@misc{wikipediaLicenzainformatica,
author = {Wikipedia},
title = {{L}icenza (informatica) - {W}ikipedia --- it.wikipedia.org},

View File

@@ -463,20 +463,36 @@ Tra tutti i progetti open source che si occupano di decentralizzazione e P2P, Pe
\section{Storia e evoluzione del progetto}
PeerTube è nato nel 2017 come progetto dell'organizzazione non profit francese Framasoft, con l'obiettivo di creare un'alternativa libera e decentralizzata a piattaforme come YouTube. Da allora, ha visto una crescita costante sia in termini di funzionalità che di adozione, con oltre 1000 istanze attive in tutto il mondo nel 2023.
PeerTube è nato nel 2017 come progetto di un singolo sviluppatore di nome \textit{Chocobozzz} e successivamente poi supportato dall'organizzazione non profit francese Framasoft, con l'obiettivo di creare un'alternativa libera e decentralizzata a piattaforme come YouTube. Da allora, ha visto una crescita costante sia in termini di funzionalità che di adozione.
Essendo una piattaforma di tipo ActivityPub, PeerTube fa parte del cosiddetto Fediverse, un network federato di piattaforme interconnesse. Questo significa che gli utenti di PeerTube possono interagire con utenti di altre piattaforme compatibili con ActivityPub, come Mastodon, Pleroma e Pixelfed.\cite{wiki:ActivityPub}
Le principali tappe evolutive del progetto includono:
Ogni istanza di PeerTube fornisce un sito web, del tutto simile ad altre piattaforme come YouTube, per navigare e guardare video ed è, per impostazione predefinita, indipendente dalle altre in termini di aspetto, funzionalità e regole.
Diverse istanze con regole comuni (ad esempio, consentire contenuti simili o richiedere la registrazione) possono formare federazioni, in cui seguono i video di altre istanze, pur mantenendo i contenuti archiviati solo sull'istanza che li ha pubblicati.
Le federazioni sono indipendenti tra loro e asimmetriche: un'istanza può seguire un'altra per visualizzarne i video, senza reciprocità necessarie. Gli amministratori delle istanze possono scegliere di duplicare singoli video o intere istanze amiche, incentivando così la creazione di comunità con larghezza di banda condivisa.
Alcune tappe importanti nella storia di PeerTube includono:
\begin{itemize}
\item 2017: Prima versione beta con supporto per video statici
\item 2018: Rilascio della versione 1.0 con supporto per la federazione via ActivityPub
\item 2019: Introduzione del supporto per lo streaming live
\item 2020-2021: Miglioramenti dell'interfaccia utente e del sistema di raccomandazione
\item 2022: Ottimizzazione del protocollo P2P e introduzione di OpenTelemetry per il monitoraggio
\item 2023: Rilascio della versione 6.0 con significative migliorie al sistema P2P
\end{itemize}
\item \textbf{2017}: Lancio del progetto da parte di \textit{Chocobozzz}
\item \textbf{2018}: Supporto da parte di Framasoft e lancio della versione 1.0
\item \textbf{2021}: Lancio della versione 3.0 con introduzione del supporto per i livestream e miglioramenti all'interfaccia utente
\item \textbf{2021}: Introduzione di funzionalità di moderazione avanzate e supporto per i sottotitoli
\item \textbf{2022}: Il Garante Europeo della Protezione dei Dati (EDPS) lancia EU Video, una piattaforma video basata su PeerTube per le istituzioni, gli enti e le agenzie dell'Unione Europea, come progetto pilota su ActivityPub. Viene chiuso ufficialmente nel 2024.
\end{itemize} \cite{wiki:PeerTube}
\section{Stack tecnologico}
Fino alla versione 6.0.0, PeerTube supportava sia HLS su WebRTC-P2P (noto anche come `HLS con P2P') sia WebTorrent.
WebTorrent è una reimplementazione del protocollo BitTorrent su WebRTC. Ogni server PeerTube funge da tracker torrent, mentre i browser degli utenti che visualizzano un video partecipano attivamente alla sua distribuzione.
\
HLS, normalmente implementato con hls.js, non include funzionalità P2P. PeerTube ha esteso questa tecnologia con un loader personalizzato, che scarica contemporaneamente i segmenti video sia dal server web sia da altri spettatori tramite WebRTC, riducendo così il carico sui server e distribuendo la banda attraverso il P2P.
I video sono resi disponibili per il download tramite HTTP, ma la riproduzione privilegia un sistema peer-to-peer utilizzando HLS e WebRTC P2P. \cite{wiki:PeerTube} \cite{framablogPeerTubeOut}
\subsection{Architettura generale}
PeerTube utilizza un'architettura ibrida che combina:
@@ -486,18 +502,21 @@ PeerTube utilizza un'architettura ibrida che combina:
\item Un sistema di storage per i video (locale o distribuito)
\item Un database PostgreSQL per la persistenza dei dati
\item Un sistema di federazione basato su ActivityPub
\item Tecnologie P2P per la distribuzione dei contenuti
\end{itemize}
\item Tecnologie P2P per la distribuzione dei contenuti (Novage P2P Media Loader)
\end{itemize} \cite{githubGitHubChocobozzzPeerTube}
\subsection{Streaming video con HLS}
Per lo streaming video, PeerTube utilizza il protocollo HTTP Live Streaming (HLS), sviluppato da Apple. Questo protocollo:
Per lo streaming video, PeerTube utilizza il protocollo HTTP Live Streaming (HLS), sviluppato da Apple. HLS è un protocollo di streaming adattativo che consente di trasmettere video in
diretta o on-demand su Internet. Il protocollo HLS funziona dividendo il flusso video in piccoli segmenti e trasmettendoli tramite HTTP. Questo approccio consente di adattare la qualità del video in base alla larghezza di banda disponibile, garantendo una riproduzione fluida e senza interruzioni.
\begin{itemize}
\item Divide il video in piccoli segmenti (tipicamente di 2-10 secondi)
\item Crea un file manifest (.m3u8) che elenca i segmenti disponibili
\item Permette la selezione automatica della qualità in base alla connessione
\item È compatibile con la maggior parte dei browser e dispositivi moderni
\end{itemize}
\end{itemize} \cite{rfc8216}
Per eseguire streaming video P2P, PeerTube utilizza un loader personalizzato che integra il P2P Media Loader di Novage. Questo loader consente di scaricare i segmenti video sia dal server web sia da altri spettatori tramite WebRTC, riducendo così il carico sui server e distribuendo la banda attraverso il P2P.
\subsection{P2P Media Loader e WebRTC}
@@ -505,10 +524,37 @@ Il cuore del sistema P2P di PeerTube è costituito da:
\begin{itemize}
\item \textbf{P2P Media Loader}: Una libreria JavaScript che integra il P2P nel player video
\item \textbf{WebRTC}: Una tecnologia standard per la comunicazione peer-to-peer diretta tra browser
\item \textbf{WebRTC}: Una tecnologia web standard per la comunicazione peer-to-peer diretta tra browser
\item \textbf{WebTorrent Tracker}: Utilizzato come sistema di signaling per connettere i peer
\end{itemize}
P2P Media Loader è una libreria JavaScript open-source che sfrutta le funzionalità dei browser moderni (HTML5 video e WebRTC) per distribuire contenuti multimediali tramite P2P e riprodurli attraverso l'integrazione con molti lettori video HTML5 popolari. Non richiede plugin o estensioni del browser per funzionare.
Requisiti del browser per P2P Media Loader:
\begin{itemize}
\item Media Source Extensions (MSE) o Managed Media Source, necessarie per la riproduzione multimediale tramite i motori Hls.js e Shaka Player.
\item Supporto a WebRTC Data Channels per lo scambio di dati tra peer.
\item Server STUN, utilizzato da WebRTC per raccogliere \textit{ICE} candidates. Esistono diversi server pubblici disponibili.
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[width=300pt]{images/p2p-media-loader-network.CFcphAUE.png}
\caption{Architettura di P2P Media Loader.}
\end{figure}
Il funzionamento di P2P Media Loader è il seguente:
Un browser web esegue un lettore video integrato con la libreria P2P Media Loader. Un'istanza di P2P Media Loader è chiamata peer. Molti peer formano una rete P2P.
P2P Media Loader inizia a scaricare i segmenti iniziali dei media tramite HTTP(S) dal server di origine o CDN. Questo consente di avviare la riproduzione dei video più velocemente. In caso di assenza di peer, il video viene scaricato traduzionalmente HTTP.
Successivamente, P2P Media Loader invia i dettagli dello stream e i dettagli della sua connessione (candidati ICE) ai tracker di WebTorrent e ottiene da loro l'elenco di altri peer che stanno scaricando lo stesso stream di media.
P2P Media Loader si connette e inizia a scaricare i segmenti dei media dai peer ottenuti, nonché a condividere i segmenti già scaricati con loro.
Di tanto in tanto, peer casuali della rete scaricano nuovi segmenti tramite HTTP(S) e li condividono con gli altri tramite P2P.
\section{Signaling e NAT Traversal}
Un aspetto critico del sistema P2P è il processo di signaling, che permette ai peer di scoprirsi e connettersi tra loro. PeerTube utilizza:
@@ -1175,6 +1221,12 @@ Il diagramma finale dell'architettura del nostro sistema è il seguente:
\item Un database centralizzato per la raccolta dei dati.
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{images/chrome_KEAVUAGKCE.png}
\caption{Istanza di Selenium Standalone con il collector in esecuzione.}
\end{figure}
\section{Casi d'uso e scenari di test riprodotti}
Come descritto in precedenza, abbiamo riprodotto due scenari di test principali dei 4 casi d'uso descritti nell'articolo di PeerTube per motivi di tempo e risorse. Questi sono:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB