Ivan Rostovikov Опубликовано 12 октября, 2009 (изменено) · Жалоба Такой вопрос: Ведь TBF "безклассовая"... но точная и простая. Можно ли заставить TBF шейпить только то, что хочется с помощь iptables -j MARK ? Нашел в сети пример: tc qdisc add dev eth0 root handle 1: prio tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 40kbit buffer 1600 limit 3000 tc qdisc add dev eth0 parent 1:2 handle 20: tbf rate 80kbit buffer 1600 limit 3000 tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip src 192.168.100.3/24 flowid 1:1 Но не уверен. и не совсем понимаю как оно работает. Изменено 12 октября, 2009 пользователем Ivan Rostovikov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 12 октября, 2009 (изменено) · Жалоба Вы так говорите, как будто HTB не подходит для шейпинга и не является совокупностью тех же token bucket. Кроме того, пример некорректен. Во-первых, к prio нельзя присоединять краевые дисциплины. TBF можно повесить только на parent queue. Во-вторых, u32 не использует для классификации метки iptables и в данном случае засаживает весь трафик в parent queue, т.е. никакого per user шейпинга не будет. Изменено 12 октября, 2009 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DemYaN Опубликовано 12 октября, 2009 · Жалоба те как-это нельзя вешать дисциплины ? prio такой же classful как и htb Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan Rostovikov Опубликовано 12 октября, 2009 · Жалоба Ну... да этот: >tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip src 192.168.100.3/24 flowid 1:1 пример с фильтром не совсем корректен. Тут нет марков. Суть - не в нем дело, а в том можно ли как таковые TC фильтры (по марку например) применять для TBF. Почему TBF ? - он меньше грузит процессор и точнее. Т.к. нет проблем с квантум при сильном разбросе скоростей. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 12 октября, 2009 · Жалоба Действительно классовая, но не думаю, что она даст какой-то выигрыш по сравнению с htb. Правило с tc filter, тем не менее, неправильное. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 12 октября, 2009 (изменено) · Жалоба Суть - не в нем дело, а в том можно ли как таковые TC фильтры (по марку например) применять для TBF.Почему TBF ? - он меньше грузит процессор и точнее. Т.к. нет проблем с квантум при сильном разбросе скоростей. Проблемы с quantum решаются установкой quantum 1500 для всех классов и скоростей. Для классификации лучше вместо marks использовать flow filter: tc filter add dev eth0 flow map key src addend -192.168.0.0 divisor 256 Изменено 12 октября, 2009 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
КузярБ Опубликовано 12 октября, 2009 · Жалоба Действительно классовая, но не думаю, что она даст какой-то выигрыш по сравнению с htb. Правило с tc filter, тем не менее, неправильное. Классовая то она классовая, да вот только разблюдовка по классам в ней осуществляется по TOS полю и никак иначе. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DemYaN Опубликовано 12 октября, 2009 · Жалоба Действительно классовая, но не думаю, что она даст какой-то выигрыш по сравнению с htb. Правило с tc filter, тем не менее, неправильное.Классовая то она классовая, да вот только разблюдовка по классам в ней осуществляется по TOS полю и никак иначе. WTF? priomap "If you do not provide tc filters to classify traffic", the PRIO qdisc looks at the TC_PRIO priority to decide how to enqueue traffic. The kernel assigns each packet a TC_PRIO priority, based on TOS flags or socket options passed by the application. The TC_PRIO is decided based on the TOS Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 13 октября, 2009 (изменено) · Жалоба Но я все равно не вижу причин устраивать в Linux некий аналог dummynet при наличии классовой дисциплины HTB. Хотя сравнить эти конфигурации под нагрузкой было бы интересно. Изменено 13 октября, 2009 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
КузярБ Опубликовано 13 октября, 2009 · Жалоба Действительно классовая, но не думаю, что она даст какой-то выигрыш по сравнению с htb. Правило с tc filter, тем не менее, неправильное.Классовая то она классовая, да вот только разблюдовка по классам в ней осуществляется по TOS полю и никак иначе. WTF? priomap "If you do not provide tc filters to classify traffic", the PRIO qdisc looks at the TC_PRIO priority to decide how to enqueue traffic. The kernel assigns each packet a TC_PRIO priority, based on TOS flags or socket options passed by the application. The TC_PRIO is decided based on the TOS Да, проглядел, фильтры можно использовать. Вот только в исходном примере нескладно получится - из сетки 192.168.100.3/24 оно пойдет в первый класс, а все остальное будет раскидано в соответствии с TOS, в т.ч. туда же в первый класс. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan Rostovikov Опубликовано 13 октября, 2009 (изменено) · Жалоба Боюсь меня не совсем верно поняли, и пример был неудачный. А суть такова: Ведь TBF работает на весь интерфейс сразу. А мне нужно пропускать через нее только маркированый трафик. Вот я и спрашиваю можно ли повесить TBF на единственый листок prio ? Лиш для того, что бы использовать фильтр по маркеру... tc qdisc add dev ppp0 root handle 1: prio bands 1 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1tc qdisc add dev ppp0 parent 1:1 handle 10: tbf rate 40kbit buffer 1600 limit 3000 tc filter add dev ppp0 parent 1: protocol ip prio 1 handle 1 fw classid 1:1 iptables -t mangle -A FORWARD -s 10.0.0.0/8 -j MARK --set-mark 1 Изменено 13 октября, 2009 пользователем Ivan Rostovikov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DemYaN Опубликовано 13 октября, 2009 · Жалоба ну, как минимум нужно две очереди, иначе куда прикажете деваться трафику который не с меткой 1? нужно пробовать, что-то вроде такого: tc qdisc add dev ppp0 root handle 1: prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 tc qdisc add dev ppp0 parent 1:1 handle 10: tbf rate 40kbit buffer 1600 limit 3000 tc qdisc add dev ppp0 parent 1:2 handle 11: bfifo tc filter add dev ppp0 parent 1: protocol ip prio 1 handle 1 fw classid 1:1 tc filter add dev ppp0 parent 1: protocol ip u32 match u32 0 0 classid 1:2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan Rostovikov Опубликовано 14 октября, 2009 · Жалоба Понял Вас. Но почему Вы для остального трафика предложили bfifo, а нет pfifo_fast ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...