POX是一个用Python编写的网络软件平台。
POX最初是作为OpenFlow控制器开发的,但现在也可以作为OpenFlow交换机使用,并且对于编写一般网络软件很有用。它目前支持OpenFlow 1.0,并包含对Open vSwitch/Nicira扩展的特殊支持。
POX版本有名称。从POX“gar”开始,POX正式要求使用Python 3。支持Python 2的最后一个版本是POX“fangtooth”。POX可以在Linux、Mac OS和Windows系统下运行。(几乎可以在任何地方运行——我们已经在Android手机上、FreeBSD、Haiku等系统下运行过。您只需要Python!)某些功能并非在所有平台上可用。Linux是最强大的平台。
本自述文件包含一些入门信息,但特意写得比较简短。如需了解更多信息,请参阅完整文档。
pox.py
启动POX。它会在命令行中获取组件名称列表,找到这些组件,调用它们的launch()
函数(如果存在),然后进入“启动”状态。
如果您运行./pox.py
,它将尝试自行找到合适的Python 3解释器。特别是,如果主POX目录中有PyPy的副本,它将使用该副本(可能会大幅提升性能!)。否则,它将寻找名为python3
的文件,并返回python
。当然,您也可以手动调用所需的Python解释器(例如,python3 pox.py
)。
POX命令行可以以POX自己的选项开头(见下文)。后面是POX组件的名称,后面可能还有该组件的选项。后面可能还有更多的组件及其选项。
./pox.py [pox-options...] [component] [component-options...] ...
虽然组件的选项取决于组件(请参阅组件文档),但如上所述,POX也有一些自己的选项。其中一些有用的选项包括:
选项 | 含义 |
---|---|
--verbose |
打印初始化异常的堆栈跟踪 |
--无开放流 |
不要自动启动openflow模块 |
POX组件基本上是Python模块,并遵循一些POX特定的约定。它们存在于Python通常会搜索的所有位置,以及pox
和ext
目录中。因此,您可以执行以下操作:
./pox.py forwarding.l2_learning
如上所述,您可以通过在组件名称后指定选项来传递选项。这些选项将传递给相应模块的launch()
函数。例如,如果您想将POX作为OpenFlow控制器运行,并控制其使用的地址或端口,可以将这些作为选项传递给openflow._01组件:
./pox.py openflow.of_01 --address=10.1.1.1 --port=6634
POX的完整文档可在GitHub上找到,网址为https://noxrepo.github.io/pox-doc/html/