FastNetMon

Tuesday 28 October 2014

Как отлажить фильтры шейпера tc в Linux и не сойти с ума?

Ваш покорный слуга занимается этим уже долгие недели и решил, что хватит это терпеть!

Если Вы работали с фильтрами tc, то, уверен, вспоминаете это время с дрожью и ненавистью.

Почему?

Ну, например, потому, что обычный фильтр (tc -s filter show dev bond0) выглядит так:
filter parent 1: protocol ip pref 10 u32 fh b:37:800 order 2048 key ht b bkt 37 flowid 1:3c  (rule hit 11 success 0)
  match 9ffd1737/ffffffff at 12 (success 0 )

Да, Вы правильно подумали, 9ffd1737 - это IP адрес, который используется в фильтре. Как же его привести в вид IP адреса из этого шестнадцатеричного бреда?

Итак, скрипт спаситель: https://gist.github.com/pavel-odintsov/8bcddca3673f97d18b8f

Он работает как фильтр и запускать его так:

tc -s filter show dev bond0| perl convert_hex_ip_to_human_ip.pl
В итоге указанный Выше участок примет вид:
filter parent 1: protocol ip pref 10 u32 fh 800::80a order 2058 key ht 800 bkt 0 link b:  (rule hit 269307 success 0)
  match 159.253.23.0/255.255.255.0 at 12 (success 32668 )
    hash mask 0.0.0.255 at 16
Пожалуйста :)

No comments :

Post a Comment

Note: only a member of this blog may post a comment.