Work in progress |
This page describes the details of optical path provisioner: functions of the module, internal structure, and how to use the module. If you only need to try the module, read “How to use” section first.
Main functions of optical path provisioner are listed below.
Installation of optical connectivity
Based on the received request, optical path provisioner calculates optical path between given two ports, and sets up the connectivity along the calculated path.
Connectivity request consists from src port, dst port, required bandwidth and latency.
For each optical path, provisioner assigns a unique ID (optical connectivity ID).
Removal of optical path
Optical path provisioner removes an installed optical path.
Notification of installation status
Package of optical path provisioner is org.onosproject.newoptical
. Following shows the file composition of optical path provisioner.
apps └── newoptical ├── OpticalPathProvisioner.java ├── OpticalConnectivity.java ├── PacketLinkRealizedByOptical.java ├── api │ ├── OpticalPathService.java │ ├── OpticalConnectivityId.java │ ├── OpticalPathListener.java │ └── OpticalPathEvent.java └── cli ├── AddOpticalConnectivityCommand.java └── RemoveOpticalConnectivityCommand.java |
OpticalPathProvisioner
Main module that handles install/remove request of optical path
OpticalConnectivity
A representation of optical path established by OpticalPathProvisioner
OpticalConnectivityId
Unique ID for OpticalConnectivity
OpticalPathListener
Listener interface for OpticalPathEvent
AddOpticalConnectivityCommand / RemoveOpticalConnectivityCommand
Implementation of CLI commands to add/remove optical path
Receive optical connectivity request
Calculate path
Considering available bandwidth
Reserve bandwidth along the path
Find optical cross connect points in the path
Create and install OpticalConnectivityIntent/OpticalCircuitIntent
Get notified all of intents installed
Notify listeners that path is established
Receive optical connectivity removal request
Find existing optical connectivity
Remove related optical intents
Get notified all of intents removed
Remove bandwidth allocations
Before proceeding to the following steps, see “wiki: Installing and Running ONOS” and “” for make it ready to run ONOS.
$ cd ~/onos/apps/newoptical $ mci |
Run ONOS
$ op $ ok clean |
Install bundle
onos> app activate org.onosproject.newoptical |
Connect devices
Download https://raw.githubusercontent.com/akoshibe/ecord-topos/master/ectest.py and copy it to ~/onos/tools/test/topos/
$ sudo -E python ~/onos/tools/test/topos/ectest.py 127.0.0.1 127.0.0.1 127.0.0.1 |
If you’re running ONOS on other host, replace 127.0.0.1 with the host’s IP address.
GUI
Open http://127.0.0.1:8181/onos/ui/ in web browser.
Enter karaf/karaf for username/password.
See the topology like sample image below is displayed.
(image)
See “wiki: The ONOS Web GUI” for details.
CUI
To add connectivity between port of:000000000000000b/ and of:0000000000000015/1, use CLI command as following.
onos> add-optical-connectivity of:000000000000000b/2 of:0000000000000015/1 1000000 1000 |
This requests connectivity from of:000000000000000b/2 to of:0000000000000015/1 with required bandwidth of 1 Mbps (= 1000000 bps), and required latency of 1000ns.
To remove installed connectivity with ID 1, use CLI command as following.
onos> remove-optical-connectivity 1 |