# Connectivity

## Quick overview

How the driver reaches the nodes of a cluster, and what each kind of network needs configured.

* contact points and a local datacenter, and nothing else, when every node is reachable at the
  address it broadcasts – VPC peering, AWS Transit Gateway, or a direct connection over the
  public internet.
* a cloud private endpoint that publishes per-node routes needs client routes, which 3.x does not
  have: use Java Driver 4.x, see [client routes]().
* an [address translator]() for anything
  else.

---

A `Cluster` starts from the contact points you give it, discovers the rest of the cluster from
`system.peers`, and then opens connections to each node at the address that node broadcasts. Whether
that last step works is a property of your network, not of the driver, and it is what the pages in
this section are about.

| How your application reaches the cluster                                                                                                                  | What the driver needs                                                    |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|
| [VPC peering, Transit Gateway or a direct connection]() – every node is reachable at the address it broadcasts                                            | contact points and a local datacenter, nothing else                      |
| [A cloud private endpoint that publishes a per-node entry in `system.client_routes`]() – AWS PrivateLink, Azure Private Link, GCP Private Service Connect | not supported in 3.x – use Java Driver 4.x                               |
| A proxy in front of the cluster – one hostname for every node (a single-endpoint PrivateLink included), or EC2 multi-region                               | an [address translator](), such as the built-in [EC2 multi-region]() one |

A cloud private endpoint appears in two of those rows, and the difference is what the cluster
publishes: a per-node endpoint mapping the driver can read means client routes, which 3.x does not
have, while one hostname standing in front of every node means an address translator. The
translator has to give each node its own address and port: the driver tells nodes apart by the
address it connects to, so nodes translated to the same one collapse into a single node.

Two things are the same in every case and are covered elsewhere: [SSL]() for encrypting the
traffic, and [authentication]() for proving who you are.
