GithubHelp home page GithubHelp logo

facebook / fboss Goto Github PK

View Code? Open in Web Editor NEW
850.0 123.0 285.0 73.01 MB

Facebook Open Switching System Software for controlling network switches.

License: Other

C++ 97.66% Thrift 0.27% CMake 0.26% CSS 0.01% Shell 0.01% Python 1.71% C 0.02% Assembly 0.01% Mathematica 0.01% JavaScript 0.01% MDX 0.07%

fboss's Introduction

Facebook Open Switching System (FBOSS)

Support Ukraine

FBOSS is Facebook's software stack for controlling and managing network switches.

Components

FBOSS consists of a number of user-space applications, libraries, and utilities.

The initial open source release of FBOSS consists primarily of the agent daemon, but we are working on releasing additional pieces and functionality as well.

Agent Daemon

One of the central pieces of FBOSS is the agent daemon, which runs on each switch, and controls the hardware forwarding ASIC. The agent daemon sends forwarding information to the hardware, and implements some control plane protocols such as ARP and NDP. The agent provides thrift APIs for managing routes, to allow external routing control processes to get their routing information programmed into the hardware forwarding tables.

The code for the agent can be found in fboss/agent

The agent requires a JSON configuration file to specify its port and VLAN configuration. Some sample configuration files can be found under fboss/agent/configs. These files are not really intended for human consumption--at Facebook we have tooling that generates these files for us.

Routing Daemon

The FBOSS agent manages the forwarding tables in the hardware ASIC, but it needs to be informed of the current routes via thrift APIs.

Our initial open source release does not yet contain a routing protocol daemon capable of talking to the agent. The routing protocol daemon we use at Facebook is rather specific to our environment, and likely won't be as useful to the open source community. For more general use outside of Facebook, it should be possible to modify existing open source routing tools to talk to the FBOSS agent, but we have not implemented this yet. In the meantime, we have included a small sample python script in fboss/agent/tools that can manually add and remove routes.

Management Tools

Obviously additional tools and utilities are required for interacting with the FBOSS agent, reporting its status, generating configuration files, and debugging issues.

At the moment we do not have many of our tools ready for open source release, but we hope to make more of these available in the future weeks. In the meantime, the thrift compiler can automatically generate a python-remote script to allow manual invocation of the agent's various thrift interfaces.

Building

See the BUILD.md document for instructions on how to build FBOSS.

Future Development

FBOSS has been designed specifically to handle the needs of Facebook's data center networks, but we hope it can be useful for the wider community as well. However, note that this initial release of FBOSS will likely require modification and additional development to support other network configurations beyond the features used by Facebook. Until it matures more, FBOSS will likely be primarily of interest to network software developers, rather than to network administrators who are hoping to use it as an turnkey solution.

We look forward to getting feedback from the community, and we hope FBOSS can serve as a jumping-off point for other users wishing to program network switches.

FBOSS development is ongoing at Facebook, and we plan to continue releasing more components, additional features, and improvements to the existing tooling.

License

See LICENSE.

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.