python - OpenFlow 1.3, Python RYU, OFPMatch to all non-tcp packets

标签 python tcp openflow

我希望使用 Python-RYU Controller 为 OpenFlow 交换机创建匹配规则。 该规则应匹配任何非 tcp 数据包(ip 协议(protocol) 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_porteth_dst 的,以及

唯一的缺点是您需要知道如何处理 TCP 数据包。一个想法是将它们发送到 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 添加到匹配项中才能正常工作。

关于python - OpenFlow 1.3, Python RYU, OFPMatch to all non-tcp packets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25096451/

相关文章:

python - 如何使用python查找线段的长度

sdn - OpenFlow 中指令和 Action 的区别

python - 如何从DTMF音调获得低频

python - 使用 conda 从 Anaconda 导入 numpy 时出错(DLL 加载失败 : The specified module could not be found)

python - 创建一个自定义的 sklearn TransformerMixin 来一致地转换分类变量

python - 如何使用 Python 同时流式传输多个音频文件

C# - 从 TCP 连接读取时一些数据包被丢弃

sockets - Delphi:TCP打洞

sockets - ovs-ofctl 不工作 - 连接被拒绝

python - python 中网络拓扑的表示