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.
Murphy McCauley said on February 19, 2013
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).
Xiaoye Sun said on February 18, 2013
Does NOX support multiple applications running on a single controller?
Murphy McCauley said on February 19, 2013
Yes.
Evgeny Pavlenko said on January 17, 2013
Hi guys!
Could you help me, I have a question.
New NOX have GUI or not?
Thx.
Murphy McCauley said on January 22, 2013
No, sorry, the new NOX does not have a GUI.
Evgeny Pavlenko said on January 23, 2013
Are there any third-party GUI for new NOX.
Thnx.
Murphy McCauley said on January 24, 2013
None that I am aware of.
Nikhil Khatu said on February 10, 2013
What is this link about?
http://networkstatic.net/configuring-the-nox-gui/
Nikhil Khatu said on February 10, 2013
I believe I figured the answer. The link seems to be for nox classic. Are there currently any “new” NOX GUI projects on the way?
Thanks
Murphy McCauley said on February 11, 2013
None of us at Berkeley or ICSI have had need of one, so no — we currently have no plans for a GUI for the new NOX. If we were going to, I think we’d probably base it off of POXDesk.
I’m also not aware of anyone else building a GUI for the new NOX, but people don’t always tell me what they’re working on.
d_jnn@sina.com said on December 11, 2012
Can NOX-classic support Openflow 1.2 now ?
Murphy McCauley said on December 12, 2012
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.
d_jnn@sina.com said on December 5, 2012
Dear Murphy, I’m wondering how to run a c++ component named switch. What is the command ?
Amin Tootoonchian said on December 7, 2012
./nox_core -i ptcp: switch
d_jnn@sina.com said on December 2, 2012
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 ?
Amin Tootoonchian said on December 7, 2012
Just do a make without the install target. Also gdb should be able to locate the source code.
d_jnn@sina.com said on December 8, 2012
Excuse me,but how to locate the source code? I tried many times, but it didn’t work.
Luiza Nac said on January 5, 2013
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?
Thanks
Murphy McCauley said on January 7, 2013
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.)
Fred opoku said on August 29, 2012
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.
mich
Murphy McCauley said on September 2, 2012
A lot of people start by modifying the “switch” application.
zhanglirose said on November 14, 2012
Excuse me ,I am also new to openflow ,and I want to know that what routing algorithm it is in the NOX ?Do you have doc documentation ?
Murphy McCauley said on November 15, 2012
Generally when one talks about a “routing algorithm”, they mean some distributed algorithm like OSPF or RIP or BGP. To oversimplify, these don’t really fit into the SDN paradigm. NOX-Classic contains a “routing” application, but it’s really intended to run on a centralized controller. This application relies on LLDP-based topology discovery so that the controller learns the topology, and then simply runs a shortest-path algorithm to find how to get from A to B. The specific algorithm it uses is based on “A New Approach to Dynamic All Pairs Shortest Paths” by C. Demetrescu.
For more information, see:
http://www.noxrepo.org/_/nox-classic-doxygen/classvigil_1_1applications_1_1Routing__module.html
Or just read the code:
https://github.com/noxrepo/nox-classic/blob/destiny/src/nox/netapps/routing/routing.hh
zhanglirose said on November 17, 2012
Thank you very much .It is helpful.
zhanglirose said on November 25, 2012
excuse me ,I also want to know that what topology the routing algorithm is fitable?
zhanglirose said on November 26, 2012
and if I want to modify the contorller,I mean I just want to modify a little routing part of contents, where should be the main part code? Only see routing module ? I hope I can get some Suggestions, so as to catch the key point, thank you very much .
d_jnn@sina.com said on July 19, 2012
How many nodes can NOX support in the network topology?
Murphy McCauley said on July 21, 2012
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.
Tim Wang said on June 20, 2012
which openflow version can NOX support? Openflow 1.0, 1.1, 1.2 ?
Murphy McCauley said on June 30, 2012
Currently, NOX supports OpenFlow 1.0.