[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [www] branch master updated: - added L2O NGI project page.,
gnunet <=