Versions Compared

Key

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

...

Name
Organization
Email
Adarsh MHuawei Technologiesadarsh.m@huawei.com
Bharat Saraswal
Huawei Technologiesbharat.saraswal@huawei.com
Brian O'ConnorOnLabbocon@onlab.us
Gaurav Agrawal Huawei Technologiesgaurav.agrawal@huawei.com
Janani B
Huawei Technologiesjanani.b@huawei.com
Patrick Liu
Huawei Technologies
Partick.Liu@huawei.com
Ray MilkeyOnLabray@onlab.us
Sathish Kumar MHuawei Technologiessathishkumar.m@huawei.com
Shankara
Huawei Technologies

shankara@huawei.com

Sonu GuptaHuawei Technologiessonu.gupta@huawei.com
Suchitra H N
Huawei Technologiessuchitra.hn@huawei.com
Thomas VachuskaOnLabtom@onlab.us
Vidyashree RamaHuawei Technologiesvidyashree.rama@huawei.com
Vinod Kumar SHuawei Technologiesvinods.kumar@huawei.com

YANG Tools Overview

YANG is a data modeling language used to model configuration & state data. Modeling languages such as SMI (SNMP), UML, XML Schema, and others already existed. However, none of these languages were specifically targeted to the needs of configuration management. They lacked critical capabilities like being easily read and understood by human implementers, and fell short in providing mechanisms to validate models of configuration data for semantics and syntax.

YANG tools are the basic building block to achieve the final goal of abstracting the language based Syntax/Semantics processing by APPs.

The YANG modeled interfaces need to be implemented by corresponding application component. There are 2 parts in implementing the interface:

    1. Syntax/semantics processing of the request/response being exchanged. 
    2. Business logic to compute the request. 

YANG Tools is a infrastructure project aiming to develop necessary tool chain and libraries providing support of NETCONF and YANG for Java(JVM-language based) projects and applications.

We intend to abstract the applications from syntactic processing of information encoding with external world.

We intend to provide a framework in which the applications only need to implement the business logic and seamlessly support any interface language like REST, NETCONF etc. 

           Image Removed Image Added

In ONOS, YANG is being used as a general purpose modeling language.

...

    1. Model

    2. YangCompiler

    3. YangSerializer

    4. YangRunTime

Model

Base Models will be used by different YANG components. It includes following:

DataNode

...

Provides a basis for holding information in a tree whose structure corresponds to a set of YANG models (base & augmentations).

...

  • Inner node represents container and list.
  • Leaf node represents leaf and leaf-list.
ResourceId

...

 

Resource identifier, Its list of node key to drive path till the resource, where key is contains the local node name and the corresponding module namespace. 

  • Is immutable.
  • Provides a mechanism for mutation (Builder pattern, etc.)
  • Used to operate on a given resource.
ModelObject

...

Provides a common basis for all POJOs which are generated from a YANG model.

  • It is mutable.
  • The binding between ModelObject POJO and DataNode is performed by the YANG Runtime.

    Each model or application will have a unique identifier, which can be configured using buck or maven as shown below :

    Code Block
    languagebash
    titleTo config mode-ld using maven
    <configuration>
        <modelId>xml</modelId>
    </configuration>
    Code Block
    languagebash
    titleTo config model-Id using buck
    yang_model(
        app_name = 'example.application',
        model_id = 'example_id'
    )


    In-case model-id is not configured then artifact-Id will be configured as model-Id for that particular application. 

YANG Compiler

             

...

Allows on-the-fly compilation & registration of YANG models.

To be updated later...

YANG Serializers

Serializers is an entity capable of encoding and decoding arbitrary structures(Data Node),
which are in-memory representations of YANG models, to and from various external representations, e.g. XML, JSON.

...

It encodes the internal in-memory representation of a configuration model to an external representation consumable from the resulting input stream.
Resource identifier in composite data will get encoded to resource identifier stream and data node will be encoded to resource data stream.

                            Image Removed

...

                          Image Added

Facilities to convert Input stream to DataNode and vice versa.

...

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

Design Considerations

Framework components must be model-agnostic

...

...

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 Removed

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 Removed

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 Removed

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 Removed

Reference of Applications

Schema Aware Applications:

...

4) YANG GUI enhancement for live compilation.

5) Sub-module support.