Skip to content
Virtual OLT Hardware Abstraction
Python Go Shell XSLT Makefile C Other
Branch: master
Clone or download
ntoorchi and sauravdas2 1)flow table is improved for OpenOlt device adding more information e.g.
flow_id, flow_category, flow_type, gemport_id, alloc_id, o_pbits, intf_onu_id
2)exit command added

Change-Id: Ia7c8e2ad67455a78d99b1c439965c6c58df3b59e
Latest commit 9cb00a7 Jul 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
alarm-generator SEBA-345: Upgrade to current gRPC and Protobuf libs Nov 12, 2018
ansible Fixes to pass license check Jul 8, 2018
cli 1)flow table is improved for OpenOlt device adding more information e.g. Nov 5, 2019
common VOL-1403: Apr 8, 2019
compose VOL-1343 Disable TLS in ofagent compose and onos Docker build Jan 22, 2019
consul_config VOL-394: Optimize Consul cluster configuration to better support HA Aug 24, 2017
dashd Fixes to pass license check Jul 8, 2018
docker
docs [VOL-1084] Fixing voltha documentation linting Aug 14, 2018
envoy Fix envoy go build to use golang 1.10 May 5, 2019
experiments Fixes to pass license check Jul 8, 2018
fluentd_config VOL-595 - container image name consistency and general cleanup Jan 19, 2018
install Fixes to pass license check Jul 8, 2018
k8s VOL-1423: Single-node k8s environment does not support EAPOL testing … Jan 22, 2019
kafka Fixes to pass license check Jul 8, 2018
netconf SEBA-345: Upgrade to current gRPC and Protobuf libs Nov 12, 2018
netopeer Fixes to pass license check Jul 8, 2018
nginx_config Fixes to pass license check Jul 8, 2018
obsolete
ofagent Fixes an issue where flow_stats reply in ofagent fails. Jun 13, 2019
pki Makefile to generate new SSL certificates Jul 11, 2018
ponsim
portainer Fixes to pass license check Jul 8, 2018
reg_config Preliminary Commit to secure communication between Registrator and Co… Jun 6, 2017
scripts Fixes to pass license check Jul 8, 2018
shovel Fixes to pass license check Jul 8, 2018
tests marking dhcp address assignment test in bbsim noncritical until fixed Aug 21, 2019
unum Fixes to pass license check Jul 8, 2018
vagrant-base [6683] Removing unnecessary files and update gitignore Oct 27, 2017
voltha 1)flow table is improved for OpenOlt device adding more information e.g. Nov 5, 2019
.dockerignore VOL-1361 - OpenOLT driver agent build artifacts copied inot voltha co… Dec 18, 2018
.gitignore ADTRAN Adapter Tests Feb 1, 2019
.gitreview Revert "publish indications on kafka" Mar 14, 2019
BUILD.md Adding protoc dep to voltha build req (at least for mac) Jul 2, 2018
BuildingVolthaUsingVagrantOnKVM.md VOL-234. This update fixes issues seen with unresolved symbolic links Jun 19, 2017
DOCKER_BUILD.md VOL-630 - update documentation with default creds and doc ssh key sup… Feb 20, 2018
GettingStartedLinux.md https://jira.opencord.org/browse/VOL-48 Jun 8, 2017
Jenkinsfile [VOL-634] Remove fluentd logging reference from voltha services Mar 5, 2018
LICENSE.txt Updating Copyright line to Open Networking Foundation Aug 4, 2017
Makefile Revert "Remove envoy in make build target" May 6, 2019
README.md VOL-1424: Makefile changes to add adapter unit tests Jan 28, 2019
TODO.md CLI to aid integration and testing Dec 23, 2016
Vagrantfile VOL-617 - ability to build without VM Feb 6, 2018
env.sh Fixes to pass license check Jul 8, 2018
requirements.txt Use released versions of afkak and python-consul Apr 18, 2019
settings.vagrant.nightly-docker.yaml Fixes to pass license check Jul 8, 2018
settings.vagrant.nightly.yaml Fixes to pass license check Jul 8, 2018
settings.vagrant.yaml Fixes to pass license check Jul 8, 2018
setup.mk Tibit EOAM implementation. Sep 19, 2016
setup.py Starting version 2.0.0-dev Jul 11, 2018
tmp_integration.md CLI to aid integration and testing Dec 23, 2016

README.md

VOLTHA

What is Voltha?

Voltha aims to provide a layer of abstraction on top of legacy and next generation access network equipment for the purpose of control and management. Its initial focus is on PON (GPON, EPON, NG PON 2), but it aims to go beyond to eventually cover other access technologies (xDSL, Docsis, G.FAST, dedicated Ethernet, fixed wireless).

Key concepts of Voltha:

  • Network as a Switch: It makes a set of connected access network devices to look like a(n abstract) programmable flow device, a L2/L3/L4 switch. Examples:
    • PON as a Switch
    • PON + access backhaul as a Switch
    • xDSL service as a Switch
  • Evolution to virtualization: it can work with a variety of (access) network technologies and devices, including legacy, fully virtualized (in the sense of separation of hardware and software), and in between. Voltha can run on a decice, on general purpose servers in the central office, or in data centers.
  • Unified OAM abstraction: it provides unified, vendor- and technology agnostic handling of device management tasks, such as service lifecycle, device lifecycle (including discovery, upgrade), system monitoring, alarms, troubleshooting, security, etc.
  • Cloud/DevOps bridge to modernization: it does all above while also treating the abstracted network functions as software services manageable much like other software components in the cloud, i.e., containers.

Why Voltha?

Control and management in the access network space is a mess. Each access technology brings its own bag of protocols, and on top of that vendors have their own interpretation/extension of the same standards. Compounding the problem is that these vendor- and technology specific differences ooze way up into the centralized OSS systems of the service provider, creating a lot of inefficiencies.

Ideally, all vendor equipment for the same access technology should provide an identical interface for control and management. Moreover, there shall be much higher synergies across technologies. While we wait for vendors to unite, Voltha provides an increment to that direction, by confining the differences to the locality of access and hiding them from the upper layers of the OSS stack.

How can you work with Voltha?

While we are still at the early phase of development, you can check out the BUILD.md file to see how you can build it, run it, test it, etc.

How can you help?

Contributions, small and large, are welcome. Minor contributions and bug fixes are always welcome in form of pull requests. For larger work, the best is to check in with the existing developers to see where help is most needed and to make sure your solution is compatible with the general philosophy of Voltha.

Contributing Unit Tests

To begin, make sure to have a development environement installed according to the OpenCord WIKI. Next, In a shell environment

source env.sh;             # Source the environment Settings and create a virtual environment
make utest-with-coverage;  # Execute the Unit Test with coverage reporting

Unit-testing the Core

New unit tests for the core can be written in the nosetest framework and can be found under /tests/utest/

Unit-testing an Adapter

Each adapter's unit tests are discovered by the presence of a test.mk submake file underneath the adapter's directory. for example)

# voltha/adapters/my_new_adapter/test.mk

.PHONY test
test:
   @echo "Testing my amazing new adapter"
   @./my_test_harness
   

Voltha's test framework will execute the FIRST Target in the submake file as the unit test function. It may include as many dependencies as needed, such as using a different python framework for testing (pytest, unittest, tox) or even alternate languages (go, rust, php).

In order for you adapter's test-coverage to be reported, make sure that your test_harness creates a coverage report in a junit xml format. Most test harnesses can easily produce this report format. The Jenkins Job will pick up your coverage report file if named appropriately junit-report.xml according to the Jenkins configuration.

You can’t perform that action at this time.