mirror of
https://github.com/rtbrick/bngblaster.git
synced 2024-05-06 15:54:57 +00:00
656 lines
51 KiB
HTML
656 lines
51 KiB
HTML
<!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" />
|
||
<title>ISIS — BNG Blaster 0.8 documentation</title>
|
||
<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" />
|
||
<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" />
|
||
<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="../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"></a> »</li>
|
||
<li><a href="index.html">Routing Protocols</a> »</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>
|
||
<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="Permalink to this headline"></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">"interfaces"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"network"</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">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.1.2/24"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"gateway"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.1.1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"address-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fc66:1337:7331:1::2/64"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"gateway-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fc66:1337:7331:1::1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"isis-instance-id"</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">"isis-level"</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">"isis-l1-metric"</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">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth2"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.2.2/24"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"gateway"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.2.1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"address-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fc66:1337:7331:2::2/64"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"gateway-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fc66:1337:7331:2::1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"isis-instance-id"</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">"isis"</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">"instance-id"</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">"system-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1921.6800.1001"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"router-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"hostname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"R1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"area"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||
<span class="w"> </span><span class="s2">"49.0001/24"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s2">"49.0002/24"</span>
|
||
<span class="w"> </span><span class="p">],</span>
|
||
<span class="w"> </span><span class="nt">"hello-padding"</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">"lsp-lifetime"</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">"level1-auth-key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"secret"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"level1-auth-type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"md5"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"sr-base"</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">"sr-range"</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">"isis"</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="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>
|
||
<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>
|
||
<td><p>ISIS level 2 authentication key</p></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><cite>level2-auth-type</cite></p></td>
|
||
<td><p>ISIS level 2 authentication type (simple or md5)</p></td>
|
||
<td><p>disabled</p></td>
|
||
</tr>
|
||
<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>
|
||
<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>
|
||
<tr class="row-odd"><td><p><cite>hold-time</cite></p></td>
|
||
<td><p>ISIS hold time in seconds</p></td>
|
||
<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
|
||
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">"isis"</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">"instance-id"</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">"system-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1921.6800.1001"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"router-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"hostname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"R1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"external"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"mrt-file"</span><span class="p">:</span><span class="w"> </span><span class="s2">"isis.mrt"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"connections"</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">"system-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1921.6800.0000.00"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"l1-metric"</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">"l2-metric"</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">"instance-id"</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">"system-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1921.6800.1002"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"router-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.2"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"hostname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"R2"</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">"isis"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"external"</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="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>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>
|
||
<tr class="row-even"><td><p><cite>mrt-file</cite></p></td>
|
||
<td><p>ISIS MRT file</p></td>
|
||
<td></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">"isis"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"external"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"connections"</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="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>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ok"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"code"</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">"isis-adjacencies"</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">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"P2P"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"level"</span><span class="p">:</span><span class="w"> </span><span class="s2">"L1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"instance-id"</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">"adjacency-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Up"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"peer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"system-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0100.1001.0022"</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">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth2"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"P2P"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"level"</span><span class="p">:</span><span class="w"> </span><span class="s2">"L1"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"instance-id"</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">"adjacency-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Up"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"peer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"system-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0100.1001.0021"</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="Permalink to this headline"></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">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ok"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"code"</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">"isis-database"</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">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0000.0000.0001.00-00"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"seq"</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">"lifetime"</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">"lifetime-remaining"</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">"source-type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"external"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0100.1001.0011.00-00"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"seq"</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">"lifetime"</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">"lifetime-remaining"</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">"source-type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"self"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0100.1001.0021.00-00"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"seq"</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">"lifetime"</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">"lifetime-remaining"</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">"source-type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"adjacency"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"source-system-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0100.1001.0021"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0100.1001.0022.00-00"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"seq"</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">"lifetime"</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">"lifetime-remaining"</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">"source-type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"adjacency"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"source-system-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0100.1001.0021"</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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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 PDU’s 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">"command"</span><span class="p">:</span><span class="w"> </span><span class="s2">"isis-lsp-update"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"arguments"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"instance"</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">"pdu"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||
<span class="w"> </span><span class="s2">"831b0100120100000021ffff010203040506000000000003c0d103010403490001"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s2">"831b0100120100000021ffff010203040506000100000003bad603010403490001"</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="Permalink to this headline"></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">"""print error and exit"""</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">'utf-8'</span><span class="p">))</span>
|
||
<span class="n">data</span> <span class="o">=</span> <span class="s2">""</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">'utf-8'</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">"socket </span><span class="si">%s</span><span class="s2"> not found"</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">"""main function"""</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">"command"</span><span class="p">:</span> <span class="s2">"isis-lsp-update"</span><span class="p">,</span>
|
||
<span class="s2">"arguments"</span><span class="p">:</span> <span class="p">{</span>
|
||
<span class="s2">"instance"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||
<span class="s2">"pdu"</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">'49.0001'</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">'0102.0304.0506.00-00'</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">"arguments"</span><span class="p">][</span><span class="s2">"pdu"</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">'0102.0304.0506.00-01'</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">"arguments"</span><span class="p">][</span><span class="s2">"pdu"</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">"__main__"</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="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">"isis":</span> <span class="pre">{</span> <span class="pre">"external":</span> <span class="pre">{</span> <span class="pre">"mrt-file":</span> <span class="pre">"<file>"</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="Permalink to this headline"></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>© Copyright 2020-2023, 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> |