Commit Graph

176 Commits

Author SHA1 Message Date
Csaba Kiraly fa1818a43b
simplify code
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-24 08:43:18 +01:00
Csaba Kiraly ead127e73e
change defaults to queue per p2p link
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-24 08:42:35 +01:00
Csaba Kiraly 89a6b1cdf7
remove old scheduler
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-24 00:35:17 +01:00
Csaba Kiraly 2707269836
fixup: moving simulator config to resetShape
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 22:21:16 +01:00
Csaba Kiraly dfacd6bb18
allow push from non-neighbor
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:28:41 +01:00
Csaba Kiraly b33f829b0e
proposer might push segments without participating in mesh
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:28:41 +01:00
Csaba Kiraly 186d430ad1
consider shuffleLines in segmentShuffleScheduler
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:28:40 +01:00
Csaba Kiraly a1a8a4282d
fix scheduler to check result of endSegmentToNeigh
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:53 +01:00
Csaba Kiraly c0650bf75a
implement partial line sending logic
On any given p2p link, it only makes sense to send up to
k messages, after that repair kicks in.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:53 +01:00
Csaba Kiraly e70740f530
handle duplicates in receiveRow/Column
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:53 +01:00
Csaba Kiraly f91f3da5d2
fixup: segmentShuffleScheduler
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:53 +01:00
Csaba Kiraly bb55abe2b0
comments only
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:52 +01:00
Csaba Kiraly 54d101e5b8
segmentShuffleScheduler: persist scheduler state between timesteps
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:52 +01:00
Csaba Kiraly cd2b69149b
add segmentShuffleScheduler
This scheduler check which owned segments needs sending (at least
one neighbor needing it). Then it sends each segment that's worth sending
once, in shuffled order. This is repeated until bw limit.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:52 +01:00
Csaba Kiraly 655f3a6642
fix: avoid looking into the future
Checking neigh.receiving is cheating in the current model.
If the timeslot is small, information can't propagate that fast.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:52 +01:00
Csaba Kiraly af72e58d08
collect receivedQueue only if it is used later
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:52 +01:00
Csaba Kiraly 1669ec9236
more debug logging
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:27:49 +01:00
Csaba Kiraly 5383c59f6f
add shuffleLines and shuffleNeighbors params
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:25:15 +01:00
Csaba Kiraly d0641e4568
add repairOnTheFly parameter
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:25:09 +01:00
Csaba Kiraly f05c3cd233
fix queuing: should queue after repair
If operation is based on send queues, segments should
be queued after successful repair.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:21:56 +01:00
Csaba Kiraly dff0e5523a
factorize addToSendQueue
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:15:45 +01:00
Csaba Kiraly 0c91eff67b
add dumbRandomScheduler parameter
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:15:45 +01:00
Csaba Kiraly b7dab5bad9
fix sendSegmentToNeigh: specify dimension
Specify along which dimension (row/column) a segment was
sent.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:15:39 +01:00
Csaba Kiraly 23e40693f1
add perNeighborQueue option
If enabled, queue incoming messages to outgoing connections on arrival,
as typical in some GossipSub implementations.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:13:39 +01:00
Csaba Kiraly 7c0fcaba78
add validator.perNodeQueue conf option
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:13:39 +01:00
Csaba Kiraly f67c70896c
add to receivedQueue also in row/column receive code
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:13:39 +01:00
Csaba Kiraly 9ab51278c8
add shuffledDict helper
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:13:39 +01:00
Csaba Kiraly 1403ca7ad0
add random scheduler 2023-02-23 21:13:39 +01:00
Csaba Kiraly 0f4883bf26
add node level send queue
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:13:35 +01:00
Csaba Kiraly 382954de02
add segment level send/receive
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:09:59 +01:00
Csaba Kiraly 3fc7455c0b
reduce default BW to more interesting values
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:09:59 +01:00
Csaba Kiraly 3917001e6a
send one segment at a time
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:09:59 +01:00
Csaba Kiraly eb277d9b43
limit batchsize of sending from a line
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:09:59 +01:00
Csaba Kiraly 07437ddde8
fixup bwUplink check (still approximate)
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:08:26 +01:00
Csaba Kiraly bb8d05257b
WIP: initial implementation of uplink bandwidth limit
- approximate: BW is not handled strict, entire rows are sent and can go over limit
- WIP: work in progress implementation

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 21:08:17 +01:00
HajarZaiz 7ae66810f7 vis class 2023-02-23 14:37:45 +01:00
Leonardo Bautista-Gomez 6e42055cb9 Add some more configuration parameters and some more testing 2023-02-23 12:17:57 +01:00
Leo c3a9eb6b4d
Merge pull request #15 from status-im/fix-small-graph
set up complete graph if n<=d
2023-02-23 10:18:09 +01:00
Leo edb4912dd5
Merge pull request #14 from status-im/log-steps
Log steps
2023-02-23 09:46:55 +01:00
Csaba Kiraly 763ebfe136
set up complete graph if n<=d
If the number of nodes in a channel is smaller or equal than the
requested degree, a fully connected graph is used. For n>d, a random
d-regular graph is set up. (For n=d+1, the two are the same.)

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 09:06:57 +01:00
Csaba Kiraly e5c657e31e
more debug logging
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-23 09:04:51 +01:00
Csaba Kiraly 2775d180f1
debug log neighborhood of producer as well
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-22 21:48:11 +01:00
Csaba Kiraly 8c9ddcca55
add debug logging of topology
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-22 21:48:03 +01:00
Csaba Kiraly 22e4c89989
fix: column IDs matching row IDs
Fixes a simple copy paste error.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-22 21:46:36 +01:00
Leonardo Bautista-Gomez 93c318028b Add visualizer class 2023-02-22 16:45:39 +01:00
Leonardo Bautista-Gomez d5e7ae7ea7 Fix net degree bug 2023-02-22 14:49:46 +01:00
Leonardo Bautista-Gomez 09569422ab Documenting the DAS package for automatic generation with sphinx. First version. 2023-02-15 15:06:42 +01:00
Leonardo Bautista-Gomez cf780b3ca3 Starting code documentation 2023-02-08 22:45:01 +01:00
Leonardo Bautista-Gomez 6334d1c779 Removing static variables 2023-02-08 20:10:26 +01:00
Leonardo Bautista-Gomez b64fe7b383 Merging changes from 'develop' branch into 'results' branch 2023-02-08 15:01:50 +01:00
Csaba Kiraly 03813b36bc
fix receive info propagation
Make sure info about what is being sent is not propagated too fast.
In this base model, a node knows that something was sent after one
timestep. This requires keeping separating receiving from received and
updating only once per timestep.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-03 12:44:26 +01:00
Csaba Kiraly 50a210ad99
simplify send code and loop
Treat send in block proposer as in validators to simplify
code and fix steps. Previously first step included first two
timelots: initial send by block proposer and first send by
validators.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-03 12:44:07 +01:00
Csaba Kiraly 6c6e10b81f
add tx/rx troughput statistics
Collect statistics about Tx/Rx troughput, per timeslot and per node.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-03 11:30:28 +01:00
Csaba Kiraly ad11214e2d
improved logging
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-03 11:30:25 +01:00
Csaba Kiraly c97dd58d76
keep track of sent and received samples per neighbor
Keeps track of sent and received samples per line per neighbor.
Only send what wasn't yet sent or wasn't received from the other side.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-03 11:28:20 +01:00
Csaba Kiraly b38d8e13ae
add Neighbor class as placeholder
Placeholder for per-negighbor structures

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-03 11:25:35 +01:00
Csaba Kiraly fd59f44143
send line only if it has changed
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2023-02-03 11:22:19 +01:00
Leonardo Bautista-Gomez 66824aedc6 Adding XML dump of results 2023-01-25 21:51:59 +01:00
Leonardo Bautista-Gomez fc7339dc91 Add configuration file, split configuration from simulation shape, fix bug about network degree and unbalanced row/column verification 2023-01-23 18:04:54 +01:00
leobago bf1a5a60e4 Adding multidimensional simulator and results module to gather data for visualization. 2023-01-16 22:43:52 +01:00
leobago e8e82d7460 Adding configuration class 2023-01-13 16:51:27 +01:00
leobago beabafba45 Adding failure rate logging 2023-01-11 17:20:19 +01:00
leobago d723cb1bc5 Update requirements 2023-01-11 12:50:23 +01:00
Csaba Kiraly faa2954893
simpliy sendRow and sendColumn calls
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-20 12:46:46 +01:00
Csaba Kiraly 7d79879f66
fix logging of rows and columns
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-20 11:26:54 +01:00
Csaba Kiraly 7a5f67ff31
add per-node state and per-channel network
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-20 11:23:58 +01:00
Csaba Kiraly db61300c46
block: handle merge and repair
Handle marge and row/column repair directly in the block data
structure.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-20 10:09:54 +01:00
Leonardo Bautista-Gomez bb54a1cf31 Add requirements file 2022-12-14 17:16:22 +01:00
Csaba Kiraly accbc3eff9
simplify code
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-12 13:41:41 +01:00
Csaba Kiraly 4179841c89
change checkRestore to restore
We are not simulating data errors, so no need to check.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-12 13:41:41 +01:00
Csaba Kiraly 26ba6a38f7
speed up restoration
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-12 13:41:40 +01:00
Csaba Kiraly a07be50727
change to bitmaps
It is faster to store and process data availability as bitmaps.
It is also enough, as we will not do anything with the data itself.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-12 13:41:40 +01:00
Csaba Kiraly b48fb6f791
use column and row accessors
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-07 15:14:36 +01:00
Csaba Kiraly 8da447ac5a
add column and row accessors
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-07 15:10:44 +01:00
Csaba Kiraly 13580cd44d
pick row/column IDs without replacement
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-12-07 10:59:41 +01:00
Leonardo Bautista-Gomez 0c79ddbf6f Restructure package 2022-11-30 15:28:27 +01:00