Accueil / Notes techniques / Épuisement des ressources ACL

Ressources ACL épuisées : les coûts cachés de gt, statistics et UDF

Une ACL qui semble modeste sur le papier peut quand même épuiser les ressources TCAM d'un slot — non pas parce qu'il y a trop de règles, mais parce qu'une poignée d'entre elles sont discrètement coûteuses. Voici comment lire display acl resource avant de deviner, et les trois habitudes de configuration qui l'épuisent le plus vite.

Par Yuwen Zhang (Atlas), fondateur d'AtlasCommTech — 13 ans de déploiements de réseaux opérateurs et d'entreprise · Mis à jour en juillet 2026

Pourquoi « ce n'est que quelques règles » ne tient pas la route

Les ressources ACL basées sur le TCAM ne sont pas allouées à raison d'une par règle — certains types de règles coûtent bien plus que d'autres, et certaines fonctionnalités puisent dans le même pool sans jamais mentionner ACL dans leur nom.

Les fonctionnalités ACL et QoS d'un commutateur partagent un pool fixe de ressources matérielles de correspondance par slot — généralement affiché sous forme d'entrées VACL, IACL, EACL, Meter, Counter et UDF dans display acl resource. La plupart des règles coûtent une entrée chacune, ce qui explique pourquoi une ACL de 20 règles semble généralement proportionnée aux ressources qu'elle consomme. Le problème commence lorsqu'une habitude de configuration multiplie ce coût par règle, ou lorsqu'une fonctionnalité loin de l'arborescence de commandes ACL puise discrètement dans le même pool UDF.

Le résultat, lorsque le pool est épuisé, ressemble rarement à un message d'erreur pointant vers la cause réelle. Cela ressemble à une fonctionnalité correctement configurée qui ne fonctionne tout simplement pas — une affectation VLAN qui ne prend jamais effet, une politique de trafic qui s'applique sur le premier port et échoue silencieusement sur tous les ports suivants, ou une ligne de log sur les ressources UDF qui semble n'avoir aucun rapport avec le changement que vous venez d'effectuer.

Trois consommateurs, un pool partagé

Aucun de ces trois ne se manifeste comme un problème de nombre de règles ACL avant que vous ne sachiez déjà où chercher.

Chaque branche ci-dessous produit un symptôme différent, mais toutes trois puisent dans le même pool de ressources fini par slot — c'est pourquoi display acl resource doit être la première commande, pas la dernière.

ACL / TCAM Resource Exhausted 1 · gt / lt Keywords 2 · statistic enable 3 · UDF Consumers Each gt/lt rule costs ~15hardware entries, not 1a 4-rule ACL can burn ~400 units Breaks cross-port sharingon the same sloteach port pays a full private copy 7 documented consumersshare one UDF poolover-VPLS, BFD, SVF/WLAN, custom ACL SYMPTOM: traffic-policy applyfails, "insufficient rule resources" SYMPTOM: works on port 1,fails from port 2 onward SYMPTOM: log shows"insufficient UDF resource" display acl resource [ slot slot-id ] -- read Used / Free / Total first All three draw from the same finite VACL / IACL / EACL / UDF pool per slot -- one feature's greed is another feature's apply failure.

Les légendes du schéma restent en anglais pour la clarté technique.

Le pool lui-même ne fait pas la différence entre une règle qui a légitimement besoin des ressources qu'elle utilise et une qui dépense 15 fois ce que son auteur attendait — display acl resource se contente de signaler Used, Free et Total. Lire les trois branches ci-dessus vous indique à quel type de consommateur vous avez réellement affaire.

Analyser display acl resource avant tout le reste

Quatre vérifications, dans l'ordre qui permet réellement de trouver lequel des trois consommateurs est responsable.

Étape 1 — Confirmer que le pool est le problème

  1. Exécutez display acl resource [ slot slot-id ] et comparez Used à Total pour VACL, IACL, EACL, Meter, Counter et Ingress UDF — une catégorie proche de Total est celle à traquer, pas nécessairement celle liée à la fonctionnalité que vous venez de configurer.
  2. Vérifiez l'historique des alarmes et des logs de l'appareil pour SRVSERCONFIGFAILED ou un texte d'échec similaire lié aux ressources — cela apparaît souvent bien avant que quiconque ne remarque que la fonctionnalité elle-même ne fonctionne pas.
  3. Si la fonctionnalité affectée est appliquée par interface — une politique de trafic, une affectation VLAN basée sur le sous-réseau — vérifiez si elle fonctionne sur certaines interfaces et pas sur d'autres. L'épuisement des ressources échoue généralement au point où le pool s'assèche, pas uniformément sur toutes les interfaces.
<HUAWEI> display acl resource slot 1
Slot 1
GigabitEthernet1/0/0 to GigabitEthernet1/0/23
                Used   Free   Total
--------------------------------------------
VACL Slice        1      3       4
VACL             12   1012    1024
IACL Slice       11      1      12
Sec ACL         284    228     512
Ingress UDF       7      1       8
--------------------------------------------
// Sec ACL and Ingress UDF are both close to Total on this slot -- the ones to chase

Nov xx 2024 xx:xx:xx FutureMatrix SCMTRAP/3/SRVSERCONFIGFAILED:OID 1.3.6.1.4.1.56813.5.25.334.2.1.3
The service configurations on the device failed because of no enough resources or hash conflict, please
undo it. (Service ID=9, Service Description="IP subnet-based VLAN assignment", Service Fail
Description="Enable IP subnet-based VLAN assignment on GigabitEthernet0/0/48")

Étape 2 — Vérifier les règles avec mot-clé gt / lt

  1. Exécutez display acl acl-number sur l'ACL concernée et recherchez les mots-clés gt, lt ou range dans les règles basées sur les ports ou similaires.
  2. Chaque règle contenant le mot-clé gt occupe environ 15 entrées de ressources matérielles au lieu d'une seule — une poignée de ces règles peut représenter l'essentiel de l'empreinte matérielle réelle d'une ACL, même si le nombre de règles semble modeste.
  3. Lorsque la même correspondance peut être exprimée par une valeur fixe ou une courte liste explicite plutôt que par une comparaison supérieur-à, réécrire la règle de cette façon récupère la majeure partie des ressources que la version gt consommait.
Advanced ACL 3333, 4 rules
Acl's step is 5
rule 5 permit udp destination-port gt sunrpc
rule 10 permit udp destination-port gt 1111
rule 15 permit udp destination-port lt 1111
rule 20 permit udp destination-port range 1111 2222
// two gt rules here accounted for the bulk of ~400 consumed resource entries

[HUAWEI] display traffic-policy applied-record test
*interface Vlanif335
 traffic-policy test inbound
  slot 0 : fail
// Failed to add the rule due to insufficient rule resources in policy test
// classifier test behavior PERMIT acl 3999, rule 120

Étape 3 — Vérifier si statistic enable casse le partage des ressources

  1. Exécutez display traffic-policy applied-record pour la politique concernée et voyez si elle s'applique avec succès sur le premier port d'un slot mais échoue sur les ports suivants — ce schéma est la signature d'un partage de ressources cassé, pas d'une ACL trop volumineuse.
  2. Vérifiez si le comportement de flux inclut statistic enable, car, ou une autre action connue pour désactiver le partage de ressources entre ports sur le slot. Normalement, une politique appliquée à plusieurs ports du même slot partage une seule copie de ses ressources ; ces actions forcent plutôt une copie séparée par port.
  3. Supprimer statistic enable (ou déplacer le besoin de statistiques vers une politique séparée et partageable) restaure le partage et libère le même multiple du pool qu'il consommait.
<Switch2>display traffic-policy applied-record
*interface XGigabitEthernet2/0/8
 traffic-policy Test inbound
  slot 2 : success
*interface XGigabitEthernet2/0/9
 traffic-policy Test inbound
  slot 2 : fail
// Failed to add the rule due to insufficient rule resources in policy Test
// classifier Test-permit behavior Test-permit acl 3001, rule 1762 on interface
// XGigabitEthernet2/0/9 of slot 2

[Switch2]display acl resource
Slot 2
                Used   Free   Total
--------------------------------------------
IACL Slice        8      2      10
IACL Unallocated 512
IACL Allocated  1536
// only 512 unallocated + ~130 recoverable = 642 entries free -- not enough for a
// second port at ~894 entries each, because statistic enable stopped this policy
// from sharing one copy across every port on the slot

Étape 4 — Vérifier les sept consommateurs UDF

  1. Recherchez insufficient UDF resource dans le log, puis vérifiez sur l'appareil l'un des sept consommateurs UDF documentés : igmp-snooping over-vpls enable, dhcp snooping over-vpls enable, bfd for pw enable, bfd for vsi-pw enable, statistic enable en vue d'interface Tunnel, rôles SVF ou WLAN (display as all, display ap all), et toute ACL définie par l'utilisateur (display traffic-applied brief).
  2. Aucun de ces éléments ne ressemble à une configuration ACL à première vue, ce qui explique exactement pourquoi l'épuisement UDF est le plus difficile des trois à retracer jusqu'à sa cause réelle — vérifiez la liste directement plutôt que de chercher par élimination.
// Documented UDF resource consumers -- check for all seven before assuming
// the exhaustion is ACL-related:
igmp-snooping over-vpls enable
dhcp snooping over-vpls enable
bfd for pw enable
bfd for vsi-pw enable
statistic enable                 // Tunnel interface view
SVF / WLAN roles                 // display as all, display ap all
user-defined ACL rules           // display traffic-applied brief

5 pièges qui épuisent le même pool de ressources

Une fois que display acl resource vous a indiqué que le pool est réellement serré, ces cinq éléments expliquent l'essentiel de ce qui le consomme réellement.

1. Les règles avec mot-clé gt (et lt) coûtent environ 15 entrées chacune

SYMPTÔMEUne politique de trafic ou une fonctionnalité basée sur ACL échoue à s'appliquer avec un log signalant insufficient rule resources, même si display acl ressemble à un jeu de règles court et anodin.

CAUSEDans un cas de terrain, une ACL avec seulement quatre règles — deux utilisant le mot-clé gt pour une correspondance basée sur les ports — a consommé environ 400 entrées de ressources matérielles une fois appliquée. Chaque règle contenant gt occupe environ 15 entrées au lieu de la seule qu'utiliserait une simple règle permit/deny, de sorte qu'une poignée d'entre elles peut dominer le coût matériel réel d'une ACL alors que son nombre de règles reste trompeusement modeste.

SOLUTIONLorsque la même correspondance peut être écrite comme une valeur explicite, une courte liste, ou une plage plutôt qu'une comparaison supérieur-à, faites-le à la place — et traitez toute ACL mélangeant gt avec d'autres opérateurs comme une ACL à vérifier avec display acl resource avant de l'ajouter à d'autres ports.

2. statistic enable casse silencieusement le partage de ressources entre ports

SYMPTÔMELa même politique de trafic s'applique proprement sur le premier port d'un slot, puis échoue sur chaque port suivant, avec un log citant insufficient rule resources pour un numéro de règle spécifique.

CAUSEUne politique de trafic appliquée à plusieurs ports du même slot partage normalement une seule copie de son empreinte de ressources entre eux tous. Configurer statistic enable dans le comportement de flux désactive ce partage pour cette politique — chaque port auquel elle est appliquée consomme désormais sa propre copie complète. Dans un cas de terrain, une politique coûtant 894 entrées de ressources par port a épuisé un slot ne disposant que de 642 entrées libres dès le tout premier port supplémentaire.

SOLUTIONRetirez statistic enable du comportement de flux si les compteurs de trafic ne sont pas réellement nécessaires, ou déplacez le besoin de statistiques vers une politique séparée limitée aux interfaces qui en ont besoin — car et certains modes de table étendue spécifiques à la carte désactivent le même partage et méritent d'être vérifiés pour la même raison.

3. Les ressources UDF ont sept consommateurs qui n'ont rien à voir avec les ACL

SYMPTÔMEL'appareil enregistre insufficient UDF resource, et la fonctionnalité qui échoue réellement à s'appliquer n'a absolument aucun rapport avec une quelconque ACL personnalisée dont quelqu'un se souvienne avoir configurée.

CAUSELes ressources UDF (User-Defined Field) sont partagées par une liste spécifique et documentée de fonctionnalités, pas seulement les règles ACL personnalisées : igmp-snooping over-vpls enable, dhcp snooping over-vpls enable, bfd for pw enable, bfd for vsi-pw enable, statistic enable sur une interface Tunnel, rôles SVF ou WLAN sur l'appareil, et toute règle ACL personnalisée. Un appareil exécutant plusieurs d'entre elles pour des raisons sans rapport peut épuiser le pool sans qu'aucune ACL personnalisée ne soit impliquée.

SOLUTIONVérifiez les sept consommateurs avec les commandes qui révèlent chacun d'eux — display as all et display ap all pour les rôles SVF/WLAN, display traffic-applied brief pour les ACL personnalisées — avant de supposer que l'épuisement est lié aux ACL, et retirez celui d'entre eux qui n'est pas réellement nécessaire.

4. L'affectation VLAN basée sur le sous-réseau échoue silencieusement derrière une alarme qu'il faut aller chercher

SYMPTÔMECertaines interfaces d'un commutateur apprennent les adresses MAC des clients dans le mauvais VLAN malgré une configuration identique sur toutes — mêmes commandes, mêmes définitions de sous-réseau, résultat différent d'un port à l'autre.

CAUSEDans un cas de terrain, l'affectation VLAN basée sur le sous-réseau était configurée à l'identique sur chaque port d'accès, mais les ressources VLAN-ACL se sont épuisées en cours d'application sur toutes les interfaces. L'appareil a levé une alarme SRVSERCONFIGFAILED identifiant l'interface et la fonctionnalité exactes ayant échoué à s'appliquer — mais le symptôme sur le câble ressemblait à une simple erreur de configuration VLAN, et l'alarme est facile à manquer si personne ne la surveille.

SOLUTIONLorsque plusieurs interfaces partagent une configuration censée être identique et que seules certaines se comportent correctement, vérifiez l'historique des alarmes pour SRVSERCONFIGFAILED avant de revérifier la configuration elle-même, puis confirmez avec display acl resource — la solution consiste généralement à fusionner les définitions sous-réseau-VLAN qui se chevauchent plutôt que d'en ajouter.

5. Les règles ACL correspondent au premier coup, pas au meilleur — ce qui peut masquer les symptômes d'épuisement

SYMPTÔMEUne règle ACL nouvellement ajoutée, plus spécifique, semble n'avoir absolument aucun effet, même si display acl resource montre que la règle a été acceptée et que les ressources n'étaient pas le problème cette fois.

CAUSELes règles ACL programmées matériellement sur un port donné correspondent selon un principe de premier coup, à usage unique — si une règle antérieure (numéro de séquence inférieur, ou appliquée dans une politique antérieure sur la même interface) correspond déjà au trafic, le paquet n'atteint jamais la règle plus récente et plus spécifique, quelle que soit la marge de ressources disponible.

SOLUTIONAvant de supposer un problème de ressources, vérifiez l'ordre des règles avec display acl et confirmez qu'aucune règle plus large, plus tôt dans la séquence, ne revendique déjà le même trafic — l'épuisement des ressources et les conflits d'ordre de règles produisent un symptôme similaire de « ma règle ne semble rien faire » mais nécessitent des corrections complètement différentes.

Conceptions de solutions associées

Six questions qui reviennent sans cesse

Tirées directement du terrain — celles pour lesquelles il vaut la peine d'avoir une réponse prête.

Quel est le moyen le plus rapide de vérifier la marge ACL/TCAM avant d'ajouter une nouvelle politique ?

Exécutez display acl resource [ slot slot-id ] et lisez Used par rapport à Total pour chaque catégorie — VACL, IACL, EACL, Meter, Counter et Ingress UDF sont suivis séparément, et une nouvelle politique peut échouer même si d'autres catégories affichent encore une marge confortable.

Chaque règle ACL coûte-t-elle la même entrée de ressource unique ?

Non — une règle permit/deny simple coûte généralement une entrée, mais les règles utilisant le mot-clé gt coûtent environ 15 entrées chacune dans le cas de terrain documenté, et des fonctionnalités comme statistic enable modifient combien de copies des ressources d'une politique sont consommées sur plusieurs ports. Le nombre de règles seul n'est pas une estimation fiable du coût matériel réel.

J'ai supprimé statistic enable et les ports en échec ont commencé à fonctionner — cette correction a-t-elle un inconvénient ?

Le principal compromis est la perte des compteurs de trafic par règle que fournissait statistic enable ; si ces compteurs sont réellement nécessaires, les limiter à une politique séparée, appliquée de manière restreinte, plutôt qu'à la politique partagée entre ports, conserve la comptabilisation sans payer partout la pénalité de partage.

Que signifient réellement les catégories VACL, IACL et EACL dans display acl resource ?

IACL et EACL sont respectivement les ressources de traitement en amont (entrant) et en aval (sortant), chacune divisée en une allocation de Slice plus l'allocation réelle des règles par type — classes ACL IPv4, IPv6, sécurité et autres. VACL est la ressource consommée avant le pipeline de transfert principal de couche 2 côté entrant. Une politique peut manquer de marge dans l'une de ces catégories indépendamment des autres.

L'épuisement des ressources ACL/TCAM est-il une limite pour tout l'appareil ou par slot ?

Sur les commutateurs modulaires, c'est suivi par slot — display acl resource slot slot-id affiche le pool pour cette carte spécifique. Une configuration gourmande en ressources sur un slot n'affecte pas nécessairement la marge sur un autre, ce qui explique aussi pourquoi la même politique peut réussir sur une carte et échouer sur une autre avec un nombre de ports ou un matériel différent.

Quel est le premier texte de log ou d'alarme à rechercher lorsqu'une fonctionnalité nouvellement configurée « apparaît dans la config mais ne fonctionne pas » ?

insufficient rule resources dans le log d'application de la politique de trafic, insufficient UDF resource spécifiquement pour l'épuisement UDF, et SRVSERCONFIGFAILED comme alarme générale d'échec de service liée aux ressources ou à un conflit de hachage — les trois pointent directement vers le pool de ressources partagé plutôt que vers une erreur logique dans la configuration propre de la fonctionnalité.

Limites honnêtes de cette note

Limites honnêtes de cette note

Cette note s'articule autour du modèle de ressources ACL/QoS basé sur le TCAM des commutateurs Huawei série S et des commandes display acl resource / display traffic-policy applied-record, ainsi que des cas de terrain sous-jacents. Les coûts exacts en ressources par type de règle, et la liste des fonctionnalités partageant le pool UDF, varient selon la carte et la version logicielle — considérez les chiffres de 15 entrées par règle gt et de 894 entrées par port ici comme des illustrations du mécanisme, pas des constantes universelles, et confirmez les chiffres réels sur votre propre matériel avec display acl resource.

Une fonctionnalité configurée mais qui ne fonctionne pas réellement ?

Envoyez-nous la sortie de display acl resource pour le slot concerné, plus tout texte de log ou d'alarme que vous voyez, et nous vous aiderons à trouver lequel des trois consommateurs est responsable.

Contacter un ingénieur sur WhatsApp →

Lectures associées

Nous n'utilisons des cookies que pour des statistiques anonymes — pas de publicité, pas de suivi intersites.Politique de confidentialité