OVS-TEST(8)
π NAME π
ovs-test β bestie, this is the little program that checks Linux drivers for performance, vlan and L3 tunneling problems π (it's ovs-test(8) from the Open vSwitch crew, if you're keeping track)
π¦ SYNOPSIS π¦
ovs-test -s port
ovs-test -c server1 server2 [-b targetbandwidth] [-i testinterval] [-d]
[-l vlantag] [-t tunnelmodes]
π DESCRIPTION π
okay so here's the vibe: ovs-test is what you run when you're worried that sending 802.1Q or GRE traffic is being weird and Open vSwitch might uncover it. π 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. not naming names butβ¦ some of y'all know who you are π«
To run a test, configure IP addresses on server1 and server2 for the interfaces you intended to test. These interfaces could also be already configured OVS bridges that have a physical interface attached to them β both are valid, no gatekeeping. β¨ 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 the ovs-test server and schedule tests between both of them. And the ovs-test client will perform UDP and TCP tests. periodt. π
UDP tests can report packet loss and achieved bandwidth for various datagram sizes. By default the target bandwidth for UDP tests is 1Mbit/s.
TCP tests report only achieved bandwidth, because the kernel TCP stack takes care of flow control and packet loss (she handles it, we don't π). TCP tests are essential to detect potential TSO related issues. fr fr.
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. π it's not OVS's moment, it's the driver's.
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_groupwhen reporting the stripped tag to the networking core. If novlan_groupis in use then some drivers just drop the extracted tag. Drivers are supposed to only enable stripping if avlan_groupis 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_groupis enabled, meaning that a maximum size packet with a VLAN tag will not fit if novlan_groupis configured. π€ - On transmit, some drivers expect that VLAN acceleration will be used if it is available, which can only be done if a
vlan_groupis 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. β¨ yes she does that, self-sufficient queen.
π 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 haveethtool(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 postfixMorKto alter the target bandwidth magnitude. π’-i <testinterval>,--interval <testinterval>β How long each test should run. By default5seconds. β±οΈ-h,--helpβ Prints a brief help message to the console.-V,--versionβ Prints version information to the console.
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 bothOuterIPaddresses. 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 theOuterIPaddress 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-testethtool(8)uname(1)
π Author π
The Open vSwitch Development Community
π Copyright π
2016-2024, The Open vSwitch Development Community
and that's the whole page bestie!! this one is version 3.7, dated Apr 14, 2026 π go forth and check those drivers, you've got this, mwah π πβ¨π¦πΈ
π¦ where this page comes from
- ubuntu resolute: openvswitch-test 3.7.1-2 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms