+++ title = "Qualité de Service et auto-hébergement : principes de base" date = 2011-04-04 aliases = [ "post/2011/04/04/Qualité-de-Service-et-auto-hébergement-:-principes-de-base"] [taxonomies] tags = [ "internet", "rézo" ] +++ Jeune macaque aventurier, tu t'auto-héberges pour prouver que tu as une paire de testicules en béton et continuer de faire des choses sales sur le Ouaib en toute impunité ou presque, et à cette fin, tu as probablement chez toi une magnifique connexion ADSL avec 8Mbits de bande passante descendante et un tout petit mégabit de bande passante montante, par beau temps et quand le vent porte dans la bonne direction. On va pas aller bien loin avec ça… D'ailleurs, je tiens à remercier personnellement, et pour la 12 748ème fois cette année, France Télécom pour avoir fait le choix débile de l'ADSL plutôt que du SDSL il y a de cela environ une quinzaine d'années… Bref, tu vas rapidement te retrouver avec un souci majeur : comment rendre les différentes choses que tu héberges chez toi accessibles dans un temps raisonnable pendant que ~~bittorrent tourne à donf !~~ ta ligne est occupée d'autre part ? Comment faire pour être certain que ton blog/forum/site sur l'échangisme animalier continuera d'être accessible alors que tu envoies les photos de ta dernière partie fine en pièce jointe dans un message ? La réponse est simple jeune macaque, il te faut faire de la qualité de service©. # Qualité de KÔA ? Sans m'attarder sur les principaux algorithmes, implémentations, etc, je vais simplement faire un tout petit rappel sur les principes de base du bouzin. Ce qui nous intéresse, c'est bien de faire de la qualité de service en sortie, sur le lien montant donc, histoire de garantir que la messagerie instantanée passera avant le passionnant blog vidéo de ta petite sœur. Ça peut paraître évident mais on ne peut pas faire de QoS en entrée, seulement en sortie. Si le facteur bourre ta boîte aux lettres avec des colis, des recommandés et des lettres, tu ne peux rien y faire (à part lui lâcher ton doberman au cul chaque fois qu'il se pointe). Par contre, tu peux très bien déterminer quel type de courrier tu envoies et de quelle manière. C'est donc un peu le principe de base : réserver de la bande passante dédiée à certaines applications, réserver de la bande passante garantie à d'autres, plafonner l'utilisation de certaines applis, donner la priorité à des flux plutôt qu'à d'autres en fonction de leur importance ou de leur fonctionnement. # Tonton hylobates, c'est quoi une classe de service ? Au fin fond d'IPv4/IPv6, il existe un champs qui porte le doux nom de ToS/Traffic Class et qui permet de faire de classifier simplement le traffic. Les 6 premiers bits de ce champs permettent donc de définir des classes de service de la plus prioritaire à la moins prioritaire (c'est ce qu'on appelle le DSCP). Les 2 bits restants sont inutilisés pour le moment (mais on trouve des notations sur 8 bits aussi). Si tu sens venir le truc merdique, tu as tout-à-fait raison : en fait les normes correspondantes à ce codage ont été conçues pour être rétro-compatible avec les précédentes méthodes de qualité de service. D'où un gros bordel au décodage… Mais pas de panique, avec un tableau de correspondance tout con, on s'en sort à merveille ! Voici donc toutes les classes DiffServ :
Binaire | Classe | DSCP (6bits) dec - hex | DiffServ (8bits) dec - hex |
000000 | BE | 0 - 0x00 | 0 - 0x00 |
001010 | AF11 | 10 - 0x0a | 40 - 0x28 |
001100 | AF12 | 12 - 0x0c | 48 - 0x30 |
001110 | AF13 | 14 - 0x0e | 56 - 0x38 |
010010 | AF21 | 18 - 0x12 | 72 - 0x48 |
010100 | AF22 | 20 - 0x14 | 80 - 0x50 |
010110 | AF23 | 22 - 0x16 | 88 - 0x58 |
011010 | AF31 | 26 - 0x1a | 104 - 0x68 |
011100 | AF32 | 28 - 0x1c | 112 - 0x70 |
011110 | AF33 | 30 - 0x1e | 120 - 0x78 |
100010 | AF41 | 34 - 0x22 | 136 - 0x88 |
100100 | AF42 | 36 - 0x24 | 144 - 0x90 |
100110 | AF43 | 38 - 0x26 | 152 - 0x98 |
101110 | EF | 46 - 0x2e | 184 - 0xb8 |