gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[www] branch master updated: - added L2O NGI project page.


From: gnunet
Subject: [www] branch master updated: - added L2O NGI project page.
Date: Sun, 07 Nov 2021 17:16:55 +0100

This is an automated email from the git hooks/post-receive script.

t3sserakt pushed a commit to branch master
in repository www.

The following commit(s) were added to refs/heads/master by this push:
     new e19e3ab  - added L2O NGI project page.
e19e3ab is described below

commit e19e3abc4d62d2eaaea78421a4f1475bc75a5f85
Author: t3sserakt <t3ss@posteo.de>
AuthorDate: Sun Nov 7 17:15:52 2021 +0100

    - added L2O NGI project page.
---
 template/l2o/index.html.j2  | 215 ++++++++++++++++++++++++++++++++++++++++++++
 template/l2o/mile1.html.j2  | 135 ++++++++++++++++++++++++++++
 template/l2o/mile2.html.j2  |  85 ++++++++++++++++++
 template/l2o/mile3.html.j2  |  88 ++++++++++++++++++
 template/l2o/testng.html.j2 | 158 ++++++++++++++++++++++++++++++++
 5 files changed, 681 insertions(+)

diff --git a/template/l2o/index.html.j2 b/template/l2o/index.html.j2
new file mode 100644
index 0000000..f80d7ea
--- /dev/null
+++ b/template/l2o/index.html.j2
@@ -0,0 +1,215 @@
+{% extends "common/base.j2" %}
+{% block body_content %}
+<article class="container">
+
+  <header>
+    <h1>{{ _("NGI Assure project: Layer-2-Overlay") }}</h1>
+  </header>
+
+  <div class="row">
+    <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu 
for better orientation -->
+      <nav class="nav subnav position-fixed flex-column border-right" 
style="position:fixed">
+      <a class="nav-link" href="#idea">{{ _("Project motivation") }}</a>
+      <a class="nav-link" href="#testframework">{{ _("New Test Framework") 
}}</a>
+      <a class="nav-link" href="#milestones">{{ _("Milestones") }}</a>
+      <a class="nav-link" href="#milestone1">{{ _("Milestone 1") }}</a>
+      <a class="nav-link" href="#milestone2">{{ _("Milestone 2") }}</a>
+      <a class="nav-link" href="#milestone3">{{ _("Milestone 3") }}</a>
+      <a class="nav-link" href="#milestone4">{{ _("Milestone 4") }}</a>
+      <a class="nav-link" href="#milestone5">{{ _("Milestone 5") }}</a>
+      <a class="nav-link" href="#milestone6">{{ _("Milestone 6") }}</a>
+      </nav>
+    </div>
+    <div class="col">
+
+      <section>
+        <p>
+        {% trans %}
+          This project was funded through the NGI Assure Fund, a fund 
established by <a href="https://nlnet.nl/project/GNUnet-L2/";>NLnet</a>.
+        {% endtrans %}
+        </p>
+      </section>
+
+
+      <h2><a name="idea" class="subnav-anchor"></a>{{ _("Project motivation") 
}}</h2>
+
+      <section>
+        <h4>The GNUnet transport subsystem</h4>
+        <p>
+          {% trans %}
+         The <a 
href="https://docs.gnunet.org/handbook/gnunet.html#TRANSPORT-Subsystem";>current</a>
 GNUnet TRANSPORT architecture with its pluggable transport mechanism (TCP, 
UDP, HTTP(S) and other protocols) together with the ATS subsystem for bandwidth 
allocation and choosing plugins has several <a 
href="https://docs.gnunet.org/handbook/gnunet.html#TRANSPORT_002dNG-Subsystem";>issues</a>
 with its design.
+
+         With the Layer-2-Overlay project we like to implement the <a 
href="https://docs.gnunet.org/handbook/gnunet.html#Design-goals-of-TNG";>design 
goals</a> of the future GNUnet TRANSPORT Next Generation (TNG) subsystem.
+
+         One major change in the design is to separate the protocol plugins 
into processes (now called communicators) detached from the main transport 
service. Three communicators were already implemented (TCP, UDP and UNIX 
sockets).
+         The old transport code is hard to maintain, because it is cluttered 
with "manipulation" support code for TESTBED (the actual testing framework). 
Testing TRANSPORT is a hard task, especially with TESTBED which has its own 
design flaws, and test code which is very hard to read to get an idea what the 
test code is doing. Therefore the first task (milestone 1) is to implement a 
new testing framework which uses network namespaces to make testing of TNG much 
easier. Have a look into what is [...]
+          {% endtrans %}
+        </p>
+      </section>
+
+      <h2><a name="testframework" class="subnav-anchor"></a>{{ _("New Test 
Framwork") }}</h2>
+
+      <p>The new testing framework consists of two major parts. First the 
command style pattern borrowed from the GNU Taler project, second a network 
namespace setup, to have a suitable test setup for testing several network 
topologies with lossy connections, firewalls, etc..</p>
+
+      <h3><a name="cmd" class="subnav-anchor"></a>{{ _("Command Style 
Pattern") }}</h3>
+      
+      <section>
+        <p>
+          {% trans %}
+         The new style of writing tests in GNUnet is borrowed from the <a 
href="https://docs.taler.net/developers-manual.html#testing-library";>GNU Taler 
testing library</a>. In <a href="#milestone1">milestone 1</a> we implemented 
commands to setup the <a href="#netjails">netjails</a>, the test environment 
for each peer, to start a single peers and sending a simple test message. 
Because some commands depend on other commands to be finished, and those 
commands are asynchronous, we needed additio [...]
+            {% endtrans %}
+        </p>
+      </section>
+
+      <h3><a name="netjails" class="subnav-anchor"></a>{{ _("Netjails") }}</h3>
+      
+      <section>
+        <p>
+          {% trans %}
+                 To do extensive testing of the new transport implementation 
one needs to simulate various network topologies to enable faking network 
characteristics like lossy connections or firewalls. To achieve this we are 
working with <a 
href="https://www.man7.org/linux/man-pages/man8/ip-netns.8.html";>network 
namespace</a>. We have commands for starting and stopping network namespaces. 
Those commands are scripts, which are using several shell commands to setup the 
network namespace. A [...]
+            {% endtrans %}
+        </p>
+      </section>
+
+      <h2><a name="milestones" class="subnav-anchor"></a>{{ _("Milestones") 
}}</h2>
+
+      <p>The next milestone to be reached is milestone 3. One half of it, the 
udp backchannel test is already implemented, and some bugs in the tng service 
were fixed.</p>
+
+      <h3><a name="milestone1" class="subnav-anchor"></a>{{ _("Milestone 1 
Test Infrastructure and minimal Test Case") }}</h3>
+      <section>
+        <p>
+          {% trans %}
+        The first subtask consists of implementing a framework for setting up 
VLANs between network namespaces and a framework to test communication between 
peers which are running in those VLANs. Finally a minimal Test Case will be 
implemented. Despite the fact that the transport service is already able to use 
several communicators (transport protocol implementations), it will only use 
the tcp communicator, not the unix socket nor the udp communicator, which 
already are in place and working.
+
+       <ul>    
+    <li>SUID helpers to setup network namespace and starting peers with 
network namespace.</li>
+    <li>Basic transport-level operations (get address, send, receive, 
connect).</li>
+    <li>Peers connected through test and transfer data.</li>
+    </ul>
+            {% endtrans %}
+        </p>
+       <h4>Deliverable</h4>
+       <p>
+          {% trans %}
+         First MVP which uses the TCP communicator to send messages between 
peers. The deliverable can be verified through out the specific test cases 
running in the GNUnet CI.
+
+         <a href="mile1.html">Details</a>
+         {% endtrans %}
+        </p>
+      </section>
+
+      <h3><a name="milestone2" class="subnav-anchor"></a>{{ _("Milestone 2 
Enhancing Test Framework") }}</h3>
+      <section>
+        <p>
+          {% trans %}
+            To test more complex functionality we need to enhance the 
capabilities of the testing framework. Hooks for performance measurement will 
be implemented.
+           <ul>        
+    <li>Enhancing transport-level operations.</li>
+    <li>Block execution of commands at a peer. (Barriers).</li>
+    </ul>
+            {% endtrans %}
+        </p>
+       <h4>Deliverable</h4>
+       <p>
+          {% trans %}
+         Outcome of this deliverable are advanced test case (again verifiable 
in the GNUnet continuous integration (CI)) with performance measurements.
+
+<a href="mile2.html">Details</a>
+         {% endtrans %}
+        </p>
+      </section>
+
+      <h3><a name="milestone3" class="subnav-anchor"></a>{{ _("Milestone 3 UDP 
integration") }}</h3>
+      <section>
+        <p>
+          {% trans %}
+            With this subtask I will implement enhanced L2O features like 
using unidirectional transport protocols with backchannels. Addresses by which 
a peer can be reached can be delivered on handshake or by  UDP broadcast. With 
this milestone the transport service will be able to use more than one 
communicator (pluggable transport).
+           <ul>        
+    <li>unidirectional communication and backchannels.</li>
+    <li>UDP broadcast.</li>
+    </ul>
+            {% endtrans %}
+        </p>
+       <h4>Deliverable</h4>
+       <p>
+          {% trans %}
+         The CI contains test case which uses the UDP protocol to message 
between peers and to learn about “foreign” peers.
+
+         <a href="mile3.html">Details</a>
+         {% endtrans %}
+        </p>
+      </section>
+
+      <h3><a name="milestone4" class="subnav-anchor"></a>{{ _("Milestone 4 
Distance Vector") }}</h3>
+      <section>
+        <p>
+          {% trans %}
+            In this subtask I will enhance connectivity to peers not directly 
connected. Therefore peers have to act as relay. To achieve this I will 
implement the distance vector protocol.
+            {% endtrans %}
+        </p>
+       <h4>Deliverable</h4>
+       <p>
+          {% trans %}
+         The CI contains test cases with a setup of peers not connected 
directly. The test cases proof that each peer can reach any other peer.
+         {% endtrans %}
+        </p>
+      </section>
+
+      <h3><a name="milestone5" class="subnav-anchor"></a>{{ _("Milestone 5 NAT 
Traversal") }}</h3>
+      <section>
+        <p>
+          {% trans %}
+            This subtask will make peers behind NAT reachable. Two simple 
traversal methods will be implemented.
+           <ul>
+    <li>NAT traversal via UpnPC.</li>
+    <li>Autonomous NAT Traversal using fake ICMP messages.</li>
+    </ul>
+            {% endtrans %}
+        </p>
+       <h4>Deliverable</h4>
+       <p>
+          {% trans %}
+         The CI contains test case with a peer setup containing peer behind a 
NAT. The test cases 
+       proof that each peer can be reached, even if that peer is behind a NAT. 
The test case are       measuring the performance. This measurement is used to 
compare with the outcome of the  next milestone. This result of this milestone 
will be a first stable release. 
+         {% endtrans %}
+        </p>
+      </section>
+
+      <h3><a name="milestone6" class="subnav-anchor"></a>{{ _("Milestone 6 
Optimization") }}</h3>
+      <section>
+        <p>
+          {% trans %}
+            In this subtask I will implement algorithms (flow and congestion 
control, quality of service optimizations) which will select the optimal 
transport protocol for a given situation. 
+
+I will analyze potential performance gains by integrating libraries of the 
interpeer project. If the effort of integrating interpeer presumably would lead 
to better performance than other optimizations of the same amount of work, this 
integration is done.
+
+I will finish the project with a performance analysis to optimize the 
selection logic.
+       <ul>
+    <li>Queue management.
+    <li>Interpeer project synergy
+       <ol>
+        <li>Analysis of the interpeer project in regard to integrate it into 
GNUnet.</li>
+        <li>Optional integration into GNUnet, if it can be done at all and in 
a reasonable amount of work.</li>
+       </ol>
+    <li>Commands for performance measurement(s).</li>          
+    <li>Performance analysis.</li>
+    </ul>
+            {% endtrans %}
+        </p>
+       <h4>Deliverable</h4>
+       <p>
+          {% trans %}
+               The test cases in the CI are measuring the performance gains. 
This measurement can be compared with the measurement of milestone 5. Again one 
outcome of this milestone will be a stable release.
+
+      Documentation of the interpeer project analysis.
+         {% endtrans %}
+        </p>
+      </section>
+
+      
+
+    </div>
+  </div>
+
+</article>
+{% endblock body_content %}
diff --git a/template/l2o/mile1.html.j2 b/template/l2o/mile1.html.j2
new file mode 100644
index 0000000..db0122d
--- /dev/null
+++ b/template/l2o/mile1.html.j2
@@ -0,0 +1,135 @@
+{% extends "common/base.j2" %}
+{% block body_content %}
+<article class="container">
+
+  <header>
+    <h1>{{ _("NGI Assure project: Layer-2-Overlay") }}</h1>
+  </header>
+
+  <div class="row">
+    <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu 
for better orientation -->
+      <nav class="nav subnav position-fixed flex-column border-right" 
style="position:fixed">
+      <a class="nav-link" href="index.html#idea">{{ _("Project main page") 
}}</a>
+      </nav>
+    </div>
+    <div class="col">
+
+      <h2>Implementation details milestone 1</h2>
+
+      <section>
+        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Master Loop") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/test_transport_api_cmd_simple_send.c</td><td width="60%" 
style="vertical-align: top;">Binary for starting the simple send test. Obsolete 
in current code base!</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/netjail_start.sh</td><td width="60%" style="vertical-align: 
top;">Script to setup the netjail topology. Will be execute by the following 
command. </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_netjail_start.c</td><td width="60%" 
style="vertical-align: top;">Command to create the netjail setup.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/netjail_exec.sh</td><td width="60%" style="vertical-align: 
top;">Script to execute a local test interpreter per node.  Will be execute by 
the following command.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_netjail_start_testsystem.c</td><td 
width="60%" style="vertical-align: top;">Command to start the helper 
processes.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_netjail_stop_testsystem.c</td><td width="60%" 
style="vertical-align: top;">Command to stop the helper processes.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/netjail_stop.sh</td><td width="60%" style="vertical-align: 
top;">Script to stop the netjail topology.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_netjail_stop.c</td><td width="60%" 
style="vertical-align: top;">Command to stop the test setup.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+         </table>
+          {% endtrans %}
+        </p>
+       <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Local Loop") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/gnunet-cmds-helper.c</td><td width="60%" 
style="vertical-align: top;">Helper to start the local interpreter loop.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/test_transport_plugin_cmd_simple_send.c</td><td width="60%" 
style="vertical-align: top;">Plugin which creates the cmds for the simple send 
test case.</td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_system_create.c</td><td width="60%" 
style="vertical-align: top;">Command to create a local test system.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/transport_api_cmd_start_peer.c</td><td width="60%" 
style="vertical-align: top;">Command to start a peer.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/transport_api_cmd_connecting_peers.c</td><td width="60%" 
style="vertical-align: top;"> Command to connect two peers.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       
<td>src/transport/transport_api_cmd_send_simple.c</td><td width="60%" 
style="vertical-align: top;">Command to send a simple message from one peer to 
another.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/transport_api_cmd_stop_peer.c</td><td width="60%" 
style="vertical-align: top;">Command to stop a peer.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_system_destroy.c</td><td width="60%" 
style="vertical-align: top;">Command to destroy the local test system.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_local_test_finished.c</td><td>Command to send 
a message to the master loop, if the local loop has finished.</td>
+               <tr>
+         </table>
+          {% endtrans %}
+        </p>
+       <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Configuration") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/test_transport_api2_tcp_node1.conf</td><td width="60%" 
style="vertical-align: top;">Configuration for the first node running during 
the simple send test case.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td  width="40%" style="vertical-align: 
top;">src/transport/test_transport_api2_tcp_node2.conf</td><td width="60%" 
style="vertical-align: top;">Configuration for the second node running during 
the simple send test case.</td>
+               </tr>
+         </table>
+          {% endtrans %}
+        </p>
+      </section>
+
+      
+    </div>
+  </div>
+
+</article>
+{% endblock body_content %}
\ No newline at end of file
diff --git a/template/l2o/mile2.html.j2 b/template/l2o/mile2.html.j2
new file mode 100644
index 0000000..764260c
--- /dev/null
+++ b/template/l2o/mile2.html.j2
@@ -0,0 +1,85 @@
+{% extends "common/base.j2" %}
+{% block body_content %}
+<article class="container">
+
+  <header>
+    <h1>{{ _("NGI Assure project: Layer-2-Overlay") }}</h1>
+  </header>
+
+  <div class="row">
+    <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu 
for better orientation -->
+      <nav class="nav subnav position-fixed flex-column border-right" 
style="position:fixed">
+      <a class="nav-link" href="index.html#idea">{{ _("Project main page") 
}}</a>
+      </nav>
+    </div>
+    <div class="col">
+
+      <h2>Implementation details milestone 2</h2>
+
+      <section>
+        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Master Loop") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/test_transport_simple_send.sh</td><td width="60%" 
style="vertical-align: top;">Introduced scripts to start the tests. The script 
checks, if a kernel parameter is set to allow unprivileged users to             
                                                      create network 
namespaces. The script than starts the following gerneric binary in a network 
namespace.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/test_transport_start_with_config.c</td><td width="60%" 
style="vertical-align: top;">A generic binary to start a test case which will 
be configured by a configuration file.</td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing.c</td><td width="60%" style="vertical-align: 
top;">Added code to read netjail topology from a file.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/topo.sh</td><td width="60%" style="vertical-align: 
top;">Script which reads the topology from a file for the use in the other 
netjail scripts.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: top;">All 
already existing commands.</td><td width="60%" style="vertical-align: top;">All 
commands changed to work with the topology data.</td>
+               </tr>
+         </table>
+          {% endtrans %}
+        </p>
+       <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Local Loop") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_send_peer_ready.c</td><td width="60%" 
style="vertical-align: top;">Command to send a message to the master loop if a 
peer has started in local loop.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/testing/testing_api_cmd_local_test_prepared.c</td><td width="60%" 
style="vertical-align: top;">Command to send a message to the master loop if a 
peer is ready to shutdown.</td>
+               </tr>
+         </table>
+          {% endtrans %}
+        </p>
+       <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Configuration") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">src/transport/transport_api_cmd_start_peer.c</td><td width="60%" 
style="vertical-align: top;">Command now uses a configuration template for the 
peer configuration.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="40%" style="vertical-align: 
top;">test_transport_simple_send_topo.conf</td><td width="60%" 
style="vertical-align: top;">Topology configuration file for the simple send 
test case.</td>
+               <tr>
+         </table>
+          {% endtrans %}
+        </p>
+      </section>
+
+      
+    </div>
+  </div>
+
+</article>
+{% endblock body_content %}
\ No newline at end of file
diff --git a/template/l2o/mile3.html.j2 b/template/l2o/mile3.html.j2
new file mode 100644
index 0000000..265dd73
--- /dev/null
+++ b/template/l2o/mile3.html.j2
@@ -0,0 +1,88 @@
+{% extends "common/base.j2" %}
+{% block body_content %}
+<article class="container">
+
+  <header>
+    <h1>{{ _("NGI Assure project: Layer-2-Overlay") }}</h1>
+  </header>
+
+  <div class="row">
+    <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu 
for better orientation -->
+      <nav class="nav subnav position-fixed flex-column border-right" 
style="position:fixed">
+      <a class="nav-link" href="index.html#idea">{{ _("Project main page") 
}}</a>
+      </nav>
+    </div>
+    <div class="col">
+
+      <h2>Implementation details milestone 3</h2>
+
+      <section>
+        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Bug fixing") 
}}</h4>
+        <p>
+          {% trans %}
+         Some bugs in the tng service and communicator code which were found 
with new tests were fixed.
+         {% endtrans %}
+        </p>
+      </section>
+
+      <section>
+        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Master Loop") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="45%" style="vertical-align: 
top;">src/transport/test_transport_udp_backchannel.sh</td><td width="55%" 
style="vertical-align: top;">Added script to start the udp backchannel test 
case.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="45%" style="vertical-align: top;">All 
commands</td><td width="55%" style="vertical-align: top;">Changed code to 
handle strings with topology information.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="45%" style="vertical-align: 
top;">src/testing/netjail_start.sh</td><td width="55%" style="vertical-align: 
top;">Changed the netjail start script to configure port forwarding for 
specific protocols (tcp, udp).</td>
+               </tr>
+         </table>
+          {% endtrans %}
+        </p>
+       <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Local Loop") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="45%" style="vertical-align: 
top;">src/transport/test_transport_plugin_cmd_udp_backchannel.c</td><td 
width="55%" style="vertical-align: top;">New plugin for the udp backchannel 
test case.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="45%" style="vertical-align: 
top;">src/transport/transport_api_cmd_backchannel_check.c</td><td width="55%" 
style="vertical-align: top;">Command to check for a udp backchannel specific 
log entry.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="45%" style="vertical-align: 
top;">src/testing/testing_api_cmd_block_until_external_trigger.cc</td><td 
width="55%" style="vertical-align: top;">Command to block the local loop until 
triggered by a external signal.</td>
+               </tr>
+         </table>
+          {% endtrans %}
+        </p>
+       <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Configuration") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="45%" style="vertical-align: 
top;">test_transport_udp_backchannel_topo.conf</td><td width="55%" 
style="vertical-align: top;">Topology configuration file for the udp 
backchannel test case.</td>
+               <tr>
+         </table>
+          {% endtrans %}
+        </p>
+      </section>
+
+      
+    </div>
+  </div>
+
+</article>
+{% endblock body_content %}
\ No newline at end of file
diff --git a/template/l2o/testng.html.j2 b/template/l2o/testng.html.j2
new file mode 100644
index 0000000..08f0119
--- /dev/null
+++ b/template/l2o/testng.html.j2
@@ -0,0 +1,158 @@
+{% extends "common/base.j2" %}
+{% block body_content %}
+<article class="container">
+
+  <header>
+    <h1>{{ _("NGI Assure project: Layer-2-Overlay") }}</h1>
+  </header>
+
+  <div class="row">
+    <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu 
for better orientation -->
+      <nav class="nav subnav position-fixed flex-column border-right" 
style="position:fixed">
+      <a class="nav-link" href="index.html#idea">{{ _("Project main page") 
}}</a>
+      </nav>
+    </div>
+    <div class="col">
+
+      <h2>The next generation testing framework</h2>
+
+      <section>
+        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Netjail setup 
and execution") }}</h4>
+        <p>
+          {% trans %}
+         Netjail is the GNUnet naming for having several <a 
href="https://www.man7.org/linux/man-pages/man8/ip-netns.8.html";>network 
namespaces</a>, being isolated from each other to test how GNUnet nodes with 
limited connectivity behave, and how the new transport next generation 
implementation can help to circumvent the connectivity obstacles. The network 
namespaces are span a network with globally known nodes and several subnets 
separated from each other via a single router.
+
+         We have three scripts for the test setup:
+         
+         <ul>
+           <li>netjail_start.sh: A script to setup the network namespaces. 
This script takes three arguments. The first is either the name of a 
configuration for the test setup topology or a string containing the topology 
information. The second is the process id of the test. The third is a flag if 
the first parameter contains the name of the configuration file or the topology 
string.</li>
+           <li>netjail_exec.sh: A script to run some command in a specific 
namespace. This script takes eight arguments. The first is the index of a node 
in a namespace for which we like to execute a command. The second is the index 
of the namespace of the node. The third is the command to execute, the fourth 
is the number of subnets, the fifth the number of nodes in each subnet, the 
sixth is the identifier used by the <a 
href="https://www.man7.org/linux/man-pages/man8/ip-netns.8.html";>ip-netn [...]
+           <li>netjail_stop.sh: A script which remove all the network 
namespace setup by netjail_start.sh. The arguments are the same as those for 
netjail_start.sh.</li>
+           </ul>
+
+           The is a generic test binary (test_transport_start_with_config) 
which will start the above mentioned scripts. Because creating network 
namespaces is only permitted for privileged users the generic test binary is 
not start directly, but via scripts. This script starts the generic binary 
using the command unshare. Using unshare one can create a namespace with its 
own user namespace, where creating network namespaces is allowed. Precondition 
to do this with unshare, is to set the kerne [...]
+          {% endtrans %}
+        </p>
+      </section>
+
+      <h4><a name="cmdhelper" class="subnav-anchor"></a>{{ _("CMD helper and 
testcase plugins") }}</h4>
+      
+      <section>
+        <p>
+          {% trans %}
+         Although netjail_exec.sh can execute an arbitrary command in the ng 
testing framework a special command is used: gnunet-cmds-helper
+         This commands itself is of a special kind named helper processes 
which communicates via GNUNET_MessageHeaders on stdin/stdout with the process 
that started the helper. The gnunet-cmds-helper is used to load testcase 
plugins. Those plugins are implementations of an api which is used to start 
different test cases. Those plugins are dynamically loaded by 
gnunet-cmds-helper. Each plugin defines the commands which are running in a 
local interpreter loop started by the helper on that specif [...]
+            {% endtrans %}
+        </p>
+      </section>
+      <h4><a name="cmdpattern" class="subnav-anchor"></a>{{ _("Command 
Pattern") }}</h4>
+      
+      <section>
+        <p>
+          {% trans %}
+         The testing framework borrowed from the <a 
href="https://docs.taler.net/developers-manual.html#testing-library";>GNU Taler 
testing library</a> was extended to handle asychronous commands. Therefore a 
struct GNUNET_TESTING_AsyncContext was added to struct GNUNET_TESTING_Command. 
By default the continuation function of GNUNET_TESTING_AsyncContext is the 
interpreter_next function of the interpreter loop (blocking asynchronous 
command) which will be executed calling GNUNET_TESTING_async_fi [...]
+          {% endtrans %}
+        </p>
+      </section>
+      <h4><a name="cmdpattern" class="subnav-anchor"></a>{{ _("Topology 
Configuration") }}</h4>
+      
+      <section>
+        <p>
+          {% trans %}
+         The topology of the netjail setup can be configured via a 
configuration file, or with a configuration string handed over to the generic 
binary for starting netjail based tests.</br></br>
+
+Both method can be examined in two example test scripts</br></br>
+
+test_transport_send_simple.sh</br></br>
+
+and</br></br>
+
+test_transport_send_simple_string.sh</br></br>
+
+The Syntax of the configuration is as follows.</br></br> 
+
+The configuration string is structured by lines and the delimiter ':' used for 
seperating key/value(s) pairs and the chars '{' and '}' for grouping several 
key/value pairs as value and '|' to separate a group of values from the 
key/value(s) pair identifying a line.</br></br>
+
+Keys are</br></br>
+
+<table width="100%">
+               <tr>
+                       <td width="10%" style="vertical-align: top;">M</td><td 
width="90%" style="vertical-align: top;">The number of natted subnets in the 
topology.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: top;">N</td><td 
width="90%" style="vertical-align: top;">The number of nodes in each 
subnet.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: top;">X</td><td 
width="90%" style="vertical-align: top;">The Number of globally known (not 
natted) nodes.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: top;">K</td><td 
width="90%" style="vertical-align: top;"> A globally known (not natted) node. 
The number value identifies the node.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: top;">T</td><td 
width="90%" style="vertical-align: top;">The default test plugin to 
execute.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: top;">R</td><td 
width="90%" style="vertical-align: top;">A router of a subnet.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: top;">P</td><td 
width="90%" style="vertical-align: top;">A subnet node with two key values, the 
first one for identifying the subnet and the second for identifying the node in 
the subnet.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: 
top;">connect</td><td width="90%" style="vertical-align: top;">Can be one of 
several grouped values of the P, K or R key. Configuring a connection to 
another node. </br></br>
+
+            The value of the connect key is a node key (P or K) with two resp. 
one number value identifying the node, and an additional value    
+            configuring a protocol. </br></br>
+
+            If the connect key is used in a line configuring a node it is used 
to configure a connection, which will result in the node identified by the 
+            line P or K key will try to connect nodes also identified with the 
P or K key via the configured protocol.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: 
top;">tcp_port</td><td width="90%" style="vertical-align: top;">Can be a 
grouped value of the R key. The value of the tcp_port can be 0 or 1, if a port 
forwarding to the first (index 1) node of a subnet is not or is configured for 
the 
+           tcp protocol.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: 
top;">udp_port</td><td width="90%" style="vertical-align: top;">Can be a 
grouped value of the R key. The value of the tcp_port can be 0 or 1, if a port 
forwarding to the first (index 1) node of a subnet is not or is configured for 
the 
+           udp protocol.</td>
+               </tr>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="10%" style="vertical-align: 
top;">plugin</td><td width="90%" style="vertical-align: top;">Can be a grouped 
value of the P or K key. The value is the name of a plugin which will run on 
that peer instead of the default plugin defined by key K.</td>
+               </tr>
+           </table>    
+          {% endtrans %}
+        </p>
+      </section>
+    </div>
+  </div>
+
+</article>
+{% endblock body_content %}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]