From demystifying openvswitch (with the slide deck showing some interesting edit shortcuts with virsh, and slide 13 may be incorrect as trunk is default):
- ovs-vsctl: Set up, maintain, and inspect various openvswitch configurations. It provides a high level interface to the database to query and apply changes at run time. Operations are persistent across reboot. Example: ovs-vsctl --format=table --column=name,vlan_mode
- ovs-ofctl, ovs-dpctl: Administer and monitor flow entries. Two kinds of flows: openflows (flows managed at control plane) and datapath (kernel flow, cached version of openflow). ovs-ofctl speaks to openflow module. ovs-dpctl talks to kernel module.
- ovs-appctl: Sends commands to a running openvswitch to gather information which is not directly exposed to ovs-ofctl -- the Swiss Army knife of openflow troubleshooting. Example: ovs-appctl vlog/list, ovs-appctl vlog/set module(:facility(:level)) where level is emer, err, warn, info, dbg
- ovsdb-client: query the ovs database. Example: ovsdb-lient list-tables, ovsdb-client list-columns
, ovsdb-client monitor --detach - ovsdb-tool showlog
openvswitch deep dive on slide 14 and 15, shows relationship between commands and the daemons.