-
Notifications
You must be signed in to change notification settings - Fork 17
Project Structure
Renato Westphal edited this page Mar 20, 2024
·
4 revisions
The Holo project is organized into multiple crates to promote modularity and maintainability. Below, you'll find a brief overview of these crates, grouped into categories:
-
holo-routing:
- Manages protocol instances.
- Manages the RIB and ensure it's in sync with the FIB.
- Manages route redistribution among the different protocol instances.
- Implements the ietf-routing YANG module.
-
holo-interface:
- Manages system interfaces and their addresses.
- Implements the ietf-interfaces and ietf-ip YANG modules.
-
holo-keychain:
- Manages key chains used for protocol authentication.
- Implements the ietf-key-chain YANG module.
-
holo-policy:
- Manages policies used by routing protocols.
- Implements the ietf-routing-policy YANG module.
- holo-bfd: Implements the Bidirectional Forwarding Detection (BFD) protocol.
- holo-bgp: Implements the Border Gateway Protocol (BGP) protocol.
- holo-ldp: Implements the Label Distribution Protocol (LDP).
- holo-ospf: Implements the Open Shortest Path First (OSPF) protocol, including both OSPFv2 and OSPFv3 versions.
- holo-rip: Implements the Routing Information Protocol (RIP), including both RIPv2 and RIPng versions.
- holo-northbound: Contains the northbound framework and associated traits that each protocol needs to implement.
- holo-protocol: Contains utility code shared among all protocol implementations.
- holo-utils: Contains utility code shared among all other crates.
- holo-yang: Contains all implemented YANG modules, along with essential YANG-related utility code.
- holo-cli: An external Command Line Interface (CLI) that interacts with the holod daemon through gRPC.
- holo-daemon: The Holo daemon, a self-contained package that seamlessly integrates with all protocol crates.
-
holo-tools: A collection of development utilities.
- replay.rs: Replays events from a record file. Useful to reproduce bugs reported by users.
- yang_callbacks.rs: Parses a YANG module and generates all necessary northbound callbacks for its nodes.
- yang_coverage.rs: A YANG module coverage calculator, based on the number of loaded "not-supported" deviations.
- yang_deviations.rs: Parses a YANG module and generates "not-supported" deviations for all of its nodes.
- Architecture
- Management Interfaces
- Developer's Documentation
- Example Topology
- Paul's Practical Guide