a137160b48fc4b77baae60b4118f123446bff5c3
Phase 5 of the teaching demo plus two fixes found while exercising the dialer on the status page. - Adj-RIB-In: routes learned from a peer are removed when its session ends (RFC 4271 §8.2.2), emitting a Withdrawn event per prefix before the session Down event. Previously stale routes from dead sessions stayed in the received table. - statusz: poll the peers table every 5 s so dial state (Connecting / Backoff and its retry countdown) stays current; those changes carry no event. - docs/lab: docker-compose topology with ferrix (AS65000) and two FRR routers. r2 accepts nothing directly from ferrix so student prefixes only reach it via r1, then come back with AS path 65002 65001 65000. r1 applies community-driven policy: NO_EXPORT stops forwarding, 65001:100 prepends, BLACKHOLE drops. Dockerfile for the daemon. - docs/lab/HANDOUT.md: student exercises walking through announcement, reading the bytes, prepending, NO_EXPORT, action communities, blackholing and withdrawal. The container files have not been executed (no runtime available here); docs/lab/README.md lists what is most likely to need adjusting. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
BGP
The bgp crate is an implementation of the Border Gateway Protocol, which is used to exchange routing and control plane information between Autonomous Systms.
The aim of this project is to provide a modern, high performance, secure and programatic and customizable software package that can be useful to network operators, researchers, and people interested in Internet.
Current status.
The project is currently being rewritten from scratch to be more modular and maintainable, as well as to fix deeper issues with the previous implementation.
⚠️ Warning: This is currently a work in progress and not ready for use.
🛣️ Roadmap to v1.0
We aim for the 1.0 release to be functional and stable to operate peering sessions, and to install routes in the Linux Kernel.
- ☐ Implement basic parsers for the fundamental types required
- ✅ Path Attributes from RFC4271
- ✅ Open message
- ✅ Capabilities from RFC4271
- ✅ Update message
- ☐ Notification message
- ✅ Implement scaffolding required to start and configure a server
- ✅ Implement connection logic to establish sessions with peers (passive and active)
- ✅ Locally originated routes with communities, announced to all peers
- ✅ HTTP API, live status page and Prometheus metrics
- ☐ Implement an efficient data structure for storing prefixes (e.g. Poptrie)
- ☐ Filtering for peer RIB in / out
- ☐ Main / auxillary RIBs for exchanging routes between peers
Languages
Rust
92.3%
Shell
4.2%
HTML
3.5%