This repository contains the DAS4-dissemination emulation. It is intended to run multiple peers simultaneously while disseminating messages in various scenarios.
Each scenario uses its own configuration file and is described below.
Running a scenario should be as simple as calling ./run.sh CONFIG
from your DAS4 account. Results are stored in
/var/scratch/$USER/resultdir-dissemination
. Run
~/das4-dissemination/evaluation/99-all.sh
from this directory to
evaluate the results.
There is a Jenkins job running these emulations periodically, see http://jenkins.tribler.org/job/Experiment_Dissemination_Boudewijn/.
There are several 3000 messages emulations, they behave mostly the same except for a few key changes:
- number of peers that create the 3000 messages,
- the synchronisation strategy,
- minimum number of messages disseminated for to consider the emulation a success.
The following properties apply to all 3000 messages emulations.
Run time | 15 minutes | |
Number of hosts | 10 | |
Number of peers | 500 | |
Number of messages | 3000 | created at launch |
Churn | None | |
Message size | 193, 196, 195.6 bytes | min, max, average packet size |
Sync response limit | 5120 bytes / cycle | once the limit is exceeded no more packets are sent |
Optimum sync speed | 27 packet / cycle |
Once the emulation and 99-all.sh
have finished you will have several
graphs for CPU, bandwidth, etc. With each file prefixed with the name
of the emulation. The two most important files are:
- success_condition.txt
- this text file contains the success conditions for each peer. In other words, a report for each peer if they were able to obtain sufficient messages. See all_to_all_modulo_3000_success_condition.txt for an example.
- download_progress.png
- this graph shows how many messages the peers have obtained over time. The angled line starting in the origin shows the ideal progress if every peer is able to download its maximum amount of messages every cycle. The closer that the peers follow this line, the better. See fig:download_progress.
A single peer (peer#0) starts by creating 3000 messages. Bloom filter
creation is performed using the largest pivot strategy, see
Community._dispersy_claim_sync_bloom_filter_largest
. The emulation
is success when, after 15 minutes, all peers have obtained all 3000
messages.
Message creation | single peer | peer#0 creates all messages at launch |
Sync strategy | largest pivot | Community._dispersy_claim_sync_bloom_filter_largest |
Success condition | 3000 | all peers must obtain 3000 messages |
A single peer (peer#0) starts by creating 3000 messages. Bloom filter
creation is performed using the modulo strategy, see
Community._dispersy_claim_sync_bloom_filter_modulo
. The emulation
is success when, after 15 minutes, all peers have obtained all 3000
messages.
Message creation | single peer | peer#0 creates all messages at launch |
Sync strategy | modulo | Community._dispersy_claim_sync_bloom_filter_modulo |
Success condition | 3000 | all peers must obtain 3000 messages |
Half the peers (peer#0-peer#249) starts by creating 12 messages each, resulting in a 3000 messages total. Since the peers all start with the same global time, the created messages will use duplicate global time values. Resulting in 250 messages with global time 3, 250 messages with global time 4, etc.
Bloom filter creation is performed using the largest pivot strategy,
see Community._dispersy_claim_sync_bloom_filter_largest
. The
emulation is success when, after 15 minutes, all peers have obtained
all 3000 messages.
Message creation | half the peers | peer#0-peer#249 each create 12 messages at launch |
Sync strategy | largest pivot | Community._dispersy_claim_sync_bloom_filter_largest |
Success condition | 3000 | all peers must obtain 3000 messages |
Half the peers (peer#0-peer#249) starts by creating 12 messages each, resulting in a 3000 messages total. Since the peers all start with the same global time, the created messages will use duplicate global time values. Resulting in 250 messages with global time 3, 250 messages with global time 4, etc.
Bloom filter creation is performed using the modulo strategy, see
Community._dispersy_claim_sync_bloom_filter_modulo
. The emulation
is success when, after 15 minutes, all peers have obtained all 3000
messages.
Message creation | half the peers | peer#0-peer#249 each create 12 messages at launch |
Sync strategy | largest pivot | Community._dispersy_claim_sync_bloom_filter_modulo |
Success condition | 3000 | all peers must obtain 3000 messages |
All peers (peer#0-peer#499) starts by creating 6 messages each, resulting in a 3000 messages total. Since the peers all start with the same global time, the created messages will use duplicate global time values. Resulting in 500 messages with global time 3, 500 messages with global time 4, etc.
Bloom filter creation is performed using the largest pivot strategy,
see Community._dispersy_claim_sync_bloom_filter_largest
. The
emulation is success when, after 15 minutes, all peers have obtained
all 3000 messages.
Message creation | all peers | peer#0-peer#499 each create 6 messages at launch |
Sync strategy | largest pivot | Community._dispersy_claim_sync_bloom_filter_largest |
Success condition | 3000 | all peers must obtain 3000 messages |
All peers (peer#0-peer#499) starts by creating 6 messages each, resulting in a 3000 messages total. Since the peers all start with the same global time, the created messages will use duplicate global time values. Resulting in 500 messages with global time 3, 500 messages with global time 4, etc.
Bloom filter creation is performed using the modulo strategy, see
Community._dispersy_claim_sync_bloom_filter_modulo
. The emulation
is success when, after 15 minutes, all peers have obtained all 3000
messages.
Message creation | all peers | peer#0-peer#499 each create 6 messages at launch |
Sync strategy | largest pivot | Community._dispersy_claim_sync_bloom_filter_modulo |
Success condition | 3000 | all peers must obtain 3000 messages |