feat: transport protocol tracking with dashboard visualization #90

Merged
razvandimescu merged 1 commits from feat/wire-forwarding-hedging into main 2026-04-13 04:38:57 +08:00
razvandimescu commented 2026-04-13 03:15:12 +08:00 (Migrated from github.com)

Summary

  • Add Transport enum (UDP/TCP/DoT/DoH) threaded through the resolve pipeline — each listener tags its queries at the call site
  • Record transport in ServerStats (4 counters) and QueryLogEntry, expose via /stats and /query-log API
  • Dashboard: bar chart panel with encryption % badge, transport column + filter in query log, enc % in QPS sub-line
  • Extract generic renderBarChart() and encryptionPct() helpers to deduplicate dashboard rendering

Test plan

  • 271 unit tests pass (cargo test)
  • cargo clippy, cargo fmt --check, cargo audit clean
  • Run Numa locally, verify transport panel shows UDP bars for plain DNS queries
  • Connect via DoT (iPhone mobileconfig), verify DoT queries appear in transport breakdown and query log
  • Verify encryption % badge reflects DoT/DoH ratio, colors correctly at thresholds
  • Test transport filter dropdown in query log isolates by protocol
## Summary - Add `Transport` enum (UDP/TCP/DoT/DoH) threaded through the resolve pipeline — each listener tags its queries at the call site - Record transport in `ServerStats` (4 counters) and `QueryLogEntry`, expose via `/stats` and `/query-log` API - Dashboard: bar chart panel with encryption % badge, transport column + filter in query log, `enc %` in QPS sub-line - Extract generic `renderBarChart()` and `encryptionPct()` helpers to deduplicate dashboard rendering ## Test plan - [x] 271 unit tests pass (`cargo test`) - [x] `cargo clippy`, `cargo fmt --check`, `cargo audit` clean - [ ] Run Numa locally, verify transport panel shows UDP bars for plain DNS queries - [ ] Connect via DoT (iPhone mobileconfig), verify DoT queries appear in transport breakdown and query log - [ ] Verify encryption % badge reflects DoT/DoH ratio, colors correctly at thresholds - [ ] Test transport filter dropdown in query log isolates by protocol
Sign in to join this conversation.