ATM Asynchronous Transfer Mode. Estudiando una tecnología legacy
Aunque es una tecnología cada vez
más en desuso, lo que en la industria se denomina ‘legacy’, ATM (Asynchronous
Transfer Mode) es ampliamente estudiada en universidades y ciclos formativos y
de hecho de un trabajo para una asignatura surge la idea de escribir esta entrada. No obstante, no deja de
ser interesante el problema que resolvía en su momento y la solución técnica
queda.
ATM surge a principio de los ’90,
un momento en el que cada tipo de tráfico se cursaba por una red distinta dada
su distinta naturaleza. Así, el tráfico de voz y en tiempo real se ve
beneficiado por tecnologías de conmutación de circuitos dada su sensibilidad a
las variaciones de latencia (jitter) y a las pérdidas, así como su ancho de
banda predecible. Mientras tanto, el tráfico de datos más es tolerante a
retardo y pérdidas (esto es discutible como vimos en el artículo de TCP) y
puede tener muchas ráfagas y elevado e impredecible ancho de banda. Por lo
tanto, ATM es una red orientada a transportar todo tipo de tráfico, lo que
supone un coste mucho menor que tener una red dedicada a cada tráfico como
sucedía hasta entonces.
Modelo de referencia ATM
Uno de los elementos curiosos de
ATM es el modelo de referencia con varias capas y en forma tridimensional… ¡se
quedaría a gusto el que lo hizo! Aunque todos los elementos tienen su por qué,
los más relevantes y conocidos son las capas AAL (ATM Adaptation Layer) y ATM.
·
AAL. Básicamente es la capa que se encarga de
convertir paquetes o tramas de datos en celdas ATM (veremos después lo de las
celdas)
·
ATM. Esta capa es la más importante y define el
formato de las celdas, su encabezado, gestiona los circuitos virtuales, lleva a
cabo el control de congestión…
El tamaño importa: Celdas de 53 bytes
El uso de celdas es uno de los
elementos más característicos de ATM. Se trata de la unidad de transmisión de
datos sobre la que trabaja la tecnología y es siempre del mismo tamaño: 53
bytes. Esto confiere una serie de ventajas a ATM.
La primera de ellas es que al tratarse
siempre del mismo tamaño la información está siempre en las mismas posiciones,
lo que hace muy factible el uso de ASIC (Application Specific Integrated
Circuit) aumentando así el rendimiento en la conmutación al hacerla por
hardware frente a otras soluciones que realizan la conmutación a nivel de
software. Esto también facilita la sincronización en la comunicación, lo que
además se refuerza al estar continuamente emitiendo celdas aunque sea vacías.
La otra ventaja principal está
relacionada con el tipo de tráfico. Como mencionábamos antes, además de datos
la red ha de transportar voz, muy sensible a variación de latencia. El tamaño
de celda permite priorizar adecuadamente las celdas de voz frente a grandes
paquetes de otros tipos de tráfico. En la imagen inferior se aprecia este
concepto visualmente: mientras que en otros protocolos el paquete de voz ha de
esperar a que se transmitan los bloques de datos que le preceden y se encolaron
antes, en ATM el conmutador puede priorizar el paquete adecuadamente y sacarlo
antes a la red. Esto también permite aplicar QoS.
¿Qué quiere decir asíncrono?
El concepto de asíncrono se
refiere a la diferencia respecto a TDM, donde cada unidad de datos a
multiplexar va a tener asignado un slot de
tiempo invariable. En el caso de ATM la asignación de slots temporales a las celdas se realiza de forma dinámica mejorando
así el aprovechamiento del ancho de banda y aplicar calidad de servicio como
vimos antes. Al igual que en el caso anterior una imagen ayuda a entenderlo.
Las cabeceras de las celdas
Como en todas las tecnologías de
red no podía faltar el formato de las cabeceras. Dejo una ilustración con la cabecera
y cada uno de los campos, ya que lo único llamativo son VPI y VCI que los
explicaremos a continuación en la parte dedicada a los circuitos virtuales.
Circuitos virtuales. Qué son y cómo funcionan
Este es un tema que generalmente está explicado de una forma
sorprendentemente compleja en la mayoría de sitios, o al menos a mí me lo ha
parecido puede que por estar más habituado al mundo IP. Trataré de simplificar
la explicación para que sea sencilla de entender.
Empezaremos mirando solamente la operación un conmutador o
switch ATM para luego ver la comunicación extremo a extremo.
Como todo switch, tenemos una serie de puertos, en este caso
utilizaremos 4. Hasta aquí nada nuevo.
Switch ATM 1
Para conmutar el SW mirará su
tabla, que en ATM está formada por un una columna de entrada y otra de salida
con los datos de puerto y VPI. ¿Qué va a hacer esta tabla? Pues cada celda que
entre por el puerto 1 y cuyo valor en el campo VPI sea 10, la sacará por el
puerto 3 y le cambiará el valor de VPI a 31. ¿Qué pasará con la celda que
llegue al puerto 1 y con VPI=11? La respuesta es obvia.
Rx
|
Tx
|
||
Puerto
|
VPI
|
Puerto
|
VPI
|
1
|
10
|
3
|
31
|
1
|
11
|
4
|
41
|
Tabla SW ATM 1
Ahora sí, vamos a tomar una topología completa (no así las tablas de encaminamiento). Aquí vemos que la celda que habíamos enviado antes venía del Host A y sigue su camino virtual (VPI viene Virtual Path Indicator) hasta el Host B. La operación que realizará el SW 2 será la misma. Por lo tanto las operaciones serán:
- Host A.
- Celda VPI = 10
- SW 1
- Recibe la celda en puerto 1
- Cambia VPI = 31
- La envía por el puerto 3
- SW 2
- Recibe la celda en el puerto 1
- Cambia VPI = 231
- La envía por el puerto 3
- El Host B recibe la celda.
Sin embargo aquí nos está
faltando algo: no utilizamos el otro valor que vimos en la cabecera, VCI. El
VCI es el “Virtual Channel Indicator”. Si el “Virtual Path” es un circuito virtual
entre hosts, el “Virtual Channel” es una conexión virtual entre estos. Qué lío,
¿no? Podemos hacer un símil con un socket TCP/IP, donde utilizamos la misma IP
para conectarnos a una máquina pero distintos puertos para cada aplicación.
Pues aquí sucede lo mismo, el VP entre dos equipos es el mismo, pero dentro de
cada VP puede haber múltiples VCs para establecer distintas conexiones. Esto
simplifica enormemente las tablas de conmutación en cada uno de los SW, ya que un
solo VP puede transportar 65.536 VC.
Por lo tanto, realmente la
etiqueta VCI solamente se utiliza en los extremos de comunicación, del mismo
modo que los puertos TCP o UDP.
Aunque no la he utilizado en la
explicación, creo que esta imagen es bastante ilustrativa de la jerarquía en
todas estas conexiones:
Una cuestión que no me ha
terminado de quedar completamente clara es hasta qué punto se realiza el ‘swap’
de VCI en una operación similar a los VPI. Según las fuentes más teóricas (las
pongo al final), parece que sí se hace la operación ya que ambos campos se
consideran de ámbito local. Sin embargo, esto hace el proceso más ineficiente
al tener que mantener en los switches tablas con las equivalencias de VCIs y
llevar a cabo también esta operación en cada celda, aunque esta no debería ser
ya tan costosa al cambiarse el VPI. Pero no solo eso, sino que en alguna otra
fuente más práctica como esta de Juniper,
la operación es opcional. En cualquier caso, creo que queda claro el
funcionamiento en ambos casos.
Conclusión
ATM es una tecnología legacy pero
técnicamente no deja de ser interesante por el uso de celdas y las
implicaciones que esto tiene, como la posibilidad de utilizar hardware dedicado
o por el mecanismo de circuitos virtuales y la conmutación llevada a cabo.
Con esto doy por concluido el
tema de ATM. Aunque se puede profundizar mucho más, sobre todo en lo que se
refiere a la creación de circuitos, creo que como visión general es suficiente
y un mayor detalle sería para analizar algún aspecto específico. Espero que sea
de ayuda a quien lo lea J
Bibliografía
- ASYNCHRONOUS TRANSFER MODE. Link
- Asynchronous Transfer Mode Chapter 14 from Understanding Data Communications, 6th Edition, published by New Riders Publishing. Link.
- Wikipedia
- ATM Pocket Guide – Acterna Vol. 4. Link
- Redes de Computadoras. William Stallings
- Redes de Computadoras. Andrew Tanenbaum
- Configuring ATM Cell-Relay Pseudowire VPI/VCI Swapping. Link
Comentarios
Publicar un comentario