Giter Site home page Giter Site logo

billybobjoe2664 / onos-config Goto Github PK

View Code? Open in Web Editor NEW

This project forked from onosproject/onos-config

0.0 0.0 0.0 8.31 MB

Configuration subsystem for ONOS (µONOS Architecture)

License: Apache License 2.0

Python 0.19% Smarty 0.03% Go 99.38% Shell 0.12% Dockerfile 0.14% Makefile 0.14%

onos-config's Introduction

onos-config

Build Status Integration Test Status Go Report Card License Coverage Status GoDoc

ONOS Configuration subsystem built using the µONOS architecture

Design Objectives

gNMI provides transactionality with respect to a single device; all configuration operations specified as part of a single batch are all applied or none of them are. The core capability of the configuration platform should build on this gNMI feature to:

  • Provide ability to apply a batch of operations (via NB gNMI API) targeted at multiple devices to be performed as a transaction; either all changes are applied to all devices or none of the changes are applied to any of the devices.
  • Track configuration change transactions applied to a set of devices over time and allow rollback (via NB admin API) to previous configuration checkpoints demarcated by the transactions.

The above features are the principal objectives for the configuration management platform. Second order objectives are as follows:

  • Support high-availability and distributed operation, including rolling upgrades
  • Support networks comprising of ~50 devices, ~5000 ports and rate of ~10K incremental configuration transactions per day

Additional Features (to be integrated with the above)

The following set of features will be required to support the real-world use-cases, but may not necessarily be part of the code configuration subsystem and instead can be provided as additional layers:

  • Ability to preload initial configuration about devices that have not yet been discovered - or even deployed
  • Dry run capability - validate configuration with respect to model, but also with respect to existing business constraints or policies
  • Import existing device configuration
  • Configuration Intents - ability to translate high-level (possibly network-wide) configuration specifications into lower-level (device-specific) operations

Key Tenets

  • Principal northbound API for the subsystem will be gNMI and gNOI.
    • These interfaces are already accepted standards and are well-defined, low-profile interfaces with support for transaction semantics.
    • YANG models that will be exposed as part of the NB API are yet to be determined (or defined).
  • Enhanced northbound API will be a gRPC service providing access to administrative functionality.
    • Applications can navigate the change-log and roll-back various changes as they were previously submitted via gNMI
  • Southbound API for the subsystem will be gNMI and gNOI.
    • This will allow direct use with Stratum-compliant switches without requiring an adaptation layer.
    • Adapters can be created for devices that do not directly support gNMI/gNOI interfaces. Such adapters can be deployed either as proxy agents or potentially can be hosted on the devices themselves.
  • Diagnostic gRPC service will allow for inspection of internal state using various remote tools.
    • This interface is not subject to backward compatibility constraints.
  • The subsystem will be designed as a separate entity to allow its use with the existing ONOS 2.0 architecture and to fit with the NG ONOS architecture.

High-Level Design

design

Additional Documentation

onos-config's People

Contributors

andrea-campanella avatar ray-milkey avatar seancondon avatar tomikazi avatar kuujo avatar antonjlin avatar adibrastegarnia avatar billybobjoe2664 avatar damianoneill avatar jhall11 avatar teone 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.