Dark_Angel Опубликовано 30 января, 2010 · Жалоба Господа, пытаюсь разобраться с hashtables. Полистал форум, думал написать в какой-то существующей теме, но не нашел подходщей. Прочитал LARTC. Все красиво. Пытаюсь сделать - не работает. Скажем у меня есть сеть 192.168.2.0/24 и мне надо отфильтровать адрес 192.168.2.161. Все это дело происходит на интерфейсе ppp0. Я говорю: tc q add dev ppp0 root handle 1 htb tc cl add dev ppp0 parent 1:0 classid 1:2 htb rate 100Mbit tc cl add dev ppp0 parent 1:2 classid 1:5000 htb rate 5Mbit Тут все понятно. Дальше идут фильтры: # рутовый фильтр tc filter add dev ppp0 parent 1:0 prio 5 protocol ip u32 # таблица на 256 адресов tc filter add dev ppp0 parent 1:0 prio 5 handle 2: protocol ip u32 divisor 256 # добавляю в таблицу 1 запись. a1 - это 161 в hex. Фильтруем по плану все в 5000 класс, созданый выше tc filter add dev ppp0 protocol ip parent 1:0 prio 5 u32 ht 2:a1: match ip dst 192.168.2.161 flowid 1:5000 # делаю рутовую таблицу для отфильтровки собственно последнего байта в /24 и говорю идти читать созданную таблицу выше tc filter add dev ppp0 protocol ip parent 1:0 prio 5 u32 ht 800:: match ip dst 192.168.2.0/24 hashkey mask 0x000000ff at 12 link 2: После выполнения получаю в фильтрах: filter parent 1: protocol ip pref 5 u32 filter parent 1: protocol ip pref 5 u32 fh 2: ht divisor 256 filter parent 1: protocol ip pref 5 u32 fh 2:a1:800 order 2048 key ht 2 bkt a1 flowid 1:5000 match c0a802a1/ffffffff at 16 filter parent 1: protocol ip pref 5 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 2: match c0a80200/ffffff00 at 12 hash mask 000000ff at 12 Трафик в класс 5000 не попадает. Если сказать банальное tc filter add dev ppp0 protocol ip parent 1:0 prio 5 u32 match ip dst 192.168.2.161 flowid 1:5000 Трафик в классе появляется. Скажите, пожалуйста, где ошибка в моей конфигурации? Все по LARTC. Читал http://brownian.org.ua/?page_id=6 но там для более сложной структуры и почему-то "hashkey mask 0x000000ff at 16", а в LARTC - 12. Пробовал и так и так - результата нет. Заранее спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 30 января, 2010 (изменено) · Жалоба Скажите, пожалуйста, где ошибка в моей конфигурации? Все по LARTC. Читал http://brownian.org.ua/?page_id=6 но там для более сложной структуры и почему-то "hashkey mask 0x000000ff at 16", а в LARTC - 12. Пробовал и так и так - результата нет. Так у вас же IP инкапсулирован в PPP, значит надо ко всем смещениям прибавить размер заголовка PPP-кадра. Если у вас все IP в пределах одной сети /16, то вместо u32 можно использовать фильтр flow. 16 и 12 -- это смещения для destination IP и source IP. Изменено 30 января, 2010 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 30 января, 2010 · Жалоба Насчет 16 и 12 - Вы действительно оказались правы - это смещения для dst и src. Мне, для dst нужно было поставить 16. Хотя я раньше ставил, и оно не срабатывало, возможно, дело было в том, что там уже были фильтры на 12 смещении. Насчет инкапсуляци я с Вами не соглашусь - инкапсуляция есть, на eth0, скажем, на ppp0 пакет уже деинкапсулирован, поэтому там можно работать с нормальными смещениями. Все заработало, спасибо за пояснения. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_dx Опубликовано 14 августа, 2011 · Жалоба зачем делатся рутовый фильтр? # рутовый фильтрtc filter add dev ppp0 parent 1:0 prio 5 protocol ip u32 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
voron Опубликовано 14 августа, 2011 · Жалоба Чтобы последующие filter add с указанием handle нормально отрабатывали. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_dx Опубликовано 14 августа, 2011 · Жалоба Почему-то думал, что стандартная таблица 800 и так всегда существует... нет? Поэкспериментирую... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...