From: Roland Hieber Date: Sun, 8 Dec 2013 01:01:46 +0000 (+0100) Subject: sync: address allocation X-Git-Tag: erste-version~13 X-Git-Url: https://git.rohieb.name/skm-ma-ws1314.git/commitdiff_plain/932685a2f40daa909e4080109d93cd9013bae1d9 sync: address allocation --- diff --git a/address-allocation.tex b/address-allocation.tex new file mode 100644 index 0000000..8970d2d --- /dev/null +++ b/address-allocation.tex @@ -0,0 +1,81 @@ +\subsection{Address allocation} +Considering the TCP/IP protocol suite, in order to be able to communicate on the +IP layer, a device needs to configure one of its network interfaces with +an IP address that can be reached from the network that the device wants to connect +to. There are several ways of achieving this: + +\begin{itemize} + \item The IP address is pre-selected by a human and stored in the device + configuration. This process is cumbersome when more than one device needs to + be configured, and humans have to remember which addresses are configured on + which device, and which addresses are still free to use on additional + devices. + + \item Deploying a central server that assigns network addresses + to the devices in the network, which in order query the server (for example + via broadcast or on a lower layer) for a unique address before they use the + IP layer for the first time. This technique supersedes the dependency of + human memory for mapping IP addresses to devices, and can easily be combined + with additional central configuration management, like the automatic + assignment of a static gateway, or a DNS resolver.\\ + The DHCP protocol is one example of central IP address management. + + \item A third alternative is the use of a distributed protocol which enables + the devices on the network to choose addresses in accordance with other + devices on the same network, so no IP address is used more than once. In + respect to the Internet of Things, this approach has the advantage that + those devices can easily be used in different scenarios without needing + central deployment at all, and also allowing them to change their addresses + dynamically, therefore easily reacting to changes in the network. \\ + There are two major protocols which are used for dynamic configuration of IP + addresses. In the IPv4 world, Link-Local Addressing~\cite{rfc3927} is often + used, and in IPv6 networks, Stateless Address + Autoconfiguration~\cite{rfc4862} is a fundamental feature built into every + device. + +\end{itemize} + +\todo + +\paragraph{IPv4 Link-Local Addressing} + +Link-Local Addressing uses the IPv4 subnet 169.254.0.0/16 for addressing. Every +device first chooses a random address from that address space. Then it checks if +the chosen address is used by any other device on the network by probing the +chosen address, which is usually done using the ARP protocol. If the probing +process results that the address is not used on the network (e.~g. no device +returned an ARP response during a random time interval), the device claims its +chosen address and uses it for communication on the IPv4 layer. If the chosen +address is already used, the device continues the process, subsequently choosing +a new random address and trying to claim it, until a free address has been +found. + +\paragraph{IPv6 Stateless Address Autoconfiguration} + +Similar to IPv4 Link-Local Addressing, devices configured with IPv6 Stateless +Addressing Autoconfiguration use an IPv6 address from the subnet fe80::/64. +Then, an \emph{interface identifier} is generated using the interface's MAC +address. Since MAC addresses must be unique in the network, a unique IPv6 +address is obtained by combining the subnet prefix and the interface identifier. +To ensure that no other device exists with this generated IPv6 address, the +device performs \emph{Duplicate Address Detection} on the network through +\emph{Neighbor Advertisement} messages and listening for \emph{Neighbor +Solicitation} messages. If such messages are received from other hosts, the +configured address cannot be used by the device and must be discarded. +Therefore, in order to use IPv6 effectively, it must be guarranteed that MAC +addresses are unique on the network. + +In contrast to IPv4 Link-Local Addressing, IPv6 Stateless Address +Autoconfiguration can also be used with a central server. In this case, a +central server broadcasts \emph{Router Advertisement} messages on the network which +contain a global network prefix. The hosts on the network can then use that +prefix instead to configure a global IPv6 address. + +addressing + +automatic address configuration via Zeroconf/APIPA (IPv4, \cite{rfc3927}) or +IPv6 stateless auto-configuration \cite{rfc4862} + +\pages{1} + +% vim: set ft=tex et ts=2 sw=2 : diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..3d26e5e --- /dev/null +++ b/main.tex @@ -0,0 +1,94 @@ +\documentclass[a4paper,11pt]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{ae} +\usepackage{color} + +\newcommand{\pages}[1]{\marginpar{#1 pages}} +\newcommand{\todo}{\textcolor{red}{TODO} \\} + +\title{Chatty Things -- Making the Internet of Things Readily Usable for the +Masses with XMPP} +\author{Roland Hieber} +\date{Seminar Communications and Multimedia, TU~Braunschweig \\ \today} + +\begin{document} +\maketitle + +%% Introduction +\section{Introduction} +\todo +\pages{0-1} +short overview, not too long: what do we want, what are we +going to do + + +%% Prerequisites +\section{Prerequisites} +\todo +overview to the techniques used in the paper by Klauk and Kirsche +\cite{klauck-kirsche-chattythings} + +\input{address-allocation.tex} + +\subsection{DNS-Based Service Discovery} +\todo +\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} + +\pages{1} + +\subsection{XMPP} +\todo +\cite{rfc6120} +\begin{itemize} + \item architecture: client-server, use of DNS-SD + \item addressing: JIDs, resources + \item XML-based communication primitives, stanzas and streams + \item presence + \item publish/subscribe \cite{xep-0060}, roster + \item multi-user chats \cite{xep-0045} +\end{itemize} + +\pages{3-4} + +\subsection{Multicast DNS} +\todo +\cite{rfc6762} \pages{1} + +\subsection{XMPP Serverless Messaging} +\todo +\cite{xep-0174} \pages{1} + +\section{System Architecture of Chatty Things} +\todo +\pages{3} +\subsection{Service Provisioning Sublayer} +\subsection{Bootstrapping} +\subsection{Presence Subscription} + +\section{Related Approaches} +\todo +\pages{3} +Middleware, Application protocol gateways: +\begin{itemize} + \item Constrained Application Protocol \cite{draft-ietf-core-coap-18} + \item MQ Telemetry Transport \cite{mqtt} + \item Devices Profile for Web Services \cite{zeeb-moritz-ws4d} +\end{itemize} + +\section{Discussion} +\todo +comparison of mentioned approaches + +\pages{1-2} + +\bibliographystyle{plain} +\bibliography{biblio} + +\end{document} +% vim: set ft=tex et ts=2 sw=2 :