{"id":29675727,"url":"https://github.com/oxidecomputer/maghemite","last_synced_at":"2025-10-25T06:07:37.245Z","repository":{"id":213777909,"uuid":"402899957","full_name":"oxidecomputer/maghemite","owner":"oxidecomputer","description":"A routing stack written in Rust.","archived":false,"fork":false,"pushed_at":"2025-07-21T03:46:34.000Z","size":1855,"stargazers_count":55,"open_issues_count":62,"forks_count":5,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-07-21T05:37:29.658Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oxidecomputer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-09-03T21:19:38.000Z","updated_at":"2025-07-19T18:14:45.000Z","dependencies_parsed_at":"2024-02-13T08:25:47.986Z","dependency_job_id":"5cd9595f-4e10-4bed-a988-871330eda2dc","html_url":"https://github.com/oxidecomputer/maghemite","commit_stats":null,"previous_names":["oxidecomputer/maghemite"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/oxidecomputer/maghemite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fmaghemite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fmaghemite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fmaghemite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fmaghemite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxidecomputer","download_url":"https://codeload.github.com/oxidecomputer/maghemite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fmaghemite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266591230,"owners_count":23953082,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-22T23:38:13.672Z","updated_at":"2025-10-25T06:07:37.216Z","avatar_url":"https://github.com/oxidecomputer.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"Maghemite\n=========\n\nA suite of routing protocol implementations written in Rust.\n\nRouting protocols are commonly broken up into an upper half and a lower half.\nThe upper half is responsible for discovering other routers, forming peering\nrelationships, and exchanging routes. The lower half is responsible for making\npacket forwarding decisions based on the routing tables established by an\nupper half. Maghemite implements upper halves for the protocols listed below\nwith support for the lower-half data planes listed below.\n\n## Protocols\n\n- [x] [DDM](ddm): Delay Driven Multipath\n- [x] [BGP](bgp): Border Gateway Protocol\n- [x] [BFD](bfd): Bidirectional Forwarding Detection\n- [x] [Static](mgd/src/static_admin.rs): Static route specifications (e.g. no protocol involved)\n\n## Supported Data Planes\n\n- [x] illumos/Helios 2\n- [x] Sidecar/Dendrite\n\n## Tooling\n\n- [x] [ddmadm](ddmadm)\n- [x] [mgadm](mgadm)\n\n## APIs\n\n- [x] [DDM OpenAPI](openapi/ddm-admin/ddm-admin-latest.json)\n- [x] [DDM Rust Client Library](ddm-admin-client)\n- [x] [MGD OpenAPI](openapi/mg-admin/mg-admin-latest.json)\n- [x] [MGD Rust Client Library](mg-admin-client)\n\n## Delay Driven Multipath (DDM)\n\nDDM is the protocol that implements routing between sleds within a rack and\nacross racks. DDM is a simple path-vector routing protocol. It's described in\ndetail in [RFD 347](https://rfd.shared.oxide.computer/rfd/0347). DDM is the\nsole routing protocol that runs on the network interconnecting sleds and racks,\ncommonly referred to as the underlay network. Because of that, it has its own\nstandalone routing information base (RIB).\n\n## External Routing Protocols\n\nUnlike DDM, external routing is a coordination among several protocols and\nconfiguration mechanisms. Currently, these include BGP, BFD, and static routing.\nThese all share a common RIB. They also live in a common daemon `mgd`. Each\nprotocol is implemented as a library and `mgd` manages execution for each\nprotocol. The RIB for these protocols lives in [rib](rdb) and the lower half\nresponsible for synchronizing RIB state to the underlying forwarding platform\nlives in [mg-lower](mg-lower). The lower half is also written as a library\nwhose execution is managed by `mgd`. This compile-time library-centric\narchitecture is by design.\n\n## Testing\n\n- [DDM integration tests](tests/src/ddm.rs)\n- [BGP integration tests](bgp/src/test.rs)\n- [BFD integration tests](bfd/src/lib.rs#L282)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxidecomputer%2Fmaghemite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxidecomputer%2Fmaghemite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxidecomputer%2Fmaghemite/lists"}