ovs-testcontroller(8)

NAME
ovs-testcontroller - simple OpenFlow controller for testing

SYNOPSIS
ovs-testcontroller [options] method [method]...

DESCRIPTION
ovs-testcontroller is a simple OpenFlow controller that manages any number of switches over the OpenFlow protocol, causing them to function as L2 MAC-learning switches or hubs. It is suitable for initial testing of OpenFlow networks. It is not a necessary or desirable part of a production OpenFlow deployment.

ovs-testcontroller controls one or more OpenFlow switches, specified as one or more of the following OpenFlow connection methods:

OPTIONS

-n  By default, ovs-testcontroller sets up a flow in each OpenFlow switch whenever it receives a packet whose destination is known due through MAC learning. This option disables flow setup, so that every packet in the network passes through the controller.

    This option is most useful for debugging. It reduces switching performance, so it should not be used in production.

--max-idle=secs|permanent
    Sets secs as the number of seconds that a flow set up by the controller will remain in the switch's flow table without any matching packets being seen. If permanent is specified, which is not recommended, flows will never expire. The default is 60 seconds.

    This option has no effect when -n (or --noflow) is in use (because the controller does not set up flows in that case).

-H  By default, the controller acts as an L2 MAC-learning switch. This option changes its behavior to that of a hub that floods packets on all but the incoming port.

    If -H (or --hub) and -n (or --noflow) are used together, then the cumulative effect is that every packet passes through the controller and every packet is flooded.

    This option is most useful for debugging. It reduces switching performance, so it should not be used in production.

-w[wildcard_mask]
    By default, ovs-testcontroller sets up exact-match flows. This option allows it to set up wildcarded flows, which may reduce flow setup latency by causing less traffic to be sent up to the controller.

    The optional wildcard_mask is an OpenFlow wildcard bitmask in hexadecimal that specifies the fields to wildcard. If no wildcard_mask is specified, the default value 0x2820F0 is used which specifies L2-only switching and wildcards L3 and L4 fields. Another interesting value is 0x2000EC, which specifies L3-only switching and wildcards L2 and L4 fields.

    This option has no effect when -n (or --noflow) is in use (because the controller does not set up flows in that case).

-N  By default, ovs-testcontroller directs packets to a particular port or floods them. This option causes it to direct non-flooded packets to the OpenFlow OFPP_NORMAL port. This allows the switch itself to make decisions about packet destinations. Support for OFPP_NORMAL is optional in OpenFlow, so this option may not well with some non-Open vSwitch switches.

--mute
    Prevents ovs-testcontroller from replying to any OpenFlow messages sent to it by switches.

    This option is only for debugging the Open vSwitch implementation of ``fail open'' mode. It must not be used in production.

-q id
    By default, ovs-testcontroller uses the default OpenFlow queue for sending packets and setting up flows. Use one of these options, supplying id as an OpenFlow queue ID as a decimal number, to instead use that specific queue.

    This option is incompatible with -N or --normal and with -H or --hub. If more than one is specified then this option takes precedence.

    This option may be useful for testing or debugging quality of service setups.

-Q port-name:queue-id

--port-queue port-name:queue-id
    Configures packets received on the port named port-name (e.g. eth0) to be output on OpenFlow queue ID queue-id (specified as a decimal number). For the specified port, this option overrides the default specified on -q or --queue.

    This option may be specified any number of times with different port-name arguments.

    This option is incompatible with -N or --normal and with -H or --hub. If more than one is specified then this option takes precedence.

    This option may be useful for testing or debugging quality of service setups.

--with-flows file
    When a switch connects, push the flow entries as described in file. Each line in file is a flow entry in the format described for the add-flows command in the Flow Syntax section of the ovs-ofctl(8) man page.

    Use this option more than once to add flows from multiple files.

  Public Key Infrastructure Options

  Daemon Options

EXAMPLES

To bind locally to port 6653 (the default) and wait for incoming connections from OpenFlow switches:

    % ovs-testcontroller ptcp:

BUGS

Configuring a Citrix XenServer to connect to a particular controller only points the remote OVSDB management connection to that controller. It does not also configure OpenFlow connections, because the manager is expected to do that over the management protocol. ovs-testcontroller is not an Open vSwitch manager and does not know how to do that.

As a stopgap workaround, ovs-vsctl can wait for an OVSDB connection and set the controller, e.g.:

    % ovs-vsctl -t0 --db=pssl: --certificate=cert.pem --ca-cert=none --private-key=privkey.pem --peer-ca-cert=cacert.pem set-controller ssl:ip

SEE ALSO
ovs-appctl(8), ovs-ofctl(8), ovs-dpctl(8)