eqixiacEquinix Infrastructure as Code

Cloud-to-cloud Beta

Fabric Cloud Router or native provider-to-provider link for traffic between AWS and Google Cloud, with the break-even calculation.

Scenario#

A data platform replicates from AWS us-east-1 to Google Cloud us-east4 and serves queries back. The design has no on-premises site. The task is to choose a path for the traffic and find the volume at which the choice changes.

Three paths exist: the public internet, Equinix Fabric with a Cloud Router in Ashburn, and a native link between the two providers. This page applies the model described under Cloud-to-cloud to that choice.

Architecture options#

AWS us-east-1Direct ConnectFabric Cloud Routermetro DCGoogle Cloud us-east4Partner InterconnectAWS us-east-1Interconnect - multicloudGoogle Cloud us-east4Cross-Cloud InterconnectIP_VC, BGPIP_VC, BGPnative link, flat hourly feeOption AOption B
Option A routes through a Fabric Cloud Router, which can later take more clouds and sites. Option B is a native link between exactly two clouds.
Java
import com.eqixiac.equinix.design.optimizer.model.MulticloudEnvironmentCatalog;
import com.eqixiac.equinix.fabric.model.implementation.cloud.CloudProviderType;

MulticloudEnvironmentCatalog catalog = MulticloudEnvironmentCatalog.standard();
catalog.find(CloudProviderType.AWS, "us-east-1", CloudProviderType.GOOGLE_CLOUD, "us-east4")
    .ifPresentOrElse(
        environment -> System.out.println(environment),
        () -> System.out.println("not in the bundled catalog dated 2026-09-21; check the providers' pages"));

The catalog was copied from provider pages on 2026-09-21, so the providers may offer a pair that the catalog lacks.

Step 2: price the three paths at the expected volume#

Java
import com.eqixiac.equinix.core.enums.MetroCode;
import com.eqixiac.equinix.design.value.ratecard.ReferenceRateCard;
import com.eqixiac.equinix.design.value.savings.DataUnit;
import com.eqixiac.equinix.design.value.savings.MulticloudPathComparison;
import com.eqixiac.equinix.design.value.savings.SavingsEstimate;

SavingsEstimate estimate = fabric.savingsCalculator()
    .egress(100, DataUnit.TERABYTE)                 // AWS to Google Cloud per month
    .reverseEgress(40, DataUnit.TERABYTE)           // Google Cloud to AWS per month
    .fromCloud(CloudProviderType.AWS).inRegion("us-east-1")
    .toCloud(CloudProviderType.GOOGLE_CLOUD).toRegion("us-east4")
    .viaMetro(MetroCode.DC)
    .bandwidthMbps(10_000)
    .includeCloudRouter("STANDARD")
    .rateCard(ReferenceRateCard.standard())
    .calculate();

MulticloudPathComparison paths = estimate.getMulticloudComparison();
System.out.println("lowest cost at this volume: " + paths.getLowestCostPath());
estimate.breakEvenSustainedMbps().ifPresent(mbps -> System.out.println("break-even: " + mbps + " Mbps"));
paths.getNotes().forEach(System.out::println);

With the bundled reference prices the break-even is 2,784.3 Mbps. Monthly cost per path:

PathMonthly, USDAt 140 TB per month
Public internet13,472.00Highest of the three per-GB paths
Equinix Fabric8,262.50Lowest
Native link, 10 Gbps22,870.90Flat; independent of volume

Step 3: convert the volume to a sustained rate#

140 TB per month is a sustained 426 Mbps, both directions summed: 140,000 GB x 8,000 megabits per GB / 2,628,000 seconds. This rate is below the break-even of 2,784 Mbps, and at this volume the Fabric path costs about USD 14,600 per month less than the native link.

Sustained two-way rateMonthly volumeCheaper path at these prices
Below 2.8 GbpsBelow about 915 TBEquinix Fabric
Above 2.8 GbpsAbove about 915 TBNative link

915 TB is 2,784.3 Mbps x 2,628,000 s / 8,000. A negotiated Fabric rate, another Cloud Router package or a Google Cloud region outside North America changes the break-even, so the calculation should be repeated with your own prices.

Step 4: non-cost factors#

FactorFabric Cloud RouterNative link
ReachAny number of clouds, colocation and Network Edge on one routerExactly two clouds
Routing controlRoute filters, aggregation, BGP attributes on the routerWhat the two providers expose
PathThrough an Equinix metroBetween the providers' sites
ProvisioningSDK, Terraform or portal for the Equinix sideEach provider's console or CLI; an activation key carried between them
Smallest sizeFabric bandwidth tiers from tens of MbpsProvider sizes; AWS publishes a price for 10 Gbps only
CommitMonthly or termHourly at each provider

The cost comparison excludes the value of connecting a third cloud or an on-premises site to the same Cloud Router. A native link fits one steady flow between two clouds at a rate above the break-even.

Step 5a: build the Fabric path#

Follow Hybrid multicloud without the cage connection: one Cloud Router in DC, an IP_VC to each cloud, DIRECT and BGP on both.

The SDK cannot create a native link. A deployment plan can include the link, so that the plan document shows both options with their prices and the provider procedure.

Java
import com.eqixiac.equinix.design.optimizer.wizard.enums.CloudToCloudStrategy;
import com.eqixiac.equinix.design.optimizer.wizard.model.DeploymentPlan;

DeploymentPlan plan = fabric.deploymentWizard(result)        // result: an optimization whose workload depends on both clouds
    .cloudToCloudStrategy(CloudToCloudStrategy.COMPARE)
    .notifications("noc@example.com")
    .plan();

plan.multicloudLinksOrEmpty().forEach(link -> {
    System.out.println(link.describe());
    System.out.println(link.getRecommendation());
    link.getCreateThenAcceptRecipe().forEach(step -> System.out.println("  " + step));
});
Files.writeString(Path.of("cloud-to-cloud-plan.md"), plan.toMarkdown());

Decode the activation key before entering it at the second provider, to check the environment and the size it names.

Java
import com.eqixiac.equinix.core.model.multicloud.ActivationKey;

ActivationKey key = ActivationKey.decode(keyFromProvider);
if (key instanceof ActivationKey.V1 v1) {
    System.out.println(v1.connectionSizeMbps() + " Mbps, " + v1.destinationEnvironmentUri());
}

Review trigger#

Record the break-even rate with the decision. Repeat step 2 when the measured sustained rate reaches half of the break-even rate, when either provider changes its prices, or when a third endpoint joins the design.