Rene Fichtmueller 344ee15338 feat(bio-rd): add local RIB integration via bio-rd gRPC client
Adds real-time local BGP RIB data as a complement to external APIs
(RIPE Stat, bgproutes.io) which have rate limits and 15min+ delays.

- bio-rd-client.js: gRPC client for bio-routing/bio-rd RIS service
  - LPM, Get, GetLonger, GetRouters, DumpRIB, ObserveRIB methods
  - IPv4/IPv6 encoding as uint64 pair (bio.net format)
  - Full BGP path decode: AS paths, communities, large communities
  - Graceful fallback if RIS unavailable (null/empty returns)
- protos/: bio-rd proto definitions (ris, bgp, session, route, net)
- server.js: three new endpoints + WebSocket stream
  - GET /api/rib/prefix — LPM + more-specifics via GetLonger
  - GET /api/rib/routers — list BMP-monitored routers
  - GET /api/rib/dump — full RIB dump with ASN filter + limit
  - WS /ws/rib — live ObserveRIB stream (add/withdraw events)
- package.json: @grpc/grpc-js + @grpc/proto-loader dependencies
2026-04-05 11:44:50 +02:00

36 lines
771 B
Protocol Buffer

syntax = "proto3";
package bio.bgp;
import "net/api/net.proto";
option go_package = "github.com/bio-routing/bio-rd/protocols/bgp/api";
message Session {
bio.net.IP local_address = 1;
bio.net.IP neighbor_address = 2;
uint32 local_asn = 3;
uint32 peer_asn = 4;
enum State {
Disabled = 0;
Idle = 1;
Connect = 2;
Active = 3;
OpenSent = 4;
OpenConfirmed = 5;
Established = 6;
}
State status = 5;
SessionStats stats = 6;
uint64 established_since = 7;
string description = 8;
}
message SessionStats {
uint64 messages_in = 1;
uint64 messages_out = 2;
uint64 flaps = 3;
uint64 routes_received = 4;
uint64 routes_imported = 5;
uint64 routes_exported = 6;
}