sync: xmpp communication primitives, dns-sd, outline for comparison. mock images...
[skm-ma-ws1314.git] / dns-extensions.tex
1 \subsection{Extensions to the DNS protocol}
2
3 \subsubsection{Multicast DNS}
4
5 \term{Multicast DNS}~\cite{rfc6762} (mDNS) describes an extension of the Domain
6 Name System that allows DNS resource records to be distributed on multiple hosts
7 in a network, therefore avoiding the need of a central server.
8
9 Software that supports resolution of mDNS records listens on the reserved
10 link-local multicast address \code{224.0.0.251} (for IPv4 queries) or
11 \code{FF02::FB} (for IPv6 queries) on UDP port 5353 for incoming queries.
12 Queries sent to those multicast address and port are standard DNS queries, and
13 if a host receiving a query knows about the queried resource, it responds to the
14 querying host with a standard DNS response. The querying host can then simply
15 finish and use the result, or wait until other hosts respond to its query. The
16 latter is typically the case when querying for \code{SRV} records to obtain a
17 list of services which are present in the network.
18
19 Another feature of Multicast DNS is the reduction of traffic through
20 \term{Known-Answer Suppression}. It allows a querying host to specify already
21 known resources in its query when querying resources that could exist on more
22 than one host (e.~g., SRV records). The hosts matching those resources then do
23 not generate a response.
24
25 Finally, hosts may also send unsolicited responses. This can be used to notify
26 the network of new services available on a host.
27
28 \pages{1}
29
30 \subsubsection{DNS-Based Service Discovery}\label{sec:dnssd}
31
32 As a recent extension for the Domain Name System, \term{DNS-Based Service
33 Discovery (DNS-SD)}~\cite{rfc6763} uses DNS records of type
34 \code{SRV}~\cite{rfc2782} and \code{PTR} in a way that allows hosts to browse
35 for services in a domain. As an example, Figure~\ref{fig:dnssd} shows the
36 process of browsing for all XMPP clients in the domain \code{example.org}.
37 This is a two-step process, consisting of \term{Service Instance Enumeration}
38 and \term{Service Instance Resolution}.
39
40 \begin{figure}[htop]
41 \centering
42 \includegraphics[width=0.9\textwidth]{dnssd-mock.jpg}
43 \caption{DNS-SD: Service Instance Enumeration and Resolution}
44 \label{fig:dnssd}
45 \end{figure}
46
47 \paragraph{Service Instance Enumeration} At first, to enumerate the available
48 services in a domain for a given protocol, a DNS-SD-enabled client queries
49 resources of type \code{PTR} of the form \code{\_service.\_proto.domain}. The
50 result of this query is then a list of \term{instance names} of the form
51 \code{name.\_service.\_proto.domain} which provide the specified service. For
52 example, in Figure~\ref{fig:dnssd}, all XMPP clients in the domain
53 \code{example.org} are enumerated, and as a result, the instance names of three
54 hosts are returned.
55
56 \paragraph{Service Instance Resolution} As a second step, the returned instance
57 names are resolved as \code{SRV} records to retrieve the actual host names and
58 port numbers of a service. In the example, resolution of one instance name shows
59 that an XMPP client is running at host \code{juliet.example.org} on port 5222.
60
61 Through the usage of \code{SRV} records, it is easily possible for a service to
62 inform clients about non-standard port numbers, and especially in connection
63 with Multicast DNS makes it easy to deploy decentralized systems for the
64 Internet of Things~\cite{Klauck:2012:BCC:2352852.2352881}.
65
66 \pages{1}
67 % vim: set ft=tex et ts=2 sw=2 :
This page took 0.1124 seconds and 5 git commands to generate.