mirror of
https://github.com/rtbrick/bngblaster.git
synced 2024-05-06 15:54:57 +00:00
649 lines
66 KiB
HTML
649 lines
66 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>Quickstart Guide — BNG Blaster 0.0 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" />
|
||
<!--[if lt IE 9]>
|
||
<script src="_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<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="Interfaces" href="interfaces.html" />
|
||
<link rel="prev" title="Installation" href="install.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 current"><a class="current reference internal" href="#">Quickstart Guide</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#pppoe">PPPoE</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#isis">ISIS</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#bgp">BGP</a></li>
|
||
</ul>
|
||
</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"><a class="reference internal" href="routing/index.html">Routing Protocols</a></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="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="troubleshooting.html">Troubleshooting</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="reference/index.html">Reference</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>Quickstart Guide</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="_sources/quickstart.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="quickstart-guide">
|
||
<h1>Quickstart Guide<a class="headerlink" href="#quickstart-guide" title="Permalink to this headline"></a></h1>
|
||
<p>In this guide, we’ll walk you through the BNG Blaster basics. All the
|
||
examples here work standalone without having network devices.</p>
|
||
<p>First, you need to <a class="reference internal" href="install.html#install"><span class="std std-ref">install</span></a> the BNG Blaster on your machine.</p>
|
||
<p>In the next step, you create a virtual ethernet interface pair. This can be
|
||
used by the BNG Blaster to send and received traffic.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo ip link add veth1.1 type veth peer name veth1.2
|
||
sudo ip link set veth1.1 up
|
||
sudo ip link set veth1.2 up
|
||
</pre></div>
|
||
</div>
|
||
<section id="pppoe">
|
||
<h2>PPPoE<a class="headerlink" href="#pppoe" title="Permalink to this headline"></a></h2>
|
||
<p>Let’s start with a simple PPPoE setup where BNG Blaster emulates the
|
||
client and server. On the first interface we use an
|
||
<a class="reference internal" href="interfaces.html#a10nsp-interface"><span class="std std-ref">A10NSP interface</span></a>. Those interfaces emulate a
|
||
lightweight PPPoE server by accepting every session. The other interface is
|
||
configured as PPPoE client.</p>
|
||
<img alt="PPPoE Quickstart" src="_images/quickstart_pppoe.png" />
|
||
<p>The configured <a class="reference internal" href="access/traffic.html#session-traffic"><span class="std std-ref">session traffic</span></a> generates
|
||
bidirectional traffic between client and server. There is also
|
||
one more <a class="reference internal" href="streams.html#streams"><span class="std std-ref">traffic stream</span></a> bound to the sessions.</p>
|
||
<p><strong>pppoe.json:</strong></p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interfaces"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a10nsp"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"__comment__"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PPPoE Server"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.1"</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">],</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"__comment__"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PPPoE"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"pppoe"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"outer-vlan-min"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"outer-vlan-max"</span><span class="p">:</span><span class="w"> </span><span class="mi">4000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"inner-vlan"</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"stream-group-id"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"pppoe"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"reconnect"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"dhcpv6"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"enable"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"session-traffic"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ipv4-pps"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"streams"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"stream-group-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="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"S1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ipv4"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"direction"</span><span class="p">:</span><span class="w"> </span><span class="s2">"both"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"priority"</span><span class="p">:</span><span class="w"> </span><span class="mi">128</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="mi">256</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"pps"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a10nsp-interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.1"</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Now you can start the BNG Blaster with this configuration.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster -C pppoe.json
|
||
Mar 30 14:27:59.303904 Resolve network interfaces
|
||
Mar 30 14:27:59.303952 All network interfaces resolved
|
||
Mar 30 14:27:59.396765 ALL SESSIONS ESTABLISHED
|
||
</pre></div>
|
||
</div>
|
||
<p>After pressing <code class="docutils literal notranslate"><span class="pre">ctrl+c</span></code>, the test should be stopped and a detailed
|
||
report printed.</p>
|
||
<p>Let’s advance the test by enabling some features explained below.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster -C pppoe.json -c 1 -L test.log -l ip -J report.json -j sessions -j streams -P test.pcap -S run.sock -I
|
||
</pre></div>
|
||
</div>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-C</span> <span class="pre">test.json</span></code> loads the configuration file</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-c</span> <span class="pre">1</span></code> defines how many sessions to be emulated, you can increase the number to see what happens…</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-L</span> <span class="pre">test.log</span></code> creates an optional logging file</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-l</span> <span class="pre">ip</span></code> enables the IP address logging</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-J</span> <span class="pre">report.json</span></code> generates a final JSON report at the end</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-j</span> <span class="pre">sessions</span></code> include detailed results for every session in the JSON report</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-j</span> <span class="pre">streams</span></code> include detailed results for every stream in the JSON report</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-P</span> <span class="pre">test.pcap</span></code> generates a PCAP file</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-S</span> <span class="pre">run.sock</span></code> opens the JSON RPC API socket</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">-I</span></code> start interactive courses user interface</p></li>
|
||
</ul>
|
||
<img alt="BNG Blaster Interactive" src="_images/quickstart_interactive.png" />
|
||
<p>Now let’s try to press <code class="docutils literal notranslate"><span class="pre">F1</span></code> to navigate through the different views. All supported
|
||
keyboard inputs are listed in the top left corner. After pressing <code class="docutils literal notranslate"><span class="pre">F9</span></code> the test
|
||
should be stopped.</p>
|
||
<img alt="BNG Blaster Interactive" src="_images/quickstart_streams.png" />
|
||
<p>If the test is still running, you can open a second terminal. Then go to the same
|
||
directory from where you started the BNG Blaster and enter the following command.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster-cli run.sock session-info session-id 1 | jq .
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"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="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="w"> </span><span class="nt">"session-info"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"pppoe"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"session-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="w"> </span><span class="nt">"session-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Established"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"outer-vlan"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"inner-vlan"</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mac"</span><span class="p">:</span><span class="w"> </span><span class="s2">"02:00:00:00:00:01"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"username"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user1@rtbrick.com"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"reply-message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"BNG-Blaster-A10NSP"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"lcp-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Opened"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ipcp-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Opened"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ip6cp-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Opened"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ipv4-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.10.10.10"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ipv4-dns1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.12.12.10"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ipv4-dns2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.13.13.10"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"dhcpv6-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Init"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">87</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">80</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-fragmented-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"session-traffic"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"total-flows"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"verified-flows"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"first-seq-rx-access-ipv4"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"first-seq-rx-access-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"first-seq-rx-access-ipv6pd"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"first-seq-rx-network-ipv4"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"first-seq-rx-network-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"first-seq-rx-network-ipv6pd"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-tx-session-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">34</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-rx-session-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">34</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-rx-session-packets-loss"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-tx-session-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">34</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-rx-session-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">34</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-rx-session-packets-loss"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-tx-session-packets-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-rx-session-packets-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-rx-session-packets-ipv6-loss"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-tx-session-packets-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-rx-session-packets-ipv6"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-rx-session-packets-ipv6-loss"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-tx-session-packets-ipv6pd"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-rx-session-packets-ipv6pd"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"access-rx-session-packets-ipv6pd-loss"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-tx-session-packets-ipv6pd"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-rx-session-packets-ipv6pd"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-rx-session-packets-ipv6pd-loss"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a10nsp"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"s-vlan"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"qinq-send"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"qinq-received"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">46</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">87</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>You can also try other <a class="reference internal" href="api/index.html#api"><span class="std std-ref">commands</span></a> to get familiar with the API.</p>
|
||
<p>After the test has stopped, you can also check the final JSON report (<code class="docutils literal notranslate"><span class="pre">jq</span> <span class="pre">.</span> <span class="pre">report.json</span></code>),
|
||
log, and PCAP files.</p>
|
||
</section>
|
||
<section id="isis">
|
||
<h2>ISIS<a class="headerlink" href="#isis" title="Permalink to this headline"></a></h2>
|
||
<p>In the following example, we create two <a class="reference internal" href="routing/isis.html#isis"><span class="std std-ref">ISIS</span></a> nodes (R1 and R2) with an emulated
|
||
ISIS topology attached to R1 (<cite>test.mrt`</cite>).</p>
|
||
<img alt="ISIS Quickstart" src="_images/quickstart_isis.png" />
|
||
<p><strong>isis.json:</strong></p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interfaces"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></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="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.1/24"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gateway"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.2"</span><span class="p">,</span><span class="w"></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/64"</span><span class="p">,</span><span class="w"></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"</span><span class="p">,</span><span class="w"></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="w"> </span><span class="nt">"isis-level"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.2/24"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gateway"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.1"</span><span class="p">,</span><span class="w"></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/64"</span><span class="p">,</span><span class="w"></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"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"isis-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="w"> </span><span class="nt">"isis-level"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"isis"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"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="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="w"> </span><span class="s2">"49.0001/24"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="s2">"49.0002/24"</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">],</span><span class="w"></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="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="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="w"> </span><span class="nt">"sr-base"</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"sr-range"</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"sr-node-sid"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"level1-auth-key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"secret123"</span><span class="p">,</span><span class="w"></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="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="w"> </span><span class="nt">"mrt-file"</span><span class="p">:</span><span class="w"> </span><span class="s2">"test.mrt"</span><span class="p">,</span><span class="w"></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="w"> </span><span class="p">{</span><span class="w"></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="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="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="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></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="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="w"> </span><span class="s2">"49.0001/24"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="s2">"49.0002/24"</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">],</span><span class="w"></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="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="w"> </span><span class="nt">"hostname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"R2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"sr-base"</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"sr-range"</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"sr-node-sid"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"level1-auth-key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"secret123"</span><span class="p">,</span><span class="w"></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="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">],</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"streams"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"RAW1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ipv4"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"direction"</span><span class="p">:</span><span class="w"> </span><span class="s2">"downstream"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"priority"</span><span class="p">:</span><span class="w"> </span><span class="mi">128</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"destination-ipv4-address"</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="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="mi">256</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"pps"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.1"</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Now use the included tool <code class="docutils literal notranslate"><span class="pre">lspgen</span></code> to generate the attached ISIS topology.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ lspgen -a 49.0001/24 -K secret123 -T md5 -C 1921.6800.1001 -m test.mrt
|
||
Mar 30 14:54:19.647569 Add context for instance default, protocol isis, topology unicast
|
||
Mar 30 14:54:19.647630 Add connector to 0x192168001001
|
||
Mar 30 14:54:19.647633 LSP generation parameters
|
||
Mar 30 14:54:19.647639 Area 49.0001/24
|
||
Mar 30 14:54:19.647642 Level 1, sequence 0x1, lsp-lifetime 65535
|
||
Mar 30 14:54:19.647645 Authentication-key secret123, Authentication-type md5
|
||
Mar 30 14:54:19.647648 IPv4 Node Base Prefix 192.168.0.0/32
|
||
Mar 30 14:54:19.647651 IPv4 Link Base Prefix 172.16.0.0/31
|
||
Mar 30 14:54:19.647654 IPv4 External Base Prefix 10.0.0.0/28
|
||
Mar 30 14:54:19.647657 IPv6 Node Base Prefix fc00::c0a8:0/128
|
||
Mar 30 14:54:19.647660 IPv6 Link Base Prefix fc00::ac10:0/127
|
||
Mar 30 14:54:19.647669 IPv6 External Base Prefix fc00::a00:0/124
|
||
Mar 30 14:54:19.647672 SRGB base 10000, range 2000
|
||
Mar 30 14:54:19.647678 Generating a graph of 10 nodes and 20 links
|
||
Mar 30 14:54:19.647813 Root node 1921.6800.0000.00
|
||
</pre></div>
|
||
</div>
|
||
<p>Finally, you can start the BNG Blaster.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster -C veth1-isis.json -l isis -P test.pcap -S run.sock
|
||
Mar 30 14:56:11.981279 Init IS-IS instance 1
|
||
Mar 30 14:56:11.981314 Load ISIS MRT file test.mrt
|
||
Mar 30 14:56:11.981335 Init IS-IS instance 2
|
||
Mar 30 14:56:12.031917 Add network interface veth1.1 to IS-IS instance 1
|
||
Mar 30 14:56:12.087877 Add network interface veth1.2 to IS-IS instance 2
|
||
Mar 30 14:56:12.087971 opened pcap-file test.pcap
|
||
Mar 30 14:56:12.088013 Opened control socket run.sock
|
||
Mar 30 14:56:13.088035 Resolve network interfaces
|
||
Mar 30 14:56:13.088050 All network interfaces resolved
|
||
Mar 30 14:56:22.093906 ISIS L1 adjacency UP on interface veth1.2
|
||
Mar 30 14:56:22.093964 ISIS L1 adjacency UP on interface veth1.1
|
||
</pre></div>
|
||
</div>
|
||
<p>If the test is still running, you can open a second terminal, go to the same directory
|
||
from where you started the BNG Blaster and enter the following command.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster-cli run.sock isis-adjacencies
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"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="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="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="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.1"</span><span class="p">,</span><span class="w"></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="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="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="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="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="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="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.2"</span><span class="p">,</span><span class="w"></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="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="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="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="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="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="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>You can also try other <a class="reference internal" href="api/index.html#api"><span class="std std-ref">commands</span></a> to get familiar with the API.</p>
|
||
</section>
|
||
<section id="bgp">
|
||
<h2>BGP<a class="headerlink" href="#bgp" title="Permalink to this headline"></a></h2>
|
||
<p>In the following example, we create a BGP session between BNG Blaster
|
||
and <a class="reference external" href="https://github.com/osrg/gobgp">gobgp</a>.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo apt install gobgpd
|
||
</pre></div>
|
||
</div>
|
||
<p>Therefore, we use again the veth interface pair. But this time
|
||
the side used by <a class="reference external" href="https://github.com/osrg/gobgp">gobgp</a>
|
||
needs an IP address and TCP checksum offloading must be disabled!</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo ip link add veth1.1 type veth peer name veth1.2
|
||
sudo ip link set veth1.1 up
|
||
sudo ip link set veth1.2 up
|
||
# disable checksum offloading
|
||
sudo ethtool -K veth1.1 tx off
|
||
sudo ethtool -K veth1.2 tx off
|
||
# add IPv4 address for gobgpd
|
||
sudo ip address add 192.168.92.1/24 dev veth1.1
|
||
</pre></div>
|
||
</div>
|
||
<p>Following the <a class="reference external" href="https://github.com/osrg/gobgp">gobgp</a> and
|
||
BNG Blaster configuration files needed.</p>
|
||
<p><strong>gobgpd.conf:</strong></p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[global.config]
|
||
as = 65001
|
||
router-id = "192.168.92.1"
|
||
local-address-list = ["192.168.92.1"]
|
||
|
||
[[neighbors]]
|
||
[neighbors.config]
|
||
peer-as = 65001
|
||
neighbor-address = "192.168.92.2"
|
||
[[neighbors.afi-safis]]
|
||
[neighbors.afi-safis.config]
|
||
afi-safi-name = "ipv4-unicast"
|
||
[[neighbors.afi-safis]]
|
||
[neighbors.afi-safis.config]
|
||
afi-safi-name = "ipv6-unicast"
|
||
[[neighbors.afi-safis]]
|
||
[neighbors.afi-safis.config]
|
||
afi-safi-name = "ipv4-labelled-unicast"
|
||
[[neighbors.afi-safis]]
|
||
[neighbors.afi-safis.config]
|
||
afi-safi-name = "ipv6-labelled-unicast"
|
||
</pre></div>
|
||
</div>
|
||
<p><strong>bgp.json:</strong></p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interfaces"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-interval"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-interval"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"io-slots"</span><span class="p">:</span><span class="w"> </span><span class="mi">4096</span><span class="p">,</span><span class="w"></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="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.92.2/24"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gateway"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.92.1"</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"bgp"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"local-ipv4-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.92.2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"peer-ipv4-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.92.1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"raw-update-file"</span><span class="p">:</span><span class="w"> </span><span class="s2">"out.bgp"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"local-as"</span><span class="p">:</span><span class="w"> </span><span class="mi">65001</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"peer-as"</span><span class="p">:</span><span class="w"> </span><span class="mi">65001</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Use the included tool <code class="docutils literal notranslate"><span class="pre">bgpupdate</span></code> to generate a BGP update file
|
||
with 10.000 IPv4 and 10.000 IPv6 prefixes.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>bgpupdate -a 65001 -n 192.168.92.2 -p 11.0.0.0/28 -P 10000
|
||
bgpupdate -a 65001 -n 192.168.92.2 -p fc66:11::/64 -P 10000 --append
|
||
</pre></div>
|
||
</div>
|
||
<p>Start the <a class="reference external" href="https://github.com/osrg/gobgp">gobgp</a> daemon.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo -E gobgpd -f gobgpd.conf
|
||
{"level":"info","msg":"gobgpd started","time":"2022-04-08T14:51:03+02:00"}
|
||
{"Topic":"Config","level":"info","msg":"Finished reading the config file","time":"2022-04-08T14:51:03+02:00"}
|
||
{"level":"info","msg":"Peer 192.168.92.2 is added","time":"2022-04-08T14:51:03+02:00"}
|
||
{"Topic":"Peer","level":"info","msg":"Add a peer configuration for:192.168.92.2","time":"2022-04-08T14:51:03+02:00"}
|
||
</pre></div>
|
||
</div>
|
||
<p>Finally, start the BNG Blaster in another terminal window.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster -C bgp.json -l bgp -S run.sock
|
||
Apr 08 14:53:51.870722 Loaded BGP RAW update file out.bgp (138.63 KB, 36 updates)
|
||
Apr 08 14:53:51.904266 BGP (veth1.2 192.168.92.2 - 192.168.92.1) init session
|
||
Apr 08 14:53:51.904293 BGP (veth1.2 192.168.92.2 - 192.168.92.1) state changed from closed -> idle
|
||
Apr 08 14:53:51.904369 Opened control socket run.sock
|
||
Apr 08 14:53:52.904359 Resolve network interfaces
|
||
Apr 08 14:53:52.904389 All network interfaces resolved
|
||
Apr 08 14:53:53.904448 BGP (veth1.2 192.168.92.2 - 192.168.92.1) state changed from idle -> connect
|
||
Apr 08 14:53:53.905659 BGP (veth1.2 192.168.92.2 - 192.168.92.1) state changed from connect -> opensent
|
||
Apr 08 14:53:53.907888 BGP (veth1.2 192.168.92.2 - 192.168.92.1) open message received with peer AS: 65001, holdtime: 90s
|
||
Apr 08 14:53:53.907903 BGP (veth1.2 192.168.92.2 - 192.168.92.1) state changed from opensent -> openconfirm
|
||
Apr 08 14:53:53.907917 BGP (veth1.2 192.168.92.2 - 192.168.92.1) state changed from openconfirm -> established
|
||
Apr 08 14:53:54.907989 BGP (veth1.2 192.168.92.2 - 192.168.92.1) raw update start
|
||
Apr 08 14:53:55.182885 BGP (veth1.2 192.168.92.2 - 192.168.92.1) raw update stop after 0s
|
||
</pre></div>
|
||
</div>
|
||
<p>If the test is still running, you can open one more terminal, go to the same directory
|
||
from where you started the BNG Blaster and enter the following command.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster-cli run.sock bgp-sessions
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"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="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="w"> </span><span class="nt">"bgp-sessions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth1.2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"local-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.92.2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"local-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1.2.3.4"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"local-as"</span><span class="p">:</span><span class="w"> </span><span class="mi">65001</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"local-holdtime"</span><span class="p">:</span><span class="w"> </span><span class="mi">90</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"peer-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.92.1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"peer-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1.92.168.192"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"peer-as"</span><span class="p">:</span><span class="w"> </span><span class="mi">65001</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"peer-holdtime"</span><span class="p">:</span><span class="w"> </span><span class="mi">90</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"established"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"raw-update-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"done"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"raw-update-file"</span><span class="p">:</span><span class="w"> </span><span class="s2">"out.bgp"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"stats"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"messages-rx"</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"messages-tx"</span><span class="p">:</span><span class="w"> </span><span class="mi">38</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"keepalive-rx"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"keepalive-tx"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"update-rx"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"update-tx"</span><span class="p">:</span><span class="w"> </span><span class="mi">36</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>You can also try other <a class="reference internal" href="api/index.html#api"><span class="std std-ref">commands</span></a> to get familiar with the API.</p>
|
||
<p>The following command shows the session in <a class="reference external" href="https://github.com/osrg/gobgp">gobgp</a>.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ gobgp neighbor 192.168.92.2
|
||
BGP neighbor is 192.168.92.2, remote AS 65001
|
||
BGP version 4, remote router ID 4.3.2.1
|
||
BGP state = established, up for 00:01:36
|
||
BGP OutQ = 0, Flops = 0
|
||
Hold time is 90, keepalive interval is 30 seconds
|
||
Configured hold time is 90, keepalive interval is 30 seconds
|
||
|
||
Neighbor capabilities:
|
||
multiprotocol:
|
||
ipv4-unicast: advertised and received
|
||
ipv6-unicast: advertised and received
|
||
ipv4-labelled-unicast: advertised and received
|
||
ipv6-labelled-unicast: advertised and received
|
||
route-refresh: advertised
|
||
4-octet-as: advertised and received
|
||
Message statistics:
|
||
Sent Rcvd
|
||
Opens: 2 2
|
||
Notifications: 0 0
|
||
Updates: 0 72
|
||
Keepalives: 5 4
|
||
Route Refresh: 0 0
|
||
Discarded: 0 0
|
||
Total: 7 79
|
||
Route statistics:
|
||
Advertised: 0
|
||
Received: 20000
|
||
Accepted: 0
|
||
</pre></div>
|
||
</div>
|
||
<p>If the test is still running, you can add further routes. Therefore
|
||
first create a new BGP update file.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>bgpupdate -a 65001 -n 192.168.92.2 -p 22.0.0.0/28 -P 100000 -f update.bgp
|
||
</pre></div>
|
||
</div>
|
||
<p>Apply this file to the specified BGP session.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo bngblaster-cli run.sock bgp-raw-update file update.bgp peer-ipv4-address 192.168.92.1 local-ipv4-address 192.168.92.2
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"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="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="w"> </span><span class="nt">"bgp-raw-update"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"started"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"skipped"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"filtered"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>The parameters <code class="docutils literal notranslate"><span class="pre">peer-ipv4-address</span></code> and <code class="docutils literal notranslate"><span class="pre">local-ipv4-address</span></code> are used to filter to which sessions
|
||
this update should be applied. Without any of those parameters, the update will be applied to all
|
||
sessions.</p>
|
||
<p>Check if they are received in the <a class="reference external" href="https://github.com/osrg/gobgp">gobgp</a> daemon.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ gobgp neighbor
|
||
Peer AS Up/Down State |#Received Accepted
|
||
192.168.92.2 65001 00:09:36 Establ | 120000 0
|
||
</pre></div>
|
||
</div>
|
||
<p>Finally, you can withdraw them again.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>bgpupdate -a 65001 -n 192.168.92.2 -p 22.0.0.0/28 -P 100000 -f withdraw.bgp --withdraw
|
||
sudo bngblaster-cli run.sock bgp-raw-update file withdraw.bgp
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="install.html" class="btn btn-neutral float-left" title="Installation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="interfaces.html" class="btn btn-neutral float-right" title="Interfaces" 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-2022, 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> |