When we try to add multiple controllers and connection-mode=out-of-band in a single transaction it fails: [wsfd-netdev64:~]$ ovs-vsctl set-controller br-int tcp:127.0.0.1:6633 tcp:127.0.0.1:6644 -- set controller br-int connection-mode=out-of-band ovs-vsctl: no row "br-int" in table Controller With a single controller, it works fine: [wsfd-netdev64:~]$ ovs-vsctl set-controller br-int tcp:127.0.0.1:6633 -- set controller br-int connection-mode=out-of-band [wsfd-netdev64:~]$
'set controller br-int' is a syntactic sugar that can work if the bridge has only one controller. The reason is that 'set controller' is a direct access to database rows, it's not a vsctl wrapper like 'set-controller', and 'Controller' table has no row corresponding to 'br-int' directly. The full database command should be used instead: ovs-vsctl --id=@c1 create controller target='"tcp:127.0.0.1:6633"' connection-mode=out-of-band -- \ --id=@c2 create controller target='"tcp:127.0.0.1:6644"' connection-mode=out-of-band -- \ add bridge test-br controller @c1 @c2
Closing as this is not a problem :)