Mécanismes QoS dans les routeurs Objectifs QoS Hypothèse : plusieurs flux en compétition dans un switch/routeur même interface de sortie Quelques objectifs possibles : obtenir des garanties pour un flux ex : délai < 100 ms indépendamment autres flux protéger (isoler) un flux des autres répartir les ressources de façon contrôlée équité, priorité, Entrée 1 Sortie 1 Entrée n Sortie n 1
Chaîne de traitement d un paquet Ordonnancement plusieurs paquets en attente même sortie buffers choisir lequel envoyer ( = ordre) si sortie libre éventuellement lequel supprimer si buffers plein FIFO + drop tail Solution simple : une seule file FIFO si la file est pleine, rejeter paquet suivant drop tail Couramment utilisée pas de protection ni de priorités équité très approximative favorise les flux gourmands => congestion 2
Priority Queuing Plusieurs files FIFO : F 1, F 2, de priorités décroissantes A chaque instant si sortie libre prendre file non vide de priorité maximale lui appliquer discipline FIFO Priorités strictes une file n est servie que si les files plus prioritaires sont vides risque de famine si (débit files F 1,, F j ) débit lien file F j+1 jamais servie Priority Queuing (suite) Facile à implémenter Nécessite un classifieur (classifier) champ ToS (Type of service) entête IPv4 3 bits de précédence (0-5 user 6-7 réseau) - 0-000 - Routine (données ordinaires) - 1-001 - Prioritaire - 2-010 - Immédiat - 3-011 - Urgent - 4-100 - Très urgent - 5-101 - Critique - 6-110 - Supervision interconnexion (ex PIM, VRRP, IGMP, OSPF) - 7-111 - Supervision réseau - Ou champ DSCP, 3
Ex : ré-ordonnancement des paquets Equité Assurer équité/protection entre flux ou classes de flux éventuellement avec des poids différents Qu est-ce qu être équitable? équité max-min (max-min fair share) ex : en terme de débit on suppose que demandes > disponible Equité (suite) Equité Max-Min n flux (ou classes) capacité totale C demandes d 1 < d 2 < < d n d i > C si tous les d i C/n => allouer d i à chacun sinon allouer min(d 1,, C/n) au premier partager récursivement C - d 1 aux n-1 autres flux 4
Exemple 4 demandes (flux) 1, 11, 17,19 (total 48) capacité 40 Allocation : 1, 11, 14, 14 Remarque : allocation proportionnelle de 40/48 de la demande favoriserait les demandes importantes Ordonnancement Round Robin Round Robin = Tour de rôle Idée : une FIFO par classe servir un paquet par FIFO à tour de rôle simple poids différents des différentes classes? adapter équité max-min» multiplier une source par son poids p» pendant un tour servir cette FIFO p fois» => Weighted Round Robin (Tour de rôle pondéré) pas équitable :» paquets de taille différente? Weighted Fair Queuing (WFQ) Equité en présence de poids différents de paquets de taille différente idée du Fair Queuing simuler le cas où paquets divisés en parties très petites par exemple par bits on envoie un bit de chaque file active à chaque tour ( = envoi en parallèle) 5
Solution théorique En pratique : calculer finish time temps où un paquet aurait été envoyé avec «méthode théorique» par bit envoyer dans l ordre des finish time pendant un «tour» on envoie un bit par file non vide ( = active) durée réelle d un tour = nombre de files actives Algorithme WFQ Variable NT = numéro de tour, initialement 0 Temps (initialement 0) 1 unité = envoi 1 bit, initial. 0 chaque paquet a un Numéro de Fin NF le Numéro de Fin d une file est celui du dernier paquet de la file Paquet arrive dans file vide =>NF(paquet) := NT + taille(paquet) Paquet arrive dans file active => NF(paquet) := NF(File) + taille paquet Paquets servis dans l ordre de leurs NF ex æquo => arbitraire 6
Exemple WFQ 3 files A, B et C Hyp : temps 0, paquets P1, P2, P3 de tailles 2, 6, 6 dans A,B,C au temps 7, paquets P4, P5 de tailles 2 dans files A et B NF(P1) =2, NF(P2) = NF(P3) = 6 temps 0, NT=0 : envoyer P1 temps 2, NT = 2/3 : envoyer P2, A devient inactive temps 6, NT = 2/3 + 2 (4 bits 2 files) temps 7, NT vaut 2/3 + 2 + 1/2 (1 bit 2 files) = 3,16 => NF(P4) = 3,16+ 2 = 5,16 (vide) NF(P5) = 8 (non vide) temps 8, NT = 3+1/6 + 1/3 = 3,5, P2 est fini envoyer P4 temps 10 NT = 3,5 + 2/3, P4 fini, envoyer P3 (A vide) temps 16 NT = 3,5 + 2/3 + 3 P3 fini, envoyer P5 (C vide) temps 18, NT = 6,5 + 2/3 + 2, P5 fini Combien y a-t-il de flux? Exemple d une trace de 15 minutes connexion Osiris-Renater (interface giga) débit moyen environ 200-300 Mb/s au total environ 480 000 flux TCP, 76 M paquets, 60 Go graphe suivant : flux découpé en microflux si silence d une seconde 7
Ordonnancement Un bon ordonnancement est facile à implémenter et rapide à 10 Gb/s : 100 ns pour décider? proportionnel au nombre de classes/flux? équitable fournit des bornes (garanties) permet un contrôle d admission facile Contrôle d admission Garanties de QoS pour un flux => réseau ne peut accepter toutes demandes Phase initiale de contrôle admission vérification ressources disponibles par rapport demandes flux => en général réservation Peu adapté à un mode sans connexion RSVP (voir architecture intserv) 8
Ordonnancement Agrégation de flux => classes moins de files pas de protection dans une classe? Garanties de QoS avec WFQ Peut-on avoir des garanties sur un flux traversant n ordonnanceurs WFQ par flux? Débit garanti débit sur un lien au moins D/n (sans poids) ou poids(file)*d / poids globalement min des débits sur chaque lien Délai garanti? possible seulement si émetteur limité sinon files d attente même connexion émission contrôlée par un leaky bucket (seau à fuite) débit ρ et de capacité (rafale) σ = ne peut transmettre plus de σ + t ρ bits pendant temps t Garanties WFQ (suite) P = taille plus grand paquet tous flux P idem pour ce flux g(k) = bande passante allouée au flux k ième WFQ g = min g(k) > ρ (sinon saturation) r(k) = débit du k ième lien (donc g(k) < r(k) ) Formule de Gallager Délai max σ/g + P /g(k) + P/r(k) + T prop délai burst émission attente total virtuelle paquet sur file k autre flux 9
Garanties WFQ (suite) Conclusions : Plus on alloue de BP (g) par rapport débit émission (σ), plus délai D est faible surallocation Plus les paquets sont petits plus délai D faible Nécessite shaping en entrée Plus il y a de sauts plus c est difficile et plus la borne est statistiquement surestimée Exemple Route de 20 sauts P = 10Kb P/r(k) = 0,2ms (liens giga) à 200 ms (liens à 1Mb/s) Téléphonie avec P = 128 octets, 64Kb/s réservés P /g(k) = 320 ms (160 ms si 128 Kb/s réservés) Gestion des rejets Paquet arrive dans une file pleine rejeter un paquet (drop) => Queue Management si couche transport adaptative (application élastique) détecte perte retransmet (TCP) adapte débit après un retard (TCP, possible RTP/RTCP) drop sert d indicateur à l émetteur problème si application non adaptative flux temps réel 10
Rejets (2) Drop tail rejet paquet arrivant file pleine très simple, très implémenté mais indication tardive congestion déjà là réaction après un RTT => risque pertes multiples variante : WTD (weighted Tail Drop) à voir sur cisco 3560 seuils de remplissage différents pour n classes RED RED : Random Early Discard paquets rejetés aléatoirement avant file pleine => 1 source ralentit avant congestion statistiquement toutes sources ralentissent Rejet : RED En pratique définir seuil remplissage file S (ex 50%) si file remplie (en moyenne glissante) à X % > S rejeter nouveau paquet avec probabilité proportionnelle à X Donne bons résultats avec TCP petites rafales non pénalisées flux gourmands pénalisés (ou ralentissent : TCP) Variante WRED: Weighted RD (cisco) le seuil est différent par précédence IP 11
Policing et Shaping Indépendamment de la charge limiter le débit à un seuil fixé nécessaire pour les garanties de délai shaping : mise en forme faire attendre les paquets en trop lissage des pics de trafic utilisé en sortie (hôte, réseau, ) seau à jeton débit + taille rafale (= buffer) suppose que l application émettrice peut attendre Policing Contrôle de conformité utilisé en entrée (de domaine avec QoS) vérifier si trafic conforme trafic non conforme jeté ou marqué (ex : diminuer sa priorité) Algorithme : seau à fuite (leaky bucket) débit fuite, taille rafales acceptées Différence policing shaping 12
Classification Permet ensuite appliquer politique marquage, policing, ordonnancement, rejet basée sur interface d entrée champs spécifiques à la QoS ethernet avec tag : champ Cos 3 bits IP : champ ToS 8 bits (3 bits de précédence) ou 8 bits de DSCP (Differentiated Service Code Point) si architecture Diffserv autres champs adresses Mac, ethernet, protocole, port Classification et marquage classification sur entêtes coûteuse => faite à l entrée du domaine QoS peut être marquée champ CoS ou DSCP inspection rapide dans les autres switchs/routeurs Traitement paquet meter Conditionner classifier marker shaper/dropper 13
Traitements (2) Métreur (Meter) mesure conformité (token bucket) Marqueur (Marker) change le label de QoS DSCP Shaper/Dropper met en forme (leaky bucket) ou jette paquets 14