Artifact Content
Not logged in

Artifact 587b1395cb26804126bbd564ef0811fbedf32995:

Wiki page [Experiment: Routing Protocol Implementation v01] by martin_vahi on 2016-12-10 04:02:55.
D 2016-12-10T04:02:55.528
L Experiment:\sRouting\sProtocol\sImplementation\sv01
P 3ddfb0518c9afcecc1c92dd11c9cc5c161e07756
U martin_vahi
W 2929
<p>This experiment is an attempt to implement the routing part of the&nbsp;</p>

<p><a href="http://longterm.softf1.com/specifications/experimental/silktorrent_v_1_0/">Silktorrent
Specification Version 1.0</a> and its sub-specification, the&nbsp;</p>

<p><a href="http://longterm.softf1.com/specifications/lightmsgp/v2/">LightMSGP_v2</a>.</p>

<p><br>
</p>

<h1>Overview</h1>

<p>Agents are operating system users that have their <b>$HOME mounted to RAM
file system</b>. The $HOME of an agent is cleared at the end of every session
by a special cleaner agent. At startup an agent might not be initialized from
scratch, but it might be loaded from RAM-disk by reading in Ruby VM dump <i>(the
<a href="https://ruby-doc.org/core-2.3.0/Marshal.html">Marshal module</a>)</i>.
<b>Agent-god</b> is an agent that kills and creates agents. A killed agent is a
<b>zombie-agent</b> that exists among operating system users, but it does not
have any processes running, its crontab is empty, its home folder is empty, it
does not own any files in the /tmp.&nbsp;</p>

<p>Persistence (database, file storage, etc.) is handled by an agent that
generates a randomly generated access password pair and gives &nbsp; the
cleartext of one of the pair members&nbsp;<i>(cleartext) </i>only to the
agent-god and it does it only once per password pair. Agent-god gets the
persistence agent access password, creates a new <b>code-running agent</b>,
gives the persistence agent access password to the code-running agent only once
and if the code-running agent asks the password twice, the agent-god kills the
code-running agent, cleans its home folder, logs the incident. The idea is that
if the code-running agent is allowed to ask the persistence agent's access
password only once, then either only the trusted part of the code-running agent
code gets it or the agent gets killed, when the trusted part of the
code-running agent asks for it.</p>

<p>If the untrusted code region of the code-running agent asks the password
first, then it gets the password, asks the persistence agent for the second
member of the password pair and has access to the data that it should not have.
A workaround &nbsp;to that problem might be that the code-running agent is
started by giving the access key as a console parameter and have the trusted
part of the code-running agent ask the persistence agent for the second member
of the password pair before the untrusted/unverified/third-party code is
dynamically loaded.&nbsp;</p>

<p>The trusted part of the code-running agents, their boot-up, and the
Agent-god and the persistence agent communication module should be written in
ParaSail. <b>Gateways to the internet, hardware, essentially singletons, have
the same agent interface as the persistence agents have.</b> The routing
calculation ParaSail code is a separate module, which might be linked with the
persistence agent's agent interface.<br>
</p>

<p><br>
</p>

Z 831d874b7be2ab003e85f72acbae2ffa