Files

656 lines
51 KiB
HTML
Raw Permalink Normal View History

2022-04-01 12:16:46 +02:00
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
2022-10-31 23:26:32 +00:00
<title>ISIS &mdash; BNG Blaster 0.8 documentation</title>
2022-04-01 12:16:46 +02:00
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/tabs.css" type="text/css" />
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
2023-09-04 14:55:57 +00:00
<link rel="next" title="OSPF" href="ospf.html" />
2022-04-01 12:16:46 +02:00
<link rel="prev" title="Routing Protocols" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> BNG Blaster
<img src="../_static/rtbrick_logo.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">Quickstart Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../interfaces.html">Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="../access/index.html">Access Protocols</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Routing Protocols</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">ISIS</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="#adjacencies">Adjacencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="#database">Database</a></li>
<li class="toctree-l3"><a class="reference internal" href="#flooding">Flooding</a></li>
<li class="toctree-l3"><a class="reference internal" href="#limitations">Limitations</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="#lsp-update-via-scapy">LSP Update via Scapy</a></li>
2023-09-04 14:55:57 +00:00
<li class="toctree-l3"><a class="reference internal" href="#mrt-files">MRT Files</a></li>
<li class="toctree-l3"><a class="reference internal" href="#lspgen">LSPGEN</a></li>
2022-04-01 12:16:46 +02:00
</ul>
</li>
2023-09-04 14:55:57 +00:00
<li class="toctree-l2"><a class="reference internal" href="ospf.html">OSPF</a></li>
2022-04-01 12:16:46 +02:00
<li class="toctree-l2"><a class="reference internal" href="mpls.html">MPLS</a></li>
2023-01-13 16:02:11 +00:00
<li class="toctree-l2"><a class="reference internal" href="bgp.html">BGP</a></li>
<li class="toctree-l2"><a class="reference internal" href="ldp.html">LDP</a></li>
2023-09-04 14:55:57 +00:00
<li class="toctree-l2"><a class="reference internal" href="lspgen.html">LSPGEN</a></li>
2022-04-01 12:16:46 +02:00
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../streams.html">Traffic Streams</a></li>
2023-06-30 11:07:35 +00:00
<li class="toctree-l1"><a class="reference internal" href="../http.html">HTTP Emulation</a></li>
2022-04-01 12:16:46 +02:00
<li class="toctree-l1"><a class="reference internal" href="../reports.html">Reports</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API/CLI</a></li>
2022-05-02 17:40:37 +02:00
<li class="toctree-l1"><a class="reference internal" href="../controller.html">Controller</a></li>
2023-02-15 21:24:51 +00:00
<li class="toctree-l1"><a class="reference internal" href="../performance.html">Performance Guide</a></li>
2022-04-01 12:16:46 +02:00
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq.html">Frequently Asked Questions</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">BNG Blaster</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><a href="index.html">Routing Protocols</a> &raquo;</li>
<li>ISIS</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/routing/isis.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="isis">
<span id="id1"></span><h1>ISIS<a class="headerlink" href="#isis" title="Permalink to this headline"></a></h1>
<p>Intermediate System to Intermediate System (ISIS, also written IS-IS)
is a routing protocol designed to move information efficiently within
a network.</p>
<p>The ISIS protocol is defined in ISO/IEC 10589:2002 as an international
standard within the Open Systems Interconnection (OSI) reference design.
The Internet Engineering Task Force (IETF) republished ISIS in RFC 1142,
but that RFC was later marked as historic by RFC 7142 because it republished
a draft rather than a final version of the ISO standard, causing confusion.</p>
2022-10-31 23:26:32 +00:00
<p>ISIS has been called the de facto standard for a large service provider
2022-04-01 12:16:46 +02:00
network backbones.</p>
2022-10-31 23:26:32 +00:00
<p>The BNG Blaster can emulate multiple ISIS instances. An ISIS instance
2022-04-01 12:16:46 +02:00
is a virtual ISIS node with one or more network interfaces attached. Such a
node behaves like a “real router” including database synchronization and
flooding. Every instance generates a <code class="docutils literal notranslate"><span class="pre">self</span></code> originated LSP describing the
node itself.</p>
<section id="configuration">
<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline"></a></h2>
<p>Following an example ISIS configuration with one instance
attached to two network interfaces.</p>
2023-09-15 07:11:54 +00:00
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</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="nt">&quot;network&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.1.2/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.1.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address-ipv6&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;fc66:1337:7331:1::2/64&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway-ipv6&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;fc66:1337:7331:1::1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;isis-instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;isis-level&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;isis-l1-metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.2.2/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.2.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address-ipv6&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;fc66:1337:7331:2::2/64&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway-ipv6&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;fc66:1337:7331:2::1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;isis-instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;isis&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;system-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1921.6800.1001&quot;</span><span class="p">,</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;192.168.1.1&quot;</span><span class="p">,</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="nt">&quot;area&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="s2">&quot;49.0001/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="s2">&quot;49.0002/24&quot;</span>
<span class="w"> </span><span class="p">],</span>
<span class="w"> </span><span class="nt">&quot;hello-padding&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="nt">&quot;lsp-lifetime&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65535</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;level1-auth-key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;secret&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;level1-auth-type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;md5&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;sr-base&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;sr-range&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">3600</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="p">}</span>
2022-04-01 12:16:46 +02:00
</pre></div>
</div>
2023-09-15 07:11:54 +00:00
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;isis&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="p">}</span>
2022-04-01 12:16:46 +02:00
</pre></div>
</div>
<table class="colwidths-given docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 50%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
<th class="head"><p>Default</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><cite>instance-id</cite></p></td>
<td><p>ISIS instance identifier</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p><cite>level</cite></p></td>
<td><p>ISIS level</p></td>
<td><p>3</p></td>
</tr>
<tr class="row-even"><td><p><cite>overload</cite></p></td>
<td><p>ISIS overload</p></td>
<td><p>false</p></td>
</tr>
<tr class="row-odd"><td><p><cite>protocol-ipv4</cite></p></td>
<td><p>Enable/disable IPv4</p></td>
<td><p>true</p></td>
</tr>
<tr class="row-even"><td><p><cite>protocol-ipv6</cite></p></td>
<td><p>Enable/disable IPv6</p></td>
<td><p>true</p></td>
</tr>
<tr class="row-odd"><td><p><cite>level1-auth-key</cite></p></td>
<td><p>ISIS level 1 authentication key</p></td>
<td></td>
</tr>
<tr class="row-even"><td><p><cite>level1-auth-type</cite></p></td>
<td><p>ISIS level 1 authentication type (simple or md5)</p></td>
<td><p>disabled</p></td>
</tr>
2023-02-09 20:34:44 +00:00
<tr class="row-odd"><td><p><cite>level1-auth-hello</cite></p></td>
<td><p>ISIS level 1 hello authentication</p></td>
<td><p>true</p></td>
</tr>
<tr class="row-even"><td><p><cite>level1-auth-csnp</cite></p></td>
<td><p>ISIS level 1 CSNP authentication</p></td>
<td><p>true</p></td>
</tr>
<tr class="row-odd"><td><p><cite>level1-auth-psnp</cite></p></td>
<td><p>ISIS level 1 PSNP authentication</p></td>
<td><p>true</p></td>
</tr>
<tr class="row-even"><td><p><cite>level2-auth-key</cite></p></td>
2022-04-01 12:16:46 +02:00
<td><p>ISIS level 2 authentication key</p></td>
<td></td>
</tr>
2023-02-09 20:34:44 +00:00
<tr class="row-odd"><td><p><cite>level2-auth-type</cite></p></td>
2022-04-01 12:16:46 +02:00
<td><p>ISIS level 2 authentication type (simple or md5)</p></td>
<td><p>disabled</p></td>
</tr>
2023-02-09 20:34:44 +00:00
<tr class="row-even"><td><p><cite>level2-auth-hello</cite></p></td>
<td><p>ISIS level 2 hello authentication</p></td>
<td><p>true</p></td>
</tr>
<tr class="row-odd"><td><p><cite>level2-auth-csnp</cite></p></td>
<td><p>ISIS level 2 CSNP authentication</p></td>
<td><p>true</p></td>
</tr>
<tr class="row-even"><td><p><cite>level2-auth-psnp</cite></p></td>
<td><p>ISIS level 2 PSNP authentication</p></td>
<td><p>true</p></td>
</tr>
2022-04-01 12:16:46 +02:00
<tr class="row-odd"><td><p><cite>hello-interval</cite></p></td>
<td><p>ISIS hello interval in seconds</p></td>
<td><p>10</p></td>
</tr>
<tr class="row-even"><td><p><cite>hello-padding</cite></p></td>
<td><p>ISIS hello padding</p></td>
<td><p>false</p></td>
</tr>
2023-01-13 16:02:11 +00:00
<tr class="row-odd"><td><p><cite>hold-time</cite></p></td>
<td><p>ISIS hold time in seconds</p></td>
2022-04-01 12:16:46 +02:00
<td><p>30</p></td>
</tr>
<tr class="row-even"><td><p><cite>lsp-lifetime</cite></p></td>
<td><p>ISIS LSP lifetime in seconds</p></td>
<td><p>65535</p></td>
</tr>
<tr class="row-odd"><td><p><cite>lsp-refresh-interval</cite></p></td>
<td><p>ISIS LSP refresh interval in seconds</p></td>
<td><p>300</p></td>
</tr>
<tr class="row-even"><td><p><cite>lsp-retry-interval</cite></p></td>
<td><p>ISIS LSP retry interval in seconds</p></td>
<td><p>5</p></td>
</tr>
<tr class="row-odd"><td><p><cite>lsp-tx-interval</cite></p></td>
<td><p>ISIS LSP TX interval in ms (time between LSP send windows)</p></td>
<td><p>10</p></td>
</tr>
<tr class="row-even"><td><p><cite>lsp-tx-window-size</cite></p></td>
<td><p>ISIS LSP TX window size (LSP send per window)</p></td>
<td><p>1</p></td>
</tr>
<tr class="row-odd"><td><p><cite>csnp-interval</cite></p></td>
<td><p>ISIS CSNP interval in seconds</p></td>
<td><p>30</p></td>
</tr>
<tr class="row-even"><td><p><cite>hostname</cite></p></td>
<td><p>ISIS hostname</p></td>
<td><p>bngblaster</p></td>
</tr>
<tr class="row-odd"><td><p><cite>router-id</cite></p></td>
<td><p>ISIS router identifier</p></td>
<td><p>10.10.10.10</p></td>
</tr>
<tr class="row-even"><td><p><cite>system-id</cite></p></td>
<td><p>ISIS system identifier</p></td>
<td><p>0100.1001.0010</p></td>
</tr>
<tr class="row-odd"><td><p><cite>area</cite></p></td>
<td><p>ISIS area(s)</p></td>
<td><p>49.0001/24</p></td>
</tr>
<tr class="row-even"><td><p><cite>sr-base</cite></p></td>
<td><p>ISIS SR base</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p><cite>sr-range</cite></p></td>
<td><p>ISIS SR range</p></td>
<td></td>
</tr>
<tr class="row-even"><td><p><cite>sr-node-sid</cite></p></td>
<td><p>ISIS SR node SID</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p><cite>teardown-time</cite></p></td>
<td><p>ISIS teardown time in seconds</p></td>
<td><p>5</p></td>
</tr>
</tbody>
</table>
<p>The support for multiple instances allows different use cases. One example might
be to create two instances connected to the device or network under test. Now
2022-10-31 23:26:32 +00:00
inject an LSP on one instance and check if learned over the tested network on
2022-04-01 12:16:46 +02:00
the other instance.</p>
<p>Every ISIS instance can be also connected to an emulated link state graph loaded
2022-10-31 23:26:32 +00:00
by MRT files as shown in the example below.</p>
2022-04-01 12:16:46 +02:00
<img alt="ISIS" src="../_images/bbl_isis.png" />
2023-09-15 07:11:54 +00:00
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;isis&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;system-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1921.6800.1001&quot;</span><span class="p">,</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;192.168.1.1&quot;</span><span class="p">,</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="nt">&quot;external&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;mrt-file&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;isis.mrt&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;connections&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;system-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1921.6800.0000.00&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;l1-metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;l2-metric&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2000</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;system-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1921.6800.1002&quot;</span><span class="p">,</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;192.168.1.2&quot;</span><span class="p">,</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="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="p">}</span>
2022-04-01 12:16:46 +02:00
</pre></div>
</div>
2023-09-15 07:11:54 +00:00
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;isis&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;external&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span>
2022-04-01 12:16:46 +02:00
</pre></div>
</div>
<table class="colwidths-given docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 50%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
<th class="head"><p>Default</p></th>
</tr>
</thead>
<tbody>
2023-09-15 07:11:54 +00:00
<tr class="row-even"><td><p><cite>purge</cite></p></td>
<td><p>Automatically purge all external LSP during teardown</p></td>
<td><p>true</p></td>
</tr>
<tr class="row-odd"><td><p><cite>auto-refresh</cite></p></td>
<td><p>Automatically refresh all external LSP</p></td>
<td><p>false</p></td>
</tr>
2022-04-01 12:16:46 +02:00
<tr class="row-even"><td><p><cite>mrt-file</cite></p></td>
<td><p>ISIS MRT file</p></td>
<td></td>
</tr>
</tbody>
</table>
2022-10-31 23:26:32 +00:00
<p>The node <code class="docutils literal notranslate"><span class="pre">N1</span></code> in this example also needs to advertise the
reachability to node <code class="docutils literal notranslate"><span class="pre">B1</span></code>.</p>
2023-09-15 07:11:54 +00:00
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;isis&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;external&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;connections&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span>
2022-04-01 12:16:46 +02:00
</pre></div>
</div>
<table class="colwidths-given docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 50%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
<th class="head"><p>Default</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><cite>system-id</cite></p></td>
<td><p>ISIS system identifier</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p><cite>l1-metric</cite></p></td>
<td><p>ISIS level 1 interface metric</p></td>
<td><p>10</p></td>
</tr>
<tr class="row-even"><td><p><cite>l2-metric</cite></p></td>
<td><p>ISIS level 2 interface metric</p></td>
<td><p>10</p></td>
</tr>
</tbody>
</table>
</section>
<section id="adjacencies">
<h2>Adjacencies<a class="headerlink" href="#adjacencies" title="Permalink to this headline"></a></h2>
<p>The BNG Blaster supports P2P adjacencies with 3-way-handshake only.</p>
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">sudo</span> <span class="pre">bngblaster-cli</span> <span class="pre">run.sock</span> <span class="pre">isis-adjacencies</span></code></p>
2023-09-15 07:11:54 +00:00
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ok&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;isis-adjacencies&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;P2P&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;level&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;L1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;adjacency-state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Up&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;peer&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;system-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0100.1001.0022&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;P2P&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;level&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;L1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;adjacency-state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Up&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;peer&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;system-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0100.1001.0021&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="p">}</span>
2022-04-01 12:16:46 +02:00
</pre></div>
</div>
</section>
<section id="database">
<h2>Database<a class="headerlink" href="#database" title="Permalink to this headline"></a></h2>
<p>The BNG Blaster distinguishes between three different source types of
LSP entries in the ISIS database.</p>
2022-10-31 23:26:32 +00:00
<p>The type <code class="docutils literal notranslate"><span class="pre">self</span></code> is used for the self-originated LSP describing the own
2022-04-01 12:16:46 +02:00
BNG Blaster ISIS instance. LSP entries of type <code class="docutils literal notranslate"><span class="pre">adjacency</span></code> are learned
via ISIS adjacencies. The type <code class="docutils literal notranslate"><span class="pre">external</span></code> is used for those LSP entries
2022-04-01 16:40:47 +02:00
learned via MRT files or injected via <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>
2022-04-01 12:16:46 +02:00
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">sudo</span> <span class="pre">bngblaster-cli</span> <span class="pre">run.sock</span> <span class="pre">isis-database</span> <span class="pre">instance</span> <span class="pre">1</span> <span class="pre">level</span> <span class="pre">1</span></code></p>
2023-09-15 07:11:54 +00:00
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ok&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;isis-database&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0000.0000.0001.00-00&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;seq&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lifetime&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65535</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lifetime-remaining&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65529</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;source-type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;external&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0100.1001.0011.00-00&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;seq&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lifetime&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65535</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lifetime-remaining&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65507</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;source-type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;self&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0100.1001.0021.00-00&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;seq&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lifetime&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65524</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lifetime-remaining&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65506</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;source-type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;adjacency&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;source-system-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0100.1001.0021&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0100.1001.0022.00-00&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;seq&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lifetime&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65524</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lifetime-remaining&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">65506</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;source-type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;adjacency&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;source-system-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0100.1001.0021&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="p">}</span>
2022-04-01 12:16:46 +02:00
</pre></div>
</div>
2022-10-31 23:26:32 +00:00
<p>The BNG Blaster automatically purges all LSPs of type
2022-04-01 12:16:46 +02:00
<code class="docutils literal notranslate"><span class="pre">self</span></code> and <code class="docutils literal notranslate"><span class="pre">external</span></code> during teardown. This is done by
2022-10-31 23:26:32 +00:00
generating LSPs with newer sequence numbers and a lifetime
2022-04-01 12:16:46 +02:00
of 30 seconds only. This lifetime is enough to flood the purge
2022-10-31 23:26:32 +00:00
LSP over the whole network under test.</p>
2022-04-01 12:16:46 +02:00
</section>
<section id="flooding">
<h2>Flooding<a class="headerlink" href="#flooding" title="Permalink to this headline"></a></h2>
2022-10-31 23:26:32 +00:00
<p>The BNG Blaster floods LSPs received to all other active
2022-04-01 12:16:46 +02:00
adjacencies of the ISIS instance except to those with peer
system-id equal to the source system-id of the LSP.</p>
</section>
<section id="limitations">
<h2>Limitations<a class="headerlink" href="#limitations" title="Permalink to this headline"></a></h2>
2022-10-31 23:26:32 +00:00
<p>Currently, only ISIS P2P links are supported. There is also
2022-04-01 12:16:46 +02:00
no support for route leaking between levels.</p>
</section>
<section id="lsp-update-command">
<h2>LSP Update Command<a class="headerlink" href="#lsp-update-command" title="Permalink to this headline"></a></h2>
2022-10-31 23:26:32 +00:00
<p>It is also possible to inject external LSPs using the <code class="docutils literal notranslate"><span class="pre">isis-lsp-update</span></code>
2022-04-01 16:40:47 +02:00
<a class="reference internal" href="../api/index.html#api"><span class="std std-ref">command</span></a>.</p>
<p>The <a class="reference internal" href="../api/index.html#api"><span class="std std-ref">command</span></a> expects a list of hex encoded PDUs including
2023-09-04 14:55:57 +00:00
the ISIS common header starting with <code class="docutils literal notranslate"><span class="pre">0x83</span></code>.</p>
2022-04-01 12:16:46 +02:00
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">cat</span> <span class="pre">command.json</span> <span class="pre">|</span> <span class="pre">jq</span> <span class="pre">.</span></code></p>
2023-09-15 07:11:54 +00:00
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;command&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;isis-lsp-update&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;arguments&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;instance&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;pdu&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="s2">&quot;831b0100120100000021ffff010203040506000000000003c0d103010403490001&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="s2">&quot;831b0100120100000021ffff010203040506000100000003bad603010403490001&quot;</span>
<span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
2022-04-01 12:16:46 +02:00
</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>
2022-10-31 23:26:32 +00:00
<p>The following example shows how to generate LSPs via Scapy
2022-04-01 16:40:47 +02:00
and inject them 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>
2022-04-01 12:16:46 +02:00
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">socket</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">json</span>
<span class="kn">from</span> <span class="nn">scapy.contrib.isis</span> <span class="kn">import</span> <span class="o">*</span>
<span class="k">def</span> <span class="nf">error</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
2023-09-15 07:11:54 +00:00
<span class="w"> </span><span class="sd">&quot;&quot;&quot;print error and exit&quot;&quot;&quot;</span>
2022-04-01 12:16:46 +02:00
<span class="nb">print</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">execute_command</span><span class="p">(</span><span class="n">socket_path</span><span class="p">,</span> <span class="n">request</span><span class="p">):</span>
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">socket_path</span><span class="p">):</span>
<span class="n">client</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">socket</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">AF_UNIX</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SOCK_STREAM</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">socket_path</span><span class="p">)</span>
<span class="n">client</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">request</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">))</span>
<span class="n">data</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">junk</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">1024</span><span class="p">)</span>
<span class="k">if</span> <span class="n">junk</span><span class="p">:</span>
<span class="n">data</span> <span class="o">+=</span> <span class="n">junk</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">break</span>
<span class="nb">print</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">data</span><span class="p">),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">client</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">error</span><span class="p">(</span><span class="s2">&quot;socket </span><span class="si">%s</span><span class="s2"> not found&quot;</span> <span class="o">%</span> <span class="n">socket_path</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
2023-09-15 07:11:54 +00:00
<span class="w"> </span><span class="sd">&quot;&quot;&quot;main function&quot;&quot;&quot;</span>
2022-04-01 12:16:46 +02:00
<span class="n">socket_path</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">command</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">&quot;command&quot;</span><span class="p">:</span> <span class="s2">&quot;isis-lsp-update&quot;</span><span class="p">,</span>
<span class="s2">&quot;arguments&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;instance&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="s2">&quot;pdu&quot;</span><span class="p">:</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">tlvs</span> <span class="o">=</span> <span class="n">ISIS_AreaTlv</span><span class="p">(</span><span class="n">areas</span><span class="o">=</span><span class="n">ISIS_AreaEntry</span><span class="p">(</span><span class="n">areaid</span><span class="o">=</span><span class="s1">&#39;49.0001&#39;</span><span class="p">))</span>
<span class="n">pdu</span> <span class="o">=</span> <span class="n">ISIS_CommonHdr</span><span class="p">()</span><span class="o">/</span><span class="n">ISIS_L1_LSP</span><span class="p">(</span><span class="n">lifetime</span><span class="o">=</span><span class="mi">65535</span><span class="p">,</span> <span class="n">lspid</span><span class="o">=</span><span class="s1">&#39;0102.0304.0506.00-00&#39;</span><span class="p">,</span> <span class="n">seqnum</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">tlvs</span><span class="o">=</span><span class="n">tlvs</span><span class="p">)</span>
<span class="n">command</span><span class="p">[</span><span class="s2">&quot;arguments&quot;</span><span class="p">][</span><span class="s2">&quot;pdu&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pdu</span><span class="o">.</span><span class="n">build</span><span class="p">()</span><span class="o">.</span><span class="n">hex</span><span class="p">())</span>
<span class="n">pdu</span> <span class="o">=</span> <span class="n">ISIS_CommonHdr</span><span class="p">()</span><span class="o">/</span><span class="n">ISIS_L1_LSP</span><span class="p">(</span><span class="n">lifetime</span><span class="o">=</span><span class="mi">65535</span><span class="p">,</span> <span class="n">lspid</span><span class="o">=</span><span class="s1">&#39;0102.0304.0506.00-01&#39;</span><span class="p">,</span> <span class="n">seqnum</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">tlvs</span><span class="o">=</span><span class="n">tlvs</span><span class="p">)</span>
<span class="n">command</span><span class="p">[</span><span class="s2">&quot;arguments&quot;</span><span class="p">][</span><span class="s2">&quot;pdu&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pdu</span><span class="o">.</span><span class="n">build</span><span class="p">()</span><span class="o">.</span><span class="n">hex</span><span class="p">())</span>
<span class="n">execute_command</span><span class="p">(</span><span class="n">socket_path</span><span class="p">,</span> <span class="n">command</span><span class="p">)</span>
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
<span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
2023-09-04 14:55:57 +00:00
<section id="mrt-files">
<h2>MRT Files<a class="headerlink" href="#mrt-files" title="Permalink to this headline"></a></h2>
<p>The BNG Blaster can load LSPs from a MRT file as defined in
[RFC6396](<a class="reference external" href="https://datatracker.ietf.org/doc/html/rfc6396">https://datatracker.ietf.org/doc/html/rfc6396</a>).</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Subtype |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message... (variable)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</pre></div>
</div>
<p>The message field contains the complete ISIS LSP PDU including
the ISIS common header starting with <code class="docutils literal notranslate"><span class="pre">0x83</span></code>.</p>
<p>Those files can be loaded at startup via the configuration option
<code class="docutils literal notranslate"><span class="pre">&quot;isis&quot;:</span> <span class="pre">{</span> <span class="pre">&quot;external&quot;:</span> <span class="pre">{</span> <span class="pre">&quot;mrt-file&quot;:</span> <span class="pre">&quot;&lt;file&gt;&quot;</span> <span class="pre">}</span> <span class="pre">}</span></code> or alternative
via <code class="docutils literal notranslate"><span class="pre">isis-load-mrt</span></code> <a class="reference internal" href="../api/index.html#api"><span class="std std-ref">command</span></a>.</p>
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">sudo</span> <span class="pre">bngblaster-cli</span> <span class="pre">run.sock</span> <span class="pre">isis-load-mrt</span> <span class="pre">file</span> <span class="pre">test.mrt</span> <span class="pre">instance</span> <span class="pre">1</span></code></p>
</section>
2022-04-06 23:03:25 +02:00
<section id="lspgen">
<h2>LSPGEN<a class="headerlink" href="#lspgen" title="Permalink to this headline"></a></h2>
2023-09-04 14:55:57 +00:00
<p>The BNG Blaster includes a tool called <a class="reference internal" href="lspgen.html#lspgen"><span class="std std-ref">lspgen</span></a>, which is able to generate
2022-04-06 23:03:25 +02:00
topologies and link state packets for export as MRT and PCAP files. This tool
2023-09-04 14:55:57 +00:00
is also able to inject LSAs directly using the <code class="docutils literal notranslate"><span class="pre">isis-lsp-update</span></code>
2022-04-06 23:03:25 +02:00
<a class="reference internal" href="../api/index.html#api"><span class="std std-ref">command</span></a>.</p>
</section>
2022-04-01 12:16:46 +02:00
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="Routing Protocols" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
2023-09-04 14:55:57 +00:00
<a href="ospf.html" class="btn btn-neutral float-right" title="OSPF" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
2022-04-01 12:16:46 +02:00
</div>
<hr/>
<div role="contentinfo">
2023-01-13 16:02:11 +00:00
<p>&#169; Copyright 2020-2023, RtBrick, Inc..</p>
2022-04-01 12:16:46 +02:00
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>