Python-RYUコントローラーを使用して、OpenFlowスイッチの一致ルールを作成しようとしています。ルールは、非 TCP パケット (IP プロトコル 6) に一致する必要があります。
私が知っているように、tcp 接続の一致ルールは次のとおりです。
一致 = parser.OFPMatch(in_port=in_port、eth_dst=dst、ip_proto=6) self.add_flow(データパス、1、一致、アクション)
ルールを補完する必要があります。ありがとう
TCP パケットの優先度が高いルールを作成し、すべてのパケットの優先度が低い別のルールを作成できます。そうすれば、すべての * TCP パケットが最初のルールに一致し、すべての * 非 TCP パケットが 2 番目のルールに一致します。
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