Files
Christian Giese 00aa14c8e4 github pages
2024-03-25 22:01:36 +00:00

745 lines
53 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ISIS &mdash; BNG Blaster 0.8 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="../_static/tabs.css?v=a5c4661c" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=411f5019" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=a0e24af7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="OSPF" href="ospf.html" />
<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" aria-label="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>
<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>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="ospf.html">OSPF</a></li>
<li class="toctree-l2"><a class="reference internal" href="mpls.html">MPLS</a></li>
<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>
<li class="toctree-l2"><a class="reference internal" href="lspgen.html">LSPGEN</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../streams.html">Traffic Streams</a></li>
<li class="toctree-l1"><a class="reference internal" href="../http.html">HTTP Emulation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../nat.html">NAT / CGNAT</a></li>
<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>
<li class="toctree-l1"><a class="reference internal" href="../controller.html">Controller</a></li>
<li class="toctree-l1"><a class="reference internal" href="../performance.html">Performance Guide</a></li>
<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" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Routing Protocols</a></li>
<li class="breadcrumb-item active">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="Link to this heading"></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>
<p>ISIS has been called the de facto standard for a large service provider
network backbones.</p>
<p>The BNG Blaster can emulate multiple ISIS instances. An ISIS instance
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="Link to this heading"></a></h2>
<p>Following an example ISIS configuration with one instance
attached to two network interfaces.</p>
<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>
</pre></div>
</div>
<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>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>instance-id</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS instance identifier.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>level</strong></p></td>
<td><div class="line-block">
<div class="line">Level.</div>
<div class="line">Default: 3 Range: 1 - 3</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>protocol-ipv4</strong></p></td>
<td><div class="line-block">
<div class="line">Enable/disable IPv4 routing.</div>
<div class="line">Default: true</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>protocol-ipv6</strong></p></td>
<td><div class="line-block">
<div class="line">Enable/disable IPv6 routing.</div>
<div class="line">Default: true</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>level1-auth-key</strong></p></td>
<td><div class="line-block">
<div class="line">Level 1 authentication key.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>level1-auth-type</strong></p></td>
<td><div class="line-block">
<div class="line">Level 1 authentication type (simple or md5).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>level1-auth-hello</strong></p></td>
<td><div class="line-block">
<div class="line">Level 1 hello authentication.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>level1-auth-csnp</strong></p></td>
<td><div class="line-block">
<div class="line">Level 1 CSNP authentication.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>level1-auth-psnp</strong></p></td>
<td><div class="line-block">
<div class="line">Level 1 PSNP authentication.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>level2-auth-key</strong></p></td>
<td><div class="line-block">
<div class="line">Level 2 authentication key.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>level2-auth-type</strong></p></td>
<td><div class="line-block">
<div class="line">Level 2 authentication type (simple or md5).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>level2-auth-hello</strong></p></td>
<td><div class="line-block">
<div class="line">Level 2 hello authentication.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>level2-auth-csnp</strong></p></td>
<td><div class="line-block">
<div class="line">Level 2 CSNP authentication.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>level2-auth-psnp</strong></p></td>
<td><div class="line-block">
<div class="line">Level 2 PSNP authentication.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>hello-interval</strong></p></td>
<td><div class="line-block">
<div class="line">Hello interval in seconds</div>
<div class="line">Default: 10 Range: 1 - 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>hello-padding</strong></p></td>
<td><div class="line-block">
<div class="line">Enable/disable hello padding.</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>hold-time</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS hold time in seconds.</div>
<div class="line">Default: 30 Range: 1 - 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>lsp-lifetime</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS LSP lifetime in seconds.</div>
<div class="line">Default: 65535 Range: 330 - 65535</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>lsp-refresh-interval</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS LSP refresh interval in seconds.</div>
<div class="line">Default: 300 Range: 1 - 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>lsp-retry-interval</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS LSP retry interval in seconds.</div>
<div class="line">Default: 5 Range: 1 - 65535</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>lsp-tx-interval</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS LSP TX interval in ms (time between LSP send windows).</div>
<div class="line">Default: 10 Range: 1 - 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>lsp-tx-window-size</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS LSP TX window size (LSP send per window).</div>
<div class="line">Default: 1 Range: 1 - 65535</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>csnp-interval</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS CSNP interval in seconds.</div>
<div class="line">Default: 30 Range: 1 - 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>hostname</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS hostname</div>
<div class="line">Default: bngblaster</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>router-id</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS router identifier.</div>
<div class="line">Default: 10.10.10.10</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>system-id</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS system identifier.</div>
<div class="line">Default: 0100.1001.0010</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>area</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS area(s)</div>
<div class="line">Default: 49.0001/24</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>sr-base</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS SR base</div>
<div class="line">Default: 0 Range: 0 - 1048575</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>sr-range</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS SR range</div>
<div class="line">Default: 0 Range: 0 - 1048575</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>sr-node-sid</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS SR node SID</div>
<div class="line">Default: 0 Range: 0 - 1048575</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>teardown-time</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS teardown time in seconds.</div>
<div class="line">Default: 5 Range: 0 - 65535</div>
</div>
</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
inject an LSP on one instance and check if learned over the tested network on
the other instance.</p>
<p>Every ISIS instance can be also connected to an emulated link state graph loaded
by MRT files as shown in the example below.</p>
<img alt="ISIS" src="../_images/bbl_isis.png" />
<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>
</pre></div>
</div>
<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>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>purge</strong></p></td>
<td><div class="line-block">
<div class="line">Automatically purge all external LSP during teardown. This option</div>
<div class="line">requires a reasonable teardown-time depending on the database size.</div>
<div class="line">Default: true</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>auto-refresh</strong></p></td>
<td><div class="line-block">
<div class="line">Automatically refresh all external LSP.</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>mrt-file</strong></p></td>
<td><div class="line-block">
<div class="line">MRT file</div>
</div>
</td>
</tr>
</tbody>
</table>
<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>
<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>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>system-id</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS system identifier.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>l1-metric</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS level 1 interface metric.</div>
<div class="line">Default: 10</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>l2-metric</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS level 2 interface metric.</div>
<div class="line">Default: 10</div>
</div>
</td>
</tr>
</tbody>
</table>
</section>
<section id="adjacencies">
<h2>Adjacencies<a class="headerlink" href="#adjacencies" title="Link to this heading"></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>
<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>
</pre></div>
</div>
</section>
<section id="database">
<h2>Database<a class="headerlink" href="#database" title="Link to this heading"></a></h2>
<p>The BNG Blaster distinguishes between three different source types of
LSP entries in the ISIS database.</p>
<p>The type <code class="docutils literal notranslate"><span class="pre">self</span></code> is used for the self-originated LSP describing the own
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
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>
<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>
<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>
</pre></div>
</div>
<p>The BNG Blaster automatically purges all LSPs of type
<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
generating LSPs with newer sequence numbers and a lifetime
of 30 seconds only. This lifetime is enough to flood the purge
LSP over the whole network under test.</p>
</section>
<section id="flooding">
<h2>Flooding<a class="headerlink" href="#flooding" title="Link to this heading"></a></h2>
<p>The BNG Blaster floods LSPs received to all other active
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="Link to this heading"></a></h2>
<p>Currently, only ISIS P2P links are supported. There is also
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="Link to this heading"></a></h2>
<p>It is also possible to inject external LSPs 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>
<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
the ISIS common header starting with <code class="docutils literal notranslate"><span class="pre">0x83</span></code>.</p>
<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>
<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>
</pre></div>
</div>
</section>
<section id="lsp-update-via-scapy">
<h2>LSP Update via Scapy<a class="headerlink" href="#lsp-update-via-scapy" title="Link to this heading"></a></h2>
<p>The following example shows how to generate LSPs via Scapy
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>
<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>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;print error and exit&quot;&quot;&quot;</span>
<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>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;main function&quot;&quot;&quot;</span>
<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>
<section id="mrt-files">
<h2>MRT Files<a class="headerlink" href="#mrt-files" title="Link to this heading"></a></h2>
<p>The BNG Blaster can load LSPs from a MRT file as defined in
<a class="reference external" href="https://datatracker.ietf.org/doc/html/rfc6396">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>
<section id="lspgen">
<h2>LSPGEN<a class="headerlink" href="#lspgen" title="Link to this heading"></a></h2>
<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
topologies and link state packets for export as MRT and PCAP files. This tool
is also able to inject LSAs 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>
</section>
</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>
<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>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2020-2024, RtBrick, Inc..</p>
</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>