Jump to content

Recommended Posts

Posted

Господа, пытаюсь разобраться с 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. Пробовал и так и так - результата нет.

 

Заранее спасибо.

Posted (edited)

Скажите, пожалуйста, где ошибка в моей конфигурации? Все по 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.

Edited by photon
Posted

Насчет 16 и 12 - Вы действительно оказались правы - это смещения для dst и src. Мне, для dst нужно было поставить 16. Хотя я раньше ставил, и оно не срабатывало, возможно, дело было в том, что там уже были фильтры на 12 смещении.

 

Насчет инкапсуляци я с Вами не соглашусь - инкапсуляция есть, на eth0, скажем, на ppp0 пакет уже деинкапсулирован, поэтому там можно работать с нормальными смещениями.

 

Все заработало, спасибо за пояснения.

  • 1 year later...
Posted

зачем делатся рутовый фильтр?

# рутовый фильтр

tc filter add dev ppp0 parent 1:0 prio 5 protocol ip u32

Posted

Почему-то думал, что стандартная таблица 800 и так всегда существует... нет?

Поэкспериментирую...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.