Perfect - glad you got it resolved. Let me summarize the complete solution for ExpressRoute private peering with NVA inspection at edge sites:
ExpressRoute Private Peering Setup:
Your ExpressRoute circuit configuration was correct - BGP peering established, routes being exchanged properly. The issue wasn’t with the Microsoft Enterprise Edge (MSEE) or your edge router BGP configuration.
BGP Route Advertisement:
Routes were being advertised correctly in both directions. The problem was in the data plane, not the control plane. However, for production deployments, implement these BGP best practices:
router bgp 65001
neighbor 10.255.255.1 timers 30 90
neighbor 10.255.255.1 route-map AZURE-IN in
neighbor 10.255.255.1 prefix-list EDGE-OUT out
This ensures stable peering during brief connectivity issues and provides route filtering for security.
NVA/Firewall Configuration:
The core issue was asymmetric routing caused by missing User-Defined Routes (UDRs) in Azure. Here’s the complete fix:
-
Azure-side UDR: Create a route table on your Azure VNet subnets with routes pointing back through the NVA:
- Route: 192.168.100.0/24 (edge site) → Next hop: NVA private IP (e.g., 10.50.1.4)
- Associate this route table with all subnets that need to communicate with the edge site
-
NVA Security Policy: Configure firewall rules to permit bidirectional traffic:
- Allow zone: Edge → Azure (10.50.0.0/16)
- Allow zone: Azure → Edge (192.168.100.0/24)
- Enable application inspection but don’t block BGP (TCP 179)
-
TCP MSS Clamping: Critical for preventing MTU black holes:
set deviceconfig setting tcp tcp-mss-adjustment 1350
set deviceconfig setting session tcp-reject-non-syn no
-
NVA Interface Configuration: Verify these settings in Azure portal:
- IP forwarding: Enabled on both NICs
- NSG rules: Permit traffic between edge and Azure address spaces
- Accelerated networking: Enabled for better throughput
-
Edge Router MTU: Match MTU settings to prevent fragmentation:
interface GigabitEthernet0/0/1
mtu 1500
ip tcp adjust-mss 1350
Validation Commands:
On edge router:
show ip bgp neighbors 10.255.255.1 advertised-routes
show ip route 10.50.0.0
ping 10.50.1.10 source 192.168.100.1 size 1400 df-bit
On Azure NVA (via serial console or SSH):
tcpdump -i eth0 host 192.168.100.1
netstat -rn | grep 192.168.100
The key lesson: When inserting an NVA into the ExpressRoute path, you must configure symmetric routing on both sides. Azure’s default routing will try to send return traffic directly to ExpressRoute, bypassing your NVA and breaking stateful inspection. Always implement UDRs to force traffic through the security appliance in both directions.
For production resilience, consider deploying NVAs in active-passive HA configuration with Azure Load Balancer, and use BGP route preferences to control failover behavior. Monitor ExpressRoute metrics in Azure Monitor for circuit utilization, BGP availability, and packet drops.