OpenFlowMPLS NOX

From OpenFlow Wiki

Jump to: navigation, search


Introduction

As part of the OpenFlow MPLS Ericsson project, the NOX OpenFlow controller has been extended with MPLS support.

At the moment the modification is available for NOX controllers based on the OpenFlow 0.8.9 and 1.0 versions. The modified source code is available in tarballs in the downloads section below.

For general information on the NOX controller, please visit the NOX wiki pages.

Changes

The following changes were done to the baseline NOX controller

Handling of new packets

The controller is now able to handle new MPLS packet types, and to decode MPLS headers.

Handling of Virtual Port statistics

The controller is now capable of handling virtual port statistics; the changes include the new Vport_table_stats_in_event event, and the new SEND_VPORT_TABLE_FEATURES_REQUEST and RECV_VPORT_TABLE_FEATURES_REPLY handshake states and functionality.

Misc. changes

The code has been updated at various places to correctly handle the MPLS-extended OpenFlow base library (see OpenFlowMPLS_Implementation for details).

Sample code

For sample codes of using the extended NOX controller, please refer to the /src/nox/coreapps/switch/switch.cc file in the downloadable tarballs.

The examples include:

  • handling the join of an MPLS-capable switch
  • query the information from it
  • request and process vport table statistics
  • construct vport mod messages and flow mod messages dealing with the MPLS extensions, like:
    • send packets to a vport
    • send a specific MPLS label to controller
    • push label to packets and forward to a given port (as two different actions)

Downloads

OpenFlow 0.8.9

File:Nox 089 mpls.ppt Change the .ppt extension to .tgz after download!

(based on noxrepo.org commit f9d26384abb97130c856e60e6d5bf8ced75d86f3)

OpenFlow 1.0

File:Nox 100 mpls.ppt Change the .ppt extension to .tgz after download!

(based on noxrepo.org commit 8a89db03600345a998792cf773f1dc23ad7ed534)


People

  • Dávid Jocha
  • András Kern