P1 ControlFlujoyARQ 24 25 v5

Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

REDES Y SERVICIOS DE TELECOMUNICACIÓN 2

P1. PROTOCOLOS DE CONTROL DE FLUJO CON ARQ

CONTENIDO
1. ACCESO A LOS EQUIPOS 1
2. INFORMACIÓN SOBRE OMNET++ 1
2.1 Breve Explicación de la Herramienta 1
2.2 Lenguaje NED 2
2.3 Cómo se Configura la Simulación 3
2.3.1 Fichero de Configuración 3
2.3.2 Registro de Resultados 3
3. CONTROL DE FLUJO CON ARQ 4
3.1 Cálculo de Parámetros 5
3.2 Simulación 6
3.2.1 Carga del modelo 6
3.2.2 Parada y espera 7
3.2.3 Ventana deslizante con Retroceder a N 11
3.2.4 Ventana deslizante con Repetición selectiva 13
3.3 Análisis de los resultados 15
4. ANEXO - ESTIMACIÓN DE RESULTADOS 19

1. ACCESO A LOS EQUIPOS


Utilice el siguiente usuario y clave para entrar en el equipo del laboratorio:
• Usuario: labuserprx
• Clave: labdoc.prx

2. INFORMACIÓN SOBRE OMNET++

2.1 BREVE EXPLICACIÓN DE LA HERRAMIENTA


OMNeT++ is an object-oriented modular discrete event network simulation framework. It has
a generic architecture, so it can be used in various problem domains:
• modeling of wired and wireless communication networks
• protocol modeling
• modeling of queueing networks
• modeling of multiprocessors and other distributed hardware systems

1/21
Redes y Servicios de Telecomunicación (03/10/2024)

• validating of hardware architectures


• evaluating performance aspects of complex software systems
• In general, modeling and simulation of any system where the discrete event approach
is suitable and can be conveniently mapped into entities communicating by exchanging
messages.
OMNeT++ itself is not a simulator of anything concrete, but rather provides infrastructure and
tools for writing simulations.
An OMNeT++ model consists of the following parts:
• NED language topology description(s). These are files with the .ned extension.
• Simple module implementations and other C++ code, in .cc or .cpp files.
• Message definitions, in files with .msg extension.
Models are assembled from reusable components termed modules, like LEGO blocks. Modules
can be connected to each other via gates (a.k.a. ports) and combined to form compound
modules (see Figure 1). Modules at the lowest level of the module hierarchy are called simple
modules, and they encapsulate model behavior. Simple modules are programmed in C++, and
make use of the simulation library.
Modules communicate through message passing, where messages may carry arbitrary data
structures. Modules can pass messages along predefined paths via gates and connections, or
directly to their destination; the latter is useful for wireless simulations, for example. Modules
may have parameters that can be used to customize module behavior and/or to parameterize
the model’s topology.

En OMNeT++ el código de los módulos está disponible (directorio /src, ficheros *.cc).

Figura 1: Módulos simples y compuestos.

2.2 LENGUAJE NED


NED stands for Network Description. The user describes the structure of a simulation model in
the NED language. When the simulation program is started, it loads the NED files. The program
should already contain the C++ classes that implement the needed simple modules, their C++
code is either part of the executable or is loaded from a shared library. The simulation program
also loads the configuration (omnetpp.ini), and determines from it that the simulation model to
be run is the Network network. Then the network is instantiated for simulation.

2/21
Protocolos De Control De Flujo con ARQ

Display strings specify how the objects (compound modules, their submodules and connections)
are displayed. Display strings are specified in NED’s @display property.

2.3 CÓMO SE CONFIGURA LA SIMULACIÓN

2.3.1 Fichero de Configuración


En esta sección se muestra un ejemplo de un fichero de configuración, omnetpp.ini.
Configuration and input data for the simulation are in a configuration file usually called
‘omnetpp.ini’. For a start, let us see a simple omnetpp.ini file:
[General]
network = FifoNet
sim-time-limit = 100h
cpu-time-limit = 300s
#debug-on-errors = true
#record-eventlog = true

[Config Fifo1]
description = "low job arrival rate"
**.gen.sendIaTime = exponential(0.2s)
**.gen.msgLength = 100b
**.fifo.bitsPerSec = 1000bps

[Config Fifo2]
description = "high job arrival rate"
**.gen.sendIaTime = exponential(0.01s)
**.gen.msgLength = 10b
**.fifo.bitsPerSec = 1000bps

This file is grouped into sections named [General], [Config Fifo1] and [Config Fifo2], each
one containing several entries. Each entry reflects a parameter present in the *.cc files that
define each module of the topology. Parameters that are declared as volatile are evaluated
every time the parameter is read. They can be assigned a value in NED files or in ‘omnetpp.ini’
(in this order). For example, this is useful for the interarrival time of jobs to a queue. Lines that
start with “#” are comments.

2.3.2 Registro de Resultados


En esta sección se estudia cómo el simulador define y almacena los resultados de la simulación.
OMNeT++ provides built-in support for recording simulation results via output vectors and
output scalars:
• Output vectors are time series data, recorded from simple modules or channels to get
a full picture of what happened in the model during the simulation run. You can use
output vectors to record end-to-end delays or roundtrip times of packets, queue lengths,
queueing times, link utilization, packet drops, etc.
• Output scalars are summary results, computed during the simulation and written out
when the simulation completes. A scalar result may be an (integer or real) number, or
a statistical summary comprised of several fields such as count, mean, standard
deviation, sum, minimum, maximum, etc., and optionally histogram data.

3/21
Redes y Servicios de Telecomunicación (03/10/2024)

Results may be collected and recorded in two ways:


1. Explicitly from simple modules and channels, using the C++ API provided by the
simulation library.
2. By means of configuration, using declared statistics and the signal mechanism.
Statistics are declared in the NED files with the @statistic property, and modules emit values
using the signal mechanism. The simulation framework records data by adding result file
writing listeners to modules. By being able to choose what listeners to add, the user can control
what to record in the result files and what computations to apply before recording.
A continuación se muestra un ejemplo de fichero *.ned, donde se definen tres estadísticas de
nombre ‘qlen’, ‘busy’ y ‘queueingTime’ncon el modificador ‘record’ (ver Sección 11.2.4 del
Manual para más detalles).
simple Fifo
{
parameters:
volatile double serviceTime @unit(s);
@statistic[qlen](title="queue length";record=timeavg,max);
@statistic[busy](title="server busy state";record=timeavg);
@statistic[queueingTime](title="queue waiting time";unit=s);
gates:
input in;
output out;
}

3. CONTROL DE FLUJO CON ARQ


El objetivo de esta práctica es analizar los mecanismos de control de flujo estudiados en clase.
Iridium es una constelación de satélites que ofrece servicios de voz y datos con cobertura global
del planeta, pensado esencialmente para zonas donde no hay cobertura de las redes móviles
terrenas. Los satélites de la constelación se encuentran situados en una órbita baja (LEO – Low
Earth Orbit), a una altura de aproximadamente 780 km respecto a la superficie terrestre.
En este apartado se va a analizar el impacto de distintos mecanismos de control de flujo en la
transmisión de datos entre un satélite de la constelación y un usuario situado en la superficie
terrestre. Para este análisis puede asumir que el satélite se encuentra situado en la vertical del
abonado y no tener en cuenta su desplazamiento en la órbita.

Figura 2: Esquema de la comunicación entre un satélite Iridium y la estación terrena.

4/21
Protocolos De Control De Flujo con ARQ

3.1 CÁLCULO DE PARÁMETROS


En primer lugar, vamos a calcular los parámetros que hacen falta para modelar este escenario.
Al final del apartado se ha incluido una tabla que recoge la lista de parámetros; escriba en la
última columna los valores correspondientes.
El escenario va a modelar la transferencia de datos hacia el satélite (unidireccional) utilizando
un canal de 4 Mbps (banda Ka). La capacidad de las colas se ha fijado como ilimitada.
El tamaño máximo de paquete viene determinado por la probabilidad de error de bit, BER, que
es de 5x10-6 y el requisito de que se quiere que la probabilidad de error total de cada paquete
sea inferior a 1x10-2 (PER).
En los distintos mecanismos que se van a analizar, es necesario fijar el valor del temporizador
de retransmisión. Este ajuste es importante por dos motivos. Si es demasiado alto, se desperdicia
capacidad del canal por la espera de la retransmisión. Si es demasiado bajo, se retransmiten
demasiados paquetes, lo que disminuye el throughput. Calcúlelo como la suma del tiempo de
propagación de ida y vuelta más el tiempo de transmisión del paquete; considere que las
confirmaciones (mensajes ACK) tienen un tiempo de transmisión despreciable. Para evitar que,
por una pequeña demora adicional en el procesamiento en alguno de los nodos o por esperas en
las colas de salida, el temporizador salte indebidamente, sume al valor obtenido un 10%.
Calcule también el indicador producto capacidad-retardo. Considere como capacidad la
velocidad de transmisión máxima del canal y como retardo, el tiempo de propagación de ida y
vuelta más el tiempo de transmisión del mensaje.
Se pide:
a) Calcule el valor de los parámetros que aparecen en la Tabla 1. Utilice al menos dos
decimales para el valor del temporizador en milisegundos.

Tabla 1: Parámetros – Control de flujo

Descripción Parámetro Valor


1 Retardo de propagación (ms) delay distancia total / velocidad = 780km / 3*10^8 = 2.6 ms

2 Velocidad del canal (Mbps) dataRate 4 Mbps

3 Probabilidad de error de un bit ber 5 * 10^-6

Tamaño de un paquete (octetos = msgLength 2010/8 = 251 bytes


4
bytes) (debe ser un número natural)
5 Temporizador (ms) sleepTime 6.3 ms

6 Producto capacidad-retardo (bits) --- 4*10^6 bps * 5.702 * 10^-3 s = 22800 bits

.1 - PER= (1 - BER)^L
log(1 - PER) = L * log (1 - BER) == L = log (0.99)/log(1-5*10-6) = 2010 bits

Tiempo de transmisión = Tamaño paquete/ capacidad canal = 2010 bits / 4 Mbps = 0.502 ms

Tiemporizador = (Retardo propagación * 2 + tiempo de transmision) * 1.1 (El 10%) = 6.2 ms

Retardo propagación = distancia total / velocidad = 780km / 3*10^8 = 2.6 ms

Retardo total = 6.2 ms + 0,502 ms = 6.702 ms

2*tprop + ttx = T , Nopt = CT/L == C*T = R*T


5/21
Redes y Servicios de Telecomunicación (03/10/2024)

3.2 SIMULACIÓN
El análisis se va a realizar sobre tres mecanismos de control de flujo distintos:
a) Parada y espera;
b) Ventana deslizante con Retroceder-a-N;
c) Ventana deslizantes con Repetición selectiva.

3.2.1 Carga del modelo


Antes de empezar, cargue el modelo y configure los valores de los parámetros de la Tabla 1 en
el mismo. El modelo que va a utilizar está compuesto por cuatro entidades: un ‘burstySrc’, que
hace las veces de usuario en tierra, un ‘sink’, que actúa como satélite, y dos interfaces, ‘ppIF1’
y ‘ppIF2’, que actúan como las interfaces de ambos nodos y que tienen acceso directo al canal.
Para cargar el modelo, siga los siguientes pasos:
a) Abra Oracle VM VirtualBox, elija la máquina virtual Ubuntu 10.04 con OMNeT++4.1 y
pulse el botón Iniciar. Una vez arrancada se activa el botón Mostrar, pulse sobre él. Para
iniciar sesión en la cuenta usuario, introduzca la contraseña usuario. Se accede así al
entorno, donde se encuentra el icono de la herramienta OMNeT++, varias carpetas y el
icono de Firefox por si quisiera acceder a Internet.
b) Cree una nueva carpeta en el escritorio, que será su directorio de trabajo. Al nombrar la
carpeta, evite espacios en blanco (p.ej., directorio_trabajo_grupo1).
c) Abra la carpeta practicas, localice el archivo p3.zip y descomprímalo en su carpeta de
trabajo, donde debe aparecer como un subdirectorio p-to-p.

d) Busque el icono en el escritorio y pulse sobre él para arrancar OMNeT.


e) Elimine (Supr) todos los proyectos que aparezcan en el ‘Project Explorer’ (a la izquierda
de la herramienta). No los borre del disco duro.
f) Cambie el workspace a su directorio de trabajo (File | Switch Workspace | Other ...).
g) Importe el proyecto ‘p-to-p’ en el simulador (File | Import | General | Existing projects
into workspace). El entorno de trabajo debería tener un aspecto similar al de la Figura 3.

Figura 3: Imagen del entorno de trabajo con el proyecto cargado.

6/21
Protocolos De Control De Flujo con ARQ

3.2.2 Parada y espera


En este apartado se analiza el control de flujo mediante el mecanismo de parada y espera.
Simule este escenario siguiendo estos pasos:
a) En primer lugar, complete el código de la entidad fuente añadiendo la gestión de los
números de secuencia. Esta variable se incrementa cada vez que se recibe un ACK.
i. Abra el archivo ‘ppsource.cc’.
ii. Vaya a la función ‘handleMessage’. Esta función está modelada como una
máquina de estados. En la construcción switch que aparece, vaya a la sección case
ACK.
iii. Donde pone ‘// RST-Incluir Control numero de secuencia’, incluya el siguiente
código. (Recomendación: hágalo mediante un copy and paste. Para ello vaya al
escritorio y localice la página 4 en practicas/enunciados/P3-ControlFlujo-
2018_19_v2.pdf). Después, salve el fichero.
if (frm->getSeq() != seq) {
seq = (seq + 1) % 2;
sent++;
} else errors++;

iv. Este código estudia cómo se incrementa el número de secuencia. La variable ‘seq’
almacena el último número de secuencia enviado.
El cálculo se hace con la operación matemática ‘división módulo...’, respecto al
valor de números de secuencia distintos que puede haber, en este caso 2. Esta
operación devuelve el resto de la división; cuando el número de secuencia
sobrepasa el máximo, 1, vuelve a empezar en 0.
El código también lleva la cuenta del número de paquetes que se han recibido
correctamente y de las que han llegado con error.
b) Compile el modelo (menú ‘Project | Build All’). Una vez compilado, si no hace cambios
en los archivos fuente no necesita recompilar.
c) Abra el archivo ‘stop-and-wait.ned’. Seleccione la pestaña source para editarlo en modo
texto (ver Figura 4).
d) Escriba el valor de los parámetros, con sus unidades, según los ha calculado. Recuerde
terminar las líneas con ‘;’. Salve el fichero. Utilice las siguientes unidades
• delay: ms
• datarate: Mbps
• ber: sin unidades
Nota: 5x10-6 se escribe como 5e-6.
e) Edite igualmente los archivos ‘go-back-n.ned’ y ‘selective-repeat.ned’.
f) Escriba el valor de las variables necesarias en el archivo ‘ppnet.ned’

7/21
Redes y Servicios de Telecomunicación (03/10/2024)

Figura 4: Pestaña ‘source’ para analizar el contenido de un fichero.

g) Complete la sección [General] de fichero ‘omnetpp.ini’. Introduzca el valor de los


parámetros en las siguientes variables, pero sin incluir las unidades detrás.
• msgLength: (bytes)
• sleepTime: (ms)
h) Lance una simulación del modelo. Elija la configuración correcta. Cada vez que desee
emplear una configuración diferente debe seleccionarla nuevamente. Siga estos pasos:
• NOTA: Se puede lanzar el proyecto con errores en secciones del omnetpp.ini si no
se usan en la simulación.
• Pulse el botón derecho sobre el fichero ‘stop-and-wait.ned’.
• Elija la opción ‘Run as | Run configurations...’
o Si le pide crear una nueva configuración hágalo con los valores por defecto
(pulse sobre OMNeT++ Simulation y luego sobre el botón New (arriba a la
izquierda); acepte directamente).
• En el desplegable ‘Config name’ elija la opción correcta. En este caso
‘StopAndWait’. Nombre la configuración como quiera y pulse ‘Apply’ y ‘Run’.
• Le aparecerá dos ventanas. Una le permite controlar la simulación, y ver un registro
de los eventos que tienen lugar, así como acceder a información de cada uno de los
componentes (Figura 5). La otra muestra gráficamente los eventos y el envío de
mensajes entre los distintos componentes (Figura 6).
• La ejecución de la simulación se puede lanzar en 5 modos (ver Figura 5, zona
marcada por un óvalo en rojo):
• ‘Step’: permite realizar una ejecución paso a paso.
• ‘Run’: se ejecuta a una velocidad que permite visualizar los eventos.

8/21
Protocolos De Control De Flujo con ARQ

• ‘Fast’: la velocidad es mayor y muestra los eventos más significativos.


• ‘Express’: se ejecuta a máxima velocidad y no se muestra ningún evento.
• ‘Until...’: permite configurar distintas condiciones de parada de la simulación.
El campo ‘Running mode’ permite elegir el modo de velocidad en que se quiere
ejecutar la simulación.
• Simule el modelo durante 1000 segundos (103 segundos) con la opción ‘Until...’ en
modo Express.
i) Cuando acabe la simulación, pulse el botón ‘finish’ para registrar los resultados y cierre
la ventana.
j) Abra la carpeta de resultados y pulse dos veces sobre el fichero de resultados que se
haya generado. Su nombre debería empezar con stop-and-wait. Habrá un fichero de
resultados escalares (.sca). Pulse sobre él. El sistema le pedirá confirmación para crear
un fichero de análisis (.anf), acepte. Seleccione la pestaña ‘Browse Data’ para analizar
los resultados (Figura 7).

Figura 5: Ventana de control de la simulación.

Figura 6: Visor gráfico de la simulación.

9/21
Redes y Servicios de Telecomunicación (03/10/2024)

Figura 7: Ficheros para el análisis de resultados.


Se pide:
a) Con los pasos anteriores ha compilado el proyecto y estudiado el código que controla los
números de secuencia.
b) En el código que ha añadido en el fichero “ppsource.c”. ¿Qué variable controla el número
de paquetes que se ha confirmado correctamente? ¿y las que han llegado con error?
sent
Variable paquetes confirmados = ___________________________
errors
Variable paquetes erróneos = ____________________________

c) ¿Qué valores toma la variable seq?


0-1
Seq = __________________________

d) Rellene la columna “Parada y Espera” de la Tabla 2, que aparece al final de la sección


(pg.11), con los resultados de la simulación. Tenga en cuenta que la tasa efectiva de
transmisión que aparece está en bps.

e) Calcule de forma analítica (con las expresiones vistas en clase) el throughput normalizado
(S) y el throughput en kbit/s.

S = 1 - PER / 1 + 2a = 1- 0.099/ 1+2.6ms/0.502ms= 0.0801

a = tprop/ttrans = 2.6ms/0.502ms

Th = S * R = 320.46 Kbps

10/21
Protocolos De Control De Flujo con ARQ

f) Busque qué parámetros vistos en teoría se corresponden con los siguientes parámetros que
utiliza el OMNET:
S
- Utilization: ______________________________
Th
- Effective data rate: ________________________
si
¿Los valores teóricos obtenidos coinciden con los obtenidos mediante simulación? _____

3.2.3 Ventana deslizante con Retroceder a N


En este mecanismo, la ventana máxima de transmisión es mayor que 1. Antes de empezar la
simulación calcule el tamaño óptimo de la ventana de transmisión.

Se pide:
a) El producto capacidad-retardo (CapRet) está relacionado con el valor óptimo de la ventana
de transmisión. ¿Qué unidades tiene? ______________________________________
bits

Escriba la expresión del retardo que ha utilizado para el cálculo de CapRet.


C*T=R*T
____________________________________________________________________
Numero de paquetes / 1 + 2a = paq
¿Qué unidades tiene la ventana de transmisión? _____________________________

Calcule el valor óptimo del tamaño de la ventana de transmisión. _______________


N <= 1 + 2a = 12 (valor entero siguiente al calculado)

Ahora la fuente está modelada mediante el archivo ‘ppsource2.cc’. Estudie cómo se controlan
los números de secuencia:
• Abra el archivo ‘ppsource2.cc’.
• Cuando se recibe un nuevo ACK, se incrementa el número de secuencia disponible con
este código (en varias partes del código):
seq = (seq + 1) % seqSize;

• Estudie también la función ‘window()’. Esta función devuelve el valor actual de la


ventana de transmisión.
n = (seq - base + seqsize + 1) % seqSize;

Las variables que utiliza son:


o seq: último número de secuencia utilizado.
o base: número de secuencia más bajo (antiguo) que no ha sido confirmado.
o seqSize: cardinal del conjunto de números de secuencia (número de
identificadores).

11/21
Redes y Servicios de Telecomunicación (03/10/2024)

Se pide:

b) Abra el fichero ‘ppsource2.cc’ y estudie los aspectos indicados anteriormente.


c) Escriba en el fichero ‘omnetpp.ini’, sección GoBackN, el tamaño de la ventana de
transmisión (burstySrc); el máximo número de secuencia se calcula automáticamente.
También se ajustan automáticamente los parámetros del receptor.
void PPSource2::initialize()
{
windowSize = par("window");
d) Busque en el fichero ‘ppsource2.cc’ la función initialize() y cópiela. // RST - correct seqSize
seqSize = windowSize + 1;
PPSource::initialize();

lastFrm = sendMessage;
}

13
¿Qué valor toma la variable seqSize? __________________________
¿Con qué variable, vista en clase de teoría, relacionaría seqSize: I ó N? _________
Con la N, Nopt = 1 + 2a

e) Vaya a la función window(), suponga que el último paquete enviado ha sido el 10 y que el
último paquete confirmado ha sido el 3. Determine qué valor devuelve window().

7 numero de paquetes pendientes de confirmar, quedan 7 en la ventana


n=
(10-4+13+1)%13 = 7
10 = seq 4 = base 13= seqsize % = queremos el resto de la division entera
f) Realice nuevamente la simulación, pero eligiendo ahora el archivo ‘go-back-n.ned’.
g) Guarde los mismos parámetros que en el caso anterior en la columna “Retroceder a N” de
la Tabla 2 (pg.11).

h) Calcule de forma analítica el throughput normalizado (S) y el throughput (en kbit/s).


a = tprop/ttrans = 2.6ms/0.502ms = 5.17

N = 12

S = (1-PER) / (1 + 2a * PER) = (1-0.0099) / (1 + 2 * (5.17) * 0.0099) = 0.898

Th = R * S = (4M) * 0.898= 359,26


¿Los valores teóricos coinciden con los simulados? _____
Si

12/21
Protocolos De Control De Flujo con ARQ

i) Realice ahora otra simulación modificando el valor de la ventana. Divida el valor óptimo
de la ventana por 2. Tome como valor de la nueva ventana el entero superior más próximo.

12/2 = 6
Valor de la nueva ventana=
Antes de simular. ¿Cree qué disminuirá significativamente el valor de la tasa efectiva
de datos? Justifique su respuesta.
Si, va a disminuir la mitad aproximadamente ya que la ventana es la mitad de pequeña
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________

183.73 kbps
Después de simular anote: Tasa efectiva de datos (kbps)=

3.2.4 Ventana deslizante con Repetición selectiva


En este caso, tan sólo se retransmiten los paquetes no confirmados. Para un funcionamiento
óptimo, la ventana máxima de transmisión y la ventana de recepción deben ser iguales, con un
valor igual a la mitad del cardinal del conjunto de números de secuencia.
Se pide: N = I/2
a) Calcule el valor óptimo de la ventana.

12
Valor ventana óptima =

No
b) ¿Es distinto al caso de retroceder-a-N?

Ahora la fuente está modelada mediante el archivo ‘ppsource3.cc’. Estudie cómo se comprueba
que los ACK recibidos no son duplicados:
• Abra el archivo ‘ppsource3.cc’.
• Al igual que antes, cuando se recibe un nuevo ACK, se incrementa el número de
secuencia disponible con este código:
seq = (seq + 1) % seqSize;

• Para comprobar si un ACK es un duplicado, se utiliza la función ‘allowedACK(int i)’.


Estudie su código; las variables son las mismas que en el caso anterior. Se devuelve true
si el ACK no es duplicado.

13/21
Redes y Servicios de Telecomunicación (03/10/2024)

Se pide:

c) Abra el fichero ‘ppsource3.cc’ y estudie los aspectos indicados anteriormente. Busque


en el fichero ‘ppsource3.cc’ la función initialize().

12 = I / 2 == I = 24
¿Qué valor toma la variable seqSize?
¿Por qué?
Porque necesitamos que en Th no se nos caiga, por lo tanto deberemos aumentar el valor de
____________________________________________________________________
____________________________________________________________________
identificadores para poder recibir los ACK

Determine el valor que devuelve la función ‘allowedACK(int i)’ (TRUE or FALSE)


suponiendo que el número de secuencia más bajo que no ha sido confirmado es el 3.
Considere que i=4. Justifique su respuesta.

True
allowedACK (4) =

t = 15
____________________________________________________________________
t = (base + windowSize - 1) % seqSize = (4+12-1) % 24 = 15
____________________________________________________________________

d) Escriba en el fichero ‘omnetpp.ini’, sección SelectiveRepeat, el tamaño de la ventana


de la fuente (burstySrc).
e) Realice nuevamente la simulación, pero eligiendo ahora el archivo
‘selective-repeat.ned’.
f) Guarde los mismos parámetros que en el caso anterior en la columna “Repetición
selectiva” de la Tabla 2.
g) Realice una nueva simulación dividiendo por 2 el valor óptimo de la ventana. (Tome el
valor entero superior más próximo al valor obtenido). Anote el valor obtenido de la
tasa efectiva de datos.
12 / 2 = 6
Valor de la nueva ventana = ____________________

199.7
Tasa efectiva de datos (kbps) =

14/21
Protocolos De Control De Flujo con ARQ

h) Calcule de forma analítica el throughput normalizado (S) y el throughput en kbit/s del


caso descrito en f.
N = 12
S = 1 - 0.0099 = 0.9901
Th = S * R =0.9901 * 4M = 396.04

¿Los valores teóricos coinciden con los simulados?


Aproximadamente
_____________________________________________________________________

i) Compare este resultado con el obtenido para el valor de ventana óptimo. ¿Cómo
interpreta estos resultados? Justifique su respuesta.
_____________________________________________________________________
Al usar la N optima para el calculo nos convierte lo "analítico" en lo perfecto cosa que en la

_____________________________________________________________________
simulación aunque pongamos la N optima no nos pasa ya que ocurrirán errores y no
_____________________________________________________________________
nos dará el caso idóneo

Tabla 2: Resumen de resultados – Control de flujo.

Parada y Retroceder Repetición


Descripción Parámetro
Espera aN Selectiva
Paquetes recibidos correctamente received frames 173077 1703472 1797692
Paquetes retransmitidos retransmission 1804 209484 18920
Tasa efectiva de datos (kbps) effective data rate 347,53 342.05 360.9
Confirmaciones con error error ACKs 56 607 623

3.3 ANÁLISIS DE LOS RESULTADOS


Con los resultados obtenidos y anotados en la Tabla 2, responda a las siguientes preguntas.
Nota1: Dado que una ejecución de una simulación es un resultado meramente estadístico, considere para el análisis
que resultados muy parecidos son equivalentes. Para conseguir resultados precisos es necesario realizar la
simulación un número repetido de ocasiones variando las semillas iniciales de los generadores aleatorios.
Nota2: Cuando se pida calcular la mejora de “y” frente a “x” (referencia), utilice la expresión:
𝑣𝑎𝑙𝑜𝑟𝑦 − 𝑣𝑎𝑙𝑜𝑟𝑥
𝑉𝑎𝑟𝑖𝑎𝑐𝑖ó𝑛 y|x =
𝑣𝑎𝑙𝑜𝑟𝑥
Si el valor se quiere en %, sólo hay que multiplicar por 100 el resultado obtenido.
La interpretación de que el resultado sea una mejora o un empeoramiento depende de la variable que se esté
analizando. Por ejemplo,
o Cuando se estudia el número de paquetes recibidos correctamente, si la variación da un número positivo,
significa que en la situación “y” se reciben bien más paquetes que en la situación “x”. Con la situación
“y” se consigue una mejora.
o Cuando se estudia el número de paquetes recibidos con error, si la variación da un número positivo,
significa que en la situación “y” se reciben mal más paquetes que en la situación “x”. Con la situación
“y” se consigue un empeoramiento.

15/21
Redes y Servicios de Telecomunicación (03/10/2024)

o Cuando se estudia la latencia de la red, un valor positivo significa que la latencia en la situación “y” es
mayor que en la situación “x”, es decir, la red “y” es más lenta y se interpretaría como un empeoramiento.

Se pide:
a) Determine el porcentaje que representan los paquetes retransmitidos respecto al total
de paquetes enviados para cada una de las técnicas.

(1804/1804+173077) = 1.03%
Retransmisiones_Parada (%) =

(209484/209484+1703472) = 10.95%
Retransmisiones_Retroceder a N (%) =

Retransmisiones_RepSelectiva (%) = (18920/18920+1797692) = 1.04%

b) ¿Cuál es la mejora, en tanto por ciento, en relación al número de paquetes recibidos


que se obtiene por utilizar el mecanismo de repetición selectiva frente a los otros dos?

1797692-173077 / 173077 * 100 = 938,66


MejoraRecibidos_RepSel_Parada (%) =

1797692-1703472 / 1703472 * 100 = 5.531


MejoraRecibidosRepSel_Retroceder a N (%) =

c) Observe los resultados obtenidos para los mecanismos de retroceder a N y repetición


selectiva. Responda a las siguientes preguntas:
a. ¿Observa un significativamente mayor throughput en el segundo método?
mayorThroughput = Sí 
x No 
b. ¿Cuál cree que es la verdadera mejora que proporciona el segundo método?
Como nuestra ventana de transmisión y de recepción son las mismas el Th será el máximo
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

d) Realice la simulación en el escenario de repetición selectiva para una probabilidad de


error igual a 0 (modelo ‘selective_repeat.ned’). Utilice el valor de la ventana óptima.
¿Qué tasa efectiva se alcanza ahora?

399.99
TasaEfetiva_BERNula_RepSelect (kbps) =
¿Cree que es posible alcanzar esta tasa efectiva también con el mecanismo de parada
y espera cuando la BER es 0? Sí  No x ¿Por qué?
No, la S sigue siendo la misma y es demasiado baja (0.08)
__________________________________________________________________
__________________________________________________________________

16/21
Protocolos De Control De Flujo con ARQ

Calcule de forma teórica el throughput para parada y espera con BER=0.


S = 1 - PER / 1 + 2a = 1 - 0/ 1+2.6ms/0.502ms= 0.0801

351.17
TasaEfetiva_BERNula_ParadaEspera (kbit/s)=

e) En la zona en la que se encuentra el usuario en tierra se está registrando una fuerte


lluvia. Esto hace que la probabilidad de error en el canal (BER) se multiplique por
cinco respecto a la original. BER = 25 * 10-6
Realice una nueva simulación con cada una de las técnicas de ventana deslizante (con
BER = 25e-6) y anote los paquetes recibidos correctamente y la tasa efectiva de datos.
Determine después la degradación del throughput respecto al escenario con BER de
5e-6 (Variación tasa efectiva).
REPETICIÓN SELECTIVA

1414301
Recibidas_5BER=

283.9
Tasaefectiva_5BER (kbit/s) =

27%
Variación tasa efectiva (%)=

75128 / 1414301 = 5.044%


Retransmisiones (%)=

RETROCEDER a N

1154502
Recibidas_5BER=
231.82
Tasaefectiva_5BER (kbit/s) =

47%
Variación tasa efectiva (%)=
717144 / 1154502 = 62%
Retransmisiones (%)=
retrasmitido / retrasmitido + recibido

Calcule la mejora en tanto por ciento respecto al número de paquetes recibidos


correctamente si se utiliza Repetición selectiva frente a Retroceder a N. Compárelo con
el resultado obtenido en el apartado 3.3.a).

MejoraReceivedSelectiva_RetrocederN_5BER =
1414301-115402 / 1154502 = 22.5%

17/21
Redes y Servicios de Telecomunicación (03/10/2024)

En base a los resultados calculados previamente ¿qué técnica consigue que el aumento
de la BER repercuta menos en el throughput obtenido? ¿Por qué?
La Repetición selectiva ya que no tenemos en cuenta la a y usamos la S optima
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
Notas:
Los datos que debemos saber de la practica:

received frames - > Paquetes recibidos correctamente


Retransmissions - > Paquetes retransmitidos
Effective data rate - > Tasa efectiva de datos (kbps)
error fraces (ACKs) - > confimaciones de error
Utilitazion - > S
N - > Numero de tamaño de la ventana (siempre el entero siguiente al calculado, SIEMPRE ES LA MISMA A MENOS
QUE TE INDIQUEN LO CONTRARIO)
Nopt - > 1 + 2a
Variable paquetes confirmados - > sent
Variable paquetes erroneos - > errors

seq - > Es el ultimo numero de la secuencia que hemos enviado (0-1)


base - > numero mas bajo que no ha sido confirmado
seqSize - > Numero de indentificadores, (N+1)
% - > Es el resto de la division entera
n = numero de paquetes pendientes de confirmar = (seq - base + seqsize + 1) % seqsize

CALCULOS
a = tprop/ttrans
Retardo de propagacion (ms - delay) = distancia total / velocidad
Tamaño de un paquete = L / 8 (Para que sea numero natural)
Th = S * R
CapRet = C * T = R * T
PER = 1 - (1-BER)'L - > De aqui podemos despejar la L == log(PER)/log(1-BER)
L = ttx * R
Temporizador = (Retardo propagación * 2 + tiempo de transmision) * (Porcentaje que te indican, si es que te lo ponen)
Variacion y|x = ((valory - valorx) / valorx) * 100 (El valor x es el de referencia)
Retransmisiones = paquetes retransmitidos / paquetes retransmitidos + paquetes recibidos correctamente
Producto capacidad - retardo (bits) = Velocidad del canal (dataRate) * Temporizador (sleepTime)

Parada y espera:
S = 1 - PER / 1 + 2a

Retroceder a N:
S = 1 - PER / (1 + 2a * PER) si N >= 1 + 2a
S = N * (1 - PER) / (1 + 2a * PER) si N < 1 + 2a

Repeticion selectiva:
S = 1 - PER si N >= 1 + 2a
S = N * (1 - PER) / (1 + 2a) si N < 1 + 2a
18/21
Protocolos De Control De Flujo con ARQ

4. ANEXO - ESTIMACIÓN DE RESULTADOS


Esta sección contiene estimaciones (en rangos) de los valores correctos para distintos
parámetros/cálculos que se solicitan en la práctica con el objeto de ofrecer una idea somera de
la corrección o inexactitud de los cálculos y simulaciones realizados.

Descripción Parámetro Valor


1 Retardo de propagación (s) delay < 3ms
2 Velocidad del canal (Mbps) dataRate < 10Mbps (enunciado)
3 Probabilidad de error de un bit ber < 10e-6 (enunciado)
4 Tamaño de un mensaje (octetos) msgLength > 200
5 Temporizador (ms) sleepTime < 8ms
6 Producto capacidad-retardo (bits) --- > 20000

Parada y espera
a) Estudiar código.
b) Variable paquetes correctos y Variable paquetes erróneos aparecen en el código que ha
introducido en el fichero ppsource.cc. El nombre de las variables en los códigos de
programa suele ser descriptivo.
c) Seq sólo toma 2 valores. Los valores de Seq < 5.
d) Observar columna "Parada y espera" de la siguiente tabla.
e) Usar fórmulas dadas en clase. Tenga en cuenta la región según el tamaño de ventana.
f) Mirar código y resultados de simulación.

Ventana deslizante con Retroceder a N


a) Mirar teoría. Tamaño ventana óptima  (5, 15).
b) Estudiar código.
c) Escribir código.
d) seqSize <20. (I/N: ver teoría).
e) n <10.
f) Simular.
g) Observar columna “Retroceder a N” de la siguiente tabla.
h) Usar fórmulas dadas en clase. Tenga en cuenta la región según el tamaño de ventana.
i) Ventana <10. Tasa efectiva < 3000 kbps.

19/21
Redes y Servicios de Telecomunicación (03/10/2024)

Ventana deslizante con Repetición Selectiva


a) Tamaño ventana óptima  (5, 15).
b) seqSize <30
allowedACK(4): Estudiar con los valores correspondientes
if (base < t)
return ((base <= i) AND (i <=t))
c) Escribir código.
d) Simular.
e) Observar columna “Repetición Selectiva” de la siguiente tabla.
f) Ventana <10. Tasa efectiva < 2700 kbps.
g) Usar fórmulas dadas en clase. Tenga en cuenta la región según el tamaño de ventana.
h) Pensar en aprovechamiento del canal en cada caso.

Parada y Retroceder Repetición


Descripción Parámetro
Espera aN Selectiva
Paquetes recibidos received/sent
frames < 200000 > 1000000 > 1000000
correctamente
error frames /
Paquetes erróneos retransmissión < 2000 > 100000 < 50000
effective data
Tasa efectiva de datos (kbps) rate > 250 > 2000 > 2000

Confirmaciones con error error ACKs < 100 < 1500 < 1500

Análisis de resultados
a) Retransmisiones-Parada < 5%
Retransmisiones-Retroceder a N > 5%
Retransmisiones_RepSelectiva < 5%
b) MejoraRecibidosRepSel-Parada > 100%
MejoraRecibidosRepSel-Retroceder a N > 4%
c) Teoría.
d) Con BER = 0.
Tasaefectiva _BERNula >3.5 Mbps
alcanzableParadaEspera = ver teoría
Tasaefetiva_BerNula_Par_Esp (kbit/s) >100 kbit/s.

20/21
Protocolos De Control De Flujo con ARQ

e) Con BER = 25e-6.


REPETICIÓN SELECTIVA
Received < 1600000
Tasaefectiva < 3 Mbit/s
Variación tasa efectiva|  (10%, 40%) (degradación)
Retransmisiones > 5%

RETROCEDER a N
Received < 1400000
Tasaefectiva < 2.5 Mbit/s
Variación tasa efectiva|  (20%, 50%) (degradación)
Retransmisiones > 35%

MejoraReceivedSelectiva_RetrocederN_5BER < 30%

21/21

You might also like