esds/tests/mobility_eth0_latency_2s1r/simulator.py
2022-06-10 21:58:15 +02:00

44 lines
2.6 KiB
Python
Executable file

#!/usr/bin/env python
# Load ESDS
import sys
sys.path.append("../../")
import esds
import numpy as np
########## Scenario ##########
# Notations:
# - Remaining communication duration (last communication ends minus current simulated time) = C
# - Last communication duration (previous row) = U
# - Last remaining data size (previous row) = D
# - Current remaining data (current row) = R
# - Initial data size (first row) = I
# - Bandwidth = BW
# - Latency = L
# |----------------------------------------+------------+----------------+----------------------+---------------------------+-------------------------|
# | This table is the same for both sender | | | | | |
# |----------------------------------------+------------+----------------+----------------------+---------------------------+-------------------------|
# | Simulated time(s) | Latency(s) | Bandwidth(bps) | Remaining data (bit) | Communication duration(s) | Communcation ends at(s) |
# |----------------------------------------+------------+----------------+----------------------+---------------------------+-------------------------|
# | 0 | 0 | 8/2 | 8 | 2 | 2 |
# | 1 | 0.5 | 8/2 | C/U*D=4 | R/BW + R/I*L = 1.25 | 2.25 |
# | 2 | 1 | 8/2 | C/U*D=0.8 | R/BW + R/I*L = 0.3 | 2.3 |
# | 2.3 | 1 | 8/2 | 0 | | |
# |----------------------------------------+------------+----------------+----------------------+---------------------------+-------------------------|
##############################
B=np.full((3,3),8)
L=np.full((3,3),0)
s=esds.Simulator({"wlan0":{"bandwidth":B, "latency":L, "is_wired":False}, "eth0":{"bandwidth":B, "latency":L, "is_wired":True}})
s.create_node("sender")
s.create_node("sender")
s.create_node("receiver")
def callback(simulator):
simulator.log("Network update!")
new_lat_wlan0=simulator.netmat["wlan0"]["latency"]+1/2
new_lat_eth0=simulator.netmat["eth0"]["latency"]+1/2
simulator.update_network({"wlan0":{"bandwidth":B, "latency":new_lat_wlan0, "is_wired":False},"eth0":{"bandwidth":B, "latency":new_lat_eth0, "is_wired":True}})
s.run(breakpoints_every=1,breakpoint_callback=callback,debug=True)