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
0049 ASPA Upstream Path Verification Accepted 2026-03-13
0050 EVPN Route Reflector (RFC 7432 Phase 1) Accepted 2026-04-23
0051 Per-peer outbound writer task Accepted 2026-04-27
0052 EVPN VTEP Foundation — Local EVI/VNI Domain Model Accepted 2026-05-01
0053 RFC 8326 BGP Graceful Shutdown Accepted 2026-05-04
0054 EVPN Linux Dataplane Boundary Accepted 2026-05-04
0055 EVPN Local-MAC Origination Boundary Accepted 2026-05-06
0056 EVPN sticky-MAC operator config Accepted 2026-05-08
0057 EVPN Gate 8 — observable DF election without forwarding enforcement Accepted 2026-05-09
0058 EVPN Gate 9 — symmetric IRB, L3VNI, Type 5 dataplane Accepted 2026-05-10
0059 EVPN aliasing dataplane via FDB nexthop groups Accepted 2026-05-12
0060 RFC 7999 BLACKHOLE receiver scoping and opt-in FIB discard Accepted 2026-05-13
0061 Opt-in unicast Linux FIB integration Accepted 2026-05-14
0062 TCP-AO foundation Accepted 2026-05-16
0063 EVPN runtime instance mutation semantics Accepted 2026-05-17
0064 gRPC per-method authorization Accepted 2026-05-18
0064-annex gRPC management-plane threat model (ADR-0064 annex) Current 2026-07-26
0065 EVPN VXLAN local-bias split-horizon (spike-gated) Accepted 2026-05-22
0066 Unicast multipath / ECMP FIB install Accepted 2026-05-24
0067 Single-hop asynchronous BFD for BGP Accepted 2026-05-24
0068 Weighted (unequal-cost) multipath via Link Bandwidth Accepted 2026-05-24
0069 BGP unnumbered and IPv6 link-local peering Accepted 2026-05-25
0070 gNMI / OpenConfig telemetry and Set adapter Accepted 2026-05-25
0071 BGP Roles and Only-to-Customer (RFC 9234) Accepted 2026-05-26
0072 Durable event history (local outbox) Accepted 2026-05-26
0073 Import policy explain via per-session decision cache Accepted 2026-05-28
0074 Runtime FIB-table CRUD authorization tier Accepted 2026-06-01
0075 Receive-side Address-Prefix Outbound Route Filtering (ORF) Accepted 2026-06-03
0076 Config transaction model foundation Accepted 2026-06-03
0077 MPLS, VPN, and BGP-LS address-family boundary Accepted 2026-06-08
0078 Inbound transport→RIB backpressure — block, never drop Accepted 2026-06-10
0079 Kernel-state crash-restart reconciliation via adoption sweeps Accepted 2026-06-10
0080 Cancellation-shielded runtime mutation applies Accepted 2026-06-10
0081 Atomic peer-group session reshapes on the targeted RPC path Accepted 2026-06-10
0082 NDA_PROTOCOL ownership stamping for EVPN FDB/neighbor state Accepted 2026-06-10
0083 EVPN single-active backup-path pre-install Accepted 2026-06-11
0084 Runtime Ethernet Segment drain Accepted 2026-06-12
0085 Ethernet Segment interface binding — link-driven drain and same-ESI local bias Accepted 2026-06-12
0086 Peer-group field edits reach live dynamic sessions via post-persist graceful reset Accepted 2026-06-12
0087 Native GW-IP overlay-index Type 5 origination (RFC 9136) Accepted 2026-06-12
0088 EVPN VLAN-aware bridge and managed netdev boundary Accepted 2026-06-15
0089 EVPN VNI-per-BD VLAN-aware bridge support Accepted 2026-06-15
0090 All-active ESI overlay-index Type 5 receive Accepted 2026-06-17
0091 rustbgpd-managed netdev creation Accepted 2026-06-19
0092 EVPN VLAN-Aware Bundle service (non-zero Ethernet Tag) Accepted 2026-06-19
0093 VLAN MAC+IP attribution via FDB correlation on raw bridge ifindexes Proposed 2026-06-19
0094 EVPN VXLAN all-active BUM filtering via kernel l2_miss (revisits ADR-0065) Accepted (negative result) 2026-06-29
0095 Optimal Route Reflection via BGP-LS-sourced SPF (RFC 9107) Accepted 2026-07-02
0096 A typed, compiled policy language (.rpol) Accepted 2026-07-02
0097 BMP monitoring — the trio, BMPv4 framing, and path marking Accepted 2026-07-03
0098 RIB-level update groups — shared outbound staging Accepted 2026-07-03
0099 Update groups v2 — per-family keying and RT-aware VPN emit Accepted 2026-07-03
0100 Parallelizing the RibManager (research blueprint) Proposed 2026-07-03
0101 IXP route-server profile — per-client best-path (RFC 7947 §2.3.2) Accepted 2026-07-03
0102 EVPN origination acknowledgement-awareness (Type 1/2/4) Accepted 2026-07-09
0103 rpol execution model, purity contract, and evaluation budgets Accepted 2026-07-09
0104 Shutdown warm-checkpoint publication without boot restore Accepted 2026-07-13
0105 Grouped export-policy transition transaction Accepted 2026-07-14
0106 Warm checkpoint restore under planned-restart GR Proposed 2026-07-14
0107 Route-server NEXT_HOP ownership Accepted 2026-07-15
0108 Independent per-family maximum-prefix limits Accepted 2026-07-16
0109 Encode-once wire sharing for update-group fanout Accepted 2026-07-16
0110 IRR/PeeringDB-driven filtering pipeline — ride arouteserver, defer native ingestion Proposed 2026-07-17
0111 Actor-owned authoritative export-policy replacement continuation Rejected (borrow-free Gate 1 NO-GO) 2026-07-20
0112 Opt-in RFC 8212 explicit-policy enforcement for eBGP Accepted — fully shipped 2026-07-21
0113 Per-peer outbound unicast prefix limits Accepted — released in v0.61.0 2026-07-21
0114 RFC 6793 AS4 path migration across legacy peers Accepted 2026-07-21
0115 Lean daemon build flavors Accepted (no additional flavor) 2026-07-22
0116 RFC 9857 SR Policy state in BGP-LS Accepted (feature implementation demand-gated) 2026-07-22
0117 Authenticated single-hop BFD Accepted (implementation NO-GO; evidence-gated) 2026-07-22

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?