57 thoughts on “Getting started with mul !!

  1. Andy Pearce says:

    When I run mul, I get this error:

    2013/01/21 14:38:04 MUL-CONTROLLER: c_thread_event_loop: tid(1006376704) MUL-CONTROLLER: c_thread_event_loop: tid(997984000)

    2013/01/21 14:38:04 MUL-CONTROLLER: c_thread_event_loop: tid(989591296)
    2013/01/21 14:38:04 MUL-CONTROLLER: c_thread_event_loop: tid(981198592)
    2013/01/21 14:38:04 MUL-CONTROLLER: c_thread_event_loop: tid(972805888)
    2013/01/21 14:38:04 MUL-CONTROLLER: c_thread_event_loop: tid(964413184)
    bind: Address already in use
    lt-mul: mul_thread_core.c:241: c_main_thread_final_init: Assertion `c_listener > 0′ failed.
    Aborted (core dumped)

    Is the program trying to bind to a port, and if so, how is the port number specified?

    • Andy Pearce says:

      Looking in the source, the port is hard coded at 6633 in the file mul_priv.h. I changed the port and recompiled and it runs now.

      #define C_LISTEN_PORT 6633

      • kulcadmin says:

        6633 is the default port for openflow controllers. So, that might mean you have another instance or another controller running ? We will make the default port as a command line argument in near future.

  2. hakiri says:

    I am trying to compile Mul on ubuntu 13.04 and I have the following error:
    /home/mininet/mul-code/services/loadable/topo_routing/mul_route_apsp.c:443: undefined reference to `shm_open’
    /home/mininet/mul-code/services/loadable/topo_routing/mul_route_apsp.c:473: undefined reference to `shm_unlink’

    How to fix this !!

    • hakiri says:


      route_serv_fd = shm_open(MUL_TR_SERVICE_NAME,
      O_CREAT | O_RDWR, 00700);
      if (route_serv_fd < 0) {
      c_log_err("%s: RT apsp block alloc fail", FN);
      goto free;

      • kulcadmin says:

        Have you already installed the required packages mentioned in README ? shm_open and others are part of standard librt library. It should be installed by default. Can you please double check librt is present in your system ?

      • hakiri says:

        I installed all the required packages, librt library is installed, too. however the same problem remains

      • kulcadmin says:

        Normally it is part of build-essential package. Either way, we will verify install in Ubuntu 13.10 and confirm you what is wrong. So far we have been using Ubuntu 12.04 !!!

      • kulcadmin says:

        We figured out the compilation issues as we tried installing mul on ubuntu-13.10. If you used git to pull the code , you can update the git repo using “git pull” and retry compiling. If you have not used git so far, we suggest you pull MuL repo using “git clone git://git.code.sf.net/p/mul/code mul-code” and start compilation.

        Let us know if there are any further issues with compilation as well with you usage with MuL.

        MuL development team

  3. hakiri says:

    What do you mean by apply fix ! Should I type those commands on the termianl. Is it not possible to made the changes directly on the makefile !


  4. hakiri says:

    Sounds Good 🙂
    Every think is working well. Just one more comment:
    change libevent-2.0.18-stable ===> libevent-2.0.21-stable

    We just need a short tutorial about using Mul with mininet and how to develop custumized application with Mul 🙂

    • kulcadmin says:


      As long as you install the required packages as given in README using CentOS specific commands, the rest of the installation process should remain the same.

      Warm Regards,

      • Dipjyoti Saikia says:

        I was refering to the fact you would need to “yum install” instead of “apt-get install” in Centos for installing basic packages required by mul.

      • kulcadmin says:

        These are the instructions for installing MuL on CentOS.

        yum install git
        git clone git://git.code.sf.net/p/mul/code mul-code

        Once downloaded, please follow instructions inside mul-code/README. You can find CentOS related packages and commands required for compilation and installation here.

  5. Yogesh says:


    I compiled the MUL code and performed the following steps :
    a. sudo ovs-vsctl add-br br0
    b. ovs-ofctl add-flow br0

    Then I started the MUL code “sudo ./mul” & ” telnet localhost 7000″

    But when I do “show of-switch all” its not showing any output on the console.
    I am a newbie as far as openVswitch is concerned. So just wanted to understand if
    I am missing something here.


    • kulcadmin says:

      Hi Yogesh,

      To connect to a controller. we use the following ovs command :

      sudo ovs-vsctl set-controller br0 tcp:

      After that it should connect to the controller.

    • kulcadmin says:


      Ping will work once you run l2switch forwarding module of MUL. You can do that by :

      $ cd /application/l2switch
      $ sudo ./mull2sw

      • HYO says:

        Thanks for your reply

        However, after running the learning switch application, pinging still doesn’t work…

        Do you have any other comment?


      • kulcadmin says:

        host pinging works in all cases with learning switch. i am not sure if you are missing something.

      • HYO says:

        Thank you..

        I installed mul-3.0.2 beta version
        and mininet with ofsoftswitch13. These are all for openflow 1.3.

        And my running sequence is like follow
        1. run ./mul
        2. run mininet with sudo mn –switch user –controller remote
        3. run ./mull2sw
        4. h1 ping h2 in the mininet..

        Am I missing something? Ah, I’m running these in Ubuntu 12.04 LTS

        Thanks a lot

      • kulcadmin says:


        I realized there were some problems with ofsoftswitch13 and it has been fixed. Can you do “git pull” in the mul code , recompile and try again. It should work now !!

      • HYO says:

        It works!!!
        Thank you very much for your many replies and your effort.
        Have a nice weekend 😉

  6. Ahmed says:


    I am doing some research regarding SDN and open-flow controllers and I run in to Mul which in most papers and researches is mentioned as the lowest latency open-flow controller available which showed the same in my experiment also , but the interesting thing is that the experiment that we run to evaluate the open-flow controllers showed that Mul performed better in terms of throughput even better than Beacon which is know to have the highest. have you done some benchmarking of your own ? also what is the reason that your controller has such good performance

    Best Regards

    Ahmed Sonba

    • kulcadmin says:

      Hi Ahmed,

      We have built the controller ground up with scalability in mind because that is very critical for any SDN controller. The code has been designed to have multi-core scalability for flow and switch handling, hosting multiple applications and so on. It is really good to know that results are showing up. Thanks for posting the update on the performance aspects of Open-MUL. Highly appreciated !!

      @Open-MUL dev team

  7. HYO says:

    Additionally, I have ne more question.
    In mul-3.0.2 beta version, the meter table or mpls labling is supported? I cannot find the options for these.
    I see the mul-3.2.5 version supports these two functions but I wonder the 3.0.2 version supports.

    Thanks again 🙂

    • kulcadmin says:

      Hi HYO,

      mul-3.2.5 does support many Openflow features like mpls and meter-table .But to cover our development costs we provide some features at a cost but do contribute those to Open-source down the lane. We can provide a binary-only evaluation copy if that helps you to achieve whatever you are doing and it is non-commercial in nature. If interested kindly drop an email to contact@kulcloud.net with your requirements and nature of work.

  8. JK says:

    I’m a partner of HYO.
    We succeeded to ping and the flows are added to switches with l2switch app.

    However, when we run the app, we cannot add flow to switch with the command ‘of-flow add switch ..’.

    We can type the command, and we took a step to (config-flow-action).. we added action and committed the flow, but we could not see the added flow with ‘show of-flow switch 0x1’.
    The command lists only the flows added by pinging not our flow.
    We saw some logs such as
    Flow already present, switch sent error or ofpx_mach len err and so on..
    However, even though we didnt see any logs, we could not see our flow….

    I hope you can help us.
    Best regards,
    Jaegook Lee

  9. JK says:


    I wanna add some of-flow or of-group, but flow could not be added when L2switch app was running. (used ofsoftswitch 1.3)

    How can I fix the problem?

    • kulcadmin says:

      WE have fixed some minor issues. It should work now. Please do a “git pull” . Thanks for reporting !

    • Hi,

      Although the current code does not support it, you can easily enable it if you use the following patch :
      diff –git a/mul/mul_thread.h b/mul/mul_thread.h
      index 48f4528..58f5fb1 100644
      — a/mul/mul_thread.h
      +++ b/mul/mul_thread.h
      @@ -97,6 +97,7 @@ struct c_main_ctx
      struct c_app_ctx **app_pool;

      struct event *c_accept_event;
      + struct event *c_accept_event2;
      struct event *c_ha_accept_event;
      struct event *c_app_accept_event;
      struct event *c_app_aux_accept_event;
      diff –git a/mul/mul_thread_core.c b/mul/mul_thread_core.c
      index 90de61f..02ff76f 100644
      — a/mul/mul_thread_core.c
      +++ b/mul/mul_thread_core.c
      @@ -364,6 +364,15 @@ c_main_thread_final_init(struct c_main_ctx *m_ctx)
      c_accept, (void*)m_ctx);
      event_add(m_ctx->c_accept_event, NULL);

      + /* Switch lister additional port */
      + c_listener = c_server_socket_create(INADDR_ANY, ctrl_hdl->c_port);
      + assert(c_listener > 0);
      + m_ctx->c_accept_event2 = event_new(m_ctx->cmn_ctx.base, c_listener,
      + c_accept, (void*)m_ctx);
      + event_add(m_ctx->c_accept_event2, NULL);
      /* HA listener */
      c_listener = c_server_socket_create(INADDR_ANY, MUL_CORE_HA_SERVICE_PORT);
      assert(c_listener > 0);

      If you still want more than 2 different ports, you can simply modify the above login. Please let me know if it helps.

  10. Shreekanth says:

    HI.. I want to know how to run the “hello” application. I am not able to do make/etc. Am i missing something very basic here ? Please help. I need to develop an application and now trying to understand the basics. Thanks

  11. I am trying to connect Openmul running on a vm to connect to openvswitch running on another vm in a hypervisor

    I would want to configure openmul to run on a particular interface ip which openvswitch is listening to.

    ovs-vsctl set-controller br0 tcp:

    I have built Openmul #build.sh

    How to configure openmul to run on this IP to connect to the switch?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s