POX is NOX‘s younger sibling. At its core, it’s a platform for the rapid development and prototyping of network control software using Python. Meaning, at a very basic level, it’s one of a growing number of frameworks (including NOX, Floodlight, Trema, etc., etc.) for helping you write an OpenFlow controller.
POX also goes beyond this. As well as being a framework for interacting with OpenFlow switches, we’re using it as the basis for some of our ongoing work to help build the emerging discipline of Software Defined Networking. We’re using it to explore and prototype distribution, SDN debugging, network virtualization, controller design, and programming models. Our ultimate goal is to develop an archetypal, modern SDN controller.
If you’re interested in some of our thoughts on what Software Defined Networking is about, you might want to read the aptly named “What Is SDN All About, Then?“.
POX’s is under active development, and we hope it stays that way. Is primary target is research, and many research projects are fairly short-lived. Thus, our focus is on trying to get interfaces right rather than on, say, maintaining a stable API. Luckily, it’s hosted on github — if you need stability, you can just fork it in a couple of seconds.
Some quick POX features:
- “Pythonic” OpenFlow interface
- Reusable sample components for path selection, topology discovery, etc.
- “Runs anywhere” – Can bundle with install-free PyPy runtime for easy deployment
- Specifically targets Linux, Mac OS, and Windows
- Supports the same GUI and visualization tools as NOX
- Performs well compared to NOX applications written in Python (especially when run under PyPy — see chart)
If you don’t really know anything about SDN and OpenFlow but are interested in starting to play around with it, you might want to check out The OpenFlow Model.
While POX is still young, it’s already seen some use in research and education. We’ll let you know about some of the ways we’ve used it so far.