4. Nivel de Enlace de Datos
- el nivel de enlace de datos se ubica inmediatamente encima
del nivel físico.
- define los protocolos que interactúan directamente
con los componentes físicos de la red, como son los cables
y conectores.
- controla el flujo de información y añade su
propio control de errores en los paquetes que envía a través
de los enlaces.
- los bridges o puentes operan a este nivel.
- el IEEE ha dividido el nivel de enlace en dos subniveles:
- control de acceso al medio MAC media access control.
- control de enlace lógico LLC logical link control.

- el subnivel MAC, el más bajo, define el método
de acceso al medio, que puede ser tanto por acceso múltiple
con detección de portadora y detección de colisiones
como de token ring o por medio de otra interfaz física
definida por el IEEE.
- el subnivel LLC proporciona una forma de pasar la información
entre diferentes tipos de red, reempaqueta los datos con nuevos
encabezados, ofreciendo así, la funcionalidad del nivel.
Problemas de diseño de la
capa de enlace
- la capa de enlace tiene que cumplir con un número de
funciones específicas como.
- la de proporcionar una interfaz de servicio muy bien definida
a la capa de red.
- la de determinar cómo los bits correspondientes a la
capa física están agrupados en frames o tramas
- la de ocuparse de los errores de transmisión.
- la de regular el flujo de frames o tramas, de tal manera
que los receptores lentos no se vean desbordados por los transmisores
rápidos.
- la de la administración del enlace en general.
Servicios suministrados a la capa
de red
- el principal servicio es el de transferir
datos de la capa de red de la máquina de origen, a la capa
de red de la máquina destino.
- la capa de enlace puede diseñarse para que pueda ofrecer
varios servicios.
- servicio sin conexión y sin confirmación
- servicio sin conexión y con confirmación
- servicio orientado a conexión.
servicio sin conexión y sin
confirmación
- la máquina origen transmite frames independientes a
la máquina destino sin que ésta proporcione una
confirmación.
- no se establece ninguna conexión previa.
- si el frame se pierde, no se realiza ningún intento
por recuperarla en este nivel.
- servicio conveniente cuando las tasas de errores son bajas
y la recuperación se deja a los niveles superiores.
- apropiado en casos de tráfico en tiempo real como el
de voz, en que un retraso en la llegada es peor que tener datos
erróneos.
servicio sin conexión y con
confirmación
- cada uno de los frames en confirmado en forma individual.
- si un frame no llega en un intervalo de tiempo especificado,
entonces se comienza su retransmisión.
- si la confirmación se pierde, el frame podría
recibirse duplicado.
servicio orientado a conexión.
- es el más sofisticado de los servicios.
- se debe establecer una conexión antes de comenzar la
transmisión.
- cada una de los frames se identifica con un número
y la capa de enlace garantiza que cada frame transmitido sea efectivamente
recibido, sólo una vez (sin duplicados) y en el orden correcto.
- las transferencias tienen 3 fases distintas:
- establecimiento de la conexión, los dos lados inicializan
variables y contadores necesarios para mantener el seguimiento
de los frames recibidos.
- la segunda fase es en la cual los frames se transmiten realmente.
- la tercera fase o de desconexión se encarga de liberar
la conexión, dejando libres a las variables, las memorias
temporales (buffers) así como otros recursos que se emplean
para mantener la conexión.
- la comunicación entre la capa de red y la capa de enlace
utiliza las primitivas de servicio de la OSI, que se verán
brevemente a continuación: solicitud, indicación,
respuesta y confirmación.
- solicitud para solicitar un servicio al nivel de enlace,
por ejemplo establecer o liberar una conexión, o transmitir
un frame.
- indicación para indicar al nivel de red que
ha ocurrido un evento, por ejemplo que la otra máquina
desea establecer o liberar una conexión, o avisarle que
un frame a llegado.
- respuesta para contestar a una indicación anterior
- confirmación para que el solicitante se entere
si la solicitud fue realizada con éxito y si no, la razón
por la cual no se llevó a cabo.

4.2 análisis de protocolos
protocolos de control de línea
- Función principal: Control de Errores
- Protocolo para control de Errores:

- Debe implementar mecanismos para
corregir los problemas ocasionados por el sistema de transmisión.
- Como el sistema de tx puede ser
usado por varios usuarios, no es conveniente que cada uno tenga
su protocolo de control de errores.
- Se le define a un nivel independiente
de los procesos usuarios del sistema de transporte (ahora confiable).
- Característica Principal:
Debe ser capaz de detectar errores en una secuencia arbitraria
de bits (un protocolo de mayor nivel es libre de usar cualquier
secuencia de bits).
- La manera usual de "hacer detectable"
los errores, es transmitir los bloques de datos, acompañados
por un "Cyclic Redundancy Check (CRC)".
- Este método involucra la
división del bloque de datos por una secuencia predefinida
de bits y transmitir el resto de la división como parte
del bloque de datos. El receptor ejecuta igual división
y chequea su resto con el recibido. Si el resto coincide, se supone
que el bloque recibido es correcto, si no, el bloque es descartado
(erróneo).
Transparencia de datos
- Otro problema es el de preservar
la transparencia de los datos del usuario, al separar los datos
en frames.
- Esto quiere decir, que si se usan
caracteres o secuencias de bits especiales para delimitar el bloque,
se deberá incluir algún mecanismo para permitir
la transmisión de la misma secuencia de bits como datos
de usuario, sin que eso signifique, o sea interpretado como marca
de fin de bloque.
- Los formatos típicos para
frames son los usados por los protocolos BSC y HDLC.
- El método general usado para
preservar la transparencia de los datos es insertar bits adicionales,
que el receptor removerá, para no confundir los datos con
las señales de control.
Frame BSC
(Binary Synchronous Control)

- Usa código de 7 bits de la
ISO (International Standard Organization), completando el octavo
bits con un 0.
- Orientado a transmisión de
bytes, por lo que espera datos en número entero de octetos.
- Inicio del cuadro: DLE-STX
- fin del cuadro: DLE-ETX
- En tx, si la secuencia DLE es parte
de los datos, el tx inserta otro DLE.
- El rx busca DLE-ETX e ignorará
cualquier DLE que este seguido de un DLE retirándolo del
cuadro.
- Los caracteres DLE son insertados
después, y removidos antes del calculo del CRC, sólo
sirven para transparencia durante la transmisión.
a) DLE STX A DLE B DLE ETX
b) DLE DLE STX A DLE DLE
B DLE DLE ETX
c) DLE STX A DLE B DLE ETX
Frames HDLC

- Orientado al bit
- delimitado por FLAGs
- Transparencia de datos:
- tx: inserta un cero después
de cinco bits en uno consecutivos incluyendo CRC.
- rx: examina los bits y descarta
el cero que está después de cinco unos seguidos.
- Actualmente existen chips LSI que
incorporan las funciones del protocolo de control de línea
incluyendo cálculo de CRC.

Corrección de errores
- La estructura de frames permite
detectar errores en los bloques de datos o paquetes contenidos
en los frames y descartarlos.
- El protocolo debe ser capaz de permitir
la recuperación de los datos perdidos.
- Se puede asociar (en teoría)
un único identificador a cada cuadro transmitido (colocado
en el campo FLC).
- El transmisor guardará en
una fila una copia de los datos y del identificador.
- El receptor examina la identificación
del cuadro recibido y verifica si es igual o no a la del cuadro
antes recibido:
- diferente ð
cuadro nuevo à
confirmar
- igual ð
duplicado à
descartar-confirmar
- El tx al enviar el cuadro activa
el reloj y si el tiempo para recibir el ACK ha expirado, retransmite
el cuadro (time-out).
- Si el ACK llega antes del time-out,
se retira la copia desde la fila del tx.
ACK = acknowledgement
- Este protocolo acepta llegadas fuera
de secuencia pero necesita una fila de tamaño infinito
para los datos que esperan ACK.


Secuenciación de frames
Problema: Sistemas exigen preservar secuencia de los paquetes
transmitidos.
Solución: Atribuir números de secuencia, enteros,
desde 1, hasta un número finito, en orden ascendente.
tx:
NS: número de secuencia, el primero
será el número 1.
rx:
NSE: número de secuencia esperado,
el primero será 1.
- Transmisor usará mecanismo
de time-out para retransmitir frames no confirmados.


Mecanismo de la ventana:
- La idea es poder contar con un mecanismo
relativamente real, que permita recibir paquetes fuera de orden,
para evitar la retransmisión de ellos (y aumenta el costo
por retransmisión).
Para visualizar el mecanismo, supóngase
lo siguiente.
- ambos procesos tx y rx se colocan
en fase al inicializar con el número del primer paquete
igual a, por ejemplo, 1.
- En un instante dado, el transmisor
ha transmitido n paquetes y esta esperando la confirmación
desde l.
l n
- Al mismo instante, el receptor ha
recibido y confirmado hasta m
L m n

- si el siguiente paquete recibido
no es el m + 1, este podría ser descartado o almacenado.
- Como el enviar un ACKm
indica que todos los paquetes hasta m fueron bien recibidos, no
se enviará ACK para el paquete recién recibido y
almacenado.
- Para evitar llenarse de paquetes
que no pueden ser confirmados por faltar alguno de la secuencia,
se limita la cantidad de paquetes a recibir, con el mecanismo
de la ventana, permitiendo evitar tener que destinar recursos
(buffer) fuera del máximo permisible.

- La restricción colocada por
esta ventana, proporciona un excelente camino para controlar el
flujo, en cualquier nivel.
- La ventana debe ser tan grande como
posible, para trabajar a niveles bajo de la congestión
del medio de tx y que el receptor pueda recibir paquetes al máximo
de velocidad de tx.
- En el caso práctico de implementaciones
de protocolos donde se tiene numeración finita, la ventana
servirá además para evitar confusiones entre paquetes
que tienen la misma identificación.

Numeración con módulo
n:
0, 1, 2, . . . ., n-2, n-1, 0, 1, 2,
. . . ., n-2, n-1, 0, . . .
- Existencia de mecanismo de time-out
(retransmisión), genera posibilidad de tener duplicados
en el tx.
- En un cierto instante, el tx ha
recibido ACK para t1 (incluye t1 y los anteriores)
\puede
transmitir desde [T1+1]n è
T2=[T1+w]n
- Al mismo tiempo, el rx ha recibido
y confirmado la llegada de A (y los anteriores). Si el ACK llega
bien a destino significa que el rx espera recibir desde [A+1]n
K=[A+w]n.
si en ese momento el mayor número
recibido es R implica que el borde izquierdo del tx es: T1
³
L donde L=[R-W]n
por lo tanto L £
T1 £
A desde el punto de vista de la ventana del receptor.
otra desigualdad es: A £
R
- El mayor número que se espera
recibir es K y el tamaño relativo del módulo de
numeración n y de la ventana w, debe ser tal que no se
confunda este último paquete con la retransmisión
de un paquete de número bajo L.
- Si L y K están en la misma
secuencia de numeración (sin cero entre medio) no
existirá confusión.
- un caso complicado se produce cuando
el 0 esta entre medio de L y K.
- Si tenemos n1 frames a la izquierda
de 0 y n2 frames a la derecha del cero, tenemos:
L = n - n1 y K = n2
- Para asegurar que un cuadro nuevo
no tenga el mismo número de uno retransmitido, debemos
tener :
K <
L
luego:
n2 < n - n1 o
n2 + n1 < n
- el número total de frames
que se puede recibir es:
N = n1+n2+1 (incluyendo el cero intermedio)
obtenemos: N < n+1
y como N y n son enteros N n
- de la figura del receptor podemos
ver que cuando A = R è
Nmax = 2w
como N £
n para distinguir paquetes nuevos desde retransmitidos, tenemos
que:
2w £
n
para finalmente tener que w £
n/2 es el tamaño máximo
de la ventana.
Protocolo de Control de Línea
Protocolo del Bit Alternado
- Se definen varios canales lógicos,
a través de los cuales viajan los frames de información.
- Cada canal sólo puede transmitir
un cuadro por vez
- Los frames llevan un bit de paridad,
el cual se alterna entre frames sucesivos.
flujo de frames en un canal lógico

Diagramas de Estado:

procedimientos
PRx : paridad receptor
PTx : paridad transmisor
PCDR : paridad del cuadro
PACK : paridad de la confirmación
ETx : estado del transmisor
Condiciones Iniciales: PRx PTx, ETx
= READY
TRANSMISOR:
Transmite-nuevo-cuadro:
if ETx = READY then
begin
PCDR ¬
PTx;
transmite-cuadro;
enfila-cuadro;
activa-reloj;
ETx ¬
NOT-READY;
end;
end-if;
Recibe-confirmación:
if NO-ERROR and PACK = PTx
then begin
desenfila-cuadro;
desactiva-reloj;
PTx ¬
mod2(PTx + 1);
ETx ¬
READY;
end
else retransmitir;
end-if;
Time-out:
retransmitir;
Retransmitir:
PCDR ¬
PTx;
transmitir-cuadro-en-fila;
reactivar-reloj;
END-TRANSMISOR;
RECEPTOR:
Recibe-cuadro:
if NO-ERROR and PCDR ¹
PRx
then begin
acepta-cuadro;
PRx ¬
PCDR;
end;
end-if;
PACK ¬
PRx;
envia-ACK;
END-RECEPTOR;