Vous devriez être en mesure d'atteindre votre objectif avec le programmateur du hfsc. Vous aurez la possibilité de réserver une partie de la bande passante et de garantir une faible latence avec le "temps réel", les autres classes rempliront proportionnellement le reste de la bande passante avec le "linkshare".
Il est important ici d'utiliser le temps réel et non le partage de liens, car le temps réel, afin d'être sûr de pouvoir envoyer un paquet à la toute dernière miliseconde, est capable d'empêcher l'autre classe d'envoyer un paquet.
Afin d'accomplir ce que vous voulez, vous devez définir une limite supérieure élevée sur la classe racine (10MB peut-être), mais pas sur les classes feuilles. En raison de la façon dont hfsc linkshare partage la bande passante entre toutes les classes "ls", elles partageront la bande passante disponible, au-delà de la valeur m2 s'il y en a plus.
Par exemple, vous pouvez utiliser ce type de configuration :
# dns, ntp, teamspeak
iptables -t mangle -A POSTROUTING -o eth0 -p udp -m multiport --dports 53,123,9987 -j CLASSIFY --set-class 1:100
# Default tcp
iptables -t mangle -A POSTROUTING -o eth0 -p tcp -j CLASSIFY --set-class 1:200
# Default udp
iptables -t mangle -A POSTROUTING -o eth0 -p udp -j CLASSIFY --set-class 1:300
# ROOT QDISC - default goes on class 100 because it's probably arp gratuitous or whois since all ip traffic is already classified
tc qdisc add dev eth0 root handle 1:0 hfsc default 100
# ROOT CLASS - Interface eth0, noeud parent de la branche : 1:0, id de la branche : 1:10
tc class add dev eth0 parent 1:0 classid 1:10 hfsc ls m2 10000kbit ul m2 10000kbit
# CLASS 100 - VOIP, DNS, NTP
tc class add dev eth0 parent 1:10 classid 1:100 hfsc sc m1 400kbit d 10ms m2 100kbit
# QDISC
tc qdisc add dev eth0 parent 1:100 handle 110: fq_codel quantum 300 noecn # fq_codel requires to change the quantum for low bandwitdth
# CLASS 200 - some tcp
tc class add dev eth0 parent 1:10 classid 1:200 hfsc ls m1 80kbit d 10ms m2 80kbit
# QDISC - some tcp
tc qdisc add dev eth0 parent 1:200 handle 210: fq_codel
# CLASS 300 - some udp
tc class add dev eth0 parent 1:10 classid 1:300 hfsc ls m1 20kbit d 10ms m2 20kbit # ratio tcp / udp will then be 4:1
# QDISC - some udp
tc qdisc add dev eth0 parent 1:300 handle 310: fq_codel quantum 300 noecn
Les valeurs peuvent être modifiées en fonction de vos besoins, en particulier dans la classe 100, bien que j'aie essayé d'écrire ces chiffres pour qu'ils correspondent à votre 3G.
Vous devriez lire davantage sur l'homme tc-hfsc, ce poste y cet article pour en savoir plus sur le hfsc et son fonctionnement.
0 votes
Il semble que vous ayez besoin d'un script/programme qui peut déterminer votre bande passante, qui est exempt de votre mise en forme du trafic et qui peut ajuster vos paramètres tc automatiquement, peut-être via cron ou udev.