mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
fipstop: ratatui-based TUI for real-time monitoring of a running FIPS daemon. Tabs and navigation: - 8 navigable tabs: Node, Peers, Transports, Sessions, Tree, Filters, Performance, Routing - Tab/BackTab navigation with group separators in tab bar - Table views with selectable rows, detail drill-down panels, and scrollbars Node tab: - Runtime info: pid, exe path, uptime, control socket path, TUN adapter name - Identity: npub, node_addr, ipv6 address - State summary with peer/session/link/transport/connection counts - TUN IPv6 traffic and forwarded transit traffic counters Peers tab: - Table with Name, Address, Conn, Depth, SRTT, Loss, LQI, Pkts Tx/Rx - Detail panel: identity, connection info, transport cross-reference, tree/bloom state, link stats, MMP metrics with LQI Sessions tab: - Table with Name, Remote Addr, State, Role, SRTT, Loss, SQI, Path MTU, Last Activity - Detail panel: identity, session info, traffic stats, MMP metrics with SQI Transports tab: - Hierarchical tree view: expandable transport parents with nested links (▼/▶ indicators, ├─/└─ tree chars, Space/Arrow to expand/collapse) - Transport detail: type-specific stats (UDP/TCP/Ethernet) - Link detail: peer cross-reference with MMP metrics and LQI Performance tab: - Link-layer MMP: SRTT, loss, ETX, LQI, goodput per peer - Session-layer MMP: SRTT, loss, ETX, SQI, path MTU per session - Trend indicators (rising/falling/stable) with context-aware coloring Routing tab: - Routing state: cache sizes, pending lookups, recent requests - Coordinate cache: entries, fill ratio, TTL, expiry, avg age - Statistics: forwarding, discovery request/response, error signal counters Tree tab: - Spanning tree position with 16 announce stats (inbound/outbound/cumulative) Filters tab: - Bloom filter announce stats, per-peer fill ratio and estimated node count MMP metrics enhancements: - Add etx_trend DualEwma for smoothed ETX tracking - Add smoothed_loss() and smoothed_etx() accessors (long-term EWMA) - LQI (Link Quality Index) = smoothed_etx * (1 + srtt_ms / 100) - SQI (Session Quality Index) = same formula for session layer - All loss/ETX displays prefer smoothed values with raw fallback Control socket: - Add smoothed_loss, smoothed_etx, lqi/sqi to show_peers, show_sessions, and show_mmp JSON responses - Rename fips_address to ipv6_addr in show_status and show_peers - Add tun_name and control_socket to show_status - FHS-compliant 3-tier default path: $XDG_RUNTIME_DIR, /run/fips, /tmp Node extensions: - Add started_at/uptime() to Node - Add tun_name() accessor Docker sidecar updates: - TCP transport support via FIPS_PEER_TRANSPORT env var - Build scripts include fipstop binary
46 lines
1.1 KiB
YAML
46 lines
1.1 KiB
YAML
networks:
|
|
fips-net:
|
|
name: ${FIPS_NETWORK:-fips-sidecar-net}
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: ${FIPS_SUBNET:-172.20.1.0/24}
|
|
|
|
services:
|
|
fips:
|
|
build:
|
|
context: .
|
|
hostname: fips-sidecar
|
|
cap_add:
|
|
- NET_ADMIN
|
|
devices:
|
|
- /dev/net/tun:/dev/net/tun
|
|
sysctls:
|
|
- net.ipv6.conf.all.disable_ipv6=0
|
|
restart: "no"
|
|
environment:
|
|
- RUST_LOG=${RUST_LOG:-info}
|
|
- FIPS_NSEC=${FIPS_NSEC}
|
|
- FIPS_PEER_NPUB=${FIPS_PEER_NPUB:-}
|
|
- FIPS_PEER_ADDR=${FIPS_PEER_ADDR:-}
|
|
- FIPS_PEER_ALIAS=${FIPS_PEER_ALIAS:-peer}
|
|
- FIPS_UDP_BIND=${FIPS_UDP_BIND:-0.0.0.0:2121}
|
|
- FIPS_TUN_MTU=${FIPS_TUN_MTU:-1280}
|
|
- FIPS_PEER_TRANSPORT=${FIPS_PEER_TRANSPORT:-udp}
|
|
volumes:
|
|
- ./resolv.conf:/etc/resolv.conf:ro
|
|
networks:
|
|
fips-net:
|
|
ipv4_address: ${FIPS_IPV4:-172.20.1.20}
|
|
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.app
|
|
network_mode: "service:fips"
|
|
depends_on:
|
|
- fips
|
|
volumes:
|
|
- ./resolv.conf:/etc/resolv.conf:ro
|
|
command: ["sleep", "infinity"]
|