WIP
Work in progress
Overview
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.
Functions
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
- Metro path provisioner notifies the registered listeners the installation status of metro path. For now, notified events are “installed” and “removed”.
How it works
Architecture
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
- PacketLinkRealizedByOptical
- A representation of relationship between packet link and its underlying optical intents
CeVlanConfig
- VLAN tag configuration
- MetroPathService
- Service interface for MetroPathProvisioner
MetroConnectivityId
Unique ID for MetroConnectivity
MetroPathListener
Listener interface for MetroPathEvent
- MetroPathEvent
- A representation of event related to metro path, such as path is established or withdrawn
AddMetroConnectivityCommand / RemoveMetroConnectivityCommand
Implementation of CLI commands to add/remove metro path
Path setup flow
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
Path removal flow
Receive metro connectivity removal request
Find existing metro connectivity
Remove related optical intents
Get notified all of intents removed
Remove bandwidth allocations
- Notify listeners that path is withdrawn
How to use
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.