OpenFlow 1.3,Python RYU,OFPMatch匹配所有非TCP包

1 投票
1 回答
4440 浏览
提问于 2025-04-18 15:45

我想为OpenFlow交换机创建一个匹配规则,使用的是Python-RYU控制器。这个规则应该能够匹配任何非TCP的数据包(IP协议号为6)。

我知道,TCP连接的匹配规则是这样的:

match = parser.OFPMatch(in_port=in_port, eth_dst=dst, ip_proto=6) self.add_flow(datapath, 1, match, actions)

我需要补充一个规则。谢谢!

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,这样才能正常工作。

撰写回答