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_mark
2番目の問題は、ディストリビューションがカーネルモジュールをコンパイルおよび/またはロードできない可能性があることです。lsmod | grep xt_mark
存在することを確認するために使用されます。
時にはOVSとiptablesに問題が発生することがあります。 90年代にはiptablesが素晴らしいツールだと思いましたが、今は少し古いような感じがします。問題を理解するには、「ディストリビューションがnetfilterモジュールを処理する方法を確認すること」が重要です。
パッケージを表示するだけでiptablesに他の目的がない場合は、次のOVSツールを使用できます。ovs-ofctlオプションがありますpkt_mark
。