Git Product home page Git Product logo

tng-schema's Introduction

Build Status Join the chat at https://gitter.im/sonata-nfv/Lobby

tng-schema

The tng-schema repository contains the schema files for the various descriptors used by 5GTANGO as well as some examples and tests. The schema files in this repository serve as ground truth for the whole 5GTANGO project. Thus, every tool and sub-project should be able to parse and handle the latest versions of these files (or - once available - tagged versions in corresponding branches).

The 5GTANGO schemas are a fork of the SONATA NFV schemas which have been developed in the 5GPPP project SONATA (http://sonata-nfv.eu).

The schema files are written in JSON-Schema Draft-04.

Documentation

The documentation can be found in the wiki, e.g., linking to the 5GTANGO Package Specification (latest).

Dependencies

The schemas and descriptors are based on JSON-Schema Draft-04.

The validation tests of descriptors against their schemas depend on a number of Python packages that are listed and can be installed through setup.py.

Development

To contribute to the development of the 5GTANGO schema files, you may use the very same development workflow as for any other 5GTANGO Github project. That is, you have to fork the repository and create pull requests. Moreover, all discussions regarding the 5GTANGO schemas take place on GitHub, and NOT on the wiki.

Contributing

You may contribute to the schema files similar to other 5GTANGO (sub-) projects, i.e. by creating pull requests. However, since changes in the schema file may affect several other tools and projects, the pull requests might be discussed on the mailing list before it is merged to the master branch.

CI Integration

The repository is integrated with Travis CI. Thus, every pull request is checked automatically. The Travis job validates all the JSON and YAML files in the repository to be a valid JSON/YAML format. Moreover, Travis executes all files named 'test_*.sh' that reside in */test/ directories automatically. Thus, it is quite easy to add new tests. Just write a corresponding bash script. Tests are considered successful when they return with exit code 0, and to be a failure otherwise.

Run tests manually

You can also run the test manually on your local machine. To do so, you need to install the validation tool located in the tools folder of this repository:

cd tools/validate/
sudo python setup.py install

Once you did this you can trigger the tests like this (in the root of this repository):

test.sh

Useful Tools and Links

There are some useful tools that support working the JSON and YAML files.

License

The 5GTANGO schemata and descriptors are published under Apache 2.0 license. Please see the LICENSE file for more details.


Lead Developers

The following lead developers are responsible for this repository and have admin rights. They can, for example, merge pull requests.

Feedback-Chanel

  • Please use the GitHub issues to report bugs.
  • You may use the mailing list [email protected]

tng-schema's People

Contributors

alemanyp avatar allemaos avatar antonroman avatar carlos-martins-marques avatar cgeoffroy avatar efotopoulou avatar ekapassa avatar estebancortero avatar hkarl avatar jbonnet avatar lconceicao avatar mbredel avatar midlakelands avatar mpeuster avatar mtouloup avatar rvilalta avatar shuaibsiddiqui avatar sonata-jenkins avatar stevenvanrossem avatar tsoenen avatar wtaverni avatar xilouris avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tng-schema's Issues

Add EPA support to VNFDs

As discussed in the WP6 call on Fri. 27th April 2018, it would be a nice benefit if the 5GTANGO SP could support EPA capabilities.

George is going to provide more details about requirements for the platform etc. For our descriptors, this means that we need some additional fields to express the EPA configuration of a VNF.

I suggested to have a look at the OSM information model, because OSM already has EPA support, and I believe that it is a good idea to be more or less compatible to them.

There is an example VNF package from OSM's hackfest that has EPA enabled: https://osm-download.etsi.org/ftp/osm-3.0-three/2nd-hackfest/packages/hackfest_4_vnfd.tar.gz

The corresponding section in the VNFD is placed in the VDU section an named guest-epa:

vdu:
        -   id: mgmtVM
            name: mgmtVM
            image: hackfest3-mgmt
            count: '1'
            vm-flavor:
                vcpu-count: '1'
                memory-mb: '1024'
                storage-gb: '10'
            guest-epa:
                cpu-pinning-policy: DEDICATED
                cpu-thread-pinning-policy: PREFER
                mempage-size: LARGE
                numa-node-policy:
                    mem-policy: STRICT
                    node-cnt: '1'
                    node:
                    -   id: '1'

The corresponding definition in OSM's information model can be found here.

I suggest the following action to add EPA support to our descriptors:

  • investigate OSM (and other, e.g., TOSCA, ETSI, OpenStack EPA APIs) information models to see what is needed
  • make a list of EPA-related fields that we want to have (as a comment to this issue)
  • agree on those EPA fields
  • add the EPA fields to our VND schemas

Note: Even if our current platform does not support all EPA functionalities, it is still valuable that our descriptors support as many as possible.

Separate field for schema version

If we adjust the schemas and have different versions, it should somehow be clear to which schema version a descriptor belongs. If only minor changes were made, it's fine to use older schema versions.
If no schema version is specified, just use the latest schema.

Also the descriptor generator should generate and validate based on schemas of a specific version.

Support for PNFs and CNFs

Physical Network Functions
Cloud Native Network Functions (Kubernets)
(optional) Hybrid Network Functions

Implemented through PDUs and CNDUs (see mail thread):

  • xNFD has VDU(s) ==> VNF
  • xNFD has PDU(s) ==> PNF
  • xNFD has CNDU(s) ==> CNNF
  • xNFD has VDU(s), PDUs, CNDUs ==> HNF (not saying that we should try to deploy something this complicated :-D but the concept makes sense and we can easily built it into the schemas)

Final design to be made in Detmold F2F. Done.

TODOs

  • Create wiki page with an example for a PNF to collect inputs about the field/parameters needed in a PDU (similar to the CNF example) -> maybe links are enough?
  • Allow CNF and PNF objects in vnfd-schema, ensure that at least one of them is always there
  • Create example PNF in tng-schema
  • Create example CNF in tng-schema
  • Create example HNF in tng-schema
  • Finalize CNDU schema
  • Finalize PNF schema
  • update release notes for 4.1

Allow QoS properties for virtual links (VLDs)

We need this for the communication pilot.
It seems parts of this is already implemented, so at least do a cross check.

Something like:

properties:  # (arbitrary key/value list for each link)
   qos:
     latency: value 
     bw: value

bandwidth_units missing in nsd-schema.yml

bandwidth_units definition is missing in nsd-schema.yml and the validation is failing when bandwidth QoS contraints are added in the NS descriptor. In vnfd-schema is properly defined:
bandwidth_units:
enum:

  • "bps" # Bit per second
  • "kbps" # Kilobit per second
  • "Mbps" # Megabit per second
  • "Gbps" # Gigabit per second
  • "Tbps" # Terabit per second

I will create a PR to add this missing definition.

Alignment with new ETSI NFV descriptors in YANG format (SOL006)

Align 5GTANGO's terminology to ETSI terminology as far as possible (e.g., rename/restructure fields).
Identify gaps between the two information models.
Aim for high standardization impact.

This probably requires quite some effort, to check all relevant ETSI documentation and compare it with ours. Any help is appreciated.

Bug: Outdated local schemas

Problem: Validator stores schemas locally e.g. in ~/.tng-schema/ but never updates them.

It should always try to download the latest version from GitHub and replace the local version with them (if not internet connection is available the the old ones can be used).

On top, the validator should log (level info) which schema files (path + date) it uses so a user finds this bug. Right now it is incredible complicated to find this :-/

Add "logo" field to all descriptors

This is certainly not "highly important" but still nice to have (a lot of other systems support it):

Add a (optional!) logo field to NSDs and VNFDs that it of type string and points to a logo file that is shipped with the package.

The GUIs can then make use of it and display it in the list of on-boarded or instantiated services / VNFs, e.g., the logo of the VNF vendor.

The package descriptors will support it as well.

Example:

vendor: "eu.5gtango"
name: "example-package"
version: "0.1.1"
maintainer: "Manuel Peuster, Paderborn University"
release_data_time: "2017.01.01T10:00+03:00"  # IETF RFC3339
description: "This is an example 5GTANGO package."
logo: "icons/upb_logo.png"  # path to logo file (PNG or JPEG)

Add descriptor_type to the descriptors

Problem:
Someone gives you two YAML files, a NSD and a VNFD. But you are not told which of the files is the NSD and which the VNFD. To find out, you can either check the fields in the descriptor and make a qualified guess or we could directly include a type field in the descriptor's header that tells us.

This would look like this:

descriptor_version: "1.0"
descriptor_type: "eu.5gtango.nsd"
...

Possible values for the type could be (but are not limited to):

  • eu.5gtango.nsd
  • eu.5gtango.vnfd
  • eu.5gtango.msd
  • eu.sonata-nfv.nsd
  • eu.sonata-nfv.vnfd
  • eu.sonata-nfv.msd

This will also support to distinguish VNF only vs. NS packages.

Support multiple images in VNF Descriptors

Some background discussion from email between Manuel and Peer:

if I remember right, it is not possible right now. There is a field for the image_type but one can only specify a single image per VDU.

But we can add the possibility to have more images with different types in there. In fact, I think OSM recently introduced something similar to support OpenStack and vWare deployments with different images. They call it “alternative_image” or so.

I think the 5GPICTURE project works on similar things under the umbrella of “multi version VNFs”: Have one VNFs for x86, have one for x86 with attached FPGA or GPU accelerator, have one VNF for a small ARM chip on a switch, etc.

Adding it to the descriptors is easy. But our IA and SP guys have to support it. I would say we should add it to the TODOs for the time after v4.0, no?

One thing to keep in mind is that if such a field exists, V&V results need to reference the image that was used in testing, as the results may and will vary depending on the selected architecture and image.

Something like:

  • images:
    • image: “the name or id or url of the image”
      • image_type: qcow2
      • image_arch: x86
    • image: “the name or id or url of the image”
      • image_type: qcow2
      • image_arch: arm
    • image: “the name or id or url of the image”
      • image_type: docker
      • image_arch: x86

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.