From 2b554dbb8cb21374be34f701a47468e4fba3aa42 Mon Sep 17 00:00:00 2001 From: Christian Giese Date: Wed, 2 Nov 2022 10:24:37 +0000 Subject: [PATCH] update docu --- docsrc/sources/access/traffic.rst | 3 +- docsrc/sources/index.rst | 38 ++++++- docsrc/sources/install.rst | 6 +- docsrc/sources/interfaces.rst | 56 ++++++++-- docsrc/sources/reference/architecture.rst | 52 --------- docsrc/sources/reference/index.rst | 8 -- docsrc/sources/reference/traffic.rst | 125 --------------------- docsrc/sources/streams.rst | 129 +++++++++++++++++++++- 8 files changed, 214 insertions(+), 203 deletions(-) delete mode 100644 docsrc/sources/reference/architecture.rst delete mode 100644 docsrc/sources/reference/index.rst delete mode 100644 docsrc/sources/reference/traffic.rst diff --git a/docsrc/sources/access/traffic.rst b/docsrc/sources/access/traffic.rst index 3aebee28..b28e016b 100644 --- a/docsrc/sources/access/traffic.rst +++ b/docsrc/sources/access/traffic.rst @@ -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 diff --git a/docsrc/sources/index.rst b/docsrc/sources/index.rst index 7e6f8532..bcf0bfed 100644 --- a/docsrc/sources/index.rst +++ b/docsrc/sources/index.rst @@ -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 `_ and good presentation -from `DENOG13 `_ can be found on YouTube. +A short `introduction `_ and a good presentation +from `DENOG13 `_ can be found on YouTube. There is +also an article in the +`APNIC blog `_ +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 `_ +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 diff --git a/docsrc/sources/install.rst b/docsrc/sources/install.rst index 1c9e2b11..ceb7e29d 100644 --- a/docsrc/sources/install.rst +++ b/docsrc/sources/install.rst @@ -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 `_ support. +:ref:`DPDK ` support. .. note:: diff --git a/docsrc/sources/interfaces.rst b/docsrc/sources/interfaces.rst index 486661cf..b53eeaf1 100644 --- a/docsrc/sources/interfaces.rst +++ b/docsrc/sources/interfaces.rst @@ -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 `_ +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 `_. +are used to receive or send raw packets at the device driver (OSI Layer 2) level. + + .. _dpdk-interface: DPDK ----- +~~~~ -Using the experimental `DPDK `_ support requires to build -the BNG Blaster from sources with `DPDK `_ enabled as explained +Using the experimental `DPDK `_ support requires building +the BNG Blaster from sources with DPDK enabled as explained in the corresponding :ref:`installation ` section. .. note:: - The officially BNG Blaster Debian release packages do not support + The official BNG Blaster Debian release packages do not support `DPDK `_! .. code-block:: json diff --git a/docsrc/sources/reference/architecture.rst b/docsrc/sources/reference/architecture.rst deleted file mode 100644 index 7f1cf022..00000000 --- a/docsrc/sources/reference/architecture.rst +++ /dev/null @@ -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 `_ and -`Packet MMAP `_. - -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, …). \ No newline at end of file diff --git a/docsrc/sources/reference/index.rst b/docsrc/sources/reference/index.rst deleted file mode 100644 index ae08285e..00000000 --- a/docsrc/sources/reference/index.rst +++ /dev/null @@ -1,8 +0,0 @@ -Reference -========= - -.. toctree:: - :maxdepth: 1 - - architecture.rst - traffic.rst diff --git a/docsrc/sources/reference/traffic.rst b/docsrc/sources/reference/traffic.rst deleted file mode 100644 index d23d3d11..00000000 --- a/docsrc/sources/reference/traffic.rst +++ /dev/null @@ -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. \ No newline at end of file diff --git a/docsrc/sources/streams.rst b/docsrc/sources/streams.rst index 3f822fb0..a8a907bd 100644 --- a/docsrc/sources/streams.rst +++ b/docsrc/sources/streams.rst @@ -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 ` only. +RAW streams are supported from :ref:`network interfaces ` 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. \ No newline at end of file