Quantum Flow Control (QFC) es un protocolo para el manejo de tráfico ABR en redes ATM basado en créditos. Este se caracteriza por agrupar en “quantums” la información del estado de las colas. Este protocolo proporciona un mecanismo de realimentación extremo a extremo de un enlace, proporcionando el lazo de control más corto posible. Además QFC puede asegurar cero pérdida de celdas independientemente de la congestión de la red. Este esquema soporta caminos virtuales y canales virtuales sobre topologías punto a punto y punto a multipunto.
QFC conserva los requerimientos del servicio ABR controlando el número de celdas enviadas a cada nodo a través de una conexión. Es un protocolo hop-by-hop (conmutador a conmutador), es decir, existe un lazo de control separado en cada enlace envuelto en la conexión. Este esquema controla explícitamente los niveles de ocupación de las colas en los conmutadores por lo que evita completamente la pérdida de celdas por congestión, un requerimiento fundamental en el servicio ABR. Ya que es hop-by-hop es aplicable a todos los tipos de conexiones, tales como circuitos virtuales, caminos virtuales y conexiones punto-multipunto.
Las principales características de QFC son:
El funcionamiento del QFC se basa en la utilización de diferentes
contadores y variables. Los contadores son infinitos y mantienen el número
celdas, ya sea enviadas, recibidas o enviadas a otro enlace. Las variables
que utiliza QFC representan límites para los contadores. Estas variables,
mediante ecuaciones simples, indican la ejecución de determinada
acción: detener tráfico, emitir mensaje, etc.
A todas estas variables y contadores se les denomina recursos.
Los recursos en QFC se dividen según la instancia que los utiliza,
como sabemos QFC se basa en tres instancias principales: transmisor, receptor
y enlace.
Los recursos que utiliza QFC se agrupan en la siguiente gráfica
Recursos que utiliza
QFC
En el transmisor:
En el receptor:
Recursos de sistema QFC (utilizados tanto por el transmisor como
el receptor):
La forma de operar de QFC está definida por mensajes que son
enviados entre el transmisor y el receptor en un enlace. En este caso los
mensajes son:
El esquema trabaja de la siguiente manera:
A estas condiciones se les denomina condiciones de cero pérdida
de celdas.
Una de las deficiencias de los anteriores esquemas basados en créditos ha sido la reservación de memoria por conexión. Esto ha hecho que los costos aumenten drásticamente al implementar esquemas basados en créditos en conmutadores que manejen una gran cantidad de VCs por enlace, debido a los requerimientos de memoria.
El QFC prevé la posibilidad de poder configurar de manera estática
ó dinámica el manejo de la memoria ABR en el conmutador,
logrando así proporcionar soluciones a bajo costo.
Llamaremos Buffer Sharing a la cualidad de poder compartir la memoria
reservada entre las conexiones. En QFC se definen principalmente dos modelos
de manejo de memoria: Sin Buffer Sharing y con Buffer Sharing.
QFC sin Buffer Sharing: Este representa el modelo de manejo de memoria estático, donde cada conexión dispone de Limitvc celdas disponibles en memoria en todo momento, ya que ese espacio existe y se encuentra reservado y ninguna otra conexión podrá hacer uso de él. Típicamente se dice que no existe Buffer Sharing cuando:
Esto resulta muy conveniente si sabemos de antemano que el número de VCs que maneja el conmutador es pequeño.
QFC con Buffer Sharing: Cuando el número de VCs es muy grande (por ejemplo: 1000VCs) es posible que la cantidad de memoria que QFC deba reservar sea muy alta y resulte bastante costoso implementar este esquema en determinados ambientes (ejem: WAN). Buffer Sharing prevé estos casos y, basándose en que las conexiones nunca consumen la longitud total de su cola, permite que las conexiones compartan la utilización de la memoria de manera dinámica. Se dice que existe Buffer Sharing cuando:
Para entender esto de una forma más clara, refirámonos
a las siguientes gráficas:
Véase el cuadro externo con línea gruesa como la cantidad
de memoria reservada para el enlace (Limit_link) y a los cuadros pequeños
de línea delgada como la cantidad de memoria reservada para la conexión
[i]. Es el esquema de la izquierda, si el número de conexiones aumenta,
limit_link deberá aumentar también. En cambio si aplicamos
Buffer Sharing, si el número de conexiones aumenta, podemos mantener
limit_link fijo aumentando el factor de compartición, reduciendo
así los costos.
Si se sabe que para garantizar la utilización del enlace en
100%, debíamos reservar en el conmutador:
Utilizando Buffer Sharing podemos disminuir la cantidad de memoria
de la siguiente forma: