基于TCP端口Ryu控制器的TCP流匹配

基于TCP端口Ryu控制器的TCP流匹配,tcp,sdn,openflow,openvswitch,ryu,Tcp,Sdn,Openflow,Openvswitch,Ryu,我正在尝试使用RYU SDN控制器的TCP源端口将TCP流重定向到特定服务器。这是我的拓扑结构(第一步很简单): ovs1的匹配规则: match = parse.OFPMatch(in_port=port,eth_type=0x0800, ipv4_dst=server_ip, tcp_src=tcp_pkt.src_port) 但是我得到了以下错误: EventOFPErrorMsg received. version=0x4, msg_type=0x1, msg_len=0x4c, xi

我正在尝试使用RYU SDN控制器的TCP源端口将TCP流重定向到特定服务器。这是我的拓扑结构(第一步很简单):

ovs1的匹配规则:

match = parse.OFPMatch(in_port=port,eth_type=0x0800, ipv4_dst=server_ip, tcp_src=tcp_pkt.src_port)
但是我得到了以下错误:

EventOFPErrorMsg received.
version=0x4, msg_type=0x1, msg_len=0x4c, xid=0x370bf1bf
 `-- msg_type: OFPT_ERROR(1)
OFPErrorMsg(type=0x4, code=0x9, data=b'\x04\x0e\x00\x70\x37\x0b\xf1\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x28\x80\x00\x00\x04\x00\x00\x00\x01\x80\x00\x0a\x02')
 |-- type: OFPET_BAD_MATCH(4)
 |-- code: OFPBMC_BAD_PREREQ(9)
 `-- data: version=0x4, msg_type=0xe, msg_len=0x70, xid=0x370bf1bf
     `-- msg_type: OFPT_FLOW_MOD(14)
关键是,如果我删除tcp_src选项,一切都正常,这就是为什么我认为问题与我如何传递端口有关

有什么想法吗


提前谢谢

好吧,在花了很多时间研究这个问题之后,我得到了答案。为了定义与TCP端口的特定匹配,我们需要满足所有先决条件,这意味着在我的情况下需要添加ip_proto字段:

match = parse.OFPMatch(in_port=port,eth_type=0x0800, ip_proto=6, ipv4_dst=server_ip, tcp_src=tcp_pkt.src_port)

我在这里找到了答案:

好的,在花了很多时间研究这个问题后,我得到了答案。为了定义与TCP端口的特定匹配,我们需要满足所有先决条件,这意味着在我的情况下需要添加ip_proto字段:

match = parse.OFPMatch(in_port=port,eth_type=0x0800, ip_proto=6, ipv4_dst=server_ip, tcp_src=tcp_pkt.src_port)
我在这里找到了答案: