"High-level data link control" (HDLC)

Andr� Moreira ([email protected])
Professor Adjunto do Departamento de Engenharia Inform�tica do ISEP

O HDLC � uma especifica��o do n�vel 2 do MR-OSI com grande utiliza��o e que inclui diversas variantes, utiliza a transmiss�o s�ncrona de tramas, orientada por bit.

Existem tr�s tipos de n�s:

  • Prim�rios: controlam a liga��o e emitem comandos sob a forma de tramas
  • Secund�rios: est�o sob o controlo do n� prim�rio, emitindo as respostas aos comandos solicitados. Quando existe mais do que um n� secund�rio, o n� prim�rio mant�m uma liga��o l�gica independente para cada um.
  • Combinados: controla a liga��o, mas tamb�m emite respostas.

Se numa linha multiponto ou ponto a ponto existe um n� prim�rio e um ou mais secund�rios, a liga��o � n�o balanceada. Se numa liga��o ponto a ponto existem dois n�s combinados a liga��o � balanceada.

Numa liga��o balanceada qualquer dos n�s combinados pode iniciar uma transmiss�o, este modo de transmiss�o � designado por ABM (�Asynchronous balanced mode�).

Numa liga��o n�o balanceada o modo normal de funcionamento � NRM (�Normal Response Mode�), os n�s secund�rios s� podem transmitir quando solicitados pelo n� prim�rio.

Existe ainda um terceiro modo, raramente usado, que permite que numa liga��o n�o balanceada os n�s secund�rios tomem a iniciativa de transmitir, trata-se do ARM (�Asynchronous response mode�).

Tramas HDLC

Existe um �nico formato de trama que � usado tanto para transmiss�o de dados como informa��o de controlo:

Todas as tramas s�o delimitadas por �flags� de sincroniza��o de trama. Estas �flags� s�o constitu�das por 8 bits com o padr�o 01111110. Uma �nica �flag� pode ser usada para assinalar o fim de uma trama e inicio da seguinte.

Para evitar que os dados no interior da trama sejam confundidos com a �flag� que assinala o fim da trama utiliza-se o seguinte procedimento conhecido como �bit stuffing�:

  • Antes de emitir a trama � verificado se os dados cont�m sequ�ncias de mais do que 5 uns e a cada uma delas � adicionado (inserido a seguir) um bit zero.
  • No receptor, sempre que � detectada uma sequ�ncia de 5 uns, verifica-se o bit seguinte, se � zero trata-se de dados pelo que este bit � eliminado, se � um ent�o trata-se da �flag� de sincroniza��o de trama.

O endere�o � usado para identificar o n� secund�rio a que se destina o comando ou o n� secund�rio que emitiu a resposta, numa configura��o ponto-a-ponto n�o � necess�rio, mas existe sempre.

Normalmente um endere�o de 7 bits (127 n�s secund�rios) � suficiente, mas � poss�vel usar endere�os com qualquer n�mero de bits m�ltiplo de 7. Para cada octeto, se o oitavo bit � um, significa que n�o existem mais octetos de endere�o, se � zero o endere�o continua. O octeto 11111111 � reservado para �broadcast� permitindo ao n� prim�rio enviar uma trama para todos os secund�rios.

O campo de controlo come�a com dois bits que identificam o tipo de trama. Existem tr�s tipos de trama e a parte restante deste campo � diferente para cada um deles. Os tr�s tipos de trama s�o:

  • �Information Frames� (I-Frames) destinam-se a transportar dados e podem ainda ser usados para ARQ e controlo de fluxo (�piggybacking�).
  • �Supervisory Frames� (S-Frames), quando n�o � usado o �piggybacking� s�o necess�rias tramas deste tipo para controlo de erros e fluxo.
  • �Unnumbered Frames� (U-Frames), tal como o seu nome indica, e ao contr�rio das anteriores, estas tramas n�o possuem n�mero de sequ�ncia. Os �U-frames� s�o usados para fun��es de controlo diversas, tais como: altera��o do modo de funcionamento dos n�s;

O esquema seguinte apresenta a constitui��o do campo de controlo para os v�rios tipos de "trama":

O bits assinalado com P/F (�Poll/Final�) tem diversas fun��es conforme o tipo de trama, e de acordo com o modo de funcionamento da liga��o. Por exemplo numa trama I em modo normal de resposta (NRM), o n� prim�rio coloca este bit a 1 para permitir ao n� secund�rio responder e o n� secund�rio coloca-o a 1 para indicar que se trata da ultima trama da resposta.

As tramas I e S podem ter o campo de controlo expandido para 16 bits, isto permite aumentar os n�meros de sequ�ncia de 3 para 7 bits. A comuta��o entre control de 8 ou 16 bits � realizada com fun��es U.

O campo de dados s� existe nas tramas I e, em alguns casos, nas tramas U. Cont�m os dados a transmitir ao n� destinat�rio, embora no �standard� n�o exista comprimento m�ximo definido, cada implementa��o particular imp�e limita��es.

O FCS de 16 bits corresponde ao CRT-CCITT, no entanto, quando tal se justifica, certas implementa��es podem usar o CRC-32, dando origem a um FCS de 32 bits.

Opera��o do HDLC

As transferencias de dados baseiam-se nas tramas-I, cada trama cont�m um n�mero de sequ�ncia de emiss�o, e um n�mero de sequ�ncia de recep��o. O n�mero de sequ�ncia de recep��o funciona como confirma��o de recep��o de tramas anteriormente enviadas em sentido inverso (�piggybackind�). Trata-se do n�mero de sequ�ncia da trama que � esperada a seguir, o tamanho m�ximo da janela pode variar entre 7 e 127.

Embora as tramas I possam por si controlar o fluxo e os erros, nem sempre isso � adequado (pode n�o existir uma trama I pronta a enviar, para transportar o ACK), neste caso usam-se tramas S.

As tramas S permitem a implementa��o de ARQ em modo �stop & wait�, �go-back-n� ou �selective-repeat�, para este efeito est�o definidos os seguintes comandos:

C�digo no Campo de Control (Fun��o S) Comando-Fun��o Descri��o
00 RR �Receiver Ready�, � um ACK que indica que o receptor se encontra pronto a receber mais tramas (�stop & wait�).
10 RNR �Receiver Not Ready�, � um ACK que indica que o receptor n�o se encontra pronto a receber mais tramas (�stop & wait�).
01 REJ �Reject�, � um NAK do modo �go-back-n�
11 SREJ �Selective Reject�, � um NAK do modo �selective-repeat�

O n�mero de trama ao qual se aplica o comando � indicado no campo �N� de Sequ�ncia de Recep��o� da trama S.

As fun��es proporcionadas pelas tramas U s�o bastante mais extensas e diversificadas:

Comando(C)
Resposta (R)
Descri��o
SNRM (C) �Set Normal Response Mode�, � enviado pelo n� prim�rio ao secund�rio indicando que deve entrar em modo de liga��o normal, com campo de controlo de 8 bits.
SNRME (C) �Set Normal Response Mode Extended�, id�ntico ao anterior, mas com campo de controlo de 16 bits.
SARM (C) �Set Asyncronous Response Mode�, id�ntico ao SNRM, para o modo ass�ncrono.
SARME (C) �Set Asyncronous Response Mode Extended�, id�ntico ao SNRME, para o modo ass�ncrono.
SABM (C) �Set Asyncronous Balanced Mode�, id�ntico ao SNRM, para o modo ass�ncrono balanceado.
SABME (C) �Set Asyncronous Balanced Mode Extended�, id�ntico ao SNRME, para o modo ass�ncrono balanceado.
SIM (C) �Set Initialization Mode�, � enviado pelo n� prim�rio ao secund�rio para que este inicie um procedimento de inicializa��o, durante a inicializa��o s�o enviados dados ao n� secund�rio usando tramas-U com campo de dados (UI).
DISC (C) �Disconnect�, informa o destinat�rio que a esta��o emissora deixar� de estar activa.
UA (R) �Unnumbered Acknowledgment�, indica a aceita��o do comando enviado.
DM (R) �Disconnected Mode�, resposta enviada sempre que outro n� envia um comando a indicar que o n� n�o est� em liga��o. Esta resposta � igualmente usada para indicar a n�o aceita��o de um comando.
RD (R) �Request Disconnect�, esta resposta � usada para pedir a quebra da liga��o estabelecida.
RIM (R) �Request Initialization Mode�, esta resposta � usada quando o n� n�o est� pronto e vai ser reinicializado.
UI (C/R) �Unnumbered Information�, usados para troca de informa��o entre n�s (status, etc).
UP (C) �Unnumbered Poll�, usado para pedir informa��es a n�s, a resposta ser� um UI.
RSET (C) �Reset�, este comando � usado para a recupera��o de erros graves (FRMR), indica que o n� reinicializou o seu n�mero de sequ�ncia de envio, o destinat�rio deve tamb�m reinicializar o seu n�mero de sequ�ncia de resposta.
XID (C/R) �Exchange Identification�, usado para a troca de informa��o sobre endere�os e caracter�sticas entre dois n�s.
TEST (C/R) �Test�, permite efectuar um teste da liga��o com outro n�, que deve responder o mais brevemente poss�vel.
FRMR (R) �Frame Reject�, indica que a trama recebida tem um erro que n�o pode ser recuperado por ARQ.

Os comandos SNRM, SARM e SABM s�o usados para estabelecer a liga��o l�gica, o n� que as recebe responde com UA ou DM conforme aceita ou n�o a liga��o.

O comando DISC � usado para quebrar a liga��o l�gica, o n� que o recebe responde com UA.

O protocolo HDLC � repleto de funcionalidade e serviu de base a diversas implementa��o, em algumas delas s�o implementa��es parciais, noutras a maior diferen�a est� na sua designa��o e outras aindas o HDLC apenas serviu de inspira��o:

  • ADCCP (Advanced data communication control procedure) - desenvolvido pelo ANSI, e largamente adoptado nos organismos estatais dos EUA, n�o tem qualquer diferen�a significativa relativamente ao que aqui foi descrito.
  • LAP-B (�Link access procedure - balanced�) - adoptado pelo CCITT na norma X.25.
  • SDLC (�Synchronous data link control�) - usado pela IBM, inclui algumas capacidades adicionais.
  • LLC (�Logical link control�) - usado na arquitectura IEEE 802 das redes locais.