1

我正在尝试从 OpenFlow 获取我在 RYU 上的 OpenFlow 应用程序的一些信息。

我想得到的信息如下。

对于每个 SWITCH,我想要

        - DPID
        - STATE   (ACTIVE/INACTIVE)

对于每个端口,我想要

         - DPID
         - PORT_NUMBER
         - STATE
         - PORT_STATE

端口状态 - 跟踪来自 OF 的端口状态消息。1 - 活动。0 - INACTIVE.OpenFlow 1.0 有两种来自内存的端口状态,一种是关于端口是否有链接,另一种是关于端口是否在管理上启动。我相信这个端口状态跟踪第二种类型 - 即端口状态应该是 1 如果端口是管理上的,即使它没有链接。

我应该听哪些消息来获取上述信息。我还尝试获取有关 ofp_event.EventOFPStateChange 的信息。

我尝试查看http://ryu.readthedocs.org/en/latest/genindex.html 我找不到与 ofp_event.EventOFPStateChange 相关的信息。

任何帮助我指出正确方向的帮助将不胜感激。

4

1 回答 1

3

您可以使用以下代码。我正在使用它来识别连接到它的所有交换机。我只需要 DPID 和输出端口。但是您可以使用“ev.link”获取其他信息。希望这可以帮助。`

class OF13(app_manager.RyuApp):
OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]

_CONTEXTS = {
    'dpset': dpset.DPSet,
}

def __init__(self, *args, **kwargs):
    super(OF13, self).__init__(*args, **kwargs)
    self.dpset = kwargs['dpset']     

def _get_hwaddr(self, dpid, port_no):
    return self.dpset.get_port(dpid, port_no).hw_addr

@handler.set_ev_cls(event.EventLinkAdd)
def link_add(self, ev):
    print ev.link.src, ev.link.dst
    print self._get_hwaddr(ev.link.src.dpid, ev.link.src.port_no)        
于 2014-07-17T03:35:04.373 回答