informatique:cisco:qos
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatique:cisco:qos [2009/04/17 18:32] – pteu | informatique:cisco:qos [2013/10/14 20:44] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 3: | Line 3: | ||
======QoS====== | ======QoS====== | ||
- | La **QoS** (Quality Of Service) a pour but d' | + | La **QoS** (Quality Of Service) a pour but d' |
+ | ====Leaky bucket VS token bucket==== | ||
+ | |||
+ | * **leaky bucket**, algorithme du seau troué : il s'agit d'un seau percé. les flux (burst) arrrivent dans le seau qui les écoule à la vitesse du CIR (=du trou). La capacité de burst Bc (= le tampon) est la taille du seau. Le trafic qui dépasse (Be, exceed brust) est la plus part du temps droppé. | ||
+ | |||
+ | * **token bucket**, algorithme du seau à jeton : le seau à jeton démarre plein ; un jeton c'est un crédit de trafic, chaque paquet transmis consomme des jetons ; les jetons se régénèrent au rythme du CIR normalement. Quand il n'y a plus de jetons dans le seau, le trafic est " | ||
+ | Cet algorithme conserve les bursts (à la différence du lissage du shaping) mais permet d' | ||
=====Modèles de QOS===== | =====Modèles de QOS===== | ||
- | * **Best effort** c'est le comportement par défaut d'un routeur sur lequel est basé Internet ; il ne fournit pas de QoS | + | * **Best effort** c'est le comportement par défaut d'un routeur, sur lequel est basé Internet ; il ne fournit pas de QoS |
* pas de garantie de service | * pas de garantie de service | ||
* pas de différenciation de service | * pas de différenciation de service | ||
- | * **IntServ** Integrated Services (RFC 1633) : permet de fournir de la QoS par réservation de ressource (~réservation de circuit / pour faire du CAC Call Admission Control) ; garantit l' | + | * **IntServ** Integrated Services (RFC 1633) : permet de fournir de la QoS par réservation de ressource (~réservation de circuit / pour faire du **CAC** (Call Admission Control)) ; garantit l' |
* basé sur RSVP/CAC pour réserver les ressources | * basé sur RSVP/CAC pour réserver les ressources | ||
* débit garanti | * débit garanti | ||
* problème de scalabilité (//ne passe pas l' | * problème de scalabilité (//ne passe pas l' | ||
- | |||
* **DiffServ** Differenciated Services (RFC 2474 et 2475) : Utilisation de classes de services (typiquement le champ TOS/DSCP du paquet IP) qui sont reconnues par les routeurs du réseau ; c'est un traitement routeur par routeur sans pré-signalisation que l'on nomme **PHB** (Per Hop Behaviour) | * **DiffServ** Differenciated Services (RFC 2474 et 2475) : Utilisation de classes de services (typiquement le champ TOS/DSCP du paquet IP) qui sont reconnues par les routeurs du réseau ; c'est un traitement routeur par routeur sans pré-signalisation que l'on nomme **PHB** (Per Hop Behaviour) | ||
* pas de garantie absolue de service | * pas de garantie absolue de service | ||
Line 24: | Line 29: | ||
* Legacy QoS CLI : peu pratique, configuration interface par interface | * Legacy QoS CLI : peu pratique, configuration interface par interface | ||
- | * **MQC** Modular QoS CLI : configuration modulaire, personnalisable (utilise des // | + | * **MQC** |
- | * Cisco AutoQoS : simple à mettre en place car il s'agit d'un modèle pré-conçu pour la VoIP. Il utilise : | + | * Cisco AutoQoS : simple à mettre en place, il exite 2 variantes : VoIP et Enterprise (cf plus bas). L' |
- | * NBAR, CEF et champ DSCP pour la classification | + | * NBAR, CEF et le champ DSCP pour la classification |
* LLQ et WRR | * LLQ et WRR | ||
* shaping, FRTS | * shaping, FRTS | ||
- | * compression d' | + | * la compression d' |
- | * fragmentation | + | * la fragmentation |
- | Pour le mettre en place il faut activer le cef et préciser la bandwidth de l' | + | |
* Cisco SDM QoS Wizard : assistant graphique (via HTTP) de configuration de la QoS | * Cisco SDM QoS Wizard : assistant graphique (via HTTP) de configuration de la QoS | ||
Line 37: | Line 41: | ||
=====Les différents délais d' | =====Les différents délais d' | ||
- | * **processing delay** : temps de traitement d'un paquet par le routeur, à partir du moment ou il est reçu sur l' | + | * **processing delay** : temps de traitement d'un paquet par le routeur, à partir du moment ou il est reçu sur l' |
- | * **end-to-end delay** : temps que met un paquet de bout en bout (de l' | + | |
* **queuing delay** : temps passé par un paquet dans la file d' | * **queuing delay** : temps passé par un paquet dans la file d' | ||
- | * **serialisation delay** : temps pour émettre un paquet sur le lien ; cela dépend de la bande passante de celui-ci | + | * **serialisation delay** : temps mis par le routeur |
- | * **propagation delay** : temps mis par un paquet pour traverser un lien ; cela dépend | + | * **propagation delay** : temps mis par un paquet pour traverser un lien ; cela dépend |
- | * **transmission delay** pour moi c'est le même que le temps de sérialisation (à vérifier) | + | * **transmission delay** |
+ | * **end-to-end delay** : temps que met un paquet de bout en bout (du début de la sérialisation de la machine émettrice à la fin de la réception du paquet chez le récepteur) | ||
Line 74: | Line 78: | ||
* application (ports tcp et udp) | * application (ports tcp et udp) | ||
- | Le marquage peut se faire à différentes couches OSI, dans différents | + | Le marquage peut se faire à différentes couches OSI, dans différents |
* champ COS (3 bits) en Ethernet (802.1q/p ou ISL) | * champ COS (3 bits) en Ethernet (802.1q/p ou ISL) | ||
* champ EXP de l' | * champ EXP de l' | ||
Line 81: | Line 85: | ||
* bit DE (Discard Eligible) en Frame Relay | * bit DE (Discard Eligible) en Frame Relay | ||
- | L'**IP precedence** est l' | + | L'**IP precedence** est l' |
- | **EF** PHB : Expedited Forwarding = low-delay service (VoIP) | + | * **EF** PHB : Expedited Forwarding = low-delay service (VoIP) |
- | **AF** PHB : Assured Forwarding = guaranted bandwidth service | + | |
- | **default PHB** : on fait du best-effort | + | |
===Le champ TOS ou DSCP=== | ===Le champ TOS ou DSCP=== | ||
C'est un champ de 8 bits codées ainsi : | C'est un champ de 8 bits codées ainsi : | ||
- | * Les bits 1 et 0 sont //réservés pour un usage futur// donc on ne les fait pas apparaitre. C'est ce qui explique pourquoi on note toujours la valeur du champ TOS sur 6 bits. | + | * Les bits 1 et 0 sont "réservés pour un usage futur" |
* Le bit n°2 est toujours à 0 | * Le bit n°2 est toujours à 0 | ||
Line 99: | Line 103: | ||
|1|1|1| | |1|1|1| | ||
|1|1|0| | |1|1|0| | ||
- | |1|0|1|EF | | + | |1|0|1|ef | |
- | |1|0|0|AF 4 | | + | |1|0|0|af 4 | |
- | |0|1|1|AF 3 | | + | |0|1|1|af 3 | |
- | |0|1|0|AF 2 | | + | |0|1|0|af 2 | |
- | |0|0|1|AF 1 | | + | |0|0|1|af 1 | |
|0|0|0|default PHB | | |0|0|0|default PHB | | ||
- | * Les bits de 4 à 3 définissent le pourcentage de chance de drop par classe (si on utilise AF ; car en EF les 2 bits valent " | + | * Les bits de 4 à 3 définissent le pourcentage de chance de drop par classe (si on utilise AF, car en EF on ne drop pas (logique !), les 2 bits valent " |
Une exception existe pour la valeur "001 000" qui code le trafic **scavenger** (less-than-best-effort, | Une exception existe pour la valeur "001 000" qui code le trafic **scavenger** (less-than-best-effort, | ||
- | Exemple : Si le champ TOS vaut 100010 | + | Exemple : Si le champ TOS vaut 100010, le paquet correspond à de l'af41 (on découpe ainsi : 100-01-0). Ces 6 bits peuvent se lire en décimal : " |
- | Ces 6 bits peuvent se lire en décimal : " | + | |
- | Il existe une notation de classes " | + | Il existe une notation de classes " |
+ | |||
+ | TODO : insérer la table d' | ||
===Mise en place du marquage=== | ===Mise en place du marquage=== | ||
Line 141: | Line 146: | ||
* En utilisant des ACLs on peut affiner le " | * En utilisant des ACLs on peut affiner le " | ||
- | * dans une class-map on peut spécifier plusieurs paramètres " | + | * dans une class-map on peut spécifier plusieurs paramètres " |
==Vérifications== | ==Vérifications== | ||
Line 147: | Line 152: | ||
show class-map | show class-map | ||
show policy-map interface fa0/1 | show policy-map interface fa0/1 | ||
+ | |||
+ | ===QoS pre-classify=== | ||
+ | |||
+ | Dans le cas de VPN, les entêtes IPs sont modifiées donc la classification peut être écrasée. Cisco utilise la fonction **qos pre-clasify** (ou **QoS for VPNs**) pour gérer ce problème. | ||
+ | |||
+ | * Apply the policy to the tunnel interface without '' | ||
+ | * Apply the policy to the physical interface without '' | ||
+ | * Apply the policy to a physical interface and enable '' | ||
+ | |||
+ | Cette fonctionnalité est appelée **QoS for Virtual Private Networks (VPNs)** par Cisco ; certaines versions d'IOS un peu anciennes ne l' | ||
====Mécanismes de queuing==== | ====Mécanismes de queuing==== | ||
Line 152: | Line 167: | ||
Il s'agit du mécanisme d' | Il s'agit du mécanisme d' | ||
- | * **FIFO** First In First Out, mécanisme par défaut, très simple peu consommateur de CPU : " | + | * **FIFO** |
- | * **PQ** Priority Queuing : on vide en priorité | + | * **PQ** |
- | * **RR** Round Robin : méthode de partage équitable entre chaque file (on pioche un paquet dans chaque file à tour de rôle : ABCABCABC...) | + | * **RR** |
- | * **WRR** Weighted RR : associe des priorités par file au RR = permet de donner plus de priorité à une file | + | * **WRR** |
- | * **CQ** Custom Queuing c'est l' | + | * **CQ** |
* **WFQ** (Weighted Fair-Queuing) : priorisation automatique, | * **WFQ** (Weighted Fair-Queuing) : priorisation automatique, | ||
- | * **CBWFQ** (Class-Based WFQ) : c'est du WFQ personnalisable | + | * **CBWFQ** (Class-Based WFQ) : c' |
- | * **LLQ** (Low Latency Queuing) = du CBWFQ avec une file spéciale (prioritaire) pour limiter la latence (PQ) ; pour la voix par exemple. Cela définit une file qui est vidée en priorité avant toutes les autres. (= CBWFQ + CQ + PQ) | + | * **LLQ** (Low Latency Queuing) = du CBWFQ avec une file spéciale (prioritaire) pour limiter la latence (PQ), pour la voix par exemple. Cela définit une file qui est vidée en priorité avant toutes les autres. (= CBWFQ + PQ) |
- | Les mécanismes de gestion de file d' | + | Les mécanismes de gestion de file d' |
show controller se0/1/0 | i tx_limited | show controller se0/1/0 | i tx_limited | ||
Line 169: | Line 184: | ||
tx-ring-limit < | tx-ring-limit < | ||
- | Cependant il faut prendre garde car une mauvaise configuration de ce dernier peut annuler toute la politique de QoS (s'il est trop important ou pas assez). | + | Cependant il faut faire attention |
===Mise en place du WFQ=== | ===Mise en place du WFQ=== | ||
* classification : en fonction de certains champs de l' | * classification : en fonction de certains champs de l' | ||
- | * drop policy : CDT (Congestive Discard Threshold) (nb de messages permis dans la queue) ; HQO (limite le nombre max de paquets dans toutes les files d'une interface) | + | * drop policy : **CDT** (Congestive Discard Threshold) (nb de messages permis dans la queue) ; **HQO** (limite le nombre max de paquets dans toutes les files d'une interface) |
* scheduling | * scheduling | ||
+ | * c'est la méthode de queuing par défaut chez Cisco pour les interfaces série et les liaisons E1 et inférieures (< 2048 Kbps) | ||
- | Le WFQ priorise les flux qui ont un petit **finish time** càd les paquets qui mettent le moins de temps à être émis sur le lien. Cela prend en compte la taille du paquet (+ vite émis qu'un gros) ainsi que le remplissage de sa file (on privilégie les files les moins remplie | + | Le WFQ priorise les flux qui ont un petit **finish time** càd les paquets qui mettent le moins de temps à être émis sur le lien. Cela prend en compte la taille du paquet (+ vite émis qu'un gros) ainsi que le remplissage de sa file (on privilégie les files les moins remplies |
- | La mise en place est très simple mais n'est possible que sur une interface de moins de 2 Mbps. | + | La mise en place est très simple mais n'est possible que sur une interface de moins de 2 Mbps (à valider). |
fair-queue [CDT [conversation dynamic-queues [conversation reservable-queues]]] | fair-queue [CDT [conversation dynamic-queues [conversation reservable-queues]]] | ||
Line 192: | Line 208: | ||
===Mise en place de LLQ=== | ===Mise en place de LLQ=== | ||
- | On travaille sur des paquets déjà taggués et on leur applique une politique de gestion de file d' | + | On travaille sur des paquets déjà taggués |
Les classes reconnues sont définies dans des class-map : | Les classes reconnues sont définies dans des class-map : | ||
Line 209: | Line 225: | ||
On définit l' | On définit l' | ||
- | * la **file prioritaire** (~VoIP, propre au LLQ, introduit par la commande '' | + | * la **file prioritaire** (~VoIP, propre au LLQ, introduit par la commande '' |
- | * les files af31, af21, af11 et cs1 auront respectivement 40, 20, 13 et 2 % de la bande passante __restante__ (remaining) du lien minimum | + | * les files af31, af21, af11 et cs1 auront respectivement 40, 20, 13 et 2 % de la bande passante __restante__ (remaining) du lien **minimum** |
* le reste (class-default) aura 25% du reste de la bande passante. 2 paramètres sont également présents : l' | * le reste (class-default) aura 25% du reste de la bande passante. 2 paramètres sont également présents : l' | ||
+ | |||
+ | Chez Cisco, par défaut, on ne peut pas dépasser 75% de réservation pour toutes les files, les 25% restant étant gardé pour le routage, les entêtes de niveau 2, etc... | ||
L' | L' | ||
Line 231: | Line 249: | ||
bandwidth remaining percent 25 | bandwidth remaining percent 25 | ||
- | On applique (en __output__) sur une interface, par exemple la se0/1/0 (toute la QoS précédemment configurée est basée sur le paramètre bandwidth 384 (384 Kbps) de l' | + | On applique (en output) sur une interface, par exemple la se0/1/0 (toute la QoS précédemment configurée est basée sur le paramètre bandwidth 384 (384 Kbps) de l' |
interface Serial0/1/0 | interface Serial0/1/0 | ||
Line 259: | Line 277: | ||
* **RED** Random Early Detection : en fonction du remplissage du buffer, on défini un %age de drop | * **RED** Random Early Detection : en fonction du remplissage du buffer, on défini un %age de drop | ||
* **WRED** Weighted RED = une file RED par type de paquet, avec des seuils différents | * **WRED** Weighted RED = une file RED par type de paquet, avec des seuils différents | ||
+ | |||
+ | 3 types de " | ||
Pour mettre en place du (CB)(W)RED sur un type de classe, il faut passer la commande '' | Pour mettre en place du (CB)(W)RED sur un type de classe, il faut passer la commande '' | ||
Line 270: | Line 290: | ||
====Shaping/ | ====Shaping/ | ||
- | //Objectif = réguler le trafic// | + | ou // |
+ | |||
+ | Policing VS Shaping | ||
+ | {{http:// | ||
+ | |||
+ | ===Lexique=== | ||
+ | >GTS : Generic Traffic Shaping | ||
+ | >CIR Commited Information Rate = mean rate, ou débit souscrit | ||
+ | >CAR Committed Access Rate | ||
+ | >Bc conform burst | ||
+ | >Be excess burst | ||
+ | >pir Peak Information Rate | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | >Cisco recommends the following values for the normal and extended burst parameters: | ||
+ | >normal burst = configured rate * (1 byte)/(8 bits) * 1.5 seconds | ||
+ | > | ||
===shaping=== | ===shaping=== | ||
- | Le shaping c'est du lissage de trafic = étalement des bursts qui dépassent le CIR en remplissant un tampon (peu conseillé pour les liaisons rapides). Ce tampon se vide lorsque la liaison est libre. | + | Le **shaping** c'est du lissage de trafic = étalement des bursts qui dépassent le **CIR** (Commited Information Rate, c' |
+ | |||
+ | {{http:// | ||
* bufferisation jusqu' | * bufferisation jusqu' | ||
- | * réduit les réémissions TCP en évitant le drop systématique de l'EIR (traffic exceeded) | + | * réduit les réémissions TCP en évitant le drop systématique de l'**EIR** (Excess Information Rate = le trafic excédant le CIR) |
- | * applicable uniquement sur une interface " | + | * applicable uniquement sur une interface " |
- | * pas de marking | + | * pas de marking |
+ | |||
+ | ==Mise en place== | ||
+ | Il existe 2 manières de mettre en place du shaping : | ||
+ | |||
+ | * directement sur une interface | ||
+ | |||
+ | S' | ||
+ | < | ||
+ | int xxx | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ou en utilisant une ACL pour sélectionner le trafic sur lequel s' | ||
+ | < | ||
+ | int xxx | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * ou passer par une class-map (sélection du trafic concerné) et une policy-map (définition de l' | ||
+ | |||
+ | < | ||
+ | class-map match-all toto_class-map | ||
+ | | ||
+ | match any | ||
+ | ! | ||
+ | policy-map toto_policy-map | ||
+ | class toto_class-map | ||
+ | ! envoyer Bc par intervalle | ||
+ | shape average CIR Bc Be | ||
+ | ! envoyer Bc+Be par intervalle | ||
+ | shape peak CIR Bc Be | ||
+ | ! | ||
+ | int xxx | ||
+ | | ||
+ | </ | ||
===policing=== | ===policing=== | ||
- | Écrêtement | + | Le **policing** est l' |
* on peut définir différentes actions (drop, mark + transmit) | * on peut définir différentes actions (drop, mark + transmit) | ||
+ | * s' | ||
+ | |||
+ | Le policing utilise le concept du **token bucket** (seau à jetons) = les jetons se régénèrent à la vitesse du CIR = Bc / Tc | ||
+ | |||
+ | ===Liens=== | ||
- | Le shaping s' | + | * [[http:// |
+ | * [[http:// | ||
- | Notions de token bucket = les jetons se régénèrent à la vitesse du CIR = Bc / Tc | ||
====Link efficiency==== | ====Link efficiency==== | ||
Line 298: | Line 379: | ||
compression header ip rtp | compression header ip rtp | ||
- | * **compression de payload** (négocié par ppp = il faut l' | + | * **compression de payload** (négocié par ppp = il faut l' |
int se0/1/0 | int se0/1/0 | ||
Line 326: | Line 407: | ||
no shut | no shut | ||
+ | Le but pour que cela soit efficace est d' | ||
- | =====Mise en place de l' | + | Ces mécanismes sont consommateurs |
- | Il existe 2 type d' | + | ====VAD==== |
- | AutoQos enterprise : | + | La **VAD** (Voice Activity Detection) est un système de détection de blancs dans une conversation en VoIP. Cela permet de ne pas transmettre ces données inutiles, et donc de sauvegarder de la bande passante sur le réseau. Il permet de sauver 35% de la bande passante en moyenne (atteint pour un lien qui transmet 24 appels), mais cela dépend du fond sonore, du type d' |
- | - mettre | + | |
+ | =====Mise en place du control-plane===== | ||
+ | |||
+ | Le **CoPP** ou **Control Plane Policing** est un mécanisme censé protéger un routeur des attaques de type DoS en définissant des règles de priorité en cas de forte charge. Il protège le **control plane** (flux faisant fonctionner le réseau, comme les protocoles de routage OSPF ou BGP) et le **management plane** (flux d' | ||
+ | |||
+ | L' | ||
+ | |||
+ | access-list 110 deny tcp 192.168.0.0 0.0.0.255 any eq telnet | ||
+ | access-list 110 deny tcp any eq telnet 192.168.0.0 0.0.0.255 | ||
+ | access-list 110 permit any any | ||
+ | |||
+ | class-map match-all telnet-class | ||
+ | | ||
+ | |||
+ | policy-map control-plane-in | ||
+ | class telnet-class | ||
+ | drop | ||
+ | |||
+ | control-plane | ||
+ | | ||
+ | |||
+ | |||
+ | =====Cisco AutoQoS===== | ||
+ | |||
+ | Il existe 2 types d' | ||
+ | |||
+ | L' | ||
+ | |||
+ | ====Prérequis==== | ||
+ | |||
+ | * CEF doit être activé sur cette interface | ||
+ | * aucune service-policy ne doit être configurée sur l' | ||
+ | * bien préciser le paramètre bandwidth sur l' | ||
+ | |||
+ | ====Limitations==== | ||
+ | |||
+ | * dans un réseau FR, l' | ||
+ | * si un DLCI est déjà configuré sur une sous-interface | ||
+ | * si une class-map est assignée au DLCI | ||
+ | |||
+ | ====Mise en place de l' | ||
+ | |||
+ | * activer | ||
auto discovery qos | auto discovery qos | ||
- | | + | |
auto qos | auto qos | ||
- | Vérifs | + | Vérifications |
show auto qos [interface se0/1/0] | show auto qos [interface se0/1/0] | ||
show auto discovery qos [interface se0/1/0] | show auto discovery qos [interface se0/1/0] | ||
Line 347: | Line 472: | ||
show mls qos interface se0/1/0 | show mls qos interface se0/1/0 | ||
show mls qos maps | show mls qos maps | ||
- | |||
- | |||
- | =====Protocoles de signalisation===== | ||
- | |||
- | * H.323 | ||
- | * **RSVP** (Ressource Reservation Protocol) : protocole (IP proto=46) pour réserver les ressources d'un flux RTP (modèle IntServ) ; il utilise tcp-udp/ | ||
- | * SCCP | ||
- | * MGCP | ||
- | * SIP | ||
informatique/cisco/qos.1239993127.txt.gz · Last modified: 2013/10/14 20:52 (external edit)