mirror of
https://github.com/rtbrick/bngblaster.git
synced 2024-05-06 15:54:57 +00:00
update docu
This commit is contained in:
committed by
Christian Giese
parent
00a42f6fc9
commit
2b554dbb8c
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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::
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 CPE’s 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, …).
|
||||
@@ -1,8 +0,0 @@
|
||||
Reference
|
||||
=========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
architecture.rst
|
||||
traffic.rst
|
||||
@@ -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
@@ -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.
|
||||
Reference in New Issue
Block a user