POX: Network control with Python

Download Report

Transcript POX: Network control with Python

POX
Network control with Python
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
cbench “latency” (flows per second)
POX
• “Pythonic” OpenFlow interface
• POX provides migration path for Pythonbased NOX applications
• Reusable components for path selection,
topology discovery, etc.
• Successful ideas from POX fed back into NOX
• “Runs anywhere” – Can bundle with installfree PyPy runtime
• Supports the same GUI and visualization tools
• POX isn’t a total loss performance-wise! (See
cbench results)
• Uses advanced Network Object Model
Software
NOX-Python
NOX-C++
0
20,000 40,000 60,000 80,000 100,000
cbench "throughput" (flows per second)
POX
NOX-Python
NOX-C++
0
10,000 20,000 30,000 40,000 50,000 60,000
Network Object Model
Virtualized NOM object
Virtualized Switch
Low-level NOM objects
Host
Switch
Host
Switch
Host
Host
Switch
• 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
Hardware
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!