Au cœur de l'Internet se trouvent les
routeurs, et la façon dont
ils traitent les paquetsIP est cruciale pour le bon fonctionnement
du réseau. C'est particulièrement important lorsque le trafic
augmente et que les files d'attente dans les routeurs se
remplissent. Que faire, alors ? Ce nouveau
RFC discute des stratégies des routeurs
confrontés à des files d'attente bien remplies.
Pas de « bonne » ou de « mauvaise » méthode dans ce RFC mais
une discussion des possibilités. Il y a longtemps que le sujet est
discuté, souvent avec des termes dangereux, car trop chargés, comme « juste »
(qu'est-ce qui est juste ? Quels paquets jeter lorsque la file
d'attente est pleine ? Les plus anciens ? Les plus gros ? Ceux
venant de certains réseaux ?) Ainsi, le parle de
gestion juste de la file d'attente... Le problème (à part la
question de philosophie « qu'est-ce que la justice ? ») est que
toute politique de gestion de la file d'attente peut entrainer des
adaptations non souhaitées de la part des machines connectées au
réseau (si on jette en priorité les paquets les plus gros, on
encourage les machines à envoyer des paquets plus petits, comme
dans le Silly Window
Syndrome).
Sur la question de principe de l'équité ou de la justice, il
faut toujours lire l'article de référence, « Flow Fairness:
Dismantling a Religion ».
Historiquement, des modèles de trafic peu réalistes avaient été
utilisés. Par exemple, certains modèles partent du débit moyen
d'un flot tout au long de son existence et raisonnent là-dessus. Mais le trafic Internet est
tout, sauf moyen. Il est plutôt en quanta, avec des sursauts brusques. Par
exemple, une caméra va envoyer trente images par seconde et cela
se traduira par beaucoup de données lorsqu'une nouvelle image est
disponible, puis un silence d'un trentième de seconde avant
l'image suivante.
Au passage, j'ai parlé de flot sans
l'expliquer. Le terme est courant dans les discussions réseau mais
souvent assez flou. Cela peut désigner une session du protocole de
transport (identifiée par
le fameux tuple à cinq éléments du ), tous les paquets entre deux machines données,
tous les paquets vers une machine donnée...
Autre question pratique dès qu'on discute d'équité entre les
flots, comment est-ce qu'on la mesure, pour déterminer si elle est
respectée ou pas ? Le , entre
autres, se penche sur cette question.
Le gros du RFC est formé par la section 3, qui discute des
outils habituels de gestion des paquets par les routeurs : mettre en file d'attente
(queuing), marquer les paquets
(marking) et les jeter
(dropping). Tous ces outils sont indispensables
(tant que la mémoire des routeurs sera finie, et donc les files
d'attente n'auront pas une taille illimitée, il faudra parfois
jeter des paquets) et sont interprétés par le reste du réseau
comme des signaux indiquant l'approche ou le
début de la congestion.
Ce RFC discute de divers concepts, il ne spécifie pas un
algorithme. Pour un exemple d'algorithme récent de gestion des
files d'attente des routeurs, voir FQ-Codel, même s'il ne suit pas
forcément les avis du RFC (CoDel a été finalement publié dans le
.)