1

RYU SDNコントローラーでtcpソースポートを使用して、TCPフローを特定のサーバーにリダイレクトしようとしています。これは私のトポロジです(最初のステップは簡単です):

host -- ovs1 -- ovs2 -- server

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 オプションを削除すると、すべてが正常に機能するということです。そのため、問題はポートの渡し方に関連していると思います。

何か案は?

前もって感謝します!

4

1 に答える 1

4

わかりました、この問題に多くの時間を費やした後、私は答えを得ました。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)

ここで答えを見つけました:OpenFlow Switch Specification

于 2016-11-08T11:32:47.523 に答える