  Let $S \subset \mathbb{R}^2$ be a set of $n$ sites. The unit disk graph
$\text{UD}(S)$ on $S$ has vertex set $S$ and an edge between two distinct sites
$s,t \in S$ if and only if $s$ and $t$ have Euclidean distance $|st| \leq 1$.
  A routing scheme $R$ for $\text{UD}(S)$ assigns to each site $s \in S$ a
label $\ell(s)$ and a routing table $\rho(s)$. For any two sites $s, t \in S$,
the scheme $R$ must be able to route a packet from $s$ to $t$ in the following
way: given a current site $r$ (initially, $r = s$), a header $h$ (initially
empty), and the label $\ell(t)$ of the target, the scheme $R$ consults the
routing table $\rho(r)$ to compute a neighbor $r'$ of $r$, a new header $h'$,
and the label $\ell(t')$ of an intermediate target $t'$. (The label of the
original target may be stored at the header $h'$.) The packet is then routed to
$r'$, and the procedure is repeated until the packet reaches $t$. The resulting
sequence of sites is called the routing path. The stretch of $R$ is the maximum
ratio of the (Euclidean) length of the routing path produced by $R$ and the
shortest path in $\text{UD}(S)$, over all pairs of distinct sites in $S$.
  For any given $\varepsilon > 0$, we show how to construct a routing scheme
for $\text{UD}(S)$ with stretch $1+\varepsilon$ using labels of $O(\log n)$
bits and routing tables of $O(\varepsilon^{-5}\log^2 n \log^2 D)$ bits, where
$D$ is the (Euclidean) diameter of $\text{UD}(S)$. The header size is $O(\log n
\log D)$ bits.
