update github pages

This commit is contained in:
Christian Giese
2022-04-06 23:09:58 +02:00
parent bd76772c6d
commit 9bf3fa6c82
20 changed files with 518 additions and 138 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

+4
View File
@@ -21,3 +21,7 @@
- Disable stop traffic streams
-
- `session-id`
* - `stream-reset`
- Reset all traffic streams
-
-
+6
View File
@@ -1,6 +1,12 @@
Frequently Asked Questions
==========================
**Outer VLAN header not captured in PCAP?**
Some interface drivers drop the outer VLAN header. The BNG Blaster tries to
recover the VLAN from kernel headers but will not change the packets stored
in the PCAP file.
**Some session established on BNG are not established on BNG Blaster?**
The BNG Blaster considers a session only as established if all configured
+2
View File
@@ -55,6 +55,8 @@ version with optimization and without debug symbols.
.. code-block:: none
git clone [email protected]:rtbrick/bngblaster.git
cd bngblaster
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
+10 -1
View File
@@ -24,6 +24,9 @@ client and server. On the first interface we use an
lightweight PPPoE server by accepting every session. The other interface is
configured as PPPoE client.
.. image:: images/quickstart_pppoe.png
:alt: PPPoE Quickstart
The configured :ref:`session traffic <session-traffic>` generates
bidirectional traffic between client and server. There is also
one more :ref:`traffic stream <streams>` bound to the sessions.
@@ -104,13 +107,16 @@ Let's advance the test by enabling some features explained below.
* ``-S run.sock`` opens the JSON RPC API socket
* ``-I`` start interactive courses user interface
.. image:: images/quickstart1.png
.. image:: images/quickstart_interactive.png
:alt: BNG Blaster Interactive
Now let's try to press ``F1`` to navigate through the different views. All supported
keyboard inputs are listed in the top left corner. After pressing ``F9`` the test
should be stopped.
.. image:: images/quickstart_streams.png
:alt: BNG Blaster Interactive
If the test is still running, you can open a second terminal. Then go to the same
directory from where you started the BNG Blaster and enter the following command.
@@ -193,6 +199,9 @@ ISIS
In the following example, we create two :ref:`ISIS <isis>` nodes (R1 and R2) with an emulated
ISIS topology attached to R1 (`test.mrt``).
.. image:: images/quickstart_isis.png
:alt: ISIS Quickstart
**isis.json:**
.. code-block:: json
+1 -14
View File
@@ -123,17 +123,4 @@ jitter calculations.
| Nano Seconds |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The timestamp 0 means that timestamps are disabled.
Wireshark Plugin
~~~~~~~~~~~~~~~~
**Wireshark BNG Blaster Header Dissector**
Download the LUA dissector script
`bbl_header.lua <https://github.com/rtbrick/bngblaster/tree/main/wireshark>`_
and start wireshark as shown below from the directory where the script is placed.
.. code-block:: none
$ wireshark -X lua_script:bbl_header.lua
The timestamp 0 means that timestamps are disabled.
+213 -54
View File
@@ -283,60 +283,6 @@ the ISIS common header starting with ``0x83``,
}
}
LSPGEN
~~~~~~
The BNG Blaster includes a tool called ``lspgen`` which is able to generate
link state packets and topologies for export as MRT and PCAP files. This tool
is also able to inject LSP's directly using the ``isis-lsp-update``
:ref:`command <api>`.
.. code-block:: none
$ lspgen --help
____ __ ____ _ __ ,/
/ __ \ / /_ / __ ) _____ (_)_____ / /__ ,'/
/ /_/ // __// __ |/ ___// // ___// //_/ ,' /
/ _, _// /_ / /_/ // / / // /__ / ,< ,' /_____,
/_/ |_| \__//_____//_/ /_/ \___//_/|_| .'____ ,'
__ _____ ____ ______ / ,'
/ / / ___// __ \/ ____/__ ____ / ,'
/ / \__ \/ /_/ / / __/ _ \/ __ \ /,'
/ /______/ / ____/ /_/ / __/ / / / /
/_____/____/_/ \____/\___/_/ /_/
Usage: lspgen [OPTIONS]
-v --version
-a --area <args>
-K --authentication-key <args>
-T --authentication-type none|simple|md5
-r --read-config-file <args>
-w --write-config-file <args>
-C --connector <args>
-S --control-socket <args>
-l --ipv4-link-prefix <args>
-L --ipv6-link-prefix <args>
-n --ipv4-node-prefix <args>
-N --ipv6-node-prefix <args>
-x --ipv4-external-prefix <args>
-X --ipv6-external-prefix <args>
-M --lsp-lifetime <args>
-z --no-ipv4
-Z --no-ipv6
-e --external-count <args>
-g --graphviz-file <args>
-h --help
-m --mrt-file <args>
-c --node-count <args>
-p --pcap-file <args>
-f --stream-file <args>
-s --seed <args>
-q --sequence <args>
-V --level <args>
-t --log normal|debug|lsp|lsdb|timer|timer-detail|ctrl|error
LSP Update via Scapy
~~~~~~~~~~~~~~~~~~~~
@@ -405,3 +351,216 @@ and inject them using the ``isis-lsp-update`` :ref:`command <api>`.
if __name__ == "__main__":
main()
LSPGEN
~~~~~~
The BNG Blaster includes a tool called ``lspgen`` which is able to generate
topologies and link state packets for export as MRT and PCAP files. This tool
is also able to inject LSP's directly using the ``isis-lsp-update``
:ref:`command <api>`.
.. code-block:: none
$ lspgen --help
____ __ ____ _ __ ,/
/ __ \ / /_ / __ ) _____ (_)_____ / /__ ,'/
/ /_/ // __// __ |/ ___// // ___// //_/ ,' /
/ _, _// /_ / /_/ // / / // /__ / ,< ,' /_____,
/_/ |_| \__//_____//_/ /_/ \___//_/|_| .'____ ,'
__ _____ ____ ______ / ,'
/ / / ___// __ \/ ____/__ ____ / ,'
/ / \__ \/ /_/ / / __/ _ \/ __ \ /,'
/ /______/ / ____/ /_/ / __/ / / / /
/_____/____/_/ \____/\___/_/ /_/
Usage: lspgen [OPTIONS]
-v --version
-a --area <args>
-K --authentication-key <args>
-T --authentication-type none|simple|md5
-r --read-config-file <args>
-w --write-config-file <args>
-C --connector <args>
-S --control-socket <args>
-l --ipv4-link-prefix <args>
-L --ipv6-link-prefix <args>
-n --ipv4-node-prefix <args>
-N --ipv6-node-prefix <args>
-x --ipv4-external-prefix <args>
-X --ipv6-external-prefix <args>
-M --lsp-lifetime <args>
-z --no-ipv4
-Z --no-ipv6
-e --external-count <args>
-g --graphviz-file <args>
-h --help
-m --mrt-file <args>
-c --node-count <args>
-p --pcap-file <args>
-f --stream-file <args>
-s --seed <args>
-q --sequence <args>
-V --level <args>
-t --log normal|debug|lsp|lsdb|timer|timer-detail|ctrl|error
You can generate random topologies or define a topology manually
using configuration files.
Random Topologies
^^^^^^^^^^^^^^^^^
The following example generates a random topology with 1000 nodes.
.. code-block:: none
lspgen -m isis.mrt -c 1000 -K <secret> -T md5
The arguments ``-K`` and ``-T`` add a valid authentication TLV
to the generated LSP's in the MRT file.
Those topologies could be even exported as configuration file
with the argument ``-w`` and later imported with the argument ``-r``.
This allows to generate a large random topology which can be modified
manually.
Topology from Configuration File
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following example shows the configuration for a topology
with three nodes.
.. code-block:: json
{
"level1": [
{
"node_id": "1337.0000.0001",
"hostname": "R1",
"area_list": [
"49.1337/24"
],
"protocol_list": [
"ipv4"
],
"ipv4_address_list": [
"10.13.37.1"
],
"ipv4_prefix_list": [
{
"ipv4_prefix": "10.13.37.1/32",
"metric": 0,
"segment_id": 30005,
"node_flag": true
},
{
"ipv4_prefix": "10.0.1.0/24",
"metric": 1000
},
{
"ipv4_prefix": "10.0.2.0/24",
"metric": 1000
}
],
"capability_list": [
{
"router_id": "10.13.37.1",
"mpls_ipv4_flag": true,
"mpls_ipv6_flag": false,
"srgb_base": 100000,
"srgb_range": 36000
}
],
"neighbor_list": [
{
"remote_node_id": "1337.0000.0000.00",
"metric": 10
},
{
"remote_node_id": "1337.0000.0002.00",
"metric": 10
},
{
"remote_node_id": "0204.0000.0003.00",
"metric": 10
}
]
},
{
"node_id": "1337.0000.0002",
"hostname": "R2",
"area_list": [
"49.1337/24"
],
"protocol_list": [
"ipv4"
],
"ipv4_address_list": [
"10.13.37.2"
],
"ipv4_prefix_list": [
{
"ipv4_prefix": "10.13.37.2/32",
"metric": 0,
"segment_id": 30003,
"node_flag": true
}
],
"capability_list": [
{
"router_id": "10.13.37.2",
"mpls_ipv4_flag": true,
"mpls_ipv6_flag": false,
"srgb_base": 100000,
"srgb_range": 36000
}
],
"neighbor_list": [
{
"remote_node_id": "1337.0000.0001.00",
"metric": 10
}
]
},
{
"node_id": "1337.0000.3",
"hostname": "R3",
"area_list": [
"49.1337/24"
],
"protocol_list": [
"ipv4"
],
"ipv4_address_list": [
"10.13.37.3"
],
"ipv4_prefix_list": [
{
"ipv4_prefix": "10.13.37.3/32",
"metric": 0,
"segment_id": 30003,
"node_flag": true
}
],
"capability_list": [
{
"router_id": "10.13.37.3",
"mpls_ipv4_flag": true,
"mpls_ipv6_flag": false,
"srgb_base": 100000,
"srgb_range": 36000
}
],
"neighbor_list": [
{
"remote_node_id": "1337.0000.0001.00",
"metric": 10
}
]
}
]
}
+28 -1
View File
@@ -45,4 +45,31 @@ names.
This helps to verify if traffic is received or how it has received.
Some network interfaces drop the most outer VLAN which can be easily
verified using the capture file.
verified using the capture file.
The configuration option ``capture-include-streams`` allows to
include (default behavior) or exclude traffic streams from capture.
.. code-block:: json
{
"interfaces": {
"capture-include-streams": false
}
}
Wireshark Plugin
~~~~~~~~~~~~~~~~
Traffic streams generated with the BNG Blaster include the
:ref:`BNG Blaster Header <bbl_header>` which can analyzed
with the Wireshark BNG Blaster Header Dissector.
Download the LUA dissector script
`bbl_header.lua <https://github.com/rtbrick/bngblaster/tree/main/wireshark>`_
and start wireshark as shown below from the directory where the script is placed.
.. code-block:: none
$ wireshark -X lua_script:bbl_header.lua
+5
View File
@@ -514,6 +514,11 @@ session-id for which a connect speed update is requested.</p>
<td></td>
<td><p><cite>session-id</cite></p></td>
</tr>
<tr class="row-even"><td><p><cite>stream-reset</cite></p></td>
<td><p>Reset all traffic streams</p></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</section>
+5
View File
@@ -111,6 +111,11 @@
<td></td>
<td><p><cite>session-id</cite></p></td>
</tr>
<tr class="row-even"><td><p><cite>stream-reset</cite></p></td>
<td><p>Reset all traffic streams</p></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
+4
View File
@@ -79,6 +79,10 @@
<section id="frequently-asked-questions">
<h1>Frequently Asked Questions<a class="headerlink" href="#frequently-asked-questions" title="Permalink to this headline"></a></h1>
<p><strong>Outer VLAN header not captured in PCAP?</strong></p>
<p>Some interface drivers drop the outer VLAN header. The BNG Blaster tries to
recover the VLAN from kernel headers but will not change the packets stored
in the PCAP file.</p>
<p><strong>Some session established on BNG are not established on BNG Blaster?</strong></p>
<p>The BNG Blaster considers a session only as established if all configured
protocols are established. This could occur if the device under test (your BNG)
+3 -1
View File
@@ -130,7 +130,9 @@ sudo apt install -y cmake \
<h3>Build<a class="headerlink" href="#build" title="Permalink to this headline"></a></h3>
<p>Per default cmake (<cite>cmake .</cite>) will build the BNG Blaster as release
version with optimization and without debug symbols.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mkdir build
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>git clone [email protected]:rtbrick/bngblaster.git
cd bngblaster
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make all
+4 -1
View File
@@ -101,6 +101,7 @@ client and server. On the first interface we use an
<a class="reference internal" href="interfaces.html#a10nsp-interface"><span class="std std-ref">A10NSP interface</span></a>. Those interfaces emulate a
lightweight PPPoE server by accepting every session. The other interface is
configured as PPPoE client.</p>
<img alt="PPPoE Quickstart" src="_images/quickstart_pppoe.png" />
<p>The configured <a class="reference internal" href="access/traffic.html#session-traffic"><span class="std std-ref">session traffic</span></a> generates
bidirectional traffic between client and server. There is also
one more <a class="reference internal" href="streams.html#streams"><span class="std std-ref">traffic stream</span></a> bound to the sessions.</p>
@@ -174,10 +175,11 @@ report printed.</p>
<li><p><code class="docutils literal notranslate"><span class="pre">-S</span> <span class="pre">run.sock</span></code> opens the JSON RPC API socket</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">-I</span></code> start interactive courses user interface</p></li>
</ul>
<img alt="BNG Blaster Interactive" src="_images/quickstart1.png" />
<img alt="BNG Blaster Interactive" src="_images/quickstart_interactive.png" />
<p>Now lets try to press <code class="docutils literal notranslate"><span class="pre">F1</span></code> to navigate through the different views. All supported
keyboard inputs are listed in the top left corner. After pressing <code class="docutils literal notranslate"><span class="pre">F9</span></code> the test
should be stopped.</p>
<img alt="BNG Blaster Interactive" src="_images/quickstart_streams.png" />
<p>If the test is still running, you can open a second terminal. Then go to the same
directory from where you started the BNG Blaster and enter the following command.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster-cli run.sock session-info session-id 1 | jq .
@@ -254,6 +256,7 @@ log, and PCAP files.</p>
<h2>ISIS<a class="headerlink" href="#isis" title="Permalink to this headline"></a></h2>
<p>In the following example, we create two <a class="reference internal" href="routing/isis.html#isis"><span class="std std-ref">ISIS</span></a> nodes (R1 and R2) with an emulated
ISIS topology attached to R1 (<cite>test.mrt`</cite>).</p>
<img alt="ISIS Quickstart" src="_images/quickstart_isis.png" />
<p><strong>isis.json:</strong></p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-11
View File
@@ -62,7 +62,6 @@
<li class="toctree-l4"><a class="reference internal" href="#nanosecond-send-timestamps">Nanosecond Send Timestamps</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#wireshark-plugin">Wireshark Plugin</a></li>
</ul>
</li>
</ul>
@@ -204,16 +203,6 @@ jitter calculations.</p>
<p>The timestamp 0 means that timestamps are disabled.</p>
</section>
</section>
<section id="wireshark-plugin">
<h2>Wireshark Plugin<a class="headerlink" href="#wireshark-plugin" title="Permalink to this headline"></a></h2>
<p><strong>Wireshark BNG Blaster Header Dissector</strong></p>
<p>Download the LUA dissector script
<a class="reference external" href="https://github.com/rtbrick/bngblaster/tree/main/wireshark">bbl_header.lua</a>
and start wireshark as shown below from the directory where the script is placed.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ wireshark -X lua_script:bbl_header.lua
</pre></div>
</div>
</section>
</section>
+207 -53
View File
@@ -53,8 +53,12 @@
<li class="toctree-l3"><a class="reference internal" href="#limitations">Limitations</a></li>
<li class="toctree-l3"><a class="reference internal" href="#mrt-files">MRT Files</a></li>
<li class="toctree-l3"><a class="reference internal" href="#lsp-update-command">LSP Update Command</a></li>
<li class="toctree-l3"><a class="reference internal" href="#lspgen">LSPGEN</a></li>
<li class="toctree-l3"><a class="reference internal" href="#lsp-update-via-scapy">LSP Update via Scapy</a></li>
<li class="toctree-l3"><a class="reference internal" href="#lspgen">LSPGEN</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#random-topologies">Random Topologies</a></li>
<li class="toctree-l4"><a class="reference internal" href="#topology-from-configuration-file">Topology from Configuration File</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="bgp.html">BGP</a></li>
@@ -513,58 +517,6 @@ the ISIS common header starting with <code class="docutils literal notranslate">
</pre></div>
</div>
</section>
<section id="lspgen">
<h2>LSPGEN<a class="headerlink" href="#lspgen" title="Permalink to this headline"></a></h2>
<p>The BNG Blaster includes a tool called <code class="docutils literal notranslate"><span class="pre">lspgen</span></code> which is able to generate
link state packets and topologies for export as MRT and PCAP files. This tool
is also able to inject LSPs directly using the <code class="docutils literal notranslate"><span class="pre">isis-lsp-update</span></code>
<a class="reference internal" href="../api/index.html#api"><span class="std std-ref">command</span></a>.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ lspgen --help
____ __ ____ _ __ ,/
/ __ \ / /_ / __ ) _____ (_)_____ / /__ ,&#39;/
/ /_/ // __// __ |/ ___// // ___// //_/ ,&#39; /
/ _, _// /_ / /_/ // / / // /__ / ,&lt; ,&#39; /_____,
/_/ |_| \__//_____//_/ /_/ \___//_/|_| .&#39;____ ,&#39;
__ _____ ____ ______ / ,&#39;
/ / / ___// __ \/ ____/__ ____ / ,&#39;
/ / \__ \/ /_/ / / __/ _ \/ __ \ /,&#39;
/ /______/ / ____/ /_/ / __/ / / / /
/_____/____/_/ \____/\___/_/ /_/
Usage: lspgen [OPTIONS]
-v --version
-a --area &lt;args&gt;
-K --authentication-key &lt;args&gt;
-T --authentication-type none|simple|md5
-r --read-config-file &lt;args&gt;
-w --write-config-file &lt;args&gt;
-C --connector &lt;args&gt;
-S --control-socket &lt;args&gt;
-l --ipv4-link-prefix &lt;args&gt;
-L --ipv6-link-prefix &lt;args&gt;
-n --ipv4-node-prefix &lt;args&gt;
-N --ipv6-node-prefix &lt;args&gt;
-x --ipv4-external-prefix &lt;args&gt;
-X --ipv6-external-prefix &lt;args&gt;
-M --lsp-lifetime &lt;args&gt;
-z --no-ipv4
-Z --no-ipv6
-e --external-count &lt;args&gt;
-g --graphviz-file &lt;args&gt;
-h --help
-m --mrt-file &lt;args&gt;
-c --node-count &lt;args&gt;
-p --pcap-file &lt;args&gt;
-f --stream-file &lt;args&gt;
-s --seed &lt;args&gt;
-q --sequence &lt;args&gt;
-V --level &lt;args&gt;
-t --log normal|debug|lsp|lsdb|timer|timer-detail|ctrl|error
</pre></div>
</div>
</section>
<section id="lsp-update-via-scapy">
<h2>LSP Update via Scapy<a class="headerlink" href="#lsp-update-via-scapy" title="Permalink to this headline"></a></h2>
<p>The following example shows how to generate LSPs via Scapy
@@ -631,6 +583,208 @@ and inject them using the <code class="docutils literal notranslate"><span class
</pre></div>
</div>
</section>
<section id="lspgen">
<h2>LSPGEN<a class="headerlink" href="#lspgen" title="Permalink to this headline"></a></h2>
<p>The BNG Blaster includes a tool called <code class="docutils literal notranslate"><span class="pre">lspgen</span></code> which is able to generate
topologies and link state packets for export as MRT and PCAP files. This tool
is also able to inject LSPs directly using the <code class="docutils literal notranslate"><span class="pre">isis-lsp-update</span></code>
<a class="reference internal" href="../api/index.html#api"><span class="std std-ref">command</span></a>.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ lspgen --help
____ __ ____ _ __ ,/
/ __ \ / /_ / __ ) _____ (_)_____ / /__ ,&#39;/
/ /_/ // __// __ |/ ___// // ___// //_/ ,&#39; /
/ _, _// /_ / /_/ // / / // /__ / ,&lt; ,&#39; /_____,
/_/ |_| \__//_____//_/ /_/ \___//_/|_| .&#39;____ ,&#39;
__ _____ ____ ______ / ,&#39;
/ / / ___// __ \/ ____/__ ____ / ,&#39;
/ / \__ \/ /_/ / / __/ _ \/ __ \ /,&#39;
/ /______/ / ____/ /_/ / __/ / / / /
/_____/____/_/ \____/\___/_/ /_/
Usage: lspgen [OPTIONS]
-v --version
-a --area &lt;args&gt;
-K --authentication-key &lt;args&gt;
-T --authentication-type none|simple|md5
-r --read-config-file &lt;args&gt;
-w --write-config-file &lt;args&gt;
-C --connector &lt;args&gt;
-S --control-socket &lt;args&gt;
-l --ipv4-link-prefix &lt;args&gt;
-L --ipv6-link-prefix &lt;args&gt;
-n --ipv4-node-prefix &lt;args&gt;
-N --ipv6-node-prefix &lt;args&gt;
-x --ipv4-external-prefix &lt;args&gt;
-X --ipv6-external-prefix &lt;args&gt;
-M --lsp-lifetime &lt;args&gt;
-z --no-ipv4
-Z --no-ipv6
-e --external-count &lt;args&gt;
-g --graphviz-file &lt;args&gt;
-h --help
-m --mrt-file &lt;args&gt;
-c --node-count &lt;args&gt;
-p --pcap-file &lt;args&gt;
-f --stream-file &lt;args&gt;
-s --seed &lt;args&gt;
-q --sequence &lt;args&gt;
-V --level &lt;args&gt;
-t --log normal|debug|lsp|lsdb|timer|timer-detail|ctrl|error
</pre></div>
</div>
<p>You can generate random topologies or define a topology manually
using configuration files.</p>
<section id="random-topologies">
<h3>Random Topologies<a class="headerlink" href="#random-topologies" title="Permalink to this headline"></a></h3>
<p>The following example generates a random topology with 1000 nodes.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>lspgen -m isis.mrt -c 1000 -K &lt;secret&gt; -T md5
</pre></div>
</div>
<p>The arguments <code class="docutils literal notranslate"><span class="pre">-K</span></code> and <code class="docutils literal notranslate"><span class="pre">-T</span></code> add a valid authentication TLV
to the generated LSPs in the MRT file.</p>
<p>Those topologies could be even exported as configuration file
with the argument <code class="docutils literal notranslate"><span class="pre">-w</span></code> and later imported with the argument <code class="docutils literal notranslate"><span class="pre">-r</span></code>.
This allows to generate a large random topology which can be modified
manually.</p>
</section>
<section id="topology-from-configuration-file">
<h3>Topology from Configuration File<a class="headerlink" href="#topology-from-configuration-file" title="Permalink to this headline"></a></h3>
<p>The following example shows the configuration for a topology
with three nodes.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;level1&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;node_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1337.0000.0001&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;hostname&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;R1&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;area_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;49.1337/24&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;protocol_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;ipv4&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_address_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;10.13.37.1&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_prefix_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_prefix&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.13.37.1/32&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;segment_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">30005</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;node_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
<span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_prefix&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.1.0/24&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="w"></span>
<span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_prefix&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.2.0/24&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;capability_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;router_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.13.37.1&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;mpls_ipv4_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;mpls_ipv6_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;srgb_base&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">100000</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;srgb_range&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">36000</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;neighbor_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;remote_node_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1337.0000.0000.00&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="w"></span>
<span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;remote_node_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1337.0000.0002.00&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="w"></span>
<span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;remote_node_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0204.0000.0003.00&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;node_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1337.0000.0002&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;hostname&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;R2&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;area_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;49.1337/24&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;protocol_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;ipv4&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_address_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;10.13.37.2&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_prefix_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_prefix&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.13.37.2/32&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;segment_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">30003</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;node_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;capability_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;router_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.13.37.2&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;mpls_ipv4_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;mpls_ipv6_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;srgb_base&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">100000</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;srgb_range&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">36000</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;neighbor_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;remote_node_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1337.0000.0001.00&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;node_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1337.0000.3&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;hostname&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;R3&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;area_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;49.1337/24&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;protocol_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;ipv4&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_address_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="s2">&quot;10.13.37.3&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_prefix_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;ipv4_prefix&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.13.37.3/32&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;segment_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">30003</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;node_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;capability_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;router_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.13.37.3&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;mpls_ipv4_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;mpls_ipv6_flag&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;srgb_base&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">100000</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;srgb_range&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">36000</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">],</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;neighbor_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;remote_node_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1337.0000.0001.00&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
</section>
</section>
+1 -1
View File
File diff suppressed because one or more lines are too long
+25 -1
View File
@@ -51,7 +51,10 @@
<li class="toctree-l1"><a class="reference internal" href="api/index.html">API/CLI</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Troubleshooting</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#logging">Logging</a></li>
<li class="toctree-l2"><a class="reference internal" href="#pcap">PCAP</a></li>
<li class="toctree-l2"><a class="reference internal" href="#pcap">PCAP</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#wireshark-plugin">Wireshark Plugin</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="reference/index.html">Reference</a></li>
@@ -124,6 +127,27 @@ names.</p>
<p>This helps to verify if traffic is received or how it has received.
Some network interfaces drop the most outer VLAN which can be easily
verified using the capture file.</p>
<p>The configuration option <code class="docutils literal notranslate"><span class="pre">capture-include-streams</span></code> allows to
include (default behavior) or exclude traffic streams from capture.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;capture-include-streams&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
<section id="wireshark-plugin">
<h3>Wireshark Plugin<a class="headerlink" href="#wireshark-plugin" title="Permalink to this headline"></a></h3>
<p>Traffic streams generated with the BNG Blaster include the
<a class="reference internal" href="reference/traffic.html#bbl-header"><span class="std std-ref">BNG Blaster Header</span></a> which can analyzed
with the Wireshark BNG Blaster Header Dissector.</p>
<p>Download the LUA dissector script
<a class="reference external" href="https://github.com/rtbrick/bngblaster/tree/main/wireshark">bbl_header.lua</a>
and start wireshark as shown below from the directory where the script is placed.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ wireshark -X lua_script:bbl_header.lua
</pre></div>
</div>
</section>
</section>
</section>