Dark Mode Light Mode

Cómo Limitar Velocidad por IP en Cisco Usando Policing

Guía paso a paso para limitar velocidad por ip en cisco usando traffic policing Guía paso a paso para limitar velocidad por ip en cisco usando traffic policing
Configuración de traffic policing en un router Cisco para el control de ancho de banda.

Mi objetivo en este artículo es explicarte cómo establecer un límite de velocidad de transferencia de datos basado en clases de tráfico identificadas por direcciones IP de los usuarios utilizando un router Cisco.

Cada class-map agrupa múltiples IP mediante object-group, por lo que el policing se aplica a nivel de clase (agregado) y no de forma independiente por cada dirección IP individual. El escenario parte de un canal de Internet con un ancho de banda de 30 Mb/s que debe segmentarse para asignar distintas capacidades de descarga y subida — 20M, 10M, 5M y 1M — a determinados sectores de la red local.

Para limitar velocidad por IP en cisco de manera efectiva usando policing, mi recomendación es agrupar las direcciones IP en un object-group, emparejarlas mediante una ACL en un class-map, y luego definir la acción de límite de ancho de banda (CIR) en un policy-map. Finalmente, aplica la política en la interfaz correspondiente con service-policy.

He realizado todas las configuraciones sobre un Cisco ISR 4331 con IOS XE 17.18.2 — versión de referencia actual en producción a la fecha de publicación. Los comandos MQC y la sintaxis de object-group son compatibles con versiones anteriores y posteriores de IOS XE sin modificaciones.

A diferencia del traffic shaping — que retarda los paquetes excedentes encolándolos — este escenario utiliza policing, que descarta inmediatamente el tráfico que supera el CIR configurado. Es el enfoque adecuado cuando necesito aplicar límites estrictos por suscriptor sin acumular cola en el router, teniendo claras las diferencias entre policing y shaping en Cisco.

La configuración sigue el flujo MQC estándar: object-group → ACL extendida → class-map → policy-map → service-policy.

Topología de red para limitar velocidad por ip en cisco
Diseño lógico de asignación de velocidad mediante object-groups.

Paso 1 — Creación de los objetos de red: ejemplo de object-group en Cisco para QoS

Creo los object-group para agrupar las direcciones IP o subredes que pertenecen a cada nivel de velocidad. Defino grupos separados para descarga y subida:

object-group network DOWNLOAD_UNLIM
object-group network DOWNLOAD_20M
object-group network DOWNLOAD_10M
object-group network DOWNLOAD_5M
object-group network DOWNLOAD_1M
object-group network UPLOAD_UNLIM
object-group network UPLOAD_20M
object-group network UPLOAD_10M
object-group network UPLOAD_5M
object-group network UPLOAD_1M

Cada object-group es un contenedor al que se agregan posteriormente las direcciones IP individuales o subredes de los usuarios que pertenecen a ese nivel. Esta es la ventaja del object-group frente a las ACL tradicionales: agregar o mover un usuario de un nivel a otro solo requiere modificar el grupo, sin tocar las ACL ni las policy-map.

Paso 2 — Configuración de las ACL extendidas

Configuro las ACL extendidas y las vinculo con los object-group definidos en el paso anterior. Las ACL de descarga permiten tráfico desde cualquier origen hacia las IPs del grupo correspondiente. Las ACL de subida invierten la dirección:

ip access-list extended DOWNLOAD_UNLIM
 permit ip any object-group DOWNLOAD_UNLIM
ip access-list extended DOWNLOAD_20M
 permit ip any object-group DOWNLOAD_20M
ip access-list extended DOWNLOAD_10M
 permit ip any object-group DOWNLOAD_10M
ip access-list extended DOWNLOAD_5M
 permit ip any object-group DOWNLOAD_5M
ip access-list extended DOWNLOAD_1M
 permit ip any object-group DOWNLOAD_1M

ip access-list extended UPLOAD_UNLIM
 permit ip object-group UPLOAD_UNLIM any
ip access-list extended UPLOAD_20M
 permit ip object-group UPLOAD_20M any
ip access-list extended UPLOAD_10M
 permit ip object-group UPLOAD_10M any
ip access-list extended UPLOAD_5M
 permit ip object-group UPLOAD_5M any
ip access-list extended UPLOAD_1M
 permit ip object-group UPLOAD_1M any

La lógica de dirección es importante: para controlar la descarga (tráfico que llega al usuario), la IP del usuario es el destino — por eso aparece en el campo de destino de la ACL (any → object-group). Para controlar la subida (tráfico que sale del usuario), la IP del usuario es el origen (object-group → any).

Paso 3 — Clasificación del tráfico con class-map: cómo configurar policing por IP en Cisco

Clasifico los flujos de tráfico tomando como base las ACL del paso anterior:

class-map match-all DOWNLOAD_UNLIM
 match access-group name DOWNLOAD_UNLIM
class-map match-all DOWNLOAD_20M
 match access-group name DOWNLOAD_20M
class-map match-all DOWNLOAD_10M
 match access-group name DOWNLOAD_10M
class-map match-all DOWNLOAD_5M
 match access-group name DOWNLOAD_5M
class-map match-all DOWNLOAD_1M
 match access-group name DOWNLOAD_1M

class-map match-all UPLOAD_UNLIM
 match access-group name UPLOAD_UNLIM
class-map match-all UPLOAD_20M
 match access-group name UPLOAD_20M
class-map match-all UPLOAD_10M
 match access-group name UPLOAD_10M
class-map match-all UPLOAD_5M
 match access-group name UPLOAD_5M
class-map match-all UPLOAD_1M
 match access-group name UPLOAD_1M

El parámetro match-all indica que el paquete debe cumplir todas las condiciones de la class-map para ser clasificado en esa clase. En este caso cada class-map tiene una sola condición (la ACL), por lo que el comportamiento es equivalente a match-any.

Paso 4 — Definición de las políticas de velocidad: ejemplo de police cir en Cisco IOS XE

Defino las policy-map especificando el ancho de banda para cada clase mediante el comando police. He creado dos políticas separadas: una para descarga y otra para subida.

policy-map DOWNLOAD_SPEED
 class DOWNLOAD_UNLIM
  police cir percent 100
 class DOWNLOAD_1M
  police cir 1000000 bc 187500 be 375000
   conform-action transmit
   exceed-action drop
 class DOWNLOAD_5M
  police cir 5000000 bc 937500 be 1875000
   conform-action transmit
   exceed-action drop
 class DOWNLOAD_10M
  police cir 10000000 bc 1875000 be 3750000
   conform-action transmit
   exceed-action drop
 class DOWNLOAD_20M
  police cir 20000000
   conform-action transmit
   exceed-action drop

policy-map UPLOAD_SPEED
 class UPLOAD_UNLIM
  police cir percent 100
 class UPLOAD_1M
  police cir 1000000 bc 187500 be 375000
   conform-action transmit
   exceed-action drop
 class UPLOAD_5M
  police cir 5000000 bc 937500 be 1875000
   conform-action transmit
   exceed-action drop
 class UPLOAD_10M
  police cir 10000000 bc 1875000 be 3750000
   conform-action transmit
   exceed-action drop
 class UPLOAD_20M
  police cir 20000000
   conform-action transmit
   exceed-action drop

Parámetros del policing

CIR (Committed Information Rate) — la tasa de conformidad del policer. Define el umbral de velocidad en bits por segundo al que el tráfico es considerado conforme (conform-action). El tráfico que excede este valor se trata según la acción configurada (exceed-action), típicamente drop. También se pueden usar los modificadores k (kilobits), m (megabits) y g (gigabits): por ejemplo, police cir 20m es equivalente a police cir 20000000. Si deseas profundizar, puedes revisar la guía oficial de QoS Packet Policing en IOS XE.

BC (Committed Burst) — ráfaga normal permitida, expresada obligatoriamente en bytes. Define cuántos bytes en ráfaga puede transmitir una clase sin que se considere exceso.

BE (Extended Burst) — ráfaga extendida, también en bytes. Define el margen adicional tolerado antes de aplicar la acción de exceso.

Fórmula de cálculo de BC y BE

Cisco recomienda calcular BC y BE en función del CIR para permitir ráfagas controladas en tráfico TCP, apoyándose en implementaciones de token bucket documentadas en el RFC 2697 — Single Rate Three Color Marker. Una práctica común es:

BC = (CIR en bps / 8) × 1.5
BE = BC × 2

Ejemplo para la clase de 1M:

BC = (1,000,000 / 8) × 1.5 = 187,500 bytes
BE = 187,500 × 2 = 375,000 bytes

Nota: cuando no se especifican BC y BE en el comando police, el IOS selecciona valores por defecto basados en el CIR.

Acciones configuradas:

  • conform-action transmit — los paquetes dentro del CIR se transmiten normalmente
  • exceed-action drop — los paquetes que superan el límite se descartan de forma inmediata y transparente

La clase DOWNLOAD_UNLIM y UPLOAD_UNLIM usa police cir percent 100, lo que configura el policer al 100% del ancho de banda de referencia de la interfaz. Esto elimina la limitación práctica dentro de esa política, pero sigue dependiendo del ancho de banda efectivo de la interfaz y de otras posibles políticas QoS aplicadas.

Paso 5 — Aplicación de políticas: cómo limitar el ancho de banda por suscriptor en Cisco

Aplico ambas políticas a la interfaz GigabitEthernet0/1, que conecta el router hacia la red local:

interface GigabitEthernet0/1
 service-policy input UPLOAD_SPEED
 service-policy output DOWNLOAD_SPEED

La dirección de aplicación es coherente con la lógica de las ACL:

  • service-policy input UPLOAD_SPEED — controla el tráfico que entra al router desde los usuarios (subida)
  • service-policy output DOWNLOAD_SPEED — controla el tráfico que sale del router hacia los usuarios (descarga)

Como resultado, las direcciones IP que se agreguen a los respectivos object-group quedarán restringidas a la velocidad dictada por las reglas descritas. Cualquier tráfico que supere los umbrales configurados será descartado de forma transparente.

Cómo aplicar diferentes velocidades a usuarios en un router Cisco

Una vez aplicada la configuración, agregar un usuario al nivel de 10M de descarga y 5M de subida requiere únicamente modificar los object-group correspondientes:

object-group network DOWNLOAD_10M
 host 192.168.1.50
object-group network UPLOAD_5M
 host 192.168.1.50

Para mover ese mismo usuario al nivel de 20M de descarga:

object-group network DOWNLOAD_10M
 no host 192.168.1.50
object-group network DOWNLOAD_20M
 host 192.168.1.50

Las ACL, class-map y policy-map no requieren modificación.

Verificación

Para confirmar que las políticas están aplicadas correctamente, utilizo:

R1# show policy-map interface GigabitEthernet0/1

Este comando muestra el estado de las políticas activas en la interfaz, incluyendo las clases activas, los contadores de paquetes conformes y excedidos, y las tasas en bps.

Para verificar los class-map configurados:

R1# show class-map

Para auditar si los paquetes están haciendo match en las ACL:

R1# show access-list

Los contadores de matches deben incrementar mientras hay tráfico activo. Si una clase no registra matches con tráfico real, mi primer punto de revisión es la ACL asociada y la pertenencia de la IP al object-group correcto.

Resumen del flujo de configuración

PasoComponenteFunción
1object-group networkAgrupa IPs/subredes por nivel de velocidad
2ip access-list extendedClasifica tráfico por origen/destino usando los grupos
3class-map match-allAsocia cada ACL a una clase de tráfico nombrada
4policy-map + policeDefine CIR, BC, BE y acciones conform/exceed por clase
5service-policy input/outputAplica las políticas a la interfaz en la dirección correcta

Para un mayor entendimiento de cómo el router maneja estos procesos en el plano de control, puedes consultar el resumen de policing y shaping en IOS XE.

Agregar Comentario Agregar Comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Post Anterior
Equipos y cables de red listos para configurar traffic shaping Cisco IOS

Configurar Traffic Shaping Cisco IOS: Comando Shape Average

Post Siguiente
Diagrama comparativo tacacs vs radius con flujos AAA en Cisco IOS

TACACS+ vs RADIUS: Diferencias, AAA y Configuración Cisco

Anuncio