Licensing Requirements
For a complete explanation of Cisco NX-OS licensing recommendations and how to obtain and apply licenses, see the Cisco NX-OS Licensing Guide.
The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
Cisco Plug-in for OpenFlow, Release 2.0.2 provides better control over networks making them more open, programmable, and application-aware and supports the following specifications defined by the Open Networking Foundation (ONF) standards organization:
OpenFlow Switch Specification Version 1.0.1 (Wire Protocol 0x01) (referred to as OpenFlow 1.0)
OpenFlow Switch Specification Version 1.3.0 (Wire Protocol 0x04) (referred to as OpenFlow 1.3).
This chapter contains the following sections:
For a complete explanation of Cisco NX-OS licensing recommendations and how to obtain and apply licenses, see the Cisco NX-OS Licensing Guide.
A Cisco device and its corresponding operating system that supports the installation of Cisco Plug-in for OpenFlow.
|  Note | A compatibility matrix is delivered with each Cisco application. Refer to this matrix for information about the operating system releases that support features and infrastructure necessary for a particular application, such as Cisco Plug-in for OpenFlow. | 
An open virtual application (OVA) package that is compatible with the device operating system and downloaded from an FTP server connected to the device.
A controller installed on a connected server.
| OpenFlow Version | Supported Controllers | 
|---|---|
| OpenFlow 1.0 | Extensible Network Controller (XNC) 1.0, POX, or Ixia controllers | 
| OpenFlow 1.0 | Cisco Nexus Data Broker (NDB) 2.1.0 | 
| OpenFlow 1.3 | Ixia or OpenDaylight | 
The required disk storage available on the device for installation and deployment of Cisco Plug-in for OpenFlow. Recommended disk space per Virtual Device Context (VDC) is 700 MB.
You cannot configure a bridge domain, Virtual LANs, and virtual routing and forwarding (VRF) interfaces on a Cisco Plug-in for OpenFlow logical switch.
Cisco Plug-in for OpenFlow is not supported on default VDC.
OpenFlow hybrid switch Integrated model is not supported. OpenFlow hybrid switch (ships-in-the-night) model is supported with physical port separation with virtual device contexts (VDCs). OpenFlow and non-OpenFlow ports must be configured on different VDCs.
Reachability to controller via Switched Virtual Interface (SVI) is not supported.
A routing and switching protocol must not be enabled on interfaces that are allocated to OpenFlow VDCs.
The following is a subset of OpenFlow 1.3 functions that are supported by Cisco Plug-in for OpenFlow.
| Supported Feature | Additional Notes | ||
|---|---|---|---|
| OpenFlow-hybrid switch (ships-in-the-night) type is supported using OpenFlow 1.3 packet format with limitations. | OpenFlow hybrid (ships-in-the-night) hybrid model is supported with physical port seperation on virtual device contexts (VDCs). OpenFlow can be enabled on a subset of devices and ports making a part of the network OpenFlow enabled while the rest of the network continues to run using traditional forwarding principles. But the OpenFlow and non-OpenFlow ports of a device must be configured on different VDCs. OpenFlow hybrid (integrated) switch type is not supported. | ||
| Dedicated virtual device context (VDC) for OpenFlow | 
 | ||
| Connection to up to eight controllers. | 
 | ||
| Pipelines for Cisco Plug-in for OpenFlow logical switch | 
 | ||
| Ethertype selector based table lookup | Ethertype of a packet decides the forwarding table and the corresponding match and action criteria. Ethertype is mandatory for pipeline 322. | ||
| Supported Interface Types | Physical interfaces and port-channel interfaces. | ||
| L2 Forwarding Table (Ethertype = *) (Pipeline 321) | Supported match criteria: 
 
 
 | ||
| IPv4 Forwarding Table (Ethertype = 0x800) (Pipeline 322) | Supported match criteria: 
 Supported action criteria: 
 | ||
| IPv6 Forwarding Table (Ethertype = 0x86DD) (Pipeline 322) | Supported match criteria: 
 Supported action criteria: 
 | ||
| ARP Table (Ethertype = 0x806) (Pipeline 322) | Supported match criteria: 
 Supported action criteria: 
 | ||
| Default Action | If packets do not match flows of any of the tables above, the default action for each table is drop. You can also configure the default action and set it to controller if required. | ||
| OpenFlow v1.3 message types | The “modify state” and “queue config” message types are not supported. All other message types are supported. | ||
| Multiple actions | 
 | ||
| OpenFlow 1.3 counters | Per Port—Received Packets, Transmitted Packets, Received Bytes, Transmitted Bytes, Receive Drops, Transmit Drops, Receive Errors, Transmit Errors, Receive Frame Alignment Errors, Receive Overrun Errors, Collisions, Duration (in seconds), Duration (in nanoseconds). 
 | 
OpenFlow Switch Specification Version 1.0.1 (Wire Protocol 0x01) (referred to as OpenFlow 1.0) and OpenFlow Switch Specification Version 1.3.0 (Wire Protocol 0x04), referred to as OpenFlow 1.3, is based on the concept of an Ethernet switch, with an internal flow table and standardized interface to allow traffic flows on a device to be added or removed. OpenFlow 1.3 defines the communication channel between Cisco Plug-in for OpenFlow and controllers.
Cisco Plug-in for OpenFlow 2.0.2 refers to Cisco Plug-in for OpenFlow, Release 2.0.2.
A controller can be Extensible Network Controller (XNC) 1.0, or any controller compliant with OpenFlow 1.3.
In an OpenFlow network, Cisco Plug-in for OpenFlow exists on the device and controllers exist on a server, that is external to the device. Flow management and any network management are either part of a controller or accomplished through a controller. Flow management includes the addition, or removal of flows, and the handling of OpenFlow 1.3 error messages.
The following figure gives an overview of the OpenFlow network.

Cisco Plug-in for OpenFlow creates OpenFlow–based TCP/IP connections to controllers for a Cisco Plug-in for OpenFlow logical switch. Cisco Plug-in for OpenFlow creates databases for a configured logical switch, OpenFlow-enabled interfaces, and flows. The logical switch database contains all the information needed to connect to a controller. The interface database contains the list of OpenFlow-enabled interfaces associated with a logical switch, and the flow database contains the list of flows on a logical switch as well as for interface that is programmed into forwarded traffic.
OpenFlow controller (referred to as controller) controls the switch and inserts flows with a subset of OpenFlow 1.3 and 1.0 match and action criteria through Cisco Plug-in for OpenFlow logical switch. Cisco Plug-in for OpenFlow rejects all OpenFlow messages with any other action.
Cisco Plug-in for OpenFlow runs in an operating–system–level virtual service container on the device. The Cisco Plug-in for OpenFlow virtual service container is delivered in an open virtual application (OVA) file package (.ova). The OVA package is installed and enabled on the device through the CLI.
This section includes the following required and optional tasks. All tasks below require the fulfillment of the prerequisites listed in Prerequisites for Cisco Plug-in for OpenFlow:
This section contains the following:
Create a non default VDC for Cisco Plug-in for OpenFlow.
| Command or Action | Purpose | |
|---|---|---|
| Step 1 | switchto vdc openflow-vdc-id Example: | Switch to the OpenFlow VDC. | 
| Step 2 | configure terminal Example: | Enters global configuration mode. | 
| Step 3 | no cdp enable Example: | Disables Cisco Discovery Protocol (CDP). | 
| Step 4 | vlan {vlan-id | vlan-range} Example: | Adds a VLAN or VLAN range for interfaces on the device and enters the VLAN configuration mode. | 
| Step 5 | end Example: | Exits VLAN configuration mode and enters privileged EXEC mode. | 
| Step 6 | copy running-config startup-config Example: | Saves the change persistently through reboots and restarts by copying the running configuration to the startup configuration. | 
Specify a route to the controller.
The following tasks are used to specify a route from the device to a controller. This can be done using a physical interface (Front Panel) or a management interface.
The IP address of the controller is configured in the Configuring a Cisco Plug-in for OpenFlow Logical Switch section.
| Command or Action | Purpose | |
|---|---|---|
| Step 1 | switchto vdc openflow-vdc-id Example: | Switch to the OpenFlow VDC. | 
| Step 2 | configure terminal Example: | Enters global configuration mode. | 
| Step 3 | interface type number Example: | Configures the physical interface. The interface used here should not be a Cisco Plug-in for OpenFlow ports. | 
| Step 4 | no switchport Example: | Configures a specified interface as a Layer 3 interface and deletes any interface configuration specific to Layer 2. | 
| Step 5 | ip address ip-address mask Example: | Configures an IP address for a specified interface. | 
| Step 6 | exit Example: | Exits interface configuration mode and enters global configuration mode. | 
| Step 7 | ip route 0.0.0.0 0.0.0.0 next-hop Example: | Configures a default route for packet addresses not listed in the routing table. Packets are directed toward a controller. | 
| Step 8 | exit Example: | Exits global configuration mode and enters privileged EXEC mode. | 
| Step 9 | copy running-config startup-config Example: | Saves the changes persistently by copying the running configuration to the startup configuration. | 
Configure interfaces for the Cisco Plug-in for OpenFlow logical switch.
| Command or Action | Purpose | |
|---|---|---|
| Step 1 | switchto vdc openflow-vdc-id Example: | Switch to the OpenFlow VDC. | 
| Step 2 | configure terminal Example: | Enters global configuration mode. | 
| Step 3 | interface mgmt management-interface-name number Example: | Enters the management interface. | 
| Step 4 | ip address ip-address mask Example: | Configures an IP address for the interface. | 
| Step 5 | exit Example: | Exits interface configuration mode and enters global configuration mode. | 
| Step 6 | vrf context management Example: | Configures the management Virtual routing and forwarding (VRF) instance and enters in VRF configuration mode. | 
| Step 7 | ip route 0.0.0.0 0.0.0.0 next-hop Example: | Configures a default route for packet addresses not listed in the routing table. Packets are directed toward a controller. | 
| Step 8 | exit Example: | Exits global configuration mode and enters privileged EXEC mode. | 
| Step 9 | copy running-config startup-config Example: | Saves the change persistently by copying the running configuration to the startup configuration. | 
Configure interfaces for the Cisco Plug-in for OpenFlow logical switch.
You must configure physical interfaces before the interfaces are added as ports of a Cisco Plug-in for OpenFlow logical switch. These interfaces are added as ports of the Cisco Plug-in for OpenFlow logical switch in the Configuring a Cisco Plug-in for OpenFlow Logical Switch section.
Perform the following task to add a physical interface to a Cisco Plug-in for OpenFlow logical switch in Layer 2 mode.
| Command or Action | Purpose | |
|---|---|---|
| Step 1 | switchto vdc openflow-vdc-id Example: | Switch to the OpenFlow VDC. | 
| Step 2 | configure terminal Example: | Enters global configuration mode. | 
| Step 3 | interface Ethernetslot port Example: | Specifies the interface for the logical switch and enters interface configuration mode. | 
| Step 4 | switchport Example: | Specifies an interface as a Layer 2 port. | 
| Step 5 | switchport mode trunk Example: | Specifies an interface as a trunk port. 
 | 
| Step 6 | mac packet-classify Example: | Enables MAC packet classification on the interface. | 
| Step 7 | switchport mode trunk allowed vlan [vlan-list] Example: | Sets the list of allowed VLANs that transmit traffic from this interface in tagged format when in trunking mode. | 
| Step 8 | spanning-tree port type edge trunk Example: | Enables edge behavior on the trunk port. 
 | 
| Step 9 | no shutdown Example: | Enables the interface. | 
| Step 10 | end Example: | Exits interface configuration mode and enters privileged EXEC mode. | 
| Step 11 | copy running-config startup-config Example: | Saves the change persistently by copying the running configuration to the startup configuration. | 
Repeat these steps to configure any additional interfaces for a Cisco Plug-in for OpenFlow logical switch. Once all the interfaces are configured, install and activate Cisco Plug-in for OpenFlow.
Perform the task below to add a physical interface to a Cisco Plug-in for OpenFlow logical switch in Layer 3 mode.
| Command or Action | Purpose | |
|---|---|---|
| Step 1 | switchto vdc openflow-vdc-id Example: | Switch to the OpenFlow VDC. | 
| Step 2 | configure terminal Example: | Enters global configuration mode. | 
| Step 3 | interface type slot/port Example: | Specifies the interface for the logical switch and enters interface configuration mode. | 
| Step 4 | no shutdown Example: | Enables the interface. | 
| Step 5 | end Example: | Exits interface configuration mode and enters privileged EXEC mode. | 
| Step 6 | copy running-config startup-config Example: | Saves the change persistently by copying the running configuration to the startup configuration. | 
Repeat these steps to configure any additional interfaces for a Cisco Plug-in for OpenFlow logical switch. Once all the interfaces are configured, install and activate Cisco Plug-in for OpenFlow.
Perform the task below to configure one or more subinterfaces on a routed interface or on a port channel made from routed interfaces to a Cisco Plug-in for OpenFlow logical switch in Layer 3 mode.
| Command or Action | Purpose | |
|---|---|---|
| Step 1 | switchto vdc openflow-vdc-id Example: | Switch to the OpenFlow VDC. | 
| Step 2 | configure terminal Example: | Enters global configuration mode. | 
| Step 3 | interface type slot/port-number Example: | Creates a subinterface and enters subinterface configuration mode. The valid range is from 1 to 4094. | 
| Step 4 | encapsulation dot1Q vlan-id Example: | Configures IEEE 802.1Q VLAN encapsulation on the subinterface. The valid range is from 1 to 3967. | 
| Step 5 | no shutdown Example: | Enables the interface. | 
| Step 6 | end Example: | Exits interface configuration mode and enters privileged EXEC mode. | 
| Step 7 | copy running-config startup-config Example: | Saves the change persistently by copying the running configuration to the startup configuration. | 
Verify Cisco Plug-in for OpenFlow.
Cisco Plug-in for OpenFlow is an application that runs at the operating–system-level virtual services container on a device. Cisco Plug-in for OpenFlow is delivered in an open virtual application (OVA) package. The OVA package is installed and activated on the device through the CLI.
You must switch to the non default VDC that was created and enabled for Cisco Plug-in for OpenFlow in order to install the OVA package You can enable and install Cisco Plug-in for OpenFlow on up to three dedicated VDCs if the device has required space. slot0: of the Nexus 7000 series device must be used for kickstart and system images.
Before installing and activating Cisco Plug-in for OpenFlow, ensure that an OVA package compatible with the device exists on a connected FTP server. Refer to the Prerequisites for a Virtual Services Container. A reload of the device is not essential after installing, uninstalling, or upgrading Cisco Plug-in for OpenFlow software.
To install and activate Cisco Plug-in for OpenFlow software, refer to the instructions in Installing and Activating an Application in a Virtual Services Container, where the virtual services application argument, virtual-services-name , can be specified as openflow_plugin.
To uninstall and deactivate Cisco Plug-in for OpenFlow software, refer to the instructions in Deactivating and Uninstalling an Application from a Virtual Services Container, where the virtual services application argument, virtual-services-name , must be the same as that specified during installation.
To upgrade Cisco Plug-in for OpenFlow software, refer to the instructions in Upgrading an Application in a Virtual Services Container, where the virtual services application argument, virtual-services-name , must be the same as that specified during installation.
Once installed, configure a Cisco Plug-in for OpenFlow logical switch.
This task configures a Cisco Plug-in for OpenFlow logical switch and the IP address of a controller.
| Command or Action | Purpose | |||
|---|---|---|---|---|
| Step 1 | switchto vdc openflow-vdc-id Example: | Switches to the specified VDC. | ||
| Step 2 | configure terminal Example: | Enters global configuration mode. | ||
| Step 3 | openflow Example: | Enters Cisco Plug-in for OpenFlow mode. | ||
| Step 4 | switch logical-switch-id Example: | Specifies an ID for a logical switch that is used for Layer 2 (default) switching operations and enters logical switch configuration mode. 
 | ||
| Step 5 | pipeline pipeline-id Example: | Configures a pipeline . 
 | ||
| Step 6 | Do one of the following: 
 Example: | 
 | ||
| Step 7 | protocol-version version-info Example: | Configures the protocol version. 
 | ||
| Step 8 | controller ipv4 ip-address [port tcp-port] [ vrf vrf-name] security{none | tls} Example: | 
 A connection to a controller is initiated for the logical switch. | ||
| Step 9 | default-miss { drop | controller } Example: | Configures the action to be taken for packets that do not match any of the flow defined. 
 | ||
| Step 10 | (Optional) logging flow-mod Example: | (Optional) Enables logging of flow changes, including addition, deletion, and modification of flows. 
 | ||
| Step 11 | (Optional) probe-interval probe-interval Example: | (Optional) Configures the interval, in seconds, at which the controller is probed. 
 | ||
| Step 12 | (Optional) rate-limit packet_in controller-packet-rate burst maximum-packets-to-controller Example: | (Optional) Configures the maximum packet rate of the connection to the controller and the maximum packets permitted in a burst of packets sent to the controller in a second. 
 | ||
| Step 13 | (Optional) max-backoff backoff-timer Example: | (Optional) Configures the time, in seconds, for which the device must wait before attempting to initiate a connection with the controller. 
 | ||
| Step 14 | end Example: | Exits logical switch configuration mode and enters privileged EXEC mode. | ||
| Step 15 | copy running-config startup-config Example: | Saves the change persistently by copying the running configuration to the startup configuration. | 
Verify Cisco Plug-in for OpenFlow.
| Step 1 | show openflow copyright Displays copyright information related to Cisco Plug-in for OpenFlow. Example: | 
| Step 2 | show openflow switch switch-id Displays information related to Cisco Plug-in for OpenFlow logical switch. Example: | 
| Step 3 | show openflow switch switch-id controllers [stats] Displays information related to the connection status between an Cisco Plug-in for OpenFlow logical switch and connected controllers. Example:The above sample output is displayed when controller is not yet connected.  | 
| Step 4 | show openflow switch switch-id ports [hidden] Displays the mapping between physical device interfaces and ports of an Cisco Plug-in for OpenFlow logical switch. Example: | 
| Step 5 | show openflow switch switch-id flows [table-id table-id][configured | controller | default | fixed | pending | pending-del] [ brief | summary] Displays flows defined for the device by controllers. Example: | 
| Step 6 | show openflow switch switch-id stats Displays send and receive statistics for each port defined for a Cisco Plug-in for OpenFlow logical switch. Example: | 
| Step 7 | show interfaces type number counters Displays send and receive statistics for the specified port defined for an Cisco Plug-in for OpenFlow logical switch. Example: | 
| Step 8 | show logging last number-of-lines Displays logging information of flow changes, including addition, deletion or modification of flows. Example: | 
| Step 9 | show running-config | section openflow Displays configurations made for Cisco Plug-in for OpenFlow. Example: | 
| Step 10 | show openflow hardware capabilities Displays Cisco Plug-in for OpenFlow configurations. Example: | 
Device# switchto vdc openflow-
Device# configure terminal
Device(config)# no cdp enable
Device(config)# vlan 1-512
Device(config-vlan)# end
Device# copy running-config startup-configDevice# switchto vdc openflow
Device# configure terminal
Device(config)# interface Ethernet2/2
Device(config-if)# no switchport
Device(config-if)# ip address 10.0.1.4 255.255.255.255
Device(config-if)# exit
Device(config)# ip route 0.0.0.0 0.0.0.0 10.0.1.6
Device# copy running-config startup-config
Device(config)# exitDevice# switchto vdc openflow
Device# configure terminal
Device(config)# interface mgmt0
Device(config-if)# no switchport
Device(config-if)# ip address 10.0.1.4 255.255.255.255
Device(config-if)# exit
Device(config)# ip route 0.0.0.0 0.0.0.0 10.0.1.6
Device(config)# exit
Device# copy running-config startup-config
Refer to Installing and Activating an Application in a Virtual Services Container for an example of installing and activating Cisco Plug-in for OpenFlow in a virtual services container of a device.
Device# switchto vdc openflow
Device# configure terminal
Device(config)# interface ethernet1/1
Device(config-if)# switchport
Device(config-if)# switchport mode trunk
Device(config-if)# mac packet-classify
Device(config-if)# switchport trunk allowed vlan 1-3
Device(config-if)# no shutdown
Device(config-if)# exit
Device# copy running-config startup-configDevice# switchto vdc openflow
Device# configure terminal
Device(config)# interface ethernet1/1
Device(config)# interface port-channel 101
Device(config-if)# channel-group 2
Device(config-if)# no shutdown
Device(config-if)# exit
Device# copy running-config startup-config
Device> enable
Device# configure terminal
Device(config)# interface port-channel 2
Device(config-if)# switchport mode trunk
Device(config-if)# mac packet-classify
Device(config-if)# end
Device# copy running-config startup-configDevice# switchto vdc openflow
Device# configure terminal
Device(config)# openflow
Device(config-ofa)# switch 1
! Specifies the pipeline that enables the IP Forwarding Table.
Device(config-ofa-switch)# pipeline 321
Device(config-ofa-switch)# of-port interface ethernet1/1
Device(config-ofa-switch)# of-port interface ethernet1/2
Device(config-ofa-switch)# protocol-version 1.0
Device(config-ofa-switch)# controller ipv4 10.0.1.6 security none
Device(config-ofa-switch)# default-miss controller
Device(config-ofa-switch)# probe-interval 5
Device(config-ofa-switch)# rate-limit packet_in 1 burst 4
Device(config-ofa-switch)# max-backoff 8
! Adding a port channel to the Cisco Plug-in for OpenFlow switch.
Device(config-ofa-switch)# of-port interface port-channel 2
Device(config-ofa-switch)# end
Device# copy running-config startup-configDevice# switchto vdc openflow
Device# configure terminal
Device(config)# openflow 
Device(config-ofa)# switch 1
Device(config-ofa-switch)# pipeline 321
Device(config-ofa-switch)# controller ipv4 10.0.1.6 vrf management security none
Device(config-ofa-switch)# of-port interface ethernet1/1
Device(config-ofa-switch)# of-port interface ethernet1/2
Device(config-ofa-switch)# of-port interface port-channel 2
Device(config-ofa-switch)# end
Device# copy running-config startup-config| Related Topic | Document Title | 
|---|---|
| Cisco commands | 
| Standard/RFC | Title | 
|---|---|
| OpenFlow 1.3 | OpenFlow Switch Specification Version 1.3.0 (Wire Protocol 0x04). | 
| OpenFlow 1.0 | OpenFlow Switch Specification Version 1.0.1 (Wire Protocol 0x01). | 
| Description | Link | 
|---|---|
| The Cisco Support and Documentation website provides online resources to download documentation and tools. Use these resources to troubleshoot and resolve technical issues with Cisco products and technologies. Access to most tools on the Cisco Support and Documentation website requires a Cisco.com user ID and password. | 
The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.
| Feature Name | Releases | Feature Information | 
|---|---|---|
| Cisco Plug-in for OpenFlow | Cisco Plug-in for OpenFlow Release 2.0.2 | Cisco Plug-in for OpenFlow supports OpenFlow 1.0 and helps networks become more open, programmable, and application-aware. |