83ae367b1cfe88b0575aa0d3ef9c3a98ea621eec
docs/lab/handout/handout.tex, typeset with Springer's LNCS class (title block, abstract and keywords, figure, booktabs tables, RFC references), six A4 pages so it prints double-sided on three sheets. The built PDF is committed alongside for printing. Three sections students work through with the slides: 1. Who holds which addresses: whois their own /48 and ethz.ch's prefix in the RIPE database, then compare with what is actually routed. 2. Announcing the prefix on the lab page, reading the UPDATE bytes, finding it from outside, and reaching it. 3. Steering with communities until the prefix is reachable only from the university network (AS559 via the SwissIX route servers), with reachability checkboxes for laptop and phone at each step. Plus a one-page reference appendix: IPv6 notation and hex, the UPDATE layout, path attributes, glossary. The lab host, the lab address space and the prefix pattern are macros at the top of the file. Expected answers were checked against the RIPE database and RIPEstat (ETH: 2001:67c:10ec::/48, ASSIGNED PI, origin AS559; lab: 2a0d:d741::/40, AGGREGATED-BY-LIR, route6 origin AS210036). 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%