-
Notifications
You must be signed in to change notification settings - Fork 460
SYSTEM README
Project: ExaBGP Wiki Documentation
Location: /common/wiki/
Purpose: Comprehensive documentation for ExaBGP BGP implementation
This is the ExaBGP documentation project, creating comprehensive wiki documentation covering:
- Getting Started guides
- API documentation (Text and JSON)
- Configuration syntax and directives
- Address families (FlowSpec, EVPN, BGP-LS, L3VPN, etc.)
- Use cases (DDoS mitigation, anycast, high availability, load balancing)
- Operations guides (debugging, monitoring, performance)
- Integration guides (Docker, Kubernetes, commercial solutions)
Key Principle: ExaBGP does NOT manipulate RIB/FIB - this must be emphasized throughout documentation.
ONLY document factual information that can be verified:
-
ExaBGP source code -
/common/exabgp/and/main/src/exabgp/ -
RFC specifications - Cited in
RFC-SUPPORT.mdandRFC-Information.md - Official vendor documentation - Cisco, Juniper, Arista docs (with links)
- Verified external sources - APNIC articles, vendor blogs, academic papers
- Project maintainer input - Thomas Mangin's guidance
-
Configuration examples -
/main/etc/exabgp/(98 examples)
-
β DO: Document features that exist in the codebase
-
β DO: Cite RFC specifications with RFC numbers
-
β DO: Link to vendor documentation for vendor-specific behavior
-
β DO: Acknowledge when behavior varies by vendor/platform
-
β DO: Warn users to test on their specific equipment
-
β DO: Correct errors immediately when discovered (as we did with rate-limit)
-
β DON'T: Invent features that don't exist
-
β DON'T: Claim capabilities without verification
-
β DON'T: Document commercial products without clear labeling
-
β DON'T: Make absolute statements about vendor behavior without testing
-
β DON'T: Assume behavior - verify in code or documentation
- Check the source code first
- Search external documentation (vendor docs, RFCs, blog posts)
- Ask the project maintainer (Thomas)
- Mark as "needs verification" if documentation must be written before confirmation
- Use qualifying language: "may", "typically", "on some platforms", "according to RFC X"
When factual errors are discovered:
- Acknowledge the error immediately
- Verify the correct information from authoritative sources
- Update all affected documentation comprehensively
- Document the correction in git commit messages
- Update this system file with the corrected facts
- Rate-limit units: Corrected "per source" β NOT per-source; RFC 5575 bytes/sec, vendors differ
- ElastiFlow: Removed (commercial product, not freely available)
- Wanguard status: Corrected from "no longer uses ExaBGP" β has BGP Connector integration
- Akvorado categorization: Clarified as flow collector, NOT DDoS detection solution
Remember: User trust depends on accuracy. When in doubt, verify or acknowledge uncertainty.
Documentation Progress: β COMPLETE (95 wiki files, ~62,000 lines)
- Phase 0: Research (11 knowledge base files in
.claude/) - Phase 1: Setup & Infrastructure β
- Phase 2: Tier 1 Critical Documentation β
- Phase 3: Tier 2 Important Documentation β
- Phase 4: Tier 3 Enhancement Documentation β
- Phase 5: Reference & Polish β
Key Tracker: .claude/CLAUDE.md - comprehensive progress tracking
-
CLAUDE.md- Master progress tracker (session info, completed work, next actions) -
DOCUMENTATION-PLAN.md- Original master plan with all 75 planned files -
SYSTEM-README.md- This file (system reference for Claude Code sessions)
-
RFC-SUPPORT.md- RFC compliance reference (published to wiki) -
RFC-Information.md- Detailed RFC implementation list (published to wiki)
-
/common/wiki/- All documentation (where you are now) -
/common/exabgp/- ExaBGP source code to document -
/main/src/exabgp/- Main ExaBGP source -
/main/etc/exabgp/- 98 configuration examples
- Clear table of contents
- Practical examples from etc/exabgp/ configs
- Cross-references to related docs
- "See Also" section
- Code examples with explanations
- Common errors and solutions
-
Claude acknowledgment at bottom:
**π» Ghost written by Claude (Anthropic AI)**
- Beginner-friendly for Getting Started
- Technical but clear for API/Configuration
- Practical examples in every use case
- Cross-link extensively
- Internal links: NO
.mdextension - Example:
[FlowSpec](Address-Families-FlowSpec-FlowSpec-Overview)not[FlowSpec](Address-Families-FlowSpec-FlowSpec-Overview.md)
ONLY use emojis if the user explicitly requests it, OR for specific functional purposes:
-
β οΈ - Warnings about vendor differences, implementation issues, critical caveats - β - Confirmation of supported features, capabilities, correct approaches
- β - Things ExaBGP cannot do, incorrect approaches, unsupported features
- π΄ - Critical/urgent warnings (e.g., "CRITICAL: Factual Accuracy Requirement")
- β - Highlight significant facts (e.g., "ExaBGP was the FIRST open-source FlowSpec")
- π - References to other documentation sections
- π‘οΈ - Security-related content, DDoS mitigation sections
- π‘ - Important notes or tips
- π - Project milestones in CLAUDE.md (e.g., "PROJECT COMPLETE")
-
π» - Claude acknowledgment footer:
**π» Ghost written by Claude (Anthropic AI)** -
π€ - Git commit attribution:
π€ Generated with [Claude Code](...)
- β - Completed tasks/phases
- β³ - In progress tasks
- π - Statistics/metrics
- β Don't use emojis for decoration or emphasis in technical content
- β Don't add emojis to code examples or configuration snippets
- β Don't use emojis in section headers unless they serve a functional purpose
- β Don't use emotional/expressive emojis (π, π, π₯, etc.) unless user requests
Rationale: Emojis serve as visual markers for:
- Critical warnings that users must not miss
- Clear yes/no distinctions (supported vs unsupported features)
- Content categorization (security, references, notes)
- Status tracking in progress documents
Keep emoji usage minimal, functional, and consistent. Technical documentation should be clear without relying on emojis.
- Does NOT manipulate RIB/FIB - pure BGP protocol implementation
- External processes handle route installation via API
- 55+ RFCs implemented (protocol level)
- Proven at hyperscale (Facebook/Meta Katran)
- RFC 5575: Specifies bytes per second
- Juniper: Converts to bits/sec internally (Γ8 multiplication)
- Cisco: May interpret differently by platform
- Rate-limit is NOT per-source - applied to matching traffic per vendor implementation
- Always warn users to test on their specific equipment!
- Open-source: FastNetMon Community (native ExaBGP support)
- Commercial: FastNetMon Advanced, Wanguard (has ExaBGP integration via BGP Connector)
- Flow tools: Akvorado (flow collector, NOT DDoS detection), pmacct, nfdump/nfsen
- ElastiFlow: Removed (commercial product, not appropriate for OSS docs)
-
Wanguard: Has active ExaBGP integration via BGP Connector component
- Link to official docs: https://docs.andrisoft.com/wanguard/8.4/Configuration__Components__BGP_Connector.html
- Point users to Andrisoft documentation for setup
The .claude/ directory contains 11 research files (188KB, 6,229 lines):
-
README.md- Research index (existing file for documentation writers) -
use-cases-summary.md- 9 major use cases -
architecture-overview.md- Technical deep-dive -
resources/- API reference, FlowSpec patterns, HA architectures, user stories, etc.
Note: These are research documents for documentation writers, not end-user documentation.
- Thomas Mangin's presentations: https://thomas.mangin.com/data/pdf/
-
Configuration examples:
/main/etc/exabgp/(98 examples) - GitHub: https://github.com/Exa-Networks/exabgp
- Slack: ExaBGP community
- APNIC 2024 FlowSpec article: https://blog.apnic.net/2024/09/18/the-ultimate-weapon-against-ddos-bgp-flowspec/
- Main branch:
master - Commit format: Descriptive message with Claude Code attribution
- Always include:
π€ Generated with [Claude Code](https://claude.com/claude-code) - Co-author:
Co-Authored-By: Claude <[email protected]>
For continuing work in future sessions:
- Read
.claude/CLAUDE.mdfor latest status and next actions - Check recent git commits for what was just completed
- Reference
.claude/DOCUMENTATION-PLAN.mdfor overall structure - Review this file (
.claude/SYSTEM-README.md) for key technical facts - Update
.claude/CLAUDE.mdwith progress when completing major work
.claude/ directory - Claude Code internal files (NOT published to wiki):
-
CLAUDE.md- Progress tracker -
DOCUMENTATION-PLAN.md- Master plan -
SYSTEM-README.md- System reference -
README.md- Research index -
architecture-overview.md- Technical research -
use-cases-summary.md- Use case research -
resources/- Research materials (11 files total) -
commands/- Future: slash commands -
templates/- Future: reusable templates -
docs/- Future: system documentation
Wiki root - Published documentation only:
-
Home.md- Main navigation hub -
_Sidebar.md- Navigation sidebar -
RFC-SUPPORT.md- RFC compliance (user-facing) -
RFC-Information.md- RFC details (user-facing) - All other
.mdfiles and subdirectories - User documentation
System Version: 1.0.0 Last Updated: 2025-11-10 Model: Claude Sonnet 4.5
π Home
π Getting Started
π§ API
π‘οΈ Use Cases
π Address Families
βοΈ Configuration
π Operations
π Reference
- Architecture
- BGP State Machine
- Communities (RFC)
- Extended Communities
- BGP Ecosystem
- Capabilities (AFI/SAFI)
- RFC Support
π Migration
π Community
π External
- GitHub Repo β
- Slack β
- Issues β
π» Ghost written by Claude (Anthropic AI)