Search code examples
ubuntunetwork-programmingopenvswitchmininet

Mininet OVS-Controller can 't be loaded and run


When ever I try to login SSH to my mininet VM from Host terminal it shows Permission denied error and even from within VM terminal where the Mininet is hosted using command:

sudo mn --topo single,3 --mac --switch ovsk --controller remote`

it shows the following error:

ubuntu@ubuntu:~$ sudo mn
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
Cannot find required executable ovs-controller.
Please make sure that it is installed and availabe in your $PATH:
(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin/:/bin)
ubuntu@ubuntu:~$

So I can't continue using the SDN network! How can it be fixed manually and why this error happens!


Solution

  • I had the exact same problem when I upgraded to Open vSwitch 2.1. In the release notes of ovs (NEWS) I found this:

      - ovs-controller has been renamed test-controller.  It is no longer
         packaged or installed by default, because too many users assumed
         incorrectly that ovs-controller was a necessary or desirable part
         of an Open vSwitch deployment.
    

    I also found test-controller under ./tests/test-controller (source distribution), so I just tried

    sudo cp tests/test-controller /usr/bin/ovs-controller
    

    and that works fine for me! I'm using Mininet 2.1 as well, but I had to do the above for it to work. Here's the output:

    $ sudo mn --controller=ovsc
    *** Creating network
    *** Adding controller
    *** Adding hosts:
    h1 h2
    *** Adding switches:
    s1
    *** Adding links:
    (h1, s1) (h2, s1)
    *** Configuring hosts
    h1 h2
    *** Starting controller
    *** Starting 1 switches
    s1
    *** Starting CLI:
    mininet> pingall
    *** Ping: testing ping reachability
    h1 -> h2
    h2 -> h1
    *** Results: 0% dropped (2/2 received)
    mininet>
    

    It's interesting that they discourage the use of test-controller, and even more so that Mininet seems to rely on it. Perhaps there is a better executable for this purpose?

    Let me know if this works for you!