Cadre d'utilisation

La méthode décrite dans ce document devrait s'appliquer à n'importe quelle configuration Linux. Toutefois, elle n'a pour l'instant été testée que dans la configuration suivante :

[Note]Note

Les versions antérieures de ce document impliquaient une méthode de contrôle de la bande passante qui passait par l'application d'un correctif à la queue sch_prio existante. Il s'est avéré que ce correctif était inutile. De surcroît, l'approche retenue dans ce texte donne de meilleurs résultats (quoiqu'à la date de rédaction de ce document, l'application de 2 correctifs au noyau soit nécessaire :o) ).

Toutes les mentions de périphériques réseau et de configuration dans ce guide pratique se rapportent au schéma suivant :

              <-- 128kbit/s      +------------+    <-- 10Mbit/s -->
 Internet <--------------------> | Modem ADSL | <-------------------+
               1.5Mbit/s -->     +------------+                     |
                                                                    | eth0
                                                                    V
                                                        +---------------+
                                                        |               |
                                                        | Routeur Linux |
                                                        |               |
                                                        +---------------+
                                                         | .. | eth1..ethN
                                                         |    |
                                                         V    V
                  
                                                      Réseau local

Les files d'attente contiennent les données destinées à un périphérique réseau quand celles-ci ne peuvent pas être expédiées immédiatement. La plupart des files d'attente sont du type premier entré/premier sorti (FIFO/first in, first out) sauf lorsqu'elles sont explicitement configurées pour appliquer une autre stratégie. Cela signifie que lorsqu'une file d'attente est remplie, le paquet qui y a été placé en dernier n'est émis qu'après tous ceux qui étaient déjà présents dans la file.

La bande passante d'un modem ADSL est asymétrique avec des valeurs typiques de 1,5 Mbit/s en descente et 128 kbit/s en trafic montant. Par rapport au débit de cette ligne, le routeur Linux et le modem ADSL sont généralement associés par un lien à 10 Mb/s ou plus. Si l'interface du routeur avec le réseau local est également à 10 Mb/s il n'y a aucune mise en attente au niveau du routeur lorsque les paquets transitent à destination d'Internet. Les paquets sont transmis via eth0 aussi rapidement qu'ils sont reçus du réseau local. Les paquets séjournent dans la file d'attente du modem ADSL puisqu'ils arrivent à 10 Mb/s et sont renvoyés à 128 kb/s. Une fois la file d'attente du modem saturée, les nouveaux paquets sont jetés. TCP s'adapte à ce phénomène et ajuste la taille de sa fenêtre de transmission pour employer toute la bande passante disponible.

Si les files d'attente et TCP s'accordent pour utiliser toute la bande passante, des tailles de FIFO importantes augmentent la latence du trafic à vocation interactive.

Les files d'attente à n voies sont similaires aux files d'attente de type FIFO à cette différence près qu'elles comprennent plusieurs files. Les paquets sont placés dans l'une des n files en fonction de leurs caractéristiques. Chaque file se voit attribuer une priorité et les paquets sont émis à partir de la file de plus haute priorité qui n'est pas vide. Avec cette stratégie, les paquets FTP peuvent être mis dans une file de priorité plus basse que les paquets destinés à telnet de telle sorte qu'un simple paquet telnet est capable de franchir la file d'attente immédiatement même lors d'un transfert FTP.

Ce document a été repris pour faire usage d'une nouvelle file d'attente dans Linux, dite de type HTB (Hierarchical Token Bucket). La file HTB ressemble à la file à n voies décrite précédemment mais elle rend possible la limitation de trafic dans chaque classe. En outre, elle autorise la création d'une hiérarchie de classes de trafic. Une description complète d'HTB dépasse le cadre de ce document. Davantage d'informations sont disponibles sur le site http://www.lartc.org

Le trafic entrant dans le modem ADSL en provenance d'Internet est mis en file d'attente de la même façon que le trafic sortant à ceci près que la file d'attente se situe chez le FAI. Il n'est donc guère possible de contrôler les priorités relatives des flux ou d'appliquer un traitement préférentiel à certains. La seule façon de maintenir une latence décente consiste à s'assurer que les interlocuteurs n'envoient pas les données trop vite. Il n'y a malheureusement pas de méthode directe. Comme une bonne partie du trafic est de type TCP, il est toutefois possible de ralentir les émetteurs :