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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for evc_manager-1.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b2ca2b43032f387bd24d6b945f02161ddaf6f7b28cd848efa91624bffb92e65 |
|
MD5 | 7b3efcd3990385cf86126d6bd97e57d4 |
|
BLAKE2b-256 | efa5a2e1449bfc268723042d02b92eff76b3558a97ad7761af896d912fbbd8ec |