Jump to content

Recommended Posts

Posted (edited)

Такой вопрос:

Ведь 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

 

Но не уверен. и не совсем понимаю как оно работает.

Edited by Ivan Rostovikov
Posted (edited)

Вы так говорите, как будто HTB не подходит для шейпинга и не является совокупностью тех же token bucket. Кроме того, пример некорректен. Во-первых, к prio нельзя присоединять краевые дисциплины. TBF можно повесить только на parent queue. Во-вторых, u32 не использует для классификации метки iptables и в данном случае засаживает весь трафик в parent queue, т.е. никакого per user шейпинга не будет.

Edited by photon
Posted

Ну... да этот:

>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 ? - он меньше грузит процессор и точнее. Т.к. нет проблем с квантум при сильном разбросе скоростей.

 

Posted

Действительно классовая, но не думаю, что она даст какой-то выигрыш по сравнению с htb. Правило с tc filter, тем не менее, неправильное.

Posted (edited)
Суть - не в нем дело, а в том можно ли как таковые 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 Edited by photon
Posted

Действительно классовая, но не думаю, что она даст какой-то выигрыш по сравнению с htb. Правило с tc filter, тем не менее, неправильное.

Классовая то она классовая, да вот только разблюдовка по классам в ней осуществляется по TOS полю и никак иначе.

Posted
Действительно классовая, но не думаю, что она даст какой-то выигрыш по сравнению с 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

Posted (edited)

Но я все равно не вижу причин устраивать в Linux некий аналог dummynet при наличии классовой дисциплины HTB. Хотя сравнить эти конфигурации под нагрузкой было бы интересно.

Edited by photon
Posted
Действительно классовая, но не думаю, что она даст какой-то выигрыш по сравнению с 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, в т.ч. туда же в первый класс.
Posted (edited)

Боюсь меня не совсем верно поняли, и пример был неудачный.

А суть такова: Ведь 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 1

tc 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

Edited by Ivan Rostovikov
Posted

ну, как минимум нужно две очереди, иначе куда прикажете деваться трафику который не с меткой 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

 

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 и с Политикой конфиденциальности.