mirror of
https://github.com/rtbrick/bngblaster.git
synced 2024-05-06 15:54:57 +00:00
456 lines
32 KiB
HTML
456 lines
32 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>LDP — BNG Blaster 0.8 documentation</title>
|
||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/tabs.css" type="text/css" />
|
||
|
||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||
<script src="../_static/jquery.js"></script>
|
||
<script src="../_static/underscore.js"></script>
|
||
<script src="../_static/doctools.js"></script>
|
||
<script src="../_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="../genindex.html" />
|
||
<link rel="search" title="Search" href="../search.html" />
|
||
<link rel="next" title="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" />
|
||
<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="../reports.html">Reports</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuration</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API/CLI</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../controller.html">Controller</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../performance.html">Performance Guide</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting.html">Troubleshooting</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../faq.html">Frequently Asked Questions</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../index.html">BNG Blaster</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../index.html" class="icon icon-home"></a> »</li>
|
||
<li><a href="index.html">Routing Protocols</a> »</li>
|
||
<li>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="Permalink to this headline"></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="Permalink to this headline"></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="w"> </span><span class="nt">"interfaces"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"network"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth1"</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.1.2/24"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gateway"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.1.1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ldp-instance-id"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="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">"ldp"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"instance-id"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"lsr-id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.10.10.11"</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">"ldp"</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="colwidths-given docutils align-default">
|
||
<colgroup>
|
||
<col style="width: 25%" />
|
||
<col style="width: 50%" />
|
||
<col style="width: 25%" />
|
||
</colgroup>
|
||
<thead>
|
||
<tr class="row-odd"><th class="head"><p>Attribute</p></th>
|
||
<th class="head"><p>Description</p></th>
|
||
<th class="head"><p>Default</p></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="row-even"><td><p><cite>instance-id</cite></p></td>
|
||
<td><p>LDP instance identifier</p></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><cite>keepalive-time</cite></p></td>
|
||
<td><p>LDP session keepalive time in seconds</p></td>
|
||
<td><p>15</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><cite>hold-time</cite></p></td>
|
||
<td><p>LDP hello hold time in seconds</p></td>
|
||
<td><p>15</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><cite>hostname</cite></p></td>
|
||
<td><p>LDP hostname</p></td>
|
||
<td><p>bngblaster</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><cite>lsr-id</cite></p></td>
|
||
<td><p>LDP LSR identifier</p></td>
|
||
<td><p>10.10.10.10</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><cite>teardown-time</cite></p></td>
|
||
<td><p>LDP teardown time in seconds</p></td>
|
||
<td><p>5</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><cite>ipv6-transport-address</cite></p></td>
|
||
<td><p>LDP transport IPv6 address</p></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><cite>ipv4-transport-address</cite></p></td>
|
||
<td><p>LDP transport IPv6 address</p></td>
|
||
<td><p><cite>lsr-id</cite></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><cite>no-ipv4-transport</cite></p></td>
|
||
<td><p>Disable/discard IPv4 LDP hello messages</p></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><cite>prefer-ipv4-transport</cite></p></td>
|
||
<td><p>Prefer IPv4 transport even if IPv6 is enabled</p></td>
|
||
<td><p><cite>false</cite></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><cite>raw-update-file</cite></p></td>
|
||
<td><p>LDP RAW update file</p></td>
|
||
<td></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>The <cite>keepalive-time</cite> defines the local LDP session keepalive
|
||
timeout. Each LDP peer must calculate the effective keepalive
|
||
timeout by using the smaller of its locally defined and received
|
||
timeout in the PDU. The value chosen indicates the maximum number
|
||
of seconds that may elapse between the receipt of successive PDUs
|
||
from the LDP peer on the session TCP connection. The keepalive
|
||
timeout is reset each time a PDU arrives. The BNG Blaster will
|
||
send keepalive messages at an interval calculated by using the
|
||
effective keepalive time divided by 3. Assuming an effective
|
||
keepalive time of 15 seconds results in a keepalive interval
|
||
of 5 seconds.</p>
|
||
<p>Setting a valid <cite>ipv6-transport-address</cite> enables LDP IPv6
|
||
hello and transport. According to RFC7552, IPv6 is preferred
|
||
over IPv4 which can be changed with <cite>prefer-ipv4-transport</cite>.</p>
|
||
</section>
|
||
<section id="limitations">
|
||
<h2>Limitations<a class="headerlink" href="#limitations" title="Permalink to this headline"></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="Permalink to this headline"></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="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">"ldp-adjacencies"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ldp-instance-id"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth0"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"up"</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>
|
||
</section>
|
||
<section id="ldp-sessions">
|
||
<h2>LDP Sessions<a class="headerlink" href="#ldp-sessions" title="Permalink to this headline"></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="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">"ldp-sessions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ldp-instance-id"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth0"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"local-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.2.3.1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"local-identifier"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.2.3.1:0"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"peer-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.2.3.2"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"peer-identifier"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.2.3.2:0"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"operational"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"raw-update-state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"done"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"raw-update-file"</span><span class="p">:</span><span class="w"> </span><span class="s2">"out.ldp"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"stats"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"pdu-rx"</span><span class="p">:</span><span class="w"> </span><span class="mi">23</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"pdu-tx"</span><span class="p">:</span><span class="w"> </span><span class="mi">32</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"messages-rx"</span><span class="p">:</span><span class="w"> </span><span class="mi">24</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"messages-tx"</span><span class="p">:</span><span class="w"> </span><span class="mi">34</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"keepalive-rx"</span><span class="p">:</span><span class="w"> </span><span class="mi">21</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"keepalive-tx"</span><span class="p">:</span><span class="w"> </span><span class="mi">21</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>
|
||
</section>
|
||
<section id="ldp-traffic-streams">
|
||
<h2>LDP Traffic Streams<a class="headerlink" href="#ldp-traffic-streams" title="Permalink to this headline"></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="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">"S1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ipv4"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"direction"</span><span class="p">:</span><span class="w"> </span><span class="s2">"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-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">"destination-ipv4-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.1"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ldp-ipv4-lookup-address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"13.37.0.1"</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><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="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">"ldp-database"</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">"direction"</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">"prefix"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.0.0.0/24"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"label"</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">"source-identifier"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.2.3.1: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">"direction"</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">"prefix"</span><span class="p">:</span><span class="w"> </span><span class="s2">"13.37.0.0/32"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"label"</span><span class="p">:</span><span class="w"> </span><span class="mi">10000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"source-identifier"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.2.3.1: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">"direction"</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">"prefix"</span><span class="p">:</span><span class="w"> </span><span class="s2">"13.37.0.1/32"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"label"</span><span class="p">:</span><span class="w"> </span><span class="mi">10001</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"source-identifier"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.2.3.1: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="p">}</span><span class="w"></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="Permalink to this headline"></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="Permalink to this headline"></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>© 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> |