Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

https://wiki.onosproject.org/display/ONOS/YANG+Runtime

Design Considerations

Framework components must be model-agnostic

    • e.g. runtime, protocol adapters, information store
    • must be capable dealing with any potential model
    • cannot be linked with the model-specific objects
    • hence must deal with data in a neutral format, i.e. raw tree

Applications should be model-aware

    • e.g. applications that implement network services
    • must understand the semantics of the model to operate
    • raw tree representation not expressive or application friendly
    • hence should deal with data in domain-friendly model objects

Model-agnostic Tree View

Consider a simple device model

    • device has a number of attributes and a number of ports
    • each port has a number of attributes

Spread across several tree layers

    • data produced by tree augmentation
    • data accessed by tree traversal
      Image Added

Model-specific Object View

Rich data types, e.g. Device, Port

    • domain-friendly abstractions
    • idiomatic Java usage

Consolidates multiple tree layers

    • data created through constructors
    • data accessed via accessors
    • device.swVersion() or device.getPorts()
      Image Added

Model Object & Tree Views

Toolchain facilitate both model-agnostic tree

view and model-specific object views

Toolchain must allow conversion between them

Model ←→ Tree View

Mutable vs Immutable

Immutable data is safer in multi-threaded apps

  • free of side-effects when shared by caller
  • memory efficient - a single copy can be shared by many threads

 … but apps need to easily mutate data

Model objects are mutable

  • modified via idiomatic constructors and setters

Tree views are immutable

  • constructed via builders
  • immutable once constructed

Configuration of Devices

  • Goal is to enable a network operator to seamlessly configure devices from different vendors and to verify the configuration with minimal or no human intervention
  • Offers significant OPEX savings and vendor independence for network operators
  • Offers vendors faster integration of their products into operator’s networks
     
                  Image Added

Configuration of Services

● Goal is to enable a network operator to seamlessly configure and provision a service on the network comprising many devices from many vendors with minimal or no human intervention

● Provides network operators with agility to deploy new services with reduced OPEX

● Offers vendors opportunity to support many services on their devices

Image Added

Reference of Applications

Schema Aware Applications:

Applications who are aware about the YANG data structure and operates on that.

Example: L3VPN, PCE, SFC

Schema Un-aware Applications:

Applications who are not aware about the YANG data structure and wanted to operate in schema agnostic way.

Example: RESTCONF, NETCONF, Store

Enhancement with YANG 2.0

 

YANG Tools (1.11) + YMS

YANG Tools (2.0) + Dynamic Config

Generated Classes

Tied to YMS; no common basis between models

Common ancestor for all models;

model-agnostic and model-specific access;

friendly API for apps

Storage

Ad hoc; models serialized and stored at the discretion of application

Any and all models in a single store

Protocols

RESTCONF and NETCONF are tightly coupled and integrated with YMS

RESTCONF and NETCONF can be maintained independently;

new protocols (e.g. gNMI are easier to add)

New Models

Applications must be made aware of all models at compilation time;

cannot be stored by YMS

Applications can interact with new models or

augmentations at runtime using the model-agnostic interface

Live Compilation

Not available; introduction of new models requires recompilation

YANG models can be introduced and compiled at runtime (e.g. from a device)

Modularity and Maintainability

YMS and onos-yang-tools are tightly coupled making maintenance

difficult and usage is brittle

YANG tools, dynamic config manager and store are implemented in a modular fashion;

they can be evolved and maintained independently from one another;

generated classes are not tied to the dynamic config store


Reference

https://wiki.onosproject.org/display/ONOS/YANG+Compiler
https://wiki.onosproject.org/display/ONOS/YANG+Runtime
https://wiki.onosproject.org/display/ONOS/YANG+utils
https://wiki.onosproject.org/display/ONOS/L3VPN

Future

To be planned:
1) YANG 1.1 version.

2) OpenConfig YANG integration to ONOS.

3) YANG Library based on RFC 7895.

4) YANG GUI enhancement for live compilation.