sync: XMPP Serverless Messaging
authorRoland Hieber <rohieb@rohieb.name>
Sat, 14 Dec 2013 01:01:28 +0000 (02:01 +0100)
committerRoland Hieber <rohieb@rohieb.name>
Sat, 14 Dec 2013 01:01:28 +0000 (02:01 +0100)
dns-extensions.tex
main.tex
xmpp.tex

index 527545f..c4c84e3 100644 (file)
@@ -13,9 +13,10 @@ by the IETF Zeroconf working group.
 \term{Multicast DNS}~\cite{rfc6762} (mDNS) describes an extension to the Domain
 Name System that allows DNS resource records to be distributed on multiple hosts
 in a network, therefore avoiding central authorities and enabling every host to
 \term{Multicast DNS}~\cite{rfc6762} (mDNS) describes an extension to the Domain
 Name System that allows DNS resource records to be distributed on multiple hosts
 in a network, therefore avoiding central authorities and enabling every host to
-publish its own entries.
+publish its own entries. For that purpose, a special domain, usually
+named \code{.local}, is used.
 
 
-Software that supports resolution of mDNS records listens on the reserved
+Software that supports mDNS listens on the reserved
 link-local multicast address \code{224.0.0.251} (for IPv4 queries) or
 \code{FF02::FB} (for IPv6 queries) on UDP port 5353 for incoming queries.
 Queries sent to those multicast address and port are standard DNS queries.
 link-local multicast address \code{224.0.0.251} (for IPv4 queries) or
 \code{FF02::FB} (for IPv6 queries) on UDP port 5353 for incoming queries.
 Queries sent to those multicast address and port are standard DNS queries.
@@ -46,7 +47,7 @@ process of browsing for all XMPP clients in the domain \code{example.org}.
 This is a two-step process, consisting of \term{Service Instance Enumeration}
 and \term{Service Instance Resolution}.
 
 This is a two-step process, consisting of \term{Service Instance Enumeration}
 and \term{Service Instance Resolution}.
 
-\begin{figure}[htop]
+\begin{figure}[top]
   \centering
   \includegraphics[width=0.9\textwidth]{dnssd-mock.jpg}
   \caption{DNS-SD: Service Instance Enumeration and Resolution
   \centering
   \includegraphics[width=0.9\textwidth]{dnssd-mock.jpg}
   \caption{DNS-SD: Service Instance Enumeration and Resolution
index 490ce72..8219bb3 100644 (file)
--- a/main.tex
+++ b/main.tex
@@ -41,13 +41,7 @@ overview to the techniques used in the paper by Klauk and Kirsche
 \input{address-allocation.tex}
 \input{dns-extensions.tex}
 \input{xmpp.tex}
 \input{address-allocation.tex}
 \input{dns-extensions.tex}
 \input{xmpp.tex}
-
-\section{System Architecture of Chatty Things}
-\todo
-\pages{3}
-\subsection{Service Provisioning Sublayer}
-\subsection{Bootstrapping}
-\subsection{Presence Subscription}
+\input{sec-chatty-things.tex}
 
 \section{Related Approaches}
 \todo
 
 \section{Related Approaches}
 \todo
index c37175a..7bef910 100644 (file)
--- a/xmpp.tex
+++ b/xmpp.tex
@@ -74,17 +74,48 @@ terminated.
 
 \cite{xep-0045}
 
 
 \cite{xep-0045}
 
-\subsubsection{Publish/Subscribe and the Roster}
+\subsubsection{Publish/Subscribe, Presence and the Roster}
 
 \cite{xep-0060}
 
 
 \cite{xep-0060}
 
-\subsubsection{Presence}
 
 
-
-\cite{rfc6120}
+\cite{rfc6121}
 
 \subsubsection{XMPP Serverless Messaging}
 \todo
 
 \subsubsection{XMPP Serverless Messaging}
 \todo
-\cite{xep-0174} \pages{1}
+
+To overcome the need for a central server and authentication, XMPP Serverless
+Messaging~\cite{xep-0174} allows XMPP clients on a network to build a
+peer-to-peer mesh network and chat directly with each other. This feature was
+first introduced by Apple as part of their \term{Bonjour} project, and nowadays
+it is also available in many other XMPP clients.
+
+With XMPP Serverless Messaging, XMPP clients simply open a port on the host, and
+then rely on mDNS and DNS-SD (see Section~\ref{sec:dns})
+to publish instance names in the domain \code{\_presence.\_tcp.local}. For
+example, if Juliet uses her machine (named \code{capulet}) with serverless
+messaging, her client would publish the following four mDNS records:
+
+\begin{itemize}
+  \item an A record \code{capulet.local}, specifying her IP address,
+  \item an SRV record \code{juliet@capulet.\_presence.\_tcp.local}, specifying
+    the port on which her XMPP client listens, and refering to
+    \code{capulet.local} as the host name
+  \item a PTR record \code{\_presence.\_tcp.local} for service discovery,
+    pointing to \code{juliet@capulet.\_presence.\_tcp.local}
+  \item and a TXT record \code{juliet@capulet.\_presence.\_tcp.local} specifying
+    more information about her (e.~g. her online status, contact data, etc.)
+\end{itemize}
+
+When other clients in the same network enumerate the available services by
+querying \code{\_presence.\_tcp.local}, they notice Juliet's presence and add
+her to the roster automatically. In that way, XMPP users can see who is
+currently available for communication. To start a chat session, clients initiate
+a TCP connection over the advertised ports, open their XML streams, and send
+message or IQ stanzas like they would to an XMPP server. Presence is managed
+over the corresponding TXT record in the mDNS. To go offline, a client
+announces the deletion of its mDNS records.
+
+\pages{1}
 
 % vim: set ft=tex et ts=2 sw=2 :
 
 % vim: set ft=tex et ts=2 sw=2 :
This page took 0.029101 seconds and 4 git commands to generate.