我希望使用Python-RYU控制器为OpenFlow交换机创建匹配规则 . 规则应匹配任何非tcp数据包(ip协议6) .
据我所知,tcp连接的匹配规则是:
match = parser.OFPMatch(in_port = in_port,eth_dst = dst,ip_proto = 6)self.add_flow(datapath,1,match,actions)
我需要补充规则 . 谢谢
您可以为TCP数据包创建具有更高优先级的规则,为所有数据包创建另一个具有较低优先级的规则这样,所有* TCP数据包都将匹配第一个规则,所有*非TCP数据包将匹配第二个规则 .
(*)所有匹配 in_port 和 eth_dst
in_port
eth_dst
唯一的缺点是您需要知道如何处理TCP数据包 . 一个想法是将它们发送到控制器( ofproto.OFPP_CONTROLLER ) .
ofproto.OFPP_CONTROLLER
tcp_match = parser.OFPMatch(in_port=in_port, eth_dst=dst, ip_proto=6) self.add_flow(datapath, 2, tcp_match, tcp_actions) nontcp_match = parser.OFPMatch(in_port=in_port, eth_dst=dst) self.add_flow(datapath, 1, nontcp_match, nontcp_actions)
编辑:您似乎需要将 eth_type=0x0800 添加到匹配项中以使其正常工作 .
eth_type=0x0800
1 回答
您可以为TCP数据包创建具有更高优先级的规则,为所有数据包创建另一个具有较低优先级的规则这样,所有* TCP数据包都将匹配第一个规则,所有*非TCP数据包将匹配第二个规则 .
(*)所有匹配
in_port
和eth_dst
唯一的缺点是您需要知道如何处理TCP数据包 . 一个想法是将它们发送到控制器(
ofproto.OFPP_CONTROLLER
) .编辑:
您似乎需要将
eth_type=0x0800
添加到匹配项中以使其正常工作 .