- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
4.9 KiB
4.9 KiB
Full-Mesh VNet Peering Complete ✅
Overview
A full-mesh VNet peering has been created between all 6 VNets, enabling direct communication between any pair of VNets without routing through the proxy.
VNets in Full Mesh
- Proxy VNet:
az-p-wst-proxy-vnet(West Europe) - Central US:
az-p-cus-vm-vnet - East US:
az-p-eus-vm-vnet - East US 2:
az-p-eus2-vm-vnet - West US:
az-p-wus-vm-vnet - West US 2:
az-p-wus2-vm-vnet
Peering Topology
Total Peerings
- VNet Pairs: 15 (C(6,2) = 15)
- Bidirectional Peerings: 30 (15 pairs × 2 directions)
- Peerings per VNet: 5 (each VNet peers with the other 5)
Peering Matrix
| VNet A | VNet B | A→B Peering | B→A Peering |
|---|---|---|---|
az-p-wst-proxy-vnet |
az-p-cus-vm-vnet |
✅ | ✅ |
az-p-wst-proxy-vnet |
az-p-eus-vm-vnet |
✅ | ✅ |
az-p-wst-proxy-vnet |
az-p-eus2-vm-vnet |
✅ | ✅ |
az-p-wst-proxy-vnet |
az-p-wus-vm-vnet |
✅ | ✅ |
az-p-wst-proxy-vnet |
az-p-wus2-vm-vnet |
✅ | ✅ |
az-p-cus-vm-vnet |
az-p-eus-vm-vnet |
✅ | ✅ |
az-p-cus-vm-vnet |
az-p-eus2-vm-vnet |
✅ | ✅ |
az-p-cus-vm-vnet |
az-p-wus-vm-vnet |
✅ | ✅ |
az-p-cus-vm-vnet |
az-p-wus2-vm-vnet |
✅ | ✅ |
az-p-eus-vm-vnet |
az-p-eus2-vm-vnet |
✅ | ✅ |
az-p-eus-vm-vnet |
az-p-wus-vm-vnet |
✅ | ✅ |
az-p-eus-vm-vnet |
az-p-wus2-vm-vnet |
✅ | ✅ |
az-p-eus2-vm-vnet |
az-p-wus-vm-vnet |
✅ | ✅ |
az-p-eus2-vm-vnet |
az-p-wus2-vm-vnet |
✅ | ✅ |
az-p-wus-vm-vnet |
az-p-wus2-vm-vnet |
✅ | ✅ |
Peering Configuration
All peerings created with:
- ✅
allowVirtualNetworkAccess = true - ✅
allowForwardedTraffic = true - ✅
useRemoteGateways = false - ✅ Bidirectional (both directions)
Peering Naming Convention
Peerings are named using the pattern:
{source-vnet-name}-to-{destination-vnet-name}
Examples:
az-p-wst-proxy-vnet-to-az-p-cus-vm-vnetaz-p-cus-vm-vnet-to-az-p-wst-proxy-vnetaz-p-eus-vm-vnet-to-az-p-wus-vm-vnet
Network Address Spaces
| VNet | Address Space | Subnet |
|---|---|---|
az-p-wst-proxy-vnet |
10.10.0.0/16 | 10.10.1.0/24 |
az-p-cus-vm-vnet |
10.3.0.0/16 | 10.3.1.0/24 |
az-p-eus-vm-vnet |
10.1.0.0/16 | 10.1.1.0/24 |
az-p-eus2-vm-vnet |
10.4.0.0/16 | 10.4.1.0/24 |
az-p-wus-vm-vnet |
10.2.0.0/16 | 10.2.1.0/24 |
az-p-wus2-vm-vnet |
10.5.0.0/16 | 10.5.1.0/24 |
Benefits of Full Mesh
- Direct Communication: Any VNet can communicate directly with any other VNet
- No Single Point of Failure: Communication doesn't depend on the proxy VNet
- Lower Latency: Direct paths reduce network hops
- P2P Support: Besu nodes can discover and connect to peers across regions
- Consensus Support: Validators can communicate directly for consensus
Verification
Check Peering Status
# List all peerings for a specific VNet
az network vnet peering list \
--resource-group <RG_NAME> \
--vnet-name <VNET_NAME> \
--query "[].{Name:name, State:peeringState, RemoteVNet:remoteVirtualNetwork.id}" \
-o table
Test Connectivity
From any VM, test connectivity to any other VM:
# From Nginx VM (10.10.1.4) to Besu nodes
for IP in 10.1.1.4 10.2.1.4 10.3.1.4 10.4.1.4 10.5.1.4; do
curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' \
http://$IP:8545
done
# Cross-VNet test (from one Besu node to another)
curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' \
http://10.1.1.4:8545 # From any Besu node to East US
Expected Results
- ✅ All peerings show
peeringState: "Connected" - ✅ Ping tests show 0% packet loss
- ✅ RPC calls return valid JSON-RPC responses
- ✅ Cross-VNet communication works
Next Steps
- ✅ Full-Mesh Peerings: Created (30 peerings)
- ⏳ Wait for Propagation: Allow 1-2 minutes for all peerings to fully initialize
- ⏳ Test Connectivity: Verify all VNets can reach each other
- ⏳ Test RPC Endpoint: Verify https://rpc.d-bis.org responds correctly
- ⏳ Test P2P Discovery: Verify Besu nodes can discover peers across regions
Troubleshooting
Peering Not Connected
If a peering shows peeringState: "Initiated" instead of "Connected":
- Check that the reverse peering exists
- Wait 1-2 minutes for Azure to sync
- Verify both VNets are in the same subscription
Connectivity Issues
If ping/RPC tests fail:
- Verify NSG rules allow traffic
- Check that peerings are in
"Connected"state - Verify VNet address spaces don't overlap
- Check route tables (if custom routes exist)
Status: ✅ Full-Mesh VNet Peering Complete
All 30 bidirectional peerings have been created, enabling direct communication between all 6 VNets.