Skip to main content

A tool to create Ethernet Virtual Circuit in SDN environments

Project description

AmLight Ethernet Virtual Circuit (EVC) Manager

The AmLight EVC Manager is a tool to help SDN operators to manage multiple Ethernet Virtual Circuits in a batch operation, such as creating/deleting/changing multiple EVCs at a time. It was created to help AmLight network engineers in the daily operation of the AmLight SDN network, which currently has more than one thousands flows and more than ten OpenFlow switches in North and South America.

The AmLight EVC_Manager requires Python 3.6.

Features

The EVC Manager was created with the following major goals:

  • Support multiple backends, such as OESS and Kytos E-Line.
  • Support exporting all circuits to YAML or JSON files
  • Support creating/changing/deleting multiple circuits via YAML files
  • Support moving circuits out a specific link (or NNI)
  • Support forcing circuit reprovisioning
  • Support changing circuits' paths
  • Support exporting monitoring data using Zabbix LLD format for integration with Zabbix
  • Support multiple queries:
    • Get VLANs in use in a specific UNI or NNI
    • Get circuits using a specific UNI or NNI
    • Get circuit utilization
    • Get circuit with under-provisioned paths
    • Get circuits using backup paths
    • Get list of devices and links
    • Compare and report two EVC dumps

Current Version

By September 2018, the current EVC Manager is 0.1. The following major features are supported:

  • Support for OESS backend
  • Support exporting all circuits to YAML or JSON files
  • Support creating/changing/deleting multiple circuits via YAML files

Roadmap

Version 0.2 is scheduled for December 2018 with the following features:

  • Support for EVC creation using VLAN ranges
  • Support for Kytos MEF E-Line backend
  • Support moving EVC out a specific link (or NNI)
  • Support forcing EVC reprovisioning
  • Support changing EVCs' paths
  • Support multiple queries:
    • Get EVC using a specific UNI or NNI
    • Get EVC using backup paths

Version 0.3 is scheduled for March 2019 with the following features:

  • Support exporting monitoring data using Zabbix LLD format for integration with Zabbix
  • Support multiple queries:
    • Get VLANs in use in a specific UNI or NNI
    • Get circuit utilization
    • Get circuit with under-provisioned paths
    • Get list of devices and links

Using the evc manager

The EVC Manager has the following command line options:

usage: python3.6 evc_manager.py [-h] (-L | -A | -D | -M MOVE_EVC) [-f SOURCE_FILE]
                              [-F DESTINATION_FILE] -u USER [-t TENANT]
                              [-p PASSWORD | -P] (-O OESS_URL | -K KYTOS_URL) [-V]
                              [-v {info,warning,debug}] [-y | -j | -z]

optional arguments:
  -h, --help            show this help message and exit
  -L, --list-evc        List all EVCs and output them using YAML
  -A, --add-evc         Add/Update EVCs provided in the YAML file
  -R, --add-range-evcs  Add/Update EVCs provided in the YAML file with
                        VLAN ranges instead of individual EVCs
  -D, --delete-evc      Delete all EVCs provided in the YAML file
  -M MOVE_EVC, --move-evc MOVE_EVC
                        Move one or all EVCs out the NNI provided.
  -f SOURCE_FILE, --source-file SOURCE_FILE
                        Source YAML file used by options -A or -D
  -F DESTINATION_FILE, --destination-file DESTINATION_FILE
                        Destination YAML file used by options -L
  -p PASSWORD, --password PASSWORD
                        Provide pass for authentication
  -P, --prompt_password
                        Prompt pass for authentication
  -O OESS_URL, --oess-url OESS_URL
                        Use OESS backend. Provide OESS's URL
  -K KYTOS_URL, --kytos-url KYTOS_URL
                        Use Kytos E-Line backend's URL.
  -V, --version         show program's version number and exit
  -v {info,warning,debug}, --verbose {info,warning,debug}
                        Set Verbose Level (info | warning | debug)
  -y, --to-yaml         Print using YAML.
  -j, --to-json         Print using JSON.
  -z, --to_zabbix       Converts output to Zabbix LLD format

authentication:
  -u USER, --user USER  Backend user for authentication
  -t TENANT, --tenant TENANT
                        Backend user group for authentication

Attention: Avoid using option --password with admin accounts. Your password might be stored in your Bash history!!

EVC data modeling

To help modeling EVCs, the following data model was created:

version: 1.0
name: Circuit Name
unis: List of User-to-Network Interfaces
  - device: network device's name
    interface_name: network device's interface_name
    interface_description: network device's interface_description
    mac_addresses: list of MAC addresses connected to the network interface
      -
    tag: interface TAG type
      type: Type could be MPLS or VLAN
      value: VLAN ID or MPLS tag or [start, end] for VLAN ranges.
metrics: Circuit required metrics
  min_bw: minimum bandwidth
  max_delay: maximum delay acceptable in milliseconds
  max_hops: max number of hops
  avoid_shared: if circuit should avoid shared links
provisioning_time: when the circuit should be created
decommissioning_time: when the circuit should be terminated
requested_paths: list of paths, in a priority list. 'Any' if no physical path is required.
tenant: group name
priority: circuit priority
external_id: any external ID if needed
monitoring: monitoring requirements
  dataplane:
    trace: if data plane path tracing is required
      active: True or False
      interval: interval between tests
  controlplane:
    trace: if control plane path tracing is enough
      active: True or False
      interval: interval between tests
notification: notification requirements
  slack_channel:
    - workgroup1
      channel1
    - workgroup2
      channel2
  emails:
    - user1@email
    - user2@email
current_config: Current configuration
  backend: backend or technology being used
  current_path: # list of links being used
  is_backup: is it using a backup path?
  is_optimized: is it using under-provisioned links? (not enough BW, delay higher that required, etc.)
  to_provisioned:
  is_expired:
  is_up:
  is_active: True if between provisioning time and decommissioning time

Data models are provided on folder libs.models.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evc_manager-1.1.2.tar.gz (33.4 kB view hashes)

Uploaded Source

Built Distribution

evc_manager-1.1.2-py3-none-any.whl (51.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page