Tal vez el servicio más importante que provee X.25 es la multiplexación. Un DTE puede establecer hasta 4095 circuitos virtuales simultáneos con otros DTEs empleando un único enlace físico DTE/DCE. El DTE internamente puede asignar estos circuitos de la manera que le resulta más conveniente. Los circuitos virtuales individuales podrían estar asociados a aplicaciones, procesos o terminales, por ejemplo. El enlace DTE/DCE realiza la multiplexación full-duplex. Es decir, en todo momento, un paquete asociado con un circuito virtual dado se puede transmitir en cualquier dirección.
Número |
Categoría |
Asignación |
---|---|---|
0 |
Reservado | |
1 ... i |
Circuitos Virtuales Permanentes | Fijado en el momento de la suscripción |
i+1 … i+n |
Circuitos Unidireccionales Entrantes | Asignado por el DCE |
j+1 … j+n |
Circuitos Virtuales Bidireccionales | Asignado por el DCE Asignado por el DTE |
k .. 4095 |
Circuitos Unidireccionales Salientes | Asignado por el DTE |
Tabla 2. Distribución de canales lógicos según el ITU-T
Para poder determinar cuales paquetes corresponden a cada circuito virtual, cada paquete contiene un número de circuito virtual de 12-bits. La asignación de los números de circuito virtual sigue la convención descripta en la tabla 2. El número cero siempre se reserva para paquetes de diagnóstico comunes a todos los circuitos virtuales. Cuatro categorías de circuitos virtuales se asignan a rangos contiguos de números. Los circuitos virtuales permanentes se asignan a números que empiezan en 1. La siguiente categoría es la de llamadas virtuales unidireccionales entrantes.
Esto significa que sólo las llamadas entrantes provenientes de la red se podrán asignar a estos números; no obstante, el circuito virtual es bidireccional (full-duplex). Cuando llega una solicitud de llamada, el DCE selecciona un número sin utilizar de esta categoría.
La categoría de las llamadas virtuales unidireccionales salientes son aquéllas iniciadas por el DTE. En este caso, el DTE selecciona un número sin utilizar de los asignados a este tipo de llamadas.
Esta separación en categorías tiene por finalidad evitar la selección simultánea del mismo número para dos circuitos virtuales diferentes por parte del DTE y del DCE.
La categoría de las llamadas virtuales bidireccionales está disponible para la asignación compartida por el DTE y el DCE.
Control de flujo y control de errores
El control de flujo y el control de errores en el nivel de paquetes de X.25 es virtualmente idéntico tanto en su formato como en su procedimiento al control de flujo utilizado por HDLC. Se emplea un protocolo de ventana deslizante. Cada paquete de datos incluye un número de secuencia de envío, P(S), y un número de secuencia de recibido, P(R). Por default, se emplean números de secuencia de 3-bits. Opcionalmente, el DTE puede solicitar, a través del mecanismo de facilidad del usuario, el uso de números de secuencia de 7-bits o de 15-bits.
El valor de P(S) lo asigna el DTE en todos los paquetes salientes asociados a cada circuito virtual; esto es, el P(S) de cada paquete de datos nuevo asociado a un circuito virtual es mayor en 1 que el del paquete precedente sobre el mismo circuito virtual, módulo 8 (o módulo 128 o módulo 32768).
P(R) contiene el número del siguiente paquete esperado desde el otro extremo de un circuito virtual; de esta manera se implementa un mecanismo de asentimientos embebidos (piggybacked acknowledgment). Si uno de los extremos no tiene datos para transmitir, puede asentir los paquetes entrantes utilizando los paquetes de control RR (Receive Ready) y RNR (Receive not Ready), con el mismo significado que en HDLC. El tamaño de la ventana default es 2, pero puede establecerse hasta un valor 7 para el caso de números de secuencia de 3-bits, 127 para el caso de números de secuencia de 7-bits, y 32767 para el caso de números de secuencia de 15-bits.
Los asentimientos (en la forma del campo P(R) de un paquete de datos, RR o RNR) y, en consecuencia el control de flujo, pueden tener significado local o extremo-a-extremo, según como se encuentre fijado el bit D. Cuando D=0 (el caso usual), el asentimiento posee significado local, entre el DTE y la red. Lo utiliza el DCE local y/o la red para asentir los paquetes y controlar el flujo proveniente desde el DTE hacia la red. Cuando D=1, los asentimientos provienen desde el DTE remoto.
El esquema de control de errores es ARQ N-vuelta-atrás. Un asentimiento negativo tiene la forma de un paquete de control REJ (Reject). Si un nodo recibe un asentimiento negativo, deberá retransmitir el paquete especificado y todos los paquetes subsiguientes.
Reset y Restart
X.25 provee dos facilidades para la recuperación de condiciones de error. La facilidad Reset se utiliza para reinicializar un circuito virtual. Esto significa que los números de secuencia en ambos extremos se ponen en cero. Cualquier paquete de datos o interrupción que se encuentre en tránsito, se pierde. Le corresponde a un protocolo de capa superior la recuperación de estos paquetes que se pierden. Un Reset se puede disparar debido a un cierto número de condiciones de error, incluyendo la pérdida de un paquete, un error en el número de secuencia, congestión, o pérdida de un circuito virtual interno de la red. En este último caso, los dos DCEs deben reconstruir el circuito virtual internamente para soportar el circuito virtual externo DTE-DTE. El DTE o el DCE pueden iniciar un Reset con un paquete Reset Request o Reset Indication. El receptor responde con un Reset Confirmation. Independientemente de quién inicie el Reset, el DCE involucrado es el responsable de informarle al otro extremo.
Una condición de error más seria requiere de un Restart. El envío de un paquete Restart Request es equivalente al envío de un Clear Request por todas las llamadas virtuales y un Reset Request por todas las llamadas permanentes. Nuevamente, o el DTE o el DCE pueden iniciar la acción. Un ejemplo de una condición de Restart es la pérdida temporaria del acceso a la red.