1
0
mirror of https://github.com/rtbrick/bngblaster.git synced 2024-05-06 15:54:57 +00:00
Files
Christian Giese 00aa14c8e4 github pages
2024-03-25 22:01:36 +00:00

1443 lines
82 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Interfaces &mdash; BNG Blaster 0.8 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/tabs.css?v=a5c4661c" />
<link rel="stylesheet" type="text/css" href="_static/custom.css?v=411f5019" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=a0e24af7"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Access Protocols" href="access/index.html" />
<link rel="prev" title="Quickstart Guide" href="quickstart.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home">
BNG Blaster
<img src="_static/rtbrick_logo.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart Guide</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Interfaces</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#operating-system-settings">Operating System Settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="#interface-settings">Interface Settings</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#links">Links</a></li>
<li class="toctree-l3"><a class="reference internal" href="#link-aggregation-lag">Link Aggregation (LAG)</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#interface-functions">Interface Functions</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#network-interfaces">Network Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="#access-interfaces">Access Interfaces</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#untagged">Untagged</a></li>
<li class="toctree-l4"><a class="reference internal" href="#single-tagged">Single Tagged</a></li>
<li class="toctree-l4"><a class="reference internal" href="#double-tagged">Double Tagged</a></li>
<li class="toctree-l4"><a class="reference internal" href="#triple-tagged">Triple Tagged</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#a10nsp-interfaces">A10NSP Interfaces</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#i-o-modes">I/O Modes</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#packet-mmap">Packet MMAP</a></li>
<li class="toctree-l3"><a class="reference internal" href="#raw">RAW</a></li>
<li class="toctree-l3"><a class="reference internal" href="#dpdk">DPDK</a></li>
</ul>
</li>
</ul>
</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="http.html">HTTP Emulation</a></li>
<li class="toctree-l1"><a class="reference internal" href="nat.html">NAT / CGNAT</a></li>
<li class="toctree-l1"><a class="reference internal" href="reports.html">Reports</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="api/index.html">API/CLI</a></li>
<li class="toctree-l1"><a class="reference internal" href="controller.html">Controller</a></li>
<li class="toctree-l1"><a class="reference internal" href="performance.html">Performance Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">Frequently Asked Questions</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">BNG Blaster</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Interfaces</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/interfaces.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="interfaces">
<span id="id1"></span><h1>Interfaces<a class="headerlink" href="#interfaces" title="Link to this heading"></a></h1>
<p>The BNG Blaster distinguishes between interface links and interface functions.
An interface link can be considered as the actual interface with all the
corresponding IO settings. This is similar but not the same as physical interfaces
in typical router implementations. Interface functions are similar to logical interfaces
and define the actual services. One or more interface functions can be attached to each
interface link.</p>
<p>At least one interface function is required to start the BNG Blaster.</p>
<section id="operating-system-settings">
<h2>Operating System Settings<a class="headerlink" href="#operating-system-settings" title="Link to this heading"></a></h2>
<p>The BNG Blaster implements all protocols in user space. Therefore the used interfaces
links must not have an IP address configured in the host operating system, to prevent that
the received packets are handled or even responded to from the Linux kernel as well.</p>
<p>All used interface links must be in an operational state up.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo ip link set dev &lt;interface&gt; up
</pre></div>
</div>
<p>It is not possible to send packets larger than the configured interface MTU, which is 1500
bytes per default. For PPPoE with multiple VLAN headers, this might be not enough for large
packets. Therefore the interface MTU should be increased using the following commands.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo ip link set mtu 9000 dev &lt;interface&gt;
</pre></div>
</div>
<p>All this can be also archived via netplan using the following configuration for each BNG Blaster
interface link.</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">network</span><span class="p">:</span>
<span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">2</span>
<span class="nt">renderer</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">networkd</span>
<span class="nt">ethernets</span><span class="p">:</span>
<span class="w"> </span><span class="nt">eth1</span><span class="p">:</span>
<span class="w"> </span><span class="nt">dhcp4</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">no</span>
<span class="w"> </span><span class="nt">dhcp6</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">no</span>
<span class="w"> </span><span class="nt">link-local</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[]</span>
<span class="w"> </span><span class="nt">mtu</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">9000</span>
<span class="w"> </span><span class="nt">eth2</span><span class="p">:</span>
<span class="w"> </span><span class="nt">dhcp4</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">no</span>
<span class="w"> </span><span class="nt">dhcp6</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">no</span>
<span class="w"> </span><span class="nt">link-local</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[]</span>
<span class="w"> </span><span class="nt">mtu</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">9000</span>
</pre></div>
</div>
<p>It might be also needed to increase the hardware and software queue size of your
network interface links for higher throughput.</p>
<p>The command <code class="docutils literal notranslate"><span class="pre">ethtool</span> <span class="pre">-g</span> <span class="pre">&lt;interface&gt;</span></code> shows the currently applied and maximum
hardware queue size.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo ethtool -g ens5f1
Ring parameters for ens5f1:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 512
RX Mini: 0
RX Jumbo: 0
TX: 512
</pre></div>
</div>
<p>The currently applied settings can be changed with the following command:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo ethtool -G ens5f1 tx 4096 rx 4096
</pre></div>
</div>
<p>You can even change the software queue size:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo ip link set txqueuelen 4096 dev ens5f1
</pre></div>
</div>
</section>
<section id="interface-settings">
<h2>Interface Settings<a class="headerlink" href="#interface-settings" title="Link to this heading"></a></h2>
<p>The interfaces section contains all configurations around interface links and options.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>io-mode</strong></p></td>
<td><div class="line-block">
<div class="line">IO mode.</div>
<div class="line">The supported IO modes are listed with <code class="docutils literal notranslate"><span class="pre">bngblaster</span> <span class="pre">-v</span></code></div>
<div class="line">but except <code class="docutils literal notranslate"><span class="pre">packet_mmap_raw</span></code> all other modes are currently</div>
<div class="line">considered experimental. In the default mode (<code class="docutils literal notranslate"><span class="pre">packet_mmap_raw</span></code>)</div>
<div class="line">all packets are received in a Packet MMAP ring buffer and sent</div>
<div class="line">directly through RAW packet sockets.</div>
<div class="line">Default: packet_mmap_raw</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>io-slots</strong></p></td>
<td><div class="line-block">
<div class="line">IO slots (ring size).</div>
<div class="line">It might be also needed to increase the <strong>io-slots</strong> to</div>
<div class="line">reach the desired throughput. The actual meaning of IO slots</div>
<div class="line">depends on the selected IO mode. For Packet MMAP, it defines the</div>
<div class="line">maximum number of packets in the ring buffer.</div>
<div class="line">Default: 4096</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>io-burst</strong></p></td>
<td><div class="line-block">
<div class="line">IO burst (packets).</div>
<div class="line">Default: 256 Range: 1 to 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>qdisc-bypass</strong></p></td>
<td><div class="line-block">
<div class="line">Bypass the kernels qdisc layer.</div>
<div class="line">Its currently not recommended to change the default (issue #206)!</div>
<div class="line">Default: true</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>tx-interval</strong></p></td>
<td><div class="line-block">
<div class="line">TX polling interval in milliseconds.</div>
<div class="line">Default: 0.1 Range: 0.0001 to 1000</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>rx-interval</strong></p></td>
<td><div class="line-block">
<div class="line">RX polling interval in milliseconds.</div>
<div class="line">Default: 0.1 Range: 0.0001 to 1000</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>tx-threads</strong></p></td>
<td><div class="line-block">
<div class="line">Number of TX threads per interface link.</div>
<div class="line">Default: 0 (main thread)</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>rx-threads</strong></p></td>
<td><div class="line-block">
<div class="line">Number of RX threads per interface link.</div>
<div class="line">Default: 0 (main thread)</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>capture-include-streams</strong></p></td>
<td><div class="line-block">
<div class="line">Include traffic streams in the capture.</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>mac-modifier</strong></p></td>
<td><div class="line-block">
<div class="line">Third byte of access session MAC address (0-255). This option</div>
<div class="line">allows to run multiple BNG Blaster instances with disjoint session</div>
<div class="line">MAC addresses.</div>
<div class="line">Default: 0</div>
</div>
</td>
</tr>
</tbody>
</table>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;tx-interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">0.1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;rx-interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">0.1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;io-slots&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">4096</span><span class="p">,</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<section id="links">
<h3>Links<a class="headerlink" href="#links" title="Link to this heading"></a></h3>
<p id="id2">The link configuration is optional and allows to define per interface link configurations. An explicit
link configuration with the global default settings is automatically generated if no link is defined
for interface links referenced by interface functions.</p>
<p>The link configuration is optional and allows to define per interface link configurations. An explicit
link configuration with the global default settings is automatically generated if no link is defined
for interface links referenced by interface functions.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;links&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>interface</strong></p></td>
<td><div class="line-block">
<div class="line">Interface name (e.g. eth0, …).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>description</strong></p></td>
<td><div class="line-block">
<div class="line">Interface description.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>mac</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the MAC address.</div>
<div class="line">Default: <cite>physical interface MAC address</cite></div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>lag-interface</strong></p></td>
<td><div class="line-block">
<div class="line">Add interface/link to LAG group.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>lacp-priority</strong></p></td>
<td><div class="line-block">
<div class="line">LACP interface priority.</div>
<div class="line">Default: 32768</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>tx-cpuset</strong></p></td>
<td><div class="line-block">
<div class="line">Optionally pin TX threads to CPU cores (cpuset). This is required</div>
<div class="line">for DPDK only.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>rx-cpuset</strong></p></td>
<td><div class="line-block">
<div class="line">Optionally pin RX threads to CPU cores (cpuset). This is required</div>
<div class="line">for DPDK only.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>io-mode</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the IO mode.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>io-burst</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the IO burst.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>io-slots</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the IO slots (ring size).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>io-slots-tx</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the TX IO slots (ring size).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>io-slots-rx</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the RX IO slots (ring size).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>qdisc-bypass</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the kernels qdisc layer configuration.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>tx-interval</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the TX polling interval in milliseconds.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>rx-interval</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the RX polling interval in milliseconds.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>tx-threads</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the number of TX threads per interface link.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>rx-threads</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the number of RX threads per interface link.</div>
</div>
</td>
</tr>
</tbody>
</table>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;tx-interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">0.1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;rx-interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">0.1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;io-slots&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">4096</span><span class="p">,</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
<section id="link-aggregation-lag">
<span id="lag-interface"></span><h3>Link Aggregation (LAG)<a class="headerlink" href="#link-aggregation-lag" title="Link to this heading"></a></h3>
<p>The BNG Blaster supports link aggregation (LAG) with and without
LACP. The created LAG interface can be used as the parent interface link
for all kinds of interface functions.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;lag&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>interface</strong></p></td>
<td><div class="line-block">
<div class="line">LAG interface name (e.g. lag0, …).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>lacp</strong></p></td>
<td><div class="line-block">
<div class="line">Enable LACP.</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>lacp-timeout-short</strong></p></td>
<td><div class="line-block">
<div class="line">Enable LACP short timeout (3x1s)</div>
<div class="line">Default: false (3x30s)</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>lacp-system-priority</strong></p></td>
<td><div class="line-block">
<div class="line">LACP system priority.</div>
<div class="line">Default: 32768</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>lacp-system-id</strong></p></td>
<td><div class="line-block">
<div class="line">LACP system identifier</div>
<div class="line">Default: 02:ff:ff:ff:ff:00</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>lacp-min-active-links</strong></p></td>
<td><div class="line-block">
<div class="line">Define the minimum number of active links.</div>
<div class="line">Default: 0</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>lacp-max-active-links</strong></p></td>
<td><div class="line-block">
<div class="line">Limit the maximum number of active links.</div>
<div class="line">Default: 255</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>mac</strong></p></td>
<td><div class="line-block">
<div class="line">LAG interface MAC address.</div>
<div class="line">Default: 02:ff:ff:ff:ff:&lt;interface-id&gt;</div>
</div>
</td>
</tr>
</tbody>
</table>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Multithreaded TX is not supported for LAG member interfaces!</p>
</div>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;lag&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;lag1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lacp&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lacp-timeout-short&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">],</span>
<span class="w"> </span><span class="nt">&quot;links&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lag-interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;lag1&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lag-interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;lag1&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">],</span>
<span class="w"> </span><span class="nt">&quot;network&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;lag1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.100.0.2/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.100.0.1&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
</section>
<section id="interface-functions">
<span id="io-modes"></span><h2>Interface Functions<a class="headerlink" href="#interface-functions" title="Link to this heading"></a></h2>
<p>The BNG Blaster supports three types of interface functions,
<code class="docutils literal notranslate"><span class="pre">network</span></code>, <code class="docutils literal notranslate"><span class="pre">access</span></code>, and <code class="docutils literal notranslate"><span class="pre">a10nsp</span></code>.</p>
<img alt="BNG Blaster Interfaces" src="_images/bbl_interfaces.png" />
<section id="network-interfaces">
<span id="network-interface"></span><h3>Network Interfaces<a class="headerlink" href="#network-interfaces" title="Link to this heading"></a></h3>
<p>The network interfaces are used to emulate the core-facing side of the internet
with optional routing protocols and traffic.</p>
<p>Those interfaces can communicate with the configured gateway only.
Meaning that all traffic sent from the network interface will be sent
to the learned MAC address of the configured gateway.</p>
<p>The network interface behaves like a router. It accepts all traffic sent
to its own MAC address. This allows sending and receiving traffic for prefixes
advertised via routing protocols or configured via static routes on the
connected device under test.</p>
<p>The network interfaces are also used to inject downstream multicast test traffic
for IPTV tests. It is also possible to send RAW traffic streams between network
interfaces without any access interface defined for non-BNG testing.</p>
<p>The BNG Blaster responds to all ICMP echo requests sent to its own MAC address.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;network&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>interface</strong></p></td>
<td><div class="line-block">
<div class="line">Parent interface/link name (e.g. eth0, …).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>address</strong></p></td>
<td><div class="line-block">
<div class="line">Local IPv4 address (e.g. 10.0.0.1/24).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>gateway</strong></p></td>
<td><div class="line-block">
<div class="line">Default gateway IPv4 address.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>address-ipv6</strong></p></td>
<td><div class="line-block">
<div class="line">Local IPv6 address (e.g. fc66::1/64).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>gateway-ipv6</strong></p></td>
<td><div class="line-block">
<div class="line">Default gateway IPv6 address.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>ipv6-router-advertisement</strong></p></td>
<td><div class="line-block">
<div class="line">Send IPv6 router advertisements (ICMPv6 RA).</div>
<div class="line">Default: true</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>mtu</strong></p></td>
<td><div class="line-block">
<div class="line">MTU size.</div>
<div class="line">Default: 1500 Range: 64 - 9000</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>vlan</strong></p></td>
<td><div class="line-block">
<div class="line">Network interface VLAN.</div>
<div class="line">Default: 0 (untagged)</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>gateway-mac</strong></p></td>
<td><div class="line-block">
<div class="line">Optional set default gateway MAC address manually. Per default</div>
<div class="line">this MAC address is resolved via ARP/ND.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>gateway-resolve-wait</strong></p></td>
<td><div class="line-block">
<div class="line">Sessions and protocols will not start until gateways are resolved.</div>
<div class="line">Default: true</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>isis-instance-id</strong></p></td>
<td><div class="line-block">
<div class="line">Assign the interface to an ISIS instance.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>isis-level</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS interface level.</div>
<div class="line">Default: 3 Range: 1 - 3</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>isis-p2p</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS P2P interface.</div>
<div class="line">Default: true</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>isis-l1-metric</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS level 1 interface metric.</div>
<div class="line">Default: 10</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>isis-l2-metric</strong></p></td>
<td><div class="line-block">
<div class="line">ISIS level 2 interface metric.</div>
<div class="line">Default: 10</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>ospfv2-instance-id</strong></p></td>
<td><div class="line-block">
<div class="line">Assign the interface to an OSPFv2 instance.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>ospfv2-type</strong></p></td>
<td><div class="line-block">
<div class="line">OSPFv2 interface type (p2p or broadcast).</div>
<div class="line">Default: broadcast</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>ospfv2-metric</strong></p></td>
<td><div class="line-block">
<div class="line">OSPFv2 interface metric.</div>
<div class="line">Default: 10</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>ospfv3-instance-id</strong></p></td>
<td><div class="line-block">
<div class="line">Assign the interface to an OSPFv3 instance.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>ospfv3-type</strong></p></td>
<td><div class="line-block">
<div class="line">OSPFv3 interface type (p2p or broadcast).</div>
<div class="line">Default: broadcast</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>ospfv3-metric</strong></p></td>
<td><div class="line-block">
<div class="line-block">
<div class="line">OSPFv3 interface metric.</div>
</div>
<div class="line">Default: 10</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>ldp-instance-id</strong></p></td>
<td><div class="line-block">
<div class="line">Assign the interface to a LDP instance.</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>The BNG Blaster supports multiple network interfaces
as shown in the example below.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;tx-interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;rx-interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;io-slots&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">4096</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;network&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.0.1/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.0.2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address-ipv6&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;fc66:1337:7331::1/64&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway-ipv6&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;fc66:1337:7331::2&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth3&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.1.1/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.1.2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address-ipv6&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;fc66:1337:7331:1::1/64&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway-ipv6&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;fc66:1337:7331:1::2&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">],</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Using multiple network interfaces requires selecting which network interface
to be used. If not explicitly configured, one of the interfaces is selected
automatically. Therefore, the configuration option <code class="docutils literal notranslate"><span class="pre">network-interface</span></code>
is supported in different sections.</p>
<p>It is also supported to have multiple VLAN-tagged network interfaces on the
same interface link.</p>
<p>VLAN-tagged network interfaces must be referenced by <code class="docutils literal notranslate"><span class="pre">&lt;interface&gt;:&lt;vlan&gt;</span></code>
in the configuration to distinguish between them.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;network&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.100.0.2/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.100.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;vlan&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.200.0.2/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.200.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;vlan&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;streams&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;S100&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ipv4&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;pps&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;network-interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1:100&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;destination-ipv4-address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.200.0.2&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;S200&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ipv4&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;pps&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;network-interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1:200&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;destination-ipv4-address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.100.0.2&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
<section id="access-interfaces">
<span id="access-interface"></span><h3>Access Interfaces<a class="headerlink" href="#access-interfaces" title="Link to this heading"></a></h3>
<p>The access interfaces are used to emulate PPPoE and IPoE clients.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;access&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>interface</strong></p></td>
<td><div class="line-block">
<div class="line">Parent interface/link name (e.g. eth0, …).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>network-interface</strong></p></td>
<td><div class="line-block">
<div class="line">Select the corresponding network interface for those sessions.</div>
<div class="line">Default: <cite>first network interface from configuration</cite></div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>a10nsp-interface</strong></p></td>
<td><div class="line-block">
<div class="line">Select the corresponding A10NSP interface for those sessions.</div>
<div class="line">Default: <cite>first a10nsp interface from configuration</cite></div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>type</strong></p></td>
<td><div class="line-block">
<div class="line">Set access type (<cite>pppoe</cite> or <cite>ipoe</cite>).</div>
<div class="line">Default: pppoe</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>vlan-mode</strong></p></td>
<td><div class="line-block">
<div class="line">Set VLAN mode to <cite>1:1</cite> or <cite>N:1</cite>.</div>
<div class="line">Default: 1:1</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>qinq</strong></p></td>
<td><div class="line-block">
<div class="line">Set outer VLAN ethertype to QinQ (0x88a8).</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>outer-vlan-min</strong></p></td>
<td><div class="line-block">
<div class="line">Outer VLAN minimum value.</div>
<div class="line">Default: 0 (untagged)</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>outer-vlan-max</strong></p></td>
<td><div class="line-block">
<div class="line">Outer VLAN maximum value.</div>
<div class="line">Default: 0 (untagged)</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>outer-vlan-step</strong></p></td>
<td><div class="line-block">
<div class="line">Outer VLAN step (iterator).</div>
<div class="line">Default: 1</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>outer-vlan</strong></p></td>
<td><div class="line-block">
<div class="line">Set outer-vlan-min/max equally.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>inner-vlan-min</strong></p></td>
<td><div class="line-block">
<div class="line">Inner VLAN minimum value.</div>
<div class="line">Default: 0 (untagged)</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>inner-vlan-max</strong></p></td>
<td><div class="line-block">
<div class="line">Inner VLAN maximum value.</div>
<div class="line">Default: 0 (untagged)</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>inner-vlan-step</strong></p></td>
<td><div class="line-block">
<div class="line">Inner VLAN step (iterator).</div>
<div class="line">Default: 1</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>inner-vlan</strong></p></td>
<td><div class="line-block">
<div class="line">Set inner-vlan-min/max equally.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>third-vlan</strong></p></td>
<td><div class="line-block">
<div class="line">Add a static third VLAN (most inner VLAN).</div>
<div class="line">Default: 0 (untagged)</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>ipv4</strong></p></td>
<td><div class="line-block">
<div class="line">Set false to deactivate IPv4.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>ipv6</strong></p></td>
<td><div class="line-block">
<div class="line">Set false to deactivate IPv6.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>address</strong></p></td>
<td><div class="line-block">
<div class="line">Static IPv4 base address (IPoE only).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>address-iter</strong></p></td>
<td><div class="line-block">
<div class="line">Static IPv4 base address iterator (IPoE only).</div>
<div class="line">Default: 0.0.0.0</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>gateway</strong></p></td>
<td><div class="line-block">
<div class="line">Static IPv4 gateway address (IPoE only).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>gateway-iter</strong></p></td>
<td><div class="line-block">
<div class="line">Static IPv4 gateway address iterator (IPoE only).</div>
<div class="line">Default: 0.0.0.0</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>cfm-cc</strong></p></td>
<td><div class="line-block">
<div class="line">Enable EOAM CFM CC (IPoE only).</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>cfm-level</strong></p></td>
<td><div class="line-block">
<div class="line">Set EOAM CFM maintenance domain level.</div>
<div class="line">Default: 0 Range: 0 - 7</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>cfm-ma-id</strong></p></td>
<td><div class="line-block">
<div class="line">Set EOAM CFM maintenance association identifier.</div>
<div class="line">Default: 0 Range: 0 - 65535</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>cfm-ma-name</strong></p></td>
<td><div class="line-block">
<div class="line">Set EOAM CFM maintenance association short name (string).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>username</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the username from the authentication section.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>password</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the password from the authentication section.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>authentication-protocol</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the username from the authentication section.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>agent-circuit-id</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the agent-circuit-id from the access-line section.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>agent-remote-id</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the agent-remote-id from the access-line section.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>access-aggregation-circuit-id</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the access-aggregation-circuit-id from the</div>
<div class="line">access-line section.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>rate-up</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the rate-up from the access-line section.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>rate-down</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the rate-down from the access-line section.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>dsl-type</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite the dsl-type from the access-line section.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>ppp-mru</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite PPP MRU (PPPoE only).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>ipcp</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite PPP IPCP enable option (PPPoE only).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>ip6cp</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite PPP IP6CP enable option (PPPoE only).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>dhcp</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite DHCP enable option.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>dhcpv6</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite DHCPv6 enable option.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>dhcpv6-ldra</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite DHCPv6 LDRA option.</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>igmp-autostart</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite IGMP autostart option.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>igmp-version</strong></p></td>
<td><div class="line-block">
<div class="line">Overwrite IGMP protocol version (1, 2, or 3).</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>session-group-id</strong></p></td>
<td><div class="line-block">
<div class="line">Set session group identifier.</div>
<div class="line">Default: 0 Range: 0 - 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>stream-group-id</strong></p></td>
<td><div class="line-block">
<div class="line">Set stream group identifier.</div>
<div class="line">Default: 0 Range: 0 - 65535</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>access-line-profile-id</strong></p></td>
<td><div class="line-block">
<div class="line">Set access-line-profile identifier.</div>
<div class="line">Default: 0 Range: 0 - 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>i1-start</strong></p></td>
<td><div class="line-block">
<div class="line">Iterator <strong>{i1}</strong> start value.</div>
<div class="line">Default: 1 Range: 0 - 4294967295</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>i1-step</strong></p></td>
<td><div class="line-block">
<div class="line">Iterator <strong>{i1}</strong> step per session.</div>
<div class="line">Default: 1 Range: 0 - 4294967295</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>i2-start</strong></p></td>
<td><div class="line-block">
<div class="line">Iterator <strong>{i2}</strong> start value.</div>
<div class="line">Default: 1 Range: 0 - 4294967295</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>i2-step</strong></p></td>
<td><div class="line-block">
<div class="line">Iterator <strong>{i2}</strong> step per session.</div>
<div class="line">Default: 1 Range: 0 - 4294967295</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>monkey</strong></p></td>
<td><div class="line-block">
<div class="line">Enable monkey testing.</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>For all modes, it is possible to configure between zero and three VLAN
tags on the access interface. The VLAN identifier <code class="docutils literal notranslate"><span class="pre">0</span></code> disables the
corresponding VLAN header.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ethernet][outer-vlan][inner-vlan][third-vlan][pppoe]...
</pre></div>
</div>
<section id="untagged">
<h4>Untagged<a class="headerlink" href="#untagged" title="Link to this heading"></a></h4>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;access&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
<section id="single-tagged">
<h4>Single Tagged<a class="headerlink" href="#single-tagged" title="Link to this heading"></a></h4>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;access&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">4049</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
<section id="double-tagged">
<h4>Double Tagged<a class="headerlink" href="#double-tagged" title="Link to this heading"></a></h4>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;access&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">4049</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
<section id="triple-tagged">
<h4>Triple Tagged<a class="headerlink" href="#triple-tagged" title="Link to this heading"></a></h4>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;access&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">128</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">4000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;third-vlan&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>The BNG Blaster supports also multiple access interfaces
or VLAN ranges as shown in the example below.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;access&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;pppoe&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;session-group-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;username&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;pta@rtbrick.com&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1999</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;pppoe&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;session-group-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;username&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;l2tp@rtbrick.com&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2999</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth3&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;pppoe&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;session-group-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;username&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test@rtbrick.com&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">128</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">4000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth4&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ipoe&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;session-group-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">9</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;200.0.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address-iter&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0.0.0.4&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;200.0.0.2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway-iter&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0.0.0.4&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
<p>The configuration attributes for username, password, agent-remote-id, agent-circuit-id,
and cfm-ma-name support variable substitution. The variable <code class="docutils literal notranslate"><span class="pre">{session-global}</span></code> will
be replaced with the actual session-id starting from 1 and incremented for every
new session. The variable <code class="docutils literal notranslate"><span class="pre">{session}</span></code> is incremented per-interface section. The
variables <code class="docutils literal notranslate"><span class="pre">{outer-vlan}</span></code> and <code class="docutils literal notranslate"><span class="pre">{inner-vlan}</span></code> will be replaced with the corresponding
VLAN identifier or 0 if not defined. The two variables <code class="docutils literal notranslate"><span class="pre">{i1}</span></code> and <code class="docutils literal notranslate"><span class="pre">{i2}</span></code> are
configurable per-interface sections with user-defined start values and steps.</p>
<p>The BNG Blaster supports the VLAN mode <code class="docutils literal notranslate"><span class="pre">1:1</span></code> (default) and <code class="docutils literal notranslate"><span class="pre">N:1</span></code>. The first one
assigns a dedicated VLAN per subscriber. The VLAN mode <code class="docutils literal notranslate"><span class="pre">N:1</span></code> assigns one VLAN to N
subscribers and therefore only one VLAN combination is supported per access interface
section using this mode.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;access&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;pppoe&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;vlan-mode&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;N:1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;username&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test@rtbrick.com&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;pppoe&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;vlan-mode&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;N:1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;username&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test@rtbrick.com&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</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>
<p>One or more access interface blocks can be grouped using the <code class="docutils literal notranslate"><span class="pre">session-group-id</span></code>,
which allows applying some commands like <cite>session-start</cite>, <cite>session-stop</cite> or
<cite>session-restart</cite> to all sessions belonging to the same group. The example
below shows how to assign all even VLAN identifiers to session group 1 and
all odd VLAN identifiers to session group 2.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;access&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;pppoe&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;session-group-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;username&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;even@rtbrick.com&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1998</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-step&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;pppoe&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;session-group-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;username&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;odd@rtbrick.com&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-min&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1001</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-max&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1999</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;outer-vlan-step&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;inner-vlan&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</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 supports access and network interface functions on the same
interface link if both are tagged with disjoint VLAN ranges.</p>
</section>
</section>
<section id="a10nsp-interfaces">
<span id="a10nsp-interface"></span><h3>A10NSP Interfaces<a class="headerlink" href="#a10nsp-interfaces" title="Link to this heading"></a></h3>
<p>The A10NSP interface function is required for <a class="reference internal" href="access/l2bsa.html#l2bsa"><span class="std std-ref">L2BSA</span></a> tests and
emulates a layer two provider interface. The term A10 refers to the end-to-end
ADSL network reference model from TR-025.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;a10nsp&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>interface</strong></p></td>
<td><div class="line-block">
<div class="line">Parent interface/link name (e.g. eth0, …).</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>qinq</strong></p></td>
<td><div class="line-block">
<div class="line">Set outer VLAN ethertype to QinQ (0x88a8).</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>mac</strong></p></td>
<td><div class="line-block">
<div class="line">Optional set gateway interface address manually.</div>
<div class="line">Default: <cite>parent interface/link MAC address</cite></div>
</div>
</td>
</tr>
</tbody>
</table>
<p>The BNG Blaster supports multiple A10NSP interfaces
as shown in the example below.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;tx-interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;rx-interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;a10nsp&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth4&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;qinq&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;mac&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;02:00:00:ff:ff:01&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth5&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;qinq&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;mac&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;02:00:00:ff:ff:02&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">],</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The A10NSP interface function cant reside on the same link with
with network or access interface functions!</p>
</div>
</section>
</section>
<section id="i-o-modes">
<h2>I/O Modes<a class="headerlink" href="#i-o-modes" title="Link to this heading"></a></h2>
<p>The BNG Blaster supports many configurable I/O modes listed with <code class="docutils literal notranslate"><span class="pre">bngblaster</span> <span class="pre">-v</span></code>.
In the default mode <code class="docutils literal notranslate"><span class="pre">packet_mmap_raw</span></code>, all packets are received in a Packet MMAP
ring buffer and sent through RAW packet sockets.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ bngblaster -v
Version: 0.8.1
Compiler: GNU (7.5.0)
IO Modes: packet_mmap_raw (default), packet_mmap, raw
</pre></div>
</div>
<section id="packet-mmap">
<h3>Packet MMAP<a class="headerlink" href="#packet-mmap" title="Link to this heading"></a></h3>
<p><a class="reference external" href="https://www.kernel.org/doc/html/latest/networking/packet_mmap.html">Packet MMAP</a>
is a so-called PACKET_RX_RING/PACKET_TX_RING abstraction where a user-space
program gets a fast lane into reading and writing to kernel interfaces using a shared
ring buffer. The shared ring buffer is a memory-mapped window shared between the kernel
and the user space. This low overhead abstraction allows us to transmit and receive
traffic without doing expensive system calls. Sending and transmitting traffic via
Packet MMAP is as easy as copying a packet into a buffer and setting a flag.</p>
<p>Using I/O mode <code class="docutils literal notranslate"><span class="pre">packet_mmap_raw</span></code> or <code class="docutils literal notranslate"><span class="pre">packet_mmap</span></code> limits the maximum
stream packet length to 3936 bytes on most systems. The actual limit is dynamically
calcualted based on pagesize (typically 4096) minus overhead.</p>
</section>
<section id="raw">
<h3>RAW<a class="headerlink" href="#raw" title="Link to this heading"></a></h3>
<p><a class="reference external" href="https://man7.org/linux/man-pages/man7/packet.7.html">RAW Packet Sockets</a>.
are used to receive or send raw packets at the device driver (OSI layer 2) level.</p>
<p>The I/O mode <code class="docutils literal notranslate"><span class="pre">raw</span></code> allows steam packet lengths of up to 9000 bytes (layer 3).</p>
</section>
<section id="dpdk">
<h3>DPDK<a class="headerlink" href="#dpdk" title="Link to this heading"></a></h3>
<p><a class="reference external" href="https://www.dpdk.org/">DPDK</a> support should be considered as experimental.
This I/O mode is detailed explained in the <a class="reference internal" href="performance.html#dpdk-usage"><span class="std std-ref">DPDK</span></a> section of the
<a class="reference internal" href="performance.html#performance"><span class="std std-ref">performance guide</span></a>.</p>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="quickstart.html" class="btn btn-neutral float-left" title="Quickstart Guide" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="access/index.html" class="btn btn-neutral float-right" title="Access Protocols" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2020-2024, RtBrick, Inc..</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>