Chapter 6 of 12

Book 01 — Azure Networking Deep Dive

Hybrid Connectivity: ExpressRoute

Azure ExpressRoute provides dedicated private connectivity between on-premises networks and Azure, bypassing the public internet. Unlike VPN, which encrypts packets over the internet, ExpressRoute rides Microsoft's global backbone — delivering predictable latency, consistent throughput, and a higher SLA. It is the connectivity standard for enterprise workloads with strict latency or compliance requirements.

ExpressRoute Overview

Circuit Anatomy

An ExpressRoute circuit is a logical object in Azure with an associated bandwidth and SKU. The physical layer is provided by a connectivity partner (telco or exchange provider) connecting your on-premises edge to two Microsoft Enterprise Edge (MSEE) routers at a peering location. Both primary and secondary MSEE connections must be active for the circuit's SLA to apply.

Peering TypeDestinationAzure BGP ASNotes
Private PeeringAzure VNets65515Primary use case; /30 or /31 BGP subnets
Microsoft PeeringAzure PaaS, Microsoft 3658075Requires Route Filter
Public Peering(Deprecated)Migrated to Microsoft Peering

Important

Both the primary and secondary MSEE connections must be provisioned and BGP sessions must be established for the circuit's 99.95% SLA to apply. A circuit with only one active path is not covered by SLA.

Circuit SKUs

SKU TierRouting ScopeUse Case
StandardAzure regions in same geopolitical regionSingle-geography deployments
PremiumAll Azure regions globallyGlobal deployments; Global Reach required
ExpressRoute circuit anatomy. On-premises CE connects through service provider to two MSEE routers at a peering location. Primary MSEE and Secondary MSEE in different fault domains. ER Gateway in GatewaySubnet receives BGP routes. FastPath bypasses ER Gateway for data plane. Hub and spoke VNets learn on-prem routes via BGP propagation.
Figure 6.1 — ExpressRoute circuit anatomy: CE → Provider → MSEE (Primary+Secondary) → ER Gateway → Hub/Spoke VNets

Circuit Deployment

bash
# Create ExpressRoute circuit (state: NotProvisioned → share Service Key with provider)
az network express-route create \
  --name er-circuit-corp \
  --resource-group rg-connectivity \
  --location eastus2 \
  --bandwidth 1000 \
  --peering-location "Washington DC" \
  --provider Equinix \
  --sku-family MeteredData \
  --sku-tier Premium

# After provider provisions circuit — configure Private Peering
az network express-route peering create \
  --resource-group rg-connectivity \
  --circuit-name er-circuit-corp \
  --peering-type AzurePrivatePeering \
  --peer-asn 65100 \
  --primary-peer-address-prefix 10.100.0.0/30 \
  --secondary-peer-address-prefix 10.100.0.4/30 \
  --vlan-id 100

# Connect circuit to VNet via ER Gateway
az network vpn-connection create \
  --name conn-er-hub \
  --resource-group rg-connectivity \
  --vnet-gateway1 ergw-hub \
  --express-route-circuit2 er-circuit-corp \
  --routing-weight 0

FastPath

FastPath bypasses the ER Gateway for data-plane traffic, routing packets directly from the MSEE to the destination VM's host. This eliminates the gateway as a bottleneck for high-bandwidth workloads. The control plane (BGP route distribution) still uses the ER Gateway — only data bypasses it.

AspectWithout FastPathWith FastPath
Data pathMSEE → ER Gateway → VMMSEE → VM (direct)
Throughput limitER Gateway SKU capNear line-rate
RequirementAny ER Gateway SKUUltraPerformance or ErGw3AZ
bash
# Enable FastPath on ER connection (requires ErGw3AZ gateway)
az network vpn-connection update \
  --name conn-er-hub \
  --resource-group rg-connectivity \
  --express-route-gateway-bypass true

Global Reach

Global Reach connects two ExpressRoute circuits together inside Microsoft's backbone, enabling direct on-premises-to-on-premises communication without internet transit. Traffic flows: Site A → MSEE A → Global Reach backbone link → MSEE B → Site B. Azure VNets are reachable from both sites independently.

Note

Global Reach requires both circuits to be on the Premium SKU. Standard SKU circuits cannot participate in Global Reach. The link address prefix must be a /29 (not /30).

ExpressRoute Global Reach topology. London DC and New York DC each connect to Azure via separate ER circuits. Global Reach link connects the two MSEEs inside Microsoft's backbone. London and New York can communicate directly without internet. Both sites can also reach Azure VNets.
Figure 6.2 — ExpressRoute Global Reach: two on-premises sites connected via Microsoft backbone, no internet transit
bash
# Create Global Reach connection between two circuits
az network express-route peering connection create \
  --name gr-corp-to-branch \
  --resource-group rg-connectivity \
  --circuit-name er-circuit-corp \
  --peering-name AzurePrivatePeering \
  --peer-circuit /subscriptions/.../er-circuit-branch \
  --address-prefix 192.168.100.0/29

Microsoft Peering

Microsoft Peering routes traffic to Azure PaaS public endpoints and Microsoft 365 over ExpressRoute. A Route Filter restricts which BGP communities (services and regions) are accepted. Without a Route Filter attached, no routes are advertised from Microsoft Peering.

bash
# Create Route Filter for Azure SQL + Storage in East US
az network route-filter create \
  --name rf-mspeering --resource-group rg-connectivity \
  --location eastus2
az network route-filter rule create \
  --filter-name rf-mspeering --resource-group rg-connectivity \
  --name allow-eastus-paas \
  --rule-type Community \
  --communities "12076:51004" "12076:50001" \
  --access Allow

az network express-route peering update \
  --resource-group rg-connectivity \
  --circuit-name er-circuit-corp \
  --peering-type MicrosoftPeering \
  --route-filter rf-mspeering

Lab: Guided Walkthrough

Lab Note: ExpressRoute circuits require a service provider to provision the physical path — this cannot be completed in a self-service lab environment. The walkthrough below uses az network express-route show against an existing circuit to practise inspection and configuration commands without incurring circuit provisioning.

1

Inspect Circuit State and Peering Status (CE-16)

bash
# CE-16: Inspect circuit and BGP peer status
az network express-route list --output table
az network express-route show \
  --name er-circuit-corp \
  --resource-group rg-connectivity \
  --query "{State:circuitProvisioningState,Bandwidth:bandwidthInMbps,SKU:sku}"

# View BGP peer status via ER Gateway
az network vnet-gateway list-bgp-peer-status \
  --resource-group rg-connectivity \
  --name ergw-hub --output table
2

Verify FastPath and Connection Routing Weight (CE-17)

bash
# CE-17: Verify FastPath enabled and routing weight
az network vpn-connection show \
  --name conn-er-hub --resource-group rg-connectivity \
  --query "{FastPath:expressRouteGatewayBypass,Weight:routingWeight}"

# List learned on-prem routes from circuit
az network express-route list-route-tables \
  --resource-group rg-connectivity \
  --name er-circuit-corp \
  --peering-name AzurePrivatePeering \
  --path primary --output table

VPN + ER Coexistence

Both a VPN Gateway and an ER Gateway can coexist in the same GatewaySubnet. Configure the VPN connection as a backup: ER routes have lower weight (preferred) by default. When the ER circuit fails, BGP reconverges through the VPN tunnel. Requires UltraPerformance ER Gateway SKU for coexistence support.

Summary

ConceptKey Fact
Circuit provisioningProvider provisions after receiving Service Key; ~5 business days
Private PeeringVNet connectivity; Azure BGP AS 65515; two /30 subnets for primary/secondary
SLA99.95% requires both MSEEs active and zone-redundant ErGw
FastPathBypasses ER Gateway data plane; requires UltraPerformance or ErGw3AZ
Global ReachPremium SKU; /29 link address; on-prem to on-prem via backbone
Microsoft PeeringPaaS/M365; Route Filter required; uses BGP communities
Standard vs Premium SKUPremium enables global routing and Global Reach

Chapter 7 covers Private Link and Private Endpoints — the preferred mechanism for consuming Azure PaaS services from VNets without exposing traffic to the public internet.


Chapter: 6 of 12  |  Status: v0.1 Draft  |