SONATA Network Service Editor

SONATA’s descriptors contain all the information required for deploying and instantiating network services and their VNFs, and setting up the network among them. When writing a descriptor according to the SONATA schema definition, it can be difficult to keep track of all the required fields. Using a graphical editor can simplify some of the repetitive and error-prone tasks, for example, adding references to a pre-defined VNF within a service.

Moreover, using a graphical editor, a non-expert service owner can, for instance, create a virtual link between two components by simple actions like dragging and dropping a component or drawing a line between two nodes. By visualizing the descriptor as a graph of VNFs, network services, connection points and virtual links, the user gets a better understanding of the relationships between nodes just by a quick look at the graph layout, instead of reading a long descriptor.


SONATA uses a web-based approach for the editor frontend. Nowadays, the web technologies are powerful enough to support all features that we deemed necessary for a powerful editor, with the advantage of being almost platform-independent, since a modern web browser is usually installed on every computer. Moreover, it dispenses with the need for updating the software on the client slide, to add more features to the editor. If the application is run from a public or organization-wide accessible server, it also enables logging in and working from any web browser.

The editor communicates with the backend server via a REST API to manage the descriptor files. The backend server is written in Python like many of the other SONATA projects to ease the integration and interoperability with the rest of the SDK.

SONATA’s SDK command line tools (son-cli) are integrated in the editor’s backend. This allows users to create compatible workspaces and projects via calls to son-workspace. For building packages and sending them over to the Service Platform, we have integrated son-package as well as son-access. While son-package takes care of collecting all references into one package and performing a validation, son-access ensures the synchronization with possible changes in the platforms API.


The editor includes the following main features:

1) Graphical user interface for composing and editing network services, supporting the functionalities to:
- Drag and drop service components
- Connect service components by dragging connections
- Undo and redo the actions
- Zoom and pan
- Select multiple components of the service
- Rename service components, with direct effect on the descriptor
- Delete service components and connections
- Automatic computation of the forwarding graph
2) Immediate frontend-side syntax validation, including:
- Visual feedback about what needs to be filled and what is still missing
- Schema-based selective input fields
3) Reference dependencies checked, in order to:
- Hinder deletion of referenced VNFs
- Create a new version or refactor references when renaming VNFs
4) Direct uploading possibility from the editor to SONATA’s service platform
- Service package created using son-package tool in the backend
- Upload services directly from network service view
5) Integration with SONATA’s catalogues, including:
- Pulling and publishing from and to catalogues
- Direct access from network service editor to catalogues
6) GitHub Integration, which provides:
- GitHub OAuth login to the editor
- Cloning, sharing, pulling and pushing network service projects from/to GitHub