diff --git a/Biblio.bib b/Biblio.bib index b8cf8f3..d4e4317 100644 --- a/Biblio.bib +++ b/Biblio.bib @@ -1,4 +1,27 @@ -@misc{activitypubActivityPubRocks, +@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, + 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}, + year = {}, + note = {[Accessed 28-09-2023]} +} + + @misc{activitypubActivityPubRocks, author = {}, title = {{A}ctivity{P}ub {R}ocks! --- activitypub.rocks}, howpublished = {\url{https://activitypub.rocks/}}, @@ -6,7 +29,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/}}, @@ -14,7 +37,15 @@ note = {[Accessed 01-Sep-2022]} } - @misc{ARPANET_2022, +@misc{archiveStream, + author = {}, + title = {{A}ce {S}tream --- web.archive.org}, + url = {https://web.archive.org/web/20180618052904/http://info.acestream.org/#/about/acestream}, + year = {}, + note = {[Accessed 28-09-2023]} +} + +@misc{ARPANET_2022, title = {{ARPANET} --- {W}ikipedia{,} The Free Encyclopedia}, rights = {Creative Commons Attribution-ShareAlike License}, url = {https://en.wikipedia.org/w/index.php?title=ARPANET&oldid=1105956998}, @@ -63,6 +94,38 @@ journal = {Peer-to-Peer Networking and Applications} } +@misc{framablogPeerTubeOut, + author = {}, + title = {{P}eer{T}ube v6 is out, and powered by your ideas ! --- framablog.org}, + howpublished = {\url{https://framablog.org/2023/11/28/peertube-v6-is-out-and-powered-by-your-ideas/\#-and-there-s-always-more-}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + +@misc{framablogPeerTubeV7, + author = {}, + title = {{P}eer{T}ube v7 : offer a complete makeover to your video platform ! --- framablog.org}, + howpublished = {\url{https://framablog.org/2024/12/17/peertube-v7-offer-a-complete-makeover-to-your-video-platform/}}, + 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}, + howpublished = {\url{https://github.com/webtorrent/bittorrent-tracker?tab=readme-ov-file}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + +@misc{githubWebtorrentdocsfaqmdMaster, + author = {}, + title = {webtorrent/docs/faq.md at master · webtorrent/webtorrent --- github.com}, + howpublished = {\url{https://github.com/webtorrent/webtorrent/blob/master/docs/faq.md\#how-does-webtorrent-work}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + @misc{ipfsIPFSWhitepaper, doi = {10.48550/ARXIV.1407.3561}, url = {https://arxiv.org/abs/1407.3561}, @@ -82,6 +145,14 @@ note = {[Accessed 04-Apr-2023]} } +@misc{joinpeertubePeerTubeStress, + author = {}, + title = {{P}eer{T}ube stress tests: resilience lies in your peers! | {J}oin{P}eer{T}ube --- joinpeertube.org}, + howpublished = {\url{https://joinpeertube.org/news/stress-test-2023}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + @article{Multi-CDN:TowardsPrivacyinContentDeliveryNetworks, doi = {10.1109/tdsc.2018.2833110}, url = {https://doi.org/10.1109/tdsc.2018.2833110}, @@ -96,6 +167,14 @@ journal = {{IEEE} Transactions on Dependable and Secure Computing} } +@misc{novageMediaLoader, + author = {}, + title = {{P}2{P} {M}edia {L}oader --- novage.com.ua}, + howpublished = {\url{https://novage.com.ua/p2p-media-loader/technical-overview}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + @article{Parameswaran2001, doi = {10.1109/2.933501}, url = {https://doi.org/10.1109/2.933501}, @@ -136,6 +215,14 @@ language = {it-IT} } +@phdthesis{ResearchBasedDataRightsManagementUsingBlockchainOverEthereumNetwork, + author = {Naz, Muqaddas and Javaid, Nadeem and Iqbal, Sohail}, + year = {2019}, + month = {09}, + pages = {}, + title = {Research Based Data Rights Management Using Blockchain Over Ethereum Network} +} + @misc{rfc5128, series = {Request for Comments}, number = 5128, @@ -159,6 +246,22 @@ note = {[Accessed 02-Apr-2023]} } +@misc{tailscaleTraversalWorks, + author = {}, + title = {{H}ow {N}{A}{T} traversal works --- tailscale.com}, + howpublished = {\url{https://tailscale.com/blog/how-nat-traversal-works}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + +@misc{theoryBitTorrentSpecificationTheoryOrg, + author = {}, + title = {{B}it{T}orrent{S}pecification - {T}heory{O}rg --- wiki.theory.org}, + howpublished = {\url{https://wiki.theory.org/BitTorrentSpecification}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + @inproceedings{theTwitchCase, author = {Deng, Jie and Tyson, Gareth and Cuadrado, Félix and Uhlig, Steve}, year = {2017}, @@ -195,7 +298,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/}}, @@ -203,6 +306,14 @@ note = {[Accessed 31-Aug-2022]} } +@misc{webBuildBackend, + author = {}, + title = {{B}uild the backend services needed for a {W}eb{R}{T}{C} app  |  {A}rticles  |  web.dev --- web.dev}, + howpublished = {\url{https://web.dev/articles/webrtc-infrastructure\#what-is-signaling}}, + year = {}, + note = {[Accessed 18-03-2025]} +} + @misc{wiki:ActivityPub, author = {Wikipedia}, title = {{ActivityPub} --- {W}ikipedia{,} The Free Encyclopedia}, @@ -211,7 +322,7 @@ note = {[Online; accessed 05-April-2023]} } - @misc{wikipediaLicenzainformatica, +@misc{wikipediaLicenzainformatica, author = {Wikipedia}, title = {{L}icenza (informatica) - {W}ikipedia --- it.wikipedia.org}, howpublished = {\url{https://it.wikipedia.org/wiki/Licenza_(informatica)}}, @@ -235,26 +346,10 @@ note = {[Accessed 09-Feb-2023]} } -@phdthesis{ResearchBasedDataRightsManagementUsingBlockchainOverEthereumNetwork, -author = {Naz, Muqaddas and Javaid, Nadeem and Iqbal, Sohail}, -year = {2019}, -month = {09}, -pages = {}, -title = {Research Based Data Rights Management Using Blockchain Over Ethereum Network} -} - -@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}, - year = {}, - note = {[Accessed 28-09-2023]}, -} - -@misc{archiveStream, - author = {}, - title = {{A}ce {S}tream --- web.archive.org}, - url = {https://web.archive.org/web/20180618052904/http://info.acestream.org/#/about/acestream}, - year = {}, - note = {[Accessed 28-09-2023]}, +@misc{wikipediaWebRTCWikipedia, + author = {}, + title = {{W}eb{R}{T}{C} - {W}ikipedia --- en.wikipedia.org}, + howpublished = {\url{https://en.wikipedia.org/wiki/WebRTC}}, + year = {}, + note = {[Accessed 18-03-2025]} } \ No newline at end of file diff --git a/Tesi.tex b/Tesi.tex index 69621f5..5908c1b 100644 --- a/Tesi.tex +++ b/Tesi.tex @@ -11,9 +11,6 @@ \usepackage{colorprofiles} \usepackage[a-2b,mathxmp]{pdfx} -\usepackage{biblatex} -\bibliography{Biblio.bib} - \usepackage{hyperref} \hypersetup{ colorlinks, @@ -22,6 +19,9 @@ urlcolor={blue!100!black} } +\usepackage{biblatex} +\bibliography{Biblio.bib} + \usepackage{graphicx} \usepackage{geometry} @@ -68,8 +68,6 @@ \usetikzlibrary{arrows} \usepackage{titlesec} -\setcounter{secnumdepth}{3} -\setcounter{tocdepth}{3} \newenvironment{usecaseenv}{ \def\arraystretch{2} @@ -544,17 +542,53 @@ Queste metriche possono essere visualizzate attraverso dashboard Grafana o altri \chapter{Verifica empirica delle prestazioni P2P di PeerTube} -Nel novembre 2023, il team di PeerTube ha pubblicato un articolo in cui sostiene che la loro implementazione P2P può ridurre il carico sul server fino all'80% in condizioni ottimali. L'articolo presenta i risultati di test condotti con diversi numeri di peer e configurazioni. +A dicembre 2023, il team di PeerTube ha pubblicato un articolo in cui va ad analizzarne le prestazioni facendo degli `stress test' per verificare se la tecnologia P2P integrata nel sistema sia effettivamente in grado di ridurre il carico sui server con circa 1000 utenti connessi contemporaneamente, in quanto, secondo i dati raccolti da Twitch nel 2022, coprivano il 99\% dei casi di utilizzo della piattaforma. -Principali affermazioni dell'articolo: +\ + +Per realizzare test veritieri, il team ha simulato 1.000 spettatori simultanei utilizzando 1.000 browser Chrome, ciascuno con un indirizzo IP pubblico IPv6 dedicato. Questo è stato realizzato tramite `Selenium grid', un software di automazione e testing per i browser, affiancato da Docker su cloud Hetzner e successivamente con un potente server fornito da Octopuce. + +La scelta di 1.000 spettatori è significativa poiché copre la stragrande maggioranza delle dirette streaming su piattaforme importanti come Twitch, suggerendo che PeerTube può essere adeguato per un'ampia gamma di casi d'uso. +In condizioni ottimali, l'aspetto P2P di PeerTube dovrebbe ridurre la larghezza di banda necessaria per trasmettere un video in diretta di un fattore da 3 a 4, standa quanto detto degli sviluppatori di PeerTube. + +\ + +Sono stati condotti 4 scenari di test principali: \begin{itemize} - \item Con 10 peer, il carico sul server viene ridotto del 30-50% - \item Con 50 peer, la riduzione raggiunge il 60-70% - \item Con 100+ peer, si può arrivare all'80% di riduzione - \item L'impostazione "High Latency" migliora ulteriormente l'efficienza P2P + \item Live streaming con impostazione `Normal Latency' + \item Live streaming con impostazione `High Latency' + \item Live streaming con impostazione `High Latency' e 50\% dei peer con P2P disabilitato + \item Un normale video `on-demand' \end{itemize} -Tuttavia, l'articolo non fornisce dettagli sufficienti sulla metodologia utilizzata né rilascia gli strumenti per riprodurre i test in modo indipendente. +su una macchina virtuale con: +\begin{itemize} + \item 4 vCore i7-8700 CPU @ 3.20GHz + \item 4 GB di RAM + \item 1 Gbps di banda +\end{itemize} + +I dati dei test sono stati raccolti tramite OpenTelemetry e Grafana, con metriche come: +\begin{itemize} + \item Percentuale di dati trasferiti via P2P vs. dal server + \item Utilizzo di CPU + \item Comportamento in condizioni di rete variabili + \item Numero di spettatori +\end{itemize} + +con i quali, infine, sono stati in grado di dimostrare che PeerTube è in grado di gestire 1.000 spettatori simultanei con un carico minimo sui server, grazie alla tecnologia P2P integrata in quanto la quantità di dati trasferiti via P2P è progressivamente aumentata con il tempo fino a raggiungere un rapporto del 75\% dei dati totali trasferiti per i video in diretta e del 98\% per i video `on-demand'. + +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{images/chrome_Mqt9TamrBT.png} + \caption{PeerTube conclusioni sullo stress test.} +\end{figure} + +Tuttavia, l'articolo non fornisce dettagli sufficienti sulla metodologia utilizzata né rilascia gli strumenti specifici per riprodurre i test in modo indipendente. \cite{joinpeertubePeerTubeStress} + +\ + +Perciò abbiamo deciso di creare un sistema di test automatizzato che possa riprodurre i test descritti nell'articolo originale. \section{Metodologia per la verifica empirica} diff --git a/images/chrome_Mqt9TamrBT.png b/images/chrome_Mqt9TamrBT.png new file mode 100644 index 0000000..1644433 Binary files /dev/null and b/images/chrome_Mqt9TamrBT.png differ