OVSインターフェイスのパケットフィルタリングのためのIptables代替

OVSインターフェイスのパケットフィルタリングのためのIptables代替

iptablesオープンVswitchインターフェイスに適用したすべてのルールが一致しないことに気づきました。

私はiptablesを使用していくつかのパケットを表示し、トラフィック制御(TC)フィルタを使用してIptablesマッチングに従ってパケットを別の優先順位キューに入れます。これはすべてのインタフェース、さらにはLinuxブリッジでも機能します(-m physdevモジュールを使用)。

ovsインターフェイスを介して着信パケットをiptablesとしてマークできない場合は、どのようにフィルタリングして別の優先順位キューに配置しますか?

ルール(単純化):

iptables -w -t mangle -A POSTROUTING -m physdev --physdev-out interface-name -m ttl --ttl-lt 10 ! -p 89 -j MARK --set-mark 10

tc filter add dev interface-name parent 1:0 protocol all prio 1 handle 10 fw flowid 1:10

次に、1:10と1:20という2つのキューがあるとし、HTBを優先順位として使用します。このルールは、ttl < 10(OSPFではない)のすべてのトラフィックを最初のキュー1:10に送信する必要があります。

答え1

これは古い質問です。ディストリビューションがnetfilterカーネルモジュールを処理する方法を知る必要があります。時々ロードされることがありますが、それを表示するルールを作成して分割するのがコツです。マングチェーンは少しトリッキーです。

以下を最初のタグ付けルールとして追加します。

iptables -t mangle -A POSTROUTING -m physdev --physdev-out interface-name -j MARK --set-mark 10

xt_mark2番目の問題は、ディストリビューションがカーネルモジュールをコンパイルおよび/またはロードできない可能性があることです。lsmod | grep xt_mark存在することを確認するために使用されます。

時にはOVSとiptablesに問題が発生することがあります。 90年代にはiptablesが素晴らしいツールだと思いましたが、今は少し古いような感じがします。問題を理解するには、「ディストリビューションがnetfilterモジュールを処理する方法を確認すること」が重要です。

パッケージを表示するだけでiptablesに他の目的がない場合は、次のOVSツールを使用できます。ovs-ofctlオプションがありますpkt_mark

関連情報