LinuxForum.Fans
Тема

[РЕШЕНО] И снова шейпинг

Автор: XliN 10 сообщений 2134 просмотров
21.11.2014 10:05 · отредактировано #401895

Есть шлюз. На нем применяются правила от tc. Задача порезать входящую скорость одного IP в инет

Дано:
eth1 - inet
eth0 - локалка (на это интерфейс еще повешен br0, т.к. юзаются vlan)
Ну и куча вланов.

Изучив iptasbles сделал вывод, что трафик вылавливается для шейпенга таким путем

text
iptables -t mangle -A POSTROUTING -o vlan1 -j CLASSIFY --set-class 1:40
iptables -t mangle -A FORWARD -i vlan1 -o eth1 -j CLASSIFY --set-class 1:40

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

text
tc class add dev eth1 parent 1:1 classid 1:60 htb  rate 200Kbit ceil 4024Kbit prio 5

Даже не надо добавлять это

text
tc qdisc add dev eth1 parent 1:60 handle 60: sfq perturb 10

Ниже выводы class и qdisc для обоих интерфейсов

Показать

eth1
Показать
[console] tc -s class show dev eth1
class htb 1:10 parent 1:1 leaf 10: prio 0 rate 4000Kbit ceil 100000Kbit burst 20Kb cburst 1600b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 640000 ctokens: 2000

class htb 1:1 root rate 100000Kbit ceil 100000Kbit burst 20462b cburst 1600b
Sent 424828706908 bytes 2130711178 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 179987235 borrowed: 0 giants: 0
tokens: 25481 ctokens: 1888

class htb 1:20 parent 1:1 leaf 20: prio 0 rate 3000Kbit ceil 80000Kbit burst 20Kb cburst 1600b
Sent 215329299962 bytes 1023052308 pkt (dropped 20116, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 973766428 borrowed: 48177225 giants: 0
tokens: 851078 ctokens: 2415

class htb 1:30 parent 1:1 leaf 30: prio 0 rate 2000Kbit ceil 40000Kbit burst 20Kb cburst 1600b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 1280000 ctokens: 5000

class htb 1:40 parent 1:1 leaf 40: prio 0 rate 1000Kbit ceil 20000Kbit burst 20Kb cburst 1600b
Sent 198708789224 bytes 1071296072 pkt (dropped 9229, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 962747738 borrowed: 107896942 giants: 0
tokens: 2548875 ctokens: 9443

class htb 1:50 parent 1:1 leaf 50: prio 0 rate 100000bit ceil 1000Mbit burst 2560b cburst 1375b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 3200000 ctokens: 187
[/console]
Показать
[console]tc -s qdisc show dev eth1
qdisc htb 1: root refcnt 9 r2q 10 default 60 direct_packets_stat 2958310475
Sent 1983477535618 bytes 856515552 pkt (dropped 579389, overlimits 127443941 requeues 1847932)
backlog 0b 0p requeues 1847932
qdisc sfq 10: parent 1:10 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 20: parent 1:20 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
Sent 215329299962 bytes 1023052308 pkt (dropped 47639, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 40: parent 1:40 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
Sent 198708841683 bytes 1071296474 pkt (dropped 14075, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 50: parent 1:50 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
[/console]

eth0

Показать
[console] tc -s class show dev eth0
class mq :1 root
Sent 26796624518894 bytes 2970071866 pkt (dropped 0, overlimits 0 requeues 1036783)
backlog 0b 0p requeues 1036783
class mq :2 root
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
class mq :3 root
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
class mq :4 root
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
class mq :5 root
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
class mq :6 root
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
class mq :7 root
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
class mq :8 root
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
[/console]
Показать
[console] tc -s qdisc show dev eth0
qdisc mq 0: root
Sent 26796840563994 bytes 2970276149 pkt (dropped 0, overlimits 0 requeues 1036785)
backlog 0b 0p requeues 1036785
[/console]

21.11.2014 11:09 #401906

Нужна выборка трафика по нужному ip. А правила iptables у тебя ко всему трафику.

> eth0 - локалка (на это интерфейс еще повешен br0, т.к. юзаются vlan)

Тут не очень понятно, зачем нужен бридж.

21.11.2014 11:46 #401912
"Macumazan" написал:
Нужна выборка трафика по нужному ip. А правила iptables у тебя ко всему трафику. 

Верно. Это сейчас так. Но я добавлю выше этого что то типо

text
iptables -t mangle -A POSTROUTING -o vlan1 -s 11.11.11.11 -j CLASSIFY --set-class 1:40
iptables -t mangle -A FORWARD -i vlan1 -s 11.11.11.11 -o eth1 -j CLASSIFY --set-class 1:40
21.11.2014 11:50 #401914
"Macumazan" написал:
Тут не очень понятно, зачем нужен бридж.

В мосту у меня только один, основной влан

text
bridge_br0="vlan1 tap0"
24.11.2014 20:22 · отредактировано #402345

Мыслей нет? Все классы что я смог найти, вещаются на этом сервере на eth0 и eth1

24.11.2014 22:09 #402356

ПРосто так весь траффик не попадёт в 1:60 где то что то не так

24.11.2014 23:35 · отредактировано #402366
"Kettler" написал:
ПРосто так весь траффик не попадёт в 1:60 где то что то не так

То что я прописываю на eth1 сейчас, отрабатывает нормально, но режет исходящую. Причем без добавления нового qdisc к этому классу.

Скорость исходящая режется как прописано, но сама входящая падает на половину где то.((

Вот если посмотреть на то что у меня прописано пред. админом.

text

class htb 1:40 parent 1:1 leaf 40: prio 0 rate 1000Kbit ceil 20000Kbit burst 20Kb cburst 1600b

У меня получается такое же, но почему то без leaf 40:

28.11.2014 09:31 #402767

Все заработало после таких операций. Режет в обе стороны. Тему можно зарывать.

text
tc qdisc add dev vlan5 root handle 1: htb default 60
tc class add dev vlan5 parent 1:1 classid 1:70 htb rate 100kbit ceil 1mbit burst 20k
tc qdisc add dev vllan5 parent 1:70 handle 70: sfq perturb 10
text
iptables -t mangle -I FORWARD -i vlan5 -s XX.XX.XX.XX -o eth1 -j CLASSIFY --set-class 1:70
iptables -t mangle -I POSTROUTING -o vlan5 -d XX.XX.XX.XX -j CLASSIFY --set-class 1:70
28.11.2014 09:55 #402772
"Kettler" написал:
ПРосто так весь траффик не попадёт в 1:60 где то что то не так

По дефолту стояло для всех использовать 60

"XliN" написал:
tc qdisc add dev vlan5 root handle 1: htb default 60
04.12.2014 21:24 #404003
XliN написал:
[quote="Kettler"]ПРосто так весь траффик не попадёт в 1:60 где то что то не так

По дефолту стояло для всех использовать 60

"XliN" написал:
tc qdisc add dev vlan5 root handle 1: htb default 60
[/quote]
Ну мы тут не боги и не могли видеть правила и думать что по умолчанию :60.
Войдите или зарегистрируйтесь, чтобы ответить.