El control de enlace de datos de alto nivel (HDLC) es un protocolo de comunicación utilizado para transmitir datos entre dispositivos de telecomunicaciones y redes . Desarrollado por la Organización Internacional de Normalización (ISO), se define en la norma ISO/IEC 13239:2002.
HDLC garantiza una transferencia de datos confiable, lo que permite que un dispositivo comprenda los datos enviados por otro. Puede funcionar con o sin una conexión continua entre dispositivos, lo que lo hace versátil para diversas configuraciones de red.
Originalmente, HDLC se utilizaba en redes multidispositivo, donde un dispositivo actuaba como maestro y los demás como esclavos, a través de modos como el Modo de Respuesta Normal (NRM) y el Modo de Respuesta Asíncrona (ARM). Estos modos ahora se utilizan raramente. Actualmente, HDLC se emplea principalmente en conexiones punto a punto , como entre enrutadores o interfaces de red , utilizando un modo llamado Modo Asíncrono Balanceado (ABM).
HDLC se basa en el protocolo SDLC de IBM , que es el protocolo de capa 2 de la arquitectura de redes de sistemas (SNA) de IBM. La ITU lo amplió y estandarizó como LAP (Link Access Procedure), mientras que ANSI denominó su versión, que es esencialmente idéntica, ADCCP .
La especificación HDLC no especifica la semántica completa de los campos de trama. Esto permite que se deriven de ella otros estándares totalmente compatibles, y desde entonces han aparecido derivados en innumerables estándares. Se adoptó en la pila de protocolos X.25 como LAPB , en el protocolo V.42 como LAPM , en la pila de protocolos Frame Relay como LAPF y en la pila de protocolos ISDN como LAPD.
Los estándares ISO originales para HDLC son los siguientes:
La norma actual, ISO/IEC 13239:2002, reemplazó todas estas especificaciones.
HDLC fue la inspiración para el protocolo IEEE 802.2 LLC , y es la base para el mecanismo de trama utilizado con PPP en líneas sincrónicas, como el que utilizan muchos servidores para conectarse a una WAN , más comúnmente Internet .
Se utiliza una versión similar como canal de control para las líneas telefónicas multicanal SONET y de portadora E (E1) . Cisco HDLC utiliza técnicas de tramado HDLC de bajo nivel, pero agrega un campo de protocolo al encabezado HDLC estándar.
Las tramas HDLC se pueden transmitir a través de enlaces de comunicación serial síncronos o asíncronos . Estos enlaces no tienen ningún mecanismo para marcar el comienzo o el final de una trama, por lo que se debe identificar el comienzo y el final de cada trama. Esto se hace utilizando una secuencia única de bits como delimitador de trama, o indicador , y codificando los datos para garantizar que la secuencia de indicadores nunca se vea dentro de una trama. Cada trama comienza y termina con un delimitador de trama. Un delimitador de trama al final de una trama también puede marcar el comienzo de la siguiente trama.
En los enlaces sincrónicos y asincrónicos, la secuencia de bandera es binaria "01111110" o hexadecimal 0x7E, pero los detalles son bastante diferentes.
Debido a que una secuencia de indicadores consta de seis bits 1 consecutivos, los demás datos se codifican para garantizar que nunca contengan más de cinco bits 1 seguidos. Esto se hace mediante el relleno de bits : cada vez que aparecen cinco bits 1 consecutivos en los datos transmitidos, los datos se pausan y se transmite un bit 0.
El dispositivo receptor sabe que esto se está haciendo y, después de ver cinco bits 1 seguidos, se elimina el siguiente bit 0 de los datos recibidos. Si, en cambio, el sexto bit es 1, se trata de una bandera (si el séptimo bit es 0) o de un error (si el séptimo bit es 1). En este último caso, se cancela el procedimiento de recepción de trama y se reinicia cuando se ve una bandera nuevamente.
Este relleno de bits tiene un segundo propósito: asegurar un número suficiente de transiciones de señal. En enlaces síncronos, los datos se codifican en NRZI , de modo que se transmite un bit 0 como un cambio en la señal en la línea y se envía un bit 1 como ningún cambio. De este modo, cada bit 0 proporciona una oportunidad para que un módem receptor sincronice su reloj a través de un bucle de enganche de fase . Si hay demasiados bits 1 seguidos, el receptor puede perder la cuenta. El relleno de bits proporciona un mínimo de una transición cada seis tiempos de bit durante la transmisión de datos y una transición cada siete tiempos de bit durante la transmisión de un indicador.
Cuando no se transmiten tramas en un enlace síncrono simple o dúplex completo, se transmite continuamente un delimitador de trama en el enlace. Esto genera una de dos formas de onda continuas, según el estado inicial:
La especificación HDLC permite que el bit 0 al final de un delimitador de trama se comparta con el inicio del siguiente delimitador de trama, es decir, "011111101111110". Algunos dispositivos no admiten esta opción.
En el caso de comunicaciones half-duplex o multi-drop, donde varios transmisores comparten una línea, un receptor en la línea verá bits 1 inactivos continuos en el período entre tramas cuando ningún transmisor está activo.
HDLC transmite bytes de datos con el bit menos significativo primero (no debe confundirse con el orden little-endian , que se refiere al orden de bytes dentro de un campo de varios bytes).
Al utilizar una comunicación serial asincrónica, como los puertos seriales RS-232 estándar , el relleno de bits de estilo sincrónico es inadecuado por varias razones:
En cambio, el enmarcado asincrónico utiliza "transparencia de octetos de control", también llamada " relleno de bytes " o "relleno de octetos". El octeto límite del marco es 01111110 (0x7E en notación hexadecimal ). Un " octeto de escape de control " tiene el valor 0x7D (secuencia de bits '10111110', ya que RS-232 transmite primero el bit menos significativo). Si aparece cualquiera de estos dos octetos en los datos transmitidos, se envía un octeto de escape, seguido del octeto de datos original con el bit 5 invertido. Por ejemplo, el byte 0x7E se transmitiría como 0x7D 0x5E ("10111110 01111010"). Otros valores de octetos reservados (como XON o XOFF ) se pueden escapar de la misma manera si es necesario.
La "secuencia de interrupción" 0x7D 0x7E finaliza un paquete con una secuencia de bytes incompleta, lo que obliga al receptor a detectar un error. Esto se puede utilizar para interrumpir la transmisión de paquetes sin posibilidad de que el receptor interprete el paquete parcial como válido.
El contenido de una trama HDLC se muestra en la siguiente tabla:
Tenga en cuenta que la bandera final de un cuadro puede ser (pero no tiene que ser) la bandera de inicio del siguiente cuadro.
Los datos generalmente se envían en múltiplos de 8 bits, pero solo algunas variantes lo requieren; otras, teóricamente, permiten alineaciones de datos en límites distintos a los de 8 bits.
La secuencia de verificación de trama (FCS) es una CRC-CCITT de 16 bits o una CRC- 32 de 32 bits calculada sobre los campos Dirección, Control e Información. Proporciona un medio por el cual el receptor puede detectar errores que pueden haberse inducido durante la transmisión de la trama, como bits perdidos, bits invertidos y bits extraños. Sin embargo, dado que los algoritmos utilizados para calcular la FCS son tales que la probabilidad de que ciertos tipos de errores de transmisión pasen desapercibidos aumenta con la longitud de los datos que se verifican en busca de errores, la FCS puede limitar implícitamente el tamaño práctico de la trama.
Si el cálculo del FCS del receptor no coincide con el del remitente, lo que indica que la trama contiene errores, el receptor puede enviar un paquete de confirmación negativa al remitente o no enviar nada. Después de recibir un paquete de confirmación negativa o de esperar un paquete de confirmación positiva, el remitente puede retransmitir la trama fallida.
El FCS se implementó porque muchos de los primeros enlaces de comunicación tenían una tasa de error de bits relativamente alta y el FCS se podía calcular fácilmente mediante circuitos o software simples y rápidos. En la actualidad, otros protocolos utilizan ampliamente esquemas de corrección de errores de avance más efectivos .
El control de enlace de datos sincrónico ( SDLC ) se diseñó originalmente para conectar una computadora con varios periféricos a través de un bus multipunto . El "modo de respuesta normal" original es un modo primario-secundario en el que la computadora (o terminal primaria ) le da permiso a cada periférico ( terminal secundaria ) para hablar por turno. Debido a que toda la comunicación es hacia o desde la terminal primaria, las tramas incluyen solo una dirección, la de la terminal secundaria; a la terminal primaria no se le asigna una dirección. Existe una distinción entre los comandos enviados por la terminal primaria a una secundaria y las respuestas enviadas por una secundaria a la primaria, pero esto no se refleja en la codificación; los comandos y las respuestas son indistinguibles excepto por la diferencia en la dirección en la que se transmiten.
El modo de respuesta normal permite compartir el enlace entre el secundario y el primario sin contención , ya que el primario debe dar permiso a los secundarios para transmitir uno a la vez. También permite el funcionamiento en enlaces de comunicación half-duplex , siempre que el primario sepa que no puede transmitir cuando ha permitido que un secundario lo haga.
El modo de respuesta asíncrono es una adición de HDLC [1] para su uso en enlaces full-duplex . Si bien conserva la distinción entre primario y secundario, permite que el secundario transmita en cualquier momento. Por lo tanto, debe haber algún otro mecanismo para garantizar que varios secundarios no intenten transmitir al mismo tiempo (o solo un secundario).
El modo balanceado asíncrono agrega el concepto de un terminal combinado que puede actuar como primario y secundario. Desafortunadamente, este modo de operación tiene algunas sutilezas de implementación. Si bien las tramas más comunes que se envían no tienen en cuenta si se encuentran en una trama de comando o de respuesta, algunas tramas esenciales sí lo tienen en cuenta (en particular, la mayoría de las tramas sin numerar y cualquier trama con el bit P/F activado), y el campo de dirección de una trama recibida debe examinarse para determinar si contiene un comando (la dirección recibida es la nuestra) o una respuesta (la dirección recibida es la de la otra terminal).
Esto significa que el campo de dirección no es opcional, incluso en enlaces punto a punto donde no es necesario para desambiguar el par con el que se está hablando. Algunas variantes de HDLC extienden el campo de dirección para incluir tanto las direcciones de origen como de destino, o un bit de comando/respuesta explícito.
Se pueden distinguir tres tipos fundamentales de tramas HDLC:
El formato general del campo de control es:
También existen formas extendidas (de dos bytes) de tramas I y S. Nuevamente, el bit menos significativo (más a la derecha en esta tabla) se envía primero.
Poll/Final es un bit único con dos nombres. Se denomina Poll cuando forma parte de un comando (establecido por la estación principal para obtener una respuesta de una estación secundaria) y Final cuando forma parte de una respuesta (establecido por la estación secundaria para indicar una respuesta o el final de la transmisión). En todos los demás casos, el bit está en blanco.
El bit se utiliza como un token que se pasa de ida y vuelta entre las estaciones. Solo debe existir un token a la vez. El secundario solo envía un Final cuando ha recibido un sondeo del primario. El primario solo envía un sondeo cuando ha recibido un Final del secundario o después de un tiempo de espera que indica que se ha perdido el bit.
Al operar como una estación combinada, es importante mantener la distinción entre los bits P y F, ya que puede haber dos ciclos de punto de control operando simultáneamente. El bit AP que llega en un comando desde la estación remota no responde a nuestro bit P; solo lo hace un bit F que llega en respuesta.
Tanto las tramas I como las S contienen un número de secuencia de recepción N(R). N(R) proporciona un acuse de recibo positivo de la recepción de tramas I desde el otro lado del enlace. Su valor es siempre el de la primera trama que aún no se ha recibido; reconoce que se han recibido todas las tramas con valores N(S) hasta N(R)−1 (módulo 8 o módulo 128) e indica el N(S) de la siguiente trama que espera recibir.
N(R) funciona de la misma manera ya sea que forme parte de un comando o de una respuesta. Una estación combinada solo tiene un espacio de número de secuencia.
Esto se incrementa para los fotogramas I sucesivos, módulo 8 o módulo 128. Dependiendo de la cantidad de bits en el número de secuencia, hasta 7 o 127 fotogramas I pueden estar esperando reconocimiento en cualquier momento.
Los marcos de información, o I-frames , transportan datos de usuario desde la capa de red. Además, también incluyen información de control de flujo y errores incorporada a los datos. Los subcampos del campo de control definen estas funciones.
El bit menos significativo (el primero que se transmite) define el tipo de trama. 0 significa una trama I. A excepción de la interpretación del campo P/F, no hay diferencia entre una trama I de comando y una trama I de respuesta; cuando P/F es 0, las dos formas son exactamente equivalentes.
Las tramas de supervisión, o "tramas S", se utilizan para el control de flujo y error cuando la transferencia de datos es imposible o inadecuada, como cuando una estación no tiene datos para enviar. Las tramas S en HDLC no tienen campos de información, aunque algunos protocolos derivados de HDLC utilizan campos de información para el "rechazo multiselectivo".
El campo de control de trama S incluye un "10" inicial que indica que se trata de una trama S. A continuación, se incluye un tipo de 2 bits, un bit de sondeo/final y un número de secuencia de 3 bits (o un campo de relleno de 4 bits seguido de un número de secuencia de 7 bits).
Los primeros 2 bits (menos significativos) significan que se trata de una trama S. Todas las tramas S incluyen un bit P/F y un número de secuencia de recepción, como se describió anteriormente. A excepción de la interpretación del campo P/F, no existe diferencia entre una trama S de comando y una trama S de respuesta; cuando P/F es 0, las dos formas son exactamente equivalentes.
Los marcos no numerados, o U-frames , se utilizan principalmente para la gestión de enlaces, aunque algunos se utilizan para transferir datos de usuario. Intercambian información de control y gestión de sesiones entre dispositivos conectados, y algunos U-frames contienen un campo de información, utilizado para información de gestión del sistema o datos de usuario. Los primeros 2 bits (11) significan que es un U-frame. Los cinco bits de tipo (2 antes del bit P/F y 3 bits después del bit P/F) pueden crear 32 tipos diferentes de U-frame. En algunos casos, la misma codificación se utiliza para diferentes cosas como un comando y una respuesta.
Los distintos modos se describen en § Configuraciones de enlaces. Brevemente, hay dos modos no operativos (modo de inicialización y modo desconectado) y tres modos operativos (respuesta normal, respuesta asincrónica y modos asincrónicos equilibrados) con números de secuencia de 3 o 7 bits (extendido).
Estos marcos pueden utilizarse como parte de la transferencia normal de información.
Hay varios marcos U que no son parte de HDLC, pero están definidos en otros estándares relacionados.
Las configuraciones de enlace se pueden clasificar como:
Las tres configuraciones de enlace son:
Una configuración de enlace adicional es el modo Desconectado . Este es el modo en el que se encuentra una estación secundaria antes de que la estación primaria la inicialice o cuando se la desconecta explícitamente. En este modo, la estación secundaria responde a casi todos los cuadros, excepto a un comando de configuración de modo, con una respuesta de "Modo Desconectado". El propósito de este modo es permitir que la estación primaria detecte de manera confiable que una estación secundaria se apaga o se reinicia de otra manera.
El conjunto mínimo necesario para su funcionamiento es:
El módulo HDLC del otro extremo transmite una trama (UA) cuando se acepta la solicitud. Si se rechaza la solicitud, envía una trama en modo de desconexión (DM).
Los marcos no numerados se identifican porque los dos bits inferiores son 1. Con el indicador P/F, quedan 5 bits como tipo de marco. Aunque se utilizan menos de 32 valores, algunos tipos tienen significados diferentes según la dirección en la que se envían: como comando o como respuesta. La relación entre el comando DISC (desconectar) y la respuesta RD (solicitud de desconexión) parece bastante clara, pero la razón para hacer que el comando SARM sea numéricamente igual a la respuesta DM es oscura.
Los marcos UI, UIH, XID y TEST contienen una carga útil y se pueden utilizar como comandos y respuestas. El comando SM y la respuesta FRMR también contienen una carga útil.
{{cite book}}
: Mantenimiento de CS1: ubicación ( enlace )