Este documento describe las pérdidas y fallas de la memoria intermedia en el procesador de ruteo (RP).
No hay requisitos específicos para este documento.
Este documento no tiene restricciones específicas en cuanto a versiones de software y de hardware.
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.
El RP divide su memoria del procesador en conjuntos. Cada conjunto contiene un número de bloques de memoria de igual tamaño. Estos bloques de memoria se denominan búferes.
Hay seis grupos de memoria intermedia:
Pequeña: búferes de 104 bytes
Medio: búfers de 600 bytes
Grande: búfers de 1524 bytes
Muy grande: búfers de 4520 bytes
Grande: búfers de 5024 bytes
Enorme: memorias intermedias de 18024 bytes
Por ejemplo, si un procesador de interfaz necesita pasar un paquete de 20 bytes al RP, "solicita" un búfer pequeño. Si un procesador de interfaz necesita pasar un paquete de 500 bytes al RP, solicita un búfer central, y así sucesivamente.
Nota: El procesador de interfaz debe solicitar un búfer de un tamaño determinado.
Cuando el procesador de interfaz solicita un buffer, esto ocurre:
Si existe una memoria intermedia libre dentro del agrupamiento solicitado, se concede la memoria intermedia. De lo contrario, la solicitud genera una "pérdida" y el algoritmo del búfer intenta "crear" más búfers para ese conjunto .
Cuando el IOS no consigue obtener un búfer pequeño, no descarta el paquete. Incrementa el contador fallido y pasa al búfer de nivel siguiente, que es el búfer central y solicita un búfer allí. Si no consigue obtener un búfer central, solicita el búfer de nivel siguiente, que es un búfer grande. Este proceso continúa hasta que llega al enorme conjunto de búferes. Si no logra obtener un búfer enorme, entonces descarta el paquete.
Cuando utiliza el conjunto de funciones de IBM, un error casi siempre genera una falla.
Aunque las funciones de IBM pueden conmutarse por proceso, el código para obtener un buffer para pasar un paquete desde una interfaz al RP se ejecuta en el nivel de interrupción.
Los búferes no se pueden crear en el nivel de interrupción; en consecuencia, un error pone en cola su solicitud para más búfers al RP.
Debido a que no se puede crear un búfer adicional en el lugar, la solicitud del búfer falla y el paquete se descarta.
Las fallas de la memoria intermedia son una de las razones más comunes del rechazo de paquetes. Cuando se producen caídas de paquetes debido a una falla en el buffer, esto ocurre:
Después de una falla en el buffer, el RP tiene una solicitud pendiente para crear más buffers del tamaño adecuado para el conjunto en particular.
Mientras el RP atiende la solicitud de creación de búfers, puede haber fallas adicionales en el conjunto.
El RP puede incluso no crear más búfers, debido a las restricciones de memoria en el sistema cuando se requieren los búfers adicionales.
Básicamente, la operación de creación de buffers puede tardar varios microsegundos, en los que los paquetes se pierden continuamente debido a la escasez de búfer.
Además, si los búfers se utilizan tan rápido como se crean, el RP podría verse obligado a pasar más tiempo en la creación del búfer que en el procesamiento de paquetes.
Esto puede hacer que el RP comience a descartar paquetes tan rápidamente que el rendimiento se degrade y se pierdan las sesiones.
Afortunadamente, como se trata en este documento, los problemas de falla del búfer no son difíciles de identificar y resolver. Este resultado del comando show buffers muestra el estado actual de los conjuntos de memoria intermedia del router:
dspu-7k#show buffers Buffer elements: 500 in free list (500 max allowed) 2370 hits, 0 misses, 0 created Public buffer pools: Small buffers, 104 bytes (total 16, permanent 10): 11 in free list (0 min, 10 max allowed) 1770 hits, 33 misses, 22 trims, 28 created 9 failures (0 no memory) Middle buffers, 600 bytes (total 90, permanent 90): 89 in free list (10 min, 200 max allowed) 590 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Big buffers, 1524 bytes (total 90, permanent 90): 90 in free list (5 min, 300 max allowed) 126 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) VeryBig buffers, 4520 bytes (total 10, permanent 10): 10 in free list (0 min, 300 max allowed) 50 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Large buffers, 5024 bytes (total 10, permanent 10): 10 in free list (0 min, 30 max allowed) 0 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Huge buffers, 18024 bytes (total 2, permanent 0): 0 in free list (0 min, 13 max allowed) 2 hits, 2 misses, 0 trims, 2 created 0 failures (0 no memory)
En la salida de show buffers:
Total identifica el número total de búfers en el conjunto, que incluyen búfers usados y no usados.
Permanente se refiere a la cantidad permanente de búfers asignados en el agrupamiento. Estas memorias intermedias están siempre en el conjunto y no se pueden recortar.
En la lista libre identifica la cantidad de memorias intermediadas que se encuentran actualmente disponibles en el grupo para su uso.
Min identifica el número mínimo de búfers que el RP debe intentar mantener en la lista libre:
Se usa el parámetro min para anticipar la demanda de memoria intermedia desde los recursos compartidos en cualquier momento.
Si la cantidad de memorias intermedias en la lista disponible cae por debajo del valor mínimo, el RP intenta crear más para esa agrupación.
Max-allowed identifica el número máximo de memorias intermedias permitidas en la lista libre:
El parámetro max-allowed evita que un conjunto monopolice búfers que ya no necesita. También libera esta memoria al sistema para su uso posterior.
Si el número de memorias intermedias en la lista libre es mayor que el valor máximo permitido, el RP debe intentar recortar las memorias intermedias del conjunto.
Los aciertos identifican la cantidad de búfers que se han solicitado desde el agrupamiento. El contador de aciertos proporciona un mecanismo para determinar qué conjunto debe satisfacer la mayor demanda de memorias intermedias.
Las pérdidas identifican el número de veces que se ha solicitado un buffer y el RP detectado en el cual se requerían búferes adicionales del conjunto. En otras palabras, el número de búfers en la lista libre ha caído por debajo del nivel mín. El contador de errores representa la cantidad de oportunidades en que RP ha sido forzado a crear memorias intermedias adicionales.
Los recortes identifican el número de memorias intermedias que el RP ha recortado del conjunto, cuando el número de memorias intermedias en la lista libre excedió el número de búferes máximos permitidos.
Created identifica la cantidad de búfers que han sido creados en el grupo. El RP crea búfers en estas situaciones:
Cuando la demanda de memorias intermedias ha aumentado hasta que el número de memorias intermedias en la lista libre es menor que el número de memorias intermedias mín.
Una pérdida ocurre porque no hay búfers en la lista libre.
Ambas situaciones anteriores.
Las fallas identifican cuando el IOS no puede obtener un búfer pequeño, no descarta el paquete. Incrementa el contador fallido y pasa al búfer de nivel siguiente, que es el búfer central y solicita un búfer allí. Si no consigue obtener un búfer intermedio, solicita el búfer de nivel siguiente, que es un búfer grande. Este proceso continúa hasta que llega al enorme conjunto de búferes. Si no logra obtener un búfer enorme, entonces descarta el paquete.
Ninguna memoria identifica la cantidad de fallas causadas por la insuficiencia de memoria para crear memorias intermedias adicionales.
Puede examinar las características de cada conjunto para determinar qué grupos (si los hay) tienen problemas. Los parámetros de un conjunto pueden ajustarse para permitir que el router esté mejor preparado para manejar la carga, si el conjunto parece mostrar estas características:
El número de pérdidas y crea un incremento a una tasa alta (como porcentaje de visitas).
Hay un número sistemáticamente bajo de búfers en la lista libre.
El número de fallas o sin memoria aumenta.
Con el comando de configuración buffers, puede ajustar estos parámetros para cada conjunto de búfer:
inicial: búferes temporales que se asignan en la recarga del sistema.
max-free: número máximo de búfers libres.
min-free: número mínimo de búfers libres.
permanente: número de búfers permanentes.
Ajuste los búfers iniciales para acomodar la ráfaga de tráfico por establecimiento de sesión luego de la recarga del router.
buffers small initial 250
Estas memorias intermedias eventualmente son “trimmed” y regresadas al sistema.
Los búfers iniciales están diseñados para administrar el establecimiento de sesión, el cual siempre está conmutado por proceso.
Durante el establecimiento de la sesión, se llena la memoria caché de fast switching (utilizada por otros protocolos de ruta); los búfers conmutados por proceso ya no son necesarios y pueden ser devueltos al sistema.
Es posible que ajustar los búfers iniciales no sea la solución correcta para el conjunto de funciones de IBM, ya que casi todos los paquetes (después del establecimiento de la sesión) se conmutan por proceso y requieren el almacenamiento en búfer adicional de todos modos.
Nota: Para las funciones conmutadas por proceso de IBM, debe ajustar los búfers permanentes en lugar de ajustar los búfers iniciales temporales.
Ajuste los búfers max-free de modo que el valor sea igual o mayor que los búfers permanentes. Si todos los búfers permanentes están en la lista libre, entonces el RP no debería intentar recortar los buffers permanentes. Max-free se puede utilizar para asegurar que las memorias intermedias que no se utilizan creadas durante ráfagas irregulares son devueltas a la memoria del sistema.
buffers small max-free 175 buffers small permanent 125
Ajuste los búfers min-free para que el valor represente el número mínimo estimado de búfers necesarios en cualquier momento. Min-free se puede utilizar para anticipar las condiciones de escasez de búfer y para asegurarse de que un número mínimo de memorias intermedias siempre esté disponible.
buffers small min-free 50
Ajuste los búferes permanentes de modo que el valor represente el número estimado de búfers necesarios para el procesamiento normal.
buffers small permanent 125
Se utilizan búfers permanentes para cumplir con los requerimientos de búfer normal del router (lo cual incluye ráfagas frecuentes). La determinación de los requisitos normales del búfer es un proceso interactivo, donde el resultado show buffer debería mostrar los búfers totales usados en un conjunto en un momento dado. Las memorias intermedias permanentes deben ajustarse con respecto a las memorias intermedias “totales” coherentes requeridas. Al ajustar búferes permanentes, debe centrarse en la reducción de las creaciones y en la eliminación de las pérdidas y los fallos.
Existen otros dos comandos show que puede utilizar para identificar problemas con la asignación de búfer:
show interfaces interface-identificador
show source-bridge
Este ejemplo de resultado del comando show interfaces interface-identificador incluye un contador para no buffer:
dspu-7k#show interfaces channel 4/2 Channel4/2 is up, line protocol is up Hardware is cxBus IBM Channel MTU 4472 bytes, BW 98304 Kbit, DLY 100 usec, rely 255/255, load 1/255 Encapsulation CHANNEL, loopback not set, keepalive not set Virtual interface Last input 0:00:04, output 0:00:04, output hang never Last clearing of "show interface" counters never Output queue 0/40, 0 drops; input queue 0/75, 8 drops 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 646 packets input, 27760 bytes, 8 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 328 packets output, 16959 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out
En el resultado del comando show interfaces interface-identificador:
El contador sin búfer aumenta cuando la interfaz no puede obtener un buffer para un paquete entrante.
Los contadores sin búfer y caídas (cola de entrada) aumentan cuando la interfaz no puede obtener un búfer para un paquete entrante.
Un contador sin búfer que aumenta en el resultado de show interfaces se correlaciona con el contador de pérdidas que aumenta en el resultado de show buffers. Se puede ajustar el conjunto de búfer adecuado.
El resultado del comando de ejemplo show source-bridge incluye un contador de interfaz para los aceleradores, cuando se configura el bridging de ruta de origen (SRB) para la interfaz:
dspu-7k#show source-bridge Local Interfaces: receive transmit srn bn trn r p s n max hops cnt:bytes cnt:bytes drops Ch4/2 666 1 99 * f 7 7 7 652:26020 6:266 0 Global RSRB Parameters: TCP Queue Length maximum: 100 Ring Group 99: This TCP peer: 150.10.20.2 Maximum output TCP queue length, per peer: 100 Peers: state bg lv pkts_rx pkts_tx expl_gn drops TCP TCP 150.10.20.1 open *3 261 266 0 0 0 TCP 150.10.20.2 - *3 0 0 0 0 0 Rings: bn: 1 rn: 888 locvrt ma: 4000.7000.fff1 Buff Ring888 fwd: 0 bn: 1 RN: 666 local ma: 4000.0c48.2e80 Channel4/2 fwd: 261 bn: 1 RN: 88 remote ma: 4000.4000.fff1 TCP 150.10.20.1 fwd: 322 bn: 1 RN: 250 remote ma: 4000.300f.7c09 TCP 150.10.20.1 fwd: 0 Explorers: ------- input ------- ------- output ------- spanning all-rings total spanning all-rings total Ch4/2 0 0 0 0 1 1 Local: fastswitched 0 flushed 0 max Bps 256000 rings inputs bursts throttles output drops Ch4/2 0 0 8 0
En el resultado del comando show source-bridge:
El contador throttles aumenta cuando la interfaz no puede obtener un buffer para un paquete entrante.
El contador aceleradores que se incrementa en la salida del comando show interfaces se correlaciona con un contador de pérdidas que aumenta en la salida del comando show buffers. Se puede ajustar el conjunto de búfer adecuado.