我正在寻找使用 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
, 以及
唯一的缺点是您需要知道如何处理 TCP 数据包。一个想法是将它们发送到控制器(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
到匹配中才能使其正常工作。