Why Spoke-to-Spoke Routing Is a Pain in the First Place
If you've worked with Azure long enough, you know that VNet peering is not transitive. Spoke A and Spoke B are both peered to the Hub, but they can't talk to each other through the hub unless you explicitly tell them how.
This trips up a lot of engineers coming from traditional networking. On-premises, your router just… routes. In Azure, the "default gateway" of a subnet doesn't really exist as a routing entity. The virtual NIC itself holds the routing table and sends traffic directly to the destination — bypassing any gateway in between. So if you want Spoke A to reach Spoke B via the hub, you need an actual device sitting in the hub that Azure can use as a next-hop.
Historically, your options were:
| Option | The Catch |
|---|---|
| Azure Firewall Premium | Great firewall, awkward router. Max 100 Gbps, $1.75/hr before data charges, limited BGP support for learning on-prem default routes. |
| Azure Firewall Standard | Max 30 Gbps, $1.25/hr — even less suited for high-throughput routing. |
| Third-party NVA | VM-based = VM limits. The 250,000 active connection cap has caught more than a few people off guard at scale. Add licensing, patching, and support contracts on top. |
For organizations going cloud-first, there's often a genuine push to avoid third-party NVAs where a native Azure construct can do the job. Until now, there wasn't one.
Enter the Azure Virtual Network Routing Appliance
AVNA is a managed Azure resource that you deploy directly inside your hub VNet. It runs on specialized networking hardware — not regular VMs — which is exactly why the performance numbers look so different from what you're used to.
Here's what makes it different from an NVA or Azure Firewall:
- It's a top-level Azure resource — managed just like a VNet, NSG, or Route Table. No OS to patch, no images to manage.
- It lives in a dedicated subnet called
VirtualNetworkApplianceSubnet. - It's purely a forwarding layer — it routes traffic, full stop. No firewall policy, no DPI, no NAT (though it works alongside NAT Gateway).
- High availability is built-in and it's availability zone resilient by default — you don't need a load balancer in front of it. If you put one there anyway, it won't work the way you expect.
- Supports NSGs, Admin rules, UDRs, and NAT Gateway natively.
The Architecture
Here's how this looks in a typical hub-and-spoke setup. Each spoke VNet is peered to the hub. You configure UDRs in your spoke subnets to point east-west traffic at the AVNA's IP address as the next-hop. The AVNA handles the rest — forwarding the packet to the right destination spoke. On-premises traffic keeps going through your hub VPN/ExpressRoute gateway, and internet egress still goes through your NAT Gateway or firewall.



RSS Feed