Linux
TC 雜湊過濾器 - 單個規則刪除
對於流量整形,我目前使用的設置看起來與 LARTC 的設置完全相同,在此頁面上:
http://lartc.org/howto/lartc.adv-filter.hashing.html
我有一個簡單的問題 - 每次我想修改雜湊表中的某些內容(比如將 IP 分配給不同的 flowid),我需要刪除整個過濾器表並再次按過濾器過濾添加它。(我實際上不是手動做的,我有一個很好的程序可以為我做這件事……但仍然……)有一個問題 - 我以這種方式分配了大約 10k 個過濾器,並刪除並重新填充了整個過濾器表可能會變得很長,這對於流量整形來說並不完全好。我的程序可以輕鬆地只刪除需要刪除的規則(從而將整個問題減少到幾個命令和幾毫秒),但我根本不知道只刪除一個散列規則的命令。
我的 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
wish: ’tc filter del …’ 命令只刪除一個特定的過濾器(例如 0a0a0a0a IP 匹配(IP 地址 10.10.10.10))。刪除一些小的子組也很好——例如我仍然可以很快地重新創建一個桶(bkt a)。
我的嘗試:我嘗試使用 prio 對所有過濾器進行編號,但沒有任何幫助——它們只是在下面創建了一些無法使用(但可刪除)的東西,但在刪除之後,分桶過濾器仍然存在。
有任何想法嗎?
編輯 - 我正在添加一個簡化的 tl;dr 問題描述:
- 我在一些介面上創建了雜湊過濾器,就像在這個http://lartc.org/howto/lartc.adv-filter.hashing.html
- 我想找到一個從表中刪除一條規則(例如 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
相同的命令與
add
,replace
和delete
單詞後的選項一起使用filter
。