1

我正在寻找使用 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)

我需要补充规则。谢谢

4

1 回答 1

2

您可以为 TCP 数据包创建一个优先级较高的规则,为所有数据包创建另一个优先级较低的规则。这样,所有* TCP 数据包都将匹配第一个规则,所有*非 TCP 数据包将匹配第二个规则。

(*) 所有匹配in_porteth_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到匹配中才能使其正常工作。

于 2014-10-20T05:02:11.493 回答