トラフィックシェーピングには、現在、このページのLARTCのセットアップとまったく同じように見えるセットアップを使用しています。
http://lartc.org/howto/lartc.adv-filter.hashing.html
単純な問題があります。ハッシュテーブル内の何かを変更するたびに(IPを別のフローIDに割り当てるなど)、フィルターテーブル全体を削除して、フィルターごとに再度追加する必要があります。 (私は実際には手作業でそれをしません、私は私のためにそれをする素晴らしいプログラムを持っています...しかしそれでも...)問題があります-私はこの方法で約1万のフィルターを割り当て、フィルターテーブル全体を削除して補充しましたかなり長くなる可能性がありますが、これはトラフィックシェーピングには適していません。私のプログラムは、削除する必要のあるルールのみを簡単に削除できます(したがって、問題全体を数コマンドとミリ秒に減らすことができます)が、1つのハッシュルールのみを削除するコマンドがわかりません。
私のtcフィルターショー:
filter parent 1: protocol ip pref 1 u32
filter parent 1: protocol ip pref 1 u32 fh 2: ht divisor 256
filter parent 1: protocol ip pref 1 u32 fh 2:a:800 order 2048 key ht 2 bkt a flowid 1:101
match 0a0a0a0a/ffffffff at 16
filter parent 1: protocol ip pref 1 u32 fh 2:c:800 order 2048 key ht 2 bkt c flowid 1:102
match 0a0a0a0c/ffffffff at 16
filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 2:
match 00000000/00000000 at 16
hash mask 000000ff at 16
願い: 'tc filter del ...'コマンドを削除します1つだけ特定のフィルター(たとえば、0a0a0a0a IP一致(IPアドレス10.10.10.10)) )。いくつかの小さなサブグループを削除することもできます。たとえば、バケット(bkt a)をかなり高速に再作成できます。
私の試み:prioを使用してすべてのフィルターに番号を付けようとしましたが、助けにはなりませんでした。以下に使用できない(ただし削除可能な)ものが作成されるだけですが、バケット化されたフィルターは削除された後もそこに残ります。
何か案は?
編集-私は問題の簡略化されたtl; drの説明を追加しています:
私はこのようにいくつかのインターフェースでハッシュフィルターを作成しました http://lartc.org/howto/lartc.adv-filter.hashing.html
テーブルから1つのルール(1.2.1.123など)を削除し、残りはそのままにして機能させるコマンドを見つけたいと思います。
私はこれが古い投稿であることを知っていますが、私はこれを使用していて、うまく機能しているようです:
フィルタを追加します。
tc filter add dev eth1 parent 1: handle ::100 prio 1 protocol ip u32 match ip dst 10.10.10.10/32 flowid 1:100
フィルタを削除します。
tc filter del dev eth1 parent 1: handle 800::100 prio 1 protocol ip u32
必要なフィルターごとに「100」という数字を変更するだけです
次のコマンドを試しましたが、機能しているようです。
$ Sudo tc filter delete dev eth1 protocol ip parent 1: prio 1 u32 match ip src 10.10.10.10 flowid 1:2
同じコマンドが、Word add
の後のreplace
、delete
、およびfilter
オプションで機能しました。