x
1

HDLC



HDLC (High-Level Data Link Control, control de enlace de datos de alto nivel) es un protocolo de comunicaciones de propósito general punto a punto, que opera a nivel de enlace de datos. Se basa en ISO 3309 e ISO 4335. Surge como una evolución del anterior SDLC. Proporciona recuperación de errores en caso de pérdida de paquetes de datos, fallos de secuencia y otros, por lo que ofrece una comunicación confiable entre el transmisor y el receptor.

De este protocolo derivan otros como LAPB, LAPF, LLC y PPP.

HDLC define tres tipos de estaciones, tres configuraciones del enlace y tres modos de operación para la transferencia de los datos.

Los tres tipos de estaciones son:

Las dos posibles configuraciones del enlace son:

Los tres modos de transferencia de datos son:

El NRM suele usarse en líneas con múltiples conexiones y en enlaces punto a punto, mientras que el ABM es el más utilizado de los tres modos; debido a que en ABM no se necesitan hacer sondeos, la utilización de los enlaces punto a punto con full-duplex es más eficiente con este modo. ARM solo se usa en casos muy particulares.

HDLC usa transmisión síncrona. Todos los intercambios se realizan a través de tramas, HDLC utiliza un formato único de tramas que es válido para todos los posibles intercambios: datos e información de control.

En la Figura se muestra la estructura de una trama HDLC. Al campo de delimitación, de dirección y de control, que preceden al campo de información se denominan cabecera. La FCS junto con el otro campo de delimitación final que está a continuación del campo de datos se denomina cola.

Los campos de delimitación están localizados en los dos extremos de la trama, y ambos corresponden a la siguiente combinación de bits 01111110. Se puede usar un único delimitador como final y comienzo de la siguiente trama simultáneamente. A ambos lados de la interfaz entre el usuario y la red, los receptores estarán continuamente intentando detectar esta secuencia para sincronizarse con el comienzo de la trama. Cuando se recibe una trama, la estación seguirá intentando detectar esa misma secuencia para determinar así el final de la trama. Como se usa la secuencia 01111110 en la delimitación de las tramas, es necesario el uso del procedimiento denominado inserción de bits. Por el cual, el emisor cuando deba enviar una cadena que contenga una secuencia de cinco bits en 1 insertará inmediatamente después del quinto 1 un 0. El receptor, tras la detección del delimitador de comienzo, monitorizará la cadena de bits recibida, de tal manera que cuando aparezca una combinación de cinco 1 seguidos, el sexto bit se examinará. Si dicho bit es 0, se eliminará sin más. Si el sexto bit es un 1 y el séptimo es un 0, la combinación se considera como un delimitador. Si los bits sexto y séptimo son ambos igual a 1 se interpreta como una indicación de cierre generada por el emisor.

Por ejemplo, si se quiere transmitir la siguiente secuencia

HDLC lo modificara de esta manera

A su vez en campo control puede tomar las siguientes codificaciones dependiendo del tipo de trama (información, supervisión y no numeradas que se verán más adelante):

N(S): Número de secuencia enviada.

N(R): Número de secuencia recibida.

P/F: Bit de Sondeo/Final ("Poll/Final")

S: bits para las tramas de supervisión (se explicará más adelante).


M: Bits para las tramas no numeradas.

Cada dato que se envía, es encapsulado en una trama HDLC, esto añadiéndole un header y una cola. El header contiene una dirección HDLC y un campo de control HDLC. La cola contiene un campo de CRC (ciclic redundancy check).

Cada trama es separada por un delimitador o bandera con valor hexadecimal 7E. Este flag o bandera se puede utilizar para identificar el inicio de la siguiente trama.

Existen tres tipos de trama (DL_PDU): trama de información que transportan los datos del usuario, de supervisión y de gestión (o no numeradas). El orden de inyección de las tramas en el medio de transmisión es LSB (primero el bit menos significativo).

Las tramas de supervisión se utilizan para el reconocimiento de tramas, control de flujo y control de errores (siempre que no sea posible hacerlo mediante las tramas de información). Existen cuatro subtramas identificadas por el campo S de campo de control (del tipo de supervisión):

00

RR (Receive Ready)

01

REJ (Reject)

10

RNR (Receive Not Ready)

11

SREJ (Selective Reject)

Ready to Receive: Reconocimiento Positivo: RR N reconoce las tramas hasta la N-1 e indica que la próxima trama que espera recibir es la N.

Si tiene el bit P (poll/sondeo) activado indica que la estación primaria está sondeando a la estación secundaria.

Si tiene el bit F activado y es después de una selección, indica que el secundario está listo para recibir datos del primario. Si no es después de una selección, la estación secundaria indica a la primaria que no tiene más tramas que transmitir. Normalmente la estación secundaria envía tramas de información hasta que se le acaban los datos y entonces envía una trama RR con F activado para indicar finalización.

Ready Not to Receive: Reconocimiento Positivo No Listo Para Recibir: RNR N Reconoce las tramas hasta la N-1 e indica que ahora mismo no puede recibir más tramas.

Si tiene el bit P activado sirve para seleccionar la estación secundaria que recibirá los datos, indicando que la estación primaria no va a recibir datos.

Si tiene el bit F activado sirve para que la estación secundaria indique a la estación primaria que no está listo para recibir datos.

Reject: Rechazo: REJ N Reconoce las tramas hasta la N-1 e indica que a partir de la trama N hay que retransmitir.

Selective Reject: Rechazo Selectivo: SREJ N Indica que la trama N no llegó correctamente y debe ser retransmitida.

Las órdenes que se pueden encontrar en las tramas de gestión son:

CÓDIGO

ORDEN

RESPUESTA

00001

SNRM

11011

SNRME

11000

SARM

DM

11010

SARME

11100

SABM

11110

SABME

00000

UI

UI

00110

UA

00010

DISC

RD

10000

SIM

RIM

00100

UP

11001

RSET

11101

XID

XID

10001

FRMR

Las órdenes SNRM, SNRME, SARM, SARME, SABM y SABME sirven para activar el modo en que se comunicarán las estaciones: NRM o modo de respuesta normal, ARM o modo de respuesta asíncrona y ABM o modo asíncrono equilibrado, con sus respectivas extensiones (NRME, SARME y SABME).

La orden RSET sirve para reiniciar la conexión y poner a cero los contadores y ventanas deslizantes de las tramas. La orden DISC sirve para desconectar la conexión.

El campo de dirección identifica a la estación secundaria que ha transmitido o que va a recibir la trama. Este campo no se usa en enlaces punto a punto. El mismo tiene normalmente 8 bits, puede usarse también un formato ampliado en el que la dirección tendrá un múltiplo de 7 bits. El bit menos significativo de cada octeto será respectivamente 1 o 0, si es o no el último octeto del campo de dirección. Los 7 bits restantes de cada octeto formarán la dirección propiamente dicha.

En HDLC se definen tres tipos de tramas, cada una con formato diferente para el campo de control. Las tramas de información (tramas-I) transportan los datos generados por el usuario. En estas tramas también se incluye información para el control ARQ de errores y de flujo. Las tramas de supervisión (tramas-S) proporcionan el mecanismo ARQ cuando la incorporación de las confirmaciones en las tramas-I no es factible. Las tramas no numeradas (Tramas-N) proporcionan funciones complementarias para controlar el enlace.

El primer o los dos primeros bits del campo de control se utilizan para identificar el tipo de trama. El resto de los bits se ubican en subcampos como se indica en la figura. 6. (c) y (d)

Todos los formatos posibles del HDLC contienen el bit sondeo/fin (P/F "poll/final"). Su utilización es dependiente del contexto. Normalmente en las tramas de órdenes se denomina bit P, y se fija a 1 para solicitar (sondear) una respuesta a la entidad HDLC par.

En las tramas de respuesta, el bit se denomina F, y se fija a un valor 1 para identificar a la trama tipo respuesta devuelta tras la recepción de una orden.

El campo de información solo está presente en las tramas-I y en algunas tramas N. Este campo puede contener cualquier secuencia de bits, con la única restricción que el número de bits sea igual a un múltiplo entero de 8. La longitud de este campo es variable y siempre será menor que un valor máximo predefinido.

La secuencia de comprobación de la trama (FCS, Frame Check Sequence) es un código para la detección de errores calculado a partir de los bits de la trama excluyendo los delimitadores.

El funcionamiento del HDLC implica tres fases. Primero, uno de los dos extremos inicia el enlace de datos, de tal manera que las tramas se puedan intercambiar de una forma ordenada. Durante esta fase, se pactan las opciones que se usarán en el intercambio posterior. Después de la iniciación, los dos extremos intercambian los datos generados por los usuarios así como información de control para llevar a cabo los procedimientos de control del flujo y de errores. Finalmente, uno de los dos extremos comunicará la finalización de la transmisión.

La iniciación la puede solicitar cualquiera de los dos extremos transmitiendo una de entre las seis órdenes previstas para fijar el modo. Esta orden sirve para tres objetivos: 1. Se avisa al otro extremo sobre la solicitud de la iniciación. 2. Se especifica cual de los tres modos (NRM, ABM, ARM) se está solicitando. 3. Se especifica si se van a utilizar números de secuencia de 3 o 7 bits.

Si el otro extremo acepta la solicitud, se informará al extremo sobre esta contingencia mediante la transmisión de una trama de confirmación no numerada (UA, unnumbered acknowledged). Si la solicitud se rechaza, se envía una trama de modo desconectado (DM, disconnected mode,). 32

Cuando la iniciación se haya solicitado y haya sido aceptada, entonces se habrá establecido la conexión lógica. A partir de entonces, ambos lados pueden comenzar a enviar datos mediante tramas-I, comenzando con el número de secuencia igual a 0. Los campos N(S) y N(R) de una trama-I contendrán los números de secuencia con los que se lleva a cabo el control del flujo y de errores. La secuencia de tramas-I se numerará secuencialmente módulo 8 o módulo 128, dependiendo de si se utilizan respectivamente 3 o 7 bits, utilizando el campo N(S). El campo N(R) se utiliza para la confirmación de las tramas-I recibidas; de esta forma se facilita que el módulo HDLC indique al otro extremo el número de trama-I que se espera recibir.

Las tramas-S también se usan para controlar el flujo y los errores. La trama receptor preparado (RR, receive ready) confirma una trama-I recibida, indicando a la vez la siguiente trama-I que se espera recibir. La RR se usa cuando no hay tráfico en el sentido contrario (tramas-I) en el que se puedan incluir las confirmaciones. La trama receptor no preparado (RNR, receive not ready) confirma una trama-I, como la hace la RR, pero a la vez solicita a la entidad situada al otro extremo del enlace que suspenda la transmisión de tramas-I. Cuando la entidad que envió la RNR este de nuevo preparada, enviará una RR. La trama REJ sirve para iniciar el procedimiento ARQ con vuelta-atrás-N. Con ella se indica que la última trama-I recibida se ha rechazado y solicita la retransmisión de todas las tramas-I a partir de la N(R) indicada en la trama REJ. La trama de rechazo selectivo (SREJ, selective reject) se usa para solicitar la retransmisión de una única trama.

Cualquiera de las dos entidades situadas a ambos lados del enlace pueden iniciar la desconexión; tanto por iniciativa propia (si es que ha habido algún tipo de fallo) como tras la petición cursada por capas superiores. HDLC lleva a cabo la desconexión transmitiendo una trama de desconexión (DISC, disconnect). El otro extremo podrá aceptar dicha desconexión devolviendo una trama UA e informando al usuario de la capa 3 sobre el cierre de la conexión. Se puede perder cualquier trama-I pendiente de confirmarse, en ese caso su recuperación es responsabilidad de las capas superiores.



Escribe un comentario o lo que quieras sobre HDLC (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!