{"id":14957028,"url":"https://github.com/facebook/openr","last_synced_at":"2025-05-14T14:08:23.678Z","repository":{"id":37285494,"uuid":"108306129","full_name":"facebook/openr","owner":"facebook","description":"Distributed platform for building autonomic network functions.","archived":false,"fork":false,"pushed_at":"2025-05-05T16:39:15.000Z","size":27027,"stargazers_count":911,"open_issues_count":16,"forks_count":242,"subscribers_count":106,"default_branch":"main","last_synced_at":"2025-05-05T17:57:44.720Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebook.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2017-10-25T17:59:53.000Z","updated_at":"2025-05-05T16:39:19.000Z","dependencies_parsed_at":"2024-01-25T11:46:12.324Z","dependency_job_id":"cb884885-6079-41f5-aa51-59d5e52970f2","html_url":"https://github.com/facebook/openr","commit_stats":{"total_commits":15695,"total_committers":307,"mean_commits":"51.123778501628664","dds":0.3978337050015929,"last_synced_commit":"fff24f1cb0302036a52f323324bb3e387ed63691"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fopenr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fopenr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fopenr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fopenr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","download_url":"https://codeload.github.com/facebook/openr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254159767,"owners_count":22024564,"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","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":"2024-09-24T13:13:57.638Z","updated_at":"2025-05-14T14:08:23.658Z","avatar_url":"https://github.com/facebook.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# OpenR: Open Routing\n\n[![Support Ukraine](https://img.shields.io/badge/Support-Ukraine-FFD500?style=flat\u0026labelColor=005BBB)](https://opensource.fb.com/support-ukraine)\n[![Build Status](https://github.com/facebook/openr/workflows/linux/badge.svg)](https://github.com/facebook/openr/actions?workflow=linux)\n[![Documentation Status](https://readthedocs.org/projects/openr/badge/?version=latest)](https://openr.readthedocs.io/en/latest/?badge=latest)\n\nOpen Routing, OpenR, is Facebook's internally designed and developed Interior Routing\nProtocol/Platform. OpenR was originally designed and built for performing routing on the\n[Terragraph](https://terragraph.com/) mesh network. OpenR's flexible design has led to\nits adoption in other networks, including Facebook's new WAN network, Express Backbone.\n\n## Documentation\n\n---\n\nPlease refer to our extensive [Documentation](https://openr.readthedocs.io/) to get started with OpenR.\n\n## Library Examples\n\n---\n\nPlease refer to the [`examples`](examples) directory to see some useful ways to\nleverage the libraries to build software to run with OpenR.\n\n## Resources\n\n---\n\n- Developer Group: https://www.facebook.com/groups/openr/\n- Github: https://github.com/facebook/openr/\n- IRC: #openr on freenode\n\n## Contribute\n\n---\n\nTake a look at [`Developer Guide`](openr/docs/Developer_Guide/DeveloperGuide.md)\nand [`CONTRIBUTING.md`](CONTRIBUTING.md) to get started contributing.\nThe Developer Guide outlines best practices for code contribution and testing.\nAny single change should be well tested for regressions and version\ncompatibility.\n\n## Code of Conduct\n\n---\n\nThe code of conduct is described in [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)\n\n## Requirements\n\n---\n\nWe have tried `OpenR` on Ubuntu-16.04, Ubuntu-18.04 and CentOS 7/8.\nOpenR should work on all Linux based platforms.\n\n- Compiler supporting C++17 or higher\n\n## Build\n\n---\n\n### Repo Directory Structure\n\nAt the top level of this repo are the `build` and `openr` directories. Under the\nformer is a tool, `gen`, that contains scripts for building the\nproject. The `openr` directory contains the source for the project.\n\n### Dependencies\n\nOpenR requires these dependencies for\nyour system and follows the traditional cmake build steps below.\n\n- `cmake`\n- `gflags`\n- `gtest`\n- `libsodium`\n- `zstd`\n- `folly`\n- `fbthrift`\n- `re2-devel`\n\n### One Step Build - Ubuntu\n\nWe've provided a script, `build/build_openr.sh`, tested on Ubuntu LTS releases.\nIt uses `gendeps.py` to install all necessary dependencies, compile OpenR and install\nC++ binaries as well as python tools. Please modify the script as needed for\nyour platform. Also, note that some library dependencies require a newer version\nthan provided by the default package manager on the system and hence we are\ncompiling them from source instead of installing via the package manager. Please\nsee the script for those instances and the required versions.\n\n### Build Steps\n\n```console\n# Install dependencies and build openr\nbash ./build/build_openr.sh\n\n# To Run tests (some tests requires sudo privileges)\npython3 build/fbcode_builder/getdeps.py test \\\n  --src-dir=. \\\n  --project-install-prefix openr:/opt/facebook \\\n  openr\n```\n\nIf you make any changes you can run `cmake ../openr` and `make` from the build\ndirectory to build openr with your changes.\n\n### Installing\n\n`openr` builds both static and dynamic libraries and the install step installs\nlibraries and all header files to `/opt/facebook/openr/lib` and\n`/opt/facebook/openr/include/` along with python modules in your Python's\n`site-packages` directory.\nNote: the `build_openr.sh` script will run this step for you\n\n- Manually you can drive `getdeps.py` to install elsewhere\n  - refer to `build_openr.sh`\n\n#### Installing Python Libraries + CLI\n\nYou will need python `pip` or `setuptools` to build and install python modules.\nAll library dependencies will be automatically installed except the\n`fbthrift-python` module which you will need to install manually using steps\nsimilar to those described below. This will install `breeze`, a cli tool to\ninteract with OpenR.\n\n- Python install requires a `fbthrift` / `thrift1` compiler to be installed and in PATH\n\n```console\ncd openr/openr/py\npython setup.py build\nsudo python setup.py install\n```\n\n### Docker Building / Usage\n\nOpenR now has a `Dockerfile`. It uses `gendeps.py` to build all dependencies + OpenR.\n\n```console\ndocker build --network host .\n```\n\n#### Running\n\nYou can specify a config file by bind mount a directory with a `openr.cfg` file in /config\n\n```console\ndocker run --name openr --network host openr_ubuntu\n```\n\n- To use a custom config bind mount `/config` into the container\n  - OpenR binary will look for `/config/openr.conf`\n\n### License\n\nOpenR is [MIT licensed](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fopenr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebook%2Fopenr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fopenr/lists"}