Le gendarme du réseau : décision instantanée, sans buffer. Un paquet arrive,
le bucket a des jetons → CONFORM. Pas assez → EXCEED ou VIOLATE.
Les paquets non conformes sont droppés
ou remarqués — jamais retardés.
Policing ≠ Shaping. Le policing droppe ou remarque les paquets en excès — instantanément,
sans buffer. Le shaping retarde les paquets dans une file d'attente.
Policing = gendarme. Shaping = régulateur de vitesse.
Principe fondamental
Un policer est un token bucket avec une règle : si le paquet ne trouve pas assez de jetons,
il est traité immédiatement selon l'action configurée. Il n'attend pas.
C'est la différence fondamentale avec le shaping qui, lui, maintient un buffer de délai.
Les trois décisions du policer
✅ CONFORM
Le paquet a trouvé suffisamment de jetons dans le bucket. Il est dans le CIR.
action: transmit (défaut)
⚠️ EXCEED
Le paquet dépasse le CIR mais reste dans le PIR (dual bucket uniquement). BC épuisé, BE disponible.
action: drop ou set-dscp-transmit
❌ VIOLATE
Le paquet dépasse tout (single bucket: au-delà du BC ; dual bucket: au-delà du BE).
action: drop (défaut)
Policing vs Shaping — différences clés
Critère
Policing
Shaping
Excès de trafic
Drop ou remark (immédiat)
Buffer → retard
Buffer utilisé
Non
Oui
Délai ajouté
Non
Oui (jitter possible)
Application typique
Ingress (ISP), inter-site
Egress vers WAN
Impact voix
Drops → dégradation
Latence → acceptable si bien config
Débit moyen résultant
≤ CIR (bursts perdus)
= CIR (bursts bufferisés)
Où applique-t-on le policing ?
Placement typique du policer
Ingress (input) — Le plus courant. L'ISP police le trafic entrant depuis le client avant même de le router. Permet de protéger le réseau du fournisseur.
Egress (output) — Moins courant pour le policing (shaping préféré). Utilisé pour limiter le débit vers un lien ou un partenaire spécifique.
Local policy — Policing sur le control plane (CoPP). Protection du CPU du routeur contre les floods.
En pratique : le policing ingress est la norme ISP pour enforcer les SLA.
Le client paie pour 100 Mbps, l'ISP police à 100 Mbps en entrée sur son interface vers le client.
Single Token Bucket = policer 2 couleurs.
Un seul bucket de taille BC. Un seul seuil : CIR.
Résultat : CONFORM (≤ CIR) ou VIOLATE (> CIR).
Pas de zone intermédiaire EXCEED.
Fonctionnement — Single Bucket (2-color)
Paramètres Single Bucket
Paramètre
Signification
Valeur typique
CIR
Committed Information Rate — débit de génération de jetons (bps)
Débit contractuel ISP
BC
Committed Burst Size — taille du bucket (bits). Max burst instantané.
CIR × Tc (Tc ≈ 125 ms–1 s)
Tc
Timing interval = BC / CIR. IOS utilise Tc ≈ 125 ms par défaut.
BC / CIR en secondes
⚠️ Single bucket = 2 couleurs seulement. CONFORM (transmit) ou VIOLATE (drop/remark).
Il n'y a pas de zone EXCEED dans un policer single bucket.
Pour avoir EXCEED, il faut un dual bucket.
Commande IOS — single bucket
! ── Syntaxe 1 : "police cir" ── IOS classique (12.3 et avant)! Paramètres positionnels, pas de mot-clé "rate", pas de "percent"policy-map PM-POLICE-IN class CM-ALLpolice cir 1000000 bc 187500 conform-action transmit exceed-action drop! ── Syntaxe 2 : "police rate" ── IOS 12.4+ / IOS-XE (moderne)! Mot-clé "rate" explicite, supporte "percent", plus lisiblepolicy-map PM-POLICE-IN class CM-ALLpolice rate1000000 bps! ou : police rate 10 percent burst 187500 conform-action transmit exceed-action drop
Résultat identique sur le dataplane — la différence est syntaxique uniquement.
En pratique : utiliser police rate sur tout équipement IOS-XE récent (ISR 4K, ASR, Catalyst).
Réserver police cir si tu travailles sur du vieux IOS 12.3 ou si tu lis une config legacy.
Dual Token Bucket = policer 3 couleurs (RFC 2698)."Le dual bucket (3 couleurs, RFC 2698) a été introduit directement avec la syntaxe police cir/pir sur IOS 12.4+.
Il n'y a donc qu'une seule façon de l'écrire — pas d'équivalent legacy.
Deux buckets : BC (committed) et BE (excess/burst).
Trois décisions : CONFORM, EXCEED, VIOLATE.
Permet un débit de burst jusqu'au PIR avec remark DSCP au lieu de drop immédiat.
Architecture dual bucket
Paramètres Dual Bucket
Paramètre
Signification
Note
CIR
Committed Information Rate — débit de remplissage du bucket BC (bps)
Débit garanti
BC
Committed Burst Size — taille bucket CIR (bits)
Burst court garanti
PIR
Peak Information Rate — débit de remplissage du bucket BE (bps)
PIR > CIR
BE
Excess Burst Size — taille bucket PIR (bits). Zone EXCEED.
Burst au-delà du CIR
✅ Cas d'usage dual bucket : ISP qui veut permettre du burst ponctuel au-delà du CIR
sans couper brutalement. EXCEED → remark CS1 (Scavenger) → réseau transporte si capacité dispo,
droppe en priorité si congestion. VIOLATE → drop immédiat.
Commande IOS — dual bucket
! Dual bucket — 3 couleurs — RFC 2698policy-map PM-DUAL-POLICE class class-defaultpolice cir 1000000! 1 Mbps committed bc 125000! 125 kbits burst BC pir 2000000! 2 Mbps peak (PIR) be 250000! 250 kbits burst BE conform-action transmit exceed-action set-dscp-transmit cs1! Remark + transmet violate-action drop
Scénario 1 — ISP : client avec port 1G mais contrat 100 Mbps
Contexte : Routeur PE de l'ISP. Le client a un port physique 1 Gbps mais n'a payé que
100 Mbps. Sans policing, il peut injecter 1 Gbps dans le réseau ISP et dégrader
les autres clients. L'ingénieur pose un policer en ingress sur l'interface PE
côté client — tout ce qui dépasse 100 Mbps est droppé instantanément.
! PE-ISP — interface vers le client, port physique 1 Gbps! Contrat client : 100 Mbps — on droppe tout ce qui dépasseip access-list extended ACL-CLIENT-TOUT permit ip any anyclass-map match-all CM-CLIENT match access-group name ACL-CLIENT-TOUTpolicy-map PM-POLICE-CLIENT class CM-CLIENT police rate 100000000 bps! CIR = 100 Mbps conform-action transmit! dans les 100 Mbps → forwarded exceed-action drop! au-delà → droppé sans pitiéinterface GigabitEthernet0/1 ! port physique 1G vers le client service-policy input PM-POLICE-CLIENT ! ingress — avant routage
Scénario 2 — Remark au lieu de dropper : burst toléré mais dégradé
Contexte : Même ISP, même client 100 Mbps. Mais cette fois l'ISP veut être moins
brutal — il tolère un burst jusqu'à 200 Mbps (PIR), mais remarque ces paquets
en excès CS1 (Scavenger). Ils transitent si le réseau a de la capacité,
mais seront droppés en priorité par WRED en cas de congestion.
Au-delà de 200 Mbps → drop immédiat.
! Dual bucket — 3 couleurs — CONFORM / EXCEED / VIOLATE! CIR=100Mbps → CONFORM transmit! 100→200Mbps → EXCEED remark CS1 + transmit (best effort si capacité)! >200Mbps → VIOLATE droppolicy-map PM-POLICE-DUAL class CM-CLIENT police cir 100000000! CIR = 100 Mbps (contrat) bc 12500000! BC = 100M × 125ms = 12,5 Mbits pir 200000000! PIR = 200 Mbps (burst toléré) be 25000000! BE = 200M × 125ms = 25 Mbits conform-action transmit! ≤ 100 Mbps → passe normalement exceed-action set-dscp-transmit cs1! 100-200 Mbps → remark + transmit violate-action drop! > 200 Mbps → dropinterface GigabitEthernet0/1 service-policy input PM-POLICE-DUAL
Scénario 3 — Limiter le backup sur un lien inter-DC partagé
Contexte : Lien 1 Gbps entre deux datacenters, partagé par tous les services.
Un job de backup S3 nocturne peut saturer le lien et tuer les réplications de base de données.
L'ingénieur classe le trafic backup (DSCP CS1) et le limite à 30% du lien.
Les 70% restants sont libres pour les applis critiques.
! Lien inter-DC 1 Gbps — limiter le backup à 30% = 300 Mbps maxclass-map match-all CM-BACKUP match dscp cs1 ! trafic marqué Scavenger = backuppolicy-map PM-LIMIT-BACKUP class CM-BACKUP police rate 30 percent! 30% de la bw interface = 300 Mbps conform-action transmit! backup dans les 300 Mbps → passe exceed-action drop! backup > 300 Mbps → droppé class class-default! tout le reste → pas de police, utilise les 70% libresinterface TenGigabitEthernet0/0 ! lien 1 Gbps inter-DC service-policy output PM-LIMIT-BACKUP ! egress — en sortie vers le DC distant
Récap — actions conform / exceed / violate
Décision
Action
Effet
Quand l'utiliser
CONFORM
transmit
Forwarded tel quel
Toujours — trafic dans le CIR
EXCEED
drop
Droppé
ISP strict — zéro tolérance burst
EXCEED
set-dscp-transmit cs1
Remark + transmit
Tolérer le burst, dropper si congestion aval
EXCEED
set-dscp-transmit af11
Remark AF11 + transmit
Déclasser en Low Priority Data
VIOLATE
drop
Droppé
Toujours — au-delà du PIR, plus d'excuse
VIOLATE
set-dscp-transmit cs1
Remark + transmit
Rare — tolérance maximale, réseau absorbe
Formule BC = CIR × Tc — Tc recommandé Cisco : 125 ms à 250 ms.
Si non spécifié, IOS calcule BC automatiquement (CIR / 8 = 125 ms de Tc).
Exemple : CIR = 100 Mbps → BC auto = 100 000 000 / 8 = 12 500 000 bits.
show policy-map interface — output annoté
R1# show policy-map interface GigabitEthernet0/0 input
GigabitEthernet0/0
Service-policy input: PM-POLICE-IN ← policy appliquée en input
Class-map: CM-CRITIQUE (match-all)
2847 packets, 3682430 bytes ← total matchés par cette class
30 second offered rate 450000 bps ← débit actuel en entrée
Match: dscp ef (46)
police:
cir 1000000 bps, bc 125000 byte ← CIR=1Mbps, BC=125kB (=1Mbit×0.125s)
conformed 2815 packets, 3639890 bytes; actions:
transmit ← paquets dans le CIR → forwarded
exceeded 32 packets, 42540 bytes; actions:
drop ← paquets en excès → droppés (single bucket = violate)
Bucket vide au démarrage ? Non — bucket démarre plein. Problème de class-map ou CIR = 0
Vérifier config police
⚠️ 1 — Policing droppe la voix EF
Si vous policez un flux EF (DSCP 46) trop agressivement, vous droppez des paquets voix.
La voix tolère la perte de 1–2% max. Un policer mal dimensionné sur un lien VoIP
provoque une dégradation sonore immédiate. Règle : ne policez jamais EF ou
dimensionnez le CIR avec marge (CIR ≥ 150% du débit voix estimé).
⚠️ 2 — exceed-action vs violate-action
Sur un single bucket, exceed-action et violate-action sont synonymes — IOS les traite pareil.
Sur un dual bucket, ils sont distincts : exceed = BC épuisé mais BE disponible ;
violate = BC et BE épuisés. Ne pas configurer les deux dans le même policer single bucket.
⚠️ 3 — Le bucket démarre PLEIN
Au démarrage d'un policer, le bucket BC est plein (= BC bits disponibles).
Premier paquet après un silence = burst autorisé jusqu'à BC bits.
C'est intentionnel : BC représente le burst autorisé après une période d'inactivité.
Un policer ne commence jamais à 0 token.
⚠️ 4 — police rate percent et bande passante de l'interface
police rate 50 percent se base sur la bande passante configurée
de l'interface (bandwidth), pas sur la bande passante physique.
Sur une interface GE sans bandwidth configuré, le percent se calcule sur 1 Gbps.
Sur une interface avec bandwidth 10000 (10 Mbps), 50% = 5 Mbps — même si le lien physique est 1 Gbps.
⚠️ 5 — ingress vs egress — où policer ?
Le policing ingress (input) est appliqué avant le routage — les paquets droppés
n'utilisent pas de ressources de forwarding. C'est le comportement ISP classique.
Le policing egress (output) est appliqué après décision de routage — les ressources
de lookup sont consommées même pour les paquets qui seront droppés.
Préférez ingress quand possible.
⚠️ 6 — Policing hiérarchique : attention au parent
Dans une policy hiérarchique (parent shape + child police), le police dans la child
ne peut pas dépasser le shape du parent. Si parent shape = 10 Mbps et child police CIR = 20 Mbps,
le policer child est inutile — le parent a déjà limité à 10 Mbps.
Dimensionner child CIR ≤ parent shape.
⚠️ 7 — 1 token = 1 bit sur IOS
Sur IOS/IOS-XE, 1 token = 1 bit (pas 1 octet). BC est exprimé en bits
dans la commande police cir X bc Y (Y en bits).
Un paquet de 1500 octets = 12 000 tokens.
Si BC = 12 000, un seul paquet de 1500 B vide le bucket.
Le show policy-map affiche BC en octets — ne pas confondre avec la config.
⚠️ 8 — set-dscp-transmit ≠ drop
L'action set-dscp-transmit cs1 sur exceed remark le paquet et le transmet.
Il n'est pas droppé. Il sera droppé en priorité si une congestion survient en aval
(WRED avec seuil bas pour CS1).
C'est le pattern "remarquer l'excès plutôt que dropper" — adapté aux données non critiques.
Simulateur Dual Bucket (3 couleurs).
Configurez CIR, BC, PIR et BE. Envoyez des paquets et observez le comportement
CONFORM / EXCEED / VIOLATE en temps réel. Les jetons se régénèrent automatiquement selon le CIR et le PIR.
512 kbps
64 kbits
1024 kbps
128 kbits
Tc (CIR)125.0 ms
Tc (PIR)125.0 ms
BC tokens65536
BE tokens131072
BC Bucket
100%
64k/64k bits
BE Bucket
100%
128k/128k bits
Paquets CONFORM0
Paquets EXCEED0
Paquets VIOLATE0
Total paquets0
Envoyez un paquet →
// Log des événements — envoyez un paquet...
Cliquez sur une carte pour révéler la réponse.
Quelle est la différence fondamentale entre policing et shaping ?
Policing droppe ou remarque les paquets en excès instantanément (pas de buffer). Shaping retarde les paquets dans un buffer pour étaler le débit. Policing = gendarme. Shaping = régulateur.
cliquer
Un policer single bucket a-t-il une action EXCEED ?
Non. Un single bucket est 2 couleurs : CONFORM ou VIOLATE. Pour avoir EXCEED (3 couleurs), il faut un dual bucket avec PIR/BE configurés.
cliquer
À quel niveau le bucket BC est-il à l'activation du policer ?
Le bucket démarre PLEIN (= BC bits disponibles). Le premier paquet bénéficie du burst maximal. Ce n'est pas un piège — c'est le design : BC = burst autorisé après une période d'inactivité.
cliquer
Que fait l'action set-dscp-transmit cs1 sur exceed ?
Elle remark le DSCP du paquet en CS1 (Scavenger) et le transmet. Le paquet n'est PAS droppé. Il sera droppé en priorité si une congestion survient en aval (typiquement via WRED avec seuil bas pour CS1).
cliquer
Sur IOS, combien de bits équivaut 1 token ?
1 token = 1 bit. Un paquet de 1500 octets = 12 000 tokens. Le show policy-map affiche BC en octets mais la commande police cir X bc Y prend Y en bits — ne pas confondre.
cliquer
Pourquoi ne faut-il généralement pas policer le trafic DSCP EF ?
EF = Expedited Forwarding = voix VoIP. La voix tolère 1-2% de perte max. Un policer trop agressif droppe des paquets RTP, provoquant une dégradation sonore immédiate. EF doit être protégé par LLQ, pas limité par policing.
cliquer
Quelle est la formule pour calculer BC recommandé ?
BC = CIR × Tc. Cisco recommande Tc = 125 ms à 250 ms. Exemple : CIR = 1 Mbps, Tc = 125 ms → BC = 1 000 000 × 0,125 = 125 000 bits = 15 625 octets.
cliquer
Dans un policer dual bucket, que se passe-t-il si BC est épuisé mais BE disponible ?
Le paquet est EXCEED (pas VIOLATE). L'action EXCEED s'applique — typiquement set-dscp-transmit cs1 ou drop selon config. Le bucket BE est consommé.
cliquer
Où vaut-il mieux appliquer le policing : ingress ou egress ?
Ingress (input) est préféré : les paquets droppés n'ont pas consommé de ressources de routage/switching. En egress, la décision de routage a déjà été prise — les ressources sont gaspillées pour les paquets qui seront droppés.
cliquer
police rate 50 percent — sur quelle valeur se base le calcul ?
Sur la commande bandwidth configurée sur l'interface, pas sur la bande passante physique. Sans commande bandwidth, IOS utilise la vitesse physique. Attention : un lien GE sans bandwidth explicite → 50% = 500 Mbps.