从数据路径获取OpenFlow规则

时间:2016-11-30 19:31:43

标签: sdn openflow ryu

在Ryu Controller中,对于选定的数据路径,如何从交换机获取OpenFlow规则?例如,对于以下规则:

  

cookie = 0x0,持续时间= 18575.528s,表= 0,n_packets = 1,n_bytes = 98,   priority = 1,ip,in_port = 3,nw_dst = 10.0.0.1 actions = output:1

我想获得nw_dst和actions字段。

1 个答案:

答案 0 :(得分:1)

使用 OFPTableStatsRequest 对象。它将返回包含所有已安装流的列表。

请注意,还有 OFPGroupStatsRequest 对群组执行相同的操作。

依赖于实例变量 datapath 的未经测试的示例。

import ryu.app.ofctl.api as api

def ofdpaTableStatsRequest(datapath):
    parser = datapath.ofproto_parser
    return parser.OFPTableStatsRequest(datapath)

def getFlows(self):
    """
    Obtain a list of Flows loaded on the switch
    `
    :return: A list of Flow Entires
    """
    msg = ofdpaTableStatsRequest(self.datapath)
    reply = api.send_msg(self.ryuapp, msg,
                         reply_cls=self.parser.OFPTableStatsReply,
                         reply_multi=True)
    // the flow entries you are looking for will be in the reply

如果这对您有用,请告诉我