From 747e9d2a6f3468676b5e60d20e488e9a7891b06d Mon Sep 17 00:00:00 2001 From: Roland Hieber Date: Sat, 14 Dec 2013 02:01:28 +0100 Subject: [PATCH] sync: XMPP Serverless Messaging --- dns-extensions.tex | 7 ++++--- main.tex | 8 +------- xmpp.tex | 41 ++++++++++++++++++++++++++++++++++++----- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/dns-extensions.tex b/dns-extensions.tex index 527545f..c4c84e3 100644 --- a/dns-extensions.tex +++ b/dns-extensions.tex @@ -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 -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. @@ -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}. -\begin{figure}[htop] +\begin{figure}[top] \centering \includegraphics[width=0.9\textwidth]{dnssd-mock.jpg} \caption{DNS-SD: Service Instance Enumeration and Resolution diff --git a/main.tex b/main.tex index 490ce72..8219bb3 100644 --- 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} - -\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 diff --git a/xmpp.tex b/xmpp.tex index c37175a..7bef910 100644 --- a/xmpp.tex +++ b/xmpp.tex @@ -74,17 +74,48 @@ terminated. \cite{xep-0045} -\subsubsection{Publish/Subscribe and the Roster} +\subsubsection{Publish/Subscribe, Presence and the Roster} \cite{xep-0060} -\subsubsection{Presence} - -\cite{rfc6120} +\cite{rfc6121} \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 : -- 2.20.1