Murphy McCauley, Kyriakos Zarifis, Amin Tootoonchian, Scott Shenker Rationale POX is an open platform for the rapid development and prototyping of network control software in a high level language, upon which we are starting to experiment with distribution, debugging, network virtualization and other SDN topics, with the ultimate goal being to develop an archetypal, modern network operating system.
Features
Relationship to NOX
Pythonic OpenFlow interface
POX provides migration path for Python-based NOX applications Reusable components for path Successful ideas from POX fed back selection, topology discovery, etc. into NOX Runs anywhere Can bundle with Supports the same GUI and install-free PyPy runtime Uses advanced Network Object Model visualization tools POX isnt a total loss performancewise! (See cbench results) Software
cbench latency (flows per second)
POX NOX-Python NOX-C++ 0
20,000 60,000 100,000 40,000 80,000
cbench "throughput" (flows per second)
POX NOX-Python NOX-C++ 0
20,000
40,000
60,000
Network Object Model
Virtualized NOM object
Low-level NOM objects
Virtualized Switch Switch
Host
Host
Host
Switch Switch
Host
Hardware
Object-oriented global network
view Low-level objects have 1:1 mapping to actual hardware Expose hardware-specific functionality (e.g., OpenFlow, middlebox features) Control/configuration through a single interface -- Python Higher-level objects support virtualization Switch slicing and aggregation Forwarding abstraction Suitable for experimentation with distribution
Status and Usage
Under active development Framework and basic applications done Definition and development of NOM ongoing Public source release coming soon
Used in the classroom (200+
undergrads) Used by POX-At-Home (see poster) Used for SDN Debugging (see poster) Minor use in production!