diff --git a/Biblio.bib b/Biblio.bib index d4e4317..9561e06 100644 --- a/Biblio.bib +++ b/Biblio.bib @@ -1,19 +1,4 @@ -@article{Blum2021, - title = {WebRTC - Realtime Communication for the Open Web Platform: What was once a way to bring audio and video to the web has expanded into more use cases we could ever imagine.}, - volume = {19}, - ISSN = {1542-7749}, - url = {http://dx.doi.org/10.1145/3454122.3457587}, - DOI = {10.1145/3454122.3457587}, - number = {1}, - journal = {Queue}, - publisher = {Association for Computing Machinery (ACM)}, - author = {Blum, Niklas and Lachapelle, Serge and Alvestrand, Harald}, - year = {2021}, - month = feb, - pages = {77–93} -} - - @misc{acestreamAnnouncementStream, +@misc{acestreamAnnouncementStream, author = {}, title = {{A}nnouncement! {A}{C}{E} {S}tream; {N}ew era of {T}{V} and {I}nternet broadcasting --- oldforum.acestream.media}, url = {http://oldforum.acestream.media/index.php?topic=1479.0}, @@ -29,7 +14,7 @@ note = {[Accessed 04-Apr-2023]} } -@misc{ai4businessDataTroppo, + @misc{ai4businessDataTroppo, author = {Federica Maria Rita Livelli}, title = {{A}{I} e big data, troppo potere nelle mani di pochi: il dibattito - {A}{I}4{B}usiness --- ai4business.it}, howpublished = {\url{https://www.ai4business.it/intelligenza-artificiale/ai-e-big-data-favoriscono-la-concentrazione-del-potere/}}, @@ -80,6 +65,29 @@ journal = {{IEEE} Communications Surveys {\&} Tutorials} } +@misc{AzureFunctions, + author = {Franco Palermo}, + title = {{A}zure {F}unctions with {D}ocker --- franco.palermo812}, + howpublished = {\url{https://medium.com/@franco.palermo812/azure-functions-with-docker-47e22866330}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + +@article{Blum2021, + title = {WebRTC - Realtime Communication for the Open Web Platform: What was once a way to bring audio and video to the web has expanded into more use cases we could ever imagine.}, + volume = {19}, + issn = {1542-7749}, + url = {http://dx.doi.org/10.1145/3454122.3457587}, + doi = {10.1145/3454122.3457587}, + number = {1}, + journal = {Queue}, + publisher = {Association for Computing Machinery (ACM)}, + author = {Blum, Niklas and Lachapelle, Serge and Alvestrand, Harald}, + year = {2021}, + month = feb, + pages = {77–93} +} + @article{Budhkar2019, doi = {10.1007/s12083-019-00755-x}, url = {https://doi.org/10.1007/s12083-019-00755-x}, @@ -110,6 +118,22 @@ note = {[Accessed 18-03-2025]} } +@misc{geeksforgeeksContainerizationUsing, + author = {}, + title = {{C}ontainerization using {D}ocker - {G}eeksfor{G}eeks --- geeksforgeeks.org}, + howpublished = {\url{https://www.geeksforgeeks.org/containerization-using-docker/}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + +@misc{geeksforgeeksDockerNetworking, + author = {}, + title = {{D}ocker {N}etworking - {G}eeksfor{G}eeks --- geeksforgeeks.org}, + howpublished = {\url{https://www.geeksforgeeks.org/basics-of-docker-networking/}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + @misc{githubGitHubWebtorrentbittorrenttracker, author = {}, title = {{G}it{H}ub - webtorrent/bittorrent-tracker: {S}imple, robust, {B}it{T}orrent tracker (client \& server) implementation --- github.com}, @@ -272,7 +296,7 @@ doi = {10.1007/978-3-319-54328-4_5} } -@misc{torprojectHeartTahoeLAFS, + @misc{torprojectHeartTahoeLAFS, author = {}, title = {{T}or at the {H}eart: {T}ahoe-{L}{A}{F}{S} | {T}or {P}roject --- blog.torproject.org}, howpublished = {\url{https://blog.torproject.org/tor-heart-tahoe-lafs/}}, @@ -298,7 +322,7 @@ note = {[Accessed 11-Feb-2023]} } - @misc{w3c, +@misc{w3c, author = {W3C}, title = {What is the difference between the Web and the Internet?}, howpublished = {\url{https://www.w3.org/Help/}}, diff --git a/Tesi.tex b/Tesi.tex index 5908c1b..551ab20 100644 --- a/Tesi.tex +++ b/Tesi.tex @@ -595,14 +595,14 @@ Perciò abbiamo deciso di creare un sistema di test automatizzato che possa ripr Per verificare le affermazioni degli sviluppatori di PeerTube, abbiamo deciso di: \begin{itemize} - \item Creare un'automazione per riprodurre i test descritti nell'articolo + \item Creare un'automazione per riprodurre indipendentemente i test descritti nell'articolo \item Raccogliere metriche più dettagliate rispetto a quelle presentate nell'articolo originale - \item Analizzare aspetti non considerati, come latenza, qualità dell'esperienza utente e comportamento in condizioni di rete non ideali + \item Analizzare i dati raccolti per valutare le prestazioni del sistema P2P di PeerTube \end{itemize} \subsection{Stack tecnologico per i test} -Per i nostri test abbiamo utilizzato: +Per i nostri test abbiamo utilizzato una combinazione di tecnologie open source per creare un sistema di test automatizzato che sfrutta le seguenti tecnologie: \begin{itemize} \item \textbf{Docker}: Per creare ambienti isolati e facilmente riproducibili @@ -610,10 +610,51 @@ Per i nostri test abbiamo utilizzato: \item \textbf{MongoDB}: Per l'archiviazione strutturata dei dati raccolti \item \textbf{Python}: Come linguaggio principale per l'automazione \item \textbf{Selenium}: Per simulare browser reali che guardano lo stream - \item \textbf{webrtc-internals-exporter}: Per raccogliere metriche dettagliate sulle connessioni WebRTC + \item \textbf{webrtc-internals-exporter}: Una estensione del browser creata per raccogliere metriche dettagliate sulle connessioni WebRTC \item \textbf{Hetzner Cloud}: Per distribuire i test su macchine virtuali in diverse regioni geografiche \end{itemize} +\subsection{Docker} + +Docker è una piattaforma open source che semplifica la creazione, la distribuzione e l'esecuzione di applicazioni in contenitori. I contenitori Docker sono degli ambienti isolati che simulano un sistema operativo completo, come le macchine virtuali, consentendo di eseguire applicazioni in modo consistente su qualsiasi ambiente. + +La differeneza tra docker e una macchina virtuale è che i container Docker condividono il kernel del sistema operativo host, riducendo l'overhead e migliorando le prestazioni, senza dover ricorrere ad un `Hypervisor' per la virtualizzazione. + +\begin{figure}[H] + \centering + \includegraphics[width=350pt]{images/docker-engine.png} + \caption{Docker Engine.} +\end{figure} + +In se Docker è composto da 4 componenti principali: +\begin{itemize} + \item \textbf{Docker Engine}: Il core del sistema, responsabile della creazione e gestione dei container nonché il pricesso demone eseguito sulla macchina host. Fornisce l'accesso a tutte le funzionalità e i + servizi messi a disposizione da Docker. Mette a disposizione un insieme di comandi per la gestione dei container, delle immagini e dei volumi. + \item \textbf{Docker Client}: Interfaccia da riga di comando e `API' per interagire con Docker Engine. + \item \textbf{Docker Image}: Un `template' di sola lettura che contiene e definisce i parametri di una applicazione da eseguire in un container a runtime. Le immagini vengono create e organizzate per livelli `stateless' e immutabil. + \item \textbf{Docker Container}: Un'istanza in esecuzione di un'immagine Docker. Un container è un ambiente isolato che esegue un'applicazione specifica e include tutto il necessario per eseguire l'applicazione, come il codice, le librerie, le variabili d'ambiente e le dipendenze. Il `filesystem' del container è l'ultimo livello che viene aggiunto al quale vi è possibile accedere sia in lettura che in scrittura. I contenitori, inoltre, possono essere associati a dei volumi per la persistenza dei dati, i quali fornisono un metodo semplice e immediato per condivuidere dati tra i container e l'host.\\La comunicazione tra container avviene tramite la creazione di `network' o reti separate che vengono connesse ai singoli container, abilitando così una sorta di LAN interna tra un insieme di container. Per far, invece, comunicare i container con il mondo esterno bisogna invece utilizzare i `port mapping' tra una porta della macchina host e una porta del container. +\end{itemize} + +\begin{figure}[H] + \centering + \includegraphics[width=200pt]{images/0_ukWqRD74ltfb5Uaz.png} + \caption{Docker Overview.} +\end{figure} + +Approfondendo il discordo del `networking', Docker mette a disposizione varti tipi di `network' per la comunicazione tra container, i 3 principali sono: +\begin{itemize} + \item \textbf{Bridge}: È il `network' di default che viene creato quando si installa Docker. I container connessi a questo `network' possono comunicare tra loro e con il host, ma non possono comunicare con i container in altri `network'. + \item \textbf{Host}: I container connessi a questo `network' condividono la rete dell'host, quindi non hanno bisogno di fare il `port mapping' per comunicare con il mondo esterno. + \item \textbf{None}: I container connessi a questo `network' non hanno accesso alla rete, quindi non possono comunicare con altri container o con l'esterno. +\end{itemize} + +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{images/Docker-network-1.png} + \caption{Docker Networking.} +\end{figure} +\cite{AzureFunctions} \cite{geeksforgeeksContainerizationUsing} \cite{geeksforgeeksDockerNetworking} + \subsection{Architettura del sistema di test} Il nostro sistema di test è composto da: @@ -665,6 +706,7 @@ Per ciascuno scenario, abbiamo variato il numero di spettatori (10, 30, 50, 100) \nocite{*} \printbibliography +\sloppy \addcontentsline{toc}{chapter}{Bibliografia} \end{document} \ No newline at end of file diff --git a/images/0_ukWqRD74ltfb5Uaz.png b/images/0_ukWqRD74ltfb5Uaz.png new file mode 100644 index 0000000..8f1ef70 Binary files /dev/null and b/images/0_ukWqRD74ltfb5Uaz.png differ diff --git a/images/Docker-network-1.png b/images/Docker-network-1.png new file mode 100644 index 0000000..8aa95e7 Binary files /dev/null and b/images/Docker-network-1.png differ diff --git a/images/docker-engine.png b/images/docker-engine.png new file mode 100644 index 0000000..75b41bb Binary files /dev/null and b/images/docker-engine.png differ