# Priority Vendors Analysis: MikroTik & Ubiquiti **Date**: 2026-02-12 **Purpose**: Comprehensive sensor coverage comparison between Towerops and LibreNMS for priority vendors --- ## Executive Summary | Vendor Platform | Towerops Parity | Critical Gaps | Priority | |---|---|---|---| | **MikroTik RouterOS** | 65-70% | Wireless sensors (0% coverage) | HIGH | | **Ubiquiti AirOS (airMAX)** | 95% | Per-chain RSSI | LOW | | **Ubiquiti UniFi** | 80% | Channel-to-frequency conversion | MEDIUM | | **Ubiquiti AirFiber AF-LTU** | 40% | TX/RX Modulation Rate (CRITICAL) | **CRITICAL** | | **Ubiquiti AirFiber AF60** | 35% | MCS Rate, RSSI, SNR | **CRITICAL** | | **Ubiquiti EdgeOS** | 80% | None (Towerops exceeds LibreNMS) | LOW | | **Ubiquiti EdgeOLT** | 95% | None (Towerops exceeds LibreNMS) | LOW | --- ## MikroTik RouterOS - Detailed Analysis ### Current Coverage: 65-70% Overall Parity #### ✅ **Excellent Coverage** (100% parity): - **Temperature**: Optical module temp, system gauge temp - **Voltage**: Optical supply, POE voltage (per port), gauge voltage, high-load voltage - **Current**: Optical Tx bias, POE current (per port), gauge current - **Power**: POE power (per port), gauge power - **dBm**: Optical Tx/Rx power - **Fanspeed**: System fans via gauge table - **Count**: DHCP leases, firewall connections (total/IPv4/IPv6) - **State**: Optical Rx loss/Tx fault, POE status, gauge status, 60GHz connection/mode All OIDs match LibreNMS exactly. All divisors correct. #### ❌ **Critical Gaps** (0% coverage): **Wireless Sensor Discovery** - Missing 11 sensor types: 1. **Clients (Station Count)** - `mtxrWlApTable` - CRITICAL for capacity planning 2. **CCQ (Channel Capacity Quality)** - `mtxrWlApTable`, `mtxrWlStatTable` - Link quality indicator 3. **Frequency** - `mtxrWlApTable`, `mtxrWlStatTable`, `mtxrWl60GTable` - Channel information 4. **Noise Floor** - `mtxrWlApTable` - RF environment quality 5. **Rate (Tx/Rx)** - `mtxrWlApTable`, `mtxrWlStatTable` - Throughput monitoring 6. **RSSI (Signal Strength)** - `mtxrWl60GTable` - Connection quality 7. **Quality** - `mtxrWl60GTable` - Signal quality metric 8. **Distance** - `mtxrWl60GStaTable` - Link distance measurement 9. **RSRQ (LTE)** - `mtxrLTEModemTable` - LTE signal quality 10. **RSRP (LTE)** - `mtxrLTEModemTable` - LTE reference signal power 11. **SINR (LTE)** - `mtxrLTEModemTable` - LTE signal-to-noise **Advanced Features Missing**: - Transceiver discovery (vendor, serial, wavelength metadata) - QoS monitoring (queue stats, traffic shaping) - VLAN discovery - OS polling (device-level metrics) #### Implementation Complexity: - **Wireless sensors**: HIGH - Requires new YAML tables + sensor mappings (similar to LibreNMS `discoverWirelessClients()`, `discoverWirelessCcq()`, etc.) - **Transceiver discovery**: MEDIUM - Metadata extraction from optical modules - **QoS/VLAN**: MEDIUM-HIGH - New MIB tables and discovery logic --- ## Ubiquiti Platforms - Detailed Analysis ### AirOS (airMAX) - 95% Parity ✅ **Excellent coverage** of all core wireless metrics: - Frequency, Capacity, CCQ, Client count, Distance, Noise floor - Tx Power, Signal quality, Tx/Rx rate, RSSI - Channel utilization (Tx/Rx), CPU load, Temperature - GPS fix status and coordinates **Minor gap**: Per-chain RSSI discovery (LibreNMS walks per chain, Towerops has combined) --- ### UniFi - 80% Parity ✅ **Good coverage** of access point metrics: - Clients (2.4GHz and 5GHz per SSID) - CCQ (per radio with 10x divisor) - Tx Power (per radio) - Channel utilization (total, self-rx, self-tx) **Missing**: - Channel-to-frequency conversion (static OID doesn't update with channel changes) - Other BSS utilization - Processor discovery --- ### AirFiber AF-LTU - 40% Parity ⚠️ **CRITICAL GAPS** **Current coverage**: - ✅ Radio role (AP/CPE), GPS status/fix/satellites - ✅ CPU usage **Missing CRITICAL sensors**: - ❌ **TX Modulation Rate** (state sensor with QAM mappings) - **MOST CRITICAL** - ❌ **RX Modulation Rate** (state sensor) - **MOST CRITICAL** - ❌ Frequency - ❌ Distance (with 1000x divisor for km) - ❌ TX/RX Capacity (with 1000x divisor for Mbps) - ❌ RX Power (per chain 0/1) - ❌ RX Ideal Power (per chain) - ❌ TX EIRP - ❌ Signal Level (per chain quality) **Production Impact**: Without modulation rate sensors, operators cannot diagnose link quality degradation. These state sensors show when links drop from high QAM to low QAM due to interference or alignment issues. --- ### AirFiber AF60 - 35% Parity ⚠️ **CRITICAL GAPS** **Current coverage**: - ✅ Radio role (AP/CPE), GPS status/fix/satellites - ✅ CPU usage **Missing CRITICAL sensors**: - ❌ **TX MCS Rate** (state sensor, 9 states from 1X to 9X) - **MOST CRITICAL** - ❌ **RX MCS Rate** (state sensor) - **MOST CRITICAL** - ❌ RSSI (Local/Remote per-chain) - ❌ SNR (Signal-to-Noise Ratio per-chain) - ❌ Frequency - ❌ Distance (with 1000x divisor) - ❌ TX/RX Capacity (with 1000x divisor) - ❌ Active Link Status (Main/Backup state) **Production Impact**: MCS rate is THE key indicator of link health on AF60. Without it, capacity numbers are meaningless because operators can't see WHY throughput changed. --- ### EdgeOS - 80% Parity ✅ **Towerops Advantage** **Towerops has BETTER coverage than LibreNMS**: - ✅ CPU load, PSU sensors (voltage, current, power) - ✅ Battery metrics (charge level, runtime remaining) - ✅ Temperature, fan speed - ✅ PSU operational/charging/status states LibreNMS only does basic Entity-MIB hardware inventory. --- ### EdgeOLT - 95% Parity ✅ **Towerops Advantage** **Towerops has comprehensive OLT coverage**: - ✅ SFP status, ONU online status, ONU count - ✅ Temperature, fan speed - ✅ ONU RX/TX power (dBm with 100x divisor) LibreNMS only discovers ports, not optical power metrics. --- ## Implementation Priority ### **TIER 1 - CRITICAL (Week 1)** 🔴 **Impact**: Production monitoring gaps for point-to-point wireless links 1. **AirFiber AF60 - TX/RX MCS Rate State Sensors** - File: `priv/profiles/os_discovery/airos-af60.yaml` - OIDs: - TX MCS: `.1.3.6.1.4.1.41112.1.11.1.5.1.1` - RX MCS: `.1.3.6.1.4.1.41112.1.11.1.5.2.1` - States: 9 levels (1X through 9X modulation) - Reference: `LibreNMS/OS/AirosAf60.php` 2. **AirFiber AF-LTU - TX/RX Modulation Rate State Sensors** - File: `priv/profiles/os_discovery/airos-af-ltu.yaml` - OIDs: - TX Modulation: `.1.3.6.1.4.1.41112.1.10.1.5.1.1` - RX Modulation: `.1.3.6.1.4.1.41112.1.10.1.5.2.1` - States: Multiple QAM levels - Reference: `LibreNMS/OS/AirosAfLtu.php` **Effort**: 2-4 hours (state sensors with YAML definitions) --- ### **TIER 2 - HIGH (Week 1-2)** 🟡 **Impact**: Enhanced AirFiber monitoring for capacity planning and troubleshooting 3. **AirFiber AF60 - RSSI Per-Chain** - Local RSSI chain 0/1: `.1.3.6.1.4.1.41112.1.11.1.5.17.1`, `.1.3.6.1.4.1.41112.1.11.1.5.18.1` - Remote RSSI chain 0/1: `.1.3.6.1.4.1.41112.1.11.1.5.19.1`, `.1.3.6.1.4.1.41112.1.11.1.5.20.1` 4. **AirFiber AF60 - SNR Per-Chain** - Local SNR chain 0/1: `.1.3.6.1.4.1.41112.1.11.1.5.21.1`, `.1.3.6.1.4.1.41112.1.11.1.5.22.1` - Remote SNR chain 0/1: `.1.3.6.1.4.1.41112.1.11.1.5.23.1`, `.1.3.6.1.4.1.41112.1.11.1.5.24.1` 5. **AirFiber AF60/AF-LTU - Core Wireless Metrics** - Frequency, Distance (1000x divisor), TX/RX Capacity (1000x divisor) 6. **AirFiber AF60 - Active Link Status** - State sensor for main/backup link selection **Effort**: 4-6 hours (YAML sensor definitions) --- ### **TIER 3 - MEDIUM (Week 2-3)** 🟢 **Impact**: Enhanced UniFi and AirFiber optical monitoring 7. **UniFi - Channel to Frequency Conversion** - Add channel polling OID - Implement frequency calculation algorithm (channel → MHz) - Reference: `LibreNMS/OS/Unifi.php` 8. **AirFiber AF-LTU - Optical Power Sensors** - RX Power per chain (actual and ideal) - TX EIRP, Signal level per chain **Effort**: 6-8 hours (vendor module enhancements + YAML) --- ### **TIER 4 - LARGE EFFORT (Week 3+)** 🔵 **Impact**: Complete MikroTik wireless monitoring 9. **MikroTik - Wireless Sensor Discovery** - Implement 11 wireless sensor types via vendor module - Tables: `mtxrWlApTable`, `mtxrWlStatTable`, `mtxrWl60GTable`, `mtxrLTEModemTable` - Pattern: Similar to LibreNMS `discoverWirelessClients()` methods - File: Create or enhance `lib/towerops/snmp/profiles/vendors/mikrotik.ex` **Effort**: 12-16 hours (vendor module with multiple discovery methods) --- ## Files to Modify ### Immediate (Tier 1): - `priv/profiles/os_discovery/airos-af60.yaml` - Add MCS rate state sensors - `priv/profiles/os_discovery/airos-af-ltu.yaml` - Add modulation rate state sensors ### Short-term (Tier 2-3): - `priv/profiles/os_discovery/airos-af60.yaml` - Add RSSI, SNR, frequency, distance, capacity - `priv/profiles/os_discovery/airos-af-ltu.yaml` - Add frequency, distance, capacity, optical power - `priv/profiles/os_discovery/unifi.yaml` - Add channel OID - `lib/towerops/snmp/profiles/vendors/unifi.ex` - Frequency calculation ### Medium-term (Tier 4): - `lib/towerops/snmp/profiles/vendors/mikrotik.ex` - Create or enhance with wireless discovery - `priv/profiles/os_discovery/routeros.yaml` - Add wireless sensor tables (if using YAML approach) --- ## Test Coverage Requirements ### Tier 1 (State Sensors): - Test all MCS/modulation states (1X through 9X for AF60) - Test QAM levels for AF-LTU - Verify state descriptions match LibreNMS mappings ### Tier 2 (Wireless Metrics): - Test per-chain RSSI/SNR with multi-chain devices - Test distance with various link distances - Verify divisors (1000x for distance/capacity) ### Tier 4 (MikroTik Wireless): - Test with multiple wireless interfaces (2.4GHz, 5GHz, 60GHz) - Test with LTE modems - Verify CCQ, client count, frequency across interface types --- ## Reference Files (LibreNMS) ### AirFiber: - `~/dev/librenms/LibreNMS/OS/AirosAf60.php` - MCS state mappings - `~/dev/librenms/LibreNMS/OS/AirosAfLtu.php` - Modulation state mappings - `~/dev/librenms/includes/discovery/sensors/airos-af*.inc.php` - Legacy PHP discovery ### MikroTik: - `~/dev/librenms/LibreNMS/OS/Routeros.php` - All 11 wireless discovery methods - `~/dev/librenms/includes/discovery/sensors/routeros.inc.php` - Legacy discovery ### UniFi: - `~/dev/librenms/LibreNMS/OS/Unifi.php` - Frequency calculation and CCQ polling --- ## Success Metrics After implementing all tiers: | Vendor Platform | Current Parity | Target Parity | Delta | |---|---|---|---| | MikroTik RouterOS | 65-70% | 90%+ | +25% | | Ubiquiti AirFiber AF-LTU | 40% | 90%+ | +50% | | Ubiquiti AirFiber AF60 | 35% | 90%+ | +55% | | Ubiquiti UniFi | 80% | 90%+ | +10% | **Overall Priority Vendor Parity**: 65% → 90%+ --- ## Conclusion The analysis reveals that Towerops has **excellent basic sensor coverage** but is **missing critical wireless link quality indicators** for point-to-point devices (AirFiber) and **complete wireless monitoring** for MikroTik. **Immediate action required**: Implement Tier 1 (AirFiber MCS/modulation rate state sensors) to enable production link health monitoring. **Strategic priority**: MikroTik wireless sensor discovery (Tier 4) is the largest gap but requires significant effort. Should be planned as a dedicated sprint after Tiers 1-3 are complete.