  The basic goal of survivable network design is to build a cheap network that
maintains the connectivity between given sets of nodes despite the failure of a
few edges/nodes. The Connectivity Augmentation Problem (CAP) is arguably one of
the most basic problems in this area: given a $k$(-edge)-connected graph $G$
and a set of extra edges (links), select a minimum cardinality subset $A$ of
links such that adding $A$ to $G$ increases its edge connectivity to $k+1$.
Intuitively, one wants to make an existing network more reliable by augmenting
it with extra edges. The best known approximation factor for this NP-hard
problem is $2$, and this can be achieved with multiple approaches (the first
such result is in [Frederickson and J\'aj\'a'81]).
  It is known [Dinitz et al.'76] that CAP can be reduced to the case $k=1$,
a.k.a. the Tree Augmentation Problem (TAP), for odd $k$, and to the case $k=2$,
a.k.a. the Cactus Augmentation Problem (CacAP), for even $k$. Several better
than $2$ approximation algorithms are known for TAP, culminating with a recent
$1.458$ approximation [Grandoni et al.'18]. However, for CacAP the best known
approximation is $2$.
  In this paper we breach the $2$ approximation barrier for CacAP, hence for
CAP, by presenting a polynomial-time $2\ln(4)-\frac{967}{1120}+\epsilon<1.91$
approximation. Previous approaches exploit properties of TAP that do not seem
to generalize to CacAP. We instead use a reduction to the Steiner tree problem
which was previously used in parameterized algorithms [Basavaraju et al.'14].
This reduction is not approximation preserving, and using the current best
approximation factor for Steiner tree [Byrka et al.'13] as a black-box would
not be good enough to improve on $2$. To achieve the latter goal, we ``open the
box'' and exploit the specific properties of the instances of Steiner tree
arising from CacAP.
