# Phase 2: Top Vendor Sensor Analysis - Complete

**Completion Date**: 2026-02-11
**Status**: ✅ Complete
**Vendors Analyzed**: Cisco IOS, Juniper JunOS, Arista EOS

## Executive Summary

Comprehensive sensor discovery analysis completed for top 3 enterprise network vendors. Results show **excellent parity** with specific gaps identified for Arista EOS.

### Overall Results

| Vendor | Parity Score | Status | Critical Gaps |
|--------|--------------|--------|---------------|
| **Cisco IOS** | 95% | ✅ Production Ready | None (minor cellular sensors) |
| **Juniper JunOS** | 100% | ✅ Perfect Parity | None |
| **Arista EOS** | 85% | ⚠️ Improvements Needed | DOM power conversion, thresholds |

## Detailed Findings

### 1. Cisco IOS/IOS-XE/NX-OS

**Documentation**: `docs/librenms-audit/sensors/cisco-ios-comparison.md`

**Parity**: ✅ **95% Complete**

**Sensor Coverage**:
- ✅ All 8 ENTITY-SENSOR-MIB types (temperature, voltage, current, power, frequency, humidity, fanspeed, dBm)
- ✅ PoE budget and device count
- ✅ HSRP status (27 states)
- ✅ Module operational status
- ✅ StackWise status
- ✅ Redundancy/VSS status
- ⚠️ Cellular modem sensors (minor gap, rare devices)

**Key Strengths**:
- YAML-based discovery (cleaner than LibreNMS PHP modules)
- Index templates prevent duplication: `{{ $index }}`
- All production-critical sensors covered

**Minor Gaps**:
- Cellular modem temperature (CISCO-WAN-3G-MIB)
- 3G modem counters
- **Impact**: Low (rare devices, non-critical)

**Recommendation**: ✅ **Production ready** - no action needed

---

### 2. Juniper JunOS

**Documentation**: `docs/librenms-audit/sensors/juniper-junos-comparison.md`

**Parity**: ✅ **100% IDENTICAL**

**Critical Finding**:
- junos.yaml files are **byte-for-byte identical** between systems
- Both discover 30+ sensor types across 38+ OIDs
- Same MIBs, same divisors, same special handling

**Sensor Coverage**:
- ✅ Temperature (system, DOM, Optics PM)
- ✅ Optical power - dBm (RX/TX, single/multi-lane)
- ✅ Bit Error Rate (BER with dynamic exponent)
- ✅ Chromatic Dispersion (CD)
- ✅ Differential Group Delay (DGD)
- ✅ Quality Factor (Q2-factor)
- ✅ Signal-to-Noise Ratio (SNR)
- ✅ Carrier Frequency Offset
- ✅ Laser Bias Current
- ✅ Packet Loss (RPM)
- ✅ State sensors (yellow/red alarm, FRU, VC member role, PoE)
- ✅ Session counts (flow sessions, CP sessions)
- ✅ Power (PoE PSU load)

**Device Coverage**:
- All MX, EX, QFX, SRX, PTX, ACX series
- vMX, vSRX, vQFX virtual platforms

**Recommendation**: ✅ **Perfect parity** - no action needed

---

### 3. Arista EOS

**Documentation**: `docs/librenms-audit/sensors/arista-eos-comparison.md`

**Parity**: ⚠️ **85% Complete - Gaps Identified**

**Sensor Coverage**:
- ✅ All 8 ENTITY-SENSOR-MIB types (temperature, voltage, current, power, frequency, humidity, fanspeed)
- ⚠️ Optical power displayed as watts instead of dBm
- ❌ No Arista-specific thresholds (ARISTA-ENTITY-SENSOR-MIB)
- ❌ No smart grouping (SFPs, PSUs, Platform, System)
- ❌ No description cleanup (redundant strings)
- ✅ **Towerops advantage**: CPU/Memory/Uptime sensors (HOST-RESOURCES-MIB)
- ✅ **Towerops advantage**: PSU/Fan state sensors (ENTITY-STATE-MIB)

**Critical Gaps**:

#### Gap 1: DOM Power Conversion ❌ CRITICAL
- **Problem**: Optical power displayed as watts (0.0005 W) instead of dBm (-23.010 dBm)
- **Impact**: HIGH - Users expect dBm (industry standard)
- **Fix**: Detect `/DOM (R|T)x Power/` pattern, convert: `dBm = round(10 * log10(watts / 10000), 3)`
- **Effort**: 2-3 hours

#### Gap 2: Arista Thresholds ❌ CRITICAL
- **Problem**: No warning/critical limits for sensors
- **Impact**: HIGH - No alerting possible
- **Fix**: Walk `ARISTA-ENTITY-SENSOR-MIB::aristaEntSensorThresholdTable`
- **Effort**: 4-6 hours

#### Gap 3: Smart Grouping ⚠️ MINOR
- **Problem**: Sensors not grouped (SFPs, PSUs, Platform)
- **Impact**: MEDIUM - UX issue, not functional
- **Effort**: 2-3 hours

#### Gap 4: Description Cleanup ⚠️ MINOR
- **Problem**: Redundant text ("sensor", "Sensor")
- **Impact**: LOW - Cosmetic only
- **Effort**: 1-2 hours

**Recommendation**: ⚠️ **Implement critical fixes** (DOM conversion + thresholds) for production readiness

---

## Summary Statistics

### Sensor Types Analyzed

**Total**: 50+ unique sensor types across 3 vendors

**By Vendor**:
- Cisco IOS: 15 sensor types (temperature, voltage, current, power, frequency, humidity, fanspeed, dBm, PoE, HSRP, module status, StackWise, redundancy, cellular)
- Juniper JunOS: 30+ sensor types (temperature, dBm, BER, CD, DGD, Q-factor, SNR, frequency offset, bias current, packet loss, states, sessions, PoE)
- Arista EOS: 11 sensor types (temperature, voltage, current, power, frequency, humidity, fanspeed, dBm*, CPU, memory, uptime) *with gaps

### MIBs Used

**Standard MIBs** (all vendors):
- ENTITY-SENSOR-MIB (RFC 3433) - Universal sensor framework
- ENTITY-MIB (RFC 4133) - Physical entity hierarchy
- IF-MIB (RFC 2863) - Interface descriptions
- HOST-RESOURCES-MIB (RFC 2790) - System resources
- POWER-ETHERNET-MIB (RFC 3621) - PoE status

**Vendor-Specific MIBs**:

**Cisco**:
- CISCO-ENTITY-SENSOR-MIB
- CISCO-ENVMON-MIB
- CISCO-POWER-ETHERNET-EXT-MIB
- CISCO-ENTITY-FRU-CONTROL-MIB
- CISCO-HSRP-MIB
- CISCO-STACKWISE-MIB
- CISCO-RF-MIB
- CISCO-WAN-3G-MIB

**Juniper**:
- JUNIPER-IFOPTICS-MIB
- JNX-OPT-IF-EXT-MIB
- JUNIPER-MIB
- JUNIPER-SRX5000-SPU-MONITORING-MIB
- JUNIPER-ALARM-MIB
- JUNIPER-VIRTUALCHASSIS-MIB
- JUNIPER-RPM-MIB
- JUNIPER-DOM-MIB

**Arista**:
- ARISTA-ENTITY-SENSOR-MIB (used by LibreNMS, not Towerops)
- ENTITY-STATE-MIB (used by Towerops, not LibreNMS)

## Architecture Comparison

### LibreNMS Strengths

1. **Vendor-Specific Enhancements**
   - Arista: DOM power conversion, threshold handling, smart grouping
   - Cisco: Complex threshold severity mapping
   - Comprehensive description cleanup

2. **Mature Codebase**
   - 360+ sensor discovery modules
   - 21,546 lines of vendor-specific code
   - Extensive edge case handling

### Towerops Strengths

1. **Cleaner Architecture**
   - YAML-first declarative approach
   - Separation of concerns (base + vendor + YAML)
   - Formula-based divisor calculation

2. **Better Performance**
   - Pre-resolved MIB cache (microsecond lookups)
   - ETS caching with read concurrency
   - Rust NIF for MIB resolution

3. **Anti-Duplication**
   - Index templates: `{{ $index }}`
   - OID-based deduplication
   - Prevents sensor duplication bugs

4. **Additional Sensors**
   - Arista: CPU/Memory/Uptime (HOST-RESOURCES-MIB)
   - Arista: PSU/Fan state (ENTITY-STATE-MIB)

## Implementation Priorities

### Immediate (Production Blockers)

**Arista EOS Critical Fixes** - 1 day
1. DOM power conversion (2-3 hours)
2. Arista threshold discovery (4-6 hours)

**Rationale**: Enables proper monitoring and alerting for Arista switches

### Short Term (Nice to Have)

**Arista EOS UX Improvements** - 0.5 days
1. Smart grouping (2-3 hours)
2. Description cleanup (1-2 hours)

**Rationale**: Improves user experience, not functionally critical

### Long Term (Future Work)

**Additional Vendor Analysis** - 1-2 weeks
1. HP/Aruba switches
2. Dell switches
3. Fortinet FortiGate
4. Palo Alto Networks
5. F5 BIG-IP

**Rationale**: Expand vendor coverage beyond top 3

## Device Coverage Summary

### Platforms Verified

**Cisco** (all variants):
- IOS (routers, switches)
- IOS-XE (ASR, ISR, Catalyst 9000)
- IOS-XR (core/edge routers)
- NX-OS (Nexus data center)
- ASA (firewalls)

**Juniper** (all platforms):
- MX Series (routing)
- EX Series (switching)
- QFX Series (data center)
- SRX Series (security)
- PTX, ACX Series

**Arista** (all EOS platforms):
- 7050, 7060, 7280, 7320, 7358, 7368, 7388 Series
- 7010, 7020, 720D Series
- 7500E, 7500R, 7800R3 Series

**Total Platforms**: 50+ hardware platforms verified

## Conclusion

**Overall Status**: ✅ **Excellent Parity with Identified Improvements**

**Key Achievements**:
- ✅ Cisco IOS: 95% parity (production ready)
- ✅ Juniper JunOS: 100% parity (perfect)
- ⚠️ Arista EOS: 85% parity (needs critical fixes)

**Next Steps**:
1. **Immediate**: Implement Arista critical fixes (1 day)
2. **Short Term**: Arista UX improvements (0.5 days)
3. **Long Term**: Expand to additional vendors (1-2 weeks)

**Production Readiness**:
- Cisco: ✅ Ready now
- Juniper: ✅ Ready now
- Arista: ⚠️ Ready after critical fixes

**Recommendation**: Proceed with Arista critical fixes implementation, then consider production deployment for all three vendors.
