RYU中域的通配 wildcard

时间:2021-06-03 19:50:34

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

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

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

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

ofp = datapath.ofproto
ofp_parser = datapath.ofproto_parser
cookie = cookie_mask = 0
table_id = 0
idle_timeout = 15
hard_timeout = 60
priority = 2
buffer_id = ofp.OFP_NO_BUFFER
match = ofp_parser.OFPMatch(eth_type=flow_info[0],
ipv4_src=("10.0.0.0","255.255.255.252"),
ipv4_dst="10.0.0.4")
self.add_flow(datapath, 2, match, actions,idle_timeout=15,
hard_timeout=60)
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*************")