N.Leiten 89 Опубликовано: 2005-09-04 20:07:39 Share Опубликовано: 2005-09-04 20:07:39 В общем облазил уже все, обчитал везде... Повсюду пишут как добавлять фильтр, какие параметры можно указывать - но нигде не нашел как удалить только один фильтр. Подробнее: Делаем корневую дисциплину tc qdisc add dev eth0 root handle 1: htb default 1 Для нее создаем класс (для нас он будет корневым - к нему остальные подцепим и он будет по-умалчанию выбран, если не подойдет ни к одному фильтру) tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbit Создаем классы с нужными скоростями и цепляем их к верхнему tc class add dev eth0 parent 1:1 classid 1:2 htb rate 192kbit tc class add dev eth0 parent 1:1 classid 1:3 htb rate 128kbit tc class add dev eth0 parent 1:1 classid 1:4 htb rate 64kbit Для каждого класса определяем дисциплину и метод шейпинга пакетов tc qdisc add dev eth0 parent 1:2 handle 2: sfq perturb 10 tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10 tc qdisc add dev eth0 parent 1:4 handle 4: sfq perturb 10 Создаем фильтры (если пакет идет на определенный айпи - задерживаем согласну классу) tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.0.1 flowid 1:2 tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.0.2 flowid 1:3 tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.0.3 flowid 1:4 Теперь самое главное. Когда я хочу удалить один фильтр - посылает матом либо очищает всю таблицу фильтров. Вот что я ему пишу: tc filter del dev eth1 parent 1: protocol ip prio 1 u32 match ip dst 192.168.0.1 flowid 1:2 или tc filter del dev eth1 parent 1: protocol ip prio 1 u32 flowid 1:2 или tc filter del dev eth1 parent 1: protocol ip prio 1 u32 match ip dst 192.168.0.1 - Происходит полная очистка от всех фильтров Когда пытаюсь удалить класс, на который ссылается фильтр - посылает в далекие края - мол устройство занято (логично предположить, что занято оно именно фильтром) Пару раз выдавало ошибку - что-то вроде укажите тип фильтра, с этим понятно - переключатель u32 и является его типом (читает первые 32 байта пакета, в которых и есть наши адреса источника и получателя). Вопрос, что такое handle FILTERID (из хелпа по фильтрам взял)? Или кто знает как по отдельности удалять фильтры - ну не хочу я делать двойные классы (чтоб каждый фильтр приклерплять к своему классу) - да и сложно это будет прописать, если вообще возможно... Ссылка на сообщение Поделиться на других сайтах
N.Leiten 89 Опубліковано: 2005-09-05 07:32:45 Автор Share Опубліковано: 2005-09-05 07:32:45 Насчет handle FILTERID вопрос снимаю... писал ночью - не вспомнил вовремя, что написал Ссылка на сообщение Поделиться на других сайтах
N.Leiten 89 Опубліковано: 2005-09-05 19:47:55 Автор Share Опубліковано: 2005-09-05 19:47:55 В общем методом научного тыка был обнаружен ответ на мой вопрос: При выводе списка фильтров есть такой параметр handle, в моему случае он был равен 802::800 вот его стоит указать при удалении и нужный фильтр отправляется в небытие. Осталось определить зависимость этого номера от самого фильтра и класса в который он направляет пакет. Ссылка на сообщение Поделиться на других сайтах
Dr.Techno 0 Опубліковано: 2005-09-06 09:42:19 Share Опубліковано: 2005-09-06 09:42:19 а add на del менять не пробовали? Ссылка на сообщение Поделиться на других сайтах
N.Leiten 89 Опубліковано: 2005-09-06 13:53:27 Автор Share Опубліковано: 2005-09-06 13:53:27 Гы, если б работало - не спрашивал... Меняешь на дел и очищается вся цепочка - писал в начале обсуждения... Кстати, что-то редко в аське появляешься... не авторизировал меня. Я уже и сам забыл по какому вопросу хотел поговорить (что-то о свитчах). Ссылка на сообщение Поделиться на других сайтах
Ruerick 0 Опубліковано: 2007-01-12 00:00:28 Share Опубліковано: 2007-01-12 00:00:28 Ну что, найден ли выход из этой ситуации? сам стучусь лбом туда же Ссылка на сообщение Поделиться на других сайтах
deep_admin 1 Опубліковано: 2007-01-12 09:48:36 Share Опубліковано: 2007-01-12 09:48:36 тоже бьюсь, рез-т пока отрицательный, есть подозрение в ошибках самой утилиты tc, вообщем надо смотреть ее исходники Ссылка на сообщение Поделиться на других сайтах
Ruerick 0 Опубліковано: 2007-01-12 13:51:15 Share Опубліковано: 2007-01-12 13:51:15 http://mailman.ds9a.nl/pipermail/lartc/2006q3/019431.html это непосредственно в майл-листе у разработчиков. т е предлагают перезапускать всю таблицу. но мне как и автору мессаги в этом урле такой подход не устраивает. (у меня все в динамике, и отслеживать кто жив кто нет через mysql в ip-up и ip-down слишком долго и что важнее - слишком ненадежно) тоже пошел по пути регекспа tc filter show, вычленения оттуда хэндла по имеющемуся флоу-айди и запуска той же команды которую я давал в tc filter add блаблабла с хэндлом : tc filter del блаблабла handle хэн::дл ... вот такой секс ... ... но - работает!... Ссылка на сообщение Поделиться на других сайтах
N.Leiten 89 Опубліковано: 2007-01-13 08:38:24 Автор Share Опубліковано: 2007-01-13 08:38:24 Я-то давно сделал... Правда кривовато получается Там по хэндлу смотреть нужно. Но он его назначает сам и в произвольном порядке. То есть предварительно его прочесть надобно, а потом удалять... Все детали можете посмотреть в скриптах flexshape http://flexshape.narod.ru PS. Ответ хранится в третьем посте этого треда Ссылка на сообщение Поделиться на других сайтах
Ruerick 0 Опубліковано: 2007-01-13 10:48:22 Share Опубліковано: 2007-01-13 10:48:22 Да я сам накатал подобный скрипт (точнее два - ip-up и ip-down , у меня все это в pptp и pppoe потому что задействуется) на тикле, если надо, могу поделится. просто хотелось бы чегото более прямого чем регекспить список текущих фильтров и удалять потом. глюков у себя пока не заметил особо. но все равно, дело не в глюках, дело в том что из за отсутствия возможности както по простому удалять фильтр приходится городить монструозный скрипт на ровном месте... Ссылка на сообщение Поделиться на других сайтах
Ruerick 0 Опубліковано: 2007-01-13 11:38:43 Share Опубліковано: 2007-01-13 11:38:43 а в чем, если не секрет, кривоватость (на практике)? Ссылка на сообщение Поделиться на других сайтах
paul@1 0 Опубліковано: 2007-03-29 14:22:54 Share Опубліковано: 2007-03-29 14:22:54 Долго искал в Интернете как удалить отдельный фильтр, но вы, господа, меня простите... Он удаляется командой вида: tc filter del dev ethX parent X: protocol ip prioX handle X::X u32 X - это ваши значения. Т.е. ничего общего с тем, что обсуждается на форуме. Ссылка на сообщение Поделиться на других сайтах
N.Leiten 89 Опубліковано: 2007-03-29 21:16:38 Автор Share Опубліковано: 2007-03-29 21:16:38 paul@1 Простите, в чем ваш ответ оригинальней моего ответа в третьем посте? (вопрос риторический, ответа не требует) ЗЫ. Ответ уже давно получен. Прошу модераторов закрыть эту тему, дабы не флудить больше. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас