CAPÍTULO 3. RESULTADOS Y DISCUSIÓN
3.4 Análisis de resultados
3.4.3 Resultados obtenidos con α =0.998, la razón de transmisión entre router 1 y
router 2 es 5 Mbps.
En este caso, el ancho de banda entre los routers se disminuye (de 10Mbps a 5Mbps), esto significa que causa un incremento del retardo y del jitter en la transmisión. Como se puede notar en las figuras 3.7 y 3.8, el retardo extremo a extremo de la red aumenta aproximadamente a 150 ms y el jitter alcanza los 20 ms. Para estas nuevas condiciones el tamaño promedio de buffer se incrementa (hasta 160ms (Figura 3.9). Las pérdidas durante de la transmisión alcanzan los 23 paquetes, y el algoritmo desecha 162 paquetes.
Nótese en la figura 3.10, que el intervalo entre los 0,8 y 4ms se corresponde con una cadena de paquetes desechados por el algoritmo. Esta situación es una consecuencia de que para los parámetros iniciales resulta imposible adaptar el tamaño del buffer durante la primera
ráfaga. Después del primer intervalo de silencio el algoritmo ajusta los parámetros y reduce la cantidad de paquetes rechazados.
Figura 3.9: Tamaño de buffer.
3.5 Conclusiones parciales del capítulo.
Como se aprecia en el ejemplo, cuando la red es bastante estable, el algoritmo se desempeña adecuadamente con un valor de α alto. En la medida en que empeoran las condiciones de la red, ese mismo valor de α ya no es adecuado. En general, cuado las condiciones de la red tiene una dinámica alta, el algoritmo con α fijo tiene resultado poco alentadores.
CONCLUSIONES Y RECOMENDACIONES
Conclusiones
En este trabajo se arriba a las siguientes conclusiones
1. Aunque es cierto que existe un esfuerzo importante en el desarrollo de mecanismos que garanticen QoS para redes IP no parece probable que se defina una solución universal a mediano o corto plazo. Esta situación estimula las investigaciones relacionadas con los mecanismos de control de jitter para garantizar una calidad adecuada para los servicios interactivos en tiempo real.
2. Hasta este momento no existe un algoritmo único universalmente aceptado para el control de jitter. Los algoritmos propuestos tienen desempeños disímiles para escenarios concretos. Es muy importante contar con herramientas y métodos que permitan la evaluación de los mismos.
3. En este trabajo se hizo un estudio detallado sobre las variantes de dos tipos de algoritmo para buffer de reproducción de audio, uno que ajusta durante las ráfagas de silencio, y otro que ajusta en cualquier momento.
4. Se exploraron herramientas que permiten implementar y evaluar algoritmos de buffer de reproducción. Se seleccionó el algoritmo de Ramjee (Ramjee et al, 1994) como caso de estudio para ilustrar el uso de dichas herramientas y se discutieron los resultados de la evaluación que coinciden con los resultados teóricos descritos en la literatura consultada.
5. El esquema de evaluación propuesto básicamente consiste en obtener trazas de tráfico, reales o simuladas mediante NS2, fíltralas y utilízalas en la evaluación del desempeño de algoritmos de reproducción de audio escritos en Matlab. Este
esquema resulta apropiado para algoritmos como los que aquí se analizan, sin embargo existen algoritmos donde los parámetros del emisor se ajustan mediante retroalimentación del desempeño en el receptor. Para este tipo de algoritmo no resulta adecuado la implementación en Matlab
Recomendaciones.
En épocas recientes se han diseñado algoritmos que toman la evaluación de la calidad percibida como un elemento en el funcionamiento del mecanismo de control del buffer de reproducción. Aunque en el presente trabajo se describen los métodos para evaluación de la calidad, no se analiza ningún algoritmo de este tipo. Teniendo en cuenta la creciente importancia de este tipo de algoritmo se recomienda la evaluación de los mismos.
REFERENCIAS
1. AGUILAR, M. J. (2005) “Teléfono software basado en SIP e implementación de PESQ”. Facultad de ingenieria. Bogota, Universidad Javeriana.
2. BALAN, V. (2006) “An Experimental Evaluation of Voice-over-IP Quality over the Datagram Congestion Control Protocol”. School of Engineering and Science
International University Bremen.
3. BOLOT, J. C., CREPIN, H. & GARCIA, A. (2005) “Analysis of audio packet loss in the Internet”. Proc.International Workshop on Network and Operating System
Support for Digital Audio and Video (NOSSDAV). Durham.
4. CLARK, A. (2003) “Analysis, measurement and modelling of Jitter”. International
telecommunication union. Geneva, Telchemy Incorporated.
5. CISCO SYSTEMS, INC. (2006) “Understanding Jitter in Packet Voice Networks”.
[En línea], disponible en
www.cisco.com/en/US/tech/tk652/tk698/technologies_tech_note09186a00800945df .shtm. [Consultado el día 17 de enero de 2008].
6. FERRARI, D. & VERMA, D. (1990) “A scheme for real-time channel establishment in wide-area networks” en I EEE Journal on Selected Area sin
Communications, vol. 8 no. 3, pp. 368–379.
7. GRUTA, D. (2007) “Improvements areas in QoS for VoIP solution”. Internacional conference on software testing.
8. ITU-D. (2003) “The Essential Report on IP Telephony”. [En línea], disponible en: http://www.itu.int/ITU-D/e-strategy/publications-articles/pdf/IP-tel_report.pdf. [consultado el día 11 de mayo de 2007].
9. JACOBSON, V. (1988) “Congestion avoidance and control”. Procc.1988ACM
SIGCOMM Conf. Standford.
10. JON POSTEL, editor (1981) “Transmission Control Protocol specification”. ARPANET Working group Requests for Comment. ARPANET Working group Requests for Comment, RFC 793.
11. LIANG, Y., FARBER, N. & GIROD, B. (2001) “Adaptive playout scheduling using time-scale modification in packet voice communications” en Revista IEEE
Xplore, 3. Stanford University.
12. NARBUTT, M. & MURPHY, L. (2003) “VoIP Playout Buffer Adjustment using Adaptive Estimation of Network Delays”. Department of Computer Science.
13. NEUMAN, A., (2007) Telefonía IP 2. (VoIP). N&K Panama. [En línea]. Panamá, disponible en: http://www.nkpanama.com. [Consultado el día 17 de mayo de 2008].
14. RAMJEE, M. et al., (1994) “Adaptive Playout Mechanisms for Packetized Audio Applications in Wide-Area Networks” en Revista Proc. IEEE Infocom 1994, IEEE
CS Press.
15. RÍOS, A. et al., (2007) Desarrollo de una plataforma de VoIP basada en Software Libre. [En línea], disponible en: http://www.jornadespl.org/biblioteca/v- jornades/comunicacions/desarrollo-de-una-plataforma-de-voip-basada-en-software- libre. [Consultado el día 13 de febrero de 2008].
16. SCHULZRINNE, H. (1993) “Reducing and characterizing packet loss for high- speed computer networks with real-time services”. University of Massachusetts.
17. SIECKMEYER, C. (1995) “Evaluation of adaptive playout algorithms for packet audio”. Berlin, Dept.of Electrical Engineering.
18. VIIPURI, T. (2002) “A Case Study of Simulating DiffServ in NS-2”. [En línea], disponible en www.netlab.hut.fi/opetus/s383180/2005/harj/H3/diffnet.pdf. [Consultado el día 29 de abril de 2008].
BIBLIOGRAFÍAS
1. BLACK, U. (2000) “Voice over IP” [En línea], New Jersey, Prentice Hall, Disponible en: \\neumann\e-Books\Network [Accedido: 12 de abril de 2007
].
2. HERSENT, O.; GURLE, D. Y J.P., PETIT, (2000) “IP Telephony: packet based multimedia communications systems”. Addison-Wesley.
3. NARBUTT, M., KELLY, A., MURPHY, L. & PERRY, P. (2005) “Adaptive VoIP Playout Scheduling:Assessing User Satisfaction”. IEEE Computer Societ.
ANEXOS
ANEXO1: LOS PUNTAJES DE EVALUACIÓN Tabla1: Escala MOS
Tabla2: Escala ACR
ANEXO 2: Resultado de la comparación entre los algoritmos (Fig. 1- 7).
Figura 1: Comparación usando traza 1(UMASS-INRIA).
ANEXO 2: Resultado de la comparación entre los algoritmos (Fig. 1- 7 ).
Figura 2: Comparación usando traza 2(UMASS-INRIA).
Figura 3: Comparación usando traza 3(UMASS-UCI).
ANEXO 2: Resultado de la comparación entre los algoritmos (Fig. 1- 7 ).
Figura 4: Comparación usando traza 4(UMASS-UCI).
ANEXO 2: Resultado de la comparación entre los algoritmos (Fig. 1- 7 ).
Figura 6: Comparación usando traza 6 (UMASS-OSAKA).
ANEXO 3: Código fuente del generador de tráfico.
# The preamble
set ns [new Simulator] ;# initialise the simulation
# Predefine tracing
set f [open g729nuevo.tr w]
$ns trace-all $f
set nf [open g729nuevo.nam w]
$ns namtrace-all $nf
#Create nodes
set n(r0) [$ns node]
set n(r1) [$ns node]
#Create more nodes
for {set i 0} {$i < 8} {incr i} {
set n($i) [$ns node]
}
#Create links between the nodes
for {set i 0} {$i < 4} {incr i} {
$ns duplex-link $n($i) $n(r0) 10Mb 10ms DropTail
$ns queue-limit $n($i) $n(r0) 80
}
$ns queue-limit $n(r0) $n(r1) 80
for {set i 4} {$i < 8} {incr i} {
$ns duplex-link $n($i) $n(r1) 10Mb 10ms DropTail
$ns queue-limit $n($i) $n(r1) 80
}
#Create a TCP agents and attach it to nodes
for {set i 0} {$i < 3} {incr i} {
set tcp($i) [new Agent/TCP]
$tcp($i) set class_ 1
$tcp($i) set window_ 100
$ns attach-agent $n($i) $tcp($i)
set tcpsink($i) [new Agent/TCPSink]
}
$ns attach-agent $n(5) $tcpsink(0)
$ns attach-agent $n(6) $tcpsink(1)
$ns attach-agent $n(7) $tcpsink(2)
# Create a FTP traffic sources and attach it to TCP agents
for {set i 0} {$i < 3} {incr i} {
set ftp($i) [new Application/FTP] ;# TCP does not generate its own traffic
$ftp($i) attach-agent $tcp($i)
}
#Connect the traffic sources with the traffic sinks
$ns connect $tcp($i) $tcpsink($i)
}
$ns at 0.3 "$ftp(0) start"
$ns at 5 "$ftp(1) start"
$ns at 15 "$ftp(2) start"
#Create a UDP agents and attach it to nodes
set udp0 [new Agent/UDP] ;# A UDP agent
$ns attach-agent $n(3) $udp0 ;# on node $n0
set null0 [new Agent/Null] ;# Its sink
$ns attach-agent $n(4) $null0 ;# on node $n4
set expoo [new Application/Traffic/Exponential]
$expoo attach-agent $udp0
$expoo set packetSize_ 60
$expoo set burst_time_ 1000ms
$expoo set idle_ 1500ms
$expoo set rate_ 24kb
$udp0 set class_ 0
$ns connect $udp0 $null0
$ns at 0.1 "$expoo start"
$ns at 10 "$ns detach-agent $n(0) $tcp(0) ; $ns detach-agent $n(5) $tcpsink(0)"
$ns at 40 "$ns detach-agent $n(1) $tcp(1) ; $ns detach-agent $n(6) $tcpsink(1)"
$ns at 60 "finish"
proc finish {} {
$ns flush-trace
close $f
close $nf
puts "running nam..."
exec nam out.nam &
exit 0
}
# Finally, start the simulation.
ANEXO 4: Código fuente del algoritmo de la reproducción de buffer
fid = fopen('g729nuevo.tr');
C = textscan(fid, '%s %f %n %n %s %n %s %n %f %f %n %n') % importa el fichero de datos de tráfico
x=439027; % número de eventos ocurridos
timeofevent=zeros(x,1); timeofevent=C{1,2}; nodesource=zeros(x,1); nodesource=C{1,3}; nodedest=zeros(x,1); nodedest=C{1,4}; seqnum=zeros(x,1); seqnum=C{1,11}; received=strcmp(C{1,1}, 'r'); tráfico =strcmp(C{1,5}, 'exp'); drop=strcmp(C{1,1}, 'd'); trans=strcmp(C{1,1}, '+'); IDdeflujo=zeros(x,1); IDdeflujo=C{1,8}; dr=0; rec=0; tr=0; for i=1:x
if IDdeflujo(i,1)==0&trans(i,1)==1&nodesource(i,1)==5 % calcula # de los paquetes transmitidos
tr=tr+1;
elseif IDdeflujo(i,1)==0&drop(i,1)==1 % calcula # de los paquetes perdidos en la transmisión
dr=dr+1;
elseif IDdeflujo(i,1)==0&received(i,1)==1&nodedest(i,1)==6 % calcula # de los paquetes recibidos rec=rec+1; end end sndrop=zeros(dr,2); time=zeros(rec,2); transmited=zeros(tr,2); d=0; r=0; t=0; for i=1:x if IDdeflujo(i,1)==0&trans(i,1)==1&nodesource(i,1)==5 t=t+1; transmited(t,1)=timeofevent(i,1); transmited(t,2)=seqnum(i,1); elseif IDdeflujo(i,1)==0&drop(i,1)==1 d=d+1; sndrop(d,1)=seqnum(i,1);
sndrop(d,2)=timeofevent(i,1); elseif IDdeflujo(i,1)==0&received(i,1)==1&nodedest(i,1)==6 r=r+1; time(r,1)=timeofevent(i,1); time(r,2)=seqnum(i,1); end end for i=1:dr for j=1:tr if transmited(j,2)==sndrop(i,1); transmited(j,1)=0; end end end con =0; transmited1=zeros(rec,2); for i =1:rec+dr if transmited(i,1)~=0 con=con+1; transmited1(con,1)=transmited(i,1); transmited1(con,2)=transmited(i,2); end end
for i=1: rec
ins_delay(i,1)=time(i,1)-transmited1(i,1); % calcula retardo extremo a extremo de la red
end
dmin=0.05; %demora de propagación+ demora de paquetización
dest_delay=zeros();% delays of packets on a destination side ( inicial JB)
mean_delay = 0.030144;
mean_variance = 0; % cumulative variance
counter=0;
min_JB=0.04; %definir: min_JB % tamaño mínimo de buffer
JB_size=min_JB;
JBbuffer=zeros(rec,1); % aquí empieza la programación de buffer
var=0; % # de ajustes de buffer
counter=0; # de paquetes desechados en buffer
for i = 1: rec-1 if transmited1(i+1,1)-transmited1(i,1)<0.1 %rafaga mean_variance=0.875*mean_variance+0.125*abs(mean_delay-ins_delay(i,1)); mean_delay=0.875*mean_delay+0.125*ins_delay(i,1); playout_time=mean_delay+4*mean_variance; end
if ins_delay(i,1)>dmin+JB_size
dest_delay(i,1)=dmin+JB_size+transmited1(i,1);
dest_delay(i,2)=0; % 0-lost packet
counter=counter+1;
else
dest_delay(i,1)=dmin+JB_size+transmited1(i,1); % delay including JB
dest_delay(i,2)=1; % 1 - arrived packet
dest_delay(i,3)=mean_delay;
dest_delay(i,4)=mean_variance;
dest_delay(i,5)=playout_time;
dest_delay(i,6)=time(i,2); % # de secuencia de los paquetes
end
if transmited1(i+1,1)-transmited1(i,1)>0.1
% intervalo de silencio
% ajustar los parámetros.
var=var+1;
JB_size=max(playout_time, dmin+min_JB)-dmin; # cambia tamaño de buffer
JBbuffer(var,1) =JB_size;
end