POX: A Python-Based Platform for Software-Defined Networking

Summary
POX is a versatile networking software platform written in Python, initially designed as an OpenFlow controller. It can also function as an OpenFlow switch and is useful for developing general networking software. Supporting OpenFlow 1.0 and various operating systems, POX provides a flexible environment for network experimentation and development.
Repository Info
Tags
Click on any tag to explore related repositories
Introduction
POX is a networking software platform developed in Python, offering a flexible environment for network experimentation and development. It began as an OpenFlow controller but has evolved to also function as an OpenFlow switch, making it suitable for a wide range of networking software applications. POX officially requires Python 3 (versions like "gar" and later), with "fangtooth" being the last version to support Python 2. It runs across Linux, Mac OS, and Windows, and even on other platforms like Android, FreeBSD, and Haiku, requiring only a Python interpreter.
Installation
Getting started with POX is straightforward. You can boot POX by running pox.py from its directory. The script intelligently attempts to find an appropriate Python 3 interpreter, prioritizing a PyPy installation within the POX directory for potential performance gains. Otherwise, it looks for python3 or falls back to python. You can also explicitly invoke your desired Python interpreter, for example, python3 pox.py.
Examples
POX components are essentially Python modules following specific POX conventions. They are located in standard Python paths, plus the pox and ext directories. To run a component, simply specify its name on the command line:
./pox.py forwarding.l2_learning
Components can also accept options. For instance, to run POX as an OpenFlow controller and specify its address and port, you can pass these as options to the openflow._01 component:
./pox.py openflow.of_01 --address=10.1.1.1 --port=6634
Why Use POX?
POX stands out as a powerful tool for anyone involved in Software-Defined Networking (SDN) or general network programming. Its Python-based nature makes it accessible and easy to extend. The platform's ability to act as both an OpenFlow controller and a switch, coupled with its support for OpenFlow 1.0 and Open vSwitch/Nicira extensions, provides a robust foundation for building and testing network protocols and applications. Its cross-platform compatibility further enhances its utility for diverse development environments.
Links
For more detailed information and to explore the project further, please refer to the official resources: