• No se han encontrado resultados

4.2 Diseño de la Unidad Estación Subscritora (SS)

4.2.5 Módulo para la realización de las funciones MAC

4.2.5.2 Proceso bwa_wm_child

El proceso hijo Bwa_wm_child, mostrado en la figura 4.10, se encarga de procesar y redirigir los paquetes provenientes de la BS de tipo MAP así como los paquetes generados por las fuentes de información de aplicación. Cada vez que el módulo MAC de una SS recibe alguno de estos paquetes, invoca a este proceso desde los estados App_Traffic o MAP_Arrival. El proceso contempla una cola FIFO (First In, First Out) mediante la cual se atienden los paquetes conforme se reciben. Pueden incorporarse funciones que permitan configurar distintos niveles de prioridad para cumplir con los requerimientos de QoS necesarios para el funcionamiento de aplicaciones en tiempo real como por ejemplo, voz o videoconferencia. En nuestro caso en particular, sólo se tiene una fuente generadora de tráfico por cada nodo, por lo que no fue necesaria la implementación de algoritmos de calidad de servicio en los nodos. También se incluyen funciones específicas para la

Figura 4.10. Proceso bwa_wm_child.

resolución de colisiones, en específico, el algoritmo exponencial vuelta atrás o Exponential Back-up.

Cada uno de los estados en el proceso hijo corresponde a situaciones específicas de la cola de procesamiento, de la existencia de transmisiones pendientes, de solicitudes sin resolver y de la ocurrencia previa de colisiones. La tabla 4.1 resume las características de

Estado Cola vacía Transmisiones pendientes Solicitudes sin resolver En deferencia Init Sí No No No Q_Empty Sí No No No No_Request_Outstanding No No No No Tx_Opp_Pending No Sí No No Request_Outstanding No No Sí No Collision_Resolution No No -- Sí

cada estado

A continuación se describen las funciones de cada uno de los estados de la tabla 4.1.

Estado init

Ejecutivas de Entrada

1) Inicialización de las variables de estado enlistadas a continuación. a) Transmisión programada, tx_scheduled.

b) Cola no vacía, queue_occupied. c) Solicitud sin respuesta, req_pending.

d) Tiempo de espera de respuesta, ack_wait_time. e) Número de intentos de transmisión, attempts. f) En deferencia tras colisión, defer.

g) Ventana actual del algoritmo backoff, backoff.

h) En espera de confirmación después de una transmisión de información, data_ack_pending.

i) Inicio de la ventana del algoritmo backoff, data_backoff_start. j) Fin de la ventana del algoritmo backoff, data_backoff_end. k) Longitud en bytes del paquete encriptado, encryption_sz. l) Paquetes en contención, contention_hold.

m) Paquetes enviados, pk_snt.

n) Slots de contención transcurridos, cs_passed. o) Slots de contención pendientes, cs_remaining.

p) Longitud del encabezado de la carga útil, payload_header_size.

q) Longitud del encabezado de la carga útil con solicitud, payload_header_size_with_req.

r) Longitud del encabezado de la carga útil con solicitud de confirmación, payload_header_size_with_ack_reqed.

s) Longitud del encabezado de paquetes concatenados, concat_header_size. t) Longitud del encabezado de paquetes concatenados con solicitud de

confirmación, concat_header_size_with_ack_reqed.

u) Longitud del paquete de solicitud de asignación de ancho de banda, request_packet_size.

v) Longitud de la información de solicitud de asignación de ancho de banda, request_data_length.

2) Obtención de los parámetros SID, dirección de la SS, tiempo de retraso por propagación, y, en caso de aplicar, de QoS, fragmentación, piggyback y UGS.

Estado Q_Empty

En este estado no existe información por transmitir en la cola de espera, solicitudes pendientes ni transmisiones previamente programadas. Sólo son válidos los eventos de recepción de mapas, MAP_EVENT, o de paquetes, PKT_EVENT.

Ejecutivas de Salida

1) Durante la permanencia en el presente estado se identifica el tipo de evento de acuerdo con la interrupción generada. Los eventos válidos son PKT_EVENT o MAP_EVENT.

2) En caso de que haya ocurrido un PKT_EVENT, se verifica que esté habilitado y activo el servicio UGS. De ser así, se busca un minislot disponible para iniciar la transmisión, produciéndose la interrupción PKT_TX_OP que conduce al estado Tx_Opp_Pending. De lo contrario, iniciará un periodo de deferencia hasta encontrar alguna oportunidad válida. Lo anterior se realiza mediante el algoritmo exponencial Backoff. La interrupción generada es PKT_NO_TX_OP hacia el estado No_Request_Outstanding.

3) Si ocurre un MAP_EVENT, al producirse la interrupción MAP, se almacenará la información contenida en el paquete y, posteriormente, se desechará. El proceso permanecerá en el estado Q_Empty.

Estado No_Request_Outstanding

Aunque en este estado existen paquetes en la cola de espera, no existen solicitudes de asignación de ancho de banda pendientes de ser resueltas ni se han realizado previamente transmisiones. Tampoco se ha activado la deferencia (producida por la ejecución del algoritmo Backoff). Los eventos válidos son la recepción de un paquete de aplicación, PKT_EVENT, que, además de agregarlo a la cola de espera, no genera ninguna acción adicional, y la de un paquete mapa, MAP_EVENT, en el que se busca alguna oportunidad válida para la transmisión de los paquetes acumulados en la cola.

Ejecutivas de Salida

1) Si ocurre un MAP_EVENT, al producirse la interrupción MAP, se buscará una oportunidad para transmitir, si no se encuentra ninguna se permanecerá en este estado, en caso contrario, se pasará al estado Tx_Opp_Pending.

Estado Tx_Opp_Pending

Ejecutivas de Salida

1) Para salir de este estado, se debe enviar un mensaje que se tiene pendiente, ya sea en una región de contención ó reservada.

Estado Collision_Resolution

Cuando se transmite en una región de contención es preciso esperar una respuesta de la estación base, dicha respuesta se recibe a través de un mapa, cuando no se recibe hay que deferir, eso se hace en este estado mientras que se aplica el algoritmo exponential backoff.

Ejecutivas de Salida

1) Si ocurre el evento MAP_EVENT, se debe buscar una confirmación de la transmisión, si ésta ocurre indica que no hubo colisiones y que la estación base recibió el mensaje enviado, de no recibirse, se deberá deferir nuevamente utilizando el algoritmo exponential backoff.

Estado Request_Outstanding

Ejecutivas de Salida

1) Para salir de este estado, se debe enviar un mensaje que se tiene pendiente, ya sea en una región de contención ó reservada.