update docu

This commit is contained in:
Christian Giese
2022-11-02 17:52:51 +01:00
committed by Christian Giese
parent 00a42f6fc9
commit 2b554dbb8c
8 changed files with 214 additions and 203 deletions
+2 -1
View File
@@ -5,7 +5,8 @@ Session Traffic
The BNG Blaster can autogenerate bidirectional unicast
session traffic for all addresses assigned to a session
(IPv4, IPv6 and IPv6PD).
(IPv4, IPv6 and IPv6PD) and the corresponding network
interface function.
.. image:: ../images/bbl_session_traffic.png
:alt: Session Traffic
+33 -5
View File
@@ -11,9 +11,12 @@ You can use the included traffic generator for forwarding verification,
QoS testing or to measure convergence times. The traffic generator supports
millions of separate tracked flows. This allows you to verify every single
forwarding state of a full-feed internet routing table. You can also send
traffic to every single QoS queue of your service edge router.
traffic to every single QoS queue of your service edge router with detailed
per-flow statistics like receive rate, loss or latency.
The BNG Blaster is used by leading network operators, network hard- and software vendors.
The BNG Blaster is used by leading network operators like Deutsche Telekom AG
with their famous Access 4.0 project, network hard- and software vendors like
RtBrick and many more.
.. tabs::
@@ -23,6 +26,7 @@ The BNG Blaster is used by leading network operators, network hard- and software
* Runs on every modern Linux, virtual machine and containers
* All protocols implemented in user space and optimized for performance
* Automation-friendly API
* Optional DPDK support (experimental)
* ...
.. tab:: Access Protocols
@@ -32,6 +36,7 @@ The BNG Blaster is used by leading network operators, network hard- and software
* Emulate A10NSP interfaces for L2BSA testing
* Included multicast and IPTV test suite
* Verify legal interception (LI) traffic
* Support all access protocols with link aggregation (LAG)
* ...
.. tab:: Routing Protocols
@@ -40,6 +45,7 @@ The BNG Blaster is used by leading network operators, network hard- and software
* Support for ISIS Segment Routing
* Setup thousands of BGP sessions with millions of prefixes
* Verify MPLS labels for millions of flows
* Support all routing protocols with link aggregation (LAG)
* ...
.. tab:: Traffic Generator
@@ -48,14 +54,37 @@ The BNG Blaster is used by leading network operators, network hard- and software
* Verify your QoS configuration
* Verify all forwarding states
* Measure convergence times and loss
* Capture traffic
* ...
A short `introduction <https://youtu.be/EHJ70p0_Sw0>`_ and good presentation
from `DENOG13 <https://youtu.be/LVg6rlVEfNU>`_ can be found on YouTube.
A short `introduction <https://youtu.be/EHJ70p0_Sw0>`_ and a good presentation
from `DENOG13 <https://youtu.be/LVg6rlVEfNU>`_ can be found on YouTube. There is
also an article in the
`APNIC blog <https://blog.apnic.net/2022/05/26/bng-blaster-the-open-network-tester-for-the-ip-networking-community/>`_
where we explained our motivation for this project.
.. image:: images/bbl_interactive.png
:alt: BNG Blaster Interactive
The BNG Blaster has been completely built from scratch in **C**. This includes user-space implementations
of the entire protocol stack. The core is based on a very simple event loop that serves timers and
signals. The timers have been built using a lightweight constant time (*O(1)*) library. The
`timer library <https://github.com/rtbrick/bngblaster/blob/main/code/common/src/timer.h>`_
was built to start, restart and delete the protocol session FSM timers quickly and at scale.
.. image:: images/bbl_arch.png
:alt: BNG Blaster Architecture
This project will be actively maintained and further evolved by RtBrick. We are fully committed to building
a project for the community and take issue and enhancement requests seriously. We are looking forward to any
kind of contributions, new features, bug fixes, or tools. Even contributions to the documentation are more
than welcome.
If you are interested in the BNG Blaster, or simply looking to find out more about it, we recommend going through
the examples in the quick start guide.
Our mission is to build better networks with open test suites.
Contents
--------
@@ -73,7 +102,6 @@ Contents
api/index
controller
troubleshooting
reference/index
faq
Sources
+3 -3
View File
@@ -16,10 +16,10 @@ Install dependencies:
# Ubuntu 18.04 and 20.04
sudo apt install -y libssl1.1 libncurses5 libjansson4
# Ubuntu 22.04
sudo apt install -y libssl1.1 libncurses5 libjansson4
sudo apt install -y libssl3 libncurses6 libjansson4
Download and install Debian package: https://github.com/rtbrick/bngblaster/releases
Download and install the Debian package: https://github.com/rtbrick/bngblaster/releases
.. code-block:: none
@@ -146,7 +146,7 @@ Build with DPDK Support
^^^^^^^^^^^^^^^^^^^^^^^
The following steps are required to build the BNG Blaster with experimental
`DPDK <https://www.dpdk.org/>`_ support.
:ref:`DPDK <dpdk-interface>` support.
.. note::
+49 -7
View File
@@ -166,6 +166,8 @@ of interface functions.
}
}
.. _io-modes:
Multithreaded Interfaces
~~~~~~~~~~~~~~~~~~~~~~~~
@@ -223,20 +225,24 @@ interfaces.
The BNG Blaster is currently tested for up to 1 million PPS with 1 million flows, which is not a
hard limitation but everything above should be considered experimental. It is also possible to
scale beyond using DPDK enabled interfaces.
scale beyond using DPDK-enabled interfaces.
Interface Functions
-------------------
The BNG Blaster supports three types of interface functions,
``network``, ``access``, and ``a10nsp``.
``network``, ``access``, and ``a10nsp``.
.. image:: images/bbl_interfaces.png
:alt: BNG Blaster Interfaces
.. _network-interface:
Network Interfaces
~~~~~~~~~~~~~~~~~~
The network interfaces are used for traffic and routing protocols.
The network interfaces are used to emulate the core-facing side of the internet
with optional routing protocols and traffic.
Those interfaces can communicate with the configured gateway only.
Meaning that all traffic sent from the network interface will be sent
@@ -247,6 +253,10 @@ to its own MAC address. This allows sending and receiving traffic for prefixes
advertised via routing protocols or configured via static routes on the
connected device under test.
The network interfaces are also used to inject downstream multicast test traffic
for IPTV tests. It is also possible to send RAW traffic streams between network
interfaces without any access interface defined for non-BNG testing.
The BNG Blaster responds to all ICMP echo requests sent to its own MAC address.
.. include:: configuration/interfaces_network.rst
@@ -527,18 +537,50 @@ as shown in the example below.
with network or access interface functions!
I/O Modes
---------
The BNG Blaster supports many configurable I/O modes listed with ``bngblaster -v``.
In the default mode ``packet_mmap_raw``, all packets are received in a Packet MMAP
ring buffer and sent through RAW packet sockets.
.. code-block:: none
$ bngblaster -v
Version: 0.8.1
Compiler: GNU (7.5.0)
IO Modes: packet_mmap_raw (default), packet_mmap, raw
Packet MMAP
~~~~~~~~~~~
`Packet MMAP <https://www.kernel.org/doc/html/latest/networking/packet_mmap.html>`_
is a so-called PACKET_RX_RING/PACKET_TX_RING abstraction where a user-space
program gets a fast lane into reading and writing to kernel interfaces using a shared
ring buffer. The shared ring buffer is a memory-mapped window shared between the kernel
and the user space. This low overhead abstraction allows us to transmit and receive
traffic without doing expensive system calls. Sending and transmitting traffic via
Packet MMAP is as easy as copying a packet into a buffer and setting a flag.
RAW
~~~
`RAW Packet Sockets <https://man7.org/linux/man-pages/man7/packet.7.html>`_.
are used to receive or send raw packets at the device driver (OSI Layer 2) level.
.. _dpdk-interface:
DPDK
----
~~~~
Using the experimental `DPDK <https://www.dpdk.org/>`_ support requires to build
the BNG Blaster from sources with `DPDK <https://www.dpdk.org/>`_ enabled as explained
Using the experimental `DPDK <https://www.dpdk.org/>`_ support requires building
the BNG Blaster from sources with DPDK enabled as explained
in the corresponding :ref:`installation <install-dpdk>` section.
.. note::
The officially BNG Blaster Debian release packages do not support
The official BNG Blaster Debian release packages do not support
`DPDK <https://www.dpdk.org/>`_!
.. code-block:: json
-52
View File
@@ -1,52 +0,0 @@
Architecture
------------
The BNG Blaster has been completely built from scratch in **C**. This includes user-space implementations
of the entire protocol stack. Its core is based on a very simple event loop that serves timers and
signals. The timers have been built using a lightweight constant time (*O(1)*) library. The timer library
was built to start, restart and delete the protocol session FSM timers quickly and at scale.
The BNG Blaster expects a Linux kernel network interface that is up but not configured with any IP addresses
or VLAN as it expects to receive and transmit RAW ethernet packets.
The BNG Blaster does I/O using high-speed polling timers with a mix of Linux
`RAW Packet Sockets <https://man7.org/linux/man-pages/man7/packet.7.html>`_ and
`Packet MMAP <https://www.kernel.org/doc/html/latest/networking/packet_mmap.html>`_.
The second one is a so-called PACKET_RX_RING/PACKET_TX_RING abstraction where a user-space program gets a fast
lane into reading and writing to kernel interfaces using a shared ring buffer. The shared ring buffer is a
memory-mapped window shared between the kernel and the user space. This low overhead abstraction allows us to
transmit and receive traffic without doing expensive system calls. Sending and transmitting traffic via Packet MMAP is
as easy as copying a packet into a buffer and setting a flag.
.. image:: ../images/bbl_arch.png
:alt: BNG Blaster Architecture
The BNG Blaster supports many configurable I/O modes listed with ``bngblaster -v`` but except for the default
mode ``packet_mmap_raw`` all other modes are currently considered experimental. In the default mode, all
packets are received in a Packet MMAP ring buffer and sent through RAW packet sockets. This combination
was the most efficient in our benchmark tests.
BNG Blaster's primary design goal is to simulate thousands of subscriber CPEs with a small hardware resource
footprint. Simple to use and easy to integrate into our robot test automation infrastructure. This allows for
the simulation of massive PPPoE or IPoE (DHCP) subscribers including IPTV, traffic verification, and convergence
testing from a single medium-scale virtual machine or directly from a laptop.
The BNG Blaster provides three types of interface functions. The first interface function is called the access which
emulates the PPPoE or IPoE sessions. The second interface function is called network. This is used for
emulating the core-facing side of the internet with optional routing protocols. The last type is called a10nsp
interface which emulates a layer two provider interface. The term A10 refers to the end-to-end ADSL network
reference model from TR-025.
.. image:: ../images/bbl_interfaces.png
:alt: BNG Blaster Interfaces
This allows for verification of IP reachability by sending bidirectional traffic between all sessions
on the access interface and the network interface. The network interface is also used to inject downstream
multicast test traffic for IPTV tests. It is also possible to send RAW traffic streams between network
interfaces without any access interface defined for non-BNG testing.
One popular example of non-BNG tests with the BNG Blaster is the verification of a BGP full table by injecting
around 1M prefixes and setting up traffic streams for all prefixes with at least 1 PPS (1M PPS).
The BNG Blaster can verify and analyze every single flow with detailed per-flow statistics
(receive rate, loss, latency, …).
-8
View File
@@ -1,8 +0,0 @@
Reference
=========
.. toctree::
:maxdepth: 1
architecture.rst
traffic.rst
-125
View File
@@ -1,125 +0,0 @@
BNG Blaster Traffic
-------------------
.. _bbl_header:
Blaster Header and Fast Decode Signature
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
The type is set to 1 for all unicast session traffic and 2 for
IPv4 multicast traffic.
Unicast Session Traffic
^^^^^^^^^^^^^^^^^^^^^^^
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.
.. code-block:: none
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 |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.. image:: ../images/bbl_header.png
:alt: BNG Blaster Header
Multicast Traffic
^^^^^^^^^^^^^^^^^
.. code-block:: none
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 |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.. note::
All attributes except IP addresses in the Blaster Header are
stored in host byte order for faster processing
(LE or BE depending on test system).
BNG Blaster Magic Sequence
^^^^^^^^^^^^^^^^^^^^^^^^^^
The 64 bit magic sequence is the word ``RtBrick!`` decoded as ASCII:
.. code-block:: none
0x5274427269636b21
Storing the magic number on a fixed offset allows fast identification
of blaster traffic.
Flow Identifier
^^^^^^^^^^^^^^^
The 64 bit flow identifier is a globally unique number that identifies
the flow.
Flow Sequence Number
^^^^^^^^^^^^^^^^^^^^
The 64 bit flow sequence number is a sequential number starting with 1
and incremented per packet primary used to identify packet loss.
This number 0 means that sequencing is disabled.
Nanosecond Send Timestamps
^^^^^^^^^^^^^^^^^^^^^^^^^^
The 64 bit nanoseconds send timestamp is used for optional latency and
jitter calculations.
.. code-block:: none
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The timestamp 0 means that timestamps are disabled.
+127 -2
View File
@@ -9,11 +9,11 @@ and QoS tests using BNG Blaster.
.. image:: images/bbl_streams.png
:alt: Interactive Streams
Traffic streams are divided into bounded and raw streams.
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.
A raw stream is supported on :ref:`network interfaces <interfaces>` only.
RAW streams are supported from :ref:`network interfaces <network-interface>` only.
Configuration
~~~~~~~~~~~~~
@@ -301,3 +301,128 @@ session identifier.
Alternatively, all the session and stream traffic (including RAW streams)
can be started or stopped globally using the ``traffic-start`` and
``traffic-stop`` commands.
BNG Blaster Traffic
~~~~~~~~~~~~~~~~~~~
.. _bbl_header:
*Blaster Header and Fast Decode Signature*
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.
The type is set to 1 for all unicast session traffic and 2 for
IPv4 multicast traffic.
Unicast Session Traffic
^^^^^^^^^^^^^^^^^^^^^^^
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.
.. code-block:: none
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 |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.. image:: images/bbl_header.png
:alt: BNG Blaster Header
Multicast Traffic
^^^^^^^^^^^^^^^^^
.. code-block:: none
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 |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.. note::
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).
BNG Blaster Magic Sequence
^^^^^^^^^^^^^^^^^^^^^^^^^^
The 64 bit magic sequence is the word ``RtBrick!`` decoded as ASCII:
.. code-block:: none
0x5274427269636b21
Storing the magic number on a fixed offset allows fast identification
of blaster traffic.
Flow Identifier
^^^^^^^^^^^^^^^
The 64 bit flow identifier is a globally unique number that identifies
the flow.
Flow Sequence Number
^^^^^^^^^^^^^^^^^^^^
The 64 bit flow sequence number is a sequential number starting with 1
and incremented per packet primary used to identify packet loss.
This number 0 means that sequencing is disabled.
Nanosecond Send Timestamps
^^^^^^^^^^^^^^^^^^^^^^^^^^
The 64 bit nanoseconds send timestamp is used for optional latency and
jitter calculations.
.. code-block:: none
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The timestamp 0 means that timestamps are disabled.