2021-02-04 21:56:56 +01:00
|
|
|
|
# Introduction
|
|
|
|
|
|
2021-05-26 20:08:37 +02:00
|
|
|
|
Building a BNG from scratch requires a lot of testing but commercial BNG test software
|
|
|
|
|
is often very expensive, resource intensive and provide a lot of administrative overhead
|
|
|
|
|
to maintain such.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
2021-11-02 15:15:38 +01:00
|
|
|
|
Therefore we decided to build an open source network test software initially focused on BNG
|
|
|
|
|
and IPTV testing but constantly enhanced and planned for more common (non-BNG) network testing.
|
2021-11-02 15:53:32 +01:00
|
|
|
|
The BNG Blaster was completely build from scratch, targeted for max scaling with small
|
2021-10-29 17:44:28 +02:00
|
|
|
|
resource footprint, simple to use and easy to integrate in any test automation infrastructure.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
2021-11-02 15:53:32 +01:00
|
|
|
|
The BNG Blaster is able to simulate more than hundred thousand PPPoE and IPoE (DHCP) subscribers including
|
2021-10-29 17:44:28 +02:00
|
|
|
|
IPTV, L2TPv2 (LNS emulation), L2BSA, QoS, forwarding verification and convergence testing capabilities.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
2021-10-29 17:44:28 +02:00
|
|
|
|
* *High Scaling:* > 100K sessions, > 1M PPS, and > 1M traffic flows
|
|
|
|
|
* *Low CPU and Memory Footprint:* ~300MB memory for 16K sessions
|
2021-02-04 21:56:56 +01:00
|
|
|
|
* *Portable:* runs on every modern linux, virtual machines and containers
|
|
|
|
|
* *User Space:* all protocols implemented in user-space from scratch and optimized for performance
|
|
|
|
|
* *IPTV:* IGMP version 1, 2 and 3 with automated channel zapping test
|
2021-04-13 16:57:29 +02:00
|
|
|
|
* *QoS:* define and analyze traffic streams
|
2021-02-04 21:56:56 +01:00
|
|
|
|
* *Automation:* the BNG Blaster Controller provides an automation friendly REST API and robot keywords
|
|
|
|
|
|
2021-11-02 15:53:32 +01:00
|
|
|
|
**Info:** _The BNG Blaster Controller is not yet published but you can send
|
|
|
|
|
a mail to bngblaster@rtbrick.com if you are interested to get early access!_
|
2021-10-29 17:44:28 +02:00
|
|
|
|
|
2021-11-02 15:22:12 +01:00
|
|
|
|
```cli
|
2021-02-04 21:56:56 +01:00
|
|
|
|
$ bngblaster --help
|
|
|
|
|
|
2021-10-20 18:34:17 +02:00
|
|
|
|
|
2021-02-04 21:56:56 +01:00
|
|
|
|
____ __ ____ _ __ ,/
|
|
|
|
|
/ __ \ / /_ / __ ) _____ (_)_____ / /__ ,'/
|
|
|
|
|
/ /_/ // __// __ |/ ___// // ___// //_/ ,' /
|
2021-11-02 15:15:38 +01:00
|
|
|
|
/ _, _// /_ / /_/ // / / // /__ / ,< ,' /_____,
|
|
|
|
|
/_/ |_| \__//_____//_/ /_/ \___//_/|_| .'____ ,'
|
2021-02-04 21:56:56 +01:00
|
|
|
|
____ _ _ ______ ____ _ _ / ,'
|
|
|
|
|
/ __ ) / | / // ____/ / __ ) / /____ _ _____ / /_ ___ ____ / ,'
|
|
|
|
|
/ __ |/ |/ // / __ / __ |/ // __ `// ___// __// _ \ / ___/ /,'
|
2021-11-02 15:15:38 +01:00
|
|
|
|
/ /_/ // /| // /_/ / / /_/ // // /_/ /(__ )/ /_ / __// / /
|
2021-02-04 21:56:56 +01:00
|
|
|
|
/_____//_/ |_/ \____/ /_____//_/ \__,_//____/ \__/ \___//_/
|
|
|
|
|
|
|
|
|
|
Usage: bngblaster [OPTIONS]
|
|
|
|
|
|
2021-03-24 17:00:52 +01:00
|
|
|
|
-v --version
|
2021-02-04 21:56:56 +01:00
|
|
|
|
-h --help
|
|
|
|
|
-C --config <args>
|
2021-10-20 18:34:17 +02:00
|
|
|
|
-T --stream-config <args>
|
2021-10-01 14:11:02 +02:00
|
|
|
|
-l --logging debug|error|igmp|io|pppoe|info|pcap|timer|timer-detail|ip|loss|l2tp|dhcp
|
2021-02-04 21:56:56 +01:00
|
|
|
|
-L --log-file <args>
|
|
|
|
|
-u --username <args>
|
|
|
|
|
-p --password <args>
|
|
|
|
|
-P --pcap-capture <args>
|
2021-10-20 18:34:17 +02:00
|
|
|
|
-j --json-report-content sessions|streams
|
|
|
|
|
-J --json-report-file <args>
|
2021-03-24 17:00:52 +01:00
|
|
|
|
-c --session-count <args>
|
2021-02-04 21:56:56 +01:00
|
|
|
|
-g --mc-group <args>
|
|
|
|
|
-s --mc-source <args>
|
|
|
|
|
-r --mc-group-count <args>
|
|
|
|
|
-z --mc-zapping-interval <args>
|
2021-03-24 17:00:52 +01:00
|
|
|
|
-S --control-socket <args>
|
|
|
|
|
-I --interactive
|
2021-10-01 14:11:02 +02:00
|
|
|
|
-b --hide-banner
|
2021-03-24 17:00:52 +01:00
|
|
|
|
-f --force
|
2021-10-20 18:34:17 +02:00
|
|
|
|
|
2021-02-04 21:56:56 +01:00
|
|
|
|
```
|
|
|
|
|
|
2021-05-26 20:08:37 +02:00
|
|
|
|
The BNG Blaster includes an optional interactive mode (`-I`) with realtime stats and
|
2021-02-04 21:56:56 +01:00
|
|
|
|
log viewer as shown below.
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
## Theory Of Operation
|
|
|
|
|
|
2021-05-26 20:08:37 +02:00
|
|
|
|
The BNG Blaster has been completely built from scratch, including user-space implementations of the entire protocol
|
|
|
|
|
stack you need for interfacing with a BNG. It’s core is based on a very simple event loop which serves timers and signals.
|
2021-11-02 15:15:38 +01:00
|
|
|
|
The timers have been built using a lightweight constant time (`O(1)`) library which we built purposely to start, restart
|
2021-11-02 15:53:32 +01:00
|
|
|
|
and delete the protocol session FSM timers quickly and at scale.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
2021-11-02 15:15:38 +01:00
|
|
|
|
The BNG Blaster expects a Linux kernel network interface which is up, but not configured with any IP addresses or VLAN as it
|
|
|
|
|
expects to receive and transmit RAW ethernet packets.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
2021-11-02 15:15:38 +01:00
|
|
|
|
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).
|
2021-11-02 15:53:32 +01:00
|
|
|
|
|
2021-11-02 15:15:38 +01:00
|
|
|
|
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" that is shared
|
|
|
|
|
between kernel and user-space. This low overhead abstraction allows to transmit and receive traffic without doing expensive system calls.
|
2021-11-02 15:53:32 +01:00
|
|
|
|
Sending and transmitting traffic via Packet MMAP is as easy as just by copying a packet into a buffer and setting a flag.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
2021-05-26 20:08:37 +02:00
|
|
|
|
The BNG Blaster supports multiple configurable I/O modes listed with `bngblaster -v` but except `packet_mmap_raw` all other modes
|
2021-11-02 15:53:32 +01:00
|
|
|
|
are currently considered as experimental. In the default mode (`packet_mmap_raw`) all packets are received in a Packet MMAP ring
|
|
|
|
|
buffer and send directly trough RAW packet sockets. This combination was the most efficient in our benchmark tests.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
2021-05-26 20:08:37 +02:00
|
|
|
|
BNG Blasters primary design goal is to simulate thousands of subscriber CPE's with a small hardware resource footprint. Simple
|
|
|
|
|
to use and easy to integrate in our robot test automation infrastructure. This allows to simulate more than hundred thousand
|
2021-11-02 15:15:38 +01:00
|
|
|
|
PPPoE or IPoE (DHCP) subscribers including IPTV, traffic verification and convergence testing from a single medium scale
|
2021-11-02 15:53:32 +01:00
|
|
|
|
virtual machine or to run the blaster directly from a laptop.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
2021-10-29 17:44:28 +02:00
|
|
|
|
The BNG Blaster provides three types of interfaces. The first interface is called the access interface which emulates the PPPoE
|
2021-05-26 20:08:37 +02:00
|
|
|
|
sessions. The second interface-type is called network interface. This is used for emulating the core-facing side of the
|
2021-11-02 15:15:38 +01:00
|
|
|
|
internet. The last type is called a10nsp interface which emulates an layer two provider interface. The term A10
|
|
|
|
|
refers to the end-to-end ADSL network reference model from TR-025.
|
2021-02-04 21:56:56 +01:00
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
2021-05-26 20:08:37 +02:00
|
|
|
|
This allows to verify IP reachability by sending bidirectional traffic between all PPPoE sessions on access-interface and the
|
2021-11-02 15:15:38 +01:00
|
|
|
|
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 multiple network interfaces without any access interface defined for non-BNG
|
|
|
|
|
testing.
|
2021-11-02 15:53:32 +01:00
|
|
|
|
|
2021-11-02 15:15:38 +01:00
|
|
|
|
One popular example for non-BNG tests with the BNG Blaster is the verification of a BGP full-table by injecting around 1M
|
2021-11-02 15:53:32 +01:00
|
|
|
|
prefixes and setting up traffic streams for all prefixes with at least one PPS (1M PPS). The BNG Blaster is able to verify
|
2021-11-02 15:15:38 +01:00
|
|
|
|
and analyze every single flow with detailed per flow statistics (receive rate, loss, latency, ...).
|