informatique:cisco:qos
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
informatique:cisco:qos [2009/04/18 16:08] – CoPP pteu | informatique:cisco:qos [2010/04/01 13:55] – Lexique shaping/policing pteu | ||
---|---|---|---|
Line 3: | Line 3: | ||
======QoS====== | ======QoS====== | ||
- | La **QoS** (Quality Of Service) a pour but d' | + | La **QoS** (Quality Of Service) a pour but 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 23: | ||
* 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 35: | ||
=====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 72: | ||
* 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 79: | ||
* 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 97: | ||
|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 140: | ||
* 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 149: | Line 148: | ||
===QoS pre-classify=== | ===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. | 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. | ||
Line 160: | Line 160: | ||
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 177: | Line 177: | ||
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) | * 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 201: | Line 201: | ||
===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 218: | Line 218: | ||
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' | ||
Line 242: | Line 242: | ||
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 283: | Line 283: | ||
====Shaping/ | ====Shaping/ | ||
- | ou //trafic conditioner// | + | ou //trafic conditioner// |
+ | |||
+ | 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** (Commited Information Rate, càd le débit souscrit d'une liaison louée) 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' | * réduit les réémissions TCP en évitant le drop systématique de l' | ||
- | * 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 352: | Line 413: | ||
Le CoPP (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// et le // | Le CoPP (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// et le // | ||
- | L' | + | L' |
access-list 110 deny tcp 192.168.0.0 0.0.0.255 any eq telnet | access-list 110 deny tcp 192.168.0.0 0.0.0.255 any eq telnet | ||
Line 369: | Line 430: | ||
- | =====Mise en place de l' | + | =====Cisco AutoQoS===== |
- | Il existe 2 type d'auoQoQ | + | Il existe 2 types d'autoQoS |
- | AutoQos enterprise | + | 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 389: | Line 465: | ||
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.txt · Last modified: 2013/10/14 20:44 by 127.0.0.1