OpenDaylight (ODL) is an open source application development and delivery platform (also referred to in some circles as a controller). Openflow is a protocol for programming flow tables on switches. PCE-Openflow (PCE-OF) is a new ODL application that applies policy-based path computation and programming thus providing a level of "smart" traffic engineering to openflow networks.
- Jan Medved
- Daniel Malachovsky
- Tyler Levine
- Alexei Zverev
- Zhaoxing (Andrew) Li
- Martin Lakatos
- Daniel Kuzma
- Stanislav Jamrich
- Chris Metz
- Andrej Vanko
- Giorgi Guliashvili
Note: This release provides the PCE-OF GUI source code as a reference app. Subsequent releases over the next few months include ODL + network instance in dcloud so that interested users can run app. The entire package will soon be released to the open source community.
SDN, Opendaylight, Open Source, NeXt, Openflow, Path Computation Element, PCE, Policy, RESTCONF, YANG, Topology, BGP
November 2015
Complete
Early incarnations of software defined networking (SDN) involved control and data plane separation. SDN has evolved where the control plane can be expressed by applications using APIs to talk to a controller - the controller then talking to one or more network elements using different protocols. This model enables applications to play a major role in network management and operations.
Openflow is a protocol used between the controller and switches to program per-switch flow tables. The end result(s) are one or more inter switch per-flow paths connecting hosts and/or sites to one another. In general openflow paths are computed and programmed by human operators employing a simple user interface (UI) communicating with ODL configured as an openflow controller. In this mode of operation path selection and programming is left to the operator's discretion. Other considerations (or policies), for example maximum allowed link utilization or automatic fast reroute, that could impact data transer performance ARE NOT factored in. Clearly this could lead to less than ideal resource utilization and degraded performance. A requirement to consider such policies in path selection and deployment is required.
PCE-OF is a new and novel ODL application incorporating policy-based path computation and programming across openflow networks. Policies are configured and taken into account as paths are computed and programmed into the network.
Figure 1 belows depicts the general architecture of the PCE-OF solution.
Figure 1. PCE-OF Architecture
The PCE-OF solution is composed of ODL, PCE-OF ODL plug-ins and a UI (aka GUI). ODL uses its standard openflow southbound plug-ins to program flows tables and extract stats from openflow switches. The standard ODL software components including MD-SAL and RESTCONF are present. The PCE-OF plug-ins implemented in ODL support:
- Policy configuration and operations. Policy examples include path-specific constraints such as node/link whitelisting, maximum-path-cost and active/backup
- Path computation between source/destination (IP addresses, ports, BGP prefixes)based on Configured Policies
- BGP prefix collection and transport into PCE-OF path computation plug-in
- Stats/events collection
Policy-based paths are built across the openflow network to connect hosts(s), servers, sites or, even BGP routers that provide reachability to external networks. Another important scaling feature if supported on the switches, is mapping of individual flows into a single path-specific flow thus consuming less TCAM overhead on the switch.
The GUI provides the user interface into the system. It includes a dynamic topology view allowing for easy interaction with application operations (e.g. policy configuration, deployed paths, etc.). The GUI will be discussed below. Note that the PCE-OF solution is built entirely using open source components including ODL, AngularJS, NodeJS and NeXt among others.
Traffic engineering functions have been supported across IP/MPLS networks for many years. PCE-OF brings traffic engineering to openflow networks.
The PCE-OF GUI provides the operator with a web-based user interface into the system. The openflow network topology is displayed, policies configured and deployed and specific paths (determined by operator defined policies) are visually overlaid. In addition flow statistics, BGP routes and address mapping can be easily accessed through the GUI.
The GUI is designed and implemented using AngularJS, a commonly used model-view-controller (MVC) UI framework. A simple look/feel is supported using the Angular Material and NeXt libraries. Internally the system defines models and services applied against those models; controllers for manipulating data for viewing; views (e.g. html page) displayed in a browser and bound to controllers. This MVC design pattern provides a modularized development and can be re-used across multiple applications
Figure 2 belows shows the PCE-OF GUI "landing page".
Figure 2. PCE-OF GUI
There is a 10min video of PCE-Openflow in action located here. What follows is a brief description of the important PCE-OF functions presented in the GUI.
Renders a view of the OF network topology composed of nodes (OF switches and any attached hosts, switches or routers) and connections. The topology view reacts to network operations and events and provides interfactions with other features. In the example above switches are labeled FB (forwarding boxes).
Information on switches, routers and hosts including status, list of ports and connected links.
Information on connections between nodes. A connection could be a bundle composed of one or more physical links. Selecting a connection from the panel will highlight it on the topology and vice-versa.
Two options here: config and operational. Config enables the operator to add new polices or modified existing policies. After the policies are configured they are deployed into the network and become operational.
Operational shows policies deployed in the network. Paths defined and deployed based on policy can be and selected and then overlaid onto the topology view.
Shows OF switch properties and stats counters. Also shows details on flows table entries inside an OF switch.
Shows table of the discovered node's IP and MAC addresses.
Prefixes, next_hops and VRFs learned from attached BGP routers.
Several sub-functions including:
-
Registrations. enables link stats gathering, events to be retrieved once certain parameters exceed a threshold
-
Events. List of events based on registration
-
Statistics. Link stats based on registration, display individual or aggregate utilization in % or bits per second (bps). Flow stats for individual, table aggregates for installed flows. Per-switch port stats includding transferred data, packets, errors, etc. And finally openflow stats for queue, meter and groups.
Parameters for the controller
- Policy-based Traffic Engineering for Openflow Networks
- Developed for ODL
- Built using open software including Java, NeXt and AngularJS among others
- Simple WEB browser GUI for topology visuzation and interactive policy management/programming
- Detailed stats collection
- Flexible policy configuration including constraint-based path computation and programming based source/destion IP address, ports and BGP prefixes
Note: this package provides the code for the GUI only at this time.
For the installation process you will need to install the following CLI utilities: Git, Bower, npm.
To download the code, use GitHub's web-interface at: https://github.com/CiscoDevNet/pceof-gui,
or download using Git:
git clone https://github.com/CiscoDevNet/pceof-gui.git
When this is done, hack the code!