Я использую iptables + htb для определения пропускной способности интернет-трафика. Имею ссылку на DSL 17мбит. На самом деле я установил следующие правила:
# Interface eth0 (Donwload)
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 htb default 10
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 17mbit
tc class add dev eth0 parent 1:0 classid 1:10 htb rate 8mbit ceil 17mbit # Default Class
tc class add dev eth0 parent 1:0 classid 1:20 htb rate 1mbit ceil 17mbit # RDP Class
tc class add dev eth0 parent 1:0 classid 1:30 htb rate 7mbit ceil 17mbit # HTTP/HTTPS Class
tc class add dev eth0 parent 1:0 classid 1:40 htb rate 1mbit ceil 17mbit # DNS Class
Класс HTTP / HTTPS предназначен только для наших внешних выделенных серверов. Эти серверы имеют высокий трафик HTTP / HTTPS, поэтому я гарантирую минимальную скорость 7 Мбит при ceil 17 Мбит. Но проблема в том, что когда другие классы не полностью используют свою пропускную способность, класс HTTP / HTTPS не увеличивает свою скорость до 17 Мбит. Так случилось со всеми классами. Посмотрите результат команды "tc -s -d class show dev eth0"
Обратите внимание, что никакие классы не «заимствуют» доступную пропускную способность у других классов, даже если они имеют.
class htb 1:1 root prio 0 quantum 200000 rate 17000Kbit ceil 17000Kbit linklayer ethernet burst 1598b/1 mpu 0b overhead 0b cburst 1598b/1 mpu 0b overhead 0b level 0
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: 11750 ctokens: 11750
class htb 1:10 root prio 0 quantum 100000 rate 8000Kbit ceil 17000Kbit linklayer ethernet burst 1600b/1 mpu 0b overhead 0b cburst 1598b/1 mpu 0b overhead 0b level 0
Sent 3188470523 bytes 3905364 pkt (dropped 2262, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 3883404 borrowed: 0 giants: 0
tokens: 23406 ctokens: 11000
class htb 1:20 root prio 0 quantum 12500 rate 1000Kbit ceil 17000Kbit linklayer ethernet burst 1600b/1 mpu 0b overhead 0b cburst 1598b/1 mpu 0b overhead 0b level 0
Sent 5229133 bytes 11151 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 10898 borrowed: 0 giants: 0
tokens: 169125 ctokens: 9933
class htb 1:30 root prio 0 quantum 87500 rate 7000Kbit ceil 17000Kbit linklayer ethernet burst 1598b/1 mpu 0b overhead 0b cburst 1598b/1 mpu 0b overhead 0b level 0
Sent 24636498 bytes 27360 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 26923 borrowed: 0 giants: 0
tokens: -19199 ctokens: 3823
class htb 1:40 root prio 0 quantum 12500 rate 1000Kbit ceil 17000Kbit linklayer ethernet burst 1600b/1 mpu 0b overhead 0b cburst 1598b/1 mpu 0b overhead 0b level 0
Sent 11785726 bytes 84162 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 84162 borrowed: 0 giants: 0
tokens: 188000 ctokens: 11044
В чем дело? Вы можете помочь мне? Спасибо вам, ребята!
Ваш конечный класс привязан к 1: 0 вместо 1: 1, поэтому у родительского элемента нет доступной полосы пропускания для заимствования.
Установите для своих конечных классов значение «родительский 1: 1», и это должно быть хорошо.