About NOX

NOX is a piece of the Software Defined Networking ecosystem. Specifically, it’s a platform for building network control applications. In fact, while what we now call SDN grew from a number of academic projects (perhaps chiefly SANE and Ethane), the first SDN technology to get real name recognition was OpenFlow, and NOX was initially developed at Nicira Networks side-by-side with OpenFlow — NOX was the first OpenFlow controller. Nicira donated NOX to the research community in 2008, and since then, it has been the basis for many and various research projects in the early exploration of the SDN space.
To a developer, NOX:

  • Provides a C++ OpenFlow 1.0 API
  • Provides fast, asynchronous IO
  • Is targeted at recent Linux distributions (particularly Ubuntu 11.10 and 12.04, but Debian is also easy, and RHEL 6 is possible)
  • Includes sample components for:
    • Topology discovery
    • Learning switch
    • Network-wide switch

All of this goes towards giving developers and researchers a way to write code to programmatically control the switches (both hardware and virtual) in their networks. To find out more, read the post What Is SDN All About, Then? and The OpenFlow Model article!

You might also be interested in learning a bit more about NOX’s sister: the Python-oriented POX.

30 responses to About NOX

  1. I’m disabling comments for this page. Please direct questions about NOX to the nox-dev mailing list or the NOX forum (both available from the Community tab above) and report issues via the issue tracker on github (available from the repo links in the NOX tab above).

  2. Does NOX support multiple applications running on a single controller?

  3. Hi guys!
    Could you help me, I have a question.
    New NOX have GUI or not?

  4. Can NOX-classic support Openflow 1.2 now ?

    • No. The official version of NOX-Classic supports OpenFlow 1.0. I know some others have modified it for 1.1… I don’t know if anyone has done something similar for 1.2.

  5. Dear Murphy, I’m wondering how to run a c++ component named switch. What is the command ?

  6. An error occurred when the “make install” command of “nox_core” is executed in a virtual machine environment – CentOS 6.3. As follows:
    /usr/bin/install: will not overwrite just-created `/usr/local/bin/nox/lib/openflow.py’ with `openflow.py’
    /usr/bin/install: will not overwrite just-created `/usr/local/bin/nox/lib/config.py’ with `config.py’
    /usr/bin/install: will not overwrite just-created `/usr/local/bin/nox/lib/pyopenflow.py’ with `pyopenflow.py’
    As you might see from the above outputs, the installation was not completed successfully. Fortunately, after make I’ve got all of the bin files. Then I tried to debug the main process under the /build/src/.
    When debugging with gdb , it said “no source file named switch.cc” when attaching to the process(nox_core). Is this related to the unsuccessful installation?
    If not, what’s the problem? Path? How to solve it ?

    • Just do a make without the install target. Also gdb should be able to locate the source code.

    • Hi,
      Got the same problem on ubuntu 12.04
      make[4]: *** [nox_core-component.o] Error 1
      make[4]: Leaving directory `/home//nox/nox/build/src’
      make[3]: *** [all-recursive] Error 1
      make[3]: Leaving directory `/home//nox/nox/build/src’
      make[2]: *** [all] Error 2
      make[2]: Leaving directory `/home//nox/nox/build/src’
      make[1]: *** [all-recursive] Error 1
      make[1]: Leaving directory `/home//nox/nox/build’
      make: *** [all] Error 2
      How can I resolve it?

      • Which version of NOX are you using?
        Can you post more of your build log?

        (Incidentally, you’ll get faster responses by posting to the nox-dev mailing list.)

  7. i am new to openflow and wants to develop an extension to the nox controller in c++. is a simple application to control packet flow in the switch. where do i start? i have read all the docs online.


  8. How many nodes can NOX support in the network topology?

    • There shouldn’t be a hard limit. Eventually you’ll run out of RAM or file descriptors or something, but really the limit on the number of switches is probably much higher than you’ll ever run into.

      However, you may run into a communication limit much sooner — but this is very dependent on your traffic and on exactly what your application is doing. If your application installs a bunch of static and broadly wildcarded flows, there will be little communication between the switches and controller and you could support a fairly large number of switches. On the other extreme, if your application does something like per-TCP-connection access control by reactively handling packet_ins on a busy network, the I/O overhead will start to drown you pretty quickly.

  9. which openflow version can NOX support? Openflow 1.0, 1.1, 1.2 ?