Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
8adc69e
back to sample assignment based on id
srene Sep 15, 2023
72b37c5
dht fix
srene Sep 15, 2023
c57f36c
disable initial elaborate response dht
srene Sep 15, 2023
9ca67c9
fix starting multiple builder issue
srene Oct 3, 2023
181e548
fix sampling to node mapping
srene Oct 3, 2023
098e22d
getting extra samples in case some fail for random sampling
srene Oct 3, 2023
8a8bb02
xback to sample assignment based on id
srene Sep 15, 2023
ac2f663
add neighbour and search table refresh
srene Sep 15, 2023
6e87164
ttl discovery done
srene Sep 15, 2023
6d9b822
discoveries reporting
srene Sep 29, 2023
15ecb62
discovery reporting fix + ttl time based
srene Sep 30, 2023
661082e
discoveries report extended
srene Sep 30, 2023
9edb090
targeted discovery for missing samples
srene Oct 3, 2023
ac7cba9
updating neighbours seen time search table
srene Oct 4, 2023
f1307d4
fixing turbulance
srene Oct 4, 2023
e758a7c
adding num random samples as parameter
srene Oct 4, 2023
34343e8
disable global node knowledge / enable node discovery
srene Oct 5, 2023
6d742c9
remove builder from discovery
srene Oct 6, 2023
dd44dfe
increase radius to reasign when missing nodes for samples
srene Oct 15, 2023
6e07a1b
switch to learned nodes + bug fix
srene Oct 16, 2023
b5d583f
filtering builder address from searchtable
srene Oct 16, 2023
bf61d53
load builder searchtable with validators
srene Oct 17, 2023
9b17b40
pull from builder in seeding phase
srene Oct 18, 2023
788c1eb
caching samples requests to reply later on when samples received
srene Oct 18, 2023
228b301
adapt sampling to caching requests + activate turbulence
srene Oct 19, 2023
64ec510
removed non-responding nodes from search table
srene Oct 19, 2023
bd33de3
turbulence fix filling routing table
srene Oct 19, 2023
9d6d156
update last seen only when direct contact neighbour
srene Oct 19, 2023
58d9214
refresh search table in config
srene Oct 19, 2023
47fe624
refresh search table in config
srene Oct 19, 2023
6e1506b
fix bug when no nodes found for a sample
srene Oct 19, 2023
f8b54f3
fix bug do sampling
srene Oct 20, 2023
1a5e3e7
fix bug das turbulence
srene Oct 23, 2023
a21af02
enable periodic lookup
srene Oct 23, 2023
a3bc0dd
removing logs
srene Oct 23, 2023
6e67845
disable periodic kad lookups
srene Oct 24, 2023
9839c88
update in search table, avoid dead nodes discovery
srene Oct 25, 2023
e79327b
add report discovery in the configuration
srene Oct 26, 2023
da8e551
fix bug removing fetching samples from queried nodes
srene Oct 26, 2023
682f4d1
avoid adding builder search table
srene Oct 26, 2023
a4ae8fe
removing logs
srene Oct 26, 2023
44732b9
reducing memory usage
srene Oct 27, 2023
19308ec
validator evil class
srene Oct 27, 2023
4228a5c
init evil nodes
srene Oct 27, 2023
9887a5e
return other evil nodes discovery by malicious
srene Oct 27, 2023
efc9545
clean code
srene Oct 27, 2023
b7f8c54
make report msg optional
srene Oct 27, 2023
d0f881d
evil das protocol + config
srene Oct 30, 2023
0f6768c
disable discovery table reporting for evil nodes
srene Oct 30, 2023
a558284
return random nodes search table
srene Oct 30, 2023
2c01ddb
limit number of evil nodes returned search table
srene Oct 30, 2023
ad439a0
adding extra nodes in the same row/column for sampling to overcome ma…
srene Oct 30, 2023
9242555
back to multiple samples per message
srene Nov 1, 2023
791870c
solved bug in random sampling process sample counting
srene Nov 1, 2023
42acbe6
adding extra nodes for random sampling
srene Nov 1, 2023
0e60318
bug fixed when timeouts to continue sampling
srene Nov 5, 2023
3027f7f
send samples after reconstruction
srene Nov 11, 2023
1903c72
alternative fetching when malicious
srene Nov 29, 2023
de874cc
adding extra nodes for missing samples progressively with aggressiven…
srene Dec 4, 2023
1f07393
reducing cached samples
srene Dec 26, 2023
01bb4b4
configs
srene Dec 26, 2023
137bc86
cleaning
srene Dec 29, 2023
94795f6
all nodes known
srene Dec 30, 2023
bd8ee84
adding extra nodes disables
srene Dec 30, 2023
a5b8ce2
minor
srene Dec 31, 2023
13039a4
single search table
srene Dec 31, 2023
c187486
fixing
srene Dec 31, 2023
d950cf5
no kv
srene Jan 1, 2024
5712199
minor edit
srene Jan 2, 2024
80bc792
random col/row sampling
srene Jan 3, 2024
c2329fc
sorting sampling nodes
srene Jan 3, 2024
80b2d6d
minor edit
srene Jan 3, 2024
21f2a1a
sorting sampling nodes
srene Jan 3, 2024
c27c3b9
sorting sampling nodes
srene Jan 3, 2024
cbad094
fixing non found samples in non-validator
srene Jan 3, 2024
ffb88fc
fixing non found samples in non-validator
srene Jan 3, 2024
42ff296
logs
srene Jan 3, 2024
a7931dd
extra nodes sampling
srene Jan 6, 2024
01f0a07
canceling pending requests
srene Jan 13, 2024
101c9be
fix
srene Jan 13, 2024
3492c01
messages report
srene Jan 13, 2024
0602522
assignig samples when missing nodes in id space
srene Jan 14, 2024
b7ea351
node type in msg report
srene Jan 14, 2024
155377d
reporting only related messages
srene Jan 14, 2024
8bc497b
msg reporting fix
srene Jan 14, 2024
22075a6
fix
srene Jan 14, 2024
42051f8
increasing radius for validator sampling
srene Jan 14, 2024
a3256fb
configs
srene Jan 14, 2024
15e3146
minor
srene Jan 19, 2024
e1ed0ff
adding evil ids
srene Mar 2, 2024
f57351a
more results
srene Sep 5, 2024
f9fa308
config
srene Nov 3, 2024
0d0f62b
wip
srene Dec 1, 2024
ccb9988
file
srene Dec 1, 2024
16230e5
seeding ok
srene Jan 18, 2025
bffe919
validator sampling
srene Jan 18, 2025
9c27af9
add random sampling
srene Jan 19, 2025
4ca396f
nonval random sampling
srene Jan 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 67 additions & 39 deletions simulator/config/dasprotocol.cfg
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::
# :::::::::::::::::::::::::::::::::`:::::::::::::::::::::
# :: Kademlia Default Configuration
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::

# ::::: GLOBAL ::::::

# Network size
SIZE 5000
SIZE 1000

# Random seed
K 5

MINDELAY 100
MAXDELAY 100
MINDELAY 5
MAXDELAY 200

#Simulation time in ms
SIM_TIME 1000*60*7
SIM_TIME 11999

CHURN_RATE_HOUR 5

#Traffic generator is executed every TRAFFIC_STEP
TRAFFIC_STEP 300000 #10000000/SIZE
TRAFFIC_STEP 12000 #10000000/SIZE
#Tracing module is executed every OBSERVER_STEP
OBSERVER_STEP 100000
OBSERVER_STEP 10000
#Turbulence module is executed every TURBULENCE_STEP enabling churning
TURBULENCE_STEP 3600000/(4*SIZE*CHURN_RATE_HOUR/100) #100000000/SIZE

TURBULENCE_STEP 1000
TURBULENCE_STEP_NONVAL 1000
REFRESH_STEP 10000000

# add network config parameters to simulation
random.seed 24680
Expand All @@ -39,14 +39,16 @@ network.size SIZE
protocol.0link peersim.core.IdleProtocol

#A protocol that stores links. It does nothing apart from that. Use by default
protocol.1uniftr peersim.transport.UniformRandomTransport
protocol.1uniftr.mindelay MINDELAY
protocol.1uniftr.maxdelay MAXDELAY
protocol.1pairwiselattr peersim.transport.PairwiseFixedLatencyTransportFile
protocol.1pairwiselattr.mindelay MINDELAY
protocol.1pairwiselattr.maxdelay MAXDELAY
protocol.1pairwiselattr.size SIZE
protocol.1pairwiselattr.file /home/sergi/workspace/kademlia-simulator/simulator/python/latencies.csv

#transport layer that reliably delivers messages with a random delay, emulating TCP
protocol.2unreltr peersim.transport.UnreliableTransport
protocol.2unreltr.drop 0
protocol.2unreltr.transport 1uniftr
protocol.2unreltr.transport 1pairwiselattr

#Kademlia protocol with 256 bits identifiers and 17 buckets in the routing table.
#Use FINDMODE 1 to send FINDMODE messages looking for distance to specific node instead of sending the id of the node like in DEVP2P
Expand All @@ -61,18 +63,32 @@ protocol.3kademlia.FINDMODE 1
protocol.4dasprotocol peersim.kademlia.das.DASProtocolBuilder
protocol.4dasprotocol.transport 2unreltr
protocol.4dasprotocol.kademlia 3kademlia
protocol.4dasprotocol.reportDiscovery false
protocol.4dasprotocol.reportMsg true

protocol.5dasprotocol peersim.kademlia.das.DASProtocolValidator
protocol.5dasprotocol.transport 2unreltr
protocol.5dasprotocol.kademlia 3kademlia
protocol.5dasprotocol.reportDiscovery false
protocol.5dasprotocol.reportMsg true

protocol.6dasprotocol peersim.kademlia.das.DASProtocolNonValidator
protocol.6dasprotocol.transport 2unreltr
protocol.6dasprotocol.kademlia 3kademlia
protocol.6dasprotocol.reportDiscovery false
protocol.6dasprotocol.reportMsg true

protocol.7evildasprotocol peersim.kademlia.das.EvilDASProtocol
protocol.7evildasprotocol peersim.kademlia.das.DASProtocolEvilValidator
protocol.7evildasprotocol.transport 2unreltr
protocol.7evildasprotocol.kademlia 3kademlia
protocol.7evildasprotocol.reportDiscovery false
protocol.7evildasprotocol.reportMsg true

protocol.8evildasprotocol peersim.kademlia.das.DASProtocolEvilNonValidator
protocol.8evildasprotocol.transport 2unreltr
protocol.8evildasprotocol.kademlia 3kademlia
protocol.8evildasprotocol.reportDiscovery false
protocol.8evildasprotocol.reportMsg true

# ::::: INITIALIZERS :::::
#Class that initializes nodes with kademlia protocol and generates uniform ids
Expand All @@ -81,8 +97,9 @@ init.1uniqueNodeID.protocolkad 3kademlia
init.1uniqueNodeID.protocoldasbuilder 4dasprotocol
init.1uniqueNodeID.protocoldasvalidator 5dasprotocol
init.1uniqueNodeID.protocoldasnonvalidator 6dasprotocol
init.1uniqueNodeID.protocolEvildas 7evildasprotocol
init.1uniqueNodeID.validator_rate 0.5
init.1uniqueNodeID.protocolEvilValDas 7evildasprotocol
init.1uniqueNodeID.protocolEvildas 8evildasprotocol
init.1uniqueNodeID.validator_rate 0.2
init.1uniqueNodeID.evilNodeRatioValidator 0.0
init.1uniqueNodeID.evilNodeRatioNonValidator 0.0

Expand All @@ -99,33 +116,44 @@ control.0traffic peersim.kademlia.das.TrafficGeneratorSample
control.0traffic.step TRAFFIC_STEP
control.0traffic.mapping_fn 2
control.0traffic.sample_copy_per_node 2
control.0traffic.block_dim_size 512
control.0traffic.block_dim_size 100
control.0traffic.num_samples 75
control.0traffic.kadprotocol 3kademlia

#TrafficGenerator class sends and initial
control.1refresh peersim.kademlia.das.RefreshSearchTable
control.1refresh.step REFRESH_STEP

# turbulence non-validator
# control.2turbolenceAdd peersim.kademlia.das.TurbulenceDas
# control.2turbolenceAdd.protocol 3kademlia
# control.2turbolenceAdd.protocoldas 4dasprotocol
# control.2turbolenceAdd.protocolevildas 7evildasprotocol
# control.2turbolenceAdd.transport 2unreltr
# control.2turbolenceAdd.step TURBULENCE_STEP
# control.2turbolenceAdd.p_idle 0.5
# control.2turbolenceAdd.p_rem 0.25
# control.2turbolenceAdd.p_add 0.25

# # turbulence validators
# control.3turbolenceAdd peersim.kademlia.das.TurbulenceDasValidator
# control.3turbolenceAdd.protocol 3kademlia
# control.3turbolenceAdd.protocoldas 4dasprotocol
# control.3turbolenceAdd.protocolevildas 7evildasprotocol
# control.3turbolenceAdd.transport 2unreltr
# control.3turbolenceAdd.step TURBULENCE_STEP
# control.3turbolenceAdd.p_idle 0.5
# control.3turbolenceAdd.p_rem 0.25
# control.3turbolenceAdd.p_add 0.25

#control.2turbolenceAdd peersim.kademlia.das.TurbulenceDas
#control.2turbolenceAdd.protocolkad 3kademlia
#control.2turbolenceAdd.protocoldasbuilder 4dasprotocol
#control.2turbolenceAdd.protocoldasvalidator 5dasprotocol
#control.2turbolenceAdd.protocoldasnonvalidator 6dasprotocol
#control.2turbolenceAdd.protocolEvildas 7evildasprotocol
#control.2turbolenceAdd.transport 2unreltr
#control.2turbolenceAdd.step TURBULENCE_STEP_NONVAL
#control.2turbolenceAdd.p_idle 0.1
#control.2turbolenceAdd.p_rem 0.45
#control.2turbolenceAdd.p_add 0.45

# turbulence validators
#control.3turbolenceAdd peersim.kademlia.das.TurbulenceDasValidator
#control.3turbolenceAdd.protocolkad 3kademlia
#control.3turbolenceAdd.protocoldasbuilder 4dasprotocol
#control.3turbolenceAdd.protocoldasvalidator 5dasprotocol
#control.3turbolenceAdd.protocoldasnonvalidator 6dasprotocol
#control.3turbolenceAdd.protocolEvildas 7evildasprotocol
#control.3turbolenceAdd.transport 2unreltr
#control.3turbolenceAdd.step TURBULENCE_STEP
#control.3turbolenceAdd.p_idle 0.9
#control.3turbolenceAdd.p_rem 0.05
#control.3turbolenceAdd.p_add 0.05

# ::::: OBSERVER :::::
#The observer is executed every OBSERVER_STEP and will generate data traces
control.4 peersim.kademlia.KademliaObserver
control.4.protocol 3kademlia
control.4.step OBSERVER_STEP
control.4.logfolder logsDas
control.4.logfolder logs
159 changes: 159 additions & 0 deletions simulator/config/dasprotocol1000.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# :::::::::::::::::::::::::::::::::`:::::::::::::::::::::
# :: Kademlia Default Configuration
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::

# ::::: GLOBAL ::::::

# Network size
SIZE 1000

# Random seed
K 5

MINDELAY 5
MAXDELAY 125

#Simulation time in ms
SIM_TIME 11999


#Traffic generator is executed every TRAFFIC_STEP
TRAFFIC_STEP 12000 #10000000/SIZE
#Tracing module is executed every OBSERVER_STEP
OBSERVER_STEP 10000
#Turbulence module is executed every TURBULENCE_STEP enabling churning
TURBULENCE_STEP 1000
TURBULENCE_STEP_NONVAL 1000
REFRESH_STEP 10000000

# add network config parameters to simulation
random.seed 24680
simulation.experiments 1
simulation.endtime SIM_TIME
network.size SIZE


# Peersim protocols enabled in each node

#A protocol that stores links. It does nothing apart from that. Use by default
protocol.0link peersim.core.IdleProtocol

#A protocol that stores links. It does nothing apart from that. Use by default
protocol.1pairwiselattr peersim.transport.PairwiseFixedLatencyTransport
protocol.1pairwiselattr.mindelay MINDELAY
protocol.1pairwiselattr.maxdelay MAXDELAY
protocol.1pairwiselattr.size SIZE


#transport layer that reliably delivers messages with a random delay, emulating TCP
protocol.2unreltr peersim.transport.UnreliableTransport
protocol.2unreltr.drop 0
protocol.2unreltr.transport 1pairwiselattr

#Kademlia protocol with 256 bits identifiers and 17 buckets in the routing table.
#Use FINDMODE 1 to send FINDMODE messages looking for distance to specific node instead of sending the id of the node like in DEVP2P
protocol.3kademlia peersim.kademlia.KademliaProtocol
protocol.3kademlia.transport 2unreltr
protocol.3kademlia.BITS 256
protocol.3kademlia.NBUCKETS 17
protocol.3kademlia.FINDMODE 1

#Kademlia protocol with 256 bits identifiers and 17 buckets in the routing table.
#Use FINDMODE 1 to send FINDMODE messages looking for distance to specific node instead of sending the id of the node like in DEVP2P
protocol.4dasprotocol peersim.kademlia.das.DASProtocolBuilder
protocol.4dasprotocol.transport 2unreltr
protocol.4dasprotocol.kademlia 3kademlia
protocol.4dasprotocol.reportDiscovery false
protocol.4dasprotocol.reportMsg true

protocol.5dasprotocol peersim.kademlia.das.DASProtocolValidator
protocol.5dasprotocol.transport 2unreltr
protocol.5dasprotocol.kademlia 3kademlia
protocol.5dasprotocol.reportDiscovery false
protocol.5dasprotocol.reportMsg true

protocol.6dasprotocol peersim.kademlia.das.DASProtocolNonValidator
protocol.6dasprotocol.transport 2unreltr
protocol.6dasprotocol.kademlia 3kademlia
protocol.6dasprotocol.reportDiscovery false
protocol.6dasprotocol.reportMsg true

protocol.7evildasprotocol peersim.kademlia.das.DASProtocolEvilValidator
protocol.7evildasprotocol.transport 2unreltr
protocol.7evildasprotocol.kademlia 3kademlia
protocol.7evildasprotocol.reportDiscovery false
protocol.7evildasprotocol.reportMsg true

protocol.8evildasprotocol peersim.kademlia.das.DASProtocolEvilNonValidator
protocol.8evildasprotocol.transport 2unreltr
protocol.8evildasprotocol.kademlia 3kademlia
protocol.8evildasprotocol.reportDiscovery false
protocol.8evildasprotocol.reportMsg true

# ::::: INITIALIZERS :::::
#Class that initializes nodes with kademlia protocol and generates uniform ids
init.1uniqueNodeID peersim.kademlia.das.CustomDistributionDas
init.1uniqueNodeID.protocolkad 3kademlia
init.1uniqueNodeID.protocoldasbuilder 4dasprotocol
init.1uniqueNodeID.protocoldasvalidator 5dasprotocol
init.1uniqueNodeID.protocoldasnonvalidator 6dasprotocol
init.1uniqueNodeID.protocolEvilValDas 7evildasprotocol
init.1uniqueNodeID.protocolEvildas 8evildasprotocol
init.1uniqueNodeID.validator_rate 0.2
init.1uniqueNodeID.evilNodeRatioValidator 0.0
init.1uniqueNodeID.evilNodeRatioNonValidator 0.0


#Adds initial state to the routing tables
init.2statebuilder peersim.kademlia.StateBuilder
init.2statebuilder.protocol 3kademlia
init.2statebuilder.transport 2unreltr

# ::::: CONTROLS :::::

#TrafficGenerator class sends and initial
control.0traffic peersim.kademlia.das.TrafficGeneratorSample
control.0traffic.step TRAFFIC_STEP
control.0traffic.mapping_fn 2
control.0traffic.sample_copy_per_node 2
control.0traffic.block_dim_size 512
control.0traffic.num_samples 75
control.0traffic.kadprotocol 3kademlia

#TrafficGenerator class sends and initial
control.1refresh peersim.kademlia.das.RefreshSearchTable
control.1refresh.step REFRESH_STEP

# turbulence non-validator

#control.2turbolenceAdd peersim.kademlia.das.TurbulenceDas
#control.2turbolenceAdd.protocolkad 3kademlia
#control.2turbolenceAdd.protocoldasbuilder 4dasprotocol
#control.2turbolenceAdd.protocoldasvalidator 5dasprotocol
#control.2turbolenceAdd.protocoldasnonvalidator 6dasprotocol
#control.2turbolenceAdd.protocolEvildas 7evildasprotocol
#control.2turbolenceAdd.transport 2unreltr
#control.2turbolenceAdd.step TURBULENCE_STEP_NONVAL
#control.2turbolenceAdd.p_idle 0.1
#control.2turbolenceAdd.p_rem 0.45
#control.2turbolenceAdd.p_add 0.45

# turbulence validators
#control.3turbolenceAdd peersim.kademlia.das.TurbulenceDasValidator
#control.3turbolenceAdd.protocolkad 3kademlia
#control.3turbolenceAdd.protocoldasbuilder 4dasprotocol
#control.3turbolenceAdd.protocoldasvalidator 5dasprotocol
#control.3turbolenceAdd.protocoldasnonvalidator 6dasprotocol
#control.3turbolenceAdd.protocolEvildas 7evildasprotocol
#control.3turbolenceAdd.transport 2unreltr
#control.3turbolenceAdd.step TURBULENCE_STEP
#control.3turbolenceAdd.p_idle 0.9
#control.3turbolenceAdd.p_rem 0.05
#control.3turbolenceAdd.p_add 0.05

# ::::: OBSERVER :::::
#The observer is executed every OBSERVER_STEP and will generate data traces
control.4 peersim.kademlia.KademliaObserver
control.4.protocol 3kademlia
control.4.step OBSERVER_STEP
control.4.logfolder logs1000
Loading