X-Git-Url: http://git.rohieb.name/skm-ma-ws1314.git/blobdiff_plain/f1c1b4a2b8a9f899a42f91b362222b10f357a2c7..db175969734f2fc4b583278d25760fdd690df02a:/dns-extensions.tex diff --git a/dns-extensions.tex b/dns-extensions.tex index 1bb5ac0..bf8bdc8 100644 --- a/dns-extensions.tex +++ b/dns-extensions.tex @@ -1,9 +1,10 @@ \subsection{Extensions to the DNS protocol} \subsubsection{Multicast DNS} -\term{Multicast DNS}~\cite{rfc6762} (mDNS) describes an extension of the Domain Name -System that allows DNS resource records to be distributed on multiple hosts in a -network, therefore avoiding the need of a central server. + +\term{Multicast DNS}~\cite{rfc6762} (mDNS) describes an extension of the Domain +Name System that allows DNS resource records to be distributed on multiple hosts +in a network, therefore avoiding the need of a central server. Software that supports resolution of mDNS records listens on the reserved link-local multicast address \code{224.0.0.251} (for IPv4 queries) or @@ -22,18 +23,45 @@ than one host (e.~g., SRV records). The hosts matching those resources then do not generate a response. Finally, hosts may also send unsolicited responses. This can be used to notify -the network of new services available on the host. +the network of new services available on a host. \pages{1} -\subsubsection{DNS-Based Service Discovery} -\todo -\term{DNS-based Service Discovery} \cite{rfc6763} -\begin{itemize} - \item allows flexible mapping of available services to ports - \item utilization of SRV \cite{rfc2782}, TXT and PTR records - \item case study for IoT in \cite{Klauck:2012:BCC:2352852.2352881} -\end{itemize} +\subsubsection{DNS-Based Service Discovery}\label{sec:dnssd} + +As a recent extension for the Domain Name System, \term{DNS-Based Service +Discovery (DNS-SD)}~\cite{rfc6763} uses DNS records of type +\code{SRV}~\cite{rfc2782} and \code{PTR} in a way that allows hosts to browse +for services in a domain. As an example, Figure~\ref{fig:dnssd} shows the +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] + \centering + \includegraphics[width=0.9\textwidth]{dnssd-mock.jpg} + \caption{DNS-SD: Service Instance Enumeration and Resolution} + \label{fig:dnssd} +\end{figure} + +\paragraph{Service Instance Enumeration} At first, to enumerate the available +services in a domain for a given protocol, a DNS-SD-enabled client queries +resources of type \code{PTR} of the form \code{\_service.\_proto.domain}. The +result of this query is then a list of \term{instance names} of the form +\code{name.\_service.\_proto.domain} which provide the specified service. For +example, in Figure~\ref{fig:dnssd}, all XMPP clients in the domain +\code{example.org} are enumerated, and as a result, the instance names of three +hosts are returned. + +\paragraph{Service Instance Resolution} As a second step, the returned instance +names are resolved as \code{SRV} records to retrieve the actual host names and +port numbers of a service. In the example, resolution of one instance name shows +that an XMPP client is running at host \code{juliet.example.org} on port 5222. + +Through the usage of \code{SRV} records, it is easily possible for a service to +inform clients about non-standard port numbers, and especially in connection +with Multicast DNS makes it easy to deploy decentralized systems for the +Internet of Things~\cite{Klauck:2012:BCC:2352852.2352881}. \pages{1} % vim: set ft=tex et ts=2 sw=2 :