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

493 lines
32 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>LDP &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="LSPGEN" href="lspgen.html" />
<link rel="prev" title="BGP" href="bgp.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
BNG Blaster
<img src="../_static/rtbrick_logo.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">Quickstart Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../interfaces.html">Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="../access/index.html">Access Protocols</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Routing Protocols</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="isis.html">ISIS</a></li>
<li class="toctree-l2"><a class="reference internal" href="ospf.html">OSPF</a></li>
<li class="toctree-l2"><a class="reference internal" href="mpls.html">MPLS</a></li>
<li class="toctree-l2"><a class="reference internal" href="bgp.html">BGP</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">LDP</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="#limitations">Limitations</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ldp-adjacencies">LDP Adjacencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ldp-sessions">LDP Sessions</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ldp-traffic-streams">LDP Traffic Streams</a></li>
<li class="toctree-l3"><a class="reference internal" href="#raw-update-files">RAW Update Files</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ldp-raw-update-generator">LDP RAW Update Generator</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="lspgen.html">LSPGEN</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../streams.html">Traffic Streams</a></li>
<li class="toctree-l1"><a class="reference internal" href="../http.html">HTTP Emulation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../nat.html">NAT / CGNAT</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reports.html">Reports</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API/CLI</a></li>
<li class="toctree-l1"><a class="reference internal" href="../controller.html">Controller</a></li>
<li class="toctree-l1"><a class="reference internal" href="../performance.html">Performance Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq.html">Frequently Asked Questions</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">BNG Blaster</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Routing Protocols</a></li>
<li class="breadcrumb-item active">LDP</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/routing/ldp.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="ldp">
<span id="id1"></span><h1>LDP<a class="headerlink" href="#ldp" title="Link to this heading"></a></h1>
<p>Label Distribution Protocol (LDP) is a protocol in which routers capable
of Multiprotocol Label Switching (MPLS) exchange label mapping information.
Two routers with an established session are called LDP peers and the exchange
of information is bi-directional. LDP is used to build and maintain LSP databases
that are used to forward traffic through MPLS networks.</p>
<p>LDP discovery runs on UDP port 646 and the session is built on TCP port 646. During
the discovery phase hello packets are sent on UDP port 646 to the all routers on this subnet
group multicast address (224.0.0.2).</p>
<p>LDP is defined by the IETF (RFC 5036).</p>
<section id="configuration">
<h2>Configuration<a class="headerlink" href="#configuration" title="Link to this heading"></a></h2>
<p>Following an example LDP configuration with one instance
attached to a network interface function.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interfaces&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;network&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.1.2/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;gateway&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.1.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;ldp-instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="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;ldp&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lsr-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.10.10.11&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;ldp&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>instance-id</strong></p></td>
<td><div class="line-block">
<div class="line">LDP instance identifier.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>keepalive-time</strong></p></td>
<td><div class="line-block">
<div class="line">LDP session keepalive time in seconds.</div>
<div class="line">The <strong>keepalive-time</strong> defines the local LDP session</div>
<div class="line">keepalive timeout. Each LDP peer must calculate the</div>
<div class="line">effective keepalive timeout by using the smaller of its</div>
<div class="line">locally defined and received timeout in the PDU. The</div>
<div class="line">value chosen indicates the maximum number of seconds</div>
<div class="line">that may elapse between the receipt of successive PDUs</div>
<div class="line">from the LDP peer on the session TCP connection. The</div>
<div class="line">keepalive timeout is reset each time a PDU arrives. The</div>
<div class="line">BNG Blaster will send keepalive messages at an interval</div>
<div class="line">calculated by using the effective keepalive time divided</div>
<div class="line">by 3. Assuming an effective keepalive time of of 15</div>
<div class="line">seconds results in a keepalive interval of 5 seconds.</div>
<div class="line">Default: 15 Range: 0 - 65535</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>hold-time</strong></p></td>
<td><div class="line-block">
<div class="line">LDP hello hold time in seconds.</div>
<div class="line">Default: 15 Range: 0 - 65535</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>teardown-time</strong></p></td>
<td><div class="line-block">
<div class="line">LDP teardown time in seconds.</div>
<div class="line">Default: 5 Range: 0 - 65535</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>hostname</strong></p></td>
<td><div class="line-block">
<div class="line">LDP hostname.</div>
<div class="line">Default: bngblaster</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>lsr-id</strong></p></td>
<td><div class="line-block">
<div class="line">LDP LSR identifier.</div>
<div class="line">Default: 10.10.10.10</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>ipv6-transport-address</strong></p></td>
<td><div class="line-block">
<div class="line">LDP transport IPv6 address.</div>
<div class="line">Setting a valid IPv6 address here enables LDP IPv6</div>
<div class="line">hello and transport.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>ipv4-transport-address</strong></p></td>
<td><div class="line-block">
<div class="line">LDP transport IPv4 address.</div>
<div class="line">Default: <cite>lsr-id</cite></div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>no-ipv4-transport</strong></p></td>
<td><div class="line-block">
<div class="line">Disable/discard IPv4 LDP hello messages.</div>
</div>
</td>
</tr>
<tr class="row-odd"><td><p><strong>prefer-ipv4-transport</strong></p></td>
<td><div class="line-block">
<div class="line">According to RFC7552, IPv6 is preferred over IPv4 which</div>
<div class="line">can be changed with this option to prefer IPv4 transport</div>
<div class="line">even if IPv6 is enabled.</div>
<div class="line">Default: false</div>
</div>
</td>
</tr>
<tr class="row-even"><td><p><strong>raw-update-file</strong></p></td>
<td><div class="line-block">
<div class="line">LDP RAW update file.</div>
</div>
</td>
</tr>
</tbody>
</table>
</section>
<section id="limitations">
<h2>Limitations<a class="headerlink" href="#limitations" title="Link to this heading"></a></h2>
<p>The following LDP functionalities are currently
not supported:</p>
<ul class="simple">
<li><p>Targeted LDP</p></li>
<li><p>LDP TCP authentication</p></li>
<li><p>Multiple links between LDP instance and DUT (ECMP)</p></li>
</ul>
</section>
<section id="ldp-adjacencies">
<h2>LDP Adjacencies<a class="headerlink" href="#ldp-adjacencies" title="Link to this heading"></a></h2>
<p>When the BNG Blaster receives an LDP discovery hello message,
an LDP adjacency is set up between the two peers.</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">ldp-adjacencies</span></code></p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ok&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;ldp-adjacencies&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;ldp-instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth0&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;up&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="ldp-sessions">
<h2>LDP Sessions<a class="headerlink" href="#ldp-sessions" title="Link to this heading"></a></h2>
<p>LDP peers exchange messages over a TCP session which is initiated by
the peer with the larger transport IP address (active peer).</p>
<p>The LDP transport IP address can be explicitly configured for the
LDP instance using the option <cite>ipv4-transport-address</cite>. The <cite>lsr-id</cite>
is used as a transport IP address if not explicitly configured.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>It is currently not supported to setup multiple links between
a single LDP instance and the device under test (ECMP).</p>
</div>
<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">ldp-sessions</span></code></p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ok&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;ldp-sessions&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;ldp-instance-id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;interface&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eth0&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;local-address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.2.3.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;local-identifier&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.2.3.1:0&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;peer-address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.2.3.2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;peer-identifier&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.2.3.2:0&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;operational&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;raw-update-state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;done&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;raw-update-file&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;out.ldp&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;stats&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;pdu-rx&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;pdu-tx&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">32</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;messages-rx&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">24</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;messages-tx&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">34</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;keepalive-rx&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">21</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;keepalive-tx&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">21</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
<section id="ldp-traffic-streams">
<h2>LDP Traffic Streams<a class="headerlink" href="#ldp-traffic-streams" title="Link to this heading"></a></h2>
<p>Traffic streams send from network interface functions (downstream)
can be configured to dynamically resolve the outer MPLS
label using the learned label mappings.</p>
<p>The traffic stream configuration options <cite>ldp-ipv4-lookup-address</cite>
and <cite>ldp-ipv6-lookup-address</cite> specifies the lookup IPv4 or IPv6 address.
This means that traffic will not start until this address is found in the
corresponding label database of the sending network interface function.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></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;S1&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;direction&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;downstream&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;priority&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;network-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;destination-ipv4-address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;ldp-ipv4-lookup-address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;13.37.0.1&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">1</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><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">ldp-database</span> <span class="pre">instance</span> <span class="pre">1</span></code></p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ok&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;ldp-database&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;direction&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;prefix&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.0.0.0/24&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;label&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;source-identifier&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.2.3.1:0&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;direction&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;prefix&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;13.37.0.0/32&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;label&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10000</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;source-identifier&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.2.3.1:0&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;direction&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;prefix&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;13.37.0.1/32&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;label&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">10001</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;source-identifier&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.2.3.1:0&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 <cite>ldp-ipv4-lookup-address</cite> and <cite>ldp-ipv6-lookup-address</cite> are mutually exclusive
and must exactly match the prefix address as shown in the LDP database. This means
that if the prefix is <cite>10.0.0.0/24</cite>, the lookup address should be <cite>10.0.0.0</cite>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>There is currently no longest prefix match supported,
meaning that the actual prefix length is ignored!</p>
</div>
</section>
<section id="raw-update-files">
<h2>RAW Update Files<a class="headerlink" href="#raw-update-files" title="Link to this heading"></a></h2>
<p>The BNG Blaster can inject LDP PDU from a pre-compiled
RAW update file into the defined sessions. A RAW update file is not
more than a pre-compiled binary stream of LDP PDU.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span> 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | PDU Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LDP Identifier |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. LDP Messages
.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | PDU Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LDP Identifier |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. LDP Messages
.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</pre></div>
</div>
<p>Those files can be created using the included LDP RAW update generator
script <code class="docutils literal notranslate"><span class="pre">ldpupdate</span></code> or manually using libraries like scapy.</p>
<p>The configured <code class="docutils literal notranslate"><span class="pre">raw-update-file</span></code> under the LDP instance is loaded
during BNG Blaster startup phase and send it as soon as the session is
established.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">ldp-raw-update</span></code> <a class="reference internal" href="../api/index.html#api"><span class="std std-ref">command</span></a> allows to send further updates during
the session lifetime.</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">ldp-raw-update</span> <span class="pre">file</span> <span class="pre">update1.ldp</span></code></p>
<p>This allows loading label mappings after the LDP session has
started and manually trigger a series of changes using incremental
updates files.</p>
<p>All LDP RAW update files are loaded once and can then be used for
multiple sessions. Meaning if two or more sessions reference the
same file identified by file name, this file is loaded once into
memory and used by multiple sessions.</p>
</section>
<section id="ldp-raw-update-generator">
<h2>LDP RAW Update Generator<a class="headerlink" href="#ldp-raw-update-generator" title="Link to this heading"></a></h2>
<p>The LDP RAW update generator is a simple tool to generate LDP RAW update
streams for use with the BNG Blaster.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ ldpupdate --help
usage: ldpupdate [-h] -l ADDRESS [-i N] [-w] [-a ADDRESS] [-A N] [-p PREFIX] [-P N] [-m LABEL] [-M N] [-f FILE] [--append] [--pcap FILE] [--log-level {warning,info,debug}]
The LDP RAW update generator is a simple tool to generate LDP RAW update streams for use with the BNG Blaster.
optional arguments:
-h, --help show this help message and exit
-l ADDRESS, --lsr-id ADDRESS
LSR identifier
-i N, --message-id-base N
message identifier base
-w, --withdraw withdraw
-a ADDRESS, --address-base ADDRESS
address message base
-A N, --address-num N
address message count
-p PREFIX, --prefix-base PREFIX
label mapping base prefix
-P N, --prefix-num N label mapping prefix count
-m LABEL, --label-base LABEL
label base
-M N, --label-num N label count
-f FILE, --file FILE output file
--append append to file if exist
--pcap FILE write LDP updates to PCAP file
--log-level {warning,info,debug}
logging Level
</pre></div>
</div>
<p>The python LDP RAW update generator is a python script that uses
scapy to build LDP PDU. Therefore this tool can be easily
modified, extend or used as a blueprint for your own tools to generate
valid LDP update streams.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="bgp.html" class="btn btn-neutral float-left" title="BGP" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="lspgen.html" class="btn btn-neutral float-right" title="LSPGEN" 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>