Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

(warning) Under Construction

Welcome to the Packet-Optical ONOS tutorial!!! 

In this tutorial, you’ll complete a set of exercises designed to explain the main concepts of the Packet-Optical use case of ONOS. We hope that with this tutorial, you’ll be able to create, configure, and start multi-layer networks on your environment, which can potentially represent a wide area network environment for your application performance studies.

To get you started quickly, the converged packet-optical VM is preconfigured with the needed software environments including ONOS, linc-OE, Mininet, Jave-8, Erlang, linc-oe config generator, etc.

You should be able to Just run this  VM in VirtualBox using the instructions in the next section.

Table of Contents
outlinetrue

Introduction

Service Provider Networks are complex and multi-layer in nature. Without converged packet Optical SDN capability, provisioning and adding bandwidth requires order of days, if not months. Since packet and optical networks are managed independently, each one of them has to be over provisioned to deal with traffic anomalies and failures. This leads to lack of service agility and is a significant source of CAPEX and OPEX overhead for the network operator.

This Tutorial demonstrates how ONOS can help address the challenges of managing multilayer service provider networks, by providing a sample demo on how converged packet-optical networks can be controlled by ONOS. We will introduce an emulated environment for converged control of packet and optical networks for wide area network, and show how it will truly enable service providers to use much more efficient traffic management practices.

Additionally, we will show ONOS’s capabilities as an enabler for cross-layer optimization, and applications on the northbound to control the forwarding planes at both the packet and optical layers. This environment can be used by the architects and developers to demonstrate feasibility of applications such as a multilayer PCE (MLPCE).  Through applications such as MLPCE  a much more optimized network solutions can be achieved in near real time. 

With Converged Control Plane, we hope to reduce cycle time to add capacity perhaps in minutes instead of days to a month. ONOS has the ability to add capacity based on traffic demand in real- or near real-time. In addition, when failure happens, instead of using the packet layer resources for recovery, ONOS can reconfigure the optical transport layer for best alternative re-route. With this approach, we are reducing the over-provisioning of resources, since transport layer is cheapest infrastructure to move bits. Finally, with enhanced converged control plane, we could potentially enable new services. Examples include network graph observability and real-time injection of network policies.

Prerequisite

You will need a computer with at least 8GB of RAM such that you can dedicate 4 Gig to your packet-optical VM and at least 5GB of free hard disk space. A faster processor or solid-state drive will speed up the virtual machine boot time, and a larger screen will help to manage multiple terminal windows.

The computer can run Windows, Mac OS X, or Linux – all work fine with VirtualBox, the only software requirement.

To install VirtualBox, you will need administrative access to the machine.

The tutorial instructions requires some prior knowledge of SDN in general, and OpenFlow and Mininet in particular. So please first complete the OpenFlow tutorial and the Mininet walkthrough

Before you try Packet-Optical use case, we highly recommend to complete ONOS tutorial too.

OOPs? Found a bug? Questions?

Email us (onos-discuss@onosproject.org) if you’re stuck, think you’ve found a bug, or just want to send some feedback.

Please have a look at the guidelines to learn how to efficiently submit a bug report.

Setup Your Environment

Install required software

You will need to acquire two files: a VirtualBox installer and the Tutorial VM (Link TBD by Marc) .

After you have downloaded VirtualBox, install it, then go to the next section to verify that the VM is working on your system.

Import pre-configured Virtual Machine

Start up VirtualBox, then select Machine>New, give it a name, and select Linux as type and Ubuntu (64 bit) as version. Press Continue.

Next, configure the VM with 2 GB (2048 MB) of memory. ( If you are going to run the bigger topology, Configure the VM with 4 GM ( 4096) of memory, Press Continue.

Select ‘Use an existing virtual hard drive file’, and point it to the vmdk file you downloaded Select "Create".  Note you can also import ".OVA" instead. 

Now you can start the VM by double clicking it; once it starts you can login with user "sdn" and password "rocks".

After some time you should see the desktop view for Ubuntu. You can open a terminal by double clicking Terminal.

This VM Contains the following subsystems / files :

1- ONOS;  Alternatively "ONOS from Scratch

2-Mininet; Alternatively "Mininet

3-Linc-OE, "Linc-OE GitHub"

4- Linc-OE config Generator ; "Config" which generates Sys.config representing Optical Layer Topology 

5- Mininet Python Scripts ; which starts mininet, and linc-oe" OpticalTest.py",  "opticalTestBig.py" 

6- Erlang ;  

                         wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb

                         sudo dpkg -i erlang-solutions_1.0_all.deb

                         rm erlang-solutions_1.0_all.deb

                         sudo apt-get update

                         sudo apt-get install erlang rebar"How to download Erlang" 

7-Java-8; Which could also be downloaded directly from "ONOS from Scratch"

Important Command Prompt

Info
titleTerminal

$

Symbol "$" means linux terminal.

If you've already gone through the ONOS tutorial, you'll already have the ONOS tutorial VM available. If not, check out the Introduction section of the ONOS tutorial to get the VM set up. However, don't log in as tutorial1 - we have a different username for this tutorial.

Email us (onos-discuss@onosproject.org) if you’re stuck, think you’ve found a bug, or just want to send some feedback.

Table of Contents

Starting the tutorial

When you start the VM, you'll be presented with a login screen. If you're already logged in to another tutorial, please log out by clicking the bottom-left icon, clicking "Logout", then click "Logout" again.

Each tutorial in the VM is presented as a different user. Log in to the optical tutorial user with the following credentials:

Username: optical
Password: optical

You'll be deposited on a desktop with a bunch of icons that will be used for the tutorial. Before we get started, double-click on the "Reset" icon. This will pop up a terminal and reset ONOS to make sure there is no state left over from any other tutorials.

Important Command Prompts

Info
titleTerminal

$

Symbol "$" means linux terminal.

Infoinfo
titleMininet

mininet>

"mininet>" means mininet CLI command prompt

Info
titleLinc-OE

(linc@mininet-vm)1>

"(linc@mininet-vm)1>" means Linc-OE CLI command prompt.1>" means LINC-OE CLI command prompt.

Resetting

We have provided a simple mechanism which allows you to restart the tutorial from scratch. Simply, click on the 'Reset' icon on your desktop and this will reset ONOS to its initial state. It'll take a few seconds for ONOS to restart and during that time you may not be able to launch your ONOS cli. 

Packet-Optical Topology

...

 (via Python-Script)

Go to mininet/examples:

Info
iconfalse

$ cd ~/onos/tools/test/topos

...

Note that there is no physical links between the packet nodes.  All All traffic sourced at the data centers are routed through the optical plane. 

...

The tap interfaces are used to interconnect the optical switches and packet nodes. We are utilizing Linux tap interfaces for interconnecting the optical switches and packet switches. 

Start ONOS

Double-click the 'Reset' icon on the optical switches and packet switches. desktop to start ONOS up with the correct configuration to run packet-optical.

Wait for some time to let ONOS load all the features and modules (about a minute or so).

Start Mininet and Linc-oe

The recommended way to setup your packet-optical  environment is to run mininet sricpt first and then ONOS.

To start Linc-oe and Mininet go to:

...

Info
iconfalse

$ cd ~/onos/tools/test/topos

$ sudo -E python opticalTest.py 10.0.3.11

This will create the topology shown above in the figure and ask you to 'Press any key to push Topology.json to onos...'

Before you press any key you need to run ONOS. To run ONOS

Just double click on ONOS (terminal icon) on Desktop,

or run following in separate terminal:

Info
iconfalse

$ sudo -u tutorial1 /opt/onos/apache-karaf-3.0.2/bin/karaf clean

push link and device information to ONOS, creating the topology shown above in the figure.

To verify, once the Mininet prompt appears, double-click the 'ONOS' icon to open the ONOS CLI. Now run the 'summary' command and check that ONOS had 16 devices attached.

Info

onos> summary

node=10.0.3.11, version=1.1.1.optical~2015/04/02@15:06

nodes=1, devices=16, links=0, hosts=6, SCC(s)=16, flows=18, intents=0

 This will start ONOS. Wait for some time to let ONOS load all the features and modules. Now you can Press any key to push Topology.json to ONOS.

Demo 1: Establishing connection between hosts/DataCenters using ONOS-GUI.

...

or write following in your browser,

Info
iconfalse

localhost10.0.3.11:8181/onos/ui

Note: Do not you use $ onos-gui to get ONOS GUI.

...

Now if you send traffic between these host you will see traffic is going through successfully. Note in this tutorial script we have only create one tap interface per packet-optical switch. Which means we cannot setup more then one connection per switch. If you want more then one connection per switch you need to add tap interface accordingly in "opticalTest.py".

 

Demo 2: Establishing connection between hosts/DataCenters using ONOS-CLI.

...

There is an other way to send Host-to-Host Intent to ONOS with specified bandwidth using BandwidthCalendaring app which is explained in next section. 

Demo 3: Establishing connection between hosts/DataCenters using Calendering app.

TBD

...

section. 

Demo 3: Link recovery from optical layer failures

In this section we will demonstrate how failure in the optical layer can be recovered by ONOS in a pinch without disturbing the traffic flow.

...

In the same file there is a section for optical_links:_links:

Info
iconfalse

     {optical_links,

          [{{2,20},{4,30}},

           {{2,30},{5,50}},

           {{3,30},{4,50}},

           {{4,20},{1,50}},

           {{5,20},{1,20}},

           {{6,20},{3,50}},

           {{6,50},{8,50}},

           {{7,40},{2,50

Info
iconfalse

     {optical_links,

          [{{2,20},{4,30}},

           {{27,30},{53,5040}},

           {{38,3020},{43,5020}},

           {{49,20},{17,50}},

           {{59,2050},{110,2030}},

           {{10,50},{6,30}},

           {{10,20},{37,5020}}]},

           

Here, {{

...

7,

...

40},{

...

2,50}} means switch_Id 7 port 40 is connected to switch_Id 2 port 50. You need to find the link port then you want to bring down. In my case its switch 7 port 40.

We know that it's a hectic a task,

...

           {{7,40},{2,50}},

           {{7,30},{3,40}},

           {{8,20},{3,20}},

           {{9,20},{7,50}},

           {{9,50},{10,30}},

           {{10,50},{6,30}},

           {{10,20},{7,20}}]},

 

and we are in the progress of making it easier.

Once you know the switch and port, run the following command in the Linc-oe console to bring that port down.

Info
iconfalse

(linc@mininet-vm)4> linc:port_down(7,40).

It will return "ok".

You will see that ONOS will reroute the the traffic as shown in the figure.

Image Added

Playing with a bigger topology.

We have also provided a Python script with bigger topology, "opticalTestBig.py"

We highly encourage you to run that topology and play with it and give us your feedback.

Resetting and getting out of trouble.

If you want to reset Mininet or ONOS, or just want to get out of trouble, do the following.

For resetting Mininet and linc-oe just double click on 'Reset' (terminal icon) on Desktop or type following in mininet console,

Info
iconfalse

mininet> exit

It will close the Mininet and LINC-OE. Now you can follow the same procedure describe above to start mininet and linc-oe again.

To reset ONOS, use the Reset icon on the desktop. Note this will clean up Mininet as well, so it's best to exit Mininet before you do this to prevent it hanging

Here, {{7,40},{2,50}} means switch_Id 7 port 40 is connected to switch_Id 2 port 50. You need to find the link port then you want to bring down. In my case its switch 7 port 40.

We know that it's a hectic a task, and we are in the progress of making it easier.

Once you know the switch and port, run the following command in the Linc-oe console to bring that port down.

Info
iconfalse

(linc@mininet-vm)4> linc:port_down(7,40).

It will return "ok".

You will see that ONOS will reroute the the traffic as shown in the figure.

Image Removed

Demo 5: Link recovery from packet layer failures

TBD

 

Playing with bigger topology.

We have also provide python script with bigger topology, "opticalTestBig.py"

We highly encourage you to run that topology and play with it and give us you feed back.