# Dual-Queue Dual-Bus

La Bus Dual de Cola Distribuida, o más bien conocida por su acrónimo, en inglés (Distributed-queue dual-bus), es un sistema de comunicación informático de red multi-acceso, que se apoya en las comunicaciones integradas utilizando un bus dual y organizando la información solicitada mediante una cola distribuida, proporcionando de esta manera, el acceso a las redes de área local (LAN) o área metropolitana (MAN).

## Origen del Bus dual de cola distribuido

A principios de 1980, el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE), estableció el denominado Comité 802, cuyo objetivo era desarrollar estándares para las redes informáticas de comunicación. Inicialmente se desarrolló el QSPX (Intercambio Síncrono de Colas de Paquetes) desarrollado por la Universidad de Western (Australia) y permitía una distribución rápida y eficiente de paquetes. Posteriormente esta Universidad se vinculó comercialmente con Telecom Australia.
    El QPSX fue sometido a juicio por la IEEE y fue aplicado el estándar 802.6. Posteriormente la IEEE sugirió una denominación distinta al sistema, remplazando de esta manera su nombre: DQDB (Bus Dual de Cola Distribuida).
Se dieron cuenta, durante un debate sobre sus características, que esta tecnología permitía manejar velocidades de más de 20MBps. Esto implicaba que para poder utilizar ese estándar debían de consultar con la ANSI (Instituto Nacional Estadounidense de Estándares), pero la IEEE no lo hizo, la ANSI se sintió indispuesta. Lo siguiente fue que empresas europeas como Alcatel N.V (Paris) y Siemenx Aktiengesellschaft (Múnich), se apropiaron de una extensa área geográfica utilizando tecnologías basadas en QSPX. Los americanos, líderes en el campo de desarrollo tecnológico del momento, decidieron ante este hecho tomar otros rumbos para el diseño de MAN. En 1990, Telecom comienza a experimentar comercialmente con las DQDB, pero no es hasta 1992 cuando abre su servicio de cara al público. Este servicio se comercializó con el nombre de FASTPAC2 (2MBps) y FASTPAC10 (10MBps bajo fibra óptica); además este sistema fue utilizado posteriormente por un conjunto de ciudades europeas.

## Arquitectura de una DQDB

Una DQDB se compone de dos líneas de bus, con las estaciones unidas a ambos y de un generador de segmentación al final de cada bus. Las conexiones son normalmente punto por punto (Point-to-Point). El funcionamiento de los buses en paralelo permite el transporte de los segmentos generados, para viajar a través de las estaciones en direcciones opuestas. Ambos buses tienen un número constante de 'slots' que circulan por ellas. Un 'slot' se copia de un bus a otro.
El acceso DQDB, se compone de los componentes básicos de la red SMDS:
* Equipo portador: un switch en la red SMDS, opera como una estación en el bus.
* CPE: uno o más dispositivos CPE, funcionan como estaciones en el bus.
* SNI: actúa como la interfaz entre el equipo portador, y el CPE.
Una SMDS accede típicamente, con una configuración de CPE-simple o de CPE-múltiple. Una CPE-simple, consiste en un switch en la res SMDS del equipo portador, y una estación CPE en el equipo del solicitante. Las CPE-simples de las configuraciones DQDB, crean dos nodos en la sub-red DQDB. La comunicación se produce únicamente entre el switch, y uno de los dispositivos CPE a través de la interfaz SNI. No hay contención en el bus, debido a que ninguno de los demás dispositivos CPE intentan acceder.
Otro camino a seguir en las configuraciones de DQDB, es operar con una configuración de cola distribuida en cada nodo. Esto se hace utilizando un contador, (RC - Request Counter), que registra los nodos están esperando transmitir delante de un nodo en la cola. Dentro de cada cola se identifican los nodos upstream ( relativos al flijo de celdas y de 'slots') de este nodo. La cuenta de nodos en espera, es incrementada contando cualquier bit BUSY del sistema que pasa por los 'slots' en el bus. La cuenta se ve decrementada, considerando cualquier bits PETICIÓN del sistema en el otro bus.
Para este nodo, consideramos lo que sucede cuando se desee transmitir desde uno de los bus. En primer lugar, el bus espera un 'slot' que circula por el bus en paralelo que tenga bit PETICIÓN, que entonces fija para indicar que está esperando para transmitir.Entonces transfire el valor del RC al (DC - Down Counter).El DC ahora contiene el número de nodos, que precede a este nodo en la cola. El DC es decrementado por los 'slots' cercanos por los bits BUSY fijados, indicando los slots/celdas utilizados por otros nodos que estén a continuación en la cola. Cuando la DC llega a 0, es cuando este nodo puede transmitir por el bus.El procedimiento es igual en caso contrario.

## Estructura de Datos

Una Celda DQDB difiere de una ATM en su header (cabecera) y su carga útil. En la cabecera de la DQDB no hay Identificador Virtual de la Ruta (VPI) - Virtual Path Identifier, y el Identificador Virtual del Canal (VCI) - Virtual Channel Identifier tiene 4 bits adicionales. Los primeros 8 bits de la cabecera de la DQDB forman un Campo de Control de Acceso (ACF) - Access Control Field,(en las ATM esto corresponde a los primeros 8 bits de su cabecera).También los 4 bits siguientes (los 4 bits de la cabecera de una ATM), corresponden a los 4 primeros bits de su VCI.
Igualmente, la parte referente a la carga útil está estructurada de la siguiente forma:
* Segment Type (ST - Tipo de Segmento) : identifica a la celda como una de las siguientes opciones:
** segmento simple: solamente este segmento (no se requiere ninguna fragmentación de la MAC).
** primer segmento: primera celda de una MAC segmentada.
** segmento intermedio: las celdas intermedias de la MAC segmentada.
** segmento final: la última celda de la MAC segmentada.
* Message Identiffier (MID - Identificador de Mensaje) : el identificador del mensaje, es el mismo para todas las celdas de la MAC fragmentada. Esto permite la identificación de segmentos intermedios.
* Información: contenido de la MAC segmentada.
* Length (LEN - Longitud): Longitud del campo de Información.
* CRC: cubre toda la carga útil de la celda.
La cabecera de la celda, contiene la información siguiente:
* Access Control Field (ACF - Campo de Control de Acceso): está contiene los Bits BUSY y de PETICIÓN, que se utilizan en la operación del mecanismo QSPX. El bit BUSY indica que el 'slot' está funcionando, o está en uso, mientras que el bit de PETICIÓN es fijado en un 'slot 'por un nodo que esté operando para transmitir.
* Virtual Channel Identifier (VCI - Identificador Virtual del Canal): ésta no se utiliza en una MAN dQDB, puesto que no hay conexiones lógicas, las cuaĺes requieren multiplexación; los campos ST y MID en la carga útil se utilizan en su lugar.En una Lan dqdb con un UNI privado, existe la posibilidad de que las aplicaciones hagan uso de este campo.
* Payload Tyoe (PT - Tipo de Carga Útil): igual que en las ATM.
* Cell Loss Priority (CLP - Prioridad de pérdida de Celda): iguales que en las ATM.
* Header Error Control (HEC - Control de Error en la Cabecera): CRC para la cabecera.

## Operaciones efectuadas por una DQDB

En las DQDB, el Control de Acceso al Medio (MAC) es un algoritmo desarrollado por Robert Newman en su tesis de PhD en los años 80 en la University of Western Australia. Para apreciar la innovación que supuso la creación de este algoritmo MAC, debemos compararlo con la perspectiva que ofrecían los protocolos de las LAN (Local Area Network) de esa época, que se habían basado en la difusión (Broadcast) tales como la Ethernet IEEE 802.3, o con topología en anillo como el token-ring IEEE 802.5, o las FDDI. El DQDB se puede pensar como dos token-rings, uno de ellos lleva los datos alrededor del anillo. El anillo está dividido en dos nodos, y que supone una ventaja si se produce alguna rotura en alguna parte del anillo, ya que el anillo se puede cerrar por la rotura para quedar como un anillo con una sola rotura nuevamente. Esto proporciona relativa confiabilidad la cual es muy importante en las Redes de Área Metropolitana (MAN), dónde las reparaciones pueden provocar que ciertas LAN queden inaccesibles.
El estándar IEEE 802.6 (DQDB) fue desarrollado mientras que la ATM (ISDN de Banda Ancha) todavía estaba en un desarrollo temprano, pero sin embargo existe una gran similitud entre ambos estándares ya que por muchos es considerado que la DQDB es la precursora de la tecnología ATM. Las celdas de una ATM y los marcos de DQDB están en armonía, ya que ambas colocaron un marco de 48 bytes con una cabecera de 5 bytes.
En el algoritmo DQDB, una cola distribuida fue puesta en ejecución, comunicando el estado de la cola a la cabecera. Cada nodo de una red DQDB mantiene un par de variables de estado que representan su posición en la cola distribuida, además de la propia longitud de la cola. Las cabeceras en el bus inverso comunican peticiones que son insertadas en la cola distribuida de modo que los nodos de upstream sepan que deben permitir a las celdas DQDB pasar al bus delantero. En definitiva, es un algoritmo notable para su gran simplicidad.