1
0
Fork 1
mirror of https://github.com/thatmattlove/hyperglass.git synced 2026-04-28 10:46:20 +00:00
Commit graph

28 commits

Author SHA1 Message Date
Wilhelm Schonfeldt
9db9849a59
feat(structured): release structured feature set (squash merge)
Summary:
- Add structured traceroute support with comprehensive IP enrichment (ASN/org/RDNS).
- Improve MikroTik traceroute cleaning and aggregation; collapse repeated tables into a single representative table.
- Enhance traceroute logging for visibility and add traceroute-specific cleaning helpers.
- Add/adjust IP enrichment plugins and BGP/traceroute enrichment integrations.
- UI updates for traceroute output and path visualization; update docs and configuration for structured output.

This commit squashes changes from 'structured-dev' into a single release commit.
2025-09-30 16:46:01 +02:00
Wilhelm Schonfeldt
0398966062
feat: Add structured traceroute support with comprehensive IP enrichment
MAJOR NEW ARCHITECTURE - STRUCTURED TRACEROUTE:
- Complete rewrite of traceroute data processing with structured output
- Dedicated TracerouteResult and TracerouteHop data models
- Platform-specific parsers with unified output format
- Rich metadata including ASN, organization, country, and prefix information
- AS path visualization with organization names in React Flow charts

SUPPORTED PLATFORMS:
- TraceroutePluginMikrotik: Handles MikroTik's complex multi-table format
  * Progressive statistics parsing with deduplication
  * Timeout hop handling and continuation line processing
  * Loss percentage and RTT statistics extraction
- TraceroutePluginHuawei: Unix-style traceroute format parser
  * Standard hop_number ip_address rtt format support
  * Timeout hop detection with * notation
  * Automatic cleanup of excessive trailing timeouts

COMPREHENSIVE IP ENRICHMENT SYSTEM:
- Offline enrichment using BGP.tools bulk data (1.3M+ CIDR entries)
- PeeringDB integration for IXP detection and ASN organization data
- Ultra-fast pickle cache system with combined data files
- Integer-based bitwise IP matching for maximum performance
- Bulk ASN organization lookup capabilities
- Private/reserved IP handling with AS0 fallbacks
- Country code mapping from ASN database
- Graceful fallbacks for missing enrichment data

FRONTEND ENHANCEMENTS:
- New traceroute table components with consistent formatting
- Enhanced AS path visualization with organization names
- Improved copy-to-clipboard functionality with structured data
- Unified table styling across BGP and traceroute results
- Better error handling and loading states

CONCURRENT PROCESSING INFRASTRUCTURE:
- Thread executor implementation for blocking I/O operations
- Query deduplication system to prevent resource conflicts
- Non-blocking Redis cache operations using asyncio executors
- Event coordination for waiting requests
- Background cleanup for completed operations
- Prevents website hangs during long-running queries

PLUGIN ARCHITECTURE IMPROVEMENTS:
- Platform-aware plugin system with proper execution restrictions
- Enhanced MikroTik garbage output cleaning
- IP enrichment plugins for both BGP routes and traceroute
- Conditional plugin execution based on platform detection
- Proper async/sync plugin method handling

CRITICAL BUG FIXES:
- Fixed double AS prefix bug (ASAS123456 → AS123456)
- Resolved TracerouteHop avg_rtt field/property conflicts
- Corrected Huawei traceroute source field validation
- Fixed plugin platform restriction enforcement
- Eliminated blocking I/O causing UI freezes
- Proper timeout and empty response caching prevention
- Enhanced private IP range detection and handling

PERFORMANCE OPTIMIZATIONS:
- Pickle cache system reduces startup time from seconds to milliseconds
- Bulk processing for ASN organization lookups
- Simplified IXP detection using single PeeringDB API call
- Efficient CIDR network sorting and integer-based lookups
- Reduced external API calls by 90%+
- Optimized memory usage for large datasets

API & ROUTING ENHANCEMENTS:
- Enhanced API routes with proper error handling
- Improved middleware for concurrent request processing
- Better state management and event handling
- Enhanced task processing with thread pool execution

This represents a complete transformation of hyperglass traceroute capabilities,
moving from basic text output to rich, structured data with comprehensive
network intelligence and concurrent processing support.
2025-09-28 13:48:04 +02:00
Wilhelm Schonfeldt
4414d2ec03 fix(ui): improve BGP table field display formatting
- Fix MED field showing N/A when value is 0 (now correctly shows 0)
- Hide Originator field when empty instead of showing N/A
- Hide Age field when not available instead of showing N/A
- Add HideableField component for fields that should be hidden when empty
- Update string output formatting to skip hidden fields in text export

Resolves display issues where valid zero values and unavailable fields
were showing as N/A instead of proper formatting or being hidden.
2025-09-26 13:30:44 +02:00
Wilhelm Schonfeldt
7a6388bd39 fix: Improve handling of missing data fields in MikroTik BGP parser
- Update MikroTik parser to return -1 for unavailable age data instead of "0"
- Change age property return type from string to int for consistency
- Enhance frontend Age component to display "N/A" when age is -1
- Improve MonoField component to handle empty/undefined values gracefully
- Add appropriate tooltips and styling for missing data indicators

This addresses the issue where MikroTik devices don't provide route age
and source RID information, ensuring the UI displays user-friendly
indicators instead of potentially misleading placeholder values.
2025-09-26 11:55:51 +02:00
Wilhelm Schonfeldt
eabd98b606 feat: Add BGP community friendly names and enhance RPKI configuration
- Add new 'name' mode for BGP communities to append friendly names
  - New configuration option `structured.communities.mode: name`
  - Community mappings via `structured.communities.names` dictionary
  - Communities display as "65000:1000 - Upstream Any" in UI
  - Backward compatible with existing permit/deny modes

- Enhance RPKI configuration documentation
  - Document both Cloudflare and Routinator backend options
  - Add `structured.rpki.backend` and `structured.rpki.rpki_server_url` parameters
  - Clarify Routinator web API endpoint usage vs RTR port
  - Add comprehensive configuration examples

- Update structured output platform support
  - Document all supported platforms: Arista EOS, FRRouting, Huawei VRP, Juniper Junos, Mikrotik RouterOS/SwitchOS

- Frontend enhancements
  - Parse comma-separated community format in UI components
  - Display friendly names alongside community codes
  - Maintain existing functionality for communities without names

- Add validation and examples
  - Validate that 'name' mode has community mappings configured
  - Include example configuration and test cases
  - Generic examples using ASN 65000 instead of specific networks
2025-09-26 11:32:29 +02:00
thatmattlove
cfd8f0d670 add tooltip for bgp table when AS path lenght is 0 2024-02-28 22:56:34 -05:00
thatmattlove
f0028a3df6 fix text output empty bug 2024-02-28 22:46:49 -05:00
thatmattlove
cd6bf7a162 tooling overhaul 2024-02-27 17:44:19 -05:00
thatmattlove
446853e4a9 countless updates I mostly don't remember. 2023-04-13 23:05:05 -04:00
thatmattlove
2dd03ad81d refactor and restructure ui theme hooks 2021-12-19 23:30:09 -07:00
thatmattlove
227da64c9a refactor and restructure ui components 2021-12-19 22:57:00 -07:00
thatmattlove
93adc09e63 refactor, restructure typescript types 2021-12-18 23:45:06 -07:00
thatmattlove
196fb43ea7 implement react-if 2021-12-17 21:44:35 -07:00
thatmattlove
c8663d7029 improve component types 2021-12-17 21:08:45 -07:00
thatmattlove
15c29a09d7 fix icon name 2021-12-17 20:38:39 -07:00
thatmattlove
bd0eb65ffc Closes #173: Implement customizable highlighting of text output 2021-12-14 01:31:45 -07:00
thatmattlove
196b3e0400 implement dynamic icon component & migrate back to react-icons 2021-12-06 14:33:20 -07:00
thatmattlove
76bf5eb380 Implement UI configuration response model 2021-09-10 23:13:27 -07:00
checktheroads
fa19683cb2 update UI dependencies 2021-04-22 21:45:01 -07:00
checktheroads
c6b2d02628 fix warning color on active route in table output 2021-02-12 23:17:28 -07:00
checktheroads
3886925501 add no_communities text field 2021-02-12 23:08:23 -07:00
checktheroads
6ffbf95abd add typings for eslint 2021-01-03 23:51:09 -07:00
checktheroads
515651c0fc fix table layout issues 2021-01-02 16:52:50 -07:00
checktheroads
1fb1dfe182 continue typescript & chakra v1 migrations [skip ci] 2020-12-17 16:37:36 -07:00
checktheroads
0c4d94a3e7 continue typescript & chakra v1 migrations [skip ci] 2020-12-15 01:18:04 -07:00
checktheroads
81c7ce878a continue typescript & chakra v1 migrations [skip ci] 2020-12-14 01:04:15 -07:00
checktheroads
8c454cf0ae continue typescript & chakra v1 migrations [skip ci] 2020-12-13 01:49:13 -07:00
checktheroads
a2a7f3407b continue typescript & chakra v1 migrations [skip ci] 2020-11-29 18:26:42 -07:00