Pourquoi ce script TC ne marche pas

Notre application dispose de trois catégories de trafic et chaque type de trafic comprend trois ports. Nous voulons limiter le trafic par numéro de port via TC, donc j'ai fait un scénario simple TC Pour les tests, cependant, le script ne fonctionne pas comme prévu.

Vous trouverez ci-dessous les commandes shell que j'utilise pour installer TC. Le résultat attendu est que la vitesse de téléchargement SecureCRT et Apache (SecureCRT Les usages 22 Port, A. Apache Les usages 80) Sera limité 100 Kb / avec, mais le résultat réel que nous avons eu, telle: la vitesse de téléchargement reste inchangée - près 5 Mb / de.

   tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 cbq bandwidth 1Mbit avpkt 1000 cell 8

tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 1Mbit rate 1Mbit
weight 100kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

tc class add dev eth0 parent 1:0 classid 1:2 cbq bandwidth 1Mbit rate 1Mbit
weight 100kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

tc class add dev eth0 parent 1:0 classid 1:3 cbq bandwidth 1Mbit rate 1Mbit
weight 100kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded


tc class add dev eth0 parent 1:1 classid 1:1001 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:1001 handle 1001: sfq

tc class add dev eth0 parent 1:1 classid 1:1002 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:1002 handle 1002: sfq

tc class add dev eth0 parent 1:1 classid 1:1003 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:1003 handle 1003: sfq


tc class add dev eth0 parent 1:2 classid 1:2001 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:2001 handle 2001: sfq

tc class add dev eth0 parent 1:2 classid 1:2002 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:2002 handle 2002: sfq

tc class add dev eth0 parent 1:2 classid 1:2003 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:2003 handle 2003: sfq


tc class add dev eth0 parent 1:3 classid 1:3001 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:3001 handle 3001: sfq

tc class add dev eth0 parent 1:3 classid 1:3002 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:3002 handle 3002: sfq

tc class add dev eth0 parent 1:3 classid 1:3003 cbq bandwidth 1Mbit rate
800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:3003 handle 3003: sfq

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport
80 0xffff flowid 1:3001
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport
22 0xffff flowid 1:3002
Invité:

Agathe

Confirmation de:

Vous ne pouvez pas classer le trafic, puis utiliser la formation ou le retard sur
https://serverfault.com/q/537983/182140
Comme ils sont souvent appelés. Ce diagramme est emprunté à partir de
http://www.lartc.org/lartc.html
:

 Userspace programs
^
|
+---------------+-----------------------------------------+
| Y |
| -------> IP Stack |
| | | |
| | Y |
| | Y |
| ^ | |
| | / ----------> Forwarding -> |
| ^ / | |
| |/ Y |
| | | |
| ^ Y /-qdisc1-\ |
| | Egress /--qdisc2--\ |
--->->Ingress Classifier ---qdisc3---- | ->
| Qdisc \__qdisc4__/ |
| \-qdiscN_/ |
| |
+----------------------------------------------------------+

DANS Linux Facile simple Ingres qdisc, Mais ses capacités sont très limitées, car il n'y a pas de file d'attente d'entrée. Mais vous pouvez vous entendre avec

IMQ device

(InterMediate Queuing device), qui "imite" la file d'attente de l'organisation à l'entrée.

De plus, vous pouvez former / retarder le trafic entrant lorsque votre serveur agit comme un routeur (Avec la redirection incluse IP). Si le serveur a deux interfaces réseau - par exemple, eth0 Pour l'accès à Internet et eth1 Pour accéder au réseau local - Si le client du réseau local télécharge quelque chose, ce trafic est entrant / inclus sur l'interface eth0 et sortant / Sortant sur l'interface eth1. Donc, si vous définissez vos politiques QoS sur l'interface eth1, Elle va travailler.

Enfin, je vous recommanderais d'aller à

htb

qdisc de

cbq

comme plus précis (il utilise

TBF

ou Token Bucket Filter, qui ne dépend pas des caractéristiques de l'interface).

Pour répondre aux questions, connectez-vous ou registre