Update manual

This commit is contained in:
Loic Guegan 2022-09-13 16:32:15 +02:00
parent be6dafcd10
commit db5bb401f3
5 changed files with 54 additions and 17 deletions

View file

@ -24,10 +24,10 @@ class UnitsParser:
break
number=float(bw[:i])
unit=bw[i:]
number=number*1000 if unit == "Mbps" else number
number=number*1000*8 if unit == "MBps" else number
number=number*100 if unit == "kbps" else number
number=number*100*8 if unit == "kBps" else number
number=number*1000*1000 if unit == "Mbps" else number
number=number*1000*1000*8 if unit == "MBps" else number
number=number*1000 if unit == "kbps" else number
number=number*1000*8 if unit == "kBps" else number
number=number*8 if unit == "Bps" else number
return(number)

17
manual/assets/orchestrator.py Executable file
View file

@ -0,0 +1,17 @@
#!/usr/bin/env python
import esds
import numpy as np
n=2 # 2 nodes
B=np.full((n,n),50*1000) # Bandwith+txperfs 5bps
L=np.full((n,n),0) # Latency 0s
s=esds.Simulator({"wlan0":{"bandwidth":B, "latency":L, "is_wired":False}})
##### Instantiate nodes with their implementation
s.create_node("node",args="sender") # Use node.py for the first node with "sender" as argument
s.create_node("node",args="receiver") # Now the second node
##### Run the simulation
s.run()

View file

@ -1,3 +1,3 @@
[t=0.000,src=n0] Send 10 bytes on wlan0
[t=0.016,src=n1] Receive 10 bytes on wlan0
[t=0.016,src=esds] Simulation ends
[t=0.002,src=n1] Receive 10 bytes on wlan0
[t=0.002,src=esds] Simulation ends

Binary file not shown.

View file

@ -18,7 +18,7 @@
\newcommand{\stateoff}{"\textit{off}"\xspace}
\newcommand{\stateon}{"\textit{on}"\xspace}
\newcommand{\version}{\InputIfFileExists{version}{}{version}}
\newcommand*{\addsource}[2]{\vspace{0.3cm}\begin{tcolorbox}[breakable,enhanced,arc=1.4mm,arc is angular,title=\textbf{\small#1}]\inputminted[fontsize=\scriptsize]{#2}{#1}\end{tcolorbox}}
\newcommand*{\addsource}[2]{\vspace{0.3cm}\begin{tcolorbox}[breakable,enhanced,arc=1.4mm,arc is angular,title=\textbf{\small#1}]\inputminted[breaklines,fontsize=\scriptsize]{#2}{#1}\end{tcolorbox}}
% Document
\begin{document}
@ -55,28 +55,35 @@
\label{architecture}
\end{figure}
ESDS simulator comprises two major components: 1) The Simulation Orchestrator(SO) 2) The Simulated
ESDS simulator comprises two major components: 1) The Simulation Orchestrator (SO) 2) The Simulated
Nodes (SN). This architecture is depicted in Figure \ref{architecture}. The SO is the main process
in charge of implementing the simulation main loop. It instantiates the network (e.g bandwidths
andlatencies), collects and processes the events (e.g communications,turn on/off). On the
other hand, nodes are threads that implement the nodes behaviors.
in charge of implementing the simulation main loop. It instantiates the network (e.g bandwidths and
latencies), collects and processes the events (e.g communications,turn on/off). On the other hand,
nodes are threads that implement the node behaviors.
\section{Running your first simulation}
To run a simulation, at least 2 files are required: 1) a platform file 2) a node implementation
source code. The platform file defines the simulated network platform and sets various simulation
parameters. The node implementation source code simply provide the logic of the simulated nodes.
source code. The platform file defines the simulated network platform (network links and
performances etc.) and sets various simulation parameters. The node implementation source code
provides the logic of the simulated nodes.
\subsection{Platform file}
Platform files are written in YAML and contains 3 sections: 1) \textit{general} 2) \textit{nodes} 3) \textit{interfaces}.
The \textit{general} section is optional but all the others must be present. Here is a simple platform file to simulate 2 wireless nodes:
Platform files are written in YAML and contains 3 sections namely: 1) \textit{general} 2)
\textit{nodes} 3) \textit{interfaces}. The \textit{general} section is optional but all the other
sections must be present. Here is an example of a simple platform file to simulate 2 wireless nodes:
\addsource{assets/platform.yaml}{yaml}
\subsection{Node implementation file}
Nodes implementations are written using python. Here is the implementation of the node used in the previous platform.yaml file:
Nodes implementations are written using python. Here is the implementation of the node mentioned in
the last \verb|platform.yaml| file:
\addsource{assets/node.py}{python}
\subsection{Execution}
\label{sec:firstsimulation:execution}
To execute our first simulation, the following command should be executed from the same folder
that contains \verb|platform.yaml| and \verb|node.py|:
\begin{verbatim}
@ -84,7 +91,20 @@ that contains \verb|platform.yaml| and \verb|node.py|:
\end{verbatim}
Here is the output of the simulation:
\verbatiminput{assets/output.txt}
In this case, simulation tooks $0.016s$ and $10$ bytes were sent on the wlan0 interface from node 0 (src=n0) to node 1 (src=n1).
In this case, simulation tooks $0.002s$ and $10$ bytes were sent on the wlan0 interface from node 0
(src=n0) to node 1 (src=n1).
\subsection{Custom orchestrator instantiation}
Instead of using a \verb|platform.yaml| file, it is possible to instantiate manually the esds
orchestrator. To do so, you need to implement that procedure in a python file. Here is and example
that performs the exact same simulation presented in Section \ref{sec:firstsimulation:execution} but
with a custom instantiation of the orchestrator:
\addsource{assets/orchestrator.py}{python}
Next we can run the simulation:
\begin{verbatim}
> ./orchestrator.py
\end{verbatim}
\end{document}