天天看点

RYU中域的通配 wildcard

实验中需要有匹配域是通配的,比如IP通配某一部分掩码,官方文档上对于这一部分写的不是很清楚,摸索之后发现写法如下:

以一个tuple的形式将掩码和匹配项写在一起即可

match = parser.OFPMatch(
                    eth_type=flow_info[],
                    ipv4_src=("10.0.0.0","255.255.255.252"), ipv4_dst=flow_info[])
self.add_flow(datapath, , match, actions,idle_timeout=, hard_timeout=)
self.logger.info("**********entry is added*************")
           

相应的,删除一个带有指定域通配的流表的做法如下:

ofp = datapath.ofproto
ofp_parser = datapath.ofproto_parser
cookie = cookie_mask = 
table_id = 
idle_timeout = 
hard_timeout = 
priority = 
buffer_id = ofp.OFP_NO_BUFFER
match = ofp_parser.OFPMatch(eth_type=flow_info[],
            ipv4_src=("10.0.0.0","255.255.255.252"),   
            ipv4_dst="10.0.0.4")
self.add_flow(datapath, , match, actions,idle_timeout=, 
              hard_timeout=)
req = ofp_parser.OFPFlowMod(datapath, cookie, cookie_mask,
                            table_id, ofp.OFPFC_DELETE,
                            idle_timeout, hard_timeout,
                            priority, buffer_id,
                            dst_port, ofp.OFPG_ANY,
                            ofp.OFPFF_SEND_FLOW_REM,
                            match)
datapath.send_msg(req)
self.logger.info("**********entry is deleted*************")