Confidential computer software. Valid license from HP required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial
Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under
vendor's standard commercial license.
The information contained herein is subject to change without notice. The only warranties for HP products and services are set forth in the express
warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. HP shall
not be liable for technical or editorial errors or omissions contained herein.
The HP VAN SDN Controller license text can be found in /opt/sdn/legal/EULA.pdf. The HP VAN SDN Controller incorporates materials from
several Open Source software projects. Therefore, the use of these materials by the HP VAN SDN Controller is governed by different Open Source
licenses. Refer to /opt/sdn/legal/HP-SDN-CONTROLLER-OPENSOURCE-LIST.pdf for a complete list of the materials used.
Acknowledgments
UNIX is a registered trademark of The Open Group.
Java and Oracle are registered trademarks of Oracle and/or its affiliates.
OpenFlow is a trademark of the Open Networking Foundation. Open Source is a trademark of the Open Source Initiative. Linux is a trademark of
Linus Torvalds. Ubuntu is a trademark of Canonical Group Limited.
Warranty
For the software end user license agreement and the hardware limited warranty information for HP Networking products, visit http://www.hp.com/
networking/support .
Open Source Software
For information on licenses for the open source software used by the HP VAN SDN Controller, see the HP VAN SDN Controller Open Source and
Third-Party Software License Agreements.
For information on acquiring the open source code for the HP VAN SDN Controller, send an email to HPN-Open-Source-Query@lists.hp.com.
This document describes the configuration and management of the HP VAN Controller in standalone
and team modes.
The HP VAN SDN Controller is a Java-based OpenFlow controller enabling SDN solutions such
as network controllers for the data center, public cloud, private cloud, and campus edge networks.
This includes providing an open platform for developing experimental and special-purpose network
control protocols using a built-in OpenFlow controller.
The HP VAN SDN Controller includes an SDK providing the tools needed to develop applications
to run on the Controller. The SDK includes sample source code, API specifications, and the HPVAN SDN Controller Programming Guide. See the programming guide for SDK information.
The following publications are provided with the HP VAN SDN Controller:
•HP VAN SDN Controller Release Notes
•HP VAN SDN Controller Installation Guide
•HP VAN SDN Controller Administrator Guide
•HP VAN SDN Controller and Applications Support Matrix
•HP VAN SDN Controller Programming Guide
•HP VAN SDN Controller REST API Guide
•HP VAN SDN Controller Open Source and Third-Party Software License Agreements
•HP VAN SDN Controller and Applications Support Matrix
The HP VAN SDN Controller is a platform for developing SDN applications and deploying SDN
applications. The controller can be characterized as providing a Base Control Platform, a Distributed
Platform for High-Availability and Scalability, and an Extensible Platform.
The base control platform is built on the Linux operating system. The principal software stack uses
an OSGi framework (Equinox) and a container (Virgo) as the basis for modular software deployment.
The base platform provides services such as authentication, data persistence, logging, and alerts.
The base platform provides a device driver framework for out-of-band control and management
of devices. The base platform also includes network services that provide the following:
•Link Discovery service to discover the physical links between devices.
•Node Manager service to discover the existence of end hosts. OpenFlow Packet_In messages
are used to learn end-host MAC and IP addresses.
•Topology Manager service to create a network graph and compute the shortest path between
two hosts.
•Path Provisioning service to provision L2 paths by programming end-to-end flow rules between
discovered hosts.
•Path Diagnostic service to determine and verify the path taken by packets from a source host
to a destination host.
The SDN Controller is a distributed platform enabling high-availability and scalability. Controllers
can be configured in a team to enable load-balancing and control domain partitioning. Controllers
in the team synchronize state information for smooth and rapid failover.
The SDN Controller is an extensible platform supporting native applications (sometimes referred
to as modules) and external applications. Native applications are authored in Java or a byte-code
compatible language and are deployed on the controller as collections of OSGi bundles. Native
applications use the Java services exported and advertised by the controller platform and by other
applications. Native applications can dynamically extend the controller REST API surface, extend
the controller’s GUI, and integrate with the controller authentication and authorization framework.
8Introduction
Native application are well suited when the application needs frequent and low latency interactions
with network devices.
External applications can be developed in any language and are deployed on a platform outside
the controller platform or on the same platform as the controller. External applications interact with
the controller using the REST API services exported and advertised by the controller platform, and
by native applications deployed on the controller. Because external applications are deployed
outside the controller platform they cannot extend the REST API or GUI surface of the controller.
External applications are suitable for applications that have relatively infrequent and high latency
control interactions with network devices, and when deploying on a different platform is required.
1.1 Supported switches and OpenFlow compatibility
For information about supported network switches, OpenFlow versions, and switch configuration
requirements, see the HP VAN SDN Controller and Applications Support Matrix.
CAUTION:OpenFlow switches in a controller domain should not be connected in a loop topology
with switches outside the domain. Allowing such connections can create broadcast loops inside
the OpenFlow network. For more on packet-forwarding decisions, see “Hybrid mode for controlling
packet-forwarding” (page 73).
NOTE:Including a switch that does not support OpenFlow in a controller domain creates two
separate clusters.
1.1.1 OpenFlow requirements
The controller must be connected to a network that includes one or more switches configured to
run OpenFlow. HP recommends that you plan and implement the switch OpenFlow configurations
before connecting the controller to the network.
NOTE:Running the OpenFlow control mode on a specified switch VLAN disrupts the traffic on
that VLAN until the controller configures the required flow rules in the switch using the OpenFlow
controller API. For information on configuring OpenFlow, see the latest manual for the version of
OpenFlow running on your switches.
OpenFlow switches in the network must be configured to allow control by the SDN Controller. In
a controller domain, including a switch that does not support OpenFlow or allow control by the
SDN Controller creates separate clusters of OpenFlow networks.
1.1.2 IPv6 traffic
IPv6 traffic running in the data plane of an OpenFlow network is supported when the controller is
operating with hybrid mode set to “true” (the default). In this state the controller is not aware of
the IPv6 traffic. However, with hybrid mode set to “false” (all packets sent to the controller), the
controller drops IPv6 packets, and they do not reach their destinations. For more information, see
the release notes.
1.1 Supported switches and OpenFlow compatibility9
2 Understanding the embedded applications
2.1 Link manager
The Link Manager builds information about links between network elements in the controller domain.
This application maintains a table of source and destination devices and ports, and transmits
discovery packets to ports on attached datapaths.
Link Manager
•Learns and maintains all inter-switch links in the control domain.
•Provides data used by the controller topology module to construct end-to-end paths.
•Deciphering port state changes.
•Generates link events to notify interested listeners.
•Identifies multi-hop links between disconnected segments of the control domain.
•Provides information used by applications to reconfigure flows when a link goes down.
NOTE:The controller injects BDDP packets for discovery. No LLDP packets are sent.
To avoid sending discovery packets on certain ports such as an edge port, LinkManager maintains
a special list of ports identified as "Suppressed LLDP Ports". Adding ports to the suppressed LLDP
list can be done using the REST API.
Link Service sends BDDP packets with LLDP payloads containing a TLV with an associated link
controller ID in one of the optional LLDP TLVs. This enables Link Service to differentiate the BDDP
messages it has generated.
As it is possible for non-OpenFlow devices to be present between OpenFlow switches, Link Service
also sends out BDDP messages to discover "multi-hop links", which refer to a link between two
OpenFlow switches on a path through one or more non-OpenFlow devices.
2.2 Node manager
•Learns and maintains end-host locations in the network.
•Uses information received from network devices to maintain the ARP table and end host data.
•Uses the Topology Service to determine if a port receiving a packet is an edge port or not.
•Learns and maintains end nodes in the controller domain, and associates end nodes with
edge ports.
•Builds an ARP cache with MAC-IP translations of end hosts.
•Maintains ARPs on a per-VID basis.
•Provides the edge port details for end hosts.
Example ARP table data:
2.3 Path daemon
VIDMACIP Address
10000:00:5e:00:53:01192.0.2.1
11000:00:5e:00:53:20192.0.2.2
12000:00:5e:00:53:02192.0.2.3
Path daemon is a "proof of concept" network service application built on top of the SDN controller.
10Understanding the embedded applications
The Path Daemon application is responsible for pushing end-to-end flows for all ARP and IPv4 flow
misses that arrive at the controller. By default, Path Daemon is responsible for Layer-2 forwarding
only. This component depends on other network service components like Node manager and
Topology manager.
Path Daemon does the following:
•Registers with the controller as a Director. Directors are allowed to send a packet out.
•Registers for ARP packets and IPv4 packets.
•Uses the Node Manager to get the end hosts corresponding to the source and destination
MAC addresses and the switches to which these hosts are connected. It makes use of the
Topology Manager service to get the end-to-end path between the source and destination
switches. It makes use of the controller to push flows to the switches. The flowchart in Figure 1
provides more details of its operation.
•Path Daemon uses the following match fields when pushing a flow module. These match fields
have been chosen so that the flow modules are pushed on hardware tables in both Provision
and Comware switches.
◦Ether Type
◦Source Macaddress
◦Destination Macaddress
◦Input Port
◦Output port
•Path Daemon also registers for Port Status Down messages. When such messages are received,
Path Daemon removes all flows configured for the impacted port, thereby causing the packet-ins
to again come to the controller.
Operation notes:
•Does not handle multicast and broadcast traffic
•Does not configure the reverse path along with the forward path
•Drops packets from sources that the controller has not learned
•Floods packets when their destinations are not known
•Does not support multi-pathing or fast-failover
•Performance is topology-dependent, recommended for 100-200 node environments
2.3 Path daemon11
Figure 1 Path daemon flowchart
2.4 Path diagnostics
The path diagnostics application determines and verifies the path taken by a specific packet from
a source host to destination host.
•Evaluates flows configured across the switches in the control domain for diagnosis.
•Creates ‘Observation posts’ on every switch in the path that the packet would take.
•Tallys packet_in messagess from the observation posts to detect where a path is broken.
•Lists neighbors for any given device.
12Understanding the embedded applications
2.5 Topology manager
The topology manager computes the broadcast tree to avoid loops and broadcast storms. On a
given switch it also does the following:
•Provides a list of discovered ports on a given switch.
•Indicates whether a switch port is an edge port (connection point) or part of a link.
•Indicates whether a port is in a blocked or open state by determining whether ingress broadcast
traffic is allowed through the port.
•Verifies whether a path exists between two nodes.
•Enumerates the clusters of OpenFlow-capable switches.
•For a given switch, provides details of the cluster to which it belongs.
•The Topology Manager provides notification to subscribed applications regarding changes
in the broadcast tree and cluster. This enables development of intelligent and proactive
applications that can subscribe to topology change notifications.
2.6 Topology viewer
The topology viewer creates and updates a network graph for visualizing the network the controller
discovers. The Reload button will force a reload of all the nodes and links from the server. For
enhanced performance, the topology view caches nodes and links. In some situations this cache
may get out of sync with the controller. Performing a “Reload” will clear out the topology viewer
cache and regenerate the topology view.
The topology viewer uses the services of the topology manager and link manager.
2.5 Topology manager13
3 Navigating the controller user interface
3.1 Starting the SDN controller console UI
1.Use a supported browser, such as Google Chrome, to access the controller's GUI at the
controller IP address:
GUI
https://controller_ip_addr:8443/sdn/ui
Example
https://192.0.2.1:8443/sdn/ui
2.Enter user name and password credentials, then select Login.
Example
Default user name: sdn
Default password:skyline
3.The main controller screen appears with the Alerts screen displayed. For more information
about the controller console UI, see “About the user interface” (page 14).
3.2 About the user interface
NOTE:The names for common areas, icons, and controls on the UI screen appear after the
image.
14Navigating the controller user interface
Figure 2 Screen topography
1
Banner: Identifies the user interface. Contains
the alert notification counter and links to the
navigation menu, alert information, and the
SDN User window.
2
Alert notification counter: Displays the current
number of active alerts. Clicking this icon
displays the Alerts as of Today window box.
3
SDN User window: Enables you to log out
of the controller, link to external websites,
identify the version of controller software
currently in use.
47
navigation menu: The primary menu for
navigating to controller and application
resources. Contains the controller navigation
tree, labelled General, and can contain
screen (see “Expanding or collapsing the
navigation menu” (page 17)).
5
navigation tree: Used to select the controller
or application screen to display in the details
pane. General is the controller navigation tree.
Navigation trees for installed applications are
displayed below or to the right of the General
navigation tree. In this figure, there are two
navigation trees: General and Net Optimizer
- Lync.
6
Details pane: Displays the detailed interface
for the controller or application resourcechange the theme for the controller, and
selected in the navigation menu. When the
controller starts, it displays the Alerts screen.
Pagination control: Can appear on screens
that have lists of items. Use these controls to
view the listings page by page.
8
Listing control: Can appear on screens that
have lists of items. Use these controls to selectadditional navigation trees for installed
the number of items to display in a singleapplications that integrate with the controller
view. The Auto option displays all items in aUI. Can be displayed as a pane (as shown)
single screen. For listings exceeding the lengthor as a window that overlays the controller
of the screen, you can use the scroll bar on
the right side of the screen.
3.2.1 Banner
SDN Controller
DescriptionScreen component
Expands or collapses the “navigation menu” (page 16) as an overlay window.
Expands or collapses the controller “Alerts as of today” (page 21) window.
3.2 About the user interface15
DescriptionScreen component
The number next to the icon is the “alert notification counter” (page 20), which provides a count
of the current active alerts.
Expands or collapses the “SDN User” (page 17) window.
3.2.2 Changing column widths
To change the column widths, drag the column head borders. For example:
•To narrow the Severity column width, click the border to the left of Date/Time and drag it to
the left.
•To change the width of the navigation menu pane, click and drag the divider between the
menu pane and the details pane.
3.2.3 Changing the background and text colors
The background and text colors are part of the theme of the controller UI. To change the theme:
1.Expand the SDN User window.
2.In Set Theme:, select one of the following options:
•Day
•Night
3.3 Navigation menu
3.3.1 About the navigation menu
The navigation menu is the primary menu for navigating to controller resources. The resources
included with the controller are described in this document. Applications installed on controller
might add resources to this menu.
Displays as a pane or an overlay window
You can display the navigation menu in the following ways:
•As a pane on the left side of the controller browser window.
•As a window that overlays part of the main screen of the controller browser window.
Contains one or more navigation trees
The navigation menu contains the General controller navigation tree and can contain additional
navigation trees for installed applications that integrate with the controller UI.
3.3.2 Navigation menu screen details
DescriptionScreen component
General
Displays the navigation tree for the resources that are provided with the controller. By default,
the General controller navigation tree is expanded and the Alerts screen is selected and
displayed.
To display the screen for another resource, select the resource in the navigation tree.
Expands or collapses the controller navigation menu. If the navigation menu is collapsed, this
icon is located in the left margin of the console screen.
Expands the selected navigation tree. This control is available in the navigation menu for the
General controller navigation tree and for each application that is installed and available through
the controller navigation menu.
16Navigating the controller user interface
DescriptionScreen component
When the navigation menu is displayed as a widow pane on the console, exactly one navigation
tree can be expanded. To collapse a navigation tree for the controller or an application, click
the expand icon for a different navigation tree.
Collapses the navigation window when it is displayed as an overlay window on the console
screen.
3.3.3 Expanding or collapsing the navigation menu
The navigation menu is displayed as a navigation pane by default. You can display the navigation
menu as a pane on the controller screen or as a window that overlays the controller screen.
Expanding or collapsing the navigation menu as a window pane
To expand or collapse the navigation menu as a window pane, click the following icon:
•When the navigation menu is expanded as a window pane, the icon is located on the right
side of the menu.
•When the navigation menu is collapsed, the icon is located in the left margin of the controller
screen.
Expanding or collapsing the navigation menu as an overlay window
To display the navigation menu as an overlay window, from the top banner of the controller screen,
click SDN Controller.
To collapse the navigation window, do one of the following:
•In the window, click
•From the top banner, click SDN Controller.
3.4 SDN User window
The SDN User window displays as an overlay on the controller screen.
3.4 SDN User window17
3.4.1 User window screen details
Figure 3 SDN user window
DescriptionScreen component
Logs the user out of the controller.Logout
Links:
Set Theme:
Links to websites outside of the controller:
DescriptionName
SDN Information Library
SDN Community
Changes the theme for the controller UI:
Links to the information library on the HP Software-Defined
Networking website. The HP SDN information library provides
links to the technical documentation for the HP VAN SDN
Controller and the HP SDN applications. The HP
Software-Defined Networking website provides fact sheets, case
studies, white papers, product summaries, technical and business
documentation, and other information to help you identify SDN
solutions for your business needs.
Links to the HP SDN community discussion forum website within
the HP Enterprise Business Community. This site offers resources
such as:
• SDN discussion boards
• SDN development information
• An SDN knowledge base
DescriptionName
When selected, plain text is black and the background is white.Day
Displays the version of the controller software that is running on this system.SDN Controller
Version:
Collapses the window.
3.4.2 Expanding the SDN user window
To expand the SDN User window, from the top banner, click.
18Navigating the controller user interface
When selected, plain text is white and the background is black.Night
3.4.3 Collapsing the SDN user window
To collapse the SDN User window, do one of the following:
•In the SDN User window, click.
•From the top banner, click.
3.4.4 Logging out of the controller
To log out of the controller UI:
•From the SDN User window, select Logout.
3.5 Alerts screen
3.5.1 About alerts
Alerts give notification of events that affect controller operation, and in some cases indicate that
some action is needed to correct a condition.
Alerts and controller teams
When controllers are operating in a team, alerts generated by any team member are visible in
the Alerts screen for all active team members.
Active, unacknowledged alerts
By default, alerts are in an unacknowledged, active state. An alert must be in an active state to
appear in the following places:
•The alert notification counter
•The Alerts as of today window
3.5.2 About alert policies
The values for the AlertManager component keys determine the alert age-out policy. The following
table describes the keys for the AlertManager component
(com.hp.sdn.adm.alert.impl.AlertManager).
trim.alert.age
trim.enabled
trim.frequency
DescriptionKey
Specifies the number of days an alert remains in persistent storage and remains displayed
on the Alerts screen.
Data typeA number from 1 through 31
Default value14
When true, specifies that the controller deletes alerts that have exceeded the
trim.alert.age limit.
Default valuetrue
Specifies how often, in hours, the controller is to delete alerts that have exceeded the
trim.alert.age limit.
Data typeA number from 8 through 168
Default value24
ExampleEnter 8 to specify that the controller delete aged-out alerts every
eight hours.
3.5 Alerts screen19
3.5.3 Alert notification counter
The alert notification counter is displayed in top banner and appears on all controller screens. This
counter indicates the number of active alerts:
•The controller increments this counter when each new alert occurs.
•The controller decrements this controller when you acknowledge an alert or when the controller
deletes an alert according to the “alert age-out policy” (page 21) .
Figure 4 Alert notification counter
3.5.4 Alerts screen details
Refresh
Acknowledge
Severity
DescriptionScreen component
Updates the alerts displayed on the screen. The controller does not update the display
as new alerts are generated. Use this action to refresh the display.
Changes the selected alert to an acknowledged state. The controller displays the alert
in gray text. Use this action to indicate that you have read the alert.
Changes the selected alert to an active, unacknowledged state.UnAcknowledge
Indicates the state of the alert:Alert text color
• The controller displays active, unacknowledged alerts the alert in the text color
corresponding to the controller theme. For example, when the controller theme is
daylight, the active alerts appear in black text.
• The controller displays the selected alert in blue text. Click an alert to select it.
• The controller displays acknowledged alerts in gray text.
Indicates the severity of the alert.
DescriptionIcon
Informational
Warning
20Navigating the controller user interface
Critical
Indicates the date and time the alert was generated.Date/Time
Describes the alert in human readable text.Description
DescriptionScreen component
Indicates which component or application generated the alert.Origin
Topic
Controller ID
Indicates of the category for this alert. Multiple origins can contribute alerts to the same
topic.
Identifies the controller that generated the alert. The controller is represented as a
hexadecimal number. When you use controller teaming, this ID enables you to identify
which controller in the team generated the alert.
3.5.5 Viewing the ten most sever recent active alerts
To display a summary of up to 10 alerts ranked by severity (highest to lowest) and then by date
and time (newest to oldest):
•In the top banner, click.
The Alerts as of today window is displayed.
To close the window, do one of the following:
•To close the window and display the Alerts screen, click All.
•At the bottom of the window, click the collapse icon ().
•In the top banner, click either the alert counter number or.
3.5.6 Acknowledging an alert
To acknowledge an alert from the Alerts as of today window:
1.Click the alert to select it.
2.Click Acknowledge.
The controller removes the alert from the Alerts as of today window, displays the alert in gray
text on the Alerts screen, and decrements the alert notification counter by one.
To acknowledge an alert from the Alerts screen:
1.Click the alert to select it.
2.Click Acknowledge.
The controller displays the alert in gray text on the Alerts screen, and decrements the alert
notification counter by one.
3.5.7 Deleting an alert
You can acknowledge an individual alert, but you can not clear or delete the alert.
The controller deletes alerts according to the configured alert age-out policy. To configure the
age-out policy, see “Configuring the alert policies” (page 21)
3.5.8 Configuring the alert policies
1.From the Configurations screen, under Component, select the
com.hp.sdn.adm.alert.impl.AlertManager component.
2.Click Modify.
The Modify Configuration dialog box appears.
3.Change the values for the keys. For more information about the keys and values that affect
the alert policy, see “About alert policies” (page 19).
4.Click Apply .
3.5 Alerts screen21
3.6 Applications screen
3.6.1 About the application manager
The Application Manager supports default and add-on network services, and enables installing,
upgrading, enabling (starting), disabling (stopping), and uninstalling SDN applications.
Application manager and controller teams
When controllers are operating in a team, actions performed on one controller are propagated
to the other controllers in the team. Actions you select in the Applications window for one controller,
such as Install, Enable, and Disable, are propagated to the other controllers.
Embedded applications
The following applications are embedded in the controller and are installed when you install the
controller:
•Link Manager
•Node Manager
•Path Daemon
•Path Diagnostics
•Topology Manager
•Topology Viewer
For more information about the embedded applications, see “Understanding the embedded
applications” (page 10).
Prerequisites for installing an application
Any application to be installed on the controller must meet the following requirements:
•It must be in a zip format.
•The zip file must be on the same system as the controller.
•It must contain an application descriptor file containing key value pairs of the attributes
associated with the application, including all mandatory attributes.
Applications you purchase from HP or the HP SDN App Store meet these requirements.
For information about developing applications that meet these requirements, see the HP VAN SDN
Controller Programming Guide.
3.6.2 Applications screen details
DescriptionScreen component
Reloads the view.Refresh
Installs an application on the controller.New
Installs an upgrade to an application that has already been installed on the controller.Upgrade
22Navigating the controller user interface
Removes an application from the controller.Uninstall
Starts or allows an application to continue operations on the controller.Enable
Stops or prevents an application from operating on the controller.Disable
The name of the applicationName
DescriptionScreen component
The version number of the applicationVersion
State
The most common states are listed in the following table.
DescriptionState
The application has been started and is servicing requests.ACTIVE
STAGED
DISABLED
A new application has been downloaded to the controller and is
ready to be installed.
The application has been stopped. Applications in this state are
not restarted when the controller restarts.
3.6.3 Obtaining applications from the HP SDN AppStore
When the AppStore becomes available you will be able to purchase and download applications
for your controller. Until the AppStore becomes available, the following buttons do not access
AppStore features:
•Log in to view applications…
•Launch AppStore
3.6.4 Adding or upgrading an application
Any application in the proper format can be added to the controller (see “About the application
manager” (page 22)).
After you complete this procedure:
•The application is started and in an ACTIVE state.
•If the controller is in a controller team, the controller propagates the application to all the
controllers in the team automatically.
Use this procedure to install either a new application or a new version of an existing application
on the controller using the UI.
1.Do one of the following:
•To install a new application, click New.
•To upgrade to a new version of an existing application, select the application from the
Name list and click Upgrade.
2.Click Browse to navigate to the location of the application zip file and select the file.
3.Click Upload to upload the file.
Wait for Completed to appear. For example:
3.6 Applications screen23
4.Click Deploy.
The new application then appears by name on the Applications screen as ACTIVE.
3.6.5 Disabling (stopping) or enabling (starting) an application
This procedure temporarily stops an active application from servicing requests, but retains the
application on the system. The application remains present on the system and can be restarted
when needed. (The application does not automatically restart when the controller restarts.)
Procedure 1 Disabling an application using the UI
1.In the Applications screen, select the application you want to stop.
2.Click Disable to display the Disable Application dialog box.
3.In the Disable Application dialog box, click Disable.
The Disable Application dialog box closes and the application state is changed to DISABLED.
Procedure 2 Enabling an application using the UI
1.In the Applications screen, select the application you want to enable.
2.Click Enable to display the Enable Application dialog box.
24Navigating the controller user interface
3.Click Enable button to activate the application. The application starts or resumes operation
and the application state is changed to ACTIVE.
3.6.6 Uninstalling an application
This procedure completely removes an application from the controller. To later restore the removed
application, see Adding or upgrading an application.
Use the following procedure to uninstall an application using the UI.
1.In the Applications screen, select the application you want to uninstall.
2.Click Uninstall.
3.Click the Uninstall button to remove (delete) the application.
3.7 Configurations screen
The Configurations screen enables access to the configurable components in the controller.
3.7.1 About the configurable components
The configuration components are used to manage the controller and application features. The
base set of controller components support the applications that are embedded in the controller.
Adding or removing an SDN application might add or remove additional configuration component.
However, direct addition or removal of configuration components is not supported.
Each configuration component contains one or more component keys, each of which identify a
configurable property of the component.
CAUTION:Inappropriate changes to key values can result in severely degraded system
performance. For this reason, HP strongly recommends that managing the default key values be
done only by experienced network administrators and programmers who have a strong
understanding of SDN controller systems.
3.7 Configurations screen25
Configurations and controller teams
When controllers are operating in a team, configuration changes on one active controller propagate
to the other active controllers in the team.
3.7.1.1 About component keys
Each configuration component contains one or more component keys, each of which identify a
configurable property of the component.
CAUTION:Inappropriate changes to key values can result in severely degraded system
performance. For this reason, HP strongly recommends that managing the default key values be
done only by experienced network administrators and programmers who have a strong
understanding of SDN controller systems.
Information about each component key includes the current value, the default value, and a brief
description. Where applicable, the range of suggested values is also included. Component key
information
Information about the component keys are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2 Summary of configurable controller components
3.7.2.1 AdminREST Component
Component name
com.hp.sdn.misc.AdminRESTComponent
Description
The AdminRestComponent provides parameters for internal communication between SDN
components and the Admin REST API of the controller.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.2 Alert manager
Component name
com.hp.sdn.adm.alert.impl.AlertManager
Description
The AlertManager controls the quantity of alert data present on the system by periodically checking
for alert data to be deleted based on the configured age-out policy.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
26Navigating the controller user interface
3.7.2.3 Alert post manager
Component name
com.hp.sdn.api.impl.AlertPostManager
Description
The AlertPostManager uses the HTTP(s) protocol to send alert data as a a JSON string to registered
alert topic listeners.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.4 Audit log manager
Component name
com.hp.sdn.adm.auditlog.impl.AuditLogManager
Description
The AuditLogManager controls the quantity of audit log data present on the system by periodically
checking for audit log data to be deleted based on the configured age-out policy. For more
information about audit log policies, see “Configuring audit log policies” (page 33).
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.5 Authentication manager
Component name
com.hp.sdn.adm.auth.impl.AuthenticationManager
Description
The AuthenticationManager provides for the authentication of external users to the SDN Controller.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.6 Controller manager
Component name
com.hp.sdn.ctl.of.impl.ControllerManager
Description
The ControllerManager provides parameters used in the implementation of the OpenFlow protocol.
3.7 Configurations screen27
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.7 Link manager
Component name
com.hp.sdn.ctl.linkdisco.impl.LinkManager
Description
The LinkManager provides parameters used for discovering links between network elements.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.8 Log manager
Component name
com.hp.sdn.adm.log.impl.LogManager
Description
The LogManager controls the number of log message rows displayed in the Support Logs display.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.9 Metric manager component
Component name
com.hp.sdn.adm.metric.impl.MetricManagerComponent
Description
The MetricManagerComponent determines how measurement data is maintained by the controller.
The controller includes a metering framework that internal components and installed applications
can use to collect various types of data. (Data can be persisted on the controller from sources
external to the controller.) Any metric created with the framework may optionally be persisted over
time or directed to the controller JMX facility for viewing. Data persisted over time can be viewed
using the controller REST API, while data sent to JMX can be viewed using JConsole or another
JMX client. The MetricManagerComponent permits configuring default values for certain aspects
of the metering framework operation, such as how long the controller should retain persisted data,
at what time of day persisted data that is too old should be trimmed, and how often persisted
metric values should be saved to disk. (This value can be overridden for any metric when the metric
is created).
28Navigating the controller user interface
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.10 Node manager
Component name
com.hp.sdn.ctl.nodemgr.impl.NodeManager
Description
The NodeManager provides parameters for discovering and maintaining end host locations in the
network.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.11 Path diagnostic manager
Component name
com.hp.sdn.ctl.diag.impl.PathDiagnosticManager
Description
The PathDiagnosticManager defines the lifetime of the diagnostics flows used for tracing a path.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.12 Path daemon
Component name
com.hp.sdn.ctl.path.impl.PathDaemon
Description
The PathDaemon provides parameters used by the path daemon to perform Layer-2 forwarding.
See also “Understanding the embedded applications” (page 10).
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.13 RestPerf provider
Component name
com.hp.sdn.rs.RestPerfProvider
3.7 Configurations screen29
Description
The RestPerfProvider reports performance data for the REST API.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.14 Role assert manager
Component name
com.hp.sdn.adm.role.impl.RoleAssertManager
Description
The RoleAssertManager provides parameters the controller uses for determining role message
transmit retries and response periods.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.15 Service REST component
Component name
com.hp.sdn.misc.ServiceRestComponent
Description
The ServiceRestComponent provides parameters for internal communication between SDN
components and the SDN controller Northbound REST API.
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
•The Configuration screen of the controller UI.
•The controller Configs REST API.
3.7.2.16 System watchdog manager
Component name
com.hp.sdn.adm.system.impl.SystemWatchdogManager
Description
The SystemWatchdogManager provides heartbeat status checking between SDN controllers that
are running as part of a team.
3.7.2.17 Trace manager
Component name
com.hp.sdn.ctl.of.impl.TraceManager
Description
The TraceManager specifies how long a trace is to run after it starts.
30Navigating the controller user interface
Component keys
Information about the configurable component keys, including descriptions, current values, suggested
ranges, and default values are available from:
Opens the Modify Configuration dialog box for the selected component.Modify
The name of the component.Component
Click to display the key and value information for the component.expand icon
The display for each key includes the current value, the default value, and a brief description.
Where applicable, the range of suggested values is also included.
Click to hide the key and value information for the component.collapse icon
3.7.4 Modifying a component configuration
1.Select the component you want to modify.
2.Click Modify.
The Modify Configuration dialog box is displayed. For example:
3.7 Configurations screen31
3.Enter new values for each of the keys you want to modify.
4.Do one of the following:
•To save your changes and close the dialog box, click Apply.
•To close the dialog box without saving changes, click Cancel.
3.8 Audit log screen
3.8.1 About the audit Log
The audit log is available through both the controller GUI and the REST API, and records events
related to activities, operations, and configuration changes initiated by an authorized user. This
includes activities such as:
•Installing an application (or starting, stopping, uninstalling an application)
•Modification to a components configuration
•Installing a license
•Forming a controller team
Audit log and controller teams
When controllers are operating in a team, the audit log shows events for all controllers in the team.
3.8.1.1 About audit log policies
The values for the AuditLogManager component keys determine the alert age-out policies. The
following table describes the keys for the AuditLogManager component
(com.hp.sdn.adm.auditlog.impl.AuditLogManager).
365trim.auditlog.age
truetrim.enabledtrueSpecifies that the controller deletes log entries that have
24trim.frequency
3.8.2 Audit Log screen details
DescriptionScreen component
DescriptionDefault ValueKey
Specifies the number of days to retain a log entry. Use this key to implement
your record retention policy.
Data typeA number from 31 through 1825.
exceeded the trim.auditlog.age limit.
falseSpecifies that the controller does not delete log entries that
have exceeded the trim.auditlog.age limit.
Specifies how often, in hours, the controller is to delete log entries that have
exceeded the trim.alert.age limit.
Data typeA number from 8 through 168
ExampleEnter 24 to specify that the controller delete aged-out log
entries every 24 hours (once per day).
Refresh
32Navigating the controller user interface
Updates the log entries displayed on the screen. The controller does not update the
display as new entries are generated. Use this action to refresh the display.
The user that performed the operation that triggered the log entryUser
A time stamp (in UTC format) indicating when the controller created the log entry.Occurred
The type of activity that triggered the creation of the log entry.Activity
The application or controller component that generated the log entry.Origin
DescriptionScreen component
Detailed information about the log entry.Data
Controller ID
For example, the audit log displays software license and teaming activity:
Figure 5 Audit Log screen example with licensing and teaming activity
3.8.3 Deleting a log entry
You cannot delete or modify a log entry. The controller deletes entries according to the configured
audit log policies. To configure the audit log policies, see “Configuring audit log policies” (page 33)
A hexadecimal number that identifies controller that generated the log entry. When
you use controller teaming, this ID enables you to identify which controller in the team
generated the alert.
3.8.4 Configuring audit log policies
1.From the Configurations screen, under Component, select the
com.hp.sdn.adm.auditlog.impl.AuditLogManager component.
2.Click Modify.
The Modify Configuration dialog box appears.
3.Change the values for the keys. For information about the keys and values for this component,
see “About audit log policies” (page 32).
4.Click Apply .
3.8.5 Exporting and archiving audit log data
To retain log records for longer than the trim.auditlog.age limit, you must export the audit
log from the controller to a file before the trim.auditlog.age limit is reached. Exporting audit
log data does not remove it from persistent storage.
To export the audit log, you must use the REST APIs.
3.9 Licenses screen
The Licenses screen displays the controller Install ID, activates new licenses, and deactivates installed
licenses (for transfer to another installation).
3.9.1 About licenses
Licenses are required for the controller and for any installed applications. For information about
licenses, see “License Registration and Activation” (page 52).
3.9 Licenses screen33
3.9.2 Licenses screen details
DescriptionScreen component
Updates the screen with the latest license information.Refresh
Adds and activates the specified license key on this controller.Add
Deactivates the selected license.Deactivate
Contains the installation identifier for this controller.Install ID
Serial#
Product
Licensed For
Qty
Type
Status
Expire By
Uninstall Key
3.9.3 Installing, activating, uninstalling, or transferring licenses
For information about installing, activating, uninstalling, and transferring licenses, see “License
Registration and Activation” (page 52).
3.10 Support logs screen
3.10.1 About support logs
The support logs maintain an internal record of events of interest from the operations of an active
SDN controller. This information is the type of data a support engineer would request when
troubleshooting an SDN installation.
Support logs and controller teams
In a controller team environment:
•Each controller maintains its own support logs.
•Changing the log.queue.size on any controller propagates to all active controllers in the
team.
•The Export action gathers the set of support log file data from all active controllers in the team,
and stores the data as a single compressed archive.
Multiple support logs
The controller allows up to five support logs; one active and four in storage:
•When the current log reaches 10MB, the controller copies the log to storage and starts a new
log.
•When the space allocated for all support logs is full, the controller purges the oldest log file
to make room for continued logging operation.
•Support logs are stored in the controller /var/log/sdn/virgo/logs directory.
•Support logs can be exported to a file (see “Exporting the support logs ” (page 36))
34Navigating the controller user interface
3.10.2 Support logs screen details
DescriptionScreen component
Refresh
Export
Level
Displays a listing of the most recent log messages, as determined by the currently
configured queue size. For example, with a queue size of 100, Refresh lists the 100
most recent log messages.
Gathers the set of support log file data from the standalone controller or all active
controllers in the team, and stores the data as a single compressed archive.
The severity level for the entry. Levels are:
DescriptionValue
Recorded in support logsERROR
WARN
INFO
DEBUG
TRACE
In the default configuration, the ERROR, WARN, and INFO levels are recorded in the
Support Logs. DEBUG and TRACE are verbose logging that are used in troubleshooting
situations that may involve support engineering.
The logging level for a component that is writing to the support log can be dynamically
changed using the Virgo Administrator console. For example, DEBUG level logging
can be enabled for just the NodeManager configuration component.
Logger
Thread
Message
Detailed information about the log entry.Data
Controller ID
A hexadecimal number that identifies controller that generated the log entry. When
you use controller teaming, this ID enables you to identify which controller in the team
generated the alert.
3.10.3 Configuring the support log queue size
The default queue size is 100 lines. To configure a different queue size, change the value for the
max.display.rows key of the LogManager component.
1.From the Configurations screen, under Component, select the
com.hp.sdn.adm.log.impl.LogManager component.
2.Click Modify.
The Modify Configuration dialog box appears.
3.Change the value for the max.display.rows key.
4.Click Apply.
3.10.4 Configure signed application zip file verification
By default, the SDN Controller does verify that an application zip file has been signed from a
trusted source as defined in your /opt/sdn/admin/sdnjar_trust.jks truststore. To enable or disable
checking that all application zip files downloaded through the application manager are signed
and are from a trusted source, you must change the value for the “verifyZips” key.
3.10 Support logs screen35
1.From the Configurations screen, under Component, select the
com.hp.sdn.adm.mgr.impl.AppManager component.
2.Click Modify.
The Modify Configuration dialog box appears.
3.Change the “verifyZips” key value to “False” to enable checking.
4.Click Apply.
NOTE:To download an application with this check enabled, the public certificate used to
recognize the signed zip file must be installed in the sdnjar_trust.jks truststore. See “Adding
certificates to the jar-signing truststore ” (page 68).
3.10.5 Exporting the support logs
The Export operation:
1.Gathers the set of support log file data from the controller, or in a team environment, all active
controllers in the team, and stores the data as a single compressed archive file:
sdn-all-logs.zip
2.Downloads the archive file from the controller to the default download directory specified by
your browser. For example, in Ubuntu installations, this is usually the Downloads directory.
1.Click Export.
The following menu appears in the lower-left corner of the controller console:
Figure 6 Completion of the export operation
2.When the download completes, you can either resume interaction with the controller or examine
the log by selecting an item from the menu, such as:
•Open a window showing the new log zip file.
•Set the default operation to always open the directory containing the log zip file.
•Show the log zip file in the default directory for receiving downloads.
NOTE:The actions resulting from these choices depend on the browser and operating system,
not on the controller.
3.11 OpenFlow monitor screen
When the controller is active in an OpenFlow domain, the OpenFlow Monitor enables tracking of
switch traffic summaries, packet traffic per port, and applied flow rules for switches detected in
the controller domain. The main display lists the Data Path IDs for the active switches and the
options for viewing traffic information.
3.11.1 About the OpenFlow monitor
When the controller is active in an OpenFlow domain, the OpenFlow Monitor enables tracking of
switch traffic summaries, packet traffic per port, and applied flow rules for switches detected in
the controller domain. The main display lists the Data Path IDs for the active switches and the
options for viewing traffic information.
36Navigating the controller user interface
3.11.2 OpenFlow monitor screen details
3.11.2.1 Main display
DescriptionScreen component
Updates the information displayed on the screen.Refresh
Displays the “Summary for data path view” (page 37) for the selected data path.Summary
Displays the “Ports for data path display” (page 37) for the selected data path.Ports
Displays the “Flows for data path display” (page 38) for the selected data path.Flows
Displays the Groups view for the selected data path.Groups
Data Path ID
Identifies a detected OpenFlow switch. The OpenFlow data path identification for
each detected OpenFlow switch. This ID also appears in the representation of the
switch in the OpenFlow Topology screen.
Identifies the IP address associated with an OpenFlow data path instance.IP Address
The version of OpenFlow in use with the corresponding data path.Negotiated Version
3.11.2.2 Summary for data path view
This view includes the following related to the selected device:
•Manufacturer
•Hardware and software version
•Serial number and device description
•Device identification (Data Path ID) and IP address
•TCP port on the device
•Negotiated OpenFlow version (latest OpenFlow version common to both the controller and
the switch)
•OpenFlow table and buffer information
•OpenFlow capabilities on the device
Figure 7 Summary for data path view
3.11.2.3 Ports for data path display
This view includes information on the ports used for OpenFlow traffic on the selected device.
3.11 OpenFlow monitor screen37
Figure 8 Ports view for a specific OpenFlow device
3.11.2.4 Flows for data path display
This view includes the current flows on the selected OpenFlow device. For a given flow, traffic
meeting the requirements specified in the "Matches" field is directed as specified in the
corresponding "Actions/Instructions" field.
Figure 9 Flows view for a specific OpenFlow device
NOTE:The Table ID applies to OpenFlow 1.3 and greater, but not to OpenFlow 1.0.
3.11.3 Discovering changes in the topopology
Click Refresh to update the display for topology changes, such as a newly discovered OpenFlow
device or the loss of a device that has failed.
3.11.4 Viewing information about a specific device
To view information about a specific device, click the Data Path ID for that device and then click
the button for the view you want to display.
For a graphical view of Data Path ID assignments to individual OpenFlow switches, see OpenFlow
topology screen.
38Navigating the controller user interface
3.12 OpenFlow topology screen
The OpenFlow screen displays a topology of discovered switches and end nodes in the controller
domain. The viewer creates and updates a graph of the network, and computes the broadcast tree
to avoid loops and broadcast storms. The shortest path is computed using Dijkstra’s graph search
algorithm. The viewer:
•Displays a topology of discovered switches and end nodes.
•Identifies the ports discovered on a given switch.
•Identifies the shortest path between two nodes.
•Provides node identification options (MAC or IP address label).
•Provides a view of switch port identifiers, active flow rules, and a tool for testing flow rule
options.
CAUTION:Do not allow a loop between the OpenFlow and non-OpenFlow portions of your
network unless you enable Spanning Tree Protocol on the non OpenFlow devices operating in the
network
NOTE:In a topology where two or more controlled switches connect to the same uncontrolled
switch, the controller will not learn the location of hosts connected to the uncontrolled switch.
3.12.1 Displaying the network toplogy
The OpenFlow Topology screen includes the switches and end-nodes in the controller domain.
Figure 10 Topology viewer
3.12 OpenFlow topology screen39
Figure 11 Default topology view with switch and end-nodes
3.12.1.1 Configuring how the OpenFlow network topology is displayed
Both of the following tools provide control for different parts of the OpenFlow Topology display:
•Theicon for a list of keyboard shortcuts you can use to change the display.
•The View menu for:
Port labels on switches◦
◦Switch datapath details
◦A tool for selecting Packet selection criteria
End nodes can be labelled with one of the following:
•No Label (default)
•IP Address
•MAC Address
For example, to show the IP addresses of the end-nodes in the OpenFlow topology, click anywhere
in the topology display, then press N. The end-node IP addresses appear as labels in the topology
diagram:
40Navigating the controller user interface
Figure 12 End-node IP address labeling
Press N again to display the end-node MAC addresses as labels in the topology diagram:
Figure 13 End-node MAC addresses as labels
Press N again to return to the unlabeled end-node view.
Switches are always labelled with their data path ID. You can also:
•Add port labels to the links between switches and between switches and end nodes.
•Identify flow details and options. (See “Identifying flow details and flow options” (page 43).)
3.12 OpenFlow topology screen41
•"Pin" the switches and end nodes in the topology display.
•"Collapse" the topology display to show only the number of end nodes connected to each
switch, instead of showing all end nodes (the default) which can present a cluttered display
where a large number of end nodes are connected to the OpenFlow switches.
In the topology display:
•To display or remove port numbers for the links, press P or select View→Ports.
•To pin or unpin the switches and end nodes, press X or select View→Pin All.
•To hide or show all switch end nodes, pressG or select View→Collapse All.
Figure 14 Switch ports labels
Figure 15 Collapse All option
The number appearing under the Data Path ID for a switch in the topology diagram indicates the
number of detected end nodes connected to the switch.
To toggle between hiding or showing all switch end nodes, click anywhere in the topology display
and then press G.
To toggle between hiding or showing the end nodes for a particular switch, select the switch and
then press C.
3.12.1.2 Viewing the shortest path between two nodes
1.Select the source node and press S or click Src.
42Navigating the controller user interface
2.Select the destination node and press D or click Dst.
The controller displays the path between the two nodes as a red line (see Figure 16 (page 43)).
Figure 16 Locating the shortest path between two nodes
To exchange source and destination nodes, press A.
To clear the source and destination flags, press Z.
3.12.1.3 Identifying flow details and flow options
•Do one of the following:
•Select Shortest Path→Follow Flow
•Select a switch in the shortest path and press I, then select the switch again and press T.
The Switch Details window displays the flow details and the Abstract Packet window displays
selection criteria for packets moving between the Source-Destination node pair.
3.12 OpenFlow topology screen43
Figure 17 Flow details for the selected source-destination end nodes
Using the fields in the Abstract Packet window, search for flow rules for packets having criteria
dictating a path other than shortest path, for example, by entering port 80 for HTTP packets.
Figure 18 Searching for flows for specific packet types
3.13 OpenFlow trace display
This troubleshooting tool logs OpenFlow conversations captured in messages to and from the
controller and the OpenFlow devices it manages.
You can export the captured messages in the trace log to a CSV (Comma-Separated Values) file
that can be opened by applications such as Excel that are designed to accommodate this file type.
This enables you to create a filter to display only the messages from the specific data paths you
want to examine.
3.13.1 About the trace log
The number of events that can be held in the trace log is limited by system memory. For this reason,
HP recommends that you export to a remote storage location any trace log content you want to
retain, and to clear the controller trace log whenever its content is not needed on the controller
itself.
44Navigating the controller user interface
3.13.2 OpenFlow trace display details
DescriptionScreen component
Starts trace logging.
In the default configuration, the trace stops after ten seconds have passed. (To change the
trace interval, see “Changing the OpenFlow trace interval ” (page 48).)
Stops trace logging before the end of the configured trace interval.
Trace logging stops automatically at the end of the configured trace interval.
Multiple consecutive traces can be held in the trace log. To add additional trace results, start
another trace.
Clears (resets) the current trace log.
To preserve the contents of the trace log before clearing it, see “Exporting the OpenFlow
trace log” (page 46).
Displays details of the selected trace event.
Export
Copies the trace log into a CSV (comma-separated values) file. See see “Exporting the
OpenFlow trace log” (page 46).
The time the message event was generated.Time
The event type. For example:Event
CkPtIndicates a check point in the trace log, such as the starting or stopping of a trace
operation.
RxIndicates an OpenFlow message recieved by the controller (from a datapath).
TxIndicates an OpenFlow message sent from the controller (to a datapath).
The DPID (data path ID) of the data path associated with the event.DPID
The trace message.Message
3.13.3 Starting, stopping, or clearing OpenFlow trace
Use the buttons above the Time field to control trace operations (see “OpenFlow trace display
details” (page 45)).
3.13.4 Displaying trace event details
1.Select the event you want to examine.
2.Click. Alternatively, double-click on the event.
The Event Detail dialog box is displayed.
3.13 OpenFlow trace display45
Figure 19 Displaying event details
3.To close the Event Detail window, click Close.
3.13.5 Exporting the OpenFlow trace log
Exporting an OpenFlow Trace Log places the trace content in a CSV file that is stored in the default
downloads folder specified in your web browser settings.
For more information about CSV files, see RFC 4180.
NOTE:This section shows how to export and access OpenFlow Trace Log files using Google
Chrome. You may experience different results than shown here, depending on your web browser
and its configuration.
1.Click Export. This action places the trace log contents into a CSV file in the default downloads
folder in the system on which the controller is running. Check your web browser for an
indication that the file has been created.
2.To display and filter the CSV file content, see “Filtering the OpenFlow trace log in a CSV file”
(page 47).
46Navigating the controller user interface
3.13.6 Filtering the OpenFlow trace log in a CSV file
1.Open the CSV file in the default folder. For example, using Google Chrome, open the menu
adjacent to the file name (of-trace.csv) and select Show in folder.
Figure 20 Accessing the stored CSV file
In the resulting folder listing, locate the of-trace.csv file and open it using an application,
such as Excel, that enables you to read the log messages and configure a filter. For example,
to investigate the messages collected for data path 00.00.00.00.00.00.00.02:
2.Select the DPID (Data Path ID) column.
Figure 21 DPID column
3.Set the filter.
Figure 22 Setting the filter
4.Apply the filter by checking the box for data path 00.00.00.00.00.00.00.02.
3.13 OpenFlow trace display47
Figure 23 Applying the filter
5.In the resulting display, only the data filtered to data path 00:00:00:00:00:00:00:02 appears.
Figure 24 Filtered trace log
3.13.7 Changing the OpenFlow trace interval
The default trace interval is ten seconds. To change the interval:
1.From the navigation menu, select Configurations.
2.Open the com.hp.sdn.ctl.of.impl.TraceManager component.
3.Click Modify.
48Navigating the controller user interface
4.In the Value field, enter the desired duration in seconds for active trace recording.
5.Click Apply to set the new time span for active trace recording, and return to the OpenFlow
Trace view.
3.14 OpenFlow classes display
The OpenFlow classes display shows the OpenFlow classes that applications have registered with
the controller. For more information about OpenFlow classes, see “About OpenFlow classes”
(page 49).
3.14.1 About OpenFlow classes
When multiple applications share the same resource—the flow tables of OpenFlow switches—how
can their priorities relative to each other be determined and how can their actions be coordinated?
If flow table modification priorities are directly coded into each application, applications can end
up directly competing with other applications for the highest priorities, which can result in conflicts
in general network traffic control and unintended results when you implement a solution that has
multiple SDN applications attempting to act on the same packets. In addition, many environments
make it difficult to trace the origin of flow modification requests installed in switches.
The HP VAN SDN Controller uses OpenFlow classes to dynamically manage the priorities of the
OpenFlow rules being deployed to the network, thus enabling applications to execute their business
logic in a more orderly fashion.
1.For each class of flow modification message the application can send, the application must
register an OpenFlow class with the controller. The OpenFlow class must specify the types of
match fields, types of actions, and (optionally) the relative position (higher than or lower than)
for this class with respect to other flow classes.
2.The controller adds a unique base cookie to be used with each future flow modification to be
validated against this OpenFlow class, and assigns an actual priority for the OpenFlow class.
This actual priority is based on the logical priorities of all of the OpenFlow classes of all the
applications that are registered with the controller.
3.When the application sends a flow modification message, it must set the match and action to
be the same fields as specified in the OpenFlow class and, instead of providing an actual
priority, the application sets the logical priority as assigned by the flow class, and a cookie
that is derived from the base cookie of the OpenFlow class.
4.Before sending the flow table modification message to the switch, the controller evaluates the
requested flow modification against the registered OpenFlow classes and replaces the logical
priority provided by the application with an actual priority.
In addition to enabling the controller to manage priorities for multiple applications, OpenFlow
classes enable the controller to validate flow modifications an application makes against a set of
expected flow modification requests. This capability means that the behavior of an application
must match the intent that the application disclosed when it registered with the controller:
•The flow match must contain exactly the fields and field types that were disclosed when the
application registered with the controller. The controller validates field types but not field value.
•The action or instruction must fall into the category that was disclosed during registration.
An action is classified into one of the following categories:
FORWARD
DROP
PROCESS
STEAL
COPY
•The upper 16 bits of the flow modification cookie must match the upper 16 bits of the base
cookie that was issued during registration.
3.14 OpenFlow classes display49
3.14.2 Controller enforcement levels for OpenFlow classes
The following table lists the enforcement levels that the controller can use for applications that send
flows to switches.
DescriptionEnforcement level
none
weak
strict
The controller does not manage flow modification priorities or validate flow modification
requests:
• Applications that do not register OpenFlow classes with the controller are permitted to
send flow modifications to switches.
• The controller does not validate flow modifications, even for applications that register
OpenFlow classes with the controller.
• The controller does not replace logical priorities with actual priorities for flow modification
requests from any applications.
(Default) The controller manages flow modification priorities and validates flow modification
requests for applications that register OpenFlow classes:
• Applications that do not register OpenFlow classes with the controller are permitted to
send flow modifications to switches.
• The controller validates flow modifications from registered applications against the
OpenFlow classes that are registered.
• The controller replaces logical priorities with actual priorities for registered applications
only.
The controller manages all flow modification priorities and validates all flow modification
requests:
• Applications that do not register OpenFlow classes with the controller are not permitted
to send flow modifications to switches.
• The controller validates all flow modifications against the OpenFlow classes that are
registered.
• The controller replaces logical priorities with actual priorities for all applications.
3.14.3 OpenFlow classes display details
The OpenFlow classes screen displays the OpenFlow classes that are currently registered with the
controller:
DescriptionScreen component
Refreshes the list.Refresh
Flow Class ID
Cookie
Match Fields
Actions
Description
The symbolic name for the flow class. The prefix identifies the application that registered
the class; the suffix uniquely identifies the class.
The actual priority the controller assigns to flows of this class.Priority
The base value of the cookie assigned to this OpenFlow class. The application that
registered this class must use this base cookie when constructing flows that belong to
this class.
The types of match fields that are expected to be specified in flows that belong to this
class.
The general category of the action or instruction a flow that belongs to this class is
expected to include. For a list of categories, see “About OpenFlow classes” (page 49).
Short description of what the OpenFlow class does. The application describes the
OpenFlow class when it registers the class with the controller.
50Navigating the controller user interface
3.14.4 Changing the enforcement levels for OpenFlow classes
To change the enforcement level the controller applies to applications sending flows to switches,
change the value for the flow.mod.enforcement key of the
com.hp.sdn.ctl.of.impl.ControllerManager configuration component.
For more information about configuration components, see “Configurations screen” (page 25).
For information about the enforcement levels the controller can apply, see “Controller enforcement
levels for OpenFlow classes” (page 50).
3.15 Packet listeners display
The controller applications (and SDN applications) register packet listeners with the controller. The
order of processing an incoming packet is determined by the roles (Advisor, then Director, then
Observer), and then altitudes within a role (in decreasing value, with 0 the lowest altitude). An
incoming packet (OpenFlow Packet-In message) is wrapped in a Message Context (which also
holds a Packet-Out reply) which is passed to each packet listener in turn.
3.15.1 Packet listeners display details
The packet listeners screen displays the packet listeners that are currently running on the controller.
DescriptionScreen component
Refreshes the information on the screen.Refresh
Role
Altitude
# Samples
The role of the packet listener. Roles are one of the following:
DescriptionRole
ADVISOR
DIRECTOR
OBSERVER
Packets are given to packet listeners with role of ADVISOR first, DIRECTOR second,
and OBSERVER third. Every packet listener is guaranteed to see the packet-in message.
Depending on the action taken by higher altitude Directors, a lower altitude Director
may be too late to influence the packet processing.
The weight or priority this packet listener should have relative to other packet listeners
that have the same role. The controller gives packet listeners with higher numbers
priority over packet listeners with lower numbers.
The average time, in milliseconds, that the packet listener spent processing a packet.Average (ms)
The number of packets processed by that packet listener since the packet listener
registered.
Examines the incoming packet. Might add processing hints to
the message context, but does not modify the packet out
message.
Processes the packet. Might add actions or instructions to the
packet-out message. Can instruct the controller to block the
packet, or to send the packet out.
A passive observer who might examine the incoming packet
and any packet-out response.
3.15 Packet listeners display51
4 License Registration and Activation
4.1 Overview
NOTE:SDN applications can require licenses that are separate from the licenses for the controller.
Typically, you must have both a license for the controller and a license for each application. For
HP SDN applications, you register the license, obtain the license key, and activate the license on
the controller using the same methods you use to register and activate controller licenses. For
information about obtaining license keys for an application, see the administrator guide for the
application.
4.1.1 License registration and activation process
NOTE:To maintain license registration and activation across an HP VAN SDN Controller software
update, refer to “License types, usage, and expiration” (page 52).
After you have downloaded and installed the controller software, as described in the HP VANSDN Controller Installation Guide, you can begin the license registration and activation process.
The basic steps are:
1.Preparing for license registration and activation:
a.Verify registration prerequisites
b.Identify the Install ID displayed in the controller GUI.
2.Registering and activating a license:
a.Use the HP My Networking portal to enter your order information, register a license, and
obtain a license key
b.Use the license key to activate the license on the controller
3.Managing licenses:
•Transfer licenses:
1.Uninstall licenses to prepare for transfer
2.Transfer licenses to a new platform
3.Use new license keys to activate the licenses on the target controller.
4.1.2 License types, usage, and expiration
The following licenses are available for the HP VAN SDN Controller:
•High Availability “Add Controller” license (HP VAN SDN Ctrl HA E-LTU)—Enables the controller
to form a team for increased availability. The following guidelines apply:
•The minimum number of team members for an HP VAN SDN Controller team is three.◦
◦When forming a team, only one HP VAN SDN Controller base license is required, along
with at least two High Availability licenses, all on the same Master controller. Once a
team is formed, Add Nodes licenses can be added to the team leader for increased
support. In addition, you must:
–Use non-previously licensed controller installations to form the team.
–Use a new hardware platform (or Virtual Machine) with a new installation of the HP
VAN SDN Controller.
–Run the same software version on all controllers.
•Application Licenses—Refer to the administrator guide for the specific application.
52License Registration and Activation
4.2 Preparing for license registration
4.2.1 Verifying registration prerequisites
Before beginning the license registration and activation process, be sure you have:
•Obtained an HP My Networking portal user account.
•Obtained the order number or product registration ID, and e-mail address from your HP VAN
SDN Controller license order confirmation.
•Installed the HP VAN SDN Controller software and have the controller running, as described
in the HP VAN SDN Controller Installation Guide.
4.2.2 Identifying the install ID
Each controller installation generates a unique Install ID that is used for licensing activities.
To view the Install ID using the UI, select Licences from the navigation menu. In the Licenses screen,
the Install ID appears before the list licenses.
4.3 Registering and activating a license
Using your Install ID, you must now register your license on the My Networking portal. Doing this
results in a license key, which enables you to activate the license on the controller.
NOTE:If you are registering licenses in addition to the base controller license, HP recommends
you do so in the following order:
1.Register the base controller license.
2.Register any Add Nodes licenses, and then activate the last license key generated.
3.Register any High Availability licenses, and then activate the last license key generated.
4.Register any application licenses you have acquired.
4.4 Registering your license and obtaining a license key
To register your license and obtain a license key:
1.Log on to the My Networking portal at http://www.hp.com/networking/mynetworking.
2.Select My Licenses.
Locate the Order number or Registration ID field, as shown in Figure 25 (page 53).
Figure 25 Entering an order number or registration ID
4.2 Preparing for license registration53
3.Enter your order number or registration ID in the field provided (above), and then click Next.
•If you enter a registration ID, go to “step 5” (page 54).
•If you enter an order number, the Email field appears, as shown in Figure 26.
Figure 26 Entering an e-mail address
4.In the Email field, enter either the “Ship to” or “Sold to” e-mail address listed in your sales
order confirmation, and then click Next.
A license selection screen appears, as shown in Figure 27.
Figure 27 Selecting licenses
5.Select the license type, enter the quantity to be registered to your Install ID, and then click
Next.
54License Registration and Activation
NOTE:
•For an HP VAN SDN Ctrl Base SW w/ 50–node E-LTU license, the quantity must be 1.
•For HP VAN SDN Ctrl 50–node E-LTU or HP VAN SDN Ctrl HA E-LTU licenses, quantity is
the number of licenses to be installed with a single Install ID.
•For information on using this process for an application license, see the administrator
guide for that application.
The registration details screen appears, as shown in Figure 28.
Figure 28 Entering the install ID
6.In the Install ID field, enter your Install ID number. (See “Identifying the install ID” (page 53).
7.Optional: Enter a Friendly name and Customer notes for this license.
8.Click Next.
The end user software license agreement screen appears, as shown in Figure 29.
4.4 Registering your license and obtaining a license key55
Figure 29 Accepting the license agreement
9.To continue after reading the license agreement, select I accept all of the above terms, and
then click Finish.
The confirmation screen appears, as shown in Figure 30.
Figure 30 Reviewing your registration
10. Review your license registration details, and record the License key listed.
11. Optional: To download the license key file, click Save as, and then save it to your local hard
drive.
56License Registration and Activation
12. Optional: To e-mail the registration details:
a.Enter one or more e-mail addresses, separated by a comma or semi-colon in the field
provided.
b.Optional: Enter Comments about this license.
c.Click Send email.
13. Optional: If you want to register additional licenses for this order:
a.Click Register more for this order to return to the license selection screen shown in
Figure 27.
b.Repeat steps “5” (page 54) through 13 until you have registered all licenses.
To view your license information:
1.Click on My Licenses on the My Networking portal.
Figure 31 My Licenses tab
2.Click on View Licenses to see a screen similar to the following.
Figure 32 Viewing licenses
3.To view the information for the license you just loaded, click on the Select button for that
license. You will then see a screen similar to the following:
Figure 33.
4.4 Registering your license and obtaining a license key57
Figure 33 Viewing your license and other information
Record the license key in the above screen for use when you activate the license on the controller.
4.5 Activating a license on the controller
To activate a license on the controller, you must add the license key. If the controller has no licenses
listed, enter the license key for the HP VAN SDN Ctrl Base SW w/50–node E-LTU before you add
any other license keys.
Use the following procedure to add and activate a license using the controller UI.
1.From the navigation menu, select Licenses.
2.On the Licenses screen, enter the license key you acquired in “Registering your license and
obtaining a license key” (page 53) in the text box next to the Add button.
Entering the key in the field enables the Add button.
58License Registration and Activation
Figure 34 Enter the License Key
3.To activate the license, click on the Add button shown in Figure 34 (page 59).
The active license is displayed in the table below the Install ID and the Add button is greyed
out:
Figure 35 Active License Displayed on License screen
4.6 Managing licenses
4.6.1 Transferring licenses
You can transfer a license from one controller to another. To do so, you must first uninstall all
licenses from the controller.
NOTE:Keeping a license on one controller while transferring one or more other licenses from
the same controller to another controller is not permitted.
When upgrading to version 2.3, no special effort is required to preserve the licenses. Note that
the license transfer mechanism is only required when you want to switch the SDN Controller currently
running hardware. You must install the SDN Controller on the new hardware and transfer the
licenses to that new hardware before retiring the old hardware.
Before you transfer licenses
Before you transfer licenses, you must first:
•Uninstall all licenses, as described in “Uninstalling licenses to prepare for transfer” (page 60).
•Obtain an Install ID for each destination controller, as described in “Identifying the install ID”
(page 53).
4.6 Managing licenses59
4.6.1.1 Uninstalling licenses to prepare for transfer
When you deactivate a license, the controller generates an Uninstall Key for that license, which
you will need when you transfer the license. Be prepared to record the Uninstall Key for each
license you deactivate. The Uninstall Key is a long text string. For example:
To uninstall a license using the controller UI, use the following procedure.
1.From the navigation menu, select Licenses.
2.Select the license to uninstall.
3.Click Deactivate.
Click OK when the deactivation prompt appears:
4.Record the Uninstall key appearing in the Uninstall Key field for that license.
5.Repeat the preceding steps for each of the remaining licenses on the controller.
4.6.1.2 Transferring licenses
After you have uninstalled all of the licenses for a controller, you can transfer them to another
controller.
To transfer licenses:
1.Log on to the My Networking portal at http://www.hp.com/networking/mynetworking.
2.From the My Licenses section, select Transfer licenses to a new platform.
3.In the Search field, enter the Install ID for the controller from which you uninstalled the license,
and then click Search.
The transfer license screen displays a list of associated licenses, as shown in Figure 36.
Figure 36 Selecting licenses to transfer
4.Click the Select icon next to the license to be transferred.
The license details screen appears, as shown in Figure 37.
60License Registration and Activation
Figure 37 Reviewing details before transfer
5.Verify that this is the license you want to transfer, and then click Next.
The target install ID screen appears (Figure 38).
Figure 38 Entering target install and uninstall IDs
6.In the screen in Figure 38, do the following:
1.In the Target Install ID field, enter the Install ID of the controller to which you want to
transfer the license.
2.In each Uninstall field, enter a license uninstall key. (For more on acquiring uninstall keys,
see Section 4.6.1.1.)
4.6 Managing licenses61
NOTE:In order for the transfer process to succeed, you must enter an Uninstall value
for every registered license.
3.Click on the Transfer button in the lower-right corner of the screen.
New license registration information displays on the license transfer confirmation screen and
license details screen, as shown in Figure 39.
Figure 39 Viewing license transfer confirmation and details screens
7.Review the confirmation screen details.
8.For each license you are transferring, record the new license key so that it will be available
when you add and activate the license on the new controller.
9.Optional: To e-mail transferred license details:
a.Enter one or more e-mail addresses, separated by a comma or semi-colon in the field
provided.
b.Optional: Enter Comments about this license transfer.
c.Click Send email.
The license screen displays the status of the original licenses as Transferred, and the new Install
IDs as Active, as shown in Figure 40.
Figure 40 Review transferred license status screens
To register the transferred licenses on the new controller, see “Activating a license on the controller”
(page 58).
62License Registration and Activation
5 SDN Controller authentication
5.1 SDN Controller security guidelines
The HP VAN SDN controller communicates with different components, both internal and external
to the controller, via secure channels. This section documents these channels, their defaults, and
how to configure them in a deployment environment.
5.2 SDN Controller authentication
The SDN Controller identifies itself via Public-Key Infrastructure (PKI) for its communication with
external subsystems and other controllers. It uses a Java keystore and truststore to keep its private
key and public key respectively. For REST APIs, the controller does not rely on the truststore to
establish trust. Instead, it uses token authentication to authenticate the client. The client must present
a valid token via the X-Auth-Header to authenticate itself with the controller. Token authentication
is discussed more under “SDN Controller keystore and truststore locations and passwords ”
(page 64).
The controller ships with a self-signed certificate. Therefore, it is recommended that the self-signed
certificate be replaced by a certificate signed by a reputable Certificate Authority (CA). Also, the
default password for the keystore and truststore should be changed as well.
5.3 Creating SDN Controller keystore and truststore
1.Login to the system running the SDN Controller and stop the controller.
2.As the SDN user (i.e. sudo - sdn), do the following:
3.Back up your default /opt/sdn/admin/keystore and /opt/sdn/admin/truststore
to a safe location.
4.Create a new keystore using the following commands:
6.Send the sdn-server.csr to a CA to be signed.
The CA will authenticate you and return a signed certificate and its CA certificate chain. We
assume the signed certificate from the CA is named signed.cer and the CA's certificate is
root.cer. If root.cer is from your own internal CA, then you need to import root.cer
into your browser as an authority.
7.Import the signed root certificate into your keystores:
9.If you are operating a team of controllers in your environment, turn off self-signing for
inter-controller communication:
Under /opt/sdn/virgo/repository/usr, change the "selfsigned" value to false for the following
component:
com.hp.sdn.misc.ServiceRestComponent.properties
10. If you set up a different password than the default "skyline" password for your keystore, you
will need to edit /opt/sdn/virgo/configuration/tomcat-server.xml and change
the keystorePass value in the <Connector port="8443"…> tag to the new keystore
password.
11. Start the controller. Continue to the next section if you are using a different keystore and
truststore password than the default "skyline" password.
5.4 SDN Controller keystore and truststore locations and passwords
The SDN Controller keystore and truststore are referenced by several components, and thus need
to be updated for these components:
•com.hp.sdn.api.impl.AlertPostManager
•com.hp.sdn.misc.AdminRestComponent
•com.hp.sdn.misc.ServiceRestComponent
To change these configuration of these components:
1.From the navigation menu, select Configurations.
2.Select one of the three components listed above.
3.Select Modify.
4.Repeat for the other two components.
64SDN Controller authentication
Figure 41 Components that reference controller keystore and truststore
The values for keystore and keystore.password contain the keystore location and encrypted keystore
password respectively. The values for truststore and truststore.password contain the truststore
location and encrypted truststore password respectively.
5.5 Configuration encryption
Sensitive information such as tokens and passwords are stored encrypted on the SDN Controller.
However, to encrypt and decrypt these properties, the controller requires a master key that is
passed into the controller upstart script via an environment variable. To change the default master
key (recommended):
The Openflow controller component relies on PKI to establish mutual trust (2-way SSL) between
itself and the Openflow switches that it manages. It is recommended that the Openflow keystore
and truststore used for Openflow switch communication be separate from the SDN Controller’s
keystore and truststore used for north-bound communication.
5.6.1 Creating Openflow Controller keystore and truststore
The process for creating the Openflow keystore and truststore is similar to the steps outlined under
“Creating SDN Controller keystore and truststore” (page 63), and therefore is not repeated here.
The store names for both the Openflow keystore/truststore and the SDN Controller’s
keystore/truststore should be different. Please note that both the Controller and Device certificates
5.5 Configuration encryption65
must be signed by the same CA, so that the TLS connection will be established. See your switch’s
manual for information about configuring TLS on your switch.
5.6.2 Openflow Controller keystore and truststore locations and passwords
The Openflow Controller’s configurations for keystore/truststore are located in the
com.hp.sdn.ctl.of.impl.ControllerManager configuration. The keystore and keystore.password
properties capture the location of the keystore and the password of the keystore respectively.
Similarly, the truststore and truststore.password capture the location of the truststore and the
password of the truststore respectively.
Figure 42 Components that reference OpenFlow keystore and truststore
A controller restart is required if these configurations are changed.
5.7 REST authentication
The SDN Controller relies on token-based authentication to authenticate its REST APIs. In other
words, all REST APIs except the /auth and /rsdoc APIs require an authentication token embedded
in an "X-Auth-Token" header to be included with each REST request. The /auth API allows you to
obtain a token, while the /rsdoc API provides live REST API documentation information about the
controller’s REST API. The next section describes how to obtain a token from the /auth API.
66SDN Controller authentication
5.7.1 Openstack Keystone
The SDN Controller uses Openstack Keystone as an identity management for managing users,
generating tokens, as well as token validation. Upon installation, the SDN Controller creates the
following users and roles:
•User: sdn – This is the primary user that operates different SDN REST and UI operations. The
sdn user has roles sdn-user and sdn-admin.
•User: rsdoc – This is the primary user that is associated with API documentation operations.
The rsdoc user has sdn-user role.
•The Keystone version in use is based on the Folsom release. If a later Keystone version is in
use:
◦Ensure that it supports the Keystone v2.0 REST API.
◦Configure the token provider to use the UUID token (instead of PKI tokens). This is
The SDN Controller currently does not enforce role-based permissions (RBAC); however, it may
do so in the future. Also, applications installed on the SDN Controller may choose to enforce RBAC
per their security requirements.
To authenticate, one needs to present username/password to the /auth API as below (using curl
as an example):
CAUTION:Credential information (user name, password, domain, and authentication tokens)
used in cURL commands may be saved in the command history. For security reasons, HP recommends
that you disable command history prior to executing commands containing credential information.
The above call returns this example JSON data structure that includes the authentication token,
which, by default, expires in 24 hours:
One can continue using the same token for different SDN Controller APIs within the default 24-hour
period since token creation. If desired, one can change this default 24-hour timeout in the /etc/keystone/keystone.conf file. (See the OpenStack Keystone Administration Guide for more
information). The CachedTokenTTL value under the configuration properties
com.hp.sdn.adm.auth.impl.AuthenticationManager needs to match the timeout set by
Keystone as well to allow efficient caching of tokens.
5.7.2 Service and admin tokens
The Service token is used for internal communication between controllers and is not exposed to
the user. Likewise, the Admin token is used for the communication between the controller and the
Keystone server and is not exposed to the user.
That said, the values for these tokens can be changed via the UI under the Configurations for
AuthenticationManager. Note that for the Service token, all controllers in a team must have the
same Service token to communicate successfully. Likewise, for the Admin token, both the controller
token value and the Openstack Keystone "admin_token" in /etc/keystone/keystone.conf must
match for authentication to work.
5.8 Controller code verification
All controller code is signed by HP. Validating the certificate via jarsigner should return an HP
X.509 certificate similar to the following:
X.509, CN=Hewlett-Packard, OU=HPGlobal, OU=Digital ID Class 3 - Java
Object Signing, O=Hewlett-Packard, L=Andover, ST=Massachusetts, C=US
[certificate is valid from 11/14/12 4:00 PM to 11/15/14 3:59 PM]
X.509, CN=VeriSign Class 3 Code Signing 2010 CA, OU=Terms of use at
https://www.verisign.com/rpa (c)10, OU=VeriSign Trust Network,
O="VeriSign, Inc.", C=US
[certificate is valid from 2/7/10 4:00 PM to 2/7/20 3:59 PM]
[CertPath not validated: null]
If a controller jar or war file is tampered with, the jar verification fails, and the container does not
start up.
If an application is not signed by HP, or has its certificate trusted by the controller (see section
below), the application is not allowed to run on the controller.
5.8.1 Adding certificates to the jar-signing truststore
To deploy other signed applications onto the controller, use the Java keytool to import the public
certificate that was used to sign the application jars and/or zips into the controller jar-signing
truststore (/opt/sdn/admin/sdnjar_trust.jks):
The controller needs to be restarted for the new truststore to take effect.
5.8.2 Running the SDN Controller Without Jar-Signing Validation
The SDN Controller enforces jar-signing validation by default. For an experimental/development
environment where unsigned applications need to be deployed, jar-signing validation can be
turned off altogether:
1.Use the following command to stop the SDN Controller:
sudo service sdnc stop
68SDN Controller authentication
2.Modify the /opt/sdn/virgo/bin/dmk.sh script to add the following option to the list of
To enable jar-signing validation, remove the line containing the -Dsdn.signedJar=none option
from the /opt/sdn/virgo/bin/dmk.sh script and restart the controller.
5.9 Revoking Trust
5.9.1 Revoking trust via truststore
The controller components rely on the public certificates in the respective truststore to establish trust
with a given identity. Therefore, revoking trust from a client with a given public certificate amounts
to removing its certificate from the respective truststore. To remove a given certificate from the
truststore:
For the controller’s REST API, a CRL (Certificate Revocation List) may also be specified to allow
blacklisting of certain clients. This is done by modifying the /opt/sdn/virgo/configuration/
tomcat-server.xml file to include the CRL file location in the SSL connector:
For the change to take effect, restart the controller.
5.10 SDN administrative REST API
The main SDN Controller daemon (SDNC) is accompanied by an ancillary daemon process (sdna),
which runs under user sdnadmin in order to grant it access to some elevated privileges.
The administrative REST API can be used to securely perform various management functions in a
privileged context. It would be undesirable for the main SDN Controller process to possess those
privileges as it may be hosting execution of third-party code.
5.9 Revoking Trust69
The SDN Administrator daemon can be accessed via the REST API vi HTTPS on port 8081. The
access is secured through either token-based authentication or basic authentication, against the
locally running keystone server, which is the same as the main SDN Controller REST API.
The following set of features are accessible through the administrative REST API:
•SDN Controller daemon (sdnc) stop/start/restart
•Adding/removing the team leader IP alias (required only when in team mode)
•Downloading the ZIP bundle of log files
•Uploading upgrade Debian bundles and installing/removing Debian packages
•Uploading upgrade ZIP bundles and executing upgrade commands
•System reboot
The install process adds a number of sudoers entries for the sdnadmin user. These are as follows:
•/sbin/ifconfig
•/sbin/reboot
•/usr/bin/service
•/usr/bin/at
•/usr/bin/dpkg
All, or any, of the above entries can be blocked or removed from the sudoers configuration. The
/sbin/ifconfig entry is only required when running in teamed mode. Otherwise the controller
cannot migrate the team IP address from node to node as team leader changes.
The sdna daemon can be completely disabled by stopping the daemon by using the sudo servicesdna stop command and then removing the /etc/init/sdna.conf file.
5.11 Virgo admin UI access
The Virgo admin UI is configured to only be accessible via a local host. Access to this UI can be
made via http://localhost:8080/admin. This should not be used under normal circumstances, but
can be useful for debugging purposes.
To change the credentials of this console, get root console access to the machine(s) running the
HP VAN SDN Controller and edit the following file:
where role.admin defines the user and user.admin defines the password. This file needs to
be owned by user:sdn, group:sdn. Changes to this file require a restart of the controller to
recognize the new credentials.
To disable access to the Virgo Admin UI, either remove the following file or move it to a safe
location outside the pickup directory.
5.12 Virgo console access
This allows Virgo administrative access via ssh/telnet. This service is disabled by default. The
following file configures these properties and requires the controller to restart to recognize the new
settings:
The hybrid mode setting determines which packet-forwarding decisions are made by controlled
OpenFlow switches and which of these decisions are made by the controller itself.
•If hybrid mode is enabled (the default setting), the controller delegates normal packet forwarding
to the controlled switches, but overrides these switches for non-standard packet-forwarding
decisions required by installed applications for specific packet types. In this mode the controller
relies on the controlled switches to resolve loops and determine forwarding paths by using
traditional networking mechanisms (such as STP, OSPF).
•If hybrid mode is disabled, the controller makes the forwarding decisions for all packets in
the OpenFlow-controlled network. In this state, the controller resolves network loops and
determines forwarding paths.
Managing hybrid mode includes the following:
1.Viewing and (if needed) changing the hybrid mode configuration.
2.Coordinating the controller hybrid mode with the OpenFlow switch settings.
NOTE:In all cases, the controller only monitors or directs packets within OpenFlow instances.
The controller cannot direct or monitor packets outside of OpenFlow instances.
NOTE:For information on the switches that support can be used with the controller when
hybrid.mode is true, see the HP VAN SDN Controller and Applications Support Matrix.
6.2 Viewing and changing the hybrid mode configuration
1.Start the web interface on the controller.
2.Click on the Configurations tab.
3.Select the com.hp.sdn.ctl.of.impl.ControllerManager component.
4.Click on the Modify key.
5.Select the hybrid mode Value field.
Figure 43 Open the Controller Manager configuration
6.1 Overview73
Figure 44 Select the hybrid.mode Value field
In Figure 44 (page 74), the hybrid.mode field shows the current setting. Continue with the
following steps if you want to change the setting.
6.Set hybrid.mode to one of the following:
•true (the default): Enables hybrid mode. The controller makes packet-forwarding decisions
required by installed applications.
•false: Disables hybrid mode The controller makes all forwarding decisions. (Release 2.0
of the HP VAN SDN Controller operates only in this mode – pure OpenFlow mode. )
7.Restart the controller. In a controller team environment, restart all controllers in the team.
a.Close any instance of the web interface in which the controller may be running.
b.Using the command prompt at the root access on the Ubuntu system (sudo), restart the
controller with the following:
~$ sudo service sdnc restart
NOTE:In a controller team environment, a configuration change on one controller propagates
to the other controllers on the team. However, to implement a hybrid mode configuration
change, it is necessary to restart the controller. If the controller is operating in a team
environment, it is necessary to restart each controller in the team, as described above.
NOTE:You can also use the REST API to set or reset hybrid mode. See the "configs REST API"
section in the HP VAN SDN Controller REST API Guide
6.3 Coordinating controller hybrid mode and OpenFlow switch settings
6.3.1 Supporting hybrid mode on OpenFlow switches
The OpenFlow configuration on individual HP switches must support the controller hybrid mode
setting. Table Table 2 (page 74) shows the correspondence between the hybrid mode configuration
on the controller and the per-instance passive/active configuration on HP OpenFlow switches.
See the OpenFlow documentation for the specific switch.
See the latest OpenFlow documentation for HP switches for details on how to configure
passive/active mode (where applicable) and for how such switches behave if they lose their
control-plane connection to the controller.
6.3.2 Configuring controller settings to support hybrid mode
Network-related settings on the controller must agree with the controlled switches. Failure to achieve
agreement between the controller’s network-related settings and the settings in the controlled
switches may result in unpredictable network behavior. Table 3 (page 75) lists the specific
network-related controller settings that should agree with managed switches.
Table 3 Controller settings to support hybrid mode
Enable this setting if you
want your controller to
operate in hybrid mode
(service restart required).
NOTE:Path Diag Tool
will not work with flowmod
strict mode as that wasn’t
designed to allow PDT to
manipulate flow priority.
The age.multihop.links
when set to true makes
multihop.poll.interval valid.
So whatever interval is set
for this key becomes the
polling interval for
multi-hop links. Using
polling interval use can
control how fast the
multi-hop links need to be
purged from controller if
they are no longer active
in the network. If
age.multihop.inks flag is set
to false then multi-hop links
are not polled for their
liveliness and never get
purged from controller even
if they have gone down.
age.multihop.links
6.3 Coordinating controller hybrid mode and OpenFlow switch settings75
Flag indicating whether
multihop link aging is
enabled. Enable this setting
if there are switches in the
network that are not
controlled by the controller,
but the topology across
these switches must be
visible to the controller.
That is, if any controlled
OpenFlow switches in the
same OpenFlow instance
are separated by
non-OpenFlow switches,
use this setting.
Table 3 Controller settings to support hybrid mode (continued)
CommentsKeyController Configurations Component
NOTE:Anytime user
changes values for either
age.multihop.links or
multihop.poll.interval the
"OpenFlow Link Discovery"
app needs to be bounced
so that those newly
changed values take into
effect.
Set this value equal to or
greater than your network’s
DHCP lease time. Timeout
(in minutes) for nodes
learned via DHCP.
OpenFlow end-host
discovery via the ARP
protocol. Timeout (in
minutes) for nodes learned
via ARP.
OpenFlow end-host
discovery via the IP
protocol. Timeout (in
minutes) for nodes learned
via IP.
Whether or not the
controller will discover
nodes from all IP packets it
receives.
To view or reconfigure any of the above controller configuration components, click on the
component, then click on the Modify button. For more on this topic, see the "Configurations" section
in chapter 2 of this guide.
Figure 45 Configuration components to modify for hybrid mode support
76Hybrid mode for controlling packet-forwarding
NOTE:For information about version support for ip-control-table-mode command options, see
HP VAN SDN Controller and Applications Support Matrix.
For information about version support for hardware-only mode, see HP VAN SDN Controller and
Applications Support Matrix.
NOTE:OpenFlow 1.0 is the default version of OpenFlow for HP ProVision switches. OpenFlow
does not allow the controller to optimize flow location in hardware tables. For concerns about
line-rate data plane performance, configure all managed switches to use OpenFlow 1.3. Failure
to properly configure the switch in this way may cause packet loss or other problems associated
with high switch CPU utilization.
Uncontrolled switches in an OpenFlow Hybrid network are not visible to or controlled by the HP
VAN SDN Controller. Uncontrolled switches are either controlled by another controller (outside
the team) or not controlled at all (traditional networking). Traffic by such switches is independently
managed.
The VAN SDN Controller Path Diagnostic Tool is useful only when hybrid mode is disabled. When
hybrid mode is enabled, the controller does not monitor or direct all flows in the network. As a
result, the path diagnostic tool (PathDiagnosticManager) does not have visibility into all flows on
the network, and should not be used.
6.4 Controller packet-forwarding when hybrid mode is disabled
Figure 46 Controller operation with hybrid mode disabled
When hybrid mode is disabled (set to "false"), the controller examines and directs the packets in
all flows for the given OpenFlow instance. The controller forwarding decisions for flows in a given
instance are based on the requirements of the installed applications. The forwarding decision is
communicated to controlled switches through OpenFlow. In instances where the controller has not
provided the switch with a rule for how to forward a packet type, the switch sends the packet to
the controller and waits for the controller to provide forwarding instructions.
Hybrid mode is commonly disabled in networks that are either used for experimental OpenFlow
work (such as developing a controller application) or for networks that are completely new and
designed to be fully controlled by OpenFlow.
6.4 Controller packet-forwarding when hybrid mode is disabled77
6.4.1 Controller packet forwarding when hybrid mode is enabled
Figure 47 Controller operation with hybrid mode enabled
When hybrid mode is enabled (the default), the specific packet types for which the controller
monitors and overrides switch forwarding rules depends on the applications installed and running
in the controller. That is, the controller overrides normal packet forwarding rules in the OpenFlow
switch with application-specific forwarding rules, such as:
•copying ARP request/reply and DHCP offer/ACK packets to the controller so that it can
discover end-hosts
•stealing BDDP packets to the controller so that it can discover inter-switch links
•changing the priority on Lync packets to improve instant messaging speed
•monitoring DNS requests to detect dangerous end-host behavior
Packets in flows that the controller does not examine or direct are forwarded through normal
switching operations without controller intervention.
NOTE:HP recommends that hybrid mode be enabled when controlling traditional, established
networks where applications-related traffic is responsible for only a subset of the overall traffic load
on the network. Hybrid mode is commonly enabled in established networks where new applications
are installed and running on the controller, creating a need to override normal switching behavior
for specific flows.
6.4.2 Learning more about hybrid mode
For more on hybrid mode as it relates to OpenFlow, see the latest OpenFlow Switch Specification
on the Open Networking Foundation website. For a list of HPN switches that support OpenFlow
operation, see the latest edition of the HP VAN SDN Controller and Applications Support Matrix.
78Hybrid mode for controlling packet-forwarding
7 Team configuration
Standalone controller operation provides management for the OpenFlow switches in a network.
However, it does not provide high availability (HA), with the result that a controller failure leaves
the network in an unmanaged state. Configuring a team of controllers and a corresponding
controller region creates a high availability network with failover capability, resulting in a
continuously managed network in the event that a controller in the team goes down. Controller
teaming also provides centralized controller configuration and monitoring. This chapter describes
how to configure a controller team. See “Regional configuration ” (page 88) to configure a region
for a controller team.
NOTE:Teaming operation requires the High Availability “Add Controller” license (HP VAN SDN
Ctrl HA E-LTU). For licensing information, see “License registration and activation process” (page 52).
7.1 High availability
The default configuration of the SDN Controller is the system’s eth0 interface. When a controller
team is formed via REST with the team IP Address, an alias will be configured automatically by
the system and will attach to the eth0 interface by default. If the SDN Controller has multiple Ethernet
interfaces a different interface can be required for the team IP Address. In this case the configuration
/etc/sdn/admin/options may be changed using vim or emacs to reflect the desired configuration.
Each controller belonging to a team is a team member. To centralize team management and
control, one controller is designated as the team leader. Teaming is configured on one controller
and is automatically propagated to the other controllers in the team, regardless of which controller
becomes the team leader.
Once a team is configured, the configuration and monitoring of team members and their associated
OpenFlow switches is performed by the team leader. If the team leader goes down, another active
controller becomes the team leader. If a team leader fails and then recovers, it resumes operation
as only a team member.
7.3 Requirements for controller teams
•Team size: 3 controllers.
•All controllers in a team must be running the same software version.
•A team requires one IP address for each controller, plus one IP address assigned to the team.
If the current team leader goes down, the failover process includes keeping the team IP address
active on the new team leader.
NOTE:The IP address for each team member, including the team leader, is the IP address of the
machine on which each controller is configured. The team IP address is a separate address
determined by the Administrator.
Ensure that route configuration in the controller domain enables the controller team IP address to
be reached from all areas of the domain.
7.4 Configuring a controller team
In the HP VAN SDN Controller, teaming is configured using the REST API. This section describes
configuring a controller team using cURL commands.
7.4.1 Team configuration prerequisites
1.Install and start three standalone HP VAN SDN Controllers in the network. (See the latest HPVAN SDN Controller Installation Guide.)
2.Optional: To improve security, you can change the username and password from the default
settings on each of the standalone controllers in step 1.
3.Select any one of the controllers to use for configuring the team.
4.On the selected controller, acquire an Authentication Token. Use the following cURL command,
with the controller IP address, to acquire the token:
CAUTION:Credential information (user name, password, domain, and authentication tokens)
used in cURL commands may be saved in the command history. For security reasons, HP
recommends that you disable command history prior to executing commands containing
credential information.
80Team configuration
NOTE:The default domain and user settings are sdn. The default password setting is
skyline.
Examples of cURL commands in this guide use the --noproxy option, which is appropriate
where execution of cURL commands does not need a proxy to access controllers. If your
network is set up such that a proxy is needed to access controllers, use the --proxy option.
For details on cURL proxy options, visit http://curl.haxx.se/docs/manpage.html.
For example, in a controller using the default domain, user name, and password, the following
command generates the authentication token 1759f214479e4ffd9504acb42123ef40:
curl --noproxy 192.15.135.187 -X POST --fail -ksSfL
--request POST --url https://ip-addr:8443/sdn/v2.0/team --data-binary
'{"ip":"team-ip","members": [{"ip":"member-1-ip"},
{"ip":"member-2-ip"}, {"ip":"member-3-ip"}]}}'
NOTE:The member-ip-addr should be the IP address of the controller chosen to configure
the team.
3.After executing the command in step 2, the team elects a team leader. The team leader then
configures all team members and normal controller operation begins in the domain. The team
creation command does not block until the team creation is complete. You will need to check
the status of the system to verify the team was successfully created.
The team IP address is different from the individual controller IP
addresses. It is used as a virtual address for connecting to the
team leader.
7.4 Configuring a controller team81
Example 1 Configuration example
This example shows a team of controllers configured with the following team member values:
Member IP AddressesTeam IP Address
192.0.2.119192.0.2.100
192.0.2.125
192.0.2.127
Domain: sdn (the default domain name)
Username: myname
Password: mypass
NOTE:It is not mandatory that the team IP address be in the same subnet as the member IP
addresses. Other IP aliases can be used if the appropriate IP routes are present for the addresses
to be reachable and usable.
1.Enter the following cURL command to acquire the authentication token:
CAUTION:Credential information (user name, password, domain, and authentication tokens)
used in cURL commands may be saved in the command history. For security reasons, HP
recommends that you disable command history prior to executing commands containing
credential information.
[{"ip":"<member-1-ip>"},
{"ip":"<member-2-ip>"},
{"ip":"<member-3-ip>"}]}}'
Completing the above steps creates and enables the team.
Possible responses
Since team creation is asynchronous, the response is always 202 unless the ream configuration
(JSON) is not valid or there is a problem configuring the local controller. Possible codes are:
202 Accepted
400 Bad request
82Team configuration
401 Unauthorized
503 Service unavailable
In case the team is not created in a quorum or if the team is partially created an alert will be
posted.
Example of the alert description for team partially created
Disbanding a team returns the teamed controllers to standalone operation.This action initiates the
team delete. The REST call may return before the delete has completed. The admin needs to check
the system to see the running state of the system.
NOTE:Before disbanding a team, delete the region configuration for that team. See “Deleting
a region” (page 91).
1.Acquire an authentication token for the team leader. (See step 4 of “Team configuration
prerequisites” (page 80).)
2.Using the token acquired in the preceding step, execute this cURL command to disband the
team:
Since team deletion is asynchronous, the response is always 202 unless there is a problem
configuring the local controller as standalone. Possible codes:
202 Accepted
400 Bad request
401 Unauthorized
503 Service unavailable
In case the team is not deleted in a quorum or if the team is partially deleted an alert will be posted.
Example of the alert description for team partially deleted
192.168.1.3]"
The error for failures is not part of the alert, however an entry to the log files will
be added with such errors.
Example of the alert description for team deletion failed in a quorum
"Team could not be deleted on a quorum"
To fix the controllers where the delete operation failed, the user will have to execute
the delete operation again on the failed controllers.
7.7 Controller fault tolerance
The threshold for controller fault tolerance is 2n+1, where n is the number of failed controllers
allowed in an active team. HP VAN SDN Controller teaming supports a team of three controllers.
In a team of three controllers, n = 1; one controller in a team of three can fail without suspending
team operation. If one such controller does go down, a stateful failover occurs, in which the
remaining two members resume together from the point of failure, and the team continues to
operate. As long as any two of the teamed controllers in the network are active, the network remains
in a managed state. If a second controller in the team fails, then n exceeds the maximum allowed,
and the remaining controller transitions to a SUSPEND state. When a controller is suspended
because it is in the minority, it will return a 503 error to any REST API calls. When at least two
controllers in the team become active, a new team manager is elected and the team operation
resumes.
7.7 Controller fault tolerance85
NOTE:In teamed controller operation, maintaining the integrity of the controller state information
requires that a minimum of two controllers in a team of three must be active at all times. The failure
of all but one of the controllers places the entire team in a SUSPEND state, and the domain serviced
by the team becomes unmanaged. (The remaining teamed controller does not operate in standalone
mode.)
A controller may also transition to Suspended state because of healthy reasons. The following
summarizes the controller states:
•Active: The controller is healthy and part of a cluster with quorum (At least two controllers in
a team of three).
•Suspended: The controller is unhealthy or part of cluster with no quorum (at most one controller
in a team of three).
•Unreachable: If the connection between two controllers is broken then they see each other as
unreachable.
Considerations:
•A system never sees itself as unreachable. Unreachable is a state for the remote controllers.
•Health does not affect cluster quorum. If in a team of three controllers two are unhealthy, as
long as there is a link between controllers the third one will be active. A controller transitions
to suspended state if quorum is lost to protect data consistency.
7.8 Error log for team configuration
Table 4 Error log for team configuration
Build version not consistent on all the systems.
Local member must be part of the team configuration.
Team size must be greater than zero.
Team could not be created on a quorum.
Team not configured on this system.
DescriptionLog message
Not all systems on the team have the same controller build
version. Update the team as needed to have the same build
version.
The team configuration JSON is not valid.Invalid configuration.
If the members list from the JSON configuration does not
include the system where the team is being created (The
local system).
Teaming is already running on the system.A team has already been created.
Team configuration has failed on a majority of systems.
e.g. a team of three systems has experienced failures on
two systems.
A team delete has failed on a quorum number of systems.Team could not be deleted on a quorum.
An attempt has been made on a standalone controller to
disband a team.
See “Team alias node” (page 87).Programming team alias ip-address failed.
See “Team alias node” (page 87).Unprogramming team alias ip-address failed.
Recovering from Partial Team Creation
Recovering from Partial Team Deletion
86Team configuration
In case the team is not successfully created in all controllers,
it is not possible to fix the failed controllers without
disbanding the team. To recover from this failure it is
recommended to delete the team, fix the problem in the
controllers where the create operation failed, and try again.
If the team is not successfully deleted in all controllers, the
failed controllers might go to suspended mode because
they might not have quorum – they won’t be able to connect
Table 4 Error log for team configuration (continued)
DescriptionLog message
to those controllers where the operation was a success. To
recover from this failure it is recommended to delete the
team on each failed controller so configuration files are
removed and so the controllers transition to standalone
mode.
Table 5 Success log
DescriptionMessage
Team created.
Team created with the following configuration: [Team IP:
<team ip>, [Members<member list>].
Team disbanded.
Programmed Team alias: <team ip>.
Unprogrammed Team alias: <team ip>.
Table 6 Team IP error log
DescriptionMessage
Exception while checking alias: <team ip>, <exception>
Team alias: <team ip> already programmed
Exception while programing alias: <team ip>, <exception>
Exception while unprograming alias: <team ip>,
<exception>
7.8.1 Team alias node
An IP Address (North-Bound IP) alias is created on the node that is elected as team leader to allow
a controller team to be accessible with a single IP Address no matter which controller is the leader.
This IP Address is provided as part of the team configuration when creating a team. If the elected
node stops being team leader, the team IP Address must be removed from the aliases because this
address must be reassigned to the actual team leader. If assigning or removing an alias fails, one
of the following messages appears in the Alert log:
•Programming team alias ip-address failed
•Unprogramming team alias ip-address failed
In either of these instances, the condition is logged and the team continues to operate. In this case
you can manually program the team alias using the following commands:
7.8.1.1 Configuring the alias
sudo ifconfig Mask:network_masketh0:0 controller_ip netmask network_mask
eth0 up
7.8.1.2 Disabling the alias
sudo ifconfig Mask:network_mask eth0:0 controller_ipnetmask
network_masketh0 down
7.8 Error log for team configuration87
8 Regional configuration
8.1 Overview
This chapter describes the configuration needed to support High Availability (HA) for SDN
Controllers to OpenFlow switches. This is done by creating region configurations in the controllers
using the REST APIs provided by the Role Orchestration Service (ROS).
Putting the region configurations in place in a controller team ensures seamless failover and failback
among the configured controllers for the specified network devices in a region. That is, when a
master controller experiences a fault, the Role Orchestration Service ensures that a slave controller
immediately assumes the master role over the group of network devices to which the failed controller
was in the master role. Once the failed controller recovers and rejoins the team, the Role
Orchestration Service ensures restoration of this controller’s role; that is, the rejoining controller
takes back the role for which it was configured with respect to the other network devices. If the
controller was configured to operate as the master in a region, then it would be restored to the
master role. If it was configured to operate in the slave role, it would resume operation in the slave
role.
Once the region definition(s) are in place, the ROS ensures that a master controller is always
available to the respective network element(s) even if the configured master fails or there is a
disruption of the communication channel between the controller and the network device(s).
NOTE:All region configuration operations (create, update, refresh, and delete) using the REST
API require that every controller specified in the region, including the master controller and all
slave controllers, be in an active state. If any controller in the region is in a "down" state, then the
region configuration operations are disallowed
8.1.1 Failover
ROS triggers the failover operation in two cases:
•Controller failure: The ROS detects a controller failure in a team through notifications from the
teaming subsystem. If ROS determines that the failed controller instance was a master for any
region, it immediately elects one of the backup (slave) controllers to assume the master role
over the affected region.
•Device disconnect: The ROS instance in a controller is notified of a communication failure
with network device(s) through the Controller Service notifications. It instantly communicates
with all ROS instances in the team to determine if the network device(s) in question are still
connected to any of the backup (slave) controllers within the team. If that is the case, it elects
one of the slaves to assume the master role over the affected network device(s).
8.1.2 Failback
When the configured master recovers from a failure and rejoins the team, or when the connection
from the disconnected device(s) with the original master is resumed, ROS initiates a failback
operation in which the master role is restored to the configured master as defined in the region
definition.
The next section provides details about the various REST operations that can be used to create,
update, and delete region configurations.
NOTE:Examples of cURL commands in this guide use the --noproxy option, which is appropriate
where execution of cURL commands does not need a proxy to access controllers. If your network
is set up such that a proxy is needed to access controllers, use the --proxy option. For details
on cURL proxy options, visit http://curl.haxx.se/docs/manpage.html.
88Regional configuration
8.2 Creating a region
A region should have a minimum of two controllers. This example illustrates the cURL command to
use for creating a new region definition with the following controllers and devices:
NOTE:In this example, assume the following token has been acquired:
"X-Auth-Token:54a6f80a9ae243db89bfa05de4ced51d"
To acquire the authentication token for a controller, see “License registration and activation process”
--request PUT --url https://controller-ip:8443/sdn/v2.0/regions/region-id --data-binary "{
For example, to update the region created in “Creating a region” (page 89), with a new switch
(10.250.100.22), you would insert the master controller authentication token and the region ID
(uid) returned in the above example.
In case of an inconsistency, and as a troubleshooting feature, you can initiate a re-assertion of the
configured roles in a region by using the "refresh" cURL command. This command refreshes all
devices in the region.
NOTE:A refresh should be done only when the master controller in the region is up.
The following is the JSON structure for refreshing a selected OpenFlow device in a region. Using
this additional command structure limits the refresh to the specified device. This is not needed if
all devices in the region are to be refreshed:
This chapter describes controller backup and restore actions using cURL commands. For the REST
APIs related to backup and restore, go to /restore and /backup in the RSdoc facility on the
controller. (Using a Google Chrome browser window on the controller, enter https://system_ip_address:8443/api .)
NOTE:You cannot use RSdoc to download or upload files.
NOTE:Only one backup, restore, upload, or download operation can be active at any time on
a given controller or controller team. Parallel operations are not supported.
9.1 Backing up a controller
A controller backup takes a snapshot of the controller state, and includes the following in a single
file:
•Controller databases
•License compliance history and metrics log data
•In a teaming environment, the teaming configuration
•Application data for applications that have implemented backup/restore functionality.
NOTE:Applications using Cassandra in a teamed mode cannot use the backup and restore
services in the SDN Controller. In this case, off-the-shelf solutions are recommended, such as rsync
or Amanda.
Examples of cURL commands in this guide use the --noproxy option, which is appropriate where
execution of cURL commands do not need a proxy to access controllers. If your network is set up
such that a proxy is needed to access controllers, use the --proxy option. For details on cURL
proxy options, visit http://curl.haxx.se/docs/manpage.html.
9.1.1 Backup operation
A controller backup includes the controller configuration and databases in one *.zip file.
•Backups run in the background, and, except for locking the Cassandra database to prevent
writes, do not interrupt system operation.
•Whether operating in a team or operating in standalone mode, each controller is backed-up
as a single system.
•When the controller is deployed in a VM, standard VM backup/restore tools (such as Snapshot
or Clone) can be used.
•When the controller is deployed on bare metal, standard Linux server-based backup/restore
tools (such as rsync, LVM snapshot, and Amanda/Zmanda) can be used.
•To complete a teamed backup, no controller can be in a failed state. (A controller team must
have three controllers.)
•On any controller or controller team, only one operation can run at any given time (backup,
restore, upload, or download). Also, starting a new backup while another backup is being
downloaded creates an error condition and halts the new backup.
•Only authenticated users are allowed to create and restore backups. In some cases the domain
name is also required.
92Backing up and restoring
NOTE:The default domain name is sdn. The default username is also sdn. The default password
is skyline.
The controller does not save a non-default domain, user name, or pass-word across a backup.
Changing these settings to non-default values and later backing up the controller, resets these
settings to their defaults in the backup file. Later restoring the backup to the controller resets the
domain, user name, and password to their default settings in the controller.
For backup and restore of the Keystone configuration and database, see “Backing up and restoring
the keystone configuration and database” (page 97).
•If uploading a backup fails, then no backup version remains on the system.
•Starting a new backup replaces any earlier backup remaining in the controller. If a backup
is being downloaded when a new backup is started, the new backup halts.
•Metering time-series data is not encompassed by the controller backup process. There can be
a large amount of data, possibly tens of GBs in size, which is keyed to time. Not only is the
time series data impractical to back up because of its size, but upon restoring it there is a
likelihood that some of the restored data will not be usable because it will be older than the
sliding window of time that metrics are retained for on the controller. However, there is one
metering file that is backed up and restored. It contains a mapping of metric descriptor
information (such as the ID of the application that created a metric and the metric's primary
tag, secondary tag, and name) to the UID that was assigned to each metric. When a restore
is performed, this file is restored, and any existing metering time-series data is deleted because
it might not match the restored file. The mappings that are restored may, depending upon
time elapsed since the backup was taken, be used to assign the same UID to a metric created
following the restore (and subsequent controller restart) that was assigned to the metric before
the backup was taken. This provides continuity for a metric across the time spanned between
backup and restore because all data for the metric is keyed to the same UID. Thus, while
time-series data from before the restore was not retained during the restore, UIDs used to key
time-series data that was exported to external tools or storage before the restore will continue
to be used for the same metrics.
9.1.2 Backing up a controller
1.1. Acquire the authentication token for the controller backup:
CAUTION:Credential information (user name, password, domain, and authentication tokens)
used in cURL commands may be saved in the command history. For security reasons, HP
recommends that you disable command history prior to executing commands containing
credential information.
2.Acquire the controller uid:
curl --noproxy controller_ip
--header "X-Auth-Token:auth_token" --fail -ksSfL --request GET
9.1.3 Downloading a backup from the controller to another location
The backup file should be downloaded to a secure location. Choose the correct name now; you
cannot rename the files later or you will get a file corruption error when you attempt to upload it
for a restore.
NOTE:The file name must begin with sdn_controller_backup.
•Download the Backup.zip File:
curl --noproxy controller_ip
--header "X-Auth-Token:auth_token" --fail -ksSfL --request GET
•Do not run backup while making configuration changes. Instead, run the backup after
completing configuration changes. Otherwise, an inconsistent system state could result with
a subsequent restore.
•Always back up all of the controllers in a team after a configuration change. Just backing up
a subset of the controllers is not sufficient.
•Back up all of controllers in a team at approximately the same time. (Team backups can be
in sequence or in parallel). Do not allow days to pass in-between backups of different controllers
in the same team.
•A completed backup should be downloaded from the controller to another location for
safekeeping. Include the IP address in the backup filename, so you can easily determine which
backup belongs to which controller in a team. Recommended file naming is:
◦sdn_controller_backup_ip-address.zip
•Store the backup files you take off each controller in the team together, so they can easily be
retrieved for a future restore.
NOTE:If any controller in a team fails to complete the backup, start the backup over for all
members of the controller team.
Examples of cURL commands in this guide use the --noproxy option, which is appropriate where
execution of cURL commands do not need a proxy to access controllers. If your network is set up
such that a proxy is needed to access controllers, use the --proxy option. For details on cURL
proxy options, visit http://curl.haxx.se/docs/manpage.html.
94Backing up and restoring
9.2 Restoring a controller from a backup
9.2.1 Restore operation
NOTE:To restore a controller from a backup, it is necessary to re-install the controller.
•In a controller team environment each active controller is restored as a single system.
•When the controller is deployed in a VM, standard VM restore tools (such as Snapshot or
Clone) can be used.
•When the controller is deployed on bare metal, standard Linux server-based backup/restore
tools (such as rsync, LVM snapshot, and Amanda/Zmanda) can be used.
•If a backed-up controller in a team fails, use single-system restore to restore the controller. The
HA synchronization updates the controller to the latest version.
•The controller blocks traffic over OpenFlow ports during a restore.
NOTE:The controller ceases to operate during a Restore operation.
9.2.2 System restore requirements
A system backup can be restored only to a system having the following:
•The same controller version that existed at the time the backup was taken.
•The same network settings (IP address) as were present at the backup.
•The same license ID as was in effect when the controller was installed.
NOTE:If you have modified any environment—specific settings in files such as
/opt/sdn/virgo/options or /etc/init/sdnc.conf, ensure that the appropriate changes
are made to these files after you re-install the controller and before you start the restore. For example,
the network interface that the Virgo service uses (default: eth0) may be eth1 or another setting
on some systems.
9.2.3 Restoring a controller from a backup
1.Uninstall the controller(s) to be restored. If this is a rollback to a previous state, uninstall all
controllers.
2.Before restoring a controller, set CTL_RESTORE_INSTALL_MODE=True in the ~/.sdn_install_options file in the home directory. If this file is not present in the directory,
create it with the CTL_RESTORE_INSTALL_MODE entry. If the file is already present, ensure
that it includes the CTL_RESTORE_INSTALL_MODE entry. This entry directs the installer to
perform the necessary changes to direct the controller to start in recovery/restore mode, during
which OpenFlow activity is suspended for the subject controller.
3.Re-install the failed controller(s), making sure to use the same IP address configuration. During
the re-installation, log messages similar to the following appear in the Audit Log:
root@mak:~/dev/controller/dist# dpkg -i hp-sdn-ctl_1.11_amd64.deb
Selecting previously unselected package hp-sdn-ctl.
(Reading database ... 212350 files and directories currently installed.)
Unpacking hp-sdn-ctl (from hp-sdn-ctl_1.11_amd64.deb) ...
Setup has detected a compatible jre-headless - 1.7.0_25
Creating system group 'sdn'...
...done.
Creating system user 'sdn'...
...done.
Creating system user 'sdnadmin'...
...done.
Configuring PostgreSQL database...
* Restarting PostgreSQL 9.1 database server [ OK ]
9.2 Restoring a controller from a backup95
...done.
Adding SDN-related items to Keystone...
keystone stop/waiting
keystone start/running, process 11514
...done.
Setting up hp-sdn-ctl (1.11) ...
Certificate was added to keystore
CTL_RESTORE_INSTALL_MODE option is set
SDN controller will be started in restore mode
sdna start/running, process 11633
sdnc start/running, process 11636
Processing triggers for ureadahead ...
CAUTION:Do not re-install any applications before you complete the restore process. The
restoration adds data from the backup file into the current database contents. If you re-install
applications that are part of the controller backup, then those applications might end up with
duplicate or conflicting entries in their database. If required, only re-install applications after
you have completed all steps of the restore process.
4.Acquire the authentication token for the system restore:
CAUTION:Credential information (user name, password, domain, and authentication tokens)
used in cURL commands may be saved in the command history. For security reasons, HP
recommends that you disable command history prior to executing commands containing
credential information.
5.Acquire the controller uid:
curl --noproxy controller_ip
--header "X-Auth-Token:auth_token" --fail -ksSfL --request GET
--url https://controller_ip:8443/sdn/v2.0/systems
6.Use the following cURL command to set the IP address:
curl --noproxy controller_ip --header "X-Auth-Token:auth_token" --fail -ksSfL --request PUT
"https://controller_ip:8443/sdn/v2.0/systems/controller_uid"
--data-binary '{"system":{"ip":"controller_ip"}}'
7.Perform a single controller restore onto each controller needing restoration.
a.Upload the backup files that will be restored:
curl --noproxy controller_ip -X POST --fail -ksSfL
8.For a controller team, wait for HA synchronization to complete to all the controllers and wait
for the team to become connected. The team can take a few minutes to come back up. Be
sure to verify that team status has all controllers as ACTIVE and one of the team members is
a leader.
96Backing up and restoring
curl --noproxy controller_ip
--header "X-Auth-Token:auth_token" --fail -ksSfL --request GET
•If less than a quorum of controllers are restored, then those controllers are updated to the
latest state of the running team via HA synchronization. (A quorum is n/2+1 where n is
the total number of controllers in a team. In a three-controller team, a quorum is two
controllers.)
•If the entire team is restored, then each controller is reset to the previous backed-up state.
9.After the controller restore is complete, change the value of CTL_RESTORE_INSTALL_MODE
to false in the ~/.sdn_install_options file on each controller so that it does not impact
a future installation. This is because a future installation of the controller may not involve
starting in recovery mode. (This is the opposite of step 2 of “Restoring a controller from a
backup ” (page 95).)
10. It is possible to query the restore status by using the get command at v2.0/restore/status. Since the restore is not hitless, the REST query will fail until the controller has
successfully restarted.
NOTE:To restore a controller team, restore each controller as a standalone controller. See
“Distributed (team) backing up and restoring ” (page 97).
NOTE:Attempting to restore a backup taken on any release prior to version 2.3 will not
complete.
9.3 Distributed (team) backing up and restoring
In a team environment, all team members must successfully complete the backup.
A team backup consists of using the single-system backup process. All controllers in the team must
be active, and all of the backups in the team should be done either serially at approximately the
same time, or in parallel. To complete a teamed backup, no controller can be in a failed state. (A
controller team must have three controllers.) In a team environment, all team members must
successfully complete the backup for the backup to be successful.
A team restore consists of using the single-system restore process on each controller in the team.
Like backups, a system restore in a team should be done either serially at approximately the same
time, or in parallel.
NOTE:When restoring a team, be sure to re-install all of the controllers, before initiating the
actual restore on any of the controllers.
Also, if backing up the team controllers was done serially, then the restore of the team controllers
should be done in reverse order.
A controller that fails a restore operation is not allowed to rejoin the team, and must be re-added
as a new controller.
There are reference scripts to automate the backup and restore of an entire team. See “Scripts”
(page 121).
9.4 Backing up and restoring the keystone configuration and database
Backup/Restore for the Keystone configuration and database are separate actions from the controller
Backup/Restore. The backup/restore does not backup any keystone related configuration/credentials
therefore any changes made to keystone will be lost after the restore.
NOTE:These instructions apply to the default local Keystone instance (Keystone 2012.2) as
specified in the HP VAN SDN Controller Installation Guide. If you are using a different Keystone
installation, please follow the OpenStack instructions for backup/restore of the Keystone instance
specific to your installation. For OpenStack documentation, visit http://docs.openstack.org.
9.3 Distributed (team) backing up and restoring97
10 Requirements for applications
10.1 Application requirements
Any application to be installed using application manager on the controller must meet the following
requirements:
•It must be in a zip format.
•The zip file must be on the same system as the controller.
•It must contain an application descriptor file containing key value pairs of the attributes
The application descriptor file must contain the following attribute key value pairs. If a key is missing
or the key value is invalid, the application upload will fail and you will not be able to deploy this
application.
•id – Unique string that identifies this application. No other application may have this value.
It may contain alpha-numeric characters and the period, underscore, and dash characters.
The id string should not start with a dash or period character and can’t exceed 255 characters.
HP recommends you use the same convention that Java uses for class paths. For example:
com.hp.sdn.app-name.
•name – User visible name for this application. The value must follow the rules for a properly
formatted Java properties file key value.
•version – OSGi version number. A valid OSGi version number is composed of the following:
major-#.minor-#.micro-#.alpha-numeric-qualifier
Note that not all elements are required. See the OSGi version documentation for the precise
version string format rules. Typical examples might be: 6.24.0.build64 or 6.27.
10.3 Application descriptor optional attributes
The following attribute key-value pairs are optional.
•order – Comma separated list of bundle symbolic names indicating the order each bundle
should be started in. The first bundle in the list is started by OSGi first, the last bundle in the
list is started last.
•scoped – true/false. Defaults to false. If true, all services (APIs) supplied by the application
are private to the application. Note: OSGi declarative services cannot be used in the
application when scoped is set to true.
•atomic – true/false. Defaults to true. If true, all parts/components of the application are treated
as an atomic unit by OSGi, when starting/stopping/deploying the application. For example,
if one of the application bundles/components fails to start, then none of the
bundles/components that make up the application will start.
•vendor – User visible name of the vendor that created this application. The value must follow
the rules for a properly formatted Java properties file key value.
•description – Description for this application. The value must follow the rules for a properly
formatted Java properties file key value.
98Requirements for applications
10.4 Application zip file content criteria
The application zip file contains all of the component files that make up an OSGi application. In
order for the Application Manager to accept this as a valid application, certain criteria must be
met:
•Must contain one file with a “.descriptor” extension containing the key-value pairs described
above.
•Must contain at least one bundle (JAR), PAR, or WAR file.
•All application component files must be valid OSGi artifacts. That is, all JAR, PAR, and WAR
files must contain a manifest file with valid OSGi meta-data in it.
•The application must be self-contained, in that any third party dependency not already delivered
by the SDN Controller must be included with the application. Note that in most cases you
must convert the third party JARs into OSGi bundles or embed the third party content in the
application. The details on how to accomplish this is beyond the scope of this manual and
you should consult the appropriate OSGi/Virgo reference documentation.
•By default, all JAR files must be signed by a trusted authority. Note that this can be disabled
in the controller. See “Running the SDN Controller Without Jar-Signing Validation ” (page 68).
•You may also sign the application zip file itself. Verifying that application zip files have been
properly signed, have not been modified, and use a trusted certification can be enabled
through the the AppManager "verifyZips" property value in "Configurations". If enabled, only
applications that are signed by a trusted authority can be downloaded to the controller.
•The application must be properly signed by an authority that is recognized by the SDN
Controller. For the SDN Controller to recognize a trusted authority, the public certificate used
to sign the jar and/or zip files must be placed into the /opt/sdn/admin/sdnjar_trust.jks
keystore.
A Virgo Plan file will be used if provided, but is not required. The Application Manager will only
deploy JAR, PAR, WAR, Plan, and “.properties” files. Other files in the application zip file are
ignored unless they are declared as an artifact in a Plan file.
10.5 Application state and OSGi artifacts
In the default state, or when an application has been started, it is in the ACTIVE state and is
servicing requests. Application states include the following:
Table 7 Application States
DescriptionState
The application is running and servicing requests.ACTIVE
A new application has been downloaded to the controller and is ready to be installed.STAGED
UPGRADE_STAGED
UPGRADING
A new version of an existing running application has been downloaded to the controller and the new
version is ready to be installed (upgrade/downgrade).
A transitive state indicating a new application is in the process of being installed.INSTALLING
A transitive state indicating the existing application is being stopped and a new version of the
application is being installed.
DISABLED
A transitive state indicating a non-installed version of an application is being deleted from the controller.CANCELING
A transitive state indicating the application is in the process of being disabled (stopping).DISABLING
The application is disabled (stopped). A disabled application is not automatically started when the
controller restarted.
A transitive state indicating the application is being started.ENABLING
10.4 Application zip file content criteria99
Table 7 Application States (continued)
DescriptionState
A transitive state indication an application is being stopped and completely removed from the controller.UNINSTALLING
RESOLVED
The application is stopped and not servicing requests. An application can only be in this state when
it is stopped externally to the SDN Controller (e.g. the virgo console).
Table 8 Error condition management
NEW > STAGEDNEW > UPGRADE-STAGED
STAGED > ACTIVE
UPGRADE-STAGED > ACTIVE
ANY STATE – UNINSTALLED
DescriptionState
If an error condition occurs when “staging” the application,
then it actually does not exist. (Error conditions in this stage
clean up after themselves.)
If an OSGi deployment exception is encountered, the
application is moved to DISABLED if it fails to deploy as it
is. If a File I/O or URI exception is encountered, the
application remains in the installing state.
If an exception is encountered (OSGi deployment, File I/O,
or URI), rollback attempt is made, as listed below.
(Depending on the original exception, not all options may
be possible).
1. Calls AppStore.deleteStore on the upgraded version of
the application.
2. Attempts to redeploy the original version of the
application.
If any exception is encountered, the application remains
in UNINSTALLING state
ANY STATE – DISABLED
DISABLED > ENABLED
If an exception is encountered, remains in DISABLING
state.
If an OSGi deployment exception is encountered, the
application is moved to the DISABLED state if it fails to
deploy as it is. If any other exception is encountered (file
I/O or URI), the application remains in the ENABLING
state.
To access the link to the OSGi artifacts for an application, click on the bullet for the application
in the web GUI. For example, clicking on the bullet for the “Path Diagnostics” application displays
the link to identity of the associated OSGi artifacts:
Figure 48 Links to OSGi artifacts associated with individual applications
100 Requirements for applications
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.