Capa de enlace: Introducción “enlace”
Terminología:
- Hosts y routers son nodos (bridges y switches también).
- Canales de comunicación que conectan nodos adyacentes a través de rutas de comunicación son
enlaces:
- Enlaces por cable.
- Enlaces sin cable.
Protocolo de enlace de datos es el responsable de la transferencia del datagrama de un nodo a otro
nodo adyacente por un enlace.
Contexto:
El datagrama se transfiere por diferentes protocolos de enlace de datos a través de distintos enlaces:
- Por ejemplo: Ethernet es el primer enlace, frame relay los intermedios, 802.11 el último enlace
- Cada protocolo de enlace proporciona diferentes servicios. (justamente porque la forma de
“construcción” de cada enlace es diferente es que necesito diferentes protocolos de enlace)
Servicios de capa de enlace
- Enmarcación:
Encapsular el datagrama en un marco, añadir cabecera, trailer. (cada protocolo define como
enmarca , recuerden que sin entrar en detalles vimos que en Ethernet teníamos un marco y que en
802.11 también teníamos un marco pero diferente al anterior)
- Acceso a canales . Ya vimos que cuando se trata de medios compartidos, el protocolo debe
proveer mecanismos de acceso a ese canal (ej transmitir cuando esta libre, esperar , detectar si está
ocupado, etc) . Cuando no se comparte medio, esta función puede no estar
- Entrega fiable entre nodos adyacentes: (ojo entre nodos adyacentes) . Si el protocolo de enlace
provee entrega fiable entre los dos nodos, lo que está diciendo es que transmitirá el datagrama de la
capa de RED sin errores de un extremo a otro del enlace. Este servicio puede contener el chequeo
de datos y la corrección de errores. Es importante para medios que son permeable a errores (ej el
medio inalámbrico) . Pero para aquellos medios que por su construcción no tienen tasa de error o
ella es muy baja, no tiene sentido implementarlo porque como todo esos mecanismos de detección y
corrección consumen tiempo. Entonces para redes de fibra , de coaxil o en algunas situaciones de
par trenzado no están presentes
- Detección de errores y corrección . Por lo dicho recién , cuando se implemtenta en general se
implementa a nivel de hardware
Donde se implentan los servicios de la capa de enlace ?
En general se implementan dentro del adaptador de red (network interface card NIC) . Ahí se
encuentra el link layer controller , que es un chip y que realiza todas las tareas . Desde framming
(encapsulamiento) , acceso hasta detección y corrección de errores
Del lado que envía este controlador toma el datagrama que viene de la capa superior y que está
almacenado en memoria , lo encapsula dentro de un marco de enlace (recuerden que ese marco
depende del protocolo de enlace) y luego transmite ese marco dentro del enlace siguiendo en todo
caso el protocolo de acceso al medio en particular si existe
Del lado receptor el controller , recibe el marco y extrae de él, el datagrama de la capa superior. Si
para el enlace particular se realiza detección de errores, es este controller el que lo hará
Técnicas de detección y corrección de errores
Como marco conceptual de trabajo :
- en el nodo emisor el conjunto de datos a proteger lo llamamos D , para permitir que el nodo
receptor tenga posibilidades de detectar errores, se le suma a ese conjunto D , otro conjunto de datos
que llamamos EDC
- los datos a proteger , no sólo son los que vienen de la capa de Red, sino además los datos de
direccionamiento de la misma capa de enlace, números de secuencia de su header, etc.
- el recepto recibe D’ y EDC ‘ . El desafío para él es cómo saber si D = D’ . El receptor realiza
detección de errores, pero no hay una técnica que pueda detectar siempre los errores. Las técnicas
de detección tienen una probabilidad de éxito en esa detección. A más alta probabilidad de
detección , más compleja la técnica, más “cara” en todo sentido
Chequeo de paridad
Quiźas la más sencilla. El emisor agrega un bit de paridad y codifica de alguna manera por ejemplo,
que el bit de paridad sea 1 si la cantidad de 1’s entre lo que hay que transmitir + el bit de paridad es
par.
El receptor cuenta la cantidad de 1’s recibidos incluyendo el bit de paridad y tiene que coincidir el
esquema acordado. Sino coincide , se detecta la aparición de un error.
La eficacia de un sistema de este tipo ronda el 50% por lo tanto no es utilizado
Una generalización de este principio es la paridad de dos dimensiones. Donde se trabaja con una
matriz y se chequea por fila y columna
En este caso no sólo se puede detectar el error sino que además se puede detectar cuál es el bit
erróneo y entonces corregirlo
A la técnica de detección y corrección de error se la conoce comunmente como FEC (Forward Error
Correction) este tipo de técnica no sólo se utiliza para transmisión de datos sino para
almacenamiento y reproducción en algunos dispositivos
Las técnicas FEC son interesantes porque pueden reducir el envío de paquetes de ACK , con lo cual
todo el proceso de transmisión se hace más rápido
CRC Cyclic Redundancy Check codes (códigos de redundancia cíclica)
- muy utilizada actualmente en redes de computadoras
- el concepto detrás es el siguiente:
- el receptor y el transmisor acuerdan que van a transmitir unidades de datos de longitud “d” bits
- el receptor y el transmisor acuerdar que van a utilizar un “generador” que lo llamamos “G”, que
basicamente es un número binario de longitud “r + 1 “ bits
- el transmisor una pieza de datos “D” a la cual le adicionará r bits (a esos r bits los llamaremos R)
que los adicionará a D . De manera que esa palabra de longitud d + r , será divisible exactamente
por G . Es decir el resto de esa división debe ser cero.
- el receptor recibirá una palabra y la dividirá por el G acordado. Si el resto de la división es cero, se
considera que lo que se recibió no contiene errores
Todas las operaciones se realizan en matemática binaria, y para la simplificación no hay acarreos
Se han definido “generadores” estándars para longitudes de 8 , 12 , 16 y 32 bits . Así por ejemplo el
G del CRC-32 definido por el IEEE , es : G CRC@32 = 100000100110000010001110110110111
Los códigos CRC son capaces de detectar errores tipo burst de longitud menor a r + 1 bits