Documentos de Académico
Documentos de Profesional
Documentos de Cultura
16 de junio de 2019
I. BACKGROUND
Cuando varios paquetes llegan a un servidor, los paquetes esperan en la cola según alguna disciplina -
típicamente por orden de llegada, primero en servir (FCFS) - para procesar las llegadas. Las
operaciones de cola se indican mediante la notación de Kendall que captura tres factores: a) el proceso de
entrada o llegada, b) el proceso de salida o servidor y c) el número de servidores. La cola más canónica
estudiada es la cola M/M/1/C, donde: "M" indica un proceso de llegada de Markovian, es decir, un
proceso de Poisson mediante el cual los tiempos de inter llegada de paquetes se exponenentitoriamente
1
Decir L (o Equiv. el Llegada Tasa En paquetes/seg Es λ). el Segundo "M" Indica Paquete Servicio Hora
(el
duración de principio a fin del servicio), que también se distribuye exponencialmente con el tiempomedio
deservicio; el tiempo de servicio es indep. del proceso de inter-llegada. El "1" indica que hay solamente un
servidor y "C" denota la capacidad del buffer (es decir,un máximo de paquetes C puede esperar en la cola
y cualquier otra llegada se niega la entrada/la pérdida). Una abstracción de la cola M/M/1/C se
muestra en el cuadro 1.
ii. La latencia media (W ) en el sistema experimentada por cualquier paquete (esta es la suma del
tiempo de espera
1
más el tiempo de servicio) es dado por E[W ] = =. Claramente• Como λ • ∞ µ, E[W ] implicando
la Potencial
•á á-
A. Implementación de ns-3
Un programa ns-3 implementadog la cola M/M/1 como un proceso de cola independiente (es decir, no
integrado con un dispositivo de red, que acaba de existir de forma aislada con un proceso de llegada y
salida de paquetes) se puede encontrar en contrib/training-2019/examples/mm1-queue.cc.
Opciones del programa $ ./waf --run 'mm1-queue --PrintHelp':
--lambda: tasa de llegada (paquetes/seg) [1]
--mu: tasa de salida (paquetes/seg) [2]
--initialPackets: paquetes iniciales en la cola [0]
--numPackets: número de paquetes para poner en cola [0]
--queueLimit: tamaño de la cola (número de paquetes) [100]
--quiet: si se suprime toda la salida [false]
Tenga en cuenta que lambda y mu se pueden establecer mediante el argumento de línea de comandos, y
el número de paquetes (llegadas) que se enviarán a través del sistema debe establecerse en un valor
distinto de cero para que el program haga algo útil.
Vamos a ejecutarlo una vez enviando 10 paquetes:
Opciones de programa $ ./waf --run 'mm1-queue --numPackets-
10':
--lambda: tasa de llegada (paquetes/seg) [1]
--mu: tasa de salida (paquetes/seg) [2]
--initialPackets: paquetes iniciales en la cola [0]
--numPackets: número de paquetes para poner en cola [0]
--queueLimit: tamaño de la cola (número de paquetes) [100]
--quiet: si se suprime toda la salida [false]
Esto genera un archivo de datos mm1queue.dat. Este archivo tiene el siguiente content:
0.352958 + 1
0.712375 + 2
0.722229 - 1
1.188 2
65
1.298 3
59
1.343 2
04
1.725 1
18
1.971 2
62
2.640 1
96
3.060 0
24
3.850 1
77
3.925 0
56
5.848 1
33
5.85479 - 0
7.42087 + 1
7.42253 - 0
9.34972 + 1
9.37861 - 0
11.3829 + 1
11.6735 - 0
Cada operación '+' es una operación de cola. Cada operación '-' es una operación de dequeue. La primera
columna es la marca de tiempo en segundos. La última columna es la longitud de la cola al final de la
operación. La simulación finaliza cuando el último paquete que se envía se ha puesto en cola y se ha
quitado (o se ha descartado).
El tiempo que la cola está ocupada se puede deducir de este archivo: el tiempo total de la simulación
(11.6735 segundos) menos la suma de cualquier intervalo de tiempo para el cual una cola de cola conduce
a una cola de longitud cero (por ejemplo, del tiempo 7.42253 al tiempo 9.34972). Tiempo cero hasta la
primera cola también debe ser considerado. Para responder a las siguientes preguntas, querrá escribir algún
tipo de script para analizar este archivo, o bien modificar el programa de C++ para calcular los tiempos de
inactividad y los retrasos.
Intente volver a ejecutar el programa con una semilla n umber aleatoriadiferente; ¿los resultados cambian
mucho?
$ ./waf --run 'mm1-queue --numPackets-10 --RngRun-2'
Las gotas también se rastrean. Por ejemplo, establezcamos la longitud de la cola en un valor bajo
(irrazonablemente) de 1 paquete y repitamos.
$ ./waf --run 'mm1-queue --numPackets-10 --queueLimit-1'
0.352958 + 1
0.712375 d 1
0.722229 - 0
1.188 1
65
1.298 1
59
1.343 0
04
1.971 1
62
2.640 0
96
3.850 1
77
3.925 0
56
5.848 1
33
5.854 0
79
7.420 1
87
7.422 0
53
9.349 1
72
9.378 0
61
11.38 1
29
11.67 0
35
B. Preguntas
1) Para un sistema de cola M/M/1, simule con los valores de 10 y 1,3,5,7 y 9, y trace la proporción
de inactividad de la cola, la longitud media de la cola y el retardo medio del λ/µ paquete, todo ello en función de
la relación . Para cada prueba, envíe 100.000 paquetes a través del sistema. Establezca el límite de
cola en un valor grande para evitar caídas.
2) Experimente con el resultado del desbordamiento del buffer de una cola de 100 paquetes M/M/1
estableciendo el valor de 10 y
9,5, 9,7 y 9,9. A partir de una cola vacía, ejecute una serie de pruebas para medir cuánto tiempo it
tarda la cola en desbordarse. overflow. Proporcione su estimación del tiempo promedio hasta el
desbordamiento, la desviación estándar de la muestra y el número de ensayos realizados para each
lambda.
Dos maneras de lograr lo anterior son 1) escribir un script para ejecutarse repetidamente con la
configuración deseada pero con diferentes valores de número de RngRun, y para cada ejecución, encontrar
el tiempo de la primera caída, o 2) ejecutar el programa para un número muy largo de paquetes y utilizar
la entrada en una cola inactiva como la hora de inicio para medir hasta la siguiente caída.