Capa de enlace

Anuncio
Capa de enlace
1
Capa de enlace
Se encarga de controlar la comunicación
entre dos máquinas “adyacentes”
Adyacentes significa conectadas mediante un
“cable” o algo que actúa como tal
Los principales problemas son:


errores del medio físico
retardo de los canales
Los problemas específicos de los medios
compartidos se abordan en la sub-capa MAC
2
Objetivos de la capa de
enlace
Brindar servicios a la capa de red
Entramado
Control de errores
Control de flujo
3
Servicios posibles
sin conexión ni confirmación
 cuando hay baja tasa de error
 cuando datos atrasados son peores que datos
erróneos (tiempo real=voz, video)
 Servicio típico en LANs
sin conexión con confirmación
 en casos de canales con muchos errores (sistemas
inalámbricos)
con conexión y confirmación
 se sabe si los mensajes llegan o no
 se numeran y se hacen llegar en orden
 se asegura que llegan solo una vez
con conexión y sin confirmación
 Poco común (poco razonable)
4
Entramado
La capa 2 para dar el servicio a la capa de red
debe valerse de la capa física
Como hay errores en la capa física hay que
detectar y eventualmente corregir errores
División en tramas y hacer un control de error
en cada trama
La división en tramas no es tan sencilla
5
Métodos de entramado
Conteo de caracteres
Caracteres de delimitación
Banderas de delimitación
Violaciones del código de línea de la capa
física
6
Conteo de caracteres
7
Problemas
Si se corrompe el encabezado de la trama se
pierden las fronteras de tramas
No se puede re-sincronizar
8
Caracteres de principio y fin
Orientado a caracteres
Insertar banderas para delimitar el comienzo
y fin de la trama
Comúnmente se delimita con caracteres ASCII
especiales (de control)
 DLE STX = bandera de comienzo
 DLE ETX = bandera de fin
Se transmite
DLE STX
Datos de capa de red
DLE ETX
Qué pasa si aparece DLE STX (o DLE ETX)
entre los datos de capa de red?
9
Caracteres de principio y fin
(inserción de caracteres para lograr
transparencia)
Recibido de la capa de red en el Tx:
A DLE B
Inserción de caracteres:
A DLE DLE
B
Inserción de banderas (lo que se transmite):
DLE STX A DLE DLE B DLE ETX
En el receptor se procesa de modo que:
 DLE STX = bandera de comienzo
 DLE DLE = se saca un DLE
 DLE ETX = bandera de fin
Se entrega a la capa de red en el Rx:
A
DLE
B
10
Problema
Muy pensado para caracteres de 8 bits
Y contenido ASCII
11
Banderas e inserción de bits
Orientado a bits, se insertan bits para
transparencia
Misma idea pero con banderas definidas
como patrones de bits
Bandera típica 01111110 = 7E hexa
Se insertan bits de relleno
12
Inserción de bits
Se define la bandera 01111110
Se debe evitar que la bandera aparezca en los
datos
En transmisión:
 Se interrumpe cualquier secuencia de 6 “1”s seguidos
insertando un “0” luego del quinto “1”
 Sin importar lo que venga después!!!
 Se insertan las banderas y se envía al receptor
En recepción:
 Se reconocen las banderas 01111110
 Si se ven 5 “1” y un “0” se saca el “0”
 Sin importar lo que venga después!!!
13
Violaciones del código de
línea de la capa física
El código de línea de la capa física tiene un
alfabeto para representar el “1” y el “0”
lógicos con niveles de amplitud o frecuencias
o fases
Se puede usar para representar el comienzo y
fin de trama una combinación de amplitud,
frecuencia o fase que no corresponda ni a “0”
ni a “1”
Problema: viola la independencia de capas
14
Control de errores
Detectar errores en la trama recibida
Descartar la trama
Eventualmente comunicar a la entidad par la
existencia de errores (si se está usando un
protocolo confiable)
Corrección de errores
15
Códigos correctores y
detectores de error (1)
Qué es un error ?


Una trama tiene m bits y se agregan r bits de
redundancia o de chequeo
Los datos a transmitir serán n = m + r
Distancia de Hamming es el número de bits
en que difieren dos palabras del código
La mínima es la distancia del código
En general hay 2m mensajes válidos pero no
todos los 2n lo son
16
Códigos correctores y
detectores de error (2)
Distancia 2 entre
palabras válidas
Un error de un bit no
permite determinar de
cuál palabra válida
proviene
Distancia 4 entre palabras
válidas
Un error de un bit permite
suponer de cuál palabra
válida proviene
17
Códigos correctores y
detectores de error (3)
La detección y corrección se basa en la
distancia de Hamming del código


Para detectar d errores necesito un código de
distancia d+1
Para corregir d errores necesito un código de
distancia 2d+1
Ej: un bit de paridad agregado a los datos


es de distancia 2, un error invalida la palabra
sirve para detectar errores simples
18
Códigos correctores y
detectores de error (4)
Si queremos un código para corregir errores
simples con n = m + r



Si invertimos cada uno de los n bits de una
palabra de código tenemos n palabras de
código ilegales a distancia 1 de la correcta
Entonces cada uno de los 2m mensajes legales,
debe tener n+1 palabras dedicadas que
puedan ser unívocamente asignadas a él
Para que se pueda realizar:
 (n+1) 2m <= 2n

=> (m + r +1) <= 2r
dado m hay un límite inferior para r
19
Códigos de Hamming
Ejemplo real del límite teórico
Las posiciones 2i son ocupadas por los bits de
chequeo (1,2,4,8, etc)
Las restantes se ubican los datos
Ejemplo:

Palabras de 7 bits, se codifican en 7+4=11 bits
ya que 7+4+1 <= 24 (menos de 4 no cumple)
20
Códigos detectores de error
Si la tasa de error es baja conviene detectar y
retransmitir en vez de corregir
En trama de 1000 bits se necesitan 10 bits de
test para corregir y alcanza con 1 bit para
detectar
Intuitivamente: si tengo tasa de error de 10-6


con corrección: 10*1000=10000 bits de más
con detección y retransmisión: envió
1*1000+1001=2001 bits de más
21
Códigos detectores de error
El problema con lo anterior es que con 1 bit la
probabilidad de detección de una ráfaga es
0.5
Se pueden hacer matrices que mejora
Se usan en general códigos polinómicos
llamados también códigos de redundancia
cíclica (CRC)
22
Códigos polinómicos
Se tratan los mensajes de bits como
coeficientes de un polinomio
Si tengo un mensaje de k bits, ck-1..c0 lo puedo
ver como un polinomio de grado k-1

ck-1xk-1+ck-2xk-2+...+c0x0
Ej: 110001 se representa como x5+x4+x0
La aritmética se hace en módulo 2, no hay
acarreos y tanto la suma como la resta son
idénticas al XOR
23
Códigos polinómicos (2)
El transmisor y receptor deben ponerse de
acuerdo en el uso del llamado polinomio
generador P(x)
Los coeficientes más y menos significativos
de P(x) deben ser 1
El mensaje de m bits se representa como M(x)
y la trama a transmitir es más larga que el
largo de P(x)
24
Códigos polinómicos (3)
La idea es agregar una suma de
comprobación al final de la trama de modo tal
que el polinomio representado por el conjunto
sea divisible entre P(x)
El receptor divide lo que recibe entre P(x), si
el resto es 0 no hay errores. Si es distinto de
0 es porque hubo errores en la transmisión
25
Códigos polinómicos (4)
El algoritmo es:



Si r es el grado de P(x), agrego r bits en 0 en la
parte menos significativa de la trama. Lo que
tengo entonces es la representación de
xr M(x)
Divido xr M(x) entre P(x) con aritmética módulo
2 y obtengo un resto R(x) (con menos de r bits)
Resto a R(x) a xr M(x) y el resultado es lo que
se transmite G(x) que obviamente es divisible
entre P(x)
26
Códigos polinómicos (5)
Si hay un error y el receptor recibe G(x)+E(x)
donde E(x) es el error (tiene un 1 en cada bit
que se invirtió)
El receptor divide (G(x)+E(x))/P(x) y calcula el
resto de la división
Como:
 Resto[(G(x)+E(x))/P(x)] = Resto[G(x)/P(x)] +
Resto[E(x))/P(x)]
 y Resto[G(x)/P(x)] = 0, el resultado es Resto[E(x)/P(x)]
Solo se escapan los patrones de error que
correspondan a un polinomio divisible entre
P(x)
27
Códigos polinómicos (6)
El problema pasa a ser entonces elegir
adecuadamente el P(x)
Se hace en base a propiedades de los
polinomios, por ejemplo:
 Para detectar error simple: E(x)=xi (*)

se necesita que P(x) tenga al menos dos términos
 Para detectar dos errores: E(x)=xi+xj=xj(xi-j+1)



Si P(x) no es divisible por x (condición *)
se necesita que P(x) no divida a xk+1 para cualquier
k<i-j (largo de la trama)
etc...
28
Códigos polinómicos (7)
Polinomios generadores estandarizados:



CRC-16 (16 bits)
x16+x15+x2+1
CRC-CCITT (16 bits) x16+x12+x5+1
IEEE 802 (32 bits)
x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1
Los de 16 bits detectan:




100% simples y dobles
100% los de número impar de bits
100% de ráfagas de largo 16 o menos
99.99% de ráfagas de 17 bits o más bits
29
Protocolos elementales de
enlace
Formato de la trama básica:

Tx
Rx
tipo, seq, ack, información
Protocolo Simplex





Datos en una sola dirección
Capas siempre prontas
Tiempo de procesamiento nulo
Buffer infinito
Canal perfecto (sin ruido)
t
30
Protocolo simple
stop-and-wait o parada y espera
Velocidad de recepción, finita o
buffer no infinito en RX
Solución 1: insertar retardo

Tx
Rx
Como se calcula el retardo ?
 si es demasiado corto retransmito de
más,
 si es muy largo uso bajo del canal

Puede haber variaciones según la
carga del receptor
t
Solución 2: reconocimiento
positivo (ACK)

uso half-duplex del canal
31
Protocolo simple sobre
canal con ruido (1)
Las tramas se pueden corromper o perder
totalmente
Se agrega código detector de errores
Si se corrompen la suma de comprobación lo
detecta
Temporizadores para recuperación de errores
si no llega el reconocimiento
Reconocimientos positivos o negativos
32
Protocolo simple sobre
canal con ruido (2)
Problema:

se pierde ACK y se duplica una trama
Necesidad de números de secuencia
Cuantos números de secuencia se necesitan ?


En stop & wait solo 2: 0 y 1 pues hasta no
recibir reconocimiento del 0 no intento mandar
el 1
Cuando se espera la trama 0 se rechazan las
que no sean 0 y al recibirse se espera por la 1
33
Piggybacking
Es interesante el uso del canal para datos en
ambas direcciones
Como el campo ACK es parte del encabezado,
puedo mandar información en la misma
trama de ACK
Esto se llama piggybacking
Problema: Cuanto esperar ?


POCO: debo mandar trama solo con ACK
MUCHO: el TX da timeout
34
Protocolos de ventana
deslizante y control de flujo
En el caso de protocolos de transmisión
confiables, se utilizan protocolos de ventana
deslizante de modo que se pueda garantizar
que se recibe todo correctamente
Permiten mejorar el uso del canal e
implementar control de flujo
En los protocolos de transmisión no
confiables, no hay acuse de recibo y no hay
mecanismos para el control de flujo
35
Ventanas deslizantes
En el caso general el transmisor tendrá:


Un conjunto de números de secuencia que
puede utilizar para numerar las tramas que
envía
Un conjunto de buffers destinados a almacenar
las tramas que le van llegando para enviar y las
tramas que ya envió pero de las que no ha
recibido aún confirmación
En el caso general el receptor tendrá:



Un conjunto de números de secuencia que está
dispuesto a aceptar
Un conjunto de buffers destinados a almacenar
las tramas que le van llegando
A medida que vaya completando la secuencia,
las enviará a la capa superior
36
Ventanas deslizantes
Dato desde
la capa
superior
Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Dato hacia
la capa
superior
Una vez que el Tx
recibe el ACK corre su
ventana porque sabe
que la trama 0 fue
recibida correctamente
y no tendrá que
retransmitirla
Una vez que el Rx envía
el ACK corre su ventana
para no vover a recibir
una repetición de la
trama 0
37
Ventanas deslizantes
Dato desde
la capa
superior
Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Dato hacia
la capa
superior
38
Ventanas deslizantes
(cuando los reconocimientos demoran)
Datos desde la capa superior
Este dato no puede
aceptarse porque no hay
espacio en la ventana
Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
A medida que el Tx
comienza a recibir los
ACKs puede correr su
ventana y aceptar
nuevos datos de la
capa superior
39
Ventanas deslizantes
(cuando hay errores y se pierden datos)
Datos desde la capa superior
Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Acá mando un ACK_2
repetido o mando un
NACK_2
Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Este dato NO lo
puedo pasar a la
capa superior
porque me falta la
trama 2.
Cuando me llegue
la retransmisión
enviaré un ACK_3 y
podré pasar a la
capa superior el
contenido de las
tramas 2 y 3
Estos datos los puedo pasar a la capa
superior porque están en secuencia
40
Ventanas deslizantes
(nomenclatura)
Cuando la ventana del receptor es de tamaño
1, entonces se obliga a recibir en orden y si
se pierde una trama, habrá que retransmitir
desde la perdida en adelante:
go-back-n (volver n para atrás)
Si la ventana es mayor que 1 se retransmite
la trama perdida y se asume que las
siguientes ya transmitidas llegarán bien:
repetición selectiva
41
Ejemplos
HDLC High-level Data Link Control



Origen SDLC de IBM modificado por ANSI a
ADCCP, modificado por ISO a HDLC
HDLC modificado por ITU-T a LAP y remodificado luego a LAPB para hacerlo más
compatible con las últimas versiones de HDLC
Usado en X25, enlaces punto a punto, etc
Orientado a bits y usa relleno de bits para
transparencia de datos
42
Trama básica de HDLC
Formato de trama y campo de
control
Information
Supervisory
Unumbered
43
Enlaces punto a punto en
Internet
SLIP


Serial Link IP
Objetivo: conectarse a una red con TCP/IP
PPP


Point to Point Protocol
Objetivo: generalizar SLIP
44
Conexión a Internet
45
Protocolo SLIP
Flag 0xC0 al final
0xC0 => 0xD0 0xC0
0xD0 => 0xD0 0xD0
Compresión de encabezamiento
Problemas:




No detecta errores
Sólo soporta IP
Se debe conocer la dirección IP
No hay autentificación de usuario
46
Protocolo PPP
Provee de:



Entramado (framming) con detección de error
LCP (Link Control Protocol): para conectarse,
testear la línea, negociar opciones y terminar
una conexión
NCP (Network Control Protocol): una manera de
negociar opciones a nivel de capa de red (por
ej. la dirección)
47
Formato de trama en PPP
48
Diagrama simplificado
49
Ejemplo de detección de
celdas en ATM
5
48
50
Descargar