OpenFlow 1.3,Python RYU,OFPMatch匹配所有非TCP包
我想为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_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
,这样才能正常工作。