Provided by: openvswitch-test_2.5.9-0ubuntu0.16.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)