Anexos 11 ANEXO B B CONTROL DE ACCESO AL MEDIO En este apartado se da a conocer cómo el estándar IEEE 802.11b define la subcapa de Control de Acceso al Medio (MAC: Medium Access Control), uno de los elementos más importantes en el desarrollo de esta tesis. Se especifican aspectos importantes del formato de tramas establecido por el estándar se introduce la arquitectura de la subcapa MAC, incluyendo la función de coordinación distribuida (DCF: Distributed Coordination Function), la función de coordinación por punto (PCF: Point Coordination Function), y su coexistencia en una LAN IEEE 802.11b. Más adelante se tratará con mayor detalle la DCF, brindándose una completa descripción de ella. B.1 Terminología Específica Antes de describir las características del protocolo, es necesario que cierta terminología específica de uso frecuente sea explicada. En particular, se hará referencia a dos conceptos definidos por el estándar: Estación y Conjunto de Servicio Básico. Estación es definida como cualquier aparato que contiene una capa de control de acceso al medio (MAC) conforme a IEEE 802.11b y una interfaz de capa física al medio inalámbrico. Por ejemplo, una estación puede ser una computadora portátil que posee una tarjeta adecuada para conectarse a una red inalámbrica IEEE 802.11b. En general, es cualquier terminal que puede enviar y recibir información a través de una red 802.11b. Conjunto de servicio básico (BSS: Basic Service Set}). Es un conjunto de estaciones controladas por una sola función de coordinación. Alternativamente, es posible definirlo como un conjunto de dos o más estaciones que se comunican directamente dentro de una red básica 802.11b. Este grupo básico puede intercomunicarse con otros de su misma naturaleza mediante puntos de acceso e infraestructuras de red tales como backbones, pero debe recordarse que todo otro elemento está fuera del conjunto de acceso básico. B.2 Formato de Tramas MAC Cada trama está constituida por los siguientes componentes básicos: a) Una cabecera MAC, la cual contiene información de control de trama, duración, dirección, y control de secuencia. b) Un cuerpo de trama de tamaño variable, el cual contiene información específica para cada tipo de trama. c) Una secuencia de chequeo de trama (FCS: Frame Check Sequence), la cual contiene código de redundancia cíclica (CRC) de 32 bits. Anexos 12 B.2.1 Formato General de Trama El formato de trama MAC comprende un conjunto de campos en orden fijo. La figura B.1 muestra el formato general. Los números sobre cada campo representan el número de octetos que lo componen. Los campos Address 2, Address 3, Sequence Control, Address 4, y Frame Body sólo están presentes en ciertos tipos de trama. Cada campo es definido a continuación. Figura B.1 Formato general de trama MAC Campo Frame Control El campo Frame Control está compuesto por los siguientes subcampos: Protocol Version, Type, Subtype, To DS, From DS, More Fragments, Retry, Power Management, More Data, Wired Equivalent Privacy (WEP), y Order. El formato del campo Frame Control se ilustra en la figura B.2. El receptor leerá primero el bit B0 del campo Frame Control; el último bit que leerá será el B15. Figura B.2 Campo Frame Control A continuación se explican los subcampos del campo Frame Control. Protocol Version: Este subcampo indica la versión de protocolo que generó la trama. Un aparato que reciba una trama generada por una versión superior que la soportada por él, descartará la trama sin indicarlo a la estación emisora. Type y Subtype : El subcampo Type tiene 2 bits de longitud, y el subcampo Subtype posee 4 bits. Ambos subcampos identifican la función de una trama. Existen tres tipos de trama: Management (00), Control (01), y Data (10). Cada uno de estos tipos posee a su vez varios subtipos definidos. Por ejemplo, al tipo Data comúnmente se asocia el subtipo Data (0000); el tipo Control acepta, entre otros, los subtipos Request To Send (RTS) (1011), Clear To Send (CTS) (1100) y Akcnowledgment (ACK) (1101). To DS y From DS: Ambos subcampos tienen sentido cuando se trata de un BSS que está asociado a una infraestructura de red mayor, a través de un Sistema de Distribución (DS), e Anexos 13 indican que la trama está dirigida hacia (To) o proviene desde (From) dicho Sistema de Distribución. More Fragments: El subcampo More Fragments posee 1 bit de longitud, que se establece en 1 para todas las tramas de datos o administración que han sido fragmentadas y tienen otro(s) fragmento(s) de la unidad de datos actual a seguir. Para todas las otras tramas, este bit se establece en 0. Retry: El subcampo Retry es un bit con valor 1 para toda trama que corresponde a la retransmisión de una trama anterior. De otro modo, su valor es 0. Power Management : Este bit indica el modo de administración de energía en la estación emisora. Un valor 1 indica modo de ahorro de energía. Un valor 0 indica modo activo. More Data: Consiste en un bit, cuyo valor 1 indica a una estación en modo de ahorro de energía, que hay por lo menos una trama más, esperando ser transmitida hacia ella en el búfer del punto de acceso al BSS. WEP: Este subcampo consiste en un bit, cuyo valor se establece en 1 cuando el campo Frame Body contiene información, que ha sido procesada con el algoritmo WEP Wired Equivalent Privacy: Privacidad equivalente a cable). En caso contrario, su valor es 0. El algoritmo WEP provee un servicio de confidencialidad, que tiene como fin proveer funcionalidad para una LAN inalámbrica, equivalente a la provista por los atributos de seguridad inherentes a un medio alámbrico. Order: Este subcampo consiste en un bit, cuyo valor 1 indica que la trama contiene una unidad de datos de servicio MAC (MSDU: MAC Service Data Unit), o un fragmento de ella, que está siendo transferida estrictamente en orden. Este bit tiene valor 0 en todo otro caso. Campo Duration/ID En la mayoría de las tramas este campo contiene el valor de duración (Duration), que es utilizado para actualizar el Vector de Asignación de Red (NAV: Network Allocation Vector), vinculado con la función de detección virtual de portadora. El valor del campo Duration/ID se calcula para cada tipo de trama. Campos Address Hay cuatro campos Address en el formato de trama MAC. Se utilizan para señalar el Identificador de Conjunto de Servicio Básico (BSSID: Basic Service Set Identifier), la Dirección Fuente (SA: Source Address), la Dirección Destino (DA: Destination Address), la Dirección de Estación Transmisora (TA: Transmitter Address), y la Dirección de Estación Receptora (RA: Receiver Address). Ciertas tramas no contienen todos los campos de dirección. Anexos 14 Campo Sequence Control El formato del campo Sequence Control se ilustra en la figura B.3. Este campo consiste en 16 bits, y se divide en 2 subcampos: Sequence Number y Fragment Number. En seguida se explican el significado de los subcampos que componen este elemento. Figura B.3 Campo Sequence Control Sequence Number: Es un subcampo de 16 bits que indica el número de secuencia de una Unidad de Datos de Servicio MAC (MSDU: MAC Service Data Unit) o una Unidad de Datos de Protocolo de Administración MAC (MMPDU: MAC Management Protocol Data Unit). A cada MSDU o MMPDU transmitida por una estación se le asigna un número a través de un contador módulo 4096, que se incrementa sucesivamente en 1. Este número de secuencia se mantiene constante para cada retransmisión de una MSDU, MMPDU, o fragmento de ella. Fragment Number: Es un subcampo de 4 bits, que contiene el número correlativo de cada fragmento de una MSDU o MMPDU. Este número se establece en cero en el primer o único fragmento de una MSDU o MMPDU, y es incrementado en 1 para cada fragmento sucesivo. El número de fragmento permanece constante en todas las retransmisiones del fragmento. Campo Frame Body Frame Body es un campo de tamaño variable, que contiene información específica para cada tipo y subtipo de trama. Su tamaño varía entre 0 octetos y la máxima MSDU admisible. Campo FCS Este campo contiene una Secuencia de Chequeo de Trama (FCS: Frame Check Sequence), consistente en Código de Redundancia Cíclica (CRC: Cyclic Redundancy Code) de 32 bits. El FCS se calcula sobre todos los campos de la cabecera MAC y el campo Frame Body. B.2.2 Formato de Tipos Individuales de Trama Formato de Trama Request To Send (RTS) El formato de una trama RTS se define en la figura B.4. Anexos 15 Figura B.4 Formato de trama RTS El campo RA Receiver Address de la trama RTS es la dirección de la estación destino de la trama pendiente, de datos o administración, que se requiere transferir posterior al intercambio RTS/CTS. TA (Transmitter Address) es la dirección de la estación transmisora de la trama RTS. El valor contenido en el campo Duration/ID es el tiempo, en microsegundos, requerido para transmitir la trama de datos o administración pendiente, más un CTS, una trama ACK, y tres intervalos SIFS. Si la duración calculada incluye una fracción de microsegundo, el valor es redondeado al entero inmediatamente superior. Formato de Trama Clear To Send (CTS) El formato de una trama CTS se define en la figura B.5. Figura B.5 Formato de trama CTS El campo RA de la trama CTS se copia del campo TA de la trama RTS previa, a la que se responde con esta trama CTS. El valor de duración se obtiene del campo Duration/ID de la trama RTS previa, menos el tiempo, en microsegundos, requerido para transmitir la trama CTS y su intervalo SIFS. Si la duración calculada incluye una fracción de microsegundos, el valor es redondeado al entero inmediatamente superior. Formato de Trama de Acuse de Recibo (ACK) El formato de una trama ACK se define en la figura B.6. Anexos 16 Figura B.6 Formato de trama ACK El campo RA de la trama ACK se copia del campo Address 2 de la trama de administración o datos previa. Si el bit More Fragment del campo Frame Control de la trama de administración o datos inmediatamente anterior tenía valor 0, el valor de duración se establece 0. Si el bit More Fragment tenía valor 1, el valor de duración es el valor obtenido del campo Duration/ID de la trama de administración o datos previa, menos el tiempo, en microsegundos, requerido para transmitir la trama ACK y su intervalo SIFS. Si la duración calculada incluye una fracción de microsegundo, el valor es redondeado al entero inmediatamente superior. Formato de Trama de Datos El formato de una trama de datos es independiente del subtipo, y es presentada en la figura B.7. Figura B.7 Formato de trama de datos El contenido de los campos Address de la trama de datos depende del valor de los bits To DS y From DS, como se define en la tabla B.1. Cuando la tabla muestra el contenido del campo como no aplicable (N/A), dicho campo es omitido. To DS 0 0 1 1 From DS 0 1 0 1 Address 1 DA DA BSSID RA Address 2 SA BSSID SA TA Address 3 BSSID SA DA DA Address 4 N/A N/A N/A SA Tabla B.1 Contenido del campo Address en trama de datos Una estación utiliza el contenido del campo Address 2 para enviar el acuse de recibo, cuando es necesario. DA es el destino de la MSDU (o fragmento de ella) contenida en el campo Frame Body. Anexos 17 SA es la dirección de la entidad MAC que generó la MSDU (o su fragmento) contenida en el campo Frame Body. RA es la dirección de la estación en el punto de acceso al BSS, entendida como el recipiente inmediato de la trama. TA es la dirección de la estación en el punto de acceso al BSS, transmisora de la trama. BSSID es el identificador del conjunto de acceso básico que corresponda. B.3 Arquitectura MAC La arquitectura MAC puede ser descrita como se muestra en la figura B.8, provista de una Función de Coordinación por Punto (PCF: Point Coordination Function), basada en los servicios de la Función de Coordinación Distribuida (DCF: Distributed Coordination Function). Figura B.8 Arquitectura de MAC B.3.1 Función de Coordinación Distribuida (DCF) El método de acceso fundamental de la subcapa MAC del estándar IEEE 802.11b es una Función de Coordinación Distribuida (DCF) basada en Acceso Múltiple con Detección de Portadora Evitando Colisiones (CSMA/CA: Carrier Sense Multiple Access with Collision Avoidance). Esta DCF estará implementada en todas las estaciones del BSS. Para que una estación pueda transmitir, ella detectará el estado del medio para determinar si otra estación está transmitiendo. Si se establece que el medio no está ocupado, la transmisión puede llevarse a cabo. El algoritmo distribuido CSMA/CA obliga a que exista una brecha de duración mínima establecida entre secuencias contiguas de trama. Una estación transmisora se asegurará que el medio permanezca ocioso durante este tiempo requerido antes de intentar transmitir. Si el medio es detectado ocupado, la estación esperará hasta el fin de la transmisión actual. Una vez finalizada exitosamente la transmisión actual en el medio, pero antes de transmitir, la estación seleccionará un intervalo de cuenta regresiva aleatorio, y decrementará el contador de intervalo de cuenta regresiva mientras el medio permanezca ocioso. Anexos 18 En forma optativa, es posible utilizar un refinamiento del método, bajo diversas circunstancias, para minimizar el efecto de las colisiones: las estaciones transmisora y receptora intercambian tramas de control cortas (tramas Request To Send (RTS) y Clear To Send (CTS)) previo a la transmisión de los datos. B.3.2 Función de Coordinación por Punto (PCF) La MAC IEEE 802.11 también puede incorporar un método de acceso opcional llamado PCF, el cual sólo puede ser utilizado en configuraciones de red de infraestructura, es decir, cuando el BSS pertenece a una infraestructura de red mayor. Este método de acceso usa un Coordinador de Punto (PC: Point Coordinator), el cual operará en el punto de acceso al BSS, para determinar cuál estación posee actualmente el derecho a transmitir. La operación es esencialmente una encuesta (polling), con el PC desempeñando el papel de maestro o director de encuesta. La PCF usa un mecanismo virtual de detección de portadora, auxiliado por un mecanismo de prioridad de acceso. La PCF distribuirá información mediante tramas de administración para ganar el control del medio. Además, todas las transmisiones de tramas bajo la PCF pueden usar un espacio entre tramas (IFS: InterFrame Space) que es menor al espacio utilizado para tramas transmitidas bajo la DCF. El uso de un IFS menor implica que el tráfico coordinado por punto tendrá acceso prioritario al medio sobre el método de acceso vía DCF. La prioridad de acceso provista por la PCF puede ser utilizada para crear un método de acceso libre de contienda (CF: Contention-Free). El PC controla la transmisión de las estaciones con el fin de eliminar la contienda por un período limitado de tiempo. B.3.3 Coexistencia de DCF y PCF La DCF y la PCF coexistirán de una manera que permita a ambas operar concurrentemente dentro del mismo BSS. Cuando un PC esta operando en un BSS, los dos métodos de acceso se alternan, con un período libre de contienda (CFP: Contention-Free Period) seguido de un período de contienda (CP: Contention Period). No se tratará en mayor detalle la PCF, dado que se trata de un elemento opcional en el estándar, y no ha sido considerada en el desarrollo de esta memoria. B.3.4 Aspectos Generales de Fragmentación y Defragmentación Fragmentación es el proceso de particionar una MSDU o una MMPDU en tramas de nivel MAC más pequeñas: unidades de datos de protocolo MAC (MPDUs: MAC Protocol Data Units). La fragmentación crea MPDUs más pequeñas que la longitud de la MSDU o MMPDU original para incrementar la confiabilidad, aumentando la probabilidad de transmisión exitosa de la MSDU o MMPDU cuando las características del canal limitan la confiabilidad de la recepción para tramas más grandes. La fragmentación es realizada en cada transmisor inmediato. El proceso de recombinar MPDUs en una sola MSDU o Anexos 19 MMPDU es definido como defragmentación. La defragmentación es realizada en cada recipiente inmediato. Sólo MPDUs con una dirección de receptor único (unicast) serán fragmentadas. Tramas broadcast o multicast no serán fragmentadas, aunque sus longitudes excedan el umbral de fragmentación aFragmentationThreshold. Cuando se recibe una MSDU o una MMPDU dirigida con una longitud mayor a aFragmentationThreshold, la MSDU o MMPDU será fragmentada. La MSDU o MMPDU es dividida en MPDUs. Cada fragmento es una trama de longitud no mayor que aFragmentationThreshold. Es posible que cualquier fragmento sea más pequeño que aFragmentationThreshold. Una ilustración de fragmentación es mostrada en la figura B.9. Figura B.9 Fragmentación Las MPDUs resultantes de la fragmentación de una MSDU o MMPDU son enviadas como transmisiones independientes, cada una con un acuse de recibo (ACK) independiente. Esto permite que las retransmisiones ocurran por fragmento, en vez de por MSDU o MMPDU. A menos que haya interrupciones, debidas a limitaciones de ocupación del medio para una capa física determinada, los fragmentos de una misma MSDU o MMPDU serán enviados como una ráfaga dur ante en CP, usando una sola invocación del procedimiento de acceso al medio de la DCF. Los fragmentos de una misma MSDU o MMPDU durante un CFP son enviados como tramas individuales obedeciendo las reglas del procedimiento de acceso al medio dado por el PC. B.4 DCF El protocolo básico de acceso al medio es una Función de Coordinación Distribuida (DCF) que permite automáticamente compartir el medio entre capas físicas compatibles a través del uso de CSMA/CA y de un tiempo aleatorio de cuenta regresiva. Además, todo el tráfico unicast usa acuse de recibo positivo inmediato (trama ACK), programándose una retransmisión por parte del remitente si no se recibe ACK. El protocolo CSMA/CA está diseñado para reducir la probabilidad de colisión entre múltiples estaciones accediendo al medio, en el punto en que podrían mayormente ocurrir colisiones. Justo después que el medio queda ocioso, en seguida de un período ocupado, es cuando existe la mayor probabilidad de colisión. Esto es porque múltiples estaciones podrían haber estado esperando que el medio se volviera disponible otra vez. Esta es la situación que requiere un procedimiento de cuenta regresiva aleatorio para resolver los conflictos de contienda por el medio. Anexos 20 La detección de portadora será realizada tanto a través de un mecanismo físico como de uno virtual. El mecanismo de detección virtual de portadora se logra distribuyendo información de reservación, que anuncia el uso inminente del medio. El intercambio de tramas RTS y CTS antes de la trama de datos en sí, es un medio de distribución de esta información de reservación del medio. Las tramas RTS y CTS contienen un campo Duration/ID, que define el período de tiempo en que el medio está reservado para transmitir la trama de datos y la trama ACK de retorno. Todas las estaciones dentro del rango de recepción, tanto de la estación de origen (la cual transmite el RTS) o la de destino (que transmite el CTS), entenderán la reservación del medio. De este modo, si una estación fuese incapaz de recibir desde la estación de origen, con todo aún sabría acerca del uso inminente del medio si puede detectar la información desde la estación destino. Otro medio de distribución de la información de reservación del medio es el campo Duration/ID en tramas unicast. Este campo entrega el tiempo que el medio está reservado, hasta el fin del ACK inmediatamente siguiente, o en el caso de una secuencia de fragmentos, hasta el fin del ACK del fragmento siguiente. El intercambio RTS/CTS también desempeña un tipo de inferencia de colisión rápida y un chequeo de ruta de transmisión. Si el CTS de retorno no es detectado por la estación que originó el RTS, ésta puede repetir el proceso (luego de observar las otras reglas de uso del medio) más rápidamente que si la trama de datos completa hubiera sido transmitida y la trama ACK de retorno no hubiera sido detectada. Otra ventaja del mecanismo RTS/CTS ocurre cuando múltiples BSSs utilizando el mismo canal se sobreponen. El mecanismo de reservación del medio opera a través de los límites del BSS. El mecanismo RTS/CTS puede mejorar la operación en una situación típica donde todas las estaciones pueden recibir desde el punto de acceso, pero no pueden recibir desde todas las otras estaciones en el área de servicio básico, produciéndose el llamado problema del terminal oculto. El mecanismo RTS/CTS no puede ser usado para MPDUs con direcciones multicast o broadcast , porque hay múltiples destinatarios para RTS, y por tanto potenciales múltiples remitentes concurrentes de la respuesta CTS. El mecanismo RTS/CTS no necesita ser utilizado para cada transmisión de datos. Dado que las tramas adicionales RTS y CTS agregan ineficiencia por overhead, el mecanismo no siempre se justifica, especialmente para tramas de datos cortas. El uso del mecanismo RTS/CTS se encuentra bajo el control del umbral dot11RTSThreshold. Este atributo puede ser establecido en cada estación. Este procedimiento permite a las estaciones ser configuradas para usar RTS/CTS siempre, nunca, o sólo para tramas mayores que una longitud especificada. Anexos 21 Una estación configurada para no utilizar el mecanismo RTS/CTS, aún puede actualizar su mecanismo de detección virtual de portadora (con la información de duración contenida en una trama RTS o CTS recibida), y siempre responderá con un CTS al recibir un RTS dirigido a ella. B.4.1 Mecanismo de Detección de Portadora Las funciones de detección de portadora física y virtual, son usadas para determinar el estado del medio. Cuando cualquier función indica un medio ocupado, el medio será considerado ocupado; de otro modo, se considerará ocioso. El mecanismo de físico de detección de portadora será provisto por la capa física. La información será entregada a la MAC de una manera eficiente. El mecanismo virtual de detección de portadora será provisto por la MAC. Este mecanismo es denominado el Vector de Asignación de Red (NAV: Network Allocation Vector). El NAV mantiene una predicción del tráfico futuro en el medio, basado en la información de duración que es anunciada en las tramas RTS/CTS antes del intercambio de datos. El mecanismo de detección de portadora combina el estado del NAV y el estado del transmisor de la estación, con detección física de portadora, para determinar el estado ocioso/ocupado del medio. El NAV puede ser entendido como un contador, el cual cuenta en reversa hasta cero a ritmo constante; mientras sea distinto de cero, la indicación es ocupado. El medio será determinado como ocupado cada vez que la propia estación esté transmitiendo. B.4.2 Acuses de Recibo de Nivel MAC La recepción de algunas tramas, como se describe en ACK, requiere que la estación receptora responda con un acuse de recibo, generalmente una trama ACK, si la secuencia de chequeo (FCS: Frame Check Sequence) de la trama recibida es correcta. Esta técnica se conoce como acuse de recibo positivo. La no recepción de un ACK esperado indica a la estación fuente que ha ocurrido un error. Sin embargo, nótese que la estación de destino puede haber recibido la trama correctamente, y que el error puede haber ocurrido en la recepción de la trama ACK. Para quien origina el intercambio, esta condición es indistinguible de un error ocurrido en la trama inicial. B.4.3 Espacio entre Tramas (IFS) El intervalo de tiempo entre tramas es llamado el IFS (InterFrame Space). Una estación determinará que el medio está libre a través del uso de la función de detección de portadora para el intervalo especificado. Se definen cuatro diferentes IFSs para proveer de niveles de prioridad para acceder al medio inalámbrico; ellos son listados en orden, desde el más corto hasta el más largo. La figura B.10 muestra algunas de esas relaciones. Anexos a) b) c) d) 22 SIFS Short InterFrame Space PIFS PCF InterFrame Space DIFS DCF InterFrame Space EIFS Extended InterFrame Space La temporización de los IFSs será definida como ranuras de tiempo en el medio , y será fija para cada capa física. Los diversos tamaños son calculados a partir de atributos especificados por la capa física. Figura B.10 Algunas relaciones entre IFSs Short IFS (SIFS) El SIFS será usado previo a una trama ACK, a una trama CTS, y a la segunda o subsiguiente MPDU de una ráfaga de fragmentos. El SIFS es el tiempo desde el fin del último símbolo de la trama previa, al inicio del primer símbolo del preámbulo de la trama subsiguiente, como visto en la interfaz aérea. SIFS es el espacio entre tramas más corto. Se usará SIFS cuando las estaciones tengan el medio tomado y necesiten mantenerlo para completar una secuencia de intercambio de tramas. El usar la brecha más pequeña entre transmisiones en la secuencia de intercambio, previene que otras estaciones, que requieren esperar que el medio esté ocioso durante una brecha mayor de tiempo, intenten usar el medio; otorgando así prioridad a la completación de la secuencia de intercambio en progreso. PCF IFS (PIFS) El PIFS será usado sólo por estaciones operando bajo la PCF, para ganar prioridad de acceso al medio al inicio del CFP. Una estación usando la PCF podrá transmitir tráfico libre de contienda, después que su mecanismo de detección de portadora determine que el medio permanece ocioso hasta el borde de la ranura TxPIFS. DCF IFS (DIFS) El DIFS será usado por estaciones operando bajo la DCF, para transmitir tramas de datos (MPDUs) y de administración (MMPDUs). Una estación usando la DCF podrá transmitir si su mecanismo de detección de portadora determina que el medio está ocioso en el borde de Anexos 23 la ranura TxDIFS después de una trama correctamente recibida, y si su tiempo de espera ha expirado. Extended IFS (EIFS) El EIFS será usado por la DCF cada vez que la capa física indica a la MAC que una transmisión fue comenzada, pero no resultó en la recepción de una trama MAC con un valor de FCS correcto. El intervalo EIFS comenzará después que la capa física indique que el medio ha quedado ocioso tras la recepción de una trama errónea. La idea es proveer tiempo suficiente para que otra estación se percate de la transmisión que, a juicio de esta estación, fue errónea. La recepción de una trama libre de error durante el EIFS resincroniza la estación con el verdadero estado ocupado/ocioso del medio, de modo que el EIFS es terminado y el acceso normal al medio continúa. B.4.4 Cuenta Regresiva Aleatoria Una estación que desea iniciar la transferencia de MPDUs de datos y/o MMPDUs de administración, invocará el mecanismo de detección de portadora para determinar el estado ocupado/ocioso del medio. Si el medio está ocupado, la estación esperará hasta que se determine que el medio ha permanecido ocioso, sin interrupción, por un período de tiempo igual a DIFS, cuando la última trama detectada en el medio fue recibida correctamente. Después de ese tiempo ocioso DIFS, la estación generará un período de cuenta regresiva aleatorio, para una suspensión adicional antes de transmitir; para ello utilizará la ecuación (1). Este proceso minimiza colisiones durante la contienda entre múltiples estaciones, que han estado esperando por el mismo evento. Tiempo_de_cuenta_regresiva = Random() x aSlotTime (1) donde: Random() = Entero pseudo aleatorio obtenido de una distribución uniforme sobre el intervalo [0,CW], donde CW es un entero en el rango aCWmin y aCWmax, aCWmin ≤ CW ≤ aCWmax . aSlotTime = El valor de dicha característica de la capa física. El parámetro ventana de contienda (CW: Contention Window) tomará un valor inicial de aCWmin. CW tomará el siguiente valor en la serie cada vez que haya un reintento debido a una transmisión infructuosa, hasta que CW alcance el valor aCWmax. Un reintento se define como la secuencia entera de tramas enviadas, separadas por intervalos SIFS, en un intento por entregar una MPDU. Una vez que se alcanza aCWmax , CW mantendrá este valor para cada reintento sucesivo. Esto mejora la estabilidad del protocolo de acceso bajo condiciones de alta carga. Ver figura B.11. El valor de CW será restablecido a aCWmin después de cada intento exitoso de transmitir una MSDU o MMPDU. El conjunto de valores de CW serán potencias enteras de 2 Anexos 24 secuencialmente ascendentes, menos 1, comenzando con un valor aCWmin especificado por la capa física. Figura B.11 Ejemplo de incremento exponencial de CW B.4.5 Procedimiento de Acceso DCF El método de acceso CSMA/CA es el fundamento de la DCF. Acceso Básico Acceso Básico se refiere al mecanismo central que una estación usa para determinar si puede transmitir. En general, una estación puede transmitir una MPDU pendiente cuando determine que el medio está ocioso por un período mayor o igual a DIFS. Si, bajo esas condiciones, el medio es determinado ocupado cuando una estación desea iniciar una transferencia de tramas, se seguirá el algoritmo de espera aleatorio descrito en el siguiente punto. Figura B.12 Método de acceso básico Anexos 25 Procedimiento de Cuenta Regresiva El procedimiento de cuenta regresiva será invocado por una estación para transferir una trama, cuando el mecanismo virtual o físico de detección de portadora determine al medio ocupado. Este procedimiento también será invocado cuando una estación transmisora concluye que su transmisión ha fallado porque no recibe respuesta CTS o acuse de recibo ACK. Figura B.13 Procedimiento de cuenta regresiva Para comenzar el procedimiento de cuenta regresiva, la estación establecerá su temporizador de cuenta regresiva usando la ecuación (1). Las ranuras de cuenta regresiva se registran después de un período DIFS durante el cual el medio se determina ocioso. Una estación realizando el procedimiento de cuenta regresiva, usará el mecanismo de detección de portadora para determinar si hay actividad durante cada ranura de cuenta regresiva. Si no se indica actividad en el medio durante una ranura de cuenta regresiva, entonces el procedimiento decrementará su tiempo de cuenta regresiva en aSlotTime. Si se determina que el medio está ocupado en cualquier momento durante una ranura de cuenta regresiva, entonces se suspende el procedimiento de cuenta regresiva; esto es, el temporizador de cuenta regresiva no se decrementará para esa ranura. El procedimiento se reanuda una vez que el medio se determina ocioso durante un DIFS, sin restablecer el valor del temporizador de cuenta regresiva. La transmisión comenzará una vez que el temporizador alcance el valor cero. Si la transmisión es exitosa, el valor de CW se revierte a aCWmin antes de elegir un nuevo intervalo de cuenta regresiva. El efecto de este procedimiento es que cuando múltiples estaciones están esperando y su cuenta regresiva avanza, entonces la estación que selecciona el tiempo más pequeño usando la función aleatoria ganará la contienda. Procedimientos de Recuperación y Límites de Retransmisión Anexos 26 Recuperar errores siempre es responsabilidad de la estación que inicia el intercambio de tramas. Un error puede deberse, por ejemplo, a que no se retorne una trama CTS después que una RTS sea transmitida. Esto puede suceder debido a una colisión con otra transmisión, debido a interferencias en el canal, o porque la estación que recibe la trama RTS tiene una condición activa de detección virtual de portadora. Si la estación remitente infiere que su transmisión falló, y la trama es considerada ``larga'', se intentará retransmitir hasta que la transmisión sea exitosa, o hasta alcanzar el límite de reintentos aLongRetryLimit. Se define también un límite dot11ShortRetryLimit de reintentos de transmitir una trama “corta”. Una trama es considerada larga cuando el contenido de su campo Frame Body supera el umbral dot11RTSThreshold (la trama será precedida por intercambio RTS/CTS); en caso contrario, es considerada corta. Además, todas las tramas RTS son consideradas cortas. Estableciendo y Restableciendo el NAV Figura B.14 Establecimiento de NAV Las estaciones que reciban una trama válida actualizarán su NAV con la información recibida en el campo Duration/ID, pero sólo cuando el valor del nuevo NAV es mayor que el valor actual y la trama no está dirigida a la estación receptora. La Figura B.14 muestra el NAV para estaciones que reciben la trama RTS, mientras otras estaciones pueden recibir sólo la trama CTS, resultando en la barra NAV inferior (con excepción de la estación a la cual está direccionado el RTS). Control del Canal Se usa el SIFS para proveer un mecanismo eficiente de entrega de MSDU. Una vez que la estación ha contendido por el canal, la estación continuará enviando fragmentos hasta que todos los fragmentos de una MSDU o MMPDU hayan sido enviados, hasta que falle un acuse de recibo, o hasta que la estación quede restringida para enviar fragmentos adicionales, debido a límites de tiempo de permanencia en el medio. La figura B.15 ilustra la transmisión de una MSDU de múltiples fragmentos usando SIFS. Anexos 27 Figura B.15 Transmisión de una MSDU de múltiples fragmentos usando SIFS Cuando la estación fuente transmite un fragmento, liberará el canal, inmediatamente monitoreará el acuse de recibo. Cuando la estación destino ha finalizado el envío del acuse de recibo, el SIFS siguiente será reservado para que la estación fuente continúe (si es necesario) con otro fragmento. La estación que envía el acuse de recibo no transmitirá inmediatamente después de él. El proceso de enviar múltiples fragmentos después de contender por el canal se define como ráfaga de fragmentos. Si la estación fuente no recibe un acuse de recibo, intentará retransmitir la MPDU fallada u otra, después de realizar el proceso de contienda y el procedimiento de cuenta regresiva. Después que una estación contiende por el canal para retransmitir un fragmento de una MSDU, comenzará con el último fragmento que no fue reconocido. La estación destino recibirá los fragmentos en orden (dado que la fuente los envía en orden, y son reconocidos individualmente). Es posible, sin embargo, que la estación destino reciba fragmentos duplicados. Es responsabilidad de la estación destino detectar y descartar duplicados. Una estación transmitirá después de un SIFS sólo bajo las siguientes condiciones durante una ráfaga de fragmentos: - La estación acaba de recibir un fragmento que requiere acuse de recibo. La fuente ha recibido el acuse de recibo del fragmento previo y tiene más fragmentos de la misma MSDU por transmitir. Uso de RTS/CTS con Fragmentación Cuando una trama de datos es fragmentada, el campo Duration/ID de las tramas RTS/CTS previas define la duración del primer fragmento de trama, más el acuse de recibo (ACK) correspondiente. Este mismo campo, en cada fragmento y en el ACK, especifica la duración total del próximo fragmento y su ACK. Anexos 28 Figura B.16 RTS/CTS con MSDU fragmentada Cada trama contiene información que define la duración de la próxima transmisión. La información de duración en la trama RTS será usada para actualizar el NAV, indicando un medio ocupado hasta el fin del ACK 0, asimismo la información en la trama CTS. Tanto el fragmento 0 como el ACK 0 contendrán información de duración para actualizar el NAV para indicar ocupado hasta el fin de ACK 1. Esto continuará hasta el último fragmento, que indica hasta el fin de ACK 2. ACK 2 indica una duración adicional cero. En el caso en que un ACK es enviado, pero no recibido por la estación fuente, las estaciones que escucharon el fragmento o el ACK, marcarán el canal ocupado al actualizar su NAV. Este es el peor caso y se muestra en la figura B.17. Si un ACK no es enviado por la estación destino, las estaciones que sólo pueden oírla a ella no actualizarán su NAV y pueden intentar acceder al canal cuando sus NAVs lleguen a cero. Figura B.17 RTS/CTS con prioridad de transmisor y ACK perdido Procedimiento CTS Una estación direccionada por un RTS transmitirá una trama CTS después de un período SIFS si su NAV indica que el medio está libre. En caso contrario, esa estación no responderá a la trama RTS. Después de transmitir una trama RTS, la estación fuente esperará un intervalo CTSTimeout. Si no se registra recepción en dicho intervalo, la estación concluirá que la transmisión del RTS ha fallado e invocará su procedimiento de cuenta regresiva. El reconocimiento de una trama CTS válida enviada por el recipiente del RTS previo, será interpretado como una respuesta exitosa, permitiendo continuar la secuencia de tramas. El reconocimiento de cualquier otra trama válida, será interpretado como una falla en la transmisión del RTS. En Anexos 29 tal caso, la estación invocará su procedimiento de cuenta regresiva y podrá procesar la trama recibida. B.4.6 Procedimiento de Transferencia de MPDU Una estación usará un intercambio RTS/CTS sólo cuando la longitud de la MPDU sea mayor que el umbral de longitud indicado por el atributo dot11RTSTheshold. El valor 0 en el atributo dot11RTSTheshold será usado para indicar que todas las MPDUs serán entregadas usando RTS/CTS. Valores mayores a la máxima longitud de MSDU indicarán que todas las MPDUs serán entregadas sin intercambio RTS/CTS. Con o sin el uso de RTS/CTS, la estación destino seguirá el procedimiento de ACK. B.4.7 Procedimiento ACK Se transmitirá un ACK tras la recepción de una trama unicast que requiera acuse de recibo, pero no si se recibe una trama broadcast o multicast. La transmisión comenzará después de un período SIFS, sin respetar el estado ocupado/ocioso del medio. Figura B.18 MPDU unicast y ACK La estación fuente esperará una cantidad ACKTimeout de tiempo sin recibir una trama ACK antes de concluir que la MPDU falló (ver figura B.18). En ese caso, invocará su procedimiento de cuenta regresiva al expirar el intervalo ACKTimeout. Si recibe una transmisión, esperará hasta el fin de ésta para determinar si ha habido éxito. El reconocimiento de un ACK válido enviado por el recipiente de la MPDU previamente transmitida, será interpretado como un acuse de recibo exitoso, permitiendo a la secuencia de tramas continuar, o finalizar sin reintentos. El reconocimiento de cualquier otra cosa, incluyendo tramas válidas, será interpretado como una falla en la transmisión de la MPDU. En ese caso, la estación invocará su procedimiento de cuenta regresiva y puede procesar la trama recibida. Anexos 30 B.4.8 Relaciones de Tiempo en la DCF Las relaciones entre las IFS se definen como ranuras de tiempo en el medio. Los atributos asociados son provistos por la capa física específica (ver figura B.19). Los tiempos se miden desde el fin del último símbolo de una trama hasta el inicio del primer símbolo de la trama siguiente en el medio. Figura B.19 Relaciones de tiempo en la DCF aSIFSTime y aSlotTime son fijados por la capa física. PIFS y DIFS son derivados de las siguientes ecuaciones, como ilustra la figura B.19. PIFS = aSIFSTime + aSlotTime (2) DIFS = aSIFSTime + 2 x aSlotTime (3) La figura B.19 ilustra la relación entre SIFS, PIFS y DIFS como son medidos en el medio y las diferentes límites de ranura TxSIFS, TxPIFS, y TxDIFS. Estos límites de ranura definen cuándo la MAC debe encender el transmisor para ajustarse a los diferentes tiempos de IFS en el medio. B.5 Fragmentación La MAC puede fragmentar y reensamblar MSDUs o MMPDUs. Los mecanismos de fragmentación y defragmentación permiten retransmisión de fragmentos. La longitud de un fragmento MPDU será un número igual de octetos para todos los fragmentos, excepto el último, el cual puede ser menor. La longitud de un fragmento MPDU siempre será un número par de octetos, excepto para el último fragmento, en que puede ser impar. La longitud de un fragmento nunca será mayor que Anexos 31 aFragmentationThreshold, excepto en casos muy especiales que no son de interés en el presente trabajo. Al momento de transmitir datos, el número de octetos en el fragmento será determinado por aFragmentationThreshold y el número de octetos en la MPDU que han de ser asignados a un fragmento en el instante que éste es construido por primera vez. Una vez que el fragmento es transmitido por primera vez, su contenid o y tamaño serán fijos hasta ser entregado exitosamente a la estación destino. La estación fuente mantendrá un temporizador para cada MSDU en transmisión. El atributo aMaxTransmitMSDULifetime especifica la cantidad de tiempo máxima permitida para transmitir una MSDU. El temporizador parte al intentar transmitir el primer fragmento de la MSDU. Si el temporizador excede aMaxTransmitMSDULifetime, entonces todos los fragmentos remanentes son descartados por la estación fuente y no se intentará completar la transmisión de la MSDU. B.6 Defragmentación Cada fragmento contiene información para permitir reensamblar la MSDU o MMPDU completa a partir de sus fragmentos constituyentes. La cabecera de cada fragmento contiene la siguiente información que es usada por la estación destino para reensamblar la MSDU o MMPDU: - - Tipo de trama Dirección del remitente, obtenida del campo Address2 Dirección destino Campo Sequence Control: Este campo permite a la estación destino chequear que todos los fragmentos entrantes pertenecen a la misma MSDU o MMPDU, y la secuencia en la cual los fragmentos deben ser reensamblados. El número de secuencia en el campo Sequence Control es el mismo para todos los fragmentos, mientras que el número de fragmento en el mismo campo se incrementa para cada fragmento. Indicador More Fragments: Indica al destinatario que este no es el último fragmento de la MSDU o MMPDU. Sólo el último o único fragmento tendrá este bit en cero. Todos los otros fragmentos de la MSDU o MMPDU tendrán un uno. La estación destino reconstruirá la MSDU o MMPDU combinando los fragmentos en orden. Si aun no se ha recibido el fragmento con el bit More Fragments establecido a cero, entonces la estación destino sabe que la MSDU o MMPDU aun no está completa. Tan pronto como la estación recibe el fragmento con el bit More Fragments establecido en cero, la estación sabe que no pueden ser recibidos más fragmentos para la MSDU o MMPDU. Anexos 32 La estación destino mantendrá un temporizador de recepción para cada MSDU o MMPDU siendo recibida. El atributo aMaxReceiveLifetime especifica la cantidad máxima de tiempo permitida para recibir una MSDU. El temporizador se inicia al recibir el primer fragmento. Si el temporizador excede aMaxReceiveLifetime, entonces todos los fragmentos recibidos de la MSDU o MMPDU son descartados por la estación destino. Si se reciben fragmentos adicionales después que se ha excedido aMaxReceiveLifetime, se enviarán acuses de recibo, pero se descartarán los fragmentos. Para reensamblar en forma correcta MPDUs en MSDU o MMPDU, una estación destino descartará cualquier fragmento duplicado, sin embargo, enviará el acuse de recibo respectivo.