8. ANEXO C - Universidad de Sevillabibing.us.es/proyectos/abreproy/12135/fichero/Anexo+C.pdfcolumnas...

5
Página 118 8. ANEXO C 8.1. Calculo de la energía consumida En este anexo estableceremos las principales pautas para el cálculo de la energía consumida. Para ello nos valdremos de la herramienta de análisis de redes Wireshark y del lenguaje de programación AWK [TAWK] para procesar los archivos de texto generados con Wireshark. Las capturas realizadas con la estación Sniffer durante cada una de las pruebas se guardan en formato “pcap”. A partir de este fichero en formato, filtramos los paquetes capturados a partir de la dirección MAC de cada una de las estaciones implicadas y del AP mediante el siguiente filtro. wlan.sa==MAC_AP || wlan.sa==MAC_STAT1 || wlan.sa==MAC_STAT2 || De este modo, nos quedaremos solo con los paquetes emitidos por las estaciones involucradas en nuestro escenario. Para traducir este fichero ya filtrado a un formato de texto que sea legible por AWK tendremos que exportar dicho fichero a formato “ csv” (File - > Export -> As “CSV”). A partir del fichero en este formato de texto, podremos observar por columnas parámetros de interés de los paquetes filtrados como el tiempo de captura del paquete, la tasa de transmisión del paquete, las direcciones MAC, la longitud de los paquetes, protocolo utilizado, etc. Estos parámetros que visualizamos pueden modificarse desde Wireshark (Edit -> Preferences -> Column) antes de hacer la exportación. Los ficheros con formato csvpueden encontrase en el directorio archivos/pruebas del CD adjunto dentro de las carpetas correspondiente a las pruebas en las que se evalúe la energía. FIGURA 77: EJEMPLO DE FICHERO EN FORMATO "CSV" El fichero en formato “csv” se utilizará como entrada al fichero de cálculo de la energía consumida. Como se calcula la energía consumida por el adaptador inalámbrico con y sin PSM, existirán dos ficheros diferentes donde se realizan los cálculos, pero el fichero de entrada donde se muestran los paquetes capturados en el mismo para cada prueba. En estos script creados en lenguaje AWK, existe una correspondencia entre las columnas de la aplicación Wireshark exportadas y las variables que aparecen en los script, y que utilizaremos para el cálculo de energía. Dicha correspondencia se muestra a continuación: $4 se corresponde con el tiempo en el que se capturó el paquete. $6 se corresponde con la tasa de transmisión empleada

Transcript of 8. ANEXO C - Universidad de Sevillabibing.us.es/proyectos/abreproy/12135/fichero/Anexo+C.pdfcolumnas...

Page 1: 8. ANEXO C - Universidad de Sevillabibing.us.es/proyectos/abreproy/12135/fichero/Anexo+C.pdfcolumnas parámetros de interés de los paquetes filtrados como el tiempo de captura del

Página 118

8. ANEXO C

8.1. Calculo de la energía consumida

En este anexo estableceremos las principales pautas para el cálculo de la energía

consumida. Para ello nos valdremos de la herramienta de análisis de redes Wireshark y

del lenguaje de programación AWK [TAWK] para procesar los archivos de texto generados

con Wireshark.

Las capturas realizadas con la estación Sniffer durante cada una de las pruebas se

guardan en formato “pcap”. A partir de este fichero en formato, filtramos los paquetes

capturados a partir de la dirección MAC de cada una de las estaciones implicadas y del AP

mediante el siguiente filtro.

wlan.sa==MAC_AP || wlan.sa==MAC_STAT1 || wlan.sa==MAC_STAT2 || …

De este modo, nos quedaremos solo con los paquetes emitidos por las estaciones

involucradas en nuestro escenario. Para traducir este fichero ya filtrado a un formato de

texto que sea legible por AWK tendremos que exportar dicho fichero a formato “csv” (File -

> Export -> As “CSV”). A partir del fichero en este formato de texto, podremos observar por

columnas parámetros de interés de los paquetes filtrados como el tiempo de captura del

paquete, la tasa de transmisión del paquete, las direcciones MAC, la longitud de los

paquetes, protocolo utilizado, etc. Estos parámetros que visualizamos pueden modificarse

desde Wireshark (Edit -> Preferences -> Column) antes de hacer la exportación. Los

ficheros con formato “csv” pueden encontrase en el directorio archivos/pruebas del CD

adjunto dentro de las carpetas correspondiente a las pruebas en las que se evalúe la

energía.

FIGURA 77: EJEMPLO DE FICHERO EN FORMATO "CSV"

El fichero en formato “csv” se utilizará como entrada al fichero de cálculo de la

energía consumida. Como se calcula la energía consumida por el adaptador inalámbrico

con y sin PSM, existirán dos ficheros diferentes donde se realizan los cálculos, pero el

fichero de entrada donde se muestran los paquetes capturados en el mismo para cada

prueba. En estos script creados en lenguaje AWK, existe una correspondencia entre las

columnas de la aplicación Wireshark exportadas y las variables que aparecen en los script,

y que utilizaremos para el cálculo de energía. Dicha correspondencia se muestra a

continuación:

$4 se corresponde con el tiempo en el que se capturó el paquete.

$6 se corresponde con la tasa de transmisión empleada

Page 2: 8. ANEXO C - Universidad de Sevillabibing.us.es/proyectos/abreproy/12135/fichero/Anexo+C.pdfcolumnas parámetros de interés de los paquetes filtrados como el tiempo de captura del

Página 119

$8 se corresponde con la dirección MAC origen que envía el paquete

$14 se corresponde con la longitud del paquete

El código fuente para el script que calcula la energía real consumida por el

adaptador inalámbrico se muestra a continuación. Este fichero puede encontrarse en el

directorio archivos/pruebas/energía del CD adjunto, con el nombre de “ener.awk”.

#! /bin/awk -f

BEGIN{intervalo=10;lt=0; lintervalo=intervalo; count_packet=0;

FS="\"";

STA1="c8:be:19:51:7f:da";

STA2="c8:be:19:51:7f:dd";

STA3="c8:be:19:51:7f:db";

cp_wifi=0;

tx=0; rx=0; listen=0}

{

#tiempo absoluto en segundos

time=$4

count_packet++

if(count_packet==1) {

t0=time

lt=t0

}

t=(time - t0)

#tasa de transmisión en Mbps

rate=$6

#longitud del paquete en Bytes

L=$14-26

#tiempo empleado en el paquete en microsegundos

duracion=L*8/(rate)

#direccion MAC fuente

mac_src=$8

#paquetes tx por cada una de las 3 STAT wifi

if ((mac_src == STA1) || (mac_src == STA2) || (mac_src == STA3)) {

cp_wifi++

if(duracion > 0) tx += duracion

}

#paquetes tx por todas STAT y AP

if(duracion > 0) tx_totales += duracion

if(t>=(lintervalo)) {

tx=tx/3

rx=tx_totales-tx

listen=1000000*(t-lt)-tx-rx

if(lintervalo==intervalo)

print ("Tiempo_TX(us), Tiempo_RX(us), Tiempo_Listen(us),

Tiempo(s)")

printf ("%f, %f, %f, %f\n",tx, rx, listen, t)

tx=0

rx=0

tx_totales=0

listen=0

Page 3: 8. ANEXO C - Universidad de Sevillabibing.us.es/proyectos/abreproy/12135/fichero/Anexo+C.pdfcolumnas parámetros de interés de los paquetes filtrados como el tiempo de captura del

Página 120

lt = t

lintervalo += intervalo

}

}

Al comienzo del código, se define que los campos delimitadores de las variables

sean las comillas y se inicializan las variables a utilizar. Concretamente se establece que el

intervalo de cómputo de energía sea de 10 segundos, es decir, que cada 10 segundos

obtendremos unos valores de tiempos en transmisión, recepción y escucha que

posteriormente traduciremos a energía consumida.

Mediante la tasa de transmisión del paquete y la longitud de este, logramos estimar

el tiempo de transmisión de dicho paquete. Este tiempo de transmisión se acumula en dos

variables, una que lleva el tiempo de transmisión solo de los paquetes transmitidos por las

tres estaciones inalámbricas, y otra variable que computa el tiempo de transmisión de

todas las estaciones y del AP. De esta forma, podemos conocer el tiempo que una estación

inalámbrica cualquiera ha empleado en transmitir sus paquetes. Si del tiempo total de

transmisión restamos el tiempo que una estación inalámbrica cualquiera ha estado

transmitiendo, tenemos el tiempo que ha estado recepcionando paquetes, ya que los

paquetes que yo como estación no haya transmitido los he tenido recepcionar para saber

si son o no para mí. El tiempo de escucha será el tiempo restante hasta completar el

intervalo de cómputo. De este modo, podemos calcular los tiempos acumulados durante

cada intervalo por una estación cualquiera para transmisión, recepción y escucha.

En el caso de la implementación del PSM (Power Saving Mode) se calcula también

tiempo que la estación ha permanecido dormida. Este fichero puede localizarse en el

directorio archivos/pruebas/energía del CD adjunto, con el nombre de “ener_PSM.awk”. A

continuación se muestra un extracto de dicho script con las modificaciones introducidas

sobre el script original para inferir el cómputo de energía consumida.

#! /bin/awk -f

BEGIN{intervalo=10;lt=0; lintervalo=intervalo; count_packet=0;

… # variables para PSM (suponemos 802.11b)

Tslot=10;

DISIFS=70;

PSPOLLH=26;

PSPOLLF=20;

BEACON = 100000;

ECW = 15;

Tswap = 1000;

if(t>=lintervalo) {

tx=tx/3

rx=tx_totales-tx

Page 4: 8. ANEXO C - Universidad de Sevillabibing.us.es/proyectos/abreproy/12135/fichero/Anexo+C.pdfcolumnas parámetros de interés de los paquetes filtrados como el tiempo de captura del

Página 121

listen=1000000*(t-lt)-tx-rx

#resultados para PSM

psmtx=tx + (cp_wifi_inter/3)*(PSPOLLH*8 + PSPOLLF*8/(rate))

psmrx=rx + (cp_wifi_inter/3)*(PSPOLLH*8 + PSPOLLF*8/(rate))*2

psmidle = (ECW*Tslot)*(cp_wifi_inter/3) + DISIFS * cp_wifi_inter

+ 1000000*(t-lt)/BEACON * Tswap

psmsleep = 1000000*(t-lt)-psmtx-psmrx-psmidle

if(lintervalo==intervalo)

print("PSM: Tiempo_TX(us), Tiempo_RX(us), Tiempo_Listen(us),

Tiempo_Sleep(us), Tiempo(s)")

printf("%f, %f, %f, %f, %f\n",psmtx, psmrx, psmidle, psmsleep, t)

… psmtx=0;

psmrx=0;

psmidle=0;

psmsleep=0;

}

}

Para el cálculo del tiempo que una estación inalámbrica se encuentra en

transmisión, recepción, escucha o dormida, se realizan las siguientes consideraciones

adicionales sobre los cálculos sin PSM:

1º- Al comienzo de cada trama beacon que emite el AP, las estaciones transmiten y

reciben todo los paquetes que tuvieran en cola para ello y luego se duermen.

2º- Se producen cambios en el tiempo de transmisión al añadir las tramas PS-POLL

que se envían por cada trama transmitida.

3º- Se producen cambios en el tiempo de recepción al añadir la recepción de las

tramas PS-POLL de las otras dos estaciones inalámbricas.

4º- Se producen cambios en el tiempo de escucha o idle:

a) Por cada trama que transmite una estación, esta misma estación debe

esperar un tiempo dado por el tamaño medio de la ventana de acceso al

canal. En el estándar 802.11b este tamaño se cuenta por el número de time

slots que tengo que esperar. El valor de un time slot es 10 microsegundos.

b) De las características del protocolo de acceso al medio DCF (Distributed

Coordination Function) sabemos que por cada una de las tramas que han

sido transmitidas por cada una de las estaciones inalámbricas, debo

esperar un número de time slots DIFS (DCF Interframe Space) más un

número de time slots SIFS (Short Interframe Space).

c) Por cada trama beacon que ha enviado el AP debo esperar un tiempo de

guarda para que la interfaz inalámbrica conmute de modo dormido a modo

activo.

Page 5: 8. ANEXO C - Universidad de Sevillabibing.us.es/proyectos/abreproy/12135/fichero/Anexo+C.pdfcolumnas parámetros de interés de los paquetes filtrados como el tiempo de captura del

Página 122

5º- El tiempo que la interfaz inalámbrica no esté ni transmitiendo, ni recibiendo ni

escuchando, estará dormida.

6º- Se presupone que no hay pérdidas y que por tanto la ventana de contención va

entre 0 y 32.

Con estas modificaciones calculamos los tiempos de transmisión, recepción, escucha

y modo dormida que emplea una estación inalámbrica durante una conversación de VoIP.

Para la aplicación de cada uno de estos scripts debemos de situar dichos scripts en el

mismo directorio que los archivos de entrada en formato “csv”. Un ejemplo de la

utilización de estos ficheros se observa a continuación.

$ sed '1d' fichero_entrada.csv | awk -f ener.awk > fichero_salida.txt

Con el comando “sed” quitamos la primera línea del fichero de entrada que muestra

los campos contenidos en el fichero en formato “csv” (véase figura 77). El resultado de esta

operación es pasado al fichero que calcula la energía, el cual realiza los cálculos

correspondientes y guarda los resultados en un fichero de salida.

A partir del tiempo de transmisión de cada uno de los estados de la interfaz

inalámbrica (transmisión recepción, escucha y dormida) podemos calcular la energía

consumida por dicha interfaz inalámbrica mediante la siguiente expresión:

E J = PTX · TTX + PRX · TRX + PLISTEN · TLISTEN + PSLEEP · TSLEEP

donde PTX, PRX, PLISTEN y PSLEEP corresponden a las potencias en transmisión, recepción,

escucha del canal y modo dormido de una estación inalámbrica. De igual manera, TTX, TRX,

TLISTEN y TSLEEP corresponden a los tiempos en transmisión, recepción, escucha del canal y

modo dormido de una estación inalámbrica. Se han escogido los siguientes valores típicos

de potencias para una interfaz inalámbrica:

PTX = 1650 mW

PRX = 950 mW

PLISTEN = 800 mW

PSLEEP = 40 mW