|
From: Erik M. <mo...@sc...> - 2000-08-06 10:38:54
|
It would be very useful to have a simulator for testing the
scalability and vulnerability of BlockNets. I talked already with
Michael about this. We could simulate various changes to the protocol
without actually implementing them, simply by adding or changing a
few numbers here and there. We could also do very-large-scale tests
with 100,000 nodes and more. Basically, if we don't do this it's a
"fire & forget" strategy -- we don't really know the outcome.
So a simulator would be excellent and if we intend this program to be
more than a short proof-of-concept, it would be very useful for the
further development. It's obvious that Peter can at best look over
it, since he's far too busy to implement it. So anyone who can
"speak" Java and is willing to contribute to this should speak up.
- - -
Here's a more detailed proposal:
- turn based simulation
- everything that's unique (adverts, files etc.)
should also have unique representations in the
simulation
- Java, AWT GUI (for visual representation:
canvas with 1 pixel per node, 1 pixel between
each, lines between pixels visualize file
transfers / routes)
- Reason for Java: cross-platform, easy to use
Required data:
global:
- number of good nodes
- readvertising frequency
- individual advert size
- optional: number of bad nodes
- flooders
- DoSers (don't use Blocks, but
attack a certain IP-can't be
locked out, might focus on
prominent nodes)
- fakers
- filters
- analyzers / hoppers
- ?
individual:
for these numbers we need a distribution table,
e.g.: 56 kbps; 5%; 64 kbps: 10% ..
or randomly picked from a range:
0-4h:10%; 4-12h:25%
- speed of nodes
- uptime
- number of local files
- file requests / hour
- cache size
- non-ad-routing: how many % don't route ads?
- "prominence":
how well the nodes are known, e.g.
50-100% know this node:1%
30-50% know this node:4%
10-30% know this node:10%
0-10% know this node:85%
(when a node reconnects, the prominent
connection points are connected to more
often).
- cancel frequency: when and how likely
will the user cancel the download?
when=at which speed threshold, e.g.
at <50% of maximum speed: 1%
at 40-50% of max speed: 3%
..
at 5-10% of max speed: 40%
at 0-5% of max speed: 60%
- ?
Optional:
frustration - after a certain number of cancels
and failed downloads, the user is frustrated
and quits the network. A threshold for this
could be defined.
Implementation:
The nodes are generated as a vector of objects.
In a loop, each nodes can generate several
actions (request, upload, disconnect, continue
downloading of a requested file, cancel, send
advert, send file etc.), actions that regard
other nodes are put in their event queue which
is processed as soon as possible, according to
the bandwidth that the node can use per turn.
Afer one loop is complete, a number of new nodes
is generated randomly and added to the vector.
The display is updated. Repeat on user request
(step by step) or automatically.
Gatherable data:
How many nodes d/l at x % of their max speed?
How many d/ls fail?
What is the average bandwidth required by adverts?
How is it distributed?
Which regions of the network are congested and how
could this be alleviated?
How many evil nodes can we tolerate?
etc.
Comments welcome.
Regards,
Erik
PS: Yes, these proposals will eventually be put on the web as soon as
I have an FTP account.
--
Scientific Reviewer, Freelancer, Humanist -- Berlin/Germany
Phone: +49-30-45491008 - Web: <http://www.humanist.de/erik>
The Origins of Peace and Violence: <http://www.violence.de>
Please donate free food NOW: <http://www.thehungersite.com>
|