En este documento se hace un analisis del retardo de extremo a extremo usando como muestra unas trazas de retardo tomadas del sitio de Sue Moon y se utiliza el lenguaje awk para su desarrollo
1. Análisis del retardo de extremo a extremo
Práctica 1.
Laura Piñeiro Méndez
10-10-2015
2. Introduccion
El protocolo IP, es uno de los protocolos más importantes de Internet. Este protocolo es el
encargado de que los paquetes que salen de una estación logren llegar a su destino, y se
encuentra en la capa de red del modelo de referencia OSI. Para cumplir su objetivo, el protocolo IP
utiliza el mecanismo del mejor esfuerzo (best effort), lo cual quiere decir que no ofrece calidad de
servicio (QoS) por lo que en el recorrido los paquetes pueden sufrir disímiles inconvenientes.
Con esta práctica se pretende mostrar el comportamiento del retardo de extremo a extremo,
siendo esta una variable importante en la red dado que cada día son más los servicios que
requieren que los paquetes sean entregados con la menor cantidad de retardo. Para esto
trabajamos con unas trazas de retardo, a partir de las cuales se obtuvieron graficas del retardo de
extremo a extremo en función del tiempo, concluyéndose con el análisis del comportamiento de
esta variable.
3. Marco Teorico
Una de las medidas más importantes a tener en cuenta al realizar la planificación u optimización
de una red, es el retardo de extremo a extremo (Dee). Determinar el retardo que sufre un paquete
en una red de comunicaciones es un problema que puede parecer sencillo, pero no es así. En
primer lugar es necesario definir el concepto de retardo.
El Dee es el tiempo que demora un paquete en ir de un punto fuente en la red hasta un punto
destino. Está determinada por las siguientes variables de retardo (fig.1):
Retardo de Procesamiento (dproc): es el tiempo que demora el nodo o estación en
procesar y preparar el paquete a enviar.
Retardo de Propagación (dprop): es el tiempo que tarda un bit en ir de un extremo a otro
del enlace.
Retardo de Transmisión (dtrans): es el tiempo que tarda el nodo o estación en poner todo
el paquete sobre el enlace.
Retardo en la fila de espera (dcola): es el tiempo de espera en el buffer de salida cuando el
enlace está ocupado con otra transmisión.
Fig.1 Esquema de retardos en un enlace
Este tiempo que demora el paquete en ir de un extremo a otro es variable debido a que las
diferentes componentes de retardo que lo conforman dependen de parámetros que no son fijos.
El retardo de procesamiento es del orden de los µs o ns, es bastante pequeño, y dependerá de las
capacidades del nodo o estación ya que este será el tiempo que le tome para realizar el chequeo
de bits de error y determinar cuál será el enlace de salida.
El retardo en la fila de espera va a depender del nivel de congestión en el enlace o del nodo o
estación.
4. El retardo de transmisión depende del ancho de banda del enlace (o velocidad nominal del medio)
y del tamaño del paquete que se desea transmitir. Normalmente está en el orden de los µs o ms y
siempre hay que tenerlo en consideración.
Por su parte el retardo de propagación depende la longitud del enlace y de la velocidad de
propagación del medio y generalmente está en el orden de los µs.
Definidos ya estos retardos podemos determinar que, el Dee será la sumatoria de todos ellos en
cada uno de los enlaces, quedando definida la siguiente fórmula matemática para el cálculo del
retardo de extremo a extremo:
Formula1.1 Retardo de extremo a extremo
Definiéndose además que:
Formula 1.2 Retardo de propagación Formula 1.3 Retardo de transmisión
Dee = dproc + dcola + dprop + dtrans
dprop = d/s dtrans = L/r
d: Longitud del enlace
s: velocidad de propagación en el medio
L: Tamaño del paquete
s: velocidad de Tx nominal
5. Experimentacion
En la práctica se hace una simulación guiada por trazas a partir de seis archivos de trazas de
retardo tomadas en el sitio de Sue Moon [1]. Estas trazas están organizadas de tal forma que la
primera columna indica si el evento correspondiente a esa línea es un paquete recibido o si es un
periodo de silencio, la segunda columna indica la estampa de tiempo del receptor y la tercera la
estampa de tiempo del transmisor.
Para la realización de este experimento se utiliza el software Cygwin que permite simular una
consola de Linux para poder trabajar con el lenguaje de procesamiento de texto AWK. Para
graficar los resultados que se obtienen se utiliza el GNUplot.
E.1- Obtener el número total de frases en una traza de audio.
Dada la organización de las trazas obtener estos datos es muy sencillo ya que solo basta con
realizar una búsqueda de todos los periodos de silencio y contarlos, ya que cada periodo de
silencio representa el final de una frase.
* El código implementado, así como los resultados obtenidos se encuentran en el Anexo 1.
Resultados:
Traza 1 Traza 2 Traza 3 Traza 4 Traza 5 Traza 6
818 407 536 252 540 299
E.2- Obtener el número total de paquetes que llegaron al receptor.
Al igual que en el caso anterior, el script que se creó para este experimento, realiza una búsqueda
en la traza pero en este caso determinando en cada línea si es un paquete recibido o un periodo
de silencio, e incrementa un contador por cada paquete recibido. Se obtiene así, al final el número
de paquetes que se recibió.
* Al igual que en el ejemplo anterior los resultados se muestran en el Anexo 1.
Resultados:
Traza 1 Traza 2 Traza 3 Traza 4 Traza 5 Traza 6
56980 24491 37641 27815 52837 23294
E.3- Obtener la diferencia mínima entre la estampa de tiempo del emisor y la del receptor.
Para este caso se crea un script que toma los valores de estampa de tiempo del emisor y receptor
respectivamente, para luego, a través de una estructura de control determinar cuál es el valor
6. mínimo que se obtuvo de todas las restas realizadas. Este parámetro será de mucha utilidad para
el siguiente experimento dado que las estampas de tiempo se encuentran en formato RTP (Real
Time Protocol) y para obtener las gráficas necesitamos llevar estos datos a segundos, para lo cual
se utiliza este valor que acabamos de obtener.
* El script con los resultados obtenidos se encuentran en el Anexo 1.
Resultados:
Traza 1 Traza 2 Traza 3 Traza 4 Traza 5 Traza 6
-641808 -14643186 -774206 -807010 0 -1489551
E.4- Obtener un archivo con dos columnas: tiempo en segundos, y retardo de extremo a extremo
en segundos, dada una traza de entrada.
En este caso necesitamos convertir las estampas de tiempo a segundo para lo cual se toma el valor
del tiempo en que inicia la primera sesión y luego se le resta ese valor a cada una de las estampas
de tiempo del receptor, y el resultado de esta resta es dividido entre 8000, obteniéndose así los
distintos valores del tiempo en segundos. Para el caso del retardo de extremo a extremo se utiliza
la fórmula 1.1 despreciando el dproc y dcola.
* El script con los resultados obtenidos se encuentran en el Anexo 1.
G.1- Comportamiento del retardo de extremo a extremo
Se utiliza el archivo obtenido en el E.4 para generar las graficas de Retardo de extremo a extremo
contra tiempo de sesión. Para obtener estas graficas se utilizó el GNUplot. Se obtienen dos tipos
de gráficas, una a gran escala donde podemos analizar el comportamiento del retardo en una
sesión y otra a pequeña escala donde se toman varias frases de una conversación.
* Las gráficas se adjuntan en el Anexo 2.
¿Es posible observar fenómenos particulares en las gráficas que acaba de obtener?
En las gráficas se puede apreciar una pendiente que indica que los tiempos del reloj del emisor y el
recetor son diferentes, es decir que los relojes no están sincronizados, lo que resulta en un retraso
en la recepción de los paquetes. Así como también cuando en dichas gráficas se aplica una cota de
tiempo, se puede apreciar en que puntos se encuentran frases, y en cuales son zonas de silencio.
Investigue métodos propuestos en la literatura (al menos dos) para eliminar la desviación en de
la pendiente en el retardo.
Uno de los mecanismos usados para disminuir la pendiente del retardo, es la utilización de buffers
de playout (memorias de reproducción). Las aplicaciones multimedia en Internet utilizan este
mecanismo en el receptor para suavizar la variabilidad del retardo de extremo a extremo. Este tipo
7. de procedimientos es aplicable tanto para transmisión de audio como para transmisión de vídeo.
Su funcionamiento consiste en que los paquetes que lleguen después de un tiempo determinado
(tiempo de reproducción programado) se consideran perdidos y no se reproducen. Este tipo de
mecanismos implican un compromiso entre interactividad y retraso: mientras más espere el
receptor por paquetes más paquetes llegarán, pero la interactividad se verá disminuida.
En el artículo publicado por Sue Moon [1] se hace un análisis de tres algoritmos que implementan
este mecanismo, dos de ellos permiten el cálculo de los limites superiores e inferiores del retardo
de reproducción promedio óptimo para un determinado número de paquetes perdidos de una de
una traza dada, y el tercer algoritmo, que es el propuesto por la autora del artículo, permite un
ajuste adaptativo del retardo. Con este algoritmo se hace un seguimiento del retardo de la red
para los paquetes recibidos recientemente y mantiene de forma eficiente la información del
percentil del retardo.
A continuación se presenta la sintaxis de este algoritmo:
Fig. 1 Algoritmo de Ajuste adaptativo del retardo
8. Fig 1.1. Algoritmo utilizado para la estimación
del retardo de playout (playout delay)
La idea central de este algoritmo es tomar estadísticas de los paquetes que llegan al receptor para
así estimar el retardo de reproducción. El retardo de cada paquete que llega es registrado y se
actualiza la distribución de la demora con la llegada de cada paquete, entonces cuando inicia una
nueva ráfaga de voz, este algoritmo calcula un punto percentil (Valor del elemento que divide una
serie de datos en cien grupos de igual valor o en intervalos iguales) en función de la distribución
del retardo para los últimos w paquetes que llegaron, y usa este valor como el valor estimado
para el retardo de reproducción en la nueva ráfaga de voz.
Otro método recomendado es el Algoritmo para el Ajuste Adaptativo de los Periodos de Silencio.
Este algoritmo basado en los periodos de silencio de la conversación adapta la demora en la
memoria de reproducción basado en información histórica de los tiempos de llegada y de
reproducción de los paquetes recibidos en ráfagas anteriores. Este algoritmo calcula la diferencia
entre el tiempo de reproducción de los paquetes y su tiempo de llegada, y esta diferencia se
conoce como “gap” (brecha). La brecha óptima es la diferencia entre la demora actual y la demora
de reproducción óptima y se puede usar para acelerar o disminuir la reproducción y así compensar
los errores en la reproducción de la próxima ráfaga.
Este algoritmo trabaja en dos modos: Modo Normal y Modo SPIKE (detección de picos). Cuando un
pico es detectado en la ráfaga de voz, este conmuta al modo SPIKE (SDA) donde dirige la
reproduccion de los paquetes hasta que se detecta el fin del pico y entonces conmuta nuevamente
a su operación normal y continua con la recolección de las brechas.
Aquí se presenta la estructura de este algoritmo:
9. Fig 1.2. Receptor basado en brechas
Fig 1.3. Pseudocódigo para el cálculo de la brecha optima
10. Conclusiones
En el retardo de extremo a extremo OWD, cuando existe una pendiente en la recta indica que los
paquetes de ese mensaje, en este caso de estas trazas, tienen un retardo para poder llegar
receptor, esto se puede deber a que los relojes tanto del emisor como del receptor no se
encuentren sincronizados. Esto demuestra que el protocolo IP no es confiable en la medida de que
los paquetes no llegan en el tiempo esperado.
11. Anexo 1
E.1- Obtener el número total de frases en una traza de audio.
>BEGIN{total=0;}
> /!/{total++}
> END {print total+1}
E.2- Obtener el número total de paquetes que llegaron al receptor.
> BEGIN {full=0;}
> /D/ {full++}
> END{print full+1}
E.3- Obtener la diferencia mínima entre la estampa de tiempo del emisor y la del receptor.
>BEGIN {min = 0 } {val=$2-$3; if(val < min) min=val;}
>END {print min}
E.4- Obtener un archivo con dos columnas: tiempo en segundos, y retardo de extremo a extremo
en segundos, dada una traza de entrada.
>{if (NR==1){ ts1=$3;}
>else{tsesion=(($3-ts1)/8000)}}
>{dee=(($2-$3-min)/8000)}
>{print tsesion, dee > "retardo.dat"}
12. Anexo 2
A.1 Retardo a Gran Escala (fichero de trazas 1.txt)
A.1.1 Retardo a Pequeña Escala (fichero de trazas 1.txt)
13. A.2 Retardo a Gran Escala (fichero de trazas 2.txt)
A.2.1 Retardo a Pequeña Escala (fichero de trazas 2.txt)
14. A.3 Retardo a Gran Escala (fichero de trazas 3.txt)
A.3.1 Retardo a Pequeña Escala (fichero de trazas 3.txt)
15. A.4 Retardo a Gran Escala (fichero de trazas 4.txt)
A.4.1 Retardo a Pequeña Escala (fichero de trazas 4.txt)
16. A.5 Retardo a Gran Escala (fichero de trazas 5.txt)
A.5.1 Retardo a Pequeña Escala (fichero de trazas 5.txt)
17. A.6 Retardo a Gran Escala (fichero de trazas 6.txt)
A.6.1 Retardo a Pequeña Escala (fichero de trazas 6.txt)