Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Architecture Decision Records

Records of significant architectural decisions made during rustbgpd development. Each record captures the context, decision, and consequences so future contributors understand why, not just what.

Index

ADR Title Status Date
0001 Typed + raw hybrid model for path attributes Accepted 2026-02-27
0002 Inherent methods, not traits, for codec API Accepted 2026-02-27
0003 NOTIFICATION subcodes as constants, not enums Accepted 2026-02-27
0004 Proptest for property-based testing Accepted 2026-02-27
0005 Pure state machine FSM with no Result return Accepted 2026-02-27
0006 validate_open returns Result<NegotiatedSession, NotificationMessage> Accepted 2026-02-27
0007 Explicit Prometheus registry, not global default Accepted 2026-02-27
0008 Single tokio task per peer for M0 Accepted 2026-02-27
0009 Iterative action loop to avoid async recursion Accepted 2026-02-27
0010 Minimal TCP metrics server, no HTTP framework Accepted 2026-02-27
0011 Unknown variant for NOTIFICATION error codes Accepted 2026-02-27
0012 Separate structural decode from semantic validation for UPDATEs Accepted 2026-02-27
0013 Single-task RIB manager with channel-based ownership Accepted 2026-02-27
0014 Best-path comparison as standalone function with deterministic MED Accepted 2026-02-27
0015 Adj-RIB-Out inside RibManager with per-peer outbound channels Accepted 2026-02-27
0016 socket2 for TCP MD5 and GTSM socket options Accepted 2026-02-27
0017 PeerManager — channel-based single-task ownership Accepted 2026-02-27
0018 Broadcast channel for WatchRoutes streaming Accepted 2026-02-27
0019 Inbound TCP listener for passive peering Accepted 2026-02-27
0020 GlobalService, ControlService, and coordinated shutdown Accepted 2026-02-27
0021 TCP collision detection via PeerManager coordination Accepted 2026-02-28
0022 gRPC server supervision — unexpected exit triggers shutdown Accepted 2026-02-28
0023 Prefix enum and AFI-agnostic RIB for MP-BGP Accepted 2026-02-28
0024 Graceful Restart — Receiving Speaker (RFC 4724) Accepted 2026-03-01
0025 Extended Communities (RFC 4360) Accepted 2026-03-01
0026 Extended Community Policy Matching Accepted 2026-03-01
0027 Route Refresh (RFC 2918) Accepted 2026-03-02
0028 Standard Community Policy Matching (RFC 1997) Accepted 2026-03-02
0029 Route Reflector (RFC 4456) Accepted 2026-03-02
0030 Policy Actions and AS_PATH Regex Accepted 2026-03-02
0031 Large Communities (RFC 8092) Accepted 2026-03-02
0032 Extended Messages (RFC 8654) Accepted 2026-03-02
0033 Add-Path (RFC 7911) Accepted 2026-03-02
0034 RPKI Origin Validation (RFC 6811 + RFC 8210) Accepted 2026-03-03
0035 FlowSpec (RFC 8955 / RFC 8956) Accepted 2026-03-03
0036 Policy Chaining + Named Policies Accepted 2026-03-04
0037 Extended Next Hop Encoding (RFC 8950) Accepted 2026-03-04
0038 Enhanced Route Refresh (RFC 7313) Accepted 2026-03-04
0039 Transparent Route Server Mode Accepted 2026-03-04
0040 Graceful Restart — Minimal Restarting Speaker Mode Accepted 2026-03-04
0041 BMP Exporter (RFC 7854) Accepted 2026-03-04
0042 Long-Lived Graceful Restart (RFC 9494) Accepted 2026-03-05
0043 Config Persistence and SIGHUP Reload Accepted 2026-03-05
0044 MRT Dump Export (RFC 6396) Accepted 2026-03-05
0045 Private AS Removal Accepted 2026-03-05
0046 Notification GR (RFC 8538) Accepted 2026-03-05
0047 gRPC Security Hardening Accepted 2026-03-06
0048 RIB Memory Optimizations Accepted 2026-03-08

Template

New ADRs should follow this format:

# ADR-NNNN: Title

**Status:** Proposed | Accepted | Deprecated | Superseded by ADR-XXXX
**Date:** YYYY-MM-DD

## Context

What is the issue or question being addressed?

## Decision

What was decided?

## Consequences

What are the results — positive, negative, and neutral?