Statistics
| Branch: | Tag: | Revision:

sssimulator @ master

Name Size Revision Age Author Comment
  EventScheduler f1158e5c about 2 years Luca Baldesi Refactor Makefile
  Matrix d6fa79fc over 3 years Luca Baldesi fix bug in matrix_shrink function. bug affects ...
  Test f1158e5c about 2 years Luca Baldesi Refactor Makefile
.gitignore 49 Bytes 80fb408d about 2 years Luca Baldesi add .test and .edges to gitignore
Makefile 1019 Bytes f1158e5c about 2 years Luca Baldesi Refactor Makefile
README 2.54 KB 86681e55 almost 4 years luca first version
config.h 83 Bytes 86681e55 almost 4 years luca first version
core.h 1.56 KB 4136f032 over 3 years Luca Baldesi add important annotation. reminds that the buff...
ed.c 6.64 KB 4123e0f7 about 2 years Luca Baldesi add per-link events. Add a new flag (-E) to tu...
ed.h 1.01 KB 659ba19d almost 4 years Luca Baldesi add copyright banner to "event driven" files
gpl-3.0.txt 34.3 KB 86681e55 almost 4 years luca first version
graph.c 7.66 KB c02ceab4 almost 4 years Luca Baldesi apply small bufixes
graph.h 441 Bytes 86681e55 almost 4 years luca first version
overlay.c 7.29 KB 4123e0f7 about 2 years Luca Baldesi add per-link events. Add a new flag (-E) to tu...
overlay.h 612 Bytes 72616bda almost 4 years luca add copyright banner to overlay files
peer_event.c 5.4 KB 4123e0f7 about 2 years Luca Baldesi add per-link events. Add a new flag (-E) to tu...
peer_event.h 677 Bytes 4123e0f7 about 2 years Luca Baldesi add per-link events. Add a new flag (-E) to tu...
proc-time.c 8.26 KB 6b38058b almost 4 years luca Add tests and Dl/ELp scheduling algorithm
sched.c 21.1 KB 4123e0f7 about 2 years Luca Baldesi add per-link events. Add a new flag (-E) to tu...
sched.h 503 Bytes 4123e0f7 about 2 years Luca Baldesi add per-link events. Add a new flag (-E) to tu...
sssim.c 5.94 KB 4123e0f7 about 2 years Luca Baldesi add per-link events. Add a new flag (-E) to tu...
stats.c 7.09 KB 4d4d1b40 over 3 years Luca Baldesi fix test case missing global variable and windo...
stats.h 790 Bytes f850347b over 3 years Luca Baldesi add windowed analysis mode add tests for conver...
td.c 4.29 KB 80f4c362 over 3 years Luca Baldesi add delay logging functionality
td.h 83 Bytes 86681e55 almost 4 years luca first version
test.sh 15.5 KB 6b38058b almost 4 years luca Add tests and Dl/ELp scheduling algorithm

Latest revisions

# Date Author Comment
eeaea29f 04/21/2017 09:33 AM Luca Baldesi

Add per-edge-events feature to SSSim.

This feature make the simulator acts on per-edge basis rather than on per-node basis.
It only works with the event-driven mode.

f1158e5c 04/21/2017 08:51 AM Luca Baldesi

Refactor Makefile

4123e0f7 04/05/2017 03:20 PM Luca Baldesi

add per-link events.

Add a new flag (-E) to turn on the per-link event. This implies the event-driven mode (-e).
Each peer i sends an offer to its neighbor j every offer_interval times probability of j seconds, deterministically.

80fb408d 04/05/2017 11:55 AM Luca Baldesi

add .test and .edges to gitignore

ba1583a3 02/04/2016 02:51 PM Luca Baldesi

fix usage print alignment

6fa73170 02/04/2016 02:48 PM Luca Baldesi

add auto-convergence feature; simulation stops after delay convergence is reached, a chunk analysis window size can be specified

c17f8c05 02/04/2016 02:43 PM Luca Baldesi

merge the delay_log feature, solve conflicts

4d4d1b40 02/04/2016 02:19 PM Luca Baldesi

fix test case missing global variable and window analysis size in non-converging mode

80f4c362 01/19/2016 10:45 AM Luca Baldesi

add delay logging functionality

f850347b 01/13/2016 11:24 AM Luca Baldesi

add windowed analysis mode
add tests for convergence analysis function

make possible to analyze chunk data on blocks, evaluating the last available.

View all revisions | View revisions

README


This is SSSim, the Simple & Scalable Simulator for P2P scheduling algorithms. SSSim is not a real event-based simulator, but a tool for comparing the schedules generated by different chunk/peer selection algorithms (called "chunk scheduling algorithms" and "peer scheduling algorithms" in SSSim). To simplify such comparisons and to make the schedules easier to predict/analyse, SSSim is based on some simplifying assumptions (which explain why the simulator is "simple & stupid"): 1) All peers are synchronised 2) All the peers have the same output bandwidth, which is equal to the stream bitrate. Times are normalised dividing everything by the time needed to send a chunk (hence, the stream bitrate and the output bandwidths are equal to 1). 3) All the peers have a very large (modeled as infinite) input bandwidth 4) All the peers have the possibility to know the internal state of all the other peers in the system (the scheduling algorithms can be clairvoyant) Based on these assumptions, at every time unit: 1) Each peer receives all the chunks that have been sent to it at the previos time unit 2) The source selects a target peer (peer scheduling) and sends a new chunk to it 3) Each peer selects a chunk C (chunk scheduling) and target peer P (peer scheduling) and sends C to P. Note that the peer can select first the chunk and then the peer or vice-versa (or can select chunk and peer simultaneously, but these algorithms have not been tested yet). SSSim can generate a trace showing the chunks exchanged between peers at each time unit. To compile the simulator, just type "make" and a "sssim" executable should be built. To build the simulator with different scheduling algorithms, you can use the "PEER_SCHED" and "CHUNK_SCHED" variables: for example, "make CHUNK_SCHED=latest_blind_chunk". To remove the playout delay (and limited-size chunk buffer), compile with the "NO_BUFF" variable defined: for example, "make NO_BUFF=YesPlease". The program accepts a "-n " option to set the number of peers (100 is the default), while the number of chunks to send can be configured by using the "-c " option. The complete syntax for the sssim program is available by using the "-h" (help) option. It is possible to specify an optional argument indicates the name of a file where the trace of all the exchanged chunks is written, and an optional argument which indicates the name of a file where the chunks' diffusion times (the maximum time needed by a chunk to reach a peer) are saved as soon as chunks arrive.

Also available in: Atom