Skip to main content Explore View all products (200+) Microsoft Foundry Azure Copilot GitHub Copilot Azure Kubernetes Service (AKS) Azure Cosmos DB Azure Database for PostgreSQL Azure Arc Microsoft Fabric Linux virtual machines in Azure Foundry Models Foundry Agent Service Foundry IQ Foundry Tools Foundry Control Plane Observability in Foundry Control Plane Azure OpenAI in Foundry Models Azure Speech in Foundry Tools Azure Machine Learning View all databases Azure Cosmos DB Azure DocumentDB Azure SQL Azure Database for PostgreSQL Azure Managed Redis Microsoft Fabric Azure Databricks Linux virtual machines in Azure Windows Server on Azure Azure Functions Azure Virtual Machine Scale Sets Azure API Management Azure Container Apps Azure Kubernetes Service (AKS) Azure Kubernetes Fleet Manager Azure Container Registry Azure Red Hat OpenShift Azure Container Instances Azure Container Storage Azure Arc Azure Local Microsoft Defender for Cloud Azure Monitor Microsoft Sentinel Azure Migrate View all solutions (40+) Cloud solutions for small and medium businesses Cloud migration and modernization center Data analytics for AI Azure Databases AI apps and agents Microsoft Marketplace Microsoft Sovereign Cloud AI apps and agents Responsible AI with Azure AI Infrastructure Data analytics for AI Machine learning operations (MLOps) Low-code application development on Azure Integration Services Serverless computing DevOps Migration and modernization center .NET apps migration Databases on Azure Linux on Azure Oracle on Azure SAP on the Microsoft Cloud Adaptive cloud High-performance computing (HPC) Infrastructure as a service (IaaS) Resiliency Azure Essentials Frontier Accelerate for Azure FinOps on Azure Microsoft Marketplace Azure pricing overview Create an Azure account Free Azure services Flexible purchase options Pricing calculator FinOps on Azure Maximize ROI from AI Azure savings plans Azure reservations Azure Hybrid Benefit Virtual Machines Azure SQL Microsoft Foundry Microsoft Fabric Azure Kubernetes Service (AKS) Microsoft Defender for Cloud View more Software Development Companies Microsoft Marketplace Find a partner Resources for Azure partners Get started with Azure Customer stories Analyst reports, white papers, and e-books Videos Learn more about cloud computing Documentation Explore Azure portal Developer resources Quickstart templates Resources for startups Developer community Students Azure for partners Blog Events and Webinars Learn Support Contact Sales Get started with Azure Sign in

When we launched ExpressRoute in May we allowed customers to link multiple VNETs to an ExpressRoute circuit. However, the VNETs and the circuit had to belong to the same subscription. We’ve gotten strong enterprise customer adoption of ExpressRoute. Some of our customers connect hundreds of their sites to Azure via ExpressRoute. Along with the strong adoption we have also gotten a lot of feedback. One important request was to allow multiple subscriptions to share the same ExpressRoute circuit. Many enterprise customers have multiple subscriptions for a couple of reasons:

  1. Each subscription is billed separately. Enterprises may have multiple departments and each has its own billing policies. As a result each department creates its own subscription.
  2. Each subscription can be managed separately. Enterprises may have departments that have different security and compliance requirements. Each department needs to own and manage its own subscription.

When these customers create an ExpressRoute circuit using one subscription they want to link VNETs owned by a different subscription to the same circuit. We now support this scenario. We’ll examine the scenario, the requirements and the workflow in this blog.

Scenario

Each department in Contoso has its own Azure subscription. Contoso IT has purchased an ExpressRoute circuit to connect Contoso’s on-premises network to the IT department’s VNET on Azure. Contoso wants to use the same circuit to connect its Sales’, Marketing’s and Engineering’s VNETs back to the on-premises network.

diagram, text

Requirements

All VNETs connected to an ExpressRoute circuit must be in the same routing domain. They must not have overlapping IP addresses.

Workflow

Step 1

The circuit owner authorizes the administrators of other subscriptions to use the specified circuit.

PS C:> New-AzureDedicatedCircuitLinkAuthorization -ServiceKey '6ed7e310-1a02-4261-915f-6ccfedc416f1' -Description 'SalesTeam' -Limit 2 -MicrosoftIds 'salesadmin@contoso.com'

Description         : SalesTeam 
Limit               : 2 
LinkAuthorizationId : e2bc2645-6fd4-44a4-94f5-f2e43e6953ed 
MicrosoftIds        : salesadmin@contoso.com 
Used                : 0

In the above example, the administrator of the circuit (Contoso IT) enables the administrator of another subscription (Contoso Sales), by specifying their Microsoft (Live) ID, to link up to 2 VNETs to the circuit.

The cmdlet doesn’t send email to the specified Microsoft ID. The circuit owner need to explicitly notify the other subscription owner that the authorization is complete.

Step 2

Once notified by the circuit owner, the administrator of the authorized subscription can run the following cmdlet to retrieve the service key of the circuit.

# Sign in using the specified Microsoft IDPS C:> Add-AzureAccount 

PS C:> Get-AzureAuthorizedDedicatedCircuit

Bandwidth                        : 100
CircuitName                      : ContosoIT
Location                         : Washington DC
MaximumAllowedLinks              : 2
ServiceKey                       : 6ed7e310-1a02-4261-915f-6ccfedc416f1
ServiceProviderName              : ###########
ServiceProviderProvisioningState : Provisioned
Status                           : Enabled
UsedLinks                        : 0

In this example, the administrator of Contoso Sales must first sign in using the specified Microsoft ID, salesadmin@contoso.com.

Step 3

The administrator of the authorized subscription runs the following cmdlet to complete the link operation.

PS C:> New-AzureDedicatedCircuitLink –servicekey 6ed7e310-1a02-4261-915f-6ccfedc416f1 –VnetName ‘SalesVNET1’ 

                                              State VnetName 
                                              ----- -------- 
                                        Provisioned SalesVNET1

That’s it. Contoso’s Sales VNET on Azure is now linked to a circuit created/owned by Contoso IT.

Managing Authorization

The circuit owner can share a circuit with up to 10 Azure subscriptions. The circuit owner can view who has been authorized to the circuit. The owner can revoke the authorization at any time.

PS C:> Get-AzureDedicatedCircuitLinkAuthorization -ServiceKey: 6ed7e310-1a02-4261-915f-6ccfedc416f1 

Description         : EngineeringTeam 
Limit               : 3 
LinkAuthorizationId : cc958457-c8c1-4f16-af09-e7f099da64bf 
MicrosoftIds        : engadmin@contoso.com 
Used                : 1 

Description         : MarketingTeam 
Limit               : 1 
LinkAuthorizationId : d972726f-c7b9-4658-8598-ad3208ac9348 
MicrosoftIds        : marketingadmin@contoso.com 
Used                : 0 

Description         : SalesTeam 
Limit               : 2 
LinkAuthorizationId : e2bc2645-6fd4-44a4-94f5-f2e43e6953ed 
MicrosoftIds        : salesadmin@contoso.com 
Used                : 2 

PS C:> Remove-AzureDedicatedCircuitLinkAuthorization -ServiceKey '6ed7e310-1a02-4261-915f-6ccfedc416f1' -AuthorizationId 'e2bc2645-6fd4-44a4-94f5-f2e43e6953ed'

When the circuit owner revokes an authorization, identified by LinkAuthorizationId, all links permitted by that authorization will be deleted immediately. The linked VNETs will lose connectivity to the on-premises network through the ExpressRoute circuit.

For more information about the PowerShell cmdlets used in this blog, please refer to the MSDN page here.

We hope this new feature makes it easier to manage and use ExpressRoute. Please send us your questions and feedback.

WE ARE MICROSOFT

Explore Microsoft Foundry

The future of AI starts here. Envision your next great AI app with the latest technologies. Get started with Azure.