La qualité de service permet de prioriser certains flux de données vis à vis d’autres afin de garantir son acheminement à son point de destination. Le meilleur exemple à mon sens est d’imaginer un stade plein à craquer de supporters où il n’y a qu’une seul seule sortie et où nous devons nous assurer que les VIP puissent sortir avant les autres en bon état.
Ci-dessous la représentation d’une priorisation de flux :
Intéressons-nous dès à présent aux configurations à pousser sur vos équipements, les abaques présentées ci-dessous ont été testées sur les releases 12.X et 15.X IOS et IOS-XE. Elles présentent un traitement des flux dans le sens entrant.
Dans un soucis de simplicité afin que cet article soit accessible au plus grand nombre de personne, ce post présentera une configuration généraliste de base, pouvant répondre à un besoin de priorisation simple.
A – Identification du flux
Afin de pouvoir identifier le trafic à prioriser l’utilisation ACL est nécessaire, vous pouvez identifier un flux de plusieurs façon, nous allons voir dans ce tutoriel une identification par IP et par ports
1) Identification par IP
1 |
XX-XX(config)# ip access-list extended Nom_ACL |
1 |
XX-XX(config-ext-nacl)# permit ip any X.X.X.X WILDCARD |
1 2 |
(Création de l'ACL étendue "Visio) ip access-list extended Visio |
1 2 |
(Match sur les paquets ayant comme destination le réseau 13.13.1.0/24) permit ip any 10.13.1.0 0.0.0.255 |
1 2 |
(Match sur les paquets ayant comme destination le réseau 192.168.28.0/24) permit ip any 192.168.28.0 0.0.0.255 |
2) Identification par ports
1 |
XX-XX(config)# ip access-list extended Nom_ACL |
1 |
XX-XX(config-ext-nacl)# permit tcp/udp any any eq PORT |
💡 Notez que vous pouvez indiquer le nom du protocole à la place du port comme indiqué ci-dessous
1 |
XX-XX(config-ext-naclv)# permit udp any any eq PROTO |
1 2 |
(Création de l'ACL étendue "Bureautique) ip access-list extended Bureautique |
1 2 |
(Match sur les paquets TCP ayant comme source et/ou destination le port 465) permit tcp any any eq 465 |
1 2 |
(Match sur les paquets TCP ayant comme source et/ou destination le port 993) permit tcp any any eq 993 |
1 2 3 |
(Match sur les paquets UDP ayant comme source et/ou destination le port 53. Pour l'IOS le port 53 correspondant à la variable "domain") permit udp any any eq domain |
B- Classification des flux
Une fois l’identification des flux réalisées il faut pouvoir les classer dans des conteneurs afin de pouvoir les différencier et les traiter, nous allons utiliser le concept de class-map afin de réaliser cette opération.
Il existe deux types de class-map :
- class-map match-all : Il est nécessaire de valider toutes les conditions de la class-map pour l’appliquer
- class-map match-any : Il est nécessaire de valider au minimum une condition pour l’appliquer
1 |
XX-XX(config)# class-map match-all/any CMAP |
1 |
XX-XX(config-cmap)#match ? |
1 2 3 4 5 6 |
access-group Access group any Any packets [...] destination-address Destination address [...] source-address Source address vlan VLANs to match DSCP The DSCP value used to identified a DSCP value |
1) Match DSCP
Vous pouvez soit utiliser la valeur DSCP directe ou son expression préformatée (ef, af11,cs1,default,…)
1 |
XX-XX(config-cmap)# match dscp ef |
1 |
XX-XX(config-cmap)# match dscp 46 |
2) Match par ACL
1 |
XX-XX(config-cmap)# match access-groupe name NOM_ACL |
Voici un exemple qui se base sur l’utilisation d’ACL, c’est la façon la plus simple de maîtriser un traffic
1 2 |
(Création de la class-map "DEFAULT" en match-all) class-map match-all DEFAULT |
1 2 |
(Match sur l'ACL "DEFAULT") match access-group name DEFAULT |
1 2 |
(Création de la class-map "VLAN-VOICE" en match-any) class-map match-any VLAN-VOICE |
1 2 |
(Match sur l'ACL "VLAN-VOICE") match access-group name VLAN-VOICE |
1 2 |
(Création de la class-map "VLAN-ADMIN" en match-all) class-map match-all VLAN-ADMIN |
1 2 |
(Match sur l'ACL "VLAN-ADMIN") match access-group name VLAN-ADMIN |
C- Ordonnancement des flux
Afin d’appliquer une priorité aux paquets nous allons utiliser des policy-map, imaginez un videur d’une boite de nuit qui régule les entrées et vous aurez saisi le principe de fonctionnement. Les policy-map prennent en entrée le nom de la class-map à utiliser pour identifier le paquet et appliquent en sortie une priorisation et/ou un marquage des flux.
1 |
XX-XX(config)# policy-map NOM_Policy_MAP |
1) Marquage des paquets
Les policy-map permettent de marquer un paquet avec une priorisation particulière, prenons l’exemple d’un périphérique qui ne supporte pas le marquage des paquets. Lorsque le flux va arriver sur un routeur qui gère la QOS ce dernier va le classer dans sa catégorie la plus basse, les flux de plus haute importance passerons avant. Afin de pouvoir augmenter la priorité de ces paquets, la commande set permet de remodeler le champs de priorité, vous pouvez utiliser divers attributs tel que les champs cos (Qos L2) ou dscp (Qos L3)
1 |
XX-XX(config-pmap)# class NOM_CLASS_MAP |
Vous pouvez soit utiliser la valeur DSCP directe ou son expression préformatée (ef, af11,cs1,default,…)
1 |
XX-XX(config-pmap-c)# set dscp ef |
1 |
XX-XX(config-pmap-c)# set dscp 46 |
2) Priorisation des paquets
Les policy-map permettent aussi de réserver une certaine quantité de bande passante à un flux spécifique, cela permet en cas de saturation de supprimer des paquets considérés comme non importants afin de faire passer ceux qui le sont.
L’option police permet de fixer une limite de débit et de ne pas la dépasser en supprimant les paquets supplémentaires:
1 |
XX-XX(config-pmap-c)# police nombre_bits_par_milli_secondes taille_du_burst_en_nombre_bits_milli_secondes exceed-action drop |
D- Exemple de configuration
Ci-dessous un exemple de configuration:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class-map match-all DEFAULT match access-group name DEFAULT class-map match-all VLAN-VOICE match access-group name VLAN-VOICE class-map match-all VLAN-ADMIN match access-group name VLAN-ADMIN ! policy-map PM_Interco class VLAN-ADMIN set dscp cs6 police 2940500 8000 exceed-action drop class VLAN-VOICE set dscp ef police 6868500 8000 exceed-action drop class DEFAULT police 21532500 8000 exceed-action drop set dscp default ! ip access-list extended DEFAULT remark EXPLICIT CLASS-DEFAULT permit ip any any ip access-list extended VLAN-ADMIN remark FLUX_ADMIN permit ip 10.11.0.0 0.0.3.255 any permit ip any 10.11.0.0 0.0.3.255 ip access-list extended VLAN-VOICE permit udp any any eq 5028 permit udp any any eq 3500 permit tcp any any eq 50000 |
Ce tutoriel ne présente qu’une très faible portion des possibilités offertes par l’IOS, n’hésitez donc pas à poser des questions dans les commentaires afin de trouver la configuration qui s’adaptera la mieux à vos besoins.
Sam