a) Protocolos de Acceso a un Medio de Comunicación Compartido. Existen muchos algoritmos para asignar un canal compartido. A continuación veremos los más interesantes. ALOHA Norman Abramson (Universidad de Hawaii, 1985). Aunque fue hecho para “broadcasting” de radio, la idea es aplicable para cualquier sistema donde usuarios sin coordinación compiten por un canal compartido. Existen dos versiones ALOHA puro y ALOHA dividido (“Slotted”). Difieren en si el tiempo es dividido en periodos discretos o no, en los cuales deben caber los “frames”. ALOHA puro no requiere sincronización global de tiempo ALOHA dividido si. ALOHA Puro: La idea es dejar que los usuarios transmitan cuando tengan datos a enviar. Habrá colisiones y los “frames” en colisión serán destruidos. Sin embargo debido a la propiedad de retroalimentación del “broadcasting” un emisor siempre puede escuchar el canal para averiguar si su paquete ha sido destruido o no. En una LAN la retroalimentación es inmediata, con un satélite hay un retardo de 270ms. Si el “frame” fue destruido el emisor espera un lapso de tiempo aleatorio y vuelve a enviar el paquete. El tiempo de espera debe ser aleatorio sino los mismos “frames” estarán colisionando una y otra vez. Sistemas en los cuales múltiples usuarios comparten un canal común que puede ocasionar conflictos son conocidos como “contention systems”. Una idea de la generación de “frames” en un sistema ALOHA se da en la siguiente figura. Todos los “frames” se han puesto del mismo tamaño pues el rendimiento de un sistema ALOHA es maximizado teniendo un tamaño uniforme de “frame”. Usuario A B C D E Time Siempre que dos “frames” tratan de ocupar el canal al mismo tiempo habrá una colisión y ambos serán desechados. Si el primer bit de un “frame” nuevo se traslapa con el último bit de un “frame” casi terminado, ambos frames serán totalmente destruidos y tendrán que ser retransmitidos después. El checksum no puede distinguir entre una pérdida total o parcial, malo es malo. Cual es la eficiencia de ALOHA? ó que fracción de todos los “frames” transmitidos se salvan de colisionar bajo estas caóticas circunstancias.? Primero consideremos una colección infinita de usuarios cada uno interactuando con su estación. Un ususario siempre está en uno de dos estados: tecleando o esperando. Inicialmente todos los usuarios están en el estado de tecleando. Cuando se ha terminado una línea, el usuario deja de teclear y espera una respuesta. La estación entonces transmite un “frame” conteniendo la línea y revisa el canal para ver si hubo éxito. Si fue así entonces el usuario ve la respuesta y regresa a seguir tecleando. En caso contrario, el usuario continua esperando y el “frame” es retransmitido una y otra vez hasta tener éxito. Sea el “frame time” la cantidad de tiempo necesario para transmitir un “frame” estándar de tamaño fijo. (longitud de “frame” dividida por la velocidad en bits). En este punto asumimos que la infinita población de usuarios generó nuevos “frames” de acuerdo a la distribución de Poisson con N “frames” por “frame time”. (Se necesita asumir una población infinita para asegurar que N no se decrementa cuando los usuarios se bloquean). Si N > 1, la comunidad de usuarios está generando “frames” a una velocidad mayor de lo que puede manejar el canal, y es seguro que cada uno esté generando colisiones. Para un rendimiento razonable se espera que 0 < N < 1. Además de los nuevos “frames” las estaciones generan retransmisiones de “frames” que antes colisionaron. Asumamos que la probabilidad de k intentos de transmisión por “frame time”, nuevos y viejos combinados, tiene también distribución Poisson, con valor G por “frame time”. Esta claro que G >= N. Al tener una carga baja (N=0) habrán pocas colisiones, entonces pocas retransmisiones, asi que G =N. Al tener una alta carga habrán muchas colisiones, asi que G > N. Bajo todas las cargas, el rendimiento es solo la carga que se tiene, G, veces la probabilidad, S, de una trasmisión exitosa; esto es S=GP0, donde P0 es la probabilidad de que un “frame” no colisione. Un “frame” no colisionará si ningún otro “frame” es enviado dentro del “frame time” en que se comenzó a enviar. Como se ve en la siguiente figura. Bajo esas condiciones ¿El “frame” sombreado llegará sin daños?. Sea t el tiempo requerido para enviar un “frame”. Si otro usuario ha generado un “frame” entre el tiempo t0 y t0 + 1, el final de ese “frame” colisionará con el principio del “frame” sombreado. De hecho el “frame” sombreado ha sido terminado incluso antes de que se transmitiera el primer bit, pero dado que en ALOHA puro una estación no tiene modo de escuchar el canal antes de transmitir, no hay manera de que sepa si hay otro “frame” en el canal. De la misma manera otro frame que inicio a transmitirse entre t0 +t y t0+ 2t va a colisionar con el final del “frame” sombreado. Colisiona con el inicio del “frame” sombreado t0 Colisiona con el final del “frame” sombreado t t0 + t t0 + 2t t0 +3t Time vulnerable La probabilidad de que k “frames” sean generados durante un “frame time” esta dada por la distribución de Poisson: G k e G P r[k ] k! Asi que la probabilidad de 0 “frames” es e-G. En un intervalo de dos “frames times” el número de “frames” generados es 2G. La probabilidad de que no se inicia mas tráfico durante todo el periodo vulnerable esta dado por P0=e-2G. Usando S=GP0 obtenemos S Ge 2G La relación entre el tráfico ofrecido y el rendimiento esta dado en la siguiente gráfica. El rendimiento máximo ocurre a G=0.5, con S= 1/2e, el cual es cerca de 0.184. En otras palabras lo mejor que podemos esperar en la utilización del canal es 18%. Este resultado no es muy alentador, pero con todos los usuarios transmitiendo difícilmente podemos esperar un 100% de éxito. S (rendimiento por “frame time”) 0.40 Slotted ALOHA: S = Ge-G 0.30 0.20 Pure ALOHA: S = Ge-2G 0.10 0 0.5 1.0 1.5 G (intentos por “frame time”) 2.0 3.0 Slotted ALOHA: Publicada en 1972 por Roberts para duplicar la capacidad de un sistema ALOHA. Su ropuesta fue dividir el tiempo en intervalos discretos, cada uno correspondiente a un “frame”. Esto requiere que los usuarios estén de acuerdo con los límites de las ranuras o divisiones. Una manera de lograr la sincronización es teniendo a una estación especial para que emita un pip al inicio de cada intervalo, como un reloj. En este sistema a una computadora no se le permite enviar aunque se le halla tecleado un intro (“enter”). En cambio debe esperar al inicio del próximo periodo de tiempo. Entonces el ALOHA puro se ha convertido en discreto. La probabilidad de que haya tráfico de otros en el mismo lapso de tiempo es e-G lo cual lleva a: S GeG Como se puede apreciar en la gráfica anterior este sistema ALOHA “slotted” tiene mayor rendimiento para G = 1, el cual es S = 1/e o cerca de 0.368, el doble del ALOHA puro. Lo mejor que se puede esperar con este sistema es que el 37 % de los lapsos estén vacios, 37 % de éxito y 26 % de colisiones. Operando a mayores valores de G se reduce el número de lapsos vacíos pero se incrementa exponencialmente el número de colisiones. Considere un “frame” de prueba, la probabilidad de que evite una colisión es e-G, o sea la posibilidad de que los demás usuarios estén silenciosos durante ese lapso de tiempo. La probabilidad de una colisión es 1 –e-G. La probabilidad de que una transmisión requiera k intentos (k –1 colisiones seguidas de un éxito) es: Pk eG (1 eG )k 1 El número esperado de transmisiones, E, por intro tecleado es: k 1 k 1 E kPk keG (1 e G ) k 1 eG Como resultado de la dependencia exponencial de E sobre G, pequeños incrementos en la carga del canal pueden drásticamente reducir su rendimiento. Protocolos de Acceso Múltiple con Detección de Portadora Con ALOHA la mejor utilización del canal es 1/e. Lo cual es sorprendente considerando que las estaciones transmiten sin importar si las demás lo están haciendo. Pero en redes locales es posible que las estaciones detecten lo que están haciendo las demás y así puedan adaptar su comportamiento. Estas redes pueden tener una utilización mejor que 1/e. Los protocolos en los cuales las estaciones escuchan por una portadora (una transmisión) y actúan en función de ello son llamados “carrier sense protocols”. A continuación se mencionan los más utilizados. CSMA Persistente y No-Persistente. 1-Persistente CSMA (Carrier Sense Múltiple Access). Cuando una estación tiene datos para enviar, primero escucha el canal para ver si alguien más está transmitiendo datos en ese instante. Si el canal está ocupado entonces se espera hasta que se desocupa. Cuando detecta que esta desocupado entonces transmite un “frame”. Si ocurre una colisión la estación espera un periodo de tiempo de longitud aleatoria y empieza de nuevo. Se llama 1-persistente porque tiene una probabilidad de 1 siempre que encuentre el canal desocupado. El retardo de propagación tiene un efecto importante en el rendimiento de este protocolo. Hay una pequeña oportunidad de que justo después que la estación empezó a transmitir otra estación se preparó para enviar y detectar el canal. Si la señal de la primera estación aún no se ha propagado hasta donde está la segunda, está última detectará que el canal está desocupado y también empezará a transmitir, lo cual resultará en una colisión. Mientras más largo sea el retardo de propagación más importante se vuelve este efecto y más se deteriora el rendimiento del protocolo. Incluso si el retardo es 0 aun pueden haber colisiones. Si dos estaciones se preparan para enviar a la mitad de la transmisión de una tercera estación entonces esperarán hasta que termine para transmitir y cuando esto suceda ambas estaciones empezarán a transmitir al mismo tiempo y ello resultará en una colisión. Si ellas no fueran tan impacientes habrían menos colisiones. A pesar de ello este protocolo tiene mayor rendimiento que ALOHA puro, pues ambas estaciones tuvieron la precaución de no interferir con la tercera. Lo mismo sucede si lo comparamos con ALOHA dividido. Otro protocolo de este tipo es CSMA No-Persistente. En este protocolo se hace un intento de ser menos codicioso que el anterior. Antes de enviar la estación detecta el canal. Si nadie más está enviando la estación empieza a hacerlo. Sin embargo si el canal está en uso la estación no sigue detectando el canal continuamente con el propósito de detectar si se desocupó inmediatamente al final de la transmisión en curso. En cambio se espera un periodo de tiempo aleatorio y luego repite el algoritmo. Como resultado lleva a una mejor utilización del canal. El último protocolo de esta familia es CSMA p-persistente. Se aplica a canales divididos y trabaja asi: Cuando una estación esta lista para enviar, detecta el canal. Si está desocupado transmite con una probabilidad p . Con una probabilidad q= 1-p lo difiere hasta el siguiente lapso. Si ese lapso también esta desocupado, transmite o bien difiere otra vez, con probabilidades p y q. Este proceso es repetido hasta que el frame se ha transmitido u otra estación empezó a transmitir. En el segundo caso actúa como si hubiera existido una colisión. Si la estación detecta que el canal está ocupado entonces espera hasta el siguiente lapso y aplica el algoritmo. La siguiente figura muestra el rendimiento contra el tráfico ofrecido para los tres protocolos en comparación de los dos protocolos de ALOHA. CSMA con Detección de Colisiones. Los protocolos CSMA persistentes y no-persistentes son una mejora sobre ALOHA, pues se aseguran de que las estaciones no trasmitan si el canal esta ocupado. Otra mejora es cuando las estaciones interrumpen su transmisión tan pronto como detecten una colisión. Es decir si dos estaciones detectan que el canal está desocupado y empiezan a transmitir al mismo tiempo, ellas detectarían la colisión casi inmediatamente. En lugar de terminar de transmitir sus “frames” los cuales ya están dañados, ellas abruptamente detienen la transmisión tan pronto como detecten la colisión. Interrumpir rápidamente la transmisión de un “frame” que ya está dañado ahorra tiempo y ancho e banda. Este protocolo es llamado CSMA/CD (Carrier Sense Múltiple Access with collision Detection), ampliamente usado en las redes LAN, en la subcapa MAC. El protocolo CSMA/CD al igual que otros protocolos de LAN usan el modelo descrito en la siguiente figura. En el pinto marcado como t0 una estación ha terminado de transmitir su “frame”. Ahora cualquiera otra estación que tenga un “frame” listo intentará enviarlo. Si dos o más estaciones deciden transmitir simultáneamente, habrá una colisión. Las colisiones pueden ser detectadas revisando la amplitud del pulso en la señal recibida y comparándolo con la señal transmitida. Divisions de Contención t0 Frame Período de Transmisión Frame Frame Frame Período de Ocio Período de Contención Tiempo Después de que una estación detecta una colisión, interrumpe su transmisión, espera un lapso de tiempo aleatorio, y luego intenta nuevamente, asumiendo que ninguna otra estación ha iniciado a transmitir en ese tiempo. Entonces el modelo CSMA/CD consistirá de alternar periodos de transmisión con periodos ociosos. Ahora vamos a ver los detalles del algoritmo de contención. Suponga que dos estaciones empiezan a transmitir al mismo tiempo t0. ¿Cuánto demorará en enterarse de que hubo una colisión? La respuesta a esta pregunta es vital para determinar la longitud del período de contención y por lo tanto cual será el retardo y el rendimiento. El tiempo mínimo que tome detectar una colisión es el tiempo que le toma a la señal propagarse de una estación a otra. Del razonamiento anterior se podría decir que una estación, la cual, después de iniciar su transmisión, no escucha una colisión, durante el periodo de tiempo que le toma a la señal propagarse por todo el cable, puede estar segura de que pudo transmitir sin conflictos. Esta conclusión esta mal. Considere el siguiente escenario. Sea el tiempo de propagación de una señal entre dos estaciones rápidas. En el tiempo t0, empieza a transmitir una estación. En - , un instante antes de que la señal llegue a la estación más distante, dicha estación empieza a transmitir. Obviamente ella detecta la colisión casi inmediatamente y se detiene, pero el poquito ruido causado por la colisión no se regresa a la estación original hasta el tiempo 2 - . En otras palabras una estación no puede estar segura de que encontró el cable desocupado hasta que ha transmitido por un tiempo igual a 2 sin escuchar una colisión. Por está razón se modela el intervalo de contención como ALOHA dividido con un ancho de intervalo de 2. En un cable coaxial de 1 km de longitud 5 sec. Por simplicidad asumiremos que cada intervalo contiene 1 bit. Una vez que el canal ha sido probado una estación puede transmitir a cualquier velocidad que desee, obviamente no solo a 1 bit por 2 segundo. Es importante aclarar que el proceso de detección de colisiones es un proceso análogo. El hardware debe escuchar el cable mientras está transmitiendo. Si lo que se lee es diferente de lo que se envió, sabe que hubo una colisión. La implicación es que la codificación de la señal debe permitir la detección de colisiones (la colisión de dos señales de 0 volts sería imposible de detectar). Por ello se usa codificación especial. CSMA/CD es un protocolo importante, una versión de el es el 802.3 (Ethernet), el cual es un estándar internacional. Para evitar cualquier mal entendido es importante señalar que ningún protocolo de subcapa MAC garantiza entrega confiable de los paquetes. Incluso en la ausencia de colisiones, el receptor puede que no haya copiado el “frame” correctamente (por ejemplo debido a falta de espacio en buffer).