Classifier le trafic, c'est lui attribuer une identité QoS qui persistera à travers le réseau. Marquer, c'est inscrire cette identité dans les bits de l'en-tête IP ou Ethernet pour que chaque équipement sur le chemin puisse prendre des décisions cohérentes.
| Champ | Bits | Valeurs possibles | Portée | Persistance |
|---|---|---|---|---|
| DSCP | 6 bits (IP ToS) | 0–63 (64 valeurs) | L3 — tout le chemin IP | Persist jusqu'à réécriture |
| CoS (PCP 802.1p) | 3 bits (trame Ethernet) | 0–7 (8 valeurs) | L2 — un seul segment | Perdu au routage L3 |
| IP Precedence | 3 bits (IP ToS, héritage) | 0–7 (8 valeurs) | L3 — tout le chemin IP | Persist (sous-ensemble DSCP) |
| MPLS EXP (TC) | 3 bits (label MPLS) | 0–7 (8 valeurs) | L2.5 — réseau MPLS | Perdu hors MPLS |
| QoS Group | Interne IOS | 0–99 | Local au routeur uniquement | Jamais transmis |
| Méthode | Niveau | Précision | Coût CPU |
|---|---|---|---|
| match dscp / match cos | L3/L2 | Dépend de la politique de marquage amont | Très faible |
| match access-group (ACL) | L3–L4 | IP source/dest, port TCP/UDP | Moyen |
| match protocol (NBAR) | L4–L7 | Application (HTTP, RTP, Skype…) | Élevé |
| match input-interface | L2 | Interface d'entrée (VLAN, port) | Très faible |
| Nom DSCP | Valeur déc. | Binaire | PHB | Usage typique | CoS par défaut |
|---|---|---|---|---|---|
| EF | 46 | 101110 | Expedited Forwarding | Voix G.711/G.729, latence <150ms | 5 |
| CS6 | 48 | 110000 | Class Selector 6 | Protocoles routage (OSPF, BGP, EIGRP) | 6 |
| CS5 | 40 | 101000 | Class Selector 5 | Vidéo broadcast | 5 |
| AF41 | 34 | 100010 | Assured Forwarding 4-1 | Vidéo interactive (visioconf) — drop faible | 4 |
| AF42 | 36 | 100100 | Assured Forwarding 4-2 | Vidéo interactive — drop moyen | 4 |
| AF43 | 38 | 100110 | Assured Forwarding 4-3 | Vidéo interactive — drop élevé | 4 |
| CS4 | 32 | 100000 | Class Selector 4 | Vidéo conférence signalisation | 4 |
| AF31 | 26 | 011010 | Assured Forwarding 3-1 | Applications critiques — drop faible | 3 |
| AF32 | 28 | 011100 | Assured Forwarding 3-2 | Applications critiques — drop moyen | 3 |
| AF33 | 30 | 011110 | Assured Forwarding 3-3 | Applications critiques — drop élevé | 3 |
| CS3 | 24 | 011000 | Class Selector 3 | Signalisation voix (SIP, H.323) | 3 |
| AF21 | 18 | 010010 | Assured Forwarding 2-1 | Transactions business — drop faible | 2 |
| AF22 | 20 | 010100 | Assured Forwarding 2-2 | Transactions business — drop moyen | 2 |
| AF23 | 22 | 010110 | Assured Forwarding 2-3 | Transactions business — drop élevé | 2 |
| AF11 | 10 | 001010 | Assured Forwarding 1-1 | Données élastiques — drop faible | 1 |
| AF12 | 12 | 001100 | Assured Forwarding 1-2 | Données élastiques — drop moyen | 1 |
| AF13 | 14 | 001110 | Assured Forwarding 1-3 | Données élastiques — drop élevé | 1 |
| CS2 | 16 | 010000 | Class Selector 2 | OAM (gestion réseau) | 2 |
| CS1 | 8 | 001000 | Class Selector 1 | Scavenger (P2P, vidéo non-critique) | 1 |
| DF / BE / CS0 | 0 | 000000 | Default / Best Effort | Trafic non marqué — tout le reste | 0 |
mls qos trust dscp + mapping).
| Valeur | Nom | Usage historique | DSCP équivalent |
|---|---|---|---|
| 7 | Network Control | Routage réseau (réservé) | CS7 (56) |
| 6 | Internetwork Control | Protocoles routage (OSPF, BGP) | CS6 (48) |
| 5 | CRITIC/ECP | Voix | CS5 (40) — ≈ EF (46) |
| 4 | Flash Override | Vidéo | CS4 (32) |
| 3 | Flash | Call Signaling | CS3 (24) |
| 2 | Immediate | Applications critiques | CS2 (16) |
| 1 | Priority | Données prioritaires | CS1 (8) |
| 0 | Routine | Best Effort (défaut) | CS0 / BE (0) |
match precedence 5 va matcher tous les paquets dont
les 3 bits de poids fort du DSCP valent 101 — ce qui inclut DSCP 40 (CS5), 41, 42, 43, 44, 45 et 46 (EF).
match dscp ef (précis) à match precedence 5
(trop large — capture tout ce qui a le MSB = 101).
! IP Precedence — encore utilisé dans certains environnements legacy class-map match-all CM-PRECEDENCE5 match precedence 5 ! Matche DSCP 40-47 (trop large !) class-map match-all CM-VOIX-PRECIS match dscp ef ! Préférer cette syntaxe — précis (DSCP 46 uniquement) ! Marquer en IP Precedence (legacy) set precedence 5 ! Marquer en DSCP (recommandé) set dscp ef
! 1. Activer NBAR sur l'interface (obligatoire) interface GigabitEthernet0/1 ip nbar protocol-discovery ! 2. Utiliser dans une class-map class-map match-any CM-VIDEO-STREAM match protocol youtube match protocol netflix match protocol rtsp class-map match-any CM-VOIP match protocol rtp audio ! RTP avec payload audio uniquement match protocol sip ! Signalisation SIP class-map match-any CM-SCAVENGER match protocol bittorrent match protocol kazaa2 match protocol gnutella ! 3. Vérifier ce que NBAR détecte show ip nbar protocol-discovery interface GigabitEthernet0/1 show ip nbar protocol-discovery top-n 10 show ip nbar port-map ! Voir le mapping port → protocole ! 4. Protocole custom (PDLM ou PDL) ip nbar custom MON-APP transport tcp port 8080
| Protocole NBAR | Application détectée | Méthode détection |
|---|---|---|
| rtp audio | Voix VoIP (G.711, G.729) | Payload RTP + ports UDP dynamiques |
| rtp video | Vidéo temps réel | Payload RTP vidéo |
| sip | Signalisation SIP (5060/5061) | Inspection applicative |
| http | Web HTTP port 80 | Port + signature |
| secure-http | HTTPS port 443 | Port + TLS signature |
| youtube | YouTube streaming | DPI — deep packet inspection |
| netflix | Netflix streaming | DPI |
| bittorrent | P2P BitTorrent | Signature protocole |
| dns | DNS (UDP 53) | Port + format |
| ssh | SSH (TCP 22) | Port + handshake |
| snmp | SNMP (UDP 161/162) | Port |
| Équipement | Trust ? | Commande switch | Raison |
|---|---|---|---|
| IP Phone Cisco | Trust CoS | mls qos trust cos | Le phone marque correctement CoS 5 (voix) et CoS 3 (signalisation) |
| PC derrière IP Phone | Untrust — remark à 0 | mls qos cos 0 | L'utilisateur pourrait se marquer EF lui-même |
| Switch distribution Cisco | Trust DSCP | mls qos trust dscp | Le réseau interne est de confiance |
| Serveur | Cas par cas | Policy d'ingress + remark | Marquer selon l'application (voix serveur → EF, web → AF21) |
| Lien WAN / Internet | Jamais | Re-marquer en entrée | DSCP peut avoir été altéré par le FAI |
! Switch Cisco Catalyst — trust boundary avec IP Phone interface FastEthernet0/1 mls qos trust cos ! Faire confiance au CoS du phone mls qos cos 0 ! Remarquer le PC derrière à CoS 0 spanning-tree portfast ! Uplink vers routeur : trust DSCP interface GigabitEthernet0/1 mls qos trust dscp
set.
On peut marquer en ingress (à l'entrée) pour établir la politique QoS dès le bord,
ou en egress pour adapter le marquage avant transmission.
Le cas le plus courant : ingress policy qui classifie et marque le trafic entrant
selon la source (VLAN, port, protocole NBAR).
! Scénario : interface LAN — marquer le trafic avant qu'il entre dans le réseau ! Class-maps de classification class-map match-any CM-VOIP match protocol rtp audio ! NBAR détecte RTP voix class-map match-any CM-SIGNALISATION match protocol sip class-map match-any CM-CRITIQUE match protocol ssh match access-group name ACL-ERP ! Applications métier via ACL class-map match-any CM-SCAVENGER match protocol bittorrent match protocol kazaa2 ! Policy-map de marquage policy-map PM-INGRESS-MARK class CM-VOIP set dscp ef ! Voix → EF (46) class CM-SIGNALISATION set dscp cs3 ! Signalisation → CS3 (24) class CM-CRITIQUE set dscp af31 ! Apps critiques → AF31 (26) class CM-SCAVENGER set dscp cs1 ! P2P → Scavenger CS1 (8) class class-default set dscp default ! Reste → Best Effort (0) interface GigabitEthernet0/0 ! Interface LAN ip nbar protocol-discovery service-policy input PM-INGRESS-MARK
! SLA client : 10 Mbps garanti, surplus remarqué AF13 (droppé en priorité par WRED) policy-map PM-SLA-CLIENT class CM-TRAFIC-CLIENT police rate 10000000 bps burst 125000 byte conform-action set-dscp-transmit af11 ! Dans contrat → AF11 exceed-action set-dscp-transmit af13 ! Hors contrat → AF13 (drop élevé) violate-action drop ! Très hors contrat → drop
! À la sortie vers Internet : l'ISP ne respecte pas DSCP ! On peut forcer le marquage ou re-marquer pour son propre usage policy-map PM-WAN-EGRESS-REMARK class CM-VOIX set dscp ef ! S'assurer que EF est bien là avant envoi class class-default set dscp default ! Tout le reste à 0 — l'ISP ignorera de toute façon
La majorité des FAI et des équipements Internet remettent le DSCP à 0 (ou le réécrivent) sur les trafics traversant leur réseau. La QoS interne DiffServ n'a donc aucune garantie end-to-end sur Internet. La solution : des accords SLA avec l'opérateur (MPLS QoS) ou des tunnels DSCP-aware (GRE qui copie le DSCP interne dans l'en-tête externe).
Le CoS (PCP 802.1p) est dans l'en-tête Ethernet 802.1q — il est détruit quand le routeur décapsule la trame pour router le paquet IP. Pour que le CoS soit re-propagé, le routeur doit le re-dériver du DSCP sur l'interface de sortie. Sur les switchs Cisco : mls qos map dscp-cos configure ce mapping.
match precedence 5 matche tous les paquets dont les 3 bits MSB du DSCP valent 101, soit DSCP 40, 41, 42, 43, 44, 45 et 46 (EF). Un paquet DSCP 40 (CS5, vidéo broadcast) serait traité comme de la voix. Toujours utiliser match dscp ef pour classifier précisément la voix.
match protocol http dans une class-map est accepté sans erreur mais ne classifie rien si ip nbar protocol-discovery n'est pas activé sur l'interface. Le trafic HTTP tombe dans class-default. À toujours vérifier avec show ip nbar protocol-discovery interface.
Si on fait confiance (trust dscp) sur les ports d'accès des PC, n'importe quel utilisateur peut configurer son OS pour marquer son trafic DSCP EF et obtenir la priorité voix pour son trafic. La trust boundary doit être sur le premier équipement géré du réseau — typiquement le switch d'accès, avec untrust sur les ports PC.
Marquer le trafic voix EF ne garantit rien si aucune policy-map n'est configurée pour prioriser EF. Le DSCP est un label — sans policy LLQ (priority) sur les liens, il n'a aucun effet sur la latence ou le jitter. Le marquage + la policy doivent aller ensemble.
Dans la même classe AF (ex: AF1x), AF13 est droppé avant AF12, qui est droppé avant AF11. C'est la logique WRED. Un trafic marqué AF13 (hors contrat, après police remark) sera sacrifié en premier lors de congestion — c'est volontaire. Ne pas marquer du trafic critique en AF13 par erreur.
Clique sur une carte pour révéler la réponse.
match precedence 5 et match dscp ef ?match protocol http ?ip nbar protocol-discovery sur l'interface. Sans cette commande, NBAR n'inspecte pas le trafic et la class-map ne matche rien.!================================================ ! CLASSIFICATION — class-map !================================================ class-map match-all CM-NOM match dscp ef cs6 af41 ! DSCP (nommé ou décimal 0-63) match ip dscp 46 ! IPv4 uniquement match cos 5 ! CoS 802.1p (0-7) match precedence 5 ! IP Precedence (0-7) — legacy match protocol rtp audio ! NBAR L7 match access-group 101 ! ACL (L3/L4) match access-group name ACL-NOM match not dscp default ! Inversion !================================================ ! MARQUAGE — set dans policy-map !================================================ policy-map PM-MARK class CM-NOM set dscp ef ! Marquer DSCP (L3 — persistant) set dscp 46 ! Équivalent décimal set cos 5 ! Marquer CoS (L2 — trame 802.1q) set precedence 5 ! Marquer IP Precedence (legacy) set qos-group 1 ! Groupe interne (local au routeur) set mpls experimental imposition 5 ! MPLS EXP ! Police + Remark (marquage hors contrat) police rate 10000000 bps conform-action set-dscp-transmit af11 exceed-action set-dscp-transmit af13 violate-action drop !================================================ ! NBAR !================================================ interface GigabitEthernet0/1 ip nbar protocol-discovery ! Obligatoire pour match protocol show ip nbar protocol-discovery interface Gi0/1 show ip nbar protocol-discovery top-n 10 show ip nbar port-map show ip nbar pdlm ! PDLMs chargés !================================================ ! TRUST BOUNDARY (switch Catalyst) !================================================ interface FastEthernet0/1 mls qos trust cos ! Faire confiance au CoS mls qos trust dscp ! Faire confiance au DSCP mls qos cos 0 ! Forcer CoS = 0 (untrust) mls qos map cos-dscp 0 8 16 24 32 46 48 56 ! Mapping CoS→DSCP mls qos map dscp-cos 46 5 ! DSCP 46 → CoS 5 !================================================ ! VÉRIFICATION !================================================ show class-map show policy-map interface Gi0/1 show mls qos interface Gi0/1 show mls qos maps