如何将 Pox 与我的程序绑定

How to bind Pox with my program

我有一个小的 python 程序,它就像一个虚拟开关。现在我想整合它,让它可以被一个openflow controller POX控制。

  1. 我想知道如何在 switch 和 POX 之间交换消息?我是否创建一个套接字并将其绑定到端口 6633(默认端口 POX 运行)并使用该套接字发送所有进一步的开放流数据包?我怎么会"connect"长痘

  2. 我需要发送哪些数据包来建立和维持连接?我收到 INFO:openflow.of_01:[None 1] closed
    INFO:openflow.of_01:[None 2] closed
    ...
    每次我发送一个开放流数据包。

  3. 如何在不配置控制器的情况下测试我的交换机? (假设我有几个开关连接到一个控制器,我希望它们可以相互通信)。

  1. 除非另有说明,否则 POX 在 TCP 端口 6633 上是 运行(一旦它是 运行,您可以在 linux 上使用 netstat -tnlp | grep python 进行检查).您需要打开一个从虚拟交换机到该端口的套接字:

    controllerIpAddr = "127.0.0.1"
    controllerPort = "6633"
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((controllerIpAddr, controllerPort))
    

    然后您将该套接字用于您的 Openflow 流量

  2. 我不太明白这个问题,但如果你问如何在不配置 OpenFlow 的情况下测试你的交换机,我建议使用学习交换机:./pox.py forwarding.l2_learning.