从数据路径获取 OpenFlow 规则

Getting OpenFlow rules from a datapath

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

cookie=0x0, duration=18575.528s, table=0, n_packets=1, n_bytes=98, priority=1,ip,in_port=3,nw_dst=10.0.0.1 actions=output:1

我想要获取 nw_dst 和操作字段。

使用 OFPTableStatsRequest 对象。它将 return 一个包含所有已安装流的列表。

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

一个依赖实例变量的未经测试的例子数据路径

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

让我知道这是否适合你