D3.1. Basic SDK Prototype

The next generation of mobile networks and telecommunication standards is referred as 5G. It offers speeds which are higher than current 4G mobile networks and has a higher spectral efficiency. However, the true potential of 5G technology is not only to be found in higher access speeds, but also in the broad spectrum of services it could bring to the customer. These services should be able to optimally use the available network and cloud infrastructure, beyond the pure access network. This will enable increased flexibility, rapid deployment and elasticity depending on the context in which services are deployed. Building further on the novel paradigms of Network Function Virtualization (NFV) and Software-Defined Networking (SDN), SONATA aims to contribute to this trend by providing an appropriate Service Platform and corresponding Software Development Kit. This deliverable documents the architecture, design, programming model and usage of the SONATA Software Development Kit (SDK) after the first phase of the project. The SDK is the principle set of development tools to design and test services to be deployed on the SONATA Service Platform as documented in D4.1.

The SDK is built up as a set of small independent tools which can be combined in one or multiple workflows to develop a SONATA service. This design enables agile development, involving quick and iterative cycles of development, with the possibility of rapidly transitioning between development and operations, which is one of the key characteristics of the SONATA approach. The software design of the SDK tries to re-use existing workflows and concepts in software development such as the use of workspaces, project folders and packaging techniques. This will enable new developers to get acquainted with the SONATA development philosophy and tool set in a short time. Where possible, existing software or libraries have been re-used, increasing
the robustness and overall feature set of the SONATA SDK.

The SONATA programming model focuses on the common concepts of service chains and service graphs comprised by individual network functions. Each of these components are defined by their corresponding descriptors following a particular data model. The used data models are built upon ongoing standards or outcomes of research projects, extending them when appropriate. A SONATA service is characterized by a network service descriptor (NSD), a set of virtual network function descriptors (VNFD), and a package descriptor for the overall service. Each of these descriptors define artifacts containing data and information such as images, files and/or configuration parameters or scripts. The descriptors follow a YAML or JSON schema language format. A set
of validation tools have been made in order to check if given descriptors are compliant with the SONATA format. These can be used across the project in different modules and tools of both the SDK and the Service Platform (SP).

In this phase of the project, the development tools have been focused on the support of a basic process which can be accommodated by both Service Platform and SDK. This workflow is documented as the phase 1 storyboard of the project, and ensures consistency in the global design of SP and SDK components. The SONATA SDK itself consist of a set of tools. Manuals for each of these tools including concrete usage examples have been added to the appendix of this document. The main workflow and functionality of these tools is as follows: son-workspace and son-project enable a developer to prepare afile system structure for a SONATA workspace and SONATA service under development. This involves the creation of templates for le descriptors, as well as the creation of appropriate subfolders for individual project components such as images. The developer
can further work on this project by editing descriptors or referencing appropriate descriptors for functions or function interconnection from the SONATA catalogue component. Once the project is ready, it can be packaged using the son-package tool, which compiles all necessary information into a single le which might be uploaded to a Service Platform using the son-push tool. Because a full Service Platform might require too many (or external) resources or setup eort, the SDK provides an emulator based on Docker technology, enabling to locally deploy a SONATA service package on the developer's computer. Initial versions of the son-monitor tool enable monitoring of basic characteristics of the deployed service such as CPU and/or bandwidth usage, or to enable a simple prole of the service or involved network functions. The resulting prole might be used in a next phase to ne-tune service scaling logic on a range of physical platforms. The son-analyze tool enables to visualize monitoring data and perform statistical analysis of this.

The SDK functionality for the next phase of the SONATA project will build further on the existing tools, by improving their robustness, security as well as their initial feature set. In addition, the SDK will be extended with a set of new development tools, focusing on the development of individual Virtual Network Functions, as well as on the development of Service Specific Managers
and Function Specific Managers. The latter will enable SONATA services to dene their custom scaling and/or placement logic.