Skip to content

Commit b188f8d

Browse files
authored
Merge pull request #312217 from madhurinms/master
C2C Private networking article
2 parents cafeca6 + e134615 commit b188f8d

5 files changed

Lines changed: 280 additions & 0 deletions

File tree

articles/storage-mover/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ items:
2424
href: service-prerequisites.md
2525
- name: Network prerequisites
2626
href: network-prerequisites.md
27+
- name: Planning your Private Networking for cloud to cloud migrations
28+
href: cloud-to-cloud-private-network-configs.md
2729
- name: Performance targets
2830
href: performance-targets.md
2931
- name: Deploy and execute
Lines changed: 278 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,278 @@
1+
---
2+
title: Azure private network connectivity options (ExpressRoute, VPN, SD-WAN)
3+
description: This concept article explains common options for connecting Azure to private networks (including on-premises and AWS), how they compare, and what to consider for latency, bandwidth, security, cost, and operational complexity.
4+
author: madhurinms
5+
ms.service: azure-storage-mover
6+
ms.topic: concept-article
7+
ms.author: madhn
8+
ms.date: 02/24/2026
9+
---
10+
11+
# Azure private network connectivity options (ExpressRoute, VPN, SD-WAN)
12+
## Overview
13+
14+
Azure supports several ways to connect to private networks. The best approach depends on your requirements for latency, bandwidth, security, cost, and operational complexity.
15+
16+
* **Azure ExpressRoute** - Private, dedicated connectivity that doesn't traverse the public internet.
17+
* **Site-to-site IPsec VPN** - Encrypted tunnels over the public internet (typically using Azure VPN Gateway).
18+
* **SD-WAN via network virtual appliances (NVAs)** - Third-party appliances provide VPN/firewall features and can terminate tunnels instead of using native gateways.
19+
20+
In general, ExpressRoute is preferred for the highest bandwidth and lowest latency. When ExpressRoute isn't available, use site-to-site VPN or an SD-WAN/NVA-based design.
21+
22+
## Key concepts
23+
24+
**ExpressRoute**: Private connectivity to Azure through a connectivity provider; typically used for predictable latency and higher throughput.
25+
26+
**Azure VPN Gateway SKU**: The gateway size/SKU affects tunnel counts and throughput; choose based on required bandwidth and resiliency.
27+
28+
**IPsec/IKE policy**: Cryptographic algorithms and parameters used to establish and secure VPN tunnels (for example, AES and SHA families, DH/PFS groups).
29+
30+
**BGP (Border Gateway Protocol)**: Dynamic routing that exchanges prefixes between networks; commonly used for active/active tunnels and route failover.
31+
32+
**Network virtual appliance (NVA)**: A third-party virtual network device (such as firewall/SD-WAN) deployed in Azure; often used for advanced inspection, policy, and routing.
33+
34+
**UDR (user-defined routes)**: Custom routes in Azure that steer traffic to a specific next hop (for example, an NVA).
35+
36+
**AWS Transit Gateway (TGW) / Virtual Private Gateway (VGW)**: AWS routing endpoints for VPN/Direct Connect; TGW is commonly preferred for hub-and-spoke and scale.
37+
38+
**AWS VPC endpoint (VPCE) for Amazon S3**: Private connectivity from a VPC to S3; often paired with **private DNS** and endpoint/bucket policies.
39+
40+
**S3 bucket policy and VPCE policy**: Resource-based policies that can allow/deny access, including restrictions to a specific VPCE via **aws:SourceVpce**.
41+
42+
**Azure Private Link Service Direct Connect**: Azure capability to create outbound private connectivity to a destination IP (for example, an AWS VPCE IP) for services such as Storage Mover private connections.
43+
44+
**Private connection approval**: Private connections might require explicit approval before they can be used by workloads/jobs.
45+
46+
**Regional alignment**: Some resources (for example, AWS VPCEs and certain Azure service constructs) are region-scoped and must be deployed in compatible regions.
47+
48+
## When to use each option
49+
50+
**ExpressRoute**: Choose when you need predictable performance, private connectivity, and higher throughput for hybrid connectivity.
51+
52+
**Site-to-site VPN**: Choose for faster setup, lower cost, or as a backup path; performance depends on internet conditions and gateway SKU.
53+
54+
**SD-WAN/NVAs**: Choose when you need vendor-specific routing, security inspection, or an existing SD-WAN operational model.
55+
56+
| **Option** | **Connectivity path** | **Typical strengths** | **Common tradeoffs** |
57+
|---|---|---|---|
58+
| **ExpressRoute** | Private circuit via provider/colocation | Low latency, high throughput, predictable performance | Lead time, cost, provider dependencies |
59+
| **Site-to-site IPsec VPN** | Encrypted tunnels over public internet | Quick to deploy, good for backup/DR | Variable performance; throughput limits per gateway/SKU |
60+
| **SD-WAN / NVAs** | Tunnels terminate on third-party appliances | Advanced policy, inspection, vendor features | More components to manage; appliance sizing/licensing |
61+
62+
## Connectivity options in Azure
63+
64+
### ExpressRoute
65+
66+
**Learn more:** [ExpressRoute documentation](/azure/expressroute/)
67+
68+
**Routing:** BGP is commonly used over private circuits to exchange prefixes between Azure and your network.
69+
70+
**Connectivity providers:** ExpressRoute is typically provisioned through a colocation or connectivity provider (for example, Equinix, Megaport).
71+
72+
### Site-to-site IPsec VPN (Azure VPN Gateway)
73+
74+
**Overview:** Use Azure VPN Gateway for encrypted site-to-site IPsec tunnels over the public internet. For higher throughput and resiliency, select an appropriate gateway SKU (for example, Generation2 and zone-redundant SKUs where available).
75+
76+
**Learn more:** [Tutorial - Create an S2S VPN connection](/azure/vpn-gateway/tutorial-site-to-site-portal)
77+
78+
**Routing:** Use BGP to exchange routes and support active/active tunnels across multiple connections.
79+
80+
For a detailed walkthrough of multi-tunnel BGP between Azure VPN Gateway and AWS, see: [Tutorial - Configure a BGP-enabled connection between Azure and AWS](/azure/vpn-gateway/vpn-gateway-howto-aws-bgp).
81+
82+
#### Implementation tips (VPN performance)
83+
84+
Example custom IPsec/IKE settings (validate against your device compatibility): **GCMAES256** for IPsec encryption/integrity, **SHA256** for IKE integrity, **DHGroup14**, **PFS2048**.
85+
86+
:::image type="content" source="./media/cloud-to-cloud-networking/ipsec-policy.png" alt-text="Screenshot of ipsec policy." lightbox="./media/cloud-to-cloud-networking/ipsec-policy.png":::
87+
88+
**Learn more:** [Configure custom IPsec/IKE connection policies](https://docs.azure.cn/en-us/vpn-gateway/ipsec-ike-policy-howto).
89+
90+
### SD-WAN with network virtual appliances (NVAs)
91+
92+
SD-WAN and firewall NVAs can terminate VPN tunnels, perform inspection, and apply centralized routing and security policy. This approach is useful when you need vendor-specific capabilities or you already operate an SD-WAN platform across sites.
93+
94+
**Fortinet**: FortiGate Next-Generation Firewall
95+
96+
**Cisco**: Catalyst SD-WAN, Meraki SD-WAN
97+
98+
**HPE (Aruba Networks)**: EdgeConnect SD-WAN
99+
100+
**Palo Alto Networks**: Prisma SD-WAN
101+
102+
**Arista (VMware)**: VeloCloud SD-WAN Virtual Edge
103+
104+
SD-WAN NVAs are commonly licensed as either pay-as-you-go (PAYG) or bring-your-own-license (BYOL). Vendor support varies by deployment option.
105+
106+
PAYG: Pay as you go
107+
108+
BYOL: Bring your own license
109+
110+
#### Example deployment (FortiGate NVA in Azure)
111+
112+
**Select a topology** (single VM, active/passive, or active/active) based on availability and throughput requirements.
113+
114+
**Choose a suitable VM size** (often F or D-series with higher vCPU) and enable **accelerated networking** where supported.
115+
116+
**Network design**: place interfaces in WAN/LAN (and protected) subnets and configure NSG rules for required management and VPN ports (for example, UDP 500/4500 for IPsec).
117+
118+
**Routing**: use UDRs to steer Azure-to-AWS prefixes through the NVA next hop.
119+
120+
**Vendor documentation:** For example steps to configure IPsec between FortiGate devices, see the Fortinet Community article below.
121+
122+
[How to configure VPN site-to-site between FortiGate devices (Fortinet Community)](https://community.fortinet.com/t5/FortiGate/Technical-Tip-How-to-configure-VPN-Site-to-Site-between/ta-p/197922)
123+
124+
## AWS connectivity to Azure
125+
126+
### AWS Direct Connect to Azure ExpressRoute
127+
128+
AWS Direct Connect can be paired with Azure ExpressRoute through a colocation/provider to create a private, high-throughput path between AWS and Azure.
129+
130+
**Routing:** BGP over private circuits
131+
132+
**Connectivity:** Typically via a colocation/connectivity provider
133+
134+
[What is Direct Connect? - AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)
135+
136+
[Create an Direct Connect gateway - AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/create-direct-connect-gateway.html)
137+
138+
### AWS site-to-site VPN (BGP)
139+
140+
For AWS-to-Azure VPN, use dynamic routing (BGP) and prefer AWS Transit Gateway (TGW) for scale and performance when applicable.
141+
142+
**Learn more:** [Tutorial - Configure a BGP-enabled connection between Azure and AWS](/azure/vpn-gateway/vpn-gateway-howto-aws-bgp).
143+
144+
### AWS SD-WAN with NVAs
145+
146+
If you operate an SD-WAN platform in AWS (for example, FortiGate on EC2), you can terminate tunnels in AWS and connect to Azure using the same SD-WAN policy model used on-premises.
147+
148+
1. Launch the NVA from AWS Marketplace and size the instance for required throughput.
149+
2. Attach WAN/LAN interfaces, associate an Elastic IP to the WAN interface, and disable source/destination checks if required by the appliance routing model.
150+
3. Configure security groups and route tables to allow Azure prefixes and steer traffic through the appliance.
151+
152+
## Implementation details for S3 private access (VPC endpoints)
153+
154+
### Configure an AWS VPC endpoint (VPCE) for Amazon S3
155+
156+
An AWS VPC endpoint (VPCE) for S3 lets your VPC reach S3 privately. For this design, you typically enable private DNS and then constrain access using VPCE and bucket policies.
157+
158+
#### High-level steps
159+
160+
1. Verify your VPC has **DNS support** and **DNS hostnames** enabled.
161+
2. Create an **interface** VPCE for **Amazon S3** in the target VPC and subnets, and enable **private DNS**.
162+
3. Configure VPCE and bucket policies to allow only required S3 actions and (optionally) restrict access to the specific endpoint using **aws:SourceVpce**.
163+
164+
:::image type="content" source="./media/cloud-to-cloud-networking/vpce-policy.png" alt-text="Screenshot of vpce policy." lightbox="./media/cloud-to-cloud-networking/vpce-policy.png":::
165+
166+
Example: S3 bucket policy restricted to a specific VPCE.
167+
168+
:::image type="content" source="./media/cloud-to-cloud-networking/s3-bucket-policy.png" alt-text="Screenshot of bucket policy." lightbox="./media/cloud-to-cloud-networking/s3-bucket-policy.png":::
169+
170+
**Note:** Record the VPCE private IP address; it is used as the destination IP for Azure Private Link Service Direct Connect.
171+
172+
#### Security group considerations
173+
174+
Allow required traffic from Azure source prefixes to the VPCE and related AWS resources (principle of least privilege).
175+
176+
## Azure configuration for Private Link Service Direct Connect
177+
178+
### Create the Private Link Service Direct Connect resource
179+
180+
Private Link Service Direct Connect allows Azure to create outbound private connectivity to a destination IP address (for example, an AWS VPCE IP). In this scenario, it enables Storage Mover private connections to reach a private S3 endpoint over your established Azure-to-AWS network path.
181+
182+
1. Deploy the PLS Direct Connect resource in the **same Azure region** as the Storage Mover resource and the Azure virtual network used to reach AWS.
183+
2. Enable the feature in the Azure portal using the provided flight link: [Azure portal flight link (PLS Direct Connect)](https://ms.portal.azure.com/?feature.canmodifystamps=true&exp.plsdirectconnect=true).
184+
3. Ensure the Azure VNet/subnet selected for source NAT has connectivity to the AWS VPC and the VPCE IP address.
185+
186+
#### High-level steps
187+
188+
1. Create the **Private Link Service (Your Service)** resource for Direct Connect in the correct region.
189+
2. Configure **Outbound settings**:
190+
3. Set connection method to **Destination IP address** and enter the **AWS VPCE IP address**.
191+
4. Select the **source NAT** virtual network and subnet that can route to AWS.
192+
5. Configure private IP address settings as required for resiliency (for example, two or more addresses in supported increments).
193+
194+
### Create and approve private connections
195+
196+
After creating the Direct Connect resource, create a private connection in Storage Mover and approve it before use.
197+
198+
1. In **Storage Mover**, open **Storage Endpoints** and then the **Private Connections** tab.
199+
2. Create a private connection that references the Direct Connect private link service, then approve it so it can be associated to jobs.
200+
201+
### Use private connections for cloud-to-cloud migration
202+
203+
1. Use the above Private connection as part of Create job operation. Select ‘Cloud to Cloud' migration type.
204+
2. When creating a cloud-to-cloud migration job, set the S3 bucket type to **Private** and associate the approved private connection.
205+
3. Verify the private connection is listed and in **Approved** state.
206+
4. Only private connections in **Approved** state can be selected.
207+
5. Remaining job steps are the same as a public S3-to-Blob migration.
208+
209+
210+
211+
212+
## Troubleshooting
213+
214+
### Connectivity and IP addressing
215+
216+
* **Verify Destination IP in Azure PLS:** Ensure the Azure Private Link Service is pointed specifically to the AWS VPC Endpoint's IP address. A mismatch here will prevent the initial handshake.
217+
* **Validate Network Path:** Confirm that the underlying network infrastructure (e.g., VPN, ExpressRoute, or Cloud Interconnect) is established and routing traffic correctly between the Azure environment and the AWS VPC.
218+
* **Check Interface Configurations:** Review the AWS VPC Endpoint configuration to ensure it is active and associated with the correct subnets and security groups.
219+
220+
### VPCE policy configuration
221+
222+
* **Audit Resource Permissions:** Inspect the `Resource` element in your VPCE policy. It must explicitly include the ARN of the target S3 bucket (e.g., `arn:aws:s3:::your-bucket-name` and `arn:aws:s3:::your-bucket-name/*`).
223+
* **Audit Action Permissions:** Ensure the `Action` element in the VPCE policy permits necessary operations. At a minimum, `s3:Get*` and `s3:List*` are required for reading and browsing data.
224+
* **Policy Logic:** If using a custom policy, ensure there are no "Deny" statements that inadvertently override the "Allow" statements for the Azure-sourced traffic.<br>
225+
226+
:::image type="content" source="./media/cloud-to-cloud-networking/vpce-policy.png" alt-text="Screenshot of vpce policy." lightbox="./media/cloud-to-cloud-networking/vpce-policy.png":::
227+
228+
### S3 bucket policy constraints
229+
230+
* **VPCE allow listing:** Check the S3 Bucket Policy for a `Condition` block. If the bucket restricts access, it must explicitly allow the `aws:SourceVpce` corresponding to the VPC Endpoint being used.
231+
* **Principal Access:** Ensure the IAM identity or the anonymous access (if applicable via VPCE) is not blocked by the bucket's Access Control List (ACL) or Public Access Block settings.
232+
233+
:::image type="content" source="./media/cloud-to-cloud-networking/s3-bucket-policy.png" alt-text="Screenshot of bucket policy" lightbox="./media/cloud-to-cloud-networking/s3-bucket-policy.png":::
234+
235+
### Regional alignment
236+
237+
* **Region Scope Validation:** AWS VPC Endpoints for S3 are **region scoped**. A VPCE in `us-west` cannot route traffic to an S3 bucket located in `us-east`.
238+
* **Remediation:** If a regional mismatch is identified, the S3 bucket must be migrated to the same region as the VPCE, or a new VPCE must be established in the bucket's region (noting that this may require additional cross-region routing
239+
240+
## Limits
241+
242+
* Customers can configure a maximum of 10 Private Connections/region. This includes private connection state in Approved/Pending/Disconnected state.
243+
* PLS direct should be configured in the same region as Storage Mover Resource.
244+
245+
## Performance
246+
247+
| **Setup** | ** Max Throughput (Apxmt)** |
248+
|---|---|
249+
| **Azure VPN Gateway (4 IPSec Tunnels) with single Private connection** | 4.5 Gbps |
250+
| **Azure VPN Gateway (4 IPsec Tunnels) with 2 Private connections** | 5.6 Gbps |
251+
| **FortiGate SDWAN with a Private Connection** | 2 Gbps |
252+
| **2 FortiGate SDWANs each with VPN tunnel and Private Connection** | 2 Gbps * 2 |
253+
254+
## Next steps
255+
256+
Review ExpressRoute concepts and planning in the [ExpressRoute documentation](/azure/expressroute/).
257+
258+
Create a site-to-site VPN connection in Azure: [Tutorial - Create an S2S VPN connection](/azure/vpn-gateway/tutorial-site-to-site-portal).
259+
260+
For BGP between Azure and AWS, follow: [Tutorial - Configure a BGP-enabled connection between Azure and AWS](/azure/vpn-gateway/vpn-gateway-howto-aws-bgp).
261+
262+
263+
264+
265+
266+
267+
268+
269+
270+
271+
272+
273+
274+
275+
276+
277+
278+
116 KB
Loading
24 KB
Loading
83.1 KB
Loading

0 commit comments

Comments
 (0)