Articulo de referencia

Cubo con fugas

La analogía del cubo con fugas. Se puede añadir agua al cubo de forma intermitente, la cual gotea a un ritmo constante hasta vaciarse, y también se desbordará cuando esté lleno....

La analogía del cubo con fugas. Se puede añadir agua al cubo de forma intermitente, la cual gotea a un ritmo constante hasta vaciarse, y también se desbordará cuando esté lleno.

El algoritmo del cubo con fugas se basa en la analogía de un cubo con una fuga constante que se desbordará si la velocidad media de vertido supera la velocidad de la fuga o si se vierte más agua de la que el cubo puede contener de una sola vez. Se puede utilizar para determinar si una secuencia de eventos discretos se ajusta a límites definidos en sus tasas o frecuencias medias y máximas, por ejemplo, para limitar las acciones asociadas a estos eventos a dichas tasas o retrasarlas hasta que se ajusten a ellas. También se puede utilizar para comprobar la conformidad o limitar la acción a una tasa media, es decir, para eliminar cualquier variación respecto a la media.

Se utiliza en redes informáticas de conmutación de paquetes y redes de telecomunicaciones tanto en el control de tráfico , la conformación del tráfico como en la programación de transmisiones de datos , en forma de paquetes , [ a ] con límites definidos en el ancho de banda y la variabilidad (una medida de las variaciones en el flujo de tráfico ).

Se recomienda una versión del algoritmo de cubo con fugas, el algoritmo genérico de tasa de celda , para redes de modo de transferencia asíncrona (ATM) [ 1 ] en UPC y NPC en interfaces usuario-red , interfaces entre redes o interfaces red a red para proteger una red de niveles de tráfico excesivos en las conexiones que la atraviesan. El algoritmo genérico de tasa de celda, o uno equivalente, también puede utilizarse para dar forma a las transmisiones de una tarjeta de interfaz de red en una red ATM.

Al menos algunas implementaciones del algoritmo del cubo con fugas son una imagen especular del algoritmo del cubo de tokens y, dados parámetros equivalentes, determinarán exactamente la misma secuencia de eventos para ajustarse o no a los mismos límites.

Descripción general

En la literatura se describen dos métodos diferentes para aplicar esta analogía del cubo con fugas. [ 2 ] [ 3 ] [ 4 ] [ 5 ] Estos métodos presentan lo que parecen ser dos algoritmos distintos, ambos denominados algoritmo del cubo con fugas y, por lo general, sin hacer referencia al otro método. Esto ha generado confusión sobre qué es el algoritmo del cubo con fugas y cuáles son sus propiedades.

En una versión, el cubo es un contador o variable separado del flujo de tráfico o del cronograma de eventos. [ 2 ] [ 4 ] [ 5 ] Este contador se usa solo para verificar que el tráfico o los eventos se ajusten a los límites: El contador se incrementa a medida que cada paquete llega al punto donde se realiza la verificación o cuando ocurre un evento, lo que es equivalente a la forma en que se agrega agua intermitentemente al cubo. El contador también se decrementa a una tasa fija, equivalente a la forma en que el agua se escapa del cubo. Como resultado, el valor en el contador representa el nivel de agua en el cubo. Si el contador permanece por debajo de un valor límite especificado cuando llega un paquete o ocurre un evento, es decir, el cubo no se desborda, eso indica su conformidad con los límites de ancho de banda y ráfaga o los límites de tasa promedio y pico de eventos. Esta versión se denomina aquí cubo con fugas como medidor .

En la segunda versión, el cubo es una cola en el flujo de tráfico. [ 3 ] Esta cola se utiliza para controlar directamente ese flujo: los paquetes se introducen en la cola a medida que llegan, equivalente a añadir agua al cubo. Estos paquetes se eliminan de la cola ( primero en llegar, primero en ser atendido ), normalmente a una tasa fija, por ejemplo, para su posterior transmisión, equivalente a que el agua se escape del cubo. Esta configuración impone conformidad en lugar de comprobarla, y cuando la salida se atiende a una tasa fija (y donde todos los paquetes tienen la misma longitud), el flujo de tráfico resultante está necesariamente exento de fluctuaciones o jitter . Así pues, en esta versión, el tráfico mismo es el análogo del agua que pasa por el cubo. Esta versión se denomina aquí cubo con fugas como cola .

El cubo con fugas como medidor es exactamente equivalente a (una imagen especular de) el algoritmo del cubo de tokens ; es decir, el proceso de añadir agua al cubo con fugas refleja exactamente el de extraer tokens del cubo de tokens cuando llega un paquete conforme, el proceso de fuga de agua del cubo con fugas refleja exactamente el de añadir tokens al cubo de tokens de forma regular, y la prueba de que el cubo con fugas no se desborde es un reflejo de la prueba de que el cubo de tokens contenga suficientes tokens y no se desborde . Por lo tanto, dados parámetros equivalentes, ambos algoritmos verán el mismo tráfico como conforme o no conforme. El cubo con fugas como cola puede considerarse un caso especial del cubo con fugas como medidor. [ 6 ]

Como un medidor

Control de tráfico con un cubo con fugas como contador.

A Jonathan S. Turner se le atribuye [ 7 ] la descripción original del algoritmo de la cubeta con fugas y lo describe de la siguiente manera: "Un contador asociado a cada usuario que transmite en una conexión se incrementa cada vez que el usuario envía un paquete y se decrementa periódicamente. Si el contador supera un umbral al incrementarse, la red descarta el paquete. El usuario especifica la tasa a la que se decrementa el contador (esto determina el ancho de banda promedio) y el valor del umbral (una medida de la variabilidad)". [ 2 ] La cubeta (análoga al contador) se utiliza, en este caso, como un medidor para comprobar la conformidad de los paquetes, en lugar de como una cola para controlarlos directamente.

Otra descripción de lo que es esencialmente la misma versión del algoritmo de medición, el algoritmo genérico de tasa de celda , la proporciona la UIT-T en la recomendación I.371 y en la especificación UNI del ATM Forum . [ 4 ] [ 5 ] La descripción, en la que el término celda es equivalente a paquete en la descripción de Turner [ 2 ], la proporciona la UIT-T de la siguiente manera: "El cubo con fugas de estado continuo puede considerarse como un cubo de capacidad finita cuyo contenido de valor real se drena a una tasa continua de 1 unidad de contenido por unidad de tiempo y cuyo contenido aumenta en el incremento T para cada celda conforme... Si a la llegada de una celda el contenido del cubo es menor o igual al valor límite τ , entonces la celda es conforme; de ​​lo contrario, la celda no es conforme. La capacidad del cubo (el límite superior del contador) es ( T + τ )". [ 5 ] Estas especificaciones también establecen que, debido a su capacidad finita, si el contenido del cubo en el momento en que se prueba la conformidad es mayor que el valor límite, y por lo tanto la celda no es conforme, entonces el cubo se deja sin cambios; es decir, simplemente no se agrega agua si esto haría que el cubo se desbordara.

David E. McDysan y Darrel L. Spohn ofrecen un comentario sobre la descripción proporcionada por el Foro ITU-T/ATM. En él, afirman: «En la analogía del cubo con fugas, las celdas [ATM] no fluyen realmente a través del cubo; solo lo hace la verificación de admisión conforme». [ 6 ] Sin embargo, de forma poco común en las descripciones de la literatura, McDysan y Spohn también se refieren al algoritmo del cubo con fugas como una cola, y añaden: «Nótese que una implementación de la conformación del tráfico consiste en hacer que las celdas fluyan realmente a través del cubo». [ 6 ]

Modelado del tráfico con un cubo con fugas como medidor.

Al describir el funcionamiento de la versión del algoritmo de la UIT-T, McDysan y Spohn invocan una "noción comúnmente empleada en la teoría de colas de un gremlin ficticio ". [ 6 ] Este gremlin inspecciona el nivel en el cubo y toma medidas si el nivel está por encima del valor límite τ : en la vigilancia del tráfico , abre una trampilla, lo que hace que el paquete que llega se descarte y evita que su agua entre en el cubo; en la conformación del tráfico , empuja una solapa, lo que retrasa el paquete que llega y evita que entregue su agua, hasta que el nivel de agua en el cubo cae por debajo de τ .

La diferencia entre las descripciones proporcionadas por Turner y el Foro ITU-T/ATM radica en que la de Turner se centra específicamente en la regulación del tráfico, mientras que la del Foro ITU-T/ATM es aplicable tanto a la regulación como a la conformación del tráfico. Además, Turner no indica que el contenido del contador solo deba verse afectado por paquetes conformes, ni que solo deba incrementarse cuando esto no provoque que se supere un límite; es decir, Turner no afirma explícitamente que la capacidad del depósito o el valor máximo del contador sean finitos. [ b ]

Concepto de operación

El funcionamiento del algoritmo del cubo con fugas, como medidor para la gestión o el control del tráfico, se puede describir como un cubo de capacidad fija, asociado a cada conexión virtual o usuario. El cubo gotea a un ritmo constante. Si se vacía, deja de gotear. Para que un paquete sea conforme, debe ser posible añadir una cantidad específica de agua al cubo. Esta cantidad puede ser la misma para todos los paquetes o proporcional a su longitud. Si al añadir esta cantidad el cubo se desborda, el paquete no es conforme y el agua permanece en el cubo.

Usos

El modelo de cubo con fugas, como medidor, puede utilizarse tanto en la conformación como en la regulación del tráfico . Por ejemplo, en redes ATM, en forma del algoritmo genérico de tasa de celda, se utiliza para comparar el ancho de banda y la variabilidad del tráfico en un canal virtual (VC) o ruta virtual (VP) con los límites especificados en la tasa de llegada de celdas y la fluctuación máxima (jitter) o variación en los intervalos entre llegadas para el VC o VP. En la regulación del tráfico, las celdas que no cumplen con estos límites (celdas no conformes) pueden descartarse o su prioridad puede reducirse para que las funciones de gestión de tráfico posteriores las descarten si hay congestión. En la conformación del tráfico, las celdas se retrasan hasta que cumplen con los límites. La regulación y la conformación del tráfico se utilizan comúnmente en UPC y NPC para proteger la red contra el tráfico excesivo o excesivamente irregular. (Véase gestión del ancho de banda y prevención de la congestión ). La conformación del tráfico se utiliza comúnmente en las interfaces de red de los hosts para evitar que las transmisiones superen los límites de ancho de banda o fluctuación y sean descartadas por las funciones de gestión de tráfico de la red. (Véase planificación (informática) y planificador de red ).

El algoritmo del cubo con fugas, como medidor, también puede utilizarse en un contador de cubo con fugas para medir la tasa de procesos aleatorios (estocásticos) . Un contador de cubo con fugas puede indicar, mediante su desbordamiento, cuando la tasa promedio o máxima de eventos aumenta por encima de un nivel de fondo aceptable. [ 8 ] Por ejemplo, dicho contador de cubo con fugas puede utilizarse para detectar cuándo hay una explosión repentina de errores de memoria corregibles o cuándo ha habido un aumento gradual, pero significativo, en la tasa promedio, lo que puede indicar una falla de corrección inminente. [ 9 ]

The use of the leaky bucket algorithm in a leaky bucket counter is similar to that in traffic management, in that it is used as a meter. Essentially, the events replace the packets in the description, with each event causing a quantity of water to be added to the bucket. If the bucket would overflow, as a result of the event, then the event should trigger the action associated with an out-of-limits event. Some implementations[8] seem to parallel Turner's description,[2] in that there is no explicit limit on the maximum value that the counter may take, implying that once the counter has exceeded the threshold, it may not return to its previous state until a period significantly greater than the equivalent of the emission interval has passed, which may be increased by what would otherwise be conforming events. However, other implementations may not increment the counter while it is overflowed, allowing it to correctly determine whether the following events conform or not.

Parameters

In the case of the leaky bucket algorithm as a meter, the limits on the traffic can be bandwidth and the burstiness of the output.[4][5][c] The bandwidth limit and burstiness limit for the connection may be specified in a traffic contract. A bandwidth limit may be specified as a packet rate, a bit rate, or as an emission interval between the packets. A limit on burstiness may be specified as a delay variation tolerance, or as a maximum burst size (MBS).

Multiple sets of contract parameters can be applied concurrently to a connection using multiple instances of the leaky bucket algorithm, each of which may take a bandwidth and a burstiness limit: see Generic cell rate algorithm § Dual Leaky Bucket Controller.

Emission interval

The rate at which the bucket leaks will determine the bandwidth limit, which is referred to as the average rate by Turner[2] and the inverse of which is referred to as the emission interval by the ITU-T. It is easiest to explain what this interval is where packets have a fixed length. Hence, the first part of this description assumes this, and the implications of variable packet lengths are considered separately.

Consideremos un cubo que está completamente lleno por el tráfico anterior, es decir, cuando ya se ha alcanzado el máximo de ráfagas permitidas, o sea, cuando el número máximo de paquetes o celdas ha llegado en el tiempo mínimo necesario para que cumplan con los límites de ancho de banda y fluctuación. El intervalo mínimo antes de que el siguiente paquete pueda cumplir con los límites es el tiempo que tarda el cubo en filtrar exactamente la cantidad de agua que contiene un paquete. Si un paquete se prueba y cumple con los límites en ese momento, el cubo se llenará de nuevo. Por lo tanto, una vez que el cubo está lleno, la tasa máxima a la que los paquetes pueden cumplir con los límites es con este intervalo entre cada paquete.

Turner [ 2 ] se refiere a esta tasa como el promedio, lo que implica que su inverso es el intervalo promedio. Sin embargo, existe cierta ambigüedad en cuanto a qué son la tasa y el intervalo promedio. Dado que los paquetes pueden llegar a cualquier tasa inferior, este es un límite superior, en lugar de un valor fijo, por lo que, en el mejor de los casos, podría llamarse el máximo para la tasa promedio. Además, durante el tiempo en que ocurre la máxima ráfaga, los paquetes pueden llegar a intervalos más pequeños y, por lo tanto, a una tasa mayor que esta. Así, para cualquier período menor que el infinito, la tasa promedio real puede ser (pero no necesariamente) mayor que esta y el intervalo promedio puede ser (pero no necesariamente) menor que el intervalo de emisión. Por lo tanto, debido a esta ambigüedad, el término intervalo de emisión se utiliza en adelante. Sin embargo, sigue siendo cierto que el valor mínimo que puede tomar el intervalo promedio a largo plazo tiende a ser el intervalo de emisión.

Para paquetes de longitud variable, donde la cantidad añadida al depósito es proporcional a la longitud del paquete, la tasa máxima de conformidad varía según su longitud: la cantidad que el depósito debe haber dejado de llenarse para que un paquete cumpla con los requisitos es la cantidad que el paquete añadirá, y si esta es proporcional a la longitud del paquete, también lo es el intervalo entre este y el paquete anterior que llenó el depósito. Por lo tanto, no es posible especificar un intervalo de emisión específico para paquetes de longitud variable, y el límite de ancho de banda debe especificarse explícitamente, en bits o bytes por segundo.

Tolerancia a la variación del retardo

La tolerancia a la variación de retardo se explica más fácilmente en el caso de paquetes de longitud fija. Por lo tanto, la primera parte de esta descripción parte de esta premisa, y las implicaciones de las longitudes variables de los paquetes se analizan por separado.

La UIT-T define un valor límite, τ , que es menor que la capacidad del depósito en T (la cantidad en que se incrementa el contenido del depósito por cada celda conforme), de modo que la capacidad del depósito es T + τ . Este valor límite especifica cuánto antes puede llegar un paquete de lo que normalmente se esperaría si los paquetes llegaran exactamente con el intervalo de emisión entre ellos.

Imaginemos la siguiente situación: Un cubo gotea a razón de 1 unidad de agua por segundo, por lo que el valor límite, τ , y la cantidad de agua añadida por un paquete, T , se miden en segundos. Este cubo comienza vacío, así que cuando llega un paquete, no lo llena completamente añadiendo su agua T , y el cubo queda τ por debajo de su capacidad. Por lo tanto, cuando llega el siguiente paquete, el cubo solo tiene que haberse vaciado en Tτ para que esto se cumpla. Así pues , el intervalo entre estos dos paquetes puede ser hasta τ menos que T.

Esto se extiende a múltiples paquetes en una secuencia: Imaginemos lo siguiente: El cubo comienza vacío, por lo que el primer paquete que llega cumple claramente con los requisitos. El cubo se llena exactamente después de que un número de paquetes que cumplen con los requisitos, N , hayan llegado en el tiempo mínimo posible para que cumplan con los requisitos. Para que el último (el N -ésimo) paquete cumpla con los requisitos, el cubo debe haber perdido suficiente agua de los N -1 paquetes anteriores (( N -1) × T segundos) para que esté exactamente en el valor límite τ en ese momento. Por lo tanto, el agua que se filtró es ( N -1) × T - τ , que, debido a que la fuga es de una unidad por segundo, tardó exactamente ( N -1) × T - τ segundos en filtrarse. Así, el tiempo más corto en el que todos los N paquetes pueden llegar y cumplir con los requisitos es ( N -1) × T - τ segundos, que es exactamente τ menos que el tiempo que habría tardado si los paquetes hubieran llegado exactamente en el intervalo de emisión.

Sin embargo, los paquetes solo pueden llegar con intervalos menores que T cuando el depósito no está lleno por el paquete anterior. Si está lleno, entonces el depósito debe haberse vaciado por completo en la cantidad T antes de que el siguiente paquete cumpla con los requisitos. Por lo tanto, una vez que este espacio del depósito se ha utilizado con paquetes que llegan con intervalos menores que T , los tramas subsiguientes deben llegar con intervalos no menores que T. Sin embargo, pueden llegar con intervalos mayores, cuando el depósito no se llenará con ellos. Dado que el depósito deja de tener fugas cuando está vacío, siempre hay un límite ( τ ) a la cantidad de tolerancia que pueden acumular estos intervalos mayores que T.

Dado que el valor límite τ define cuánto antes de lo esperado puede llegar un paquete, representa el límite de la diferencia entre los retrasos máximo y mínimo desde la fuente hasta el punto donde se realiza la prueba de conformidad (suponiendo que los paquetes se generan sin fluctuación). Por lo tanto, en ATM se utiliza el término tolerancia a la variación del retardo de celda (CDVt) para este parámetro.

Por ejemplo, una posible fuente de variación en el retardo se da cuando se multiplexan varios flujos de paquetes en la salida de un conmutador. Suponiendo que la suma de los anchos de banda de estas conexiones sea menor que la capacidad de la salida, todos los paquetes que llegan pueden transmitirse eventualmente. Sin embargo, si sus llegadas son independientes, por ejemplo, porque llegan a diferentes entradas del conmutador, entonces varios pueden llegar al mismo tiempo o casi al mismo tiempo. Dado que la salida solo puede transmitir un paquete a la vez, los demás deben ponerse en cola en un búfer hasta que les toque transmitirse. Este búfer introduce entonces un retardo adicional entre la llegada de un paquete a una entrada y su transmisión por la salida, y este retardo varía según la cantidad de otros paquetes que ya estén en cola en el búfer. Una situación similar puede ocurrir en la salida de un host (en el controlador de interfaz de red ) cuando varios paquetes tienen tiempos de liberación iguales o similares, y este retardo generalmente se puede modelar como un retardo en un búfer de salida virtual.

Para paquetes de longitud variable, donde la cantidad de agua añadida por un paquete dado es proporcional a su longitud, τ no puede considerarse un límite para la cantidad máxima que puede contener un paquete al llegar, ya que esto varía según el tamaño del paquete. Sin embargo, el tiempo que tarda en vaciarse desde este nivel hasta quedar vacío sigue siendo cuánto antes puede llegar un paquete de lo esperado cuando los paquetes se transmiten al límite del ancho de banda. Por lo tanto, sigue siendo la variación máxima en el retardo de transferencia hasta el punto en que se aplica la prueba de conformidad que se puede tolerar, y por ende, la tolerancia a la variación máxima del retardo.

Tamaño máximo de ráfaga

El valor límite o tolerancia a la variación de retardo también controla cuántos paquetes pueden llegar en una ráfaga, determinado por la profundidad del cubo que excede la capacidad requerida para un solo paquete. Por lo tanto, MBS también es una medida de la ráfaga o fluctuación, y es posible especificar la ráfaga como un MBS y derivar el valor límite τ a partir de este, o especificarla como una tolerancia o valor límite de fluctuación o variación de retardo, y derivar el MBS a partir de este.

A burst or clump of packets can arrive at a higher rate than determined by the emission interval T. This may be the line rate of the physical layer connection when the packets in the burst will arrive back-to-back. However, as in ATM, the tolerance may be applied to a lower rate, in that case, the Sustainable Cell Rate (SCR), and the burst of packets (cells) can arrive at a higher rate, but less than the line rate of the physical layer, in that case, the Peak Cell Rate (PCR). The MBS may then be the number of cells needed to transport a higher layer packet (see Segmentation and reassembly), where the packets are transmitted with a maximum bandwidth determined by the SCR and cells within the packets are transmitted at the PCR; thus allowing the last cell of the packet, and the packet itself, to arrive significantly earlier than it would if the cells were sent at the SCR: transmission duration = (MBS-1)/PCR rather than (MBS-1)/SCR. This bursting at the PCR puts a significantly higher load on shared resources, e.g., switch output buffers, than does transmission at the SCR, and is thus more likely to result in buffer overflows and network congestion. However, it puts a lesser load on these resources than would transmitting at the SCR with a limit value, τSCR, that allows MBS cells to be transmitted and arrive back-to-back at the line rate.

If the limit value is large enough, then several packets can arrive in a burst and still conform: if the bucket starts from empty, the first packet to arrive will add T, but if, by the time the next packet arrives, the contents is below τ, this will also conform. Assuming that each packet takes δ to arrive, then if τ (expressed as the time it takes the bucket to empty from the limit value) is equal to or greater than the emission interval less the minimum interarrival time, T δ, the second packet will conform even if it arrives as a burst with the first. Similarly, if τ is equal to or greater than (T δ) × 2, then 3 packets can arrive in a burst, etc.

The maximum size of this burst, M, can be calculated from the emission interval, T; the maximum jitter tolerance, τ; and the time taken to transmit/receive a packet, δ, as follows:[4]

M=1+τTδ{\displaystyle M=\left\lfloor 1+{\frac {\tau }{T-\delta }}\right\rfloor }

Equally, the minimum value of jitter tolerance τ that gives a specific MBS can be calculated from the MBS as follows:[4]

τ=(M1)(Tδ){\displaystyle \tau =\left(M-1\right)\left(T-\delta \right)}

En el caso de ATM, donde técnicamente MBS solo se relaciona con la tolerancia SCR, en la ecuación anterior el tiempo que tarda cada paquete en llegar, δ , es el intervalo de emisión para las celdas en el PCR T PCR , y el intervalo de emisión, T , es el intervalo de emisión para el SCR T SCR . Donde MBS debe ser el número de celdas necesarias para transportar un paquete segmentado, el valor límite en lo anterior, τ , debe ser el del SCR τ SCR . Sin embargo, en el UNI o un NNI , donde las celdas en el PCR habrán estado sujetas a variación de retardo, debe ser el valor límite para el SCR más el del PCR τ SCR + τ PCR .

Para paquetes de longitud variable, el tamaño máximo de la ráfaga dependerá de la longitud de los paquetes que la componen, y no existe un valor único para dicho tamaño. Sin embargo, es posible especificar la longitud total de la ráfaga en bytes, a partir de la tasa de bytes del flujo de entrada, la tasa de bytes equivalente de la fuga y la profundidad del cubo.

Comparación con el algoritmo de cubo de tokens

El algoritmo del cubo con fugas a veces se compara con el algoritmo del cubo de fichas . Sin embargo, el concepto de funcionamiento del cubo con fugas como medidor puede compararse directamente con el algoritmo del cubo de fichas, cuya descripción se presenta a continuación:

  • Se agrega un token al depósito cada 1/ r segundos.
  • El cubo puede contener como máximo b fichas. Si llega una ficha cuando el cubo está lleno, se descarta.
  • Cuando llega un paquete ( PDU de capa de red ) [ sic ] [ a ] de n bytes, se eliminan n tokens del depósito y el paquete se envía a la red.
  • Si hay menos de n tokens disponibles, no se elimina ningún token del depósito y el paquete se considera no conforme.

Esto se puede comparar con el ejemplo del cubo con fugas, repetido anteriormente:

  • Un depósito de capacidad fija, asociado a cada conexión virtual o usuario, sufre fugas a un ritmo fijo.
  • Si el cubo está vacío, deja de gotear.
  • Para que un paquete cumpla con las especificaciones, debe ser posible agregar una cantidad específica de agua al cubo: la cantidad específica que agrega un paquete que cumple con las especificaciones puede ser la misma para todos los paquetes o puede ser proporcional a la longitud del paquete.
  • Si esta cantidad de agua hiciera que el cubo excediera su capacidad, entonces el paquete no cumple con las especificaciones y el agua en el cubo permanece sin cambios.

Como se puede observar, estas dos descripciones son prácticamente idénticas: una agrega algo al depósito periódicamente y lo retira para los paquetes que cumplen con los requisitos, hasta un límite de cero; la otra retira periódicamente y agrega para los paquetes que cumplen con los requisitos, hasta el límite de la capacidad del depósito. En la práctica, ambas son iguales, ya que se trata del mismo algoritmo básico descrito de forma diferente.

Como una cola

El cubo con fugas como cola

El modelo de cubo con fugas como cola es esencialmente una forma de describir un búfer FIFO o cola simple que se atiende a una tasa fija para eliminar la fluctuación o el jitter. Andrew S. Tanenbaum lo describe en (una versión anterior de) su libro Redes de computadoras como: "El cubo con fugas consiste en una cola finita. Cuando llega un paquete, si hay espacio en la cola, se agrega a ella; de lo contrario, se descarta. En cada ciclo de reloj, se transmite un paquete (a menos que la cola esté vacía)". [ 3 ] Por lo tanto, una implementación del cubo con fugas como cola es siempre una forma de función de modelado de tráfico.

Como se puede observar, esta implementación está restringida, ya que los paquetes solo se transmiten a una velocidad fija. Para subrayar esto, Tanenbaum también afirma que "El algoritmo del cubo con fugas impone un patrón de salida rígido a la velocidad promedio, sin importar cuán irregular sea el tráfico [de entrada]". [ 10 ] Sin embargo, esta afirmación solo es estrictamente cierta mientras la cola no se vacíe: si la tasa de llegada promedio es menor que la frecuencia de los ciclos de reloj, o si la entrada es suficientemente irregular como para que las pérdidas hagan que la tasa del resto sea inferior a la frecuencia de los ciclos de reloj (es decir, las brechas en el flujo de entrada son lo suficientemente largas y la cola es lo suficientemente pequeña como para que pueda vaciarse), habrá brechas en el flujo de salida.

El parámetro ajustable para este algoritmo es el ancho de banda de su salida. [ 10 ] [ c ] El límite de ancho de banda para la conexión puede especificarse en un contrato de tráfico . Un límite de ancho de banda puede especificarse como una tasa de paquetes o tramas , una tasa de bytes o bits , o como un intervalo de emisión entre los paquetes.

Limitar paquetes de longitud variable usando el algoritmo de cubo con fugas como cola es significativamente más complicado que para paquetes de longitud fija. Tanenbaum ofrece una descripción de un cubo con fugas de "conteo de bytes" para paquetes de longitud variable de la siguiente manera: "En cada ciclo, un contador se inicializa a n. Si el primer paquete en la cola tiene menos bytes que el valor actual del contador, se transmite y el contador se decrementa en esa cantidad de bytes. También se pueden enviar paquetes adicionales, siempre que el contador sea lo suficientemente alto. Cuando el contador cae por debajo de la longitud del siguiente paquete en la cola, la transmisión se detiene hasta el siguiente ciclo, momento en el cual el conteo de bytes residual se restablece [a n] y el flujo puede continuar". [ 3 ] Al igual que con la versión para paquetes de longitud fija, esta implementación tiene un fuerte efecto en la fase de las transmisiones, lo que resulta en retrasos de extremo a extremo variables y no es adecuada para la conformación de tráfico en tiempo real.

El algoritmo de cubo con fugas, como cola, solo puede utilizarse para dar forma al tráfico a un ancho de banda específico sin fluctuaciones en la salida. [ 10 ] Puede utilizarse dentro de la red, por ejemplo, como parte de la gestión del ancho de banda, pero es más apropiado para dar forma al tráfico en las interfaces de red de los hosts. El algoritmo de cubo con fugas se utiliza en el módulo ngx_http_limit_req_module de Nginx para limitar el número de solicitudes concurrentes originadas desde una única dirección IP . [ 11 ]

Comparación entre las dos versiones

El análisis de las dos versiones del algoritmo del cubo con fugas muestra que la versión como cola es un caso especial de la versión como medidor.

Imaginemos una función de modelado de tráfico para paquetes de longitud fija, implementada mediante una cola de longitud fija que forma un elemento de retardo, el cual se gestiona utilizando un medidor con un cubo con fugas. Imaginemos también que el cubo de este medidor tiene una profundidad igual a la cantidad añadida por un paquete, es decir, un valor límite, τ , de cero. Sin embargo, la prueba de conformidad solo se realiza a intervalos del intervalo de emisión, cuando se transmite el paquete al inicio de la cola y se añade su agua. Esta agua se filtra durante el siguiente intervalo de emisión (o se retira justo antes de realizar la siguiente prueba de conformidad), lo que permite que el siguiente paquete cumpla con la conformidad en ese momento o en algún intervalo de emisión posterior. La función de servicio también puede visualizarse en términos de un cubo de tokens con la misma profundidad, donde se añaden suficientes tokens para un paquete (si el cubo no está lleno) en los intervalos de emisión. Esta implementación recibirá paquetes con un patrón de llegada en ráfagas (limitado por la profundidad de la cola) y los transmitirá a intervalos que siempre son múltiplos exactos (enteros) del intervalo de emisión.

Sin embargo, la implementación del cubo con fugas como medidor (o cubo de tokens) en una función de modelado de tráfico descrita anteriormente es un equivalente exacto a la descripción del cubo con fugas como cola: [ 3 ] el elemento de retardo de la versión del medidor es el cubo de la versión de la cola; el cubo de la versión del medidor es el proceso que atiende la cola, y la fuga es tal que el intervalo de emisión es el mismo que el intervalo de tick. Por lo tanto, para paquetes de longitud fija, la implementación del cubo con fugas como cola es un caso especial de una función de modelado de tráfico que utiliza un cubo con fugas (o cubo de tokens) como medidor en el que el valor límite, τ , es cero y el proceso de prueba de conformidad se realiza a la tasa más baja posible.

El cubo con fugas como cola para longitudes de paquete variables también puede describirse como equivalente a un caso especial del cubo con fugas como medidor. La implementación sugerida [ 3 ] puede considerarse, al igual que la implementación de longitud fija, como una función de modelado de tráfico en la que la cola es un elemento de retardo, en lugar del cubo, y la función que atiende la cola se define explícitamente como un cubo de tokens: se decrementa para los paquetes conformes y se incrementa a una tasa fija. Por lo tanto, dado que el cubo con fugas como medidor y el cubo de tokens son equivalentes, el cubo con fugas como cola para longitudes de paquete variables también es un caso especial de una función de modelado de tráfico que utiliza un cubo con fugas (o un cubo de tokens) como medidor.

Existe una consecuencia interesante al considerar el cubo con fugas como una cola para longitudes de paquetes variables, como una implementación específica del cubo de tokens o el cubo con fugas como medidor en la conformación del tráfico. Esto se debe a que el cubo del medidor tiene una profundidad, n , y, como siempre ocurre con el cubo de tokens, esta profundidad determina la ráfaga del tráfico de salida (quizás en relación con el número promedio o mínimo de tokens requeridos por los paquetes). Por lo tanto, es posible cuantificar la ráfaga de la salida de este cubo con fugas de conteo de bytes como un medidor, a menos que todos los paquetes tengan la longitud máxima, en cuyo caso resulta inútil. Sin embargo, esta capacidad de definir una ráfaga para la salida contradice directamente la afirmación de que el cubo con fugas (como una cola) necesariamente proporciona una salida con una tasa rígida, independientemente de la ráfaga de la entrada.

Véase también

Notas

  1. 1 2 En la gestión del tráfico, el algoritmo del cubo con fugas se aplica normalmente al equivalente de las PDU de la capa 2 del modelo OSI , por ejemplo, las celdas ATMy las tramas Ethernet , que se denominan tramas . Podría argumentarse entonces que la descripción de este algoritmo debería darse en términos de tramas y no de paquetes , que, en el modelo ISO-OSI de 7 capas, son PDU de la capa 3 de la capa de red . Sin embargo, el término paquete se usa comúnmente de forma genérica en las descripciones de este algoritmo en la literatura, y esta convención también se aplica aquí. No obstante, no se pretende implicar que el algoritmo del cubo con fugas se aplique exclusivamente a las PDU de la capa de red.
  2. Para que la descripción de Turner se ajuste claramente a la UIT-T, la afirmación "Si el contador supera un umbral al incrementarse, la red descarta el paquete" tendría que cambiarse por algo como "Si el contador superara un umbral [equivalente a la profundidad del depósito, T + τ , en la descripción de la UIT-T] al incrementarse, la red descarta el paquete y el contador no se incrementa", es decir, solo se incrementa cuando es menor o igual al valor límite, τ , o al menos T menor que la profundidad del depósito en la descripción de la UIT-T.
  3. 1 2 Las funciones de modelado de tráfico incluyen una cola que necesariamente tiene un tamaño finito. Por lo tanto, si el flujo de entrada excede cierto nivel de ráfaga que depende de la longitud de la cola o excede consistentemente el límite de ancho de banda impuesto al flujo de salida, la cola se desbordará y los paquetes se descartarán (normalmente): ver Modelado de tráfico#Condición de desbordamiento . Por lo tanto, las funciones de modelado de tráfico pueden verse como la aplicación de control de tráfico a la conexión de entrada y modelado de tráfico a la salida. Por consiguiente, deben tomar un parámetro para el límite de ráfaga en la entrada, además de los del cubo con fugas. Sin embargo, este límite de ráfaga de entrada puede tener por defecto un valor que no se espera que afecte al tráfico normal (se supone que la cola es lo suficientemente profunda para todas las circunstancias normales) y no siempre se especifica explícitamente.

Referencias

  1. UIT-T, Control de tráfico y control de congestión en ISDN B , Recomendación I.371, Unión Internacional de Telecomunicaciones, 2004, página 17
  2. 1 2 3 4 5 6 7 Turner, J., Nuevas direcciones en comunicaciones (¿o hacia dónde nos dirigimos en la era de la información?) . IEEE Communications Magazine 24 (10): 8–15. ISSN 0163-6804 , 1986. 
  3. 1 2 3 4 5 6 Andrew S. Tanenbaum, Redes de computadoras, Cuarta edición , ISBN 0-13-166836-6, Prentice Hall PTR, 2003, página 401.
  4. 1 2 3 4 5 6 ATM Forum, Interfaz de red de usuario (UNI), v. 3.1, ISBN 0-13-393828-X, Prentice Hall PTR, 1995.
  5. 1 2 3 4 5 UIT-T, Control de tráfico y control de congestión en ISDN B , Recomendación I.371, Unión Internacional de Telecomunicaciones, 2004, Anexo A, página 87.
  6. 1 2 3 4 McDysan, David E. y Spohn, Darrel L., ATM  : Teoría y aplicación , ISBN 0-07-060362-6, Serie de McGraw-Hill sobre comunicaciones informáticas, 1995, páginas 358-359.
  7. Andrew S. Tanenbaum, Redes de computadoras, cuarta edición , ISBN 0-13-166836-6, Prentice Hall PTR, 2003, página 400.
  8. 1 2 "Contador de cubos con fugas" . The Free Dictionary .
  9. Intel, Placa base para servidor Intel S5400SF: Especificación técnica del producto , septiembre de 2007, http://download.intel.com/support/motherboards/server/s5400sf/sb/s5400sf_tps_rev2_01.pdf .
  10. 1 2 3 Andrew S. Tanenbaum, Redes de computadoras, Cuarta edición , ISBN 0-13-166836-6, Prentice Hall PTR, 2003, página 402.
  11. "Módulo ngx_http_limit_req_module" .