Provided by: openvswitch-test_2.0.2-0ubuntu0.14.04.3_all bug

NAME

       ovs-test - check Linux drivers for performance, vlan and L3 tunneling problems

SYNOPSIS

       ovs-test -s port

       ovs-test -c server1 server2 [-b targetbandwidth] [-i testinterval] [-d] [-l vlantag] [-t tunnelmodes]

       Common options:
              [-h | --help] [-V | --version]

DESCRIPTION

       The  ovs-test  program  may be used to check for problems sending 802.1Q or GRE traffic that Open vSwitch
       may uncover. These problems, for example, can occur when Open vSwitch is  used  to  send  802.1Q  traffic
       through  physical  interfaces  running  certain  drivers of certain Linux kernel versions. To run a test,
       configure IP addresses on server1 and server2 for interfaces you intended to test. These interfaces could
       also  be  already configured OVS bridges that have a physical interface attached to them. Then, on one of
       the nodes, run ovs-test in server mode and on the other node run it  in  client  mode.  The  client  will
       connect  to ovs-test server and schedule tests between both of them. The ovs-test client will perform UDP
       and TCP tests.

       UDP tests can report packet loss and achieved bandwidth for various datagram  sizes.  By  default  target
       bandwidth for UDP tests is 1Mbit/s.

       TCP  tests report only achieved bandwidth, because kernel TCP stack takes care of flow control and packet
       loss. TCP tests are essential to detect potential TSO related issues.

       To determine whether Open vSwitch is encountering any problems, the user must  compare  packet  loss  and
       achieved  bandwidth in a setup where traffic is being directly sent and in one where it is not. If in the
       802.1Q or L3 tunneled tests both ovs-test processes are unable to communicate or the  achieved  bandwidth
       is  much  lower  compared to direct setup, then, most likely, Open vSwitch has encountered a pre-existing
       kernel or driver bug.

       Some examples of the types of problems that may be encountered are:

       •      When NICs use VLAN stripping on receive they must pass a pointer to a  vlan_group  when  reporting
              the  stripped  tag to the networking core.  If no vlan_group is in use then some drivers just drop
              the extracted tag.  Drivers are supposed to only enable stripping if a  vlan_group  is  registered
              but not all of them do that.

       •      On  receive, some drivers handle priority tagged packets specially and don't pass the tag onto the
              network stack at all, so Open vSwitch never has a chance to see it.

       •      Some drivers size their receive buffers based on whether a vlan_group is enabled, meaning  that  a
              maximum size packet with a VLAN tag will not fit if no vlan_group is configured.

       •      On transmit, some drivers expect that VLAN acceleration will be used if it is available, which can
              only be done if a vlan_group is configured.  In these cases, the driver  may  fail  to  parse  the
              packet and correctly setup checksum offloading or TSO.

   Client Mode
       An ovs-test client will connect to two ovs-test servers and will ask them to exchange test traffic. It is
       also possible to spawn an ovs-test server automatically from the client.

   Server Mode
       To conduct tests, two ovs-test servers must be running on  two  different  hosts  where  the  client  can
       connect.  The actual test traffic is exchanged only between both ovs-test servers. It is recommended that
       both servers have their IP addresses in the same subnet, otherwise one  would  have  to  make  sure  that
       routing is set up correctly.

OPTIONS

       -s port
       --server port
              Run  in  server  mode  and wait for the client to establish XML RPC Control Connection on this TCP
              port. It is recommended to have ethtool(8) installed on the  server  so  that  it  could  retrieve
              information about the NIC driver.

       -c server1 server2
       --client server1 server2
              Run in client mode and schedule tests between server1 and server2, where each server must be given
              in the following format -  OuterIP[:OuterPort],InnerIP[/Mask][:InnerPort].  The  OuterIP  must  be
              already  assigned  to  the physical interface which is going to be tested.  This is the IP address
              where client will try to establish XML RPC connection.  If OuterIP is 127.0.0.1 then  client  will
              automatically  spawn  a  local  instance of ovs-test server. OuterPort is TCP port where server is
              listening for incoming XML/RPC control connections to schedule tests (by default it is 15531). The
              ovs-test  will  automatically  assign InnerIP[/Mask] to the interfaces that will be created on the
              fly for testing purposes. It is important that InnerIP[/Mask]  does  not  interfere  with  already
              existing  IP  addresses on both ovs-test servers and client.  InnerPort is port which will be used
              by server to listen for test traffic that will be encapsulated (by default it is 15532).

       -b targetbandwidth
       --bandwidth targetbandwidth
              Target bandwidth for UDP tests. The targetbandwidth must be  given  in  bits  per  second.  It  is
              possible to use postfix M or K to alter the target bandwidth magnitude.

       -i testinterval
       --interval testinterval
              How long each test should run. By default 5 seconds.

       -h
       --help Prints a brief help message to the console.

       -V
       --version
              Prints version information to the console.

Test Modes

       The  following  test  modes  are  supported  by ovs-test. It is possible to combine multiple of them in a
       single ovs-test invocation.

       -d
       --direct
              Perform direct tests between both OuterIP addresses. These tests could be used as a  reference  to
              compare 802.1Q or L3 tunneling test results.

       -l vlantag
       --vlan-tag vlantag
              Perform  802.1Q  tests  between  both  servers. These tests will create a temporary OVS bridge, if
              necessary, and attach a VLAN tagged port to it for testing purposes.

       -t tunnelmodes
       --tunnel-modes tunnelmodes
              Perform L3 tunneling tests. The given argument is a comma separated string that specifies all  the
              L3  tunnel modes that should be tested (e.g. gre). The L3 tunnels are terminated on interface that
              has the OuterIP address assigned.

EXAMPLES

       On host 1.2.3.4 start ovs-test in server mode:

              ovs-test -s 15531

       On host 1.2.3.5 start ovs-test in client mode and do direct, VLAN and GRE tests between both nodes:

              ovs-test -c 127.0.0.1,1.1.1.1/30 1.2.3.4,1.1.1.2/30 -d -l 123 -t gre

SEE ALSO

       ovs-vswitchd(8), ovs-ofctl(8), ovs-vsctl(8), ovs-vlan-test(8), ethtool(8), uname(1)