Задний план:-
У меня есть система на основе руки, в которой есть настройка HTB на интерфейсе eth и wlan. Вот конфигурация HTB: -
tc class add dev eth1 parent 1:1 classid 1:1 htb rate 1Gbit ceil 1Gbit burst 18000b cburst 18000b
tc class add dev eth1 parent 1:1 classid 1:a100 htb rate 60Mbit ceil 60Mbit burst 18000b cburst 18000b
tc class add dev eth1 parent 1:a100 classid 1:10f htb rate 100Kbit ceil 60Mbit burst 18000b cburst 18000b
tc class add dev eth1 parent 1:10f classid 1:100 htb rate 25Kbit ceil 60Mbit burst 18000b cburst 18000b prio 3
tc class add dev eth1 parent 1:10f classid 1:101 htb rate 25Kbit ceil 60Mbit burst 18000b cburst 18000b prio 2
tc class add dev eth1 parent 1:10f classid 1:102 htb rate 25Kbit ceil 60Mbit burst 18000b cburst 18000b prio 1
tc class add dev eth1 parent 1:10f classid 1:103 htb rate 25Kbit ceil 60Mbit burst 18000b cburst 18000b prio 0
Вот там графическое представление: -
+---(1:1) htb rate 1Gbit ceil 1Gbit burst 18000b cburst 18000b
| Sent 200796370 bytes 152179 pkt (dropped 0, overlimits 0 requeues 0)
| rate 0bit 0pps backlog 0b 0p requeues 0
|
+---(1:54) htb prio 2 rate 50Mbit ceil 1Gbit burst 18000b cburst 18000b
| Sent 2521539 bytes 19693 pkt (dropped 0, overlimits 0 requeues 0)
| rate 0bit 0pps backlog 0b 0p requeues 0
|
+---(1:a100) htb rate 60Mbit ceil 60Mbit burst 18000b cburst 18000b
| Sent 198274831 bytes 132486 pkt (dropped 0, overlimits 0 requeues 0)
| rate 0bit 0pps backlog 0b 0p requeues 0
|
+---(1:10f) htb rate 100Kbit ceil 60Mbit burst 18000b cburst 18000b
| Sent 198274831 bytes 132486 pkt (dropped 0, overlimits 0 requeues 0)
| rate 0bit 0pps backlog 0b 0p requeues 0
|
+---(1:101) htb prio 2 rate 25Kbit ceil 60Mbit burst 18000b cburst 18000b
| Sent 198208856 bytes 132155 pkt (dropped 82134, overlimits 0 requeues 0)
| rate 0bit 0pps backlog 0b 0p requeues 0
|
+---(1:100) htb prio 3 rate 25Kbit ceil 60Mbit burst 18000b cburst 18000b
| Sent 64079 bytes 299 pkt (dropped 0, overlimits 0 requeues 0)
| rate 0bit 0pps backlog 0b 0p requeues 0
|
+---(1:103) htb prio 0 rate 25Kbit ceil 100Kbit burst 18000b cburst 18000b
| Sent 630 bytes 7 pkt (dropped 0, overlimits 0 requeues 0)
| rate 0bit 0pps backlog 0b 0p requeues 0
|
+---(1:102) htb prio 1 rate 25Kbit ceil 60Mbit burst 18000b cburst 18000b
Sent 1266 bytes 25 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
Проблема: я всегда достигаю только 70% (макс.) Скорости потока даже с iperf UDP-трафиком в локальной сети, с 60 Мбит / с в качестве предела восходящего и нисходящего канала, я едва получаю 40 Мбит / с. Из приведенного выше графика вы можете видеть, что classid 1: 101 (класс данных) имеет много сброшенных пакетов, я пытаюсь понять, почему это происходит, поскольку у него не должны закончиться токены при обеспечении пропускной способности ниже потолка. ставка.
Edit-1: вот обрезанный вывод qdisc tc -s -s -d q ls dev eth1
qdisc htb 1: root refcnt 5 r2q 10 default 54 direct_packets_stat 0 ver 3.17 direct_qlen 64000
Sent 370545050 bytes 354529 pkt (dropped 86336, overlimits 443788 requeues 0)
backlog 0b 0p requeues 0
qdisc pfifo 101: parent 1:101 limit 10p
Sent 356446201 bytes 252349 pkt (dropped 86263, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
Пожалуйста, дайте мне знать, если для отладки потребуется дополнительная информация.
Вы должны проверить очередь нижнего слоя этого конечного класса.
В выводе статистики вы видите потерянные пакеты, но без превышения лимита. Это означает, что у вас нет превышения пропускной способности в этом классе.
Если вы не настроили листовую очередь явно, вероятно, у вас есть очередь pfifo (очередь по умолчанию) с ограниченной глубиной очереди. По умолчанию глубина очереди pfifo равна длине очереди tx интерфейса нижнего уровня. Похоже, что очередь pfifo иногда переполняется, и превышенные пакеты отбрасываются.
Как отладить и исправить:
tc q disc get ...
), поэтому проверьте полный вывод tc -s -s -d q ls dev eth1
команда.tc q add dev eth1 parent 1:101 handle 101: <qdisc_type> limit <queue_depth>
.sfq
чтобы избежать голодания потока.