Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 3806

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Le périphérique de file d'attente intermédiaire (The Intermediate queueing device (IMQ))</title><link href="style.css" rel="stylesheet" type="text/css" /><meta content="DocBook XSL Stylesheets V1.73.2" name="generator" /><link rel="start" href="index.html" title="HOWTO du routage avancé et du contrôle de trafic sous Linux" /><link rel="up" href="ch09.html" title="Chapitre 9. Gestionnaires de mise en file d'attente pour l'administration de la bande passante" /><link rel="prev" href="ch09s06.html" title="Classifier des paquets avec des filtres" /><link rel="next" href="ch10.html" title="Chapitre 10. Équilibrage de charge sur plusieurs interfaces" /></head><body><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Le périphérique de file d'attente intermédiaire (The Intermediate queueing device (IMQ))</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch09s06.html">Précédent</a> </td><th align="center" width="60%">Chapitre 9. Gestionnaires de mise en file d'attente pour l'administration de la 
  bande passante</th><td align="right" width="20%"> <a accesskey="n" href="ch10.html">Suivant</a></td></tr></table><hr /></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title"><a id="lartc.imq" />Le périphérique de file d'attente intermédiaire (The Intermediate queueing device (IMQ))</h2></div></div></div><p>
Le périphérique IMQ n'est pas un gestionnaire de mise en file d'attente
mais son utilisation est fortement liée à ceux-ci.
Au coeur de Linux, les gestionnaires de mise en file d'attente
sont attachés aux périphériques réseaux et tout ce qui est mis en file
d'attente dans ce périphérique l'est d'abord dans le gestionnaire. Avec ce
concept, il existe deux limitations :
</p><p>
1. Seule la mise en forme du trafic sortant est possible (un gestionnaire
d'entrée existe, mais ses possibilités sont très limitées en comparaison
des gestionnaires de mise en file basés sur les classes).
</p><p>
2. Un gestionnaire de mise en file d'attente ne voit le trafic que d'une
interface, et des limitations globales ne peuvent pas être mises en place. 
</p><p>
IMQ est ici pour aider à résoudre ces deux limitations. En résumé, vous
pouvez mettre tout ce que vous voulez dans un gestionnaire de mise en file
d'attente. Les paquets spécialement marqués sont interceptés par les 
points d'accroche netfilter NF_IP_PRE_ROUTING et NF_IP_POST_ROUTING et sont transférés
vers le gestionnaire attaché au périphérique imq. Une cible iptables est
utilisée pour le marquage des paquets.
</p><p>
Ceci vous permet de réaliser de la mise en forme d'entrée étant donné que
vous pouvez marquer les paquets entrant par un périphérique quelconque
et/ou traiter les interfaces comme des classes pour configurer des limites
globales. Vous pouvez également réaliser de nombreuses autres choses comme
simplement mettre votre trafic http dans un gestionnaire, mettre les
requêtes de nouvelles connexions dans un gestionnaire, ...
</p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N112E1" />Configuration simple</h3></div></div></div><p>
La première chose qui devrait vous venir à l'esprit est d'utiliser la mise
en forme du trafic entrant pour vous garantir une grande passante. ;)
La configuration se fait comme avec n'importe quelle autre interface :

<pre class="screen">tc qdisc add dev imq0 root handle 1: htb default 20

tc class add dev imq0 parent 1: classid 1:1 htb rate 2mbit burst 15k

tc class add dev imq0 parent 1:1 classid 1:10 htb rate 1mbit
tc class add dev imq0 parent 1:1 classid 1:20 htb rate 1mbit

tc qdisc add dev imq0 parent 1:10 handle 10: pfifo
tc qdisc add dev imq0 parent 1:20 handle 20: sfq

tc filter add dev imq0 parent 10:0 protocol ip prio 1 u32 match \
		ip dst 10.0.0.230/32 flowid 1:10
</pre>

Dans cet exemple, u32 est utilisé pour la classification. Les autres
classificateurs devraient marcher tout aussi bien. Le trafic doit ensuite être
sélectionné et marqué pour être mis en file d'attente vers imq0.

<pre class="screen">iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0

ip link set imq0 up
</pre>

</p><p>
Les cibles iptables IMQ sont valides dans les chaînes PREROUTING et
POSTROUTING de la table mangle. La syntaxe est la suivante :

<pre class="screen">IMQ [ --todev n ]	n : numéro du périphérique imq
</pre>

Il existe aussi une cible ip6tables.
</p><p>
Notez que le trafic n'est pas mis en file d'attente quand la cible est
activée, mais après. La localisation exacte de l'entrée du trafic dans le
périphérique imq dépend de la direction de ce trafic (entrant/sortant). 
Ces entrées sont les points d'accroche prédéfinis de netfilter et utilisés par
iptables :

<pre class="screen">enum nf_ip_hook_priorities {
        NF_IP_PRI_FIRST = INT_MIN,
        NF_IP_PRI_CONNTRACK = -200,
        NF_IP_PRI_MANGLE = -150,
        NF_IP_PRI_NAT_DST = -100,
        NF_IP_PRI_FILTER = 0,
        NF_IP_PRI_NAT_SRC = 100,
        NF_IP_PRI_LAST = INT_MAX,
};
</pre>

</p><p>
Pour le trafic entrant, imq se déclare avec la priorité NF_IP_PRI_MANGLE +
1, ce qui signifie que les paquets entrent dans le périphérique imq juste
après la chaine PREROUTING de la table mangle.
</p><p>
Pour le trafic sortant, imq utilise NF_IP_PRI_LAST qui honore le fait que
les paquets rejetés par la table filter n'occuperont pas de bande passante.
</p><p>
Les mises à jour et de plus amples informations peuvent être trouvées sur
le <a class="ulink" href="http://luxik.cdi.cz/~patrick/imq/" target="_top">site imq</a>.
</p></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch09s06.html">Précédent</a> </td><td align="center" width="20%"><a accesskey="u" href="ch09.html">Niveau supérieur</a></td><td align="right" width="40%"> <a accesskey="n" href="ch10.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">Classifier des paquets avec des filtres </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> Chapitre 10. Équilibrage de charge sur plusieurs interfaces</td></tr></table></div></body></html>