Getting started with FRINX Machine

FRINX Machine is a dockerized deployment of multiple elements. Each one of them has specific responsibilities. FRINX Machine is a solution that enables automation of network elements and services and the retrieval of specific operational data from the network. It does so by introducing user defined workflows in addition network device models based on OpenConfig and vendor models via NETCONF/YANG and CLI commands. FRINX Machine consists of a number of dockerized components that are configured and tested to work together to build a solution. FRINX Machine is composed of the following components:

For installation, please refer to: FRINX Machine repository

Introduction

FRINX Opendaylight (network automation solution)

  • Connects to the devices in network
  • Retrieves and stores configuration state from devices
  • Pushes configuration data to devices
  • Builds diffs between actual and intended config to execute atomic configuration changes
  • Retrieves operational data from devices
  • Manages transactions across one or multiple devices
  • Translates between CLI and private model and standard data models (OpenConfig)
  • Reads and stores private data models from network devices (any YANG model)
  • Provides high availability
  • Provides parallel command execution on devices

Netflix Conductor (workflow engine)

  • Chains atomic tasks into complex workflows
  • Defines, executes and monitors workflows (via REST or UI)

Elasticsearch (inventory and log data)

  • Stores inventory data
  • Stores workflow execution and meta data
  • Stores UniConfig log data

Uniconfig UI (user interface)

  • This is the primary user interface for FRINX Machine
  • Enables users to create, edit and run workflows and monitor tasks
  • Enables user to mount and view device status in UniConfig, read, edit and commit configurations, sync from network and create a manage snapshots
  • View inventory, workflow execution and metadata and UniConfig log files

We chose Netflix’s conductor workflow engine since it has been proven to be highly scalable open-source technology that integrates very well with FRINX Opendaylight. Further information about conductor can be found at:

High Level Architecture

Following diagram outlines main functional components in the FRINX Machine solution:

../../_images/components.png

FRINX Machine repository is available at: https://github.com/FRINXio/FRINX-machine

Frinx-conductor repository is available at: https://github.com/FRINXio/frinx-conductor

Specialized ODL tasks are available at: https://github.com/FRINXio/FRINX-machine/tree/master/microservices/netinfra_utils

Defining a workflow

Workflows are defined using a JSON based domain specific language (DSL) by wiring a set of tasks together. The tasks are either control tasks (fork, conditional etc) or application tasks (e.g. encode a file) that are executed on a remote machine.

FRINX Machine distribution comes in with number of pre-packaged workflows.

Detailed description of workflow and task definitions along with examples can be found at official Netflix Conductor documentation

Operating FRINX Machine

To find out more about how to run the pre-packaged workflows, continue to Use Cases