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.
Características básicas del HDLC
HDLC define tres tipos de estaciones, dos configuraciones del enlace y tres modos de operación para la transferencia de los datos.
Los tres tipos de estaciones son:
Estación primaria: se caracteriza porque tiene la responsabilidad de controlar el funcionamiento del enlace. Las tramas generadas por la primaria se denominan órdenes.
Estación secundaria: funciona bajo el control de la estación primaria. Las tramas generadas por la estación secundaria se denominan respuestas. La primaria establece un enlace lógico independiente para cada una de las secundarias presentes en la línea.
Estación combinada: es una mezcla entre las características de las primarias y las secundarias. Una estación de este tipo puede generar tanto órdenes como respuestas.
Las dos posibles configuraciones del enlace son:
Configuración no balanceada: está formada por una estación primaria y una o más secundarias. Permite transmisión full-duplex y semi-duplex Configuración balanceada: consiste en dos estaciones combinadas. Permite igualmente transmisión full-duplex y semi-duplex.
Los tres modos de transferencia de datos son:
Modo de respuesta normal (NRM, Normal Response Mode): se utiliza en la configuración no balanceada. La estación primaria puede iniciar la transferencia de datos a la secundaria, pero la secundaria solo puede transmitir datos usando respuestas a las órdenes emitidas por la primaria. En este modo no se inician las transmisiones en la estación secundaria a menos que se solicite. En este modo se utiliza en líneas multipunto, una cantidad de terminales están conectados a la computadora principal (host). La computadora encuentra a cada terminal y les solicita que envíen sus datos.
Modo balanceado asíncrono (ABM, Asynchronous Balanced Mode): se utiliza en la configuración balanceada. En este modo cualquier estación combinada podrá iniciar la transmisión sin necesidad de recibir permiso por parte de la otra estación combinada. Cualquiera de las estaciones puede iniciar las transmisiones sin esperar el permiso de la otra. Es más eficiente para los enlaces full dúplex; este modo trabaja en el nivel 2 (nivel enlace).
Modo de respuesta asíncrono (ARM, Asynchronous Response Mode): se utiliza en la configuración no balanceada. La estación secundaria puede iniciar la transmisión sin tener permiso explícito por parte de la primaria. La estación primaria sigue teniendo la responsabilidad del funcionamiento de la línea, incluyendo la iniciación, la recuperación de errores, y la desconexión lógica. Una estación secundaria en este modo puede iniciar las transmisiones sin permiso de la secundaria, pero la primaria aún retiene la responsabilidad de la línea, incluyendo la inicialización, recuperación de errores y la desconexión lógica.
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.
Estructura 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
01101111011111011111100
HDLC lo modificara de esta manera
0110111101111100111110100
FlagDirecciónControlInformaciónFCSFlag (comienzo de la trama siguiente)8 bits8 bits8 o 16 bitsLongitud variable, 0 o más bits, múltiplos de 8 16 bits8 bits
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):
I:Información:
12-456-80N(S)P/FN(R)
N(S): Número de secuencia enviada.
N(R): Número de secuencia recibida.
P/F: Bit de Sondeo/Final ("Poll/Final")
S:Supervisión:
1-23-456-810 SP/FN(R)
S: bits para las tramas de supervisión (se explicará más adelante).
No numeradas:
1-23-456-811MP/FM
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):
00RR (Receive Ready)01REJ (Reject)10RNR (Receive Not Ready)11SREJ (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ÓDIGOORDENRESPUESTA00001SNRM11011SNRME11000SARMDM11010SARME11100SABM11110SABME00000UIUI00110 UA00010DISCRD10000SIMRIM00100UP11001RSET11101XIDXID10001 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.
Campo de Direcció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.
Campo de control
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 control utiliza tres formatos diferentes, según el tipo de trama HDLC que se use:
a) XXXXXXXO - Trama de Información (I)
Las tramas I transportan información de capa superior y determinada información de control. Esta trama envía y recibe números de secuencia, y el bit de sondeo final (P/F) realiza el control del flujo y de errores.
Contiene el campo de control, las cuentas de las tramas transmitidas (N[s]) y las tramas recibidas. Estas cuentas son:
Ns: Cuenta la secuencia de tramas transmitidas (send). Nr: Da el número (Ns) de la trama que la estación que transmite espera recibir.
b) XXXXXX01 - Trama de Supervisión (S)
Las tramas S proporcionan información de control. Las tramas S pueden solicitar y suspender la transmisión, informar sobre el estado y confirmar la recepción de las tramas I. Las tramas S no tienen un campo de información.
c) XXXXXX11 - Trama No Numerada (U)