Changes To Experiment: Routing Protocol Implementation v01
Not logged in

Changes to "Experiment: Routing Protocol Implementation v01" between 2016-12-10 03:37:31 and 2016-12-10 04:00:15

     6      6   <p><a href="http://longterm.softf1.com/specifications/lightmsgp/v2/">LightMSGP_v2</a>.</p>
     7      7   
     8      8   <p><br>
     9      9   </p>
    10     10   
    11     11   <h1>Overview</h1>
    12     12   
    13         -<p>Agents are operating system users that have their $HOME mounted to RAM file
    14         -system. The $HOME of an agent is cleared at the end of every session by a
    15         -special cleaner agent. At startup an agent might not be initialized from
           13  +<p>Agents are operating system users that have their <b>$HOME mounted to RAM
           14  +file system</b>. The $HOME of an agent is cleared at the end of every session
           15  +by a special cleaner agent. At startup an agent might not be initialized from
    16     16   scratch, but it might be loaded from RAM-disk by reading in Ruby VM dump <i>(the
    17     17   <a href="https://ruby-doc.org/core-2.3.0/Marshal.html">Marshal module</a>)</i>.
    18         -Persistence (database, file storage, etc.) is handled by a custom-built special
    19         -agent that gives randomly generated access passwords <i>(cleartext)</i> only to
    20         -agent-god. Agent-god is an agent that kills and creates agents. Agent-god gets
    21         -the persistence agent access key, creates a new code-running agent, gives the
    22         -gives the persistence agent access key to the code-running agent only once and
    23         -if the code-running agent asks the key twice, the agent-god kills the
           18  +<b>Agent-god</b> is an agent that kills and creates agents. A killed agent is a
           19  +<b>zombie-agent</b> that exists among operating system users, but it does not
           20  +have any processes running, its crontab is empty, its home folder is empty, it
           21  +does not own any files in the /tmp.&nbsp;</p>
           22  +
           23  +<p>Persistence (database, file storage, etc.) is handled by an agent that
           24  +generates a randomly generated access password pair and gives &nbsp; the
           25  +cleartext of one of the pair members&nbsp;<i>(cleartext) </i>only to the
           26  +agent-god and it does it only once per password pair. Agent-god gets the
           27  +persistence agent access password, creates a new <b>code-running agent</b>,
           28  +gives the persistence agent access password to the code-running agent only once
           29  +and if the code-running agent asks the password twice, the agent-god kills the
    24     30   code-running agent, cleans its home folder, logs the incident. The idea is that
    25         -if the code-running agent is allowed to ask the persistence key only once, then
    26         -either only the trusted part of the code-running agent code gets it or the
    27         -agent gets killed. If the untrusted code region of the code-running agent asks
    28         -the key first, then it gets it and has access to the data that it should not
    29         -have. An idea is to start the agent by giving the access key as a console
    30         -parameter and have the trusted part of the code-running agent negotiate a new
    31         -access key with the persistence agent before the untrusted code is dynamically
    32         -loaded.&nbsp;</p>
           31  +if the code-running agent is allowed to ask the persistence agent's access
           32  +password only once, then either only the trusted part of the code-running agent
           33  +code gets it or the agent gets killed, when the trusted part of the
           34  +code-running agent asks for it.</p>
    33     35   
    34         -<p><br>
    35         -</p>
           36  +<p>If the untrusted code region of the code-running agent asks the password
           37  +first, then it gets the password, asks the persistence agent for the second
           38  +member of the password pair and has access to the data that it should not have.
           39  +A workaround &nbsp;to that problem might be that the code-running agent is
           40  +started by giving the access key as a console parameter and have the trusted
           41  +part of the code-running agent ask the persistence agent for the second member
           42  +of the password pair before the untrusted/unverified/third-party code is
           43  +dynamically loaded.&nbsp;</p>
    36     44   
    37     45   <p>The trusted part of the code-running agents, their boot-up, and the
    38     46   Agent-god and the persistence agent communication module should be written in
    39         -ParaSail. A gateways to the internet, hardware, essentially singletons, have
    40         -the same front-end as the persistence agents have. The routing calculation
    41         -ParaSail code is a separate module, which might be linked with the persistence
    42         -agent's agent interface.</p>
           47  +ParaSail. G<b>ateways to the internet, hardware, essentially singletons, have
           48  +the same agent interface as the persistence agents have.</b> The routing
           49  +calculation ParaSail code is a separate module, which might be linked with the
           50  +persistence agent's agent interface.<br>
           51  +</p>
    43     52   
    44     53   <p><br>
    45     54   </p>