add some notes + bibliography
This commit is contained in:
parent
1cda712789
commit
27806b4619
|
@ -42,6 +42,7 @@
|
|||
% or whatever
|
||||
|
||||
\usepackage[backend=biber, sorting=none]{biblatex}
|
||||
\addbibresource{literature.bib}
|
||||
|
||||
\usepackage{ccicons}
|
||||
\usepackage{wrapfig}
|
||||
|
@ -124,10 +125,10 @@ for Federated Social Networks}
|
|||
\maketitle
|
||||
|
||||
\note{introduce myself:\\
|
||||
known as schmittlauch on the Internet\\
|
||||
usually go by schmittlauch on the Internet\\
|
||||
student of Computer Science @ TU Dresden\\
|
||||
interest in federated systems and unusual social networks\\
|
||||
presenting my work on a study paper from this year}
|
||||
presenting my work on a student research paper from this year}
|
||||
|
||||
|
||||
\begin{frame}{Outline}
|
||||
|
@ -174,7 +175,7 @@ presenting my work on a study paper from this year}
|
|||
\begin{frame}{Importance of \#Hashtags}{}
|
||||
|
||||
Hashtags are used for marking posts about certain topics or events:
|
||||
\note{mark topics of posts, make them discoverable by content. No full text search in fediverse}
|
||||
\note{mark topics of posts, make them discoverable by content. No decentralised full text search in Fediverse (centralised search engines)}
|
||||
\begin{columns}
|
||||
\begin{column}{0.47\textwidth}
|
||||
|
||||
|
@ -200,7 +201,8 @@ Hashtags are used for marking posts about certain topics or events:
|
|||
\includegraphics[height=0.6\paperheight]{figures/Elephant_Friend_(Greeting).png}
|
||||
}
|
||||
\only<4>{
|
||||
\includegraphics[width=\textwidth]{figures/hashtag_gezipark.jpg}
|
||||
\includegraphics[width=\textwidth]{figures/hashtag_gezipark.jpg}\\
|
||||
\tiny{\ccby \href{https://creativecommons.org/licenses/by/4.0/}{CC BY 4.0 International} by \href{https://metronaut.de}{Metronaut}}
|
||||
}
|
||||
\only<5>{
|
||||
\includegraphics[height=0.6\paperheight]{figures/hashtag_metoo.jpg}\\
|
||||
|
@ -215,7 +217,7 @@ Hashtags are used for marking posts about certain topics or events:
|
|||
\subsection{State of Hashtags in the Fediverse}
|
||||
|
||||
\begin{frame}{State of Hashtags on the Fediverse}{}
|
||||
{\center \Large Hashtags are used in the fediverse}
|
||||
{\center \Large Hashtags are used in the Fediverse}
|
||||
\pause
|
||||
\vspace{2em}
|
||||
|
||||
|
@ -255,13 +257,14 @@ Hashtags are used for marking posts about certain topics or events:
|
|||
\begin{column}{0.55\textwidth}
|
||||
\includegraphics[height=0.6\paperheight]{figures/push_federation.pdf}
|
||||
\end{column}
|
||||
\note{example scenario with 4 instances}
|
||||
|
||||
\begin{column}{0.45\textwidth}
|
||||
\begin{itemize}
|
||||
|
||||
\only<1>{\item subscription to \texttt{@alice@cyber.space} by contacting instance \texttt{cyber.space}}
|
||||
\only<2>{\item all future posts by alice are delivered to instances of subscribers, but \textit{not} instances without any subscriber}
|
||||
\only<3>{\item other ways for posts to reach an instance:\\ boosts, thread resolution}
|
||||
\only<2>{\item all future posts by Alice are delivered to instances of subscribers, but \textit{not} instances without any subscriber\note[item]{cyber.space may not even be aware of existence of other instances}}
|
||||
\only<3>{\item other ways for posts to reach an instance:\\ boosts, thread resolution\note[item]{posts can disseminate through other means}}
|
||||
\end{itemize}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
|
@ -274,7 +277,7 @@ Hashtags are used for marking posts about certain topics or events:
|
|||
\item centralised actor relaying all incoming posts
|
||||
\item single point of failure, which relay to choose?
|
||||
\item relaying all incoming posts \(\Rightarrow\) huge load on small instances
|
||||
\item only access to posts sent after initial subscribtion
|
||||
\item only access to posts sent after initial subscription
|
||||
\end{itemize}
|
||||
\item Diaspora* SocialRelay
|
||||
\begin{itemize}
|
||||
|
@ -301,12 +304,14 @@ Hashtags are used for marking posts about certain topics or events:
|
|||
|
||||
\begin{frame}{System Architecture}{adding a DHT backend to the fediverse}
|
||||
|
||||
core idea: distribute responsibility for tags among instances using a \textbf{D}istributed \textbf{H}ash \textbf{T}able, \note{distribute responsibility for posts of a hashtag = relaying \& storage}
|
||||
\note[item]{subscription to all posts of a user possible because there is a single responsible instance}
|
||||
core idea: distribute responsibility for tags among instances using a \textbf{D}istributed \textbf{H}ash \textbf{T}able, \note[item]{distribute responsibility for posts of a hashtag = relaying \& storage}
|
||||
|
||||
based on Chord
|
||||
based on Chord \cite{stoicaChordScalablePeertopeer2003}
|
||||
%ToDo for Kolloquium: reason for Chord
|
||||
|
||||
\note[item]{DHT: structured P2P networks providing efficient (log N) key-value storage and lookup}
|
||||
\note[item]{self-organising, no central authority}
|
||||
\note[item]{DHT: structured P2P networks, self-organising, no central authority}
|
||||
\note[item]{ provides efficient (log N) key-value storage and lookup}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
@ -315,7 +320,7 @@ based on Chord
|
|||
\begin{column}{0.4\textwidth}
|
||||
\begin{itemize}
|
||||
\item calculate hash value of keys and node IDs
|
||||
\item place these hashes onto the same circular name space
|
||||
\item place these hashes onto the same circular name space
|
||||
\item each node keeps routing table of \(\log \#number\_nodes\) entries\note[item]{joining and leaving covered in paper}
|
||||
\end{itemize}
|
||||
\end{column}
|
||||
|
@ -332,6 +337,7 @@ based on Chord
|
|||
\begin{itemize}
|
||||
\item next nodeID \(\geq\) \texttt{hash(hashtag)} (mod keyspace size) is responsible for handling posts containing \texttt{hashtag}
|
||||
\item DHT used for iterative lookup of responsible relay/ storage node
|
||||
\item my architecture: namespace = \(2^{256}\) with 256bit-long IDs
|
||||
\end{itemize}
|
||||
\end{column}
|
||||
|
||||
|
@ -343,7 +349,7 @@ based on Chord
|
|||
|
||||
\begin{frame}{Publishing, Relaying and Storage}{lifecycle of posts}
|
||||
\begin{enumerate}
|
||||
\item publishing instance looks up responsible relay instance on DHT for each included hashtag
|
||||
\item publishing instance looks up responsible relay instance on DHT for each included hashtag\note[item]{calculate hashum of hashtag -> lookup key for DHT}
|
||||
\item publishing instance sends post to responsible relay instance
|
||||
\item relay instance looks up responsible storage node on DHT
|
||||
\item relay instance verifies incoming post's signature, then relays post URI (ID) to all subscribers + storage node\note[item]{only post ID relayed, but not full post content. Reasons: LDSignatures not supported everywhere, deniability \& revocation}
|
||||
|
@ -363,7 +369,9 @@ based on Chord
|
|||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\note{so far so easy. But load distribution issues}
|
||||
\note{so far so easy.\\
|
||||
what hashtags does a certain instance handle?\\
|
||||
can it bear the load?}
|
||||
\begin{itemize}
|
||||
\item node ID determines set of hashtags handled by instance
|
||||
\item problem: for security reasons, node \textbf{must not} choose their IDs freely
|
||||
|
@ -377,7 +385,7 @@ based on Chord
|
|||
\includegraphics[width=0.49\textwidth]{statistics/geraspora_hashtags_total.png}
|
||||
|
||||
\note{analysis of a 1 month dump of Twitter, Geraspora (Diaspora) and Friendica posts\\
|
||||
Twitter: 70\% of posts used just once\\
|
||||
Twitter: 70\% of hashtags used just once\\
|
||||
note the logarithmic axis!}
|
||||
|
||||
distribution of posts per hashtag follows a steep power law
|
||||
|
@ -387,11 +395,13 @@ distribution of posts per hashtag follows a steep power law
|
|||
|
||||
\begin{frame}{Load Balancing}{of hashtags between nodes}
|
||||
\begin{itemize}
|
||||
\item \textit{k-choices} algorithm by Ledlie and Seltzer
|
||||
\item each node can choose from \(\kappa\) possible IDs
|
||||
%ToDo for Kolloquium: reasonf or choosing that algorithm
|
||||
\item \textit{k-choices} algorithm by Ledlie and Seltzer \cite{ledlieHarvardTechnicalReport2004}
|
||||
\item a node can represent several \textit{virtual nodes} on the DHT
|
||||
\item \(\kappa\) possible virtual node IDs: \(ID =\) hash(\(ID' ++ i\))\(, i \in \{0, 1, \dots, \kappa-1\}\)
|
||||
\item nodes have a \textbf{capacity} and choose set of active IDs according to lowest mismatch of own and neighbour node capacity
|
||||
\item querying load of potential IDs before joining, periodic re-balancing
|
||||
\item independent load balancing of relay and storage nodes due to independent DHTs
|
||||
\item independent load balancing of relay and storage nodes due to independent DHTs\note[item]{enable different roles ``relay'', ``storage'' to balance independently: 2 DHTs}
|
||||
\note[item]{a simple simulation on the effectivity of the balancing algorithm can be found in the paper}
|
||||
\end{itemize}
|
||||
% for Kolloquium, add simulation result
|
||||
|
@ -401,7 +411,7 @@ distribution of posts per hashtag follows a steep power law
|
|||
\begin{columns}
|
||||
\begin{column}{0.55\textwidth}
|
||||
\begin{itemize}
|
||||
\item store redundant copies of hashtag data at equal distances on Chord ring\note{resilience against node failure, allows data validation through cross-checking}
|
||||
\item store redundant copies of hashtag data at equal distances on Chord ring, inspired by Harvesf and Blough \cite{harvesfEffectReplicaPlacement2006}\note{resilience against node failure, allows data validation through cross-checking}
|
||||
\item default redundancy: \(2^2 = 4\), scalable in powers of 2
|
||||
\item \textbf{relay nodes}: hot standby nodes take over in overload situations (load spikes)
|
||||
\item \textbf{storage nodes}: overloaded nodes can split stored posts by content hash and double redundancy set
|
||||
|
@ -420,6 +430,8 @@ distribution of posts per hashtag follows a steep power law
|
|||
\begin{frame}{Discussion}{I need YOUR feedback}
|
||||
|
||||
I want feedback from all of you, no matter whether it's from a \textit{\LARGE technical} or from a \textit{\LARGE social perspective}.
|
||||
\note{architecture just a concept so far\\
|
||||
before implementations: several open questions}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
@ -429,10 +441,9 @@ I want feedback from all of you, no matter whether it's from a \textit{\LARGE te
|
|||
Do we even want global hashtags in the Fediverse?
|
||||
|
||||
\begin{itemize}
|
||||
\item positive potential (conversation, coordination) vs. negative potential (spam, harrasment)
|
||||
\item positive potential (conversation, coordination) vs. negative potential (spam, harrassment)
|
||||
\item visibility level: public posts only, unlisted, new level necessary?
|
||||
\item relaying post URI only should provide plausible deniability
|
||||
\item Does this circumvent instance-blocks and is this bad?
|
||||
\item relaying post URI only should provide plausible deniability and retractability
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
@ -459,7 +470,7 @@ Do we even want global hashtags in the Fediverse?
|
|||
\begin{itemize}
|
||||
\item hashtags may be represented as relay actors with own in- \& outbox, addressed in cc
|
||||
\item relaying to subscribers via SharedInbox
|
||||
\item idea for addressing: new URI scheme that gets transparently resolved to responsible node's domain via DHT\note[item]{application proxy for transparent URI scheme resolving?}
|
||||
\item idea for addressing: new URI scheme that gets transparently resolved to responsible node's domain via DHT by application proxy\note[item]{application proxy for transparent URI scheme resolving?}
|
||||
\item signalling of error codes and redundancy factors is needed
|
||||
\end{itemize}
|
||||
\item DHT routing communication does not use ActivityPub
|
||||
|
@ -473,7 +484,9 @@ Do we even want global hashtags in the Fediverse?
|
|||
\includegraphics<1>[height=0.59\paperheight]{figures/Elephant_Friend_(Greeting).png}
|
||||
\includegraphics<2,4>[height=0.59\paperheight]{figures/hist_num_single_vs.png}
|
||||
|
||||
\note[item]{common DHT attack: Sybil-… = 1 attacker introduces large number of nodes}
|
||||
\note[item]{sorry to all instance admins, but: CloudFlare behaves like a MITM/ Sybil attacker}
|
||||
\note[item]{node ID derivation: first 64 bits of IPv6}
|
||||
|
||||
\only<2,4>{1st peak: Masto.host, 2nd peak: Cloudflare}
|
||||
|
||||
|
@ -500,6 +513,7 @@ node ID derivation}
|
|||
\begin{itemize}
|
||||
\item valid domain required for node ID derivation, assumption: domains cost money
|
||||
\end{itemize}
|
||||
\note{not perfectly secure, but the best I could think of. Better ideas welcome}
|
||||
\end{itemize}
|
||||
|
||||
\end{frame}
|
||||
|
@ -533,14 +547,6 @@ node ID derivation}
|
|||
\section<presentation>*{\appendixname}
|
||||
\subsection<presentation>*{For Further Reading}
|
||||
|
||||
\begin{frame}[allowframebreaks]
|
||||
\frametitle{References}
|
||||
|
||||
|
||||
|
||||
%\bibliography{literature}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
|
||||
|
@ -551,13 +557,14 @@ node ID derivation}
|
|||
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
|
||||
|
||||
%\includegraphics[height=0.5\textheight]{figures/nomnompingu.png}\tiny\footnote{CC-BY-SA 3.0 by Elektroll}
|
||||
|
||||
\begin{frame}[allowframebreaks]
|
||||
\frametitle{References}
|
||||
|
||||
\printbibliography
|
||||
|
||||
|
||||
\end{frame}
|
||||
|
||||
%\includegraphics[height=0.5\textheight]{figures/nomnompingu.png}\tiny\footnote{CC-BY-SA 3.0 by Elektroll}
|
||||
|
||||
\end{document}
|
||||
|
|
Loading…
Reference in a new issue