mirror of
https://github.com/rtbrick/bngblaster.git
synced 2024-05-06 15:54:57 +00:00
854 lines
70 KiB
HTML
854 lines
70 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>Traffic Streams — BNG Blaster 0.8 documentation</title>
|
||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/tabs.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||
|
||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||
<script src="_static/jquery.js"></script>
|
||
<script src="_static/underscore.js"></script>
|
||
<script src="_static/doctools.js"></script>
|
||
<script src="_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="HTTP Emulation" href="http.html" />
|
||
<link rel="prev" title="LSPGEN" href="routing/lspgen.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
<a href="index.html" class="icon icon-home"> BNG Blaster
|
||
<img src="_static/rtbrick_logo.png" class="logo" alt="Logo"/>
|
||
</a>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart Guide</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="interfaces.html">Interfaces</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="access/index.html">Access Protocols</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="routing/index.html">Routing Protocols</a></li>
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Traffic Streams</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#configuration">Configuration</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#stream-configuration-file">Stream Configuration File</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#understanding-flows">Understanding Flows</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#stream-commands">Stream Commands</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#raw-streams">RAW Streams</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#tcp-raw-streams">TCP RAW Streams</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#start-stop-traffic">Start/Stop Traffic</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#bng-blaster-traffic">BNG Blaster Traffic</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#unicast-session-traffic">Unicast Session Traffic</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#multicast-traffic">Multicast Traffic</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#bng-blaster-magic-sequence">BNG Blaster Magic Sequence</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#flow-identifier">Flow Identifier</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#flow-sequence-number">Flow Sequence Number</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#nanosecond-send-timestamps">Nanosecond Send Timestamps</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</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"></a> »</li>
|
||
<li>Traffic Streams</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="_sources/streams.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="traffic-streams">
|
||
<span id="streams"></span><h1>Traffic Streams<a class="headerlink" href="#traffic-streams" title="Permalink to this headline"></a></h1>
|
||
<p>Traffic streams allow doing various forwarding verification
|
||
and QoS tests using BNG Blaster.</p>
|
||
<img alt="Interactive Streams" src="_images/bbl_streams.png" />
|
||
<p>Traffic streams are divided into bounded and RAW streams.
|
||
The first one is bound to an access configuration and derives
|
||
addresses dynamically from the sessions.</p>
|
||
<p>RAW streams are supported from <a class="reference internal" href="interfaces.html#network-interface"><span class="std std-ref">network interfaces</span></a> only.</p>
|
||
<section id="configuration">
|
||
<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline"></a></h2>
|
||
<p>Following a simple PPPoE example with streams.</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="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="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="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">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"outer-vlan-min"</span><span class="p">:</span><span class="w"> </span><span class="mi">1001</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">2000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"inner-vlan-min"</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">"inner-vlan-max"</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">"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">"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="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"outer-vlan-min"</span><span class="p">:</span><span class="w"> </span><span class="mi">2001</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">"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">"stream-group-id"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</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">"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">"BestEffort"</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">"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">"pps"</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</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">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Voice"</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">"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">"vlan-priority"</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">"network-ipv4-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.10"</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">100</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">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"BestEffort"</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">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">"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">"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="p">]</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">"streams"</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>
|
||
</pre></div>
|
||
</div>
|
||
<table class="docutils align-default">
|
||
<colgroup>
|
||
<col style="width: 33%" />
|
||
<col style="width: 67%" />
|
||
</colgroup>
|
||
<tbody>
|
||
<tr class="row-odd"><td><p>Attribute</p></td>
|
||
<td><p>Description</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>name</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Mandatory stream name.</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">Stream group identifier.</div>
|
||
<div class="line">Default: 0 (raw)</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>type</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Mandatory stream type (<cite>ipv4</cite>, <cite>ipv6</cite>, or <cite>ipv6pd</cite>).</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>direction</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Stream direction (<cite>upstream</cite>, <cite>downstream</cite>, or <cite>both</cite>).</div>
|
||
<div class="line">Default: <cite>both</cite></div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>autostart</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Enable stream autostart.</div>
|
||
<div class="line">Default: true</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>source-port</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Overwrite the default source port.</div>
|
||
<div class="line">Default: 65056 Range: 0 - 65535</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>destination-port</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Overwrite the default destination port.</div>
|
||
<div class="line">Default: 65056 Range: 0 - 65535</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>ipv4-df</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Set IPv4 DF bit.</div>
|
||
<div class="line">Default: true</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>priority</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">IPv4 TOS / IPv6 TC.</div>
|
||
<div class="line">For L2TP downstream traffic, the IPv4 TOS is applied</div>
|
||
<div class="line">to the outer IPv4 and inner IPv4 header.</div>
|
||
<div class="line">Default: 0 Range: 0 - 255</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>vlan-priority</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">VLAN priority.</div>
|
||
<div class="line">Default: 0 Range: 0 - 7</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>length</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Layer 3 (IP header + payload) traffic length.</div>
|
||
<div class="line">Default: 128 Range: 76 - 9000</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>ttl</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">TTL.</div>
|
||
<div class="line">Default: 64 Range: 0 - 255</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>pps</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Stream traffic rate in packets per second.</div>
|
||
<div class="line">This value supports also float numbers like 0.1 or 2.5.</div>
|
||
<div class="line">In example 0.1 means one packet every 10 seconds.</div>
|
||
<div class="line">Default: 1.0</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>bps</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Stream traffic rate in bits per second (layer 3).</div>
|
||
<div class="line">PPS has priority over bps where the second is only a helper</div>
|
||
<div class="line">to calculate the actual PPS based on given bps and length.</div>
|
||
<div class="line">The resulting rate in bps is the layer 3 rate because length</div>
|
||
<div class="line">is also the layer 3 length (IP header + payload).</div>
|
||
<div class="line">It is also supported to put the capital letters K (Kilo),</div>
|
||
<div class="line">M (Mega) or G (Giga) in front of bps for better readability.</div>
|
||
<div class="line">For example, <code class="docutils literal notranslate"><span class="pre">"Gbps":</span> <span class="pre">1</span></code></div>
|
||
<div class="line">which is equal to <code class="docutils literal notranslate"><span class="pre">"bps":</span> <span class="pre">1000000000</span></code>.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>setup-interval</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Set optional setup interval in seconds. If set, sent max 1</div>
|
||
<div class="line">packet per setup interval until stream becomes verified.</div>
|
||
<div class="line">After setup is done, the actual rate will be applied.</div>
|
||
<div class="line">For bidirectional streams (direction both), this requires both</div>
|
||
<div class="line">directions to be verified.</div>
|
||
<div class="line">Default: 0 (disabled) Range: 0 - 900</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>a10nsp-interface</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Select the corresponding A10NSP interface for this stream.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>network-interface</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Select the corresponding network interface for this stream.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>network-ipv4-address</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Overwrite network interface IPv4 address.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>network-ipv6-address</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Overwrite network interface IPv6 address.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>destination-ipv4-address</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Overwrite the IPv4 destination address.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>destination-ipv6-address</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Overwrite the IPv6 destination address.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>access-ipv4-source-address</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Overwrite the access IPv4 source address (client).</div>
|
||
<div class="line">This option can be used to test the BNG RPF functionality</div>
|
||
<div class="line">with traffic sent from source addresses different than those</div>
|
||
<div class="line">assigned to the client.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>access-ipv6-source-address</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Overwrite the access IPv6 source address (client).</div>
|
||
<div class="line">This option can be used to test the BNG RPF functionality</div>
|
||
<div class="line">with traffic sent from source addresses different than those</div>
|
||
<div class="line">assigned to the client.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>max-packets</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Send a burst of N packets and stop.</div>
|
||
<div class="line">Default: 0 (infinity)</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>start-delay</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Wait N seconds after the session is established</div>
|
||
<div class="line">before starting the traffic stream.</div>
|
||
<div class="line">Default: 0</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>tx-label1</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">MPLS send (TX) label (outer label).</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>tx-label1-exp</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">EXP bits of the first label (outer label).</div>
|
||
<div class="line">Default: 0</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>tx-label1-ttl</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">TTL of the first label (outer label).</div>
|
||
<div class="line">Default: 255</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>tx-label2</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">MPLS send (TX) label (inner label).</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>tx-label2-exp</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">EXP bits of the second label (inner label).</div>
|
||
<div class="line">Default: 0</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>tx-label2-ttl</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">TTL of the second label (inner label).</div>
|
||
<div class="line">Default: 255</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>rx-label1</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Expected receive MPLS label (outer label).</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>rx-label2</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Expected receive MPLS label (inner label).</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>rx-interface</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Expected receive interface.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>ldp-ipv4-lookup-address</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Dynamically resolve outer label.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>ldp-ipv6-lookup-address</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Dynamically resolve outer label.</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>nat</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Enable NAT support.</div>
|
||
<div class="line">Default: false</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>raw-tcp</strong></p></td>
|
||
<td><div class="line-block">
|
||
<div class="line">Send RAW TCP traffic (UDP-like traffic with TCP header).</div>
|
||
<div class="line">Default: false</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
<section id="stream-configuration-file">
|
||
<h2>Stream Configuration File<a class="headerlink" href="#stream-configuration-file" title="Permalink to this headline"></a></h2>
|
||
<p>The command line argument <code class="docutils literal notranslate"><span class="pre">-T</span> <span class="pre"><filename></span></code> allows the include
|
||
of streams defined in a separate file. The format is equal to
|
||
streams defined in the actual configuration file. Such stream
|
||
configuration files could be generated by scripts and
|
||
easily merged with the base configuration.</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">"streams"</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>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="understanding-flows">
|
||
<h2>Understanding Flows<a class="headerlink" href="#understanding-flows" title="Permalink to this headline"></a></h2>
|
||
<p>A flow represents a particular instance of a traffic stream where a stream
|
||
can consist of one or more flows, depending on its configuration
|
||
and the number of sessions it is associated with. For example:</p>
|
||
<ul class="simple">
|
||
<li><p>A unidirectional stream is represented by a single flow that sends or receives traffic from one end to another</p></li>
|
||
<li><p>A bidirectional stream is represented by two flows that send and receive traffic in opposite directions</p></li>
|
||
<li><p>A stream that is bound by sessions can be instantiated multiple times for each session and direction</p></li>
|
||
</ul>
|
||
<p>Each flow can be identified by its flow-id, which is a unique number automatically
|
||
assigned by the BNG Blaster.</p>
|
||
<img alt="BNG Blaster Traffic Flows" src="_images/bbl_flows.png" />
|
||
<p>You can use the <code class="docutils literal notranslate"><span class="pre">stream-info</span> <span class="pre">flow-id</span> <span class="pre"><id></span></code> command to get detailed information about a specific flow,
|
||
such as its configuration, statistics, and state. You can also use the <code class="docutils literal notranslate"><span class="pre">stream-summary</span></code> command to get a
|
||
brief overview of all the flows that are currently active or configured.</p>
|
||
</section>
|
||
<section id="stream-commands">
|
||
<h2>Stream Commands<a class="headerlink" href="#stream-commands" title="Permalink to this headline"></a></h2>
|
||
<p>The BNG Blaster provide multiple commands to control and check traffic streams.
|
||
The command <code class="docutils literal notranslate"><span class="pre">stream-summary</span></code> returns a list of all flows with terse informations.
|
||
This list can be optionally filtered using different arguments like session-group-id,
|
||
name, interface and direction. This summary output can be used to identify the actual
|
||
flow-id of a particular stream to query detailed informations using
|
||
the <code class="docutils literal notranslate"><span class="pre">stream-info</span> <span class="pre">flow-id</span> <span class="pre"><id></span></code> command.</p>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">session-streams</span></code> command returns detailed stream statistics per session.</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">sudo</span> <span class="pre">bngblaster-cli</span> <span class="pre">run.sock</span> <span class="pre">session-streams</span> <span class="pre">session-id</span> <span class="pre">1</span></code></p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="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-streams"</span><span class="p">:</span><span class="w"> </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">"rx-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">59670</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">54610</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-accounting-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">59655</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-accounting-packets"</span><span class="p">:</span><span class="w"> </span><span class="mi">54594</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-pps"</span><span class="p">:</span><span class="w"> </span><span class="mi">1100</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-pps"</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">"rx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">9028800</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">8240000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">9.0288</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">8.24</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">"BestEffort"</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">"upstream"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"flow-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">"rx-first-seq"</span><span class="p">:</span><span class="w"> </span><span class="mi">362</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-last-seq"</span><span class="p">:</span><span class="w"> </span><span class="mi">54593</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-tos-tc"</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">"rx-outer-vlan-pbit"</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">"rx-inner-vlan-pbit"</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">"rx-len"</span><span class="p">:</span><span class="w"> </span><span class="mi">1014</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-len"</span><span class="p">:</span><span class="w"> </span><span class="mi">1030</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">54232</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">54594</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-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">"rx-delay-us-min"</span><span class="p">:</span><span class="w"> </span><span class="mi">37</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-delay-us-max"</span><span class="p">:</span><span class="w"> </span><span class="mi">98595</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-pps"</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">"tx-pps"</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">"tx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">8240000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">8112000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-bps-l3"</span><span class="p">:</span><span class="w"> </span><span class="mi">8000000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">8.24</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">8.112</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l3"</span><span class="p">:</span><span class="w"> </span><span class="mf">8.0</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">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"BestEffort"</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">"flow-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">"rx-first-seq"</span><span class="p">:</span><span class="w"> </span><span class="mi">362</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-last-seq"</span><span class="p">:</span><span class="w"> </span><span class="mi">54593</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-tos-tc"</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">"rx-outer-vlan-pbit"</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">"rx-inner-vlan-pbit"</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">"rx-len"</span><span class="p">:</span><span class="w"> </span><span class="mi">1026</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-len"</span><span class="p">:</span><span class="w"> </span><span class="mi">1014</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">54232</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">54594</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-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">"rx-delay-us-min"</span><span class="p">:</span><span class="w"> </span><span class="mi">43</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-delay-us-max"</span><span class="p">:</span><span class="w"> </span><span class="mi">98903</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-pps"</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">"tx-pps"</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">"tx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">8112000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">8208000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-bps-l3"</span><span class="p">:</span><span class="w"> </span><span class="mi">8000000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">8.112</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">8.208</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l3"</span><span class="p">:</span><span class="w"> </span><span class="mf">8.0</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">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Voice"</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">"flow-id"</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">"rx-first-seq"</span><span class="p">:</span><span class="w"> </span><span class="mi">37</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-last-seq"</span><span class="p">:</span><span class="w"> </span><span class="mi">5458</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-tos-tc"</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">"rx-outer-vlan-pbit"</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">"rx-inner-vlan-pbit"</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">"rx-len"</span><span class="p">:</span><span class="w"> </span><span class="mi">1026</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-len"</span><span class="p">:</span><span class="w"> </span><span class="mi">1014</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">5422</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">5458</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-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">"rx-delay-us-min"</span><span class="p">:</span><span class="w"> </span><span class="mi">41</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-delay-us-max"</span><span class="p">:</span><span class="w"> </span><span class="mi">96548</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-pps"</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">"tx-pps"</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">"tx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">811200</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">820800</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-bps-l3"</span><span class="p">:</span><span class="w"> </span><span class="mi">800000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.8112</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.8208</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l3"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.8</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>The <code class="docutils literal notranslate"><span class="pre">rx-outer-vlan-pbit</span></code> might be wrong depending on the network interface driver and
|
||
optional VLAN offloading.</p>
|
||
<p>The measured <code class="docutils literal notranslate"><span class="pre">rx-delay-us-min/max</span></code> shows the minimum and maximum calculated delay
|
||
in microseconds. The delay is calculated by subtracting the send and receive timestamp.
|
||
The send timestamp is stored in the BBL header (see section Traffic). This calculated
|
||
result depends also on the actual test environment, configured rx-interval and host IO
|
||
delay.</p>
|
||
<p>Traffic streams will start as soon as the session is established using the rate as configured
|
||
starting with sequence number 1 for each flow. The attribute <code class="docutils literal notranslate"><span class="pre">rx-first-seq</span></code> stores the first
|
||
sequence number received. Assuming the first sequence number received for a given flow is 1000
|
||
combined with a rate of 1000 PPS would mean that it took around 1 second until forwarding is
|
||
working. After the first packet is received for a given flow, for every further packet it checks
|
||
if there is a gap between the last and new sequence number which is then reported as a loss.</p>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">rx/tx-accounting-packets</span></code> are all packets that should be counted in the session volume
|
||
accounting of the BNG, meaning session RX/TX packets excluding control traffic.</p>
|
||
<p>Each flow can be queried separately using jsonpath expression with name and direction or flow-id.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo bngblaster-cli run.sock session-streams session-id 1 | jq '."session-streams".streams[] | select(.name == "BE" and .direction == "downstream" )'
|
||
</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">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"BE"</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">"flow-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">"rx-first-seq"</span><span class="p">:</span><span class="w"> </span><span class="mi">33</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-last-seq"</span><span class="p">:</span><span class="w"> </span><span class="mi">27040</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-tos-tc"</span><span class="p">:</span><span class="w"> </span><span class="mi">213</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-outer-vlan-pbit"</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">"rx-inner-vlan-pbit"</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">"rx-len"</span><span class="p">:</span><span class="w"> </span><span class="mi">126</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-len"</span><span class="p">:</span><span class="w"> </span><span class="mi">114</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">27008</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">27040</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-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">"rx-delay-us-min"</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-delay-us-max"</span><span class="p">:</span><span class="w"> </span><span class="mi">10561</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-pps"</span><span class="p">:</span><span class="w"> </span><span class="mi">99</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-pps"</span><span class="p">:</span><span class="w"> </span><span class="mi">99</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">90288</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-bps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mi">99792</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-bps-l3"</span><span class="p">:</span><span class="w"> </span><span class="mi">79200</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"tx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.090288</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l2"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.099792</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rx-mbps-l3"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.0792</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="raw-streams">
|
||
<h2>RAW Streams<a class="headerlink" href="#raw-streams" title="Permalink to this headline"></a></h2>
|
||
<p>Streams with default <code class="docutils literal notranslate"><span class="pre">stream-group-id</span></code> set to zero are considered raw streams not
|
||
bound to any session which is supported downstream only. For those streams, the
|
||
destination address must be explicitly set.</p>
|
||
<p>RAW streams can be used for traffic between two or network interfaces but also to send traffic
|
||
from network to access interfaces.</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">"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">"RAW"</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">"network-ipv4-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.20"</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">"1.1.1.1"</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="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>If <code class="docutils literal notranslate"><span class="pre">destination-ipv4-address</span></code> is set to a multicast IP address (224.0.0.0 - 239.255.255.255),
|
||
the BNG Blaster will set the destination MAC address to the corresponding
|
||
multicast MAC address automatically. For unicast traffic the network gateway MAC address is used.</p>
|
||
</section>
|
||
<section id="tcp-raw-streams">
|
||
<h2>TCP RAW Streams<a class="headerlink" href="#tcp-raw-streams" title="Permalink to this headline"></a></h2>
|
||
<p>A new option called <code class="docutils literal notranslate"><span class="pre">raw-tcp</span></code> is added to the stream configuraton.
|
||
If enabled, UDP-like traffic with a constant rate is sent using a
|
||
static (RAW) TCP header.</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">"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">"TCP1"</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">"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">"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">"raw-tcp"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network-ipv4-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.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>This option can be used stand-alone to verify firewall filters or together
|
||
with the new NAT option to verify NAT TCP streams.</p>
|
||
<p>For now, TCP flags (SYN, …) are statically set to SYN but this could be adopted if needed.</p>
|
||
</section>
|
||
<section id="start-stop-traffic">
|
||
<h2>Start/Stop Traffic<a class="headerlink" href="#start-stop-traffic" title="Permalink to this headline"></a></h2>
|
||
<p>The BNG Blaster provides multiple options to start and stop traffic streams.
|
||
The commands <code class="docutils literal notranslate"><span class="pre">traffic-start</span></code> and <code class="docutils literal notranslate"><span class="pre">traffic-stop</span></code> can be used to start or stop all traffic
|
||
globally and are equal to pressing F7/F8 in the interactive user interface. This command does
|
||
not alter the current state of a traffic stream. For instance, if a stream has not been started,
|
||
it can’t be started with this command. Instead, this command acts as a global signal to control the
|
||
transmission of traffic streams.</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">sudo</span> <span class="pre">bngblaster-cli</span> <span class="pre">run.sock</span> <span class="pre">traffic-start</span></code></p>
|
||
<p>The initial state of the global global signal can be controlled with the configuration option
|
||
<code class="docutils literal notranslate"><span class="pre">traffic->autostart</span></code> which is enabled per default.</p>
|
||
<p>All other commands distinguish between unicast, multicast, and session-traffic streams.</p>
|
||
<p>The commands <code class="docutils literal notranslate"><span class="pre">stream-start</span></code> and <code class="docutils literal notranslate"><span class="pre">stream-stop</span></code> can start or stop unicast traffic flows.
|
||
Those commands do not apply to <a class="reference internal" href="access/traffic.html#session-traffic"><span class="std std-ref">session-traffic</span></a> and multicast.
|
||
If you provide a specific <code class="docutils literal notranslate"><span class="pre">flow-id</span></code> as an argument, other arguments are ignored. In this
|
||
particular case, you can also start and stop <a class="reference internal" href="access/traffic.html#session-traffic"><span class="std std-ref">session-traffic</span></a> or multicast.</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">sudo</span> <span class="pre">bngblaster-cli</span> <span class="pre">run.sock</span> <span class="pre">stream-start</span> <span class="pre">session-group-id</span> <span class="pre">1</span> <span class="pre">direction</span> <span class="pre">upstream</span></code></p>
|
||
<p>The commands <code class="docutils literal notranslate"><span class="pre">session-traffic-start</span></code> and <code class="docutils literal notranslate"><span class="pre">session-traffic-stop</span></code> behave similarly but apply
|
||
to session-traffic only.</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">sudo</span> <span class="pre">bngblaster-cli</span> <span class="pre">run.sock</span> <span class="pre">session-traffic-start</span> <span class="pre">session-id</span> <span class="pre">1</span></code></p>
|
||
<p>For multicast, the commands <code class="docutils literal notranslate"><span class="pre">multicast-traffic-start</span></code> and <code class="docutils literal notranslate"><span class="pre">multicast-traffic-stop</span></code> can be used.
|
||
Those commands apply globally to all multicast traffic.</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">$</span> <span class="pre">sudo</span> <span class="pre">bngblaster-cli</span> <span class="pre">run.sock</span> <span class="pre">multicast-traffic-start</span></code></p>
|
||
</section>
|
||
<section id="bng-blaster-traffic">
|
||
<span id="bbl-header"></span><h2>BNG Blaster Traffic<a class="headerlink" href="#bng-blaster-traffic" title="Permalink to this headline"></a></h2>
|
||
<p><em>Blaster Header and Fast Decode Signature</em></p>
|
||
<p>The 48 Byte fixed size BNG Blaster Header is added to all data packets
|
||
for traffic validation and fast decoding. The header is expected on the
|
||
last 48 bytes of the packet.</p>
|
||
<p>The type is set to 1 for all unicast session traffic and 2 for
|
||
IPv4 multicast traffic.</p>
|
||
<section id="unicast-session-traffic">
|
||
<h3>Unicast Session Traffic<a class="headerlink" href="#unicast-session-traffic" title="Permalink to this headline"></a></h3>
|
||
<p>The 64-bit session key is used for all traffic from access (upstream)
|
||
and to access (downstream) interfaces to identify the corresponding
|
||
session which has sent or should receive the packet.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| BNG Blaster Magic Sequence |
|
||
| |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Type | Sub-Type | Direction | TX TOS |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Session Identifier |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Session Access Interface Index |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Session Outer VLAN | Session Inner VLAN |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Flow Identifier |
|
||
| |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Flow Sequence Number |
|
||
| |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Nanosecond Send Timestamp |
|
||
| |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
</pre></div>
|
||
</div>
|
||
<img alt="BNG Blaster Header" src="_images/bbl_header.png" />
|
||
</section>
|
||
<section id="multicast-traffic">
|
||
<h3>Multicast Traffic<a class="headerlink" href="#multicast-traffic" title="Permalink to this headline"></a></h3>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| BNG Blaster Magic Sequence |
|
||
| |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Type | Sub-Type | Direction | TX TOS |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Reserved |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Source |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Group |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Flow Identifier |
|
||
| |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Flow Sequence Number |
|
||
| |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Nanosecond Send Timestamp |
|
||
| |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
</pre></div>
|
||
</div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>All attributes except IP addresses in the Blaster Header are
|
||
stored in host byte order for faster processing
|
||
(LE or BE depending on the test system).</p>
|
||
</div>
|
||
</section>
|
||
<section id="bng-blaster-magic-sequence">
|
||
<h3>BNG Blaster Magic Sequence<a class="headerlink" href="#bng-blaster-magic-sequence" title="Permalink to this headline"></a></h3>
|
||
<p>The 64-bit magic sequence is the word <code class="docutils literal notranslate"><span class="pre">RtBrick!</span></code> decoded as ASCII:</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>0x5274427269636b21
|
||
</pre></div>
|
||
</div>
|
||
<p>Storing the magic number on a fixed offset allows fast identification
|
||
of blaster traffic.</p>
|
||
</section>
|
||
<section id="flow-identifier">
|
||
<h3>Flow Identifier<a class="headerlink" href="#flow-identifier" title="Permalink to this headline"></a></h3>
|
||
<p>The 64-bit flow identifier is a globally unique number that identifies
|
||
the flow.</p>
|
||
</section>
|
||
<section id="flow-sequence-number">
|
||
<h3>Flow Sequence Number<a class="headerlink" href="#flow-sequence-number" title="Permalink to this headline"></a></h3>
|
||
<p>The 64-bit flow sequence number is a sequential number starting with 1
|
||
and incremented per packet primary used to identify packet loss.</p>
|
||
<p>This number 0 means that sequencing is disabled.</p>
|
||
</section>
|
||
<section id="nanosecond-send-timestamps">
|
||
<h3>Nanosecond Send Timestamps<a class="headerlink" href="#nanosecond-send-timestamps" title="Permalink to this headline"></a></h3>
|
||
<p>The 64-bit nanoseconds send timestamp is used for optional latency and
|
||
jitter calculations.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Seconds |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
| Nano Seconds |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
</pre></div>
|
||
</div>
|
||
<p>The timestamp 0 means that timestamps are disabled.</p>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="routing/lspgen.html" class="btn btn-neutral float-left" title="LSPGEN" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="http.html" class="btn btn-neutral float-right" title="HTTP Emulation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2020-2023, RtBrick, Inc..</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |