This is an archive of the ONOS 1.5 wiki. For the current ONOS wiki, look here.

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

  1. Receive metro connectivity request

  2. Calculate path

    1. Considering available bandwidth

  3. Reserve bandwidth along the path

  4. Find optical cross connect points in the path

  5. Create and install OpticalConnectivityIntent/OpticalCircuitIntent

  6. Get notified all of intents installed

  7. Notify listeners that path is established

Path removal flow

  1. Receive metro connectivity removal request

  2. Find existing metro connectivity

  3. Remove related optical intents

  4. Get notified all of intents removed

  5. Remove bandwidth allocations

  6. 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.

  1. Pull source

    • $ cd ~/onos-app-samples/
  1. Build package

    • $ cd ~/onos-app-samples/ecord/metro
      $ mci
  2. Configure the VLAN assignment

    • $
    • (diagram)

  3. Run ONOS

    • $ ok clean
  4. Install package

    • onos> app activate org.onosproject.ecord.metro
  5. Connect devices

  6. 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.

  7. 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.

  • No labels