# VMID to IP Address Mapping System ## Overview This document describes a systematic approach to mapping VMIDs to IP addresses for better network management and organization. ## Mapping Strategy ### Current Network: 192.168.11.0/24 For the 192.168.11.X network, we use VMID-based IP assignment: | VMID Pattern | IP Mapping | Example | Notes | |-------------|------------|---------|-------| | **4-digit (2400-2499)** | Last 2 digits = last octet | VMID 2400 → 192.168.11.240 | Direct alignment | | **4-digit (2500-2599)** | Last 2 digits = last octet | VMID 2500 → 192.168.11.250 | Direct alignment | ### Future Network Expansion For future VLAN-based networks, use the following patterns: | VMID Pattern | Network | IP Mapping | Example | |-------------|---------|------------|---------| | **3-digit (100-999)** | 192.168.0.X | Last 3 digits = last octet | VMID 101 → 192.168.0.101 | | **4-digit (1000-1099)** | 192.168.1.X | Last 3 digits = last octet | VMID 1001 → 192.168.1.1 | | **4-digit (1100-1199)** | 192.168.1.X | Last 2 digits = last octet | VMID 1101 → 192.168.1.101 | | **5-digit (10000-10999)** | 192.168.10.X | Last 3 digits = last octet | VMID 10101 → 192.168.10.101 | ## Implementation ### Function: `vmid_to_ip()` ```bash vmid_to_ip() { local vmid=$1 local base_network="${2:-192.168.11}" # For 4-digit VMIDs in 192.168.11.X network if [[ $vmid =~ ^[0-9]{4}$ ]] && [[ "$base_network" == "192.168.11" ]]; then local last_octet=$((vmid % 1000)) # Ensure last octet is in valid range (1-254, since .255 is broadcast) if [[ $last_octet -ge 1 ]] && [[ $last_octet -le 254 ]]; then echo "${base_network}.${last_octet}" return 0 fi fi echo "" return 1 } ``` ### Usage Example ```bash # Get IP for VMID 2400 IP=$(vmid_to_ip 2400) echo "$IP" # Output: 192.168.11.240 # Get IP for VMID 2401 IP=$(vmid_to_ip 2401) echo "$IP" # Output: 192.168.11.241 ``` ## Current Allocations (192.168.11.0/24) ### Infrastructure IPs - `.1` - Gateway (ER605-A) - `.8` - Omada Controller - `.10-14` - Proxmox Hosts (ml110, r630-01 through r630-04) ### Besu Validators (VMIDs 1000-1004) - VMID 1000 → 192.168.11.100 - VMID 1001 → 192.168.11.101 - VMID 1002 → 192.168.11.102 - VMID 1003 → 192.168.11.103 - VMID 1004 → 192.168.11.104 ### Besu Sentries (VMIDs 1500-1503) - VMID 1500 → 192.168.11.150 - VMID 1501 → 192.168.11.151 - VMID 1502 → 192.168.11.152 - VMID 1503 → 192.168.11.153 ### Besu RPC Nodes (VMIDs 2500-2502) - VMID 2500 → 192.168.11.250 - VMID 2501 → 192.168.11.251 - VMID 2502 → 192.168.11.252 ### ThirdWeb RPC Nodes (VMIDs 2400-2402) - VMID 2400 → 192.168.11.240 - VMID 2401 → 192.168.11.241 - VMID 2402 → 192.168.11.242 ## Benefits 1. **Predictable**: VMID directly maps to IP address 2. **Scalable**: Easy to determine IP from VMID 3. **Organized**: Logical grouping by VMID ranges 4. **Maintainable**: Simple rules for allocation ## Network Constraints - **192.168.11.0/24** has 254 usable IPs (`.1` through `.254`) - **`.255`** is the broadcast address (cannot be used) - **`.254`** is the last usable host IP ## Future Considerations When migrating to VLAN-based networks: - Use separate subnets for different service types - Apply VMID-based mapping per subnet - Maintain clear documentation of allocations - Reserve IP ranges for infrastructure (gateway, switches, etc.)