La programación de salida garantiza que el tráfico importante no se descarta en caso de una suscripción excesiva en la salida de una interfaz. Este documento analiza todas las técnicas y algoritmos implicados en la programación de salida del switch Cisco Catalyst 3550. Este documento también describe cómo configurar y verificar el funcionamiento de la programación de resultados en los switches Catalyst 3550.
No hay requisitos específicos para este documento.
La información en este documento se basa en el Catalyst 3550 que ejecuta Cisco IOS® Software Release 12.1(12c)EA1.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Hay dos tipos de puertos en los switches 3550:
Puertos Gigabit
Puertos no Gigabit (puerto de 10/100 Mbps)
Estos dos puertos poseen diferentes capacidades. El resto de esta sección resume estas capacidades. En las demás secciones de este documento se explican las funciones con más detalle.
Cada puerto en el 3550 tiene cuatro colas de salida diferentes. Puede configurar una de estas colas como una cola de prioridad estricta. Cada una de las colas restantes se configura como colas de prioridad no estricta y se atiende con el uso de ordenamiento cíclico ponderado (WRR). En todos los puertos, el paquete se asigna a una de las cuatro colas posibles en función de la clase de servicio (CoS).
Los puertos Gigabit también admiten un mecanismo de administración de colas dentro de cada cola. Puede configurar cada cola para que utilice la detección temprana aleatoria ponderada (WRED) o la caída de cola con dos umbrales. Además, puede ajustar el tamaño de cada cola (el búfer asignado a cada cola).
Los puertos no Gigabit no tienen ningún mecanismo de colocación en cola como WRED o eliminación de cola con dos umbrales. Solo se admite la colocación en cola FIFO en un puerto de 10/100 Mbps. No puede cambiar el tamaño de cada una de las cuatro colas en estos puertos. Sin embargo, puede asignar un tamaño de reserva mínimo (min) por cola.
Esta sección discute cómo el 3550 decide colocar cada paquete en una cola. El paquete se coloca en la cola sobre la base del CoS. Cada uno de los ocho valores CoS posibles se mapea a una de las cuatro colas posibles con el uso del comando CoS-to-queue map interface que muestra este ejemplo:
(config-if)#wrr-queue cos-map queue-id cos1... cos8
Aquí tiene un ejemplo:
3550(config-if)#wrr-queue cos-map 1 0 1 3550(config-if)#wrr-queue cos-map 2 2 3 3550(config-if)#wrr-queue cos-map 3 4 5 3550(config-if)#wrr-queue cos-map 4 6 7
Este ejemplo indica:
CoS 0 y 1 en cola 1 (Q1)
CoS 2 y 3 en Q2
CoS 4 y 5 en Q3
CoS 6 y 7 en T4
Puede ejecutar este comando para verificar la asignación de CoS a cola de un puerto:
cat3550#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 ...Cos-queue map: cos-qid 0 - 1 1 - 1 2 - 2 3 - 2 4 - 3 5 - 3 6 - 4 7 - 4...
Siempre se vacía en primer lugar la cola de prioridad estricta. Por lo tanto, tan pronto como hay un paquete en la cola de prioridad estricta, el paquete se reenvía. Después que cada paquete es enviado desde una de las colas WRR, la cola de prioridad estricta se verifica y se vacía si es necesario.
Una cola de prioridad estricta está especialmente diseñada para el tráfico sensible a las demoras/fluctuaciones, como la voz. Eventualmente, una cola de prioridad estricta puede causar supresión de las otras colas. Los paquetes que se colocan en las otras tres colas WRR nunca se reenvían si un paquete espera en la cola de prioridad estricta.
Para evitar la inanición de las otras colas, preste especial atención a qué tráfico se coloca en la cola de prioridad. Esta cola se utiliza normalmente para el tráfico de voz, cuyo volumen no suele ser muy alto. Sin embargo, si alguien puede enviar tráfico de gran volumen con prioridad de CoS a la cola de prioridad estricta (como la transferencia de archivos grandes o la copia de seguridad), puede producirse la hambruna de otro tráfico. Para evitar este problema, el tráfico especial debe colocarse en la clasificación/admisión y marcado del tráfico en la red. Por ejemplo, puede tomar estas precauciones:
Utilice el estado QoS del puerto no confiable para todos los puertos de origen no confiables.
Utilice la función de límite de confianza para el puerto del teléfono IP de Cisco para asegurarse de que no se utiliza en el estado de confianza configurado para un teléfono IP para otra aplicación.
Regule el tráfico que se dirige hacia la cola de prioridades estrictas. Establezca un límite para la regulación del tráfico con un CoS de 5 (punto de código de servicios diferenciados [DSCP] 46) a 100 MB en un puerto Gigabit.
Para obtener más información sobre estos temas, consulte estos documentos:
Sección Configuración de un Límite de Confianza para Garantizar la Seguridad de Puertos de Configuración de QoS (Catalyst 3500)
En el 3550, puede configurar una cola para que sea la cola de prioridad (que siempre es Q4). Utilice este comando en el modo de interfaz:
3550(config-if)#priority-queue out
Si la cola de prioridad no está configurada en una interfaz, Q4 se considera una cola WRR estándar. La sección Ordenamiento cíclico ponderado en Catalyst 3550 de este documento proporciona más detalles. Puede verificar si la cola de prioridad estricta está configurada en una interfaz si ejecuta el mismo comando de Cisco IOS:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Egress expedite queue: ena
WRR es un mecanismo que se utiliza en la programación de salida en el 3550. WRR funciona entre tres o cuatro colas (si no existe una cola prioritaria estricta). Las colas que se utilizan en el WRR se vacian de forma rotativa y puede configurar el peso de cada cola.
Por ejemplo, puede configurar los pesos para que las colas se atiendan de forma diferente, como muestra esta lista:
Servidor WRR Q1: 10% del tiempo
Servidor WRR Q2: 20% del tiempo
Servidor WRR Q3: 60% del tiempo
Servidor WRR Q4: 10% del tiempo
Para cada cola, puede ejecutar estos comandos en el modo de interfaz para configurar los cuatro pesos (con uno asociado a cada cola):
(config-f)#wrr-queue bandwidth weight1 weight2 weight3 weight4
Aquí tiene un ejemplo:
3550(config)#interface gigabitethernet 0/1
3550(config-if)#wrr-queue bandwidth 1 2 3 4
Nota: Los pesos son relativos. Estos valores se utilizan:
Q1 = peso 1 / (peso1 + peso2 + peso3 + peso4) = 1 / (1+2+3+4) = 1/10
Q2 = 2/10
Q3 = 3/10
Q4 = 4/10
WRR se puede implementar de estas dos maneras:
WRR por ancho de banda: Cada peso representa un ancho de banda específico que se permite enviar. Se permite que el Peso Q1 tenga aproximadamente el 10 por ciento del ancho de banda, el Q2 obtiene el 20 por ciento del ancho de banda, etc. Este esquema sólo se implementa en la serie Catalyst 6500/6000 en este momento.
WRR por paquete: Este es el algoritmo que se implementa en el switch 3550. Cada peso representa un número determinado de paquetes que se enviarán, independientemente de su tamaño.
A medida que el 3550 implementa WRR por paquete, este comportamiento se aplica a la configuración de esta sección:
Q1 transmite 1 paquete de 10
Q2 transmite 2 paquetes de 10
Q3 transmite 3 paquetes de 10
Q4 transmite 4 paquetes de 10
Los paquetes que se transmitirán pueden tener el mismo tamaño. Todavía puede alcanzar un uso compartido esperado del ancho de banda entre las cuatro colas. Sin embargo, si el tamaño promedio del paquete es diferente entre las colas, hay un gran impacto en lo que se transmite y se pierde en caso de congestión.
Por ejemplo: suponga que usted tiene sólo dos flujos presentes en el switch. Hipotéticamente, también supongamos que estas condiciones están vigentes:
Un Gbps de tráfico de aplicación interactiva pequeño (tramas de 80 bytes [B]) con una CoS de 3 se coloca en Q2.
Un Gbps de tráfico de transferencia de archivos grandes (tramas 1518-B) con una CoS de 0 se coloca en Q1.
Se envían dos colas en el switch con 1 Gbps de datos.
Ambos flujos necesitan compartir el mismo puerto de salida Gigabit. Suponga que se configura el mismo peso entre Q1 y Q2. WRR se aplica por paquete y la cantidad de datos que se transmiten desde cada cola difiere entre las dos colas. El mismo número de paquetes se reenvían fuera de cada cola, pero el switch realmente envía esta cantidad de datos:
77700 paquetes por segundo (pps) de Q2 = (7700 x 8 x 64) bits por segundo (bps) (aproximadamente 52 Mbps)
7700 pps de Q1 = (7700 x 8 x 1500) bps (aproximadamente 948 Mbps)
Si desea permitir un acceso justo para cada cola a la red, tenga en cuenta el tamaño promedio de cada paquete. Se espera que cada paquete se coloque en una cola y que el peso se modifique según lo necesario. Por ejemplo, si desea dar igual acceso a cada una de las cuatro colas, de modo que cada cola obtenga 1/4 del ancho de banda, el tráfico es el siguiente:
En Q1: Tráfico de Internet de mejor esfuerzo. Suponga que el tráfico tiene un tamaño medio de paquete de 256 B.
En Q2 : Copia de seguridad compuesta de transferencia de archivos, con un paquete de 1500 B principalmente.
En Q3 : Transmisiones de vídeo, que se realizan en paquetes de 192 B.
En Q4 : Aplicación interactiva que se compone principalmente de un paquete de 64 B.
Esto crea estas condiciones:
Q1 consume un ancho de banda 4 veces mayor al de Q4.
Q2 consume un ancho de banda 24 veces mayor al de Q4.
Q3 consume un ancho de banda 3 veces mayor al de Q4.
Para tener acceso de ancho de banda igual a la red, configure:
Q1 con un peso de 6
Q2 con un peso de 1
Q3 con un peso de 8
Q4 con un peso de 24
Si asigna estos pesos, se logra un uso compartido igual del ancho de banda entre las cuatro colas en caso de congestión.
Si se activa la cola con prioridad estricta, los pesos del WRR se redistribuyen entre las tres colas remanentes. Si se habilita la cola de prioridad estricta y no se configura Q4, el primer ejemplo con pesos de 1, 2, 3 y 4 es:
Q1 = 1 / (1+2+3) = 1 paquete de 6
Q2 = 2 de 6 paquetes
Q3 = 3 paquetes de 6
Puede ejecutar este comando show del software Cisco IOS para verificar el peso de la cola:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 QoS is disabled. Only one queue is used When QoS is enabled, following settings will be applied Egress expedite queue: dis wrr bandwidth weights: qid-weights 1 - 25 2 - 25 3 - 25 4 - 25
Si se habilita la cola de prioridad expedita, el peso Q4 sólo se utiliza si se inhabilita la cola expedita. Aquí tiene un ejemplo:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Egress expedite queue: ena wrr bandwidth weights: qid-weights 1 - 25 2 - 25 3 - 25 4 - 25 !--- The expedite queue is disabled.
WRED sólo está disponible en puertos Gigabit en los switches de la serie 3550. WRED es una modificación de la detección temprana aleatoria (RED), que se utiliza para evitar la congestión. RED tiene estos parámetros definidos:
Umbral mínimo: Representa un umbral dentro de una cola. No se descartan paquetes por debajo de este umbral.
Umbral máximo (máximo): Representa otro umbral dentro de una cola. Todos los paquetes se descartan por encima del umbral máximo.
Pendiente: Probabilidad de descartar el paquete entre el mínimo y el máximo. La probabilidad de caída aumenta linealmente (con una pendiente determinada) con el tamaño de cola.
Este gráfico muestra la probabilidad de caída de un paquete en la cola RED:
Nota: Todos los switches Catalyst que implementan RED le permiten ajustar la pendiente.
En WRED se ponderan diferentes servicios. Puede definir un servicio estándar y un servicio premium. Cada servicio recibe un conjunto diferente de umbrales. Sólo se descartan los paquetes asignados al servicio estándar cuando se alcanza el umbral mínimo 1. Sólo los paquetes de servicios premium comienzan a descartarse cuando se alcanza el umbral mínimo 2. Si el umbral mínimo 2 es superior al umbral mínimo 1, se descartan más paquetes del servicio estándar que los paquetes de los servicios premium. Este gráfico muestra un ejemplo de probabilidad de caída para cada servicio con WRED:
Nota: El switch 3550 no le permite ajustar el umbral mínimo, sino sólo el umbral máximo. El umbral mínimo siempre está configurado como 0. Esto proporciona una probabilidad de caída que representa lo que se implementa actualmente en el 3550.
Cualquier cola que esté habilitada para WRED en el 3550 siempre tiene una probabilidad de caída distinta de cero y siempre descarta paquetes. Este es el caso porque el umbral mínimo es siempre 0. Si necesita evitar la caída de paquetes al máximo, utilice la eliminación de cola ponderada, que describe la sección Tail Drop on Catalyst 3550 Switches.
Sugerencia: El ID de bug de Cisco CSCdz73556 (sólo clientes registrados) documenta una solicitud de mejora para la configuración del umbral mínimo.
Si desea obtener más información sobre RED o WRED, consulte Introducción a la prevención de congestiones.
En el 3550, puede configurar WRED con dos umbrales máximos diferentes para proporcionar dos servicios diferentes. Se asignan diferentes tipos de tráfico a ambos umbrales, que dependen solamente de los DSCP internos. Esto difiere de la asignación de cola, que sólo depende del CoS del paquete. Un mapeo de tabla DSCP a umbral decide a qué umbral van cada uno de los 64 DSCP. Puede ejecutar este comando para ver y modificar esta tabla:
(config-if)#wrr-queue dscp-map threshold_number DSCP_1 DSCP_2 DSCP_8
Por ejemplo, este comando asigna DSCP 26 al umbral 2:
NifNif(config-if)#wrr-queue dscp-map 2 26 NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Dscp-threshold map: d1 : d2 0 1 2 3 4 5 6 7 8 9 --------------------------------------- 0 : 01 01 01 01 01 01 01 01 01 01 1 : 01 01 01 01 01 01 02 01 01 01 2 : 01 01 01 01 02 01 02 01 01 01 3 : 01 01 01 01 01 01 01 01 01 01 4 : 02 01 01 01 01 01 02 01 01 01 5 : 01 01 01 01 01 01 01 01 01 01 6 : 01 01 01 01
Después de la definición del mapa DSCP a umbral, WRED se habilita en la cola de su elección. Ejecutar este comando:
(config-if)#wrr-queue random-detect max-threshold queue_id threshold_1 threshold_2
En este ejemplo se configura lo siguiente:
Q1 con umbral 1 = 50% y umbral 2 = 100%
Q2 con umbral 1 = 70% y umbral 2 = 100%
3550(config)#interface gigabitethernet 0/1 3550(config-if)#wrr-queue random-detect max-threshold 1 50 100 3550(config-if)#wrr-queue random-detect max-threshold 2 70 100 3550(config-if)#wrr-queue random-detect max-threshold 3 50 100 3550(config-if)#wrr-queue random-detect max-threshold 4 70 100
Puede ejecutar este comando para verificar el tipo de cola (WRED o no) en cada cola:
nifnif#show mls qos interface gigabitethernet0/1 buffers GigabitEthernet0/1 .. qid WRED thresh1 thresh2 1 dis 10 100 2 dis 10 100 3 ena 10 100 4 dis 100 100
La ena significa habilitar y la cola utiliza WRED. El dis significa inhabilitar, y la cola utiliza el descarte de cola.
También puede monitorear el número de paquetes que se descartan para cada umbral. Ejecutar este comando:
show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 327186552 8 1024
2 : 0 0 1024
3 : 37896030 0 1024
4 : 0 0 1024
El descarte de cola es el mecanismo predeterminado en los puertos Gigabit de 3550. Cada puerto Gigabit puede tener dos umbrales de caída de cola. Se asigna un conjunto de DSCP a cada uno de los umbrales de descarte de cola con el uso del mismo mapa de umbral DSCP que define la sección WRED en switches Catalyst 3550 de este documento. Cuando se alcanza un umbral, se descartan todos los paquetes con un DSCP asignado a ese umbral. Puede ejecutar este comando para configurar los umbrales de descarte de cola:
(config-if)#wrr-queue threshold queue-id threshold-percentage1 threshold-percentage2
En este ejemplo se configura lo siguiente:
Q1 con umbral de caída de cola 1 = 50 por ciento y umbral 2 = 100 por ciento
Q2 con umbral 1 = 70% y umbral 2 = 100%
Switch(config-if)#wrr-queue threshold 1 50 100 Switch(config-if)#wrr-queue threshold 2 70 100 Switch(config-if)#wrr-queue threshold 3 60 100 Switch(config-if)#wrr-queue threshold 4 80 100
El switch 3550 utiliza almacenamiento en búfer central. Esto significa que no hay tamaños de búfer fijos por puerto. Sin embargo, hay un número fijo de paquetes en un puerto Gigabit que se pueden poner en cola. Este número fijo es 4096. De forma predeterminada, cada cola en un puerto Gigabit puede tener hasta 1024 paquetes, independientemente del tamaño del paquete. Sin embargo, puede modificar la forma en que estos paquetes 4096 se dividen entre las cuatro colas. Ejecutar este comando:
wrr-queue queue-limit Q_size1 Q_size2 Q_size3 Q_size4
Aquí tiene un ejemplo:
3550(config)#interface gigabitethernet 0/1 3550(config-if)#wrr-queue queue-limit 4 3 2 1
Estos parámetros de tamaño de cola son relativos. Este ejemplo muestra que:
Q1 es cuatro veces mayor que Q4.
Q2 es tres veces mayor que Q4.
Q3 es el doble de grande que Q4.
Los paquetes 4096 se redistribuyen de esta manera:
Q1 = [4 /(1+2+3+4) ] * 4096 = 1639 paquetes
Q2 = 0.3 * 4096 = 1229 paquetes
Q3 = 0,2 * 4096 = 819 paquetes
Q4 = 0,1 * 4096 = 409 paquetes
Este comando le permite ver los pesos relativos de las memorias intermedias divididas entre las cuatro colas:
cat3550#show mls qos interface buffers GigabitEthernet0/1 Notify Q depth: qid-size 1 - 4 2 - 3 3 - 2 4 - 1 ...
También puede ejecutar este comando para ver cuántos paquetes libres puede retener cada cola:
(config-if)#show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1639
2 : 0 0 1229
3 : 0 0 819
4 : 0 0 409
El parámetro de la cuenta de FreeQ (Cola libre) es dinámico. El contador FreeQ proporciona el tamaño máximo de la cola menos el número de paquetes que están actualmente en la cola. Por ejemplo, si actualmente hay 39 paquetes en Q1, 1600 paquetes son gratis en el conteo FreeQ. Aquí tiene un ejemplo:
(config-if)#show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1600
2 : 0 0 1229
3 : 0 0 819
4 : 0 0 409
No hay ningún esquema de administración de colas disponible en los puertos de 10/100 Mbps (sin WRED ni caída de cola con dos umbrales). Las cuatro colas son colas FIFO. Tampoco hay un tamaño máximo de cola que reserve 4096 paquetes para cada puerto Gigabit. Los puertos de 10/100 Mbps almacenan los paquetes en cada cola hasta que están llenos debido a la falta de recursos. Puede reservar un número mínimo de paquetes por cola. Este valor mínimo se fija de forma predeterminada en 100 paquetes por cola. Puede modificar este valor de reserva mínimo para cada cola si define valores de reserva mínimos diferentes y asigna uno de los valores a cada cola.
Complete estos pasos para realizar esta modificación:
Asigne un tamaño de búfer para cada valor de reserva mínimo global.
Puede configurar un máximo de ocho valores de reserva mínimos diferentes. Ejecutar este comando:
(Config)# mls qos min-reserve min-reserve-level min-reserve-buffersize
Estos valores mínimos de reserva son globales para el switch. De forma predeterminada, todos los valores de reserva mínimos se establecen en 100 paquetes.
Por ejemplo, para configurar un nivel de reserva mínimo 1 de 150 paquetes y un nivel de reserva mínimo 2 de 50 paquetes, ejecute estos comandos:
nifnif(config)#mls qos min-reserve ? <1-8> Configure min-reserve level nifnif(config)#mls qos min-reserve 1 ? <10-170> Configure min-reserve buffers nifnif(config)#mls qos min-reserve 1 150 nifnif(config)#mls qos min-reserve 2 50
Asigne uno de los valores mínimos de reserva a cada una de las colas.
Debe asignar cada una de las colas a uno de los valores de reserva mínimos para saber cuántos búfers se garantizan para esta cola. De forma predeterminada, se aplican estas condiciones:
Q1 se asigna al nivel de reserva mínimo 1.
El segundo trimestre se asigna al nivel de reserva mínimo 2.
Q3 se asigna al nivel de reserva mínimo 3.
Q4 se asigna al nivel de reserva mínimo 4.
De forma predeterminada, todos los valores de reserva mínimos son 100.
Puede ejecutar este comando de interfaz para asignar un valor de reserva mínimo diferente por cola:
(config-if)#wrr-queue min-reserve queue-id min-reserve-level
Por ejemplo, para asignar a Q1 una reserva mínima de 2 y a Q2 una reserva mínima de 1, ejecute este comando:
nifnif(config)#interface fastethernet 0/1 nifnif(config-if)#wrr-queue min-reserve ? <1-4> queue id nifnif(config-if)#wrr-queue min-reserve 1 ? <1-8> min-reserve level nifnif(config-if)#wrr-queue min-reserve 1 2 nifnif(config-if)#wrr-queue min-reserve 2 1
Puede ejecutar este comando para verificar la asignación de reserva mínima que resulta:
nifnif#show mls qos interface fastethernet0/1 buffers FastEthernet0/1 Minimum reserve buffer size: 150 50 100 100 100 100 100 100 !--- This shows the value of all eight min reserve levels. Minimum reserve buffer level select: 2 1 3 4 !--- This shows the min reserve level that is assigned to !--- each queue (from Q1 to Q4).
La colocación en cola y la programación en un puerto del 3550 implica estos pasos:
Asigne cada CoS a una de las colas.
Habilite colas de prioridad estricta, si es necesario.
Asigne el peso WRR y tenga en cuenta el tamaño de paquete esperado dentro de la cola.
Modifique el tamaño de la cola (sólo puertos Gigabit).
Habilite un mecanismo de administración de cola (descarte de cola o WRED, sólo en puertos Gigabit).
Las colas y la programación adecuadas pueden reducir la demora y la fluctuación del tráfico de voz y vídeo y evitar la pérdida del tráfico crítico. Asegúrese de cumplir estas directrices para obtener el máximo rendimiento de la programación:
Clasifique el tráfico que está presente en la red en diferentes clases, ya sea confiando o marcando específicamente.
Tráfico policial en exceso.