Work in progress |
This page describes the details of metro 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 metro path provisioner are listed below.
Installation of metro connectivity
Based on the received request, metro 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 metro path, metro path provisioner assigns a unique ID (metro connectivity ID).
[Temporary function for ONS2016] Metro path provisioner assign a VLAN ID for a calculated metro path so that the caller can use the VLAN ID to specify the egress port in central office (*link to details)
Removal of metro path
Metro path provisioner removes an installed metro path.
Notification of installation status
Package of metro path provisioner is org.onosproject.ecord.metro
. Following shows the file composition of metro path provisioner.
ecord └── metro ├── MetroPathProvisioner.java ├── MetroConnectivity.java ├── PacketLinkRealizedByOptical.java ├── CeVlanConfig.java ├── api │ ├── MetroPathService.java │ ├── MetroConnectivityId.java │ ├── MetroPathListener.java │ └── MetroPathEvent.java └── cli ├── AddMetroConnectivityCommand.java └── RemoveMetroConnectivityCommand.java |
MetroPathProvisioner
Main module that handles install/remove request of metro path
MetroConnectivity
A representation of metro path established by MetroPathProvisioner
CeVlanConfig
MetroConnectivityId
Unique ID for MetroConnectivity
MetroPathListener
Listener interface for MetroPathEvent
AddMetroConnectivityCommand / RemoveMetroConnectivityCommand
Implementation of CLI commands to add/remove metro path
Receive metro 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 metro connectivity removal request
Find existing metro 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.
Pull source
$ cd ~/onos-app-samples/ |
Build package
$ cd ~/onos-app-samples/ecord/metro $ mci |
Configure the VLAN assignment
$ |
(diagram)
Run ONOS
$ ok clean |
Install package
onos> app activate org.onosproject.ecord.metro |
Connect devices
Download https://github.com/akoshibe/ecord-topos/blob/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
onos> add-metro-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.