GithubHelp home page GithubHelp logo

anthrax3 / openr Goto Github PK

View Code? Open in Web Editor NEW

This project forked from facebook/openr

0.0 1.0 0.0 1.39 MB

Distributed platform for building autonomic network functions.

License: MIT License

Shell 1.36% Python 18.25% CMake 1.22% C++ 77.47% Makefile 0.03% Thrift 1.67%

openr's Introduction

OpenR: Open Routing

Build Status

Open Routing, OpenR, is Facebook's internally designed and developed routing protocol/platform. Originally built for performing routing on the Terragraph network, its awesome design and flexibility have led to its adoption in other networks at Facebook including our new WAN network, Express Backbone.

Documentation


Please refer to openr/docs/Overview.md to get started with OpenR.

Library Examples


Please refer to the examples directory to see some useful ways to leverage the openr and fbzmq libraries to build software to run with OpenR.

Resources


Contribute


Take a look at openr/docs/DeveloperGuide.md and CONTRIBUTING.md to get started contributing. The Developer Guide outlines best practices for code contribution and testing. Any single change should be well tested for regressions and version compatibility.

Code of Conduct


The code of conduct is described in CODE_OF_CONDUCT.md

Requirements


We have tried OpenR on Ubuntu-14.04, Ubuntu-16.04 and CentOS-7. This should work on all Linux based platforms without any issues.

  • Compiler supporting C++14 or higher
  • libzmq-4.0.6 or greater

Build


Repo Directory Structure

At the top level of this repo are the build and openr directories. Under the former is a tool, fbcode_builder, that contains scripts for generating a docker context to build the project. The openr directory contains the source for the project.

Dependencies

If docker is not a good option for you, you can install these dependencies for your system and follow the traditional cmake build steps below.

  • cmake
  • gflags
  • gtest
  • libsodium
  • libzmq
  • zstd
  • folly
  • fbthrift
  • fbzmq
  • libnl

One Step Build - Ubuntu-16.04

We've provided a script, build/build_openr.sh, well tested on Ubuntu-16.04, to install all necessary dependencies, compile OpenR and install C++ binaries as well as python tools. Please modify the script as needed for your platform. Also, note that some library dependencies require a newer version than provided by the default package manager on the system and hence we are compiling them from source instead of installing via the package manager. Please see the script for those instances and the required versions.

libnl also requires custom patch, included herewith, for correct handling of add/remove multicast routes.

Build using Docker

Learn more here.

Build Steps

// Step into `build` directory
cd build

// Install dependencies and openr
sudo bash ./build_openr.sh

// Run tests (some tests requires sudo privileges)
sudo make test

If you make any changes you can run cmake ../openr and make from the build directory to build openr with your changes.

Installing

openr builds both static and dynamic libraries and the install step installs libraries and all header files to /usr/local/lib/ and /usr/local/include/ (under openr subdirectory) along with python modules in site-packages. Note: the build_openr.sh script will run this step for you.

sudo make install

Installing Python Libraries

You will need python setup-tools to build and install python modules. All library dependencies will be automatically installed except the fbthrift-python module which you will need to install manually using steps similar to those described below. This will install breeze, a cli tool to interact with OpenR.

cd openr/openr/py
python setup.py build
sudo python setup.py install

License


OpenR is MIT licensed.

openr's People

Contributors

ammubhave avatar dombiv avatar facebook-github-bot avatar igkobzar avatar jstrizich avatar mcallahan avatar meyering avatar nataliejameson avatar orvid avatar saifhhasan avatar simpkins avatar snarkmaster avatar sonoble avatar tamihiro avatar yfeldblum avatar yns88 avatar zhanleewo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.